以3.12.4版本为例在root用户下进行
1.安装编译所需的依赖项1pacman -S gcc make pkg-config
2.下载并解压 Python 源代码123wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tar.xztar -xvf Python-3.12.4.tar.xzcd Python-3.12.4/
3.配置编译选项运行 configure 脚本配置编译选项,这里我们启用优化并设置安装路径:
1./configure --enable-optimizations --prefix=/usr/local/python3
4.编译并安装 Python运行以下命令进行编译并安装 Python
1make -j$(nproc) && make install
5.更新环境变量为了在终端中能够直接使用新安装的 Python,需要将其路径添加到环境变量中。运行以下命令:
12echo "PATH=\$PATH:/usr/local/python3/bin" & ...
字符串连接123456#!/bin/bashstr1="Hello"str2="World"combined="$str1 $str2"echo $combined # 输出 "Hello World"
字符串比较可以使用=和!=来比较字符串:
12345678910#!/bin/bashstr1="Hello"str2="World"if [ "$str1" = "$str2" ]; then echo "Strings are equal"else echo "Strings are not equal"fi
获取字符串长度12345#!/bin/bashstr="Hello World"length=${#str}echo $length # 输出 11
子字符串提取可以使用${string ...
适用于: 内存300-512MB的机器、商家不提供VNC控制台、商家VNC坏了
我随便拿了一台机器进行演示,还是预装了Debian系统
预装其他系统也可以,我还是推荐Debian
准备工作1. 确定启动方式:传统BIOS还是UEFI?1ls /sys/firmware/efi
如果提示No such file or directory就是传统BIOS启动,否则就是UEFI
我这台机器是UEFI启动
2. 确定当前系统的根分区使用df -hT命令查看
可以看到根分区是/dev/vda1,即第一个硬盘的第一个分区
3.确定是DHCP还是静态IP执行ip addr查看网卡
如果活动网卡有dynamic字眼说明是DHCP,否则是静态IP
如果是静态IP,把ip地址,子网掩码以及网关记下来
我这台机器是DHCP
准备安装环境1234cd /tmpwget http://mirrors.edge.kernel.org/archlinux/iso/latest/archlinux-bootstrap-x86_64.tar.zstzstd -d archlinux-bootstrap-x86_ ...
适用于: 内存512MB以上的机器
我将使用一台512MB内存的机器进行演示,也是预装了Debian系统
预装其他系统也可以,我更推荐Debian
前言从上一篇文章可以知道,整个过程中主要用到的就是airootfs文件,它一般是.sfs格式的.
我们先看看官方ISO镜像中airootfs.sfs文件的大小:
793MB的airootfs.sfs复制到2GB的内存中,完全没问题,可是对于内存低于1GB的机器,强行把793MB的airootfs.sfs文件复制到内存中进程会被kill掉。所以我就想,airootfs.sfs文件的大小再小些不就可以复制进内存了吗?于是我用archiso工具自制了ISO镜像,将整个镜像大小控制到400MB左右(镜像不断更新中),其中airootfs.sfs才318MB,现在就可以复制进512MB的内存中了.
所以第二种方法的核心步骤就是自制ISO镜像了,你可以根据官方的文档来构建,但我更推荐直接用我自制的(能帮你省不少时间):
archlinux-sitao-x86_64.iso
准备工作1. 确定启动方式:传统BIOS还是UEFI?1ls /sys/fi ...
适用于: 内存1.5GB以上的机器
我在Vultr 开了一台2GB的机器进行演示,预装了Debian系统
预装其他系统也可以,我更推荐Debian
准备工作1. 确定启动方式:传统BIOS还是UEFI?1ls /sys/firmware/efi
如果提示No such file or directory就是传统BIOS启动,否则就是UEFI
我这台机器是UEFI启动
2. 确定当前系统的根分区使用df -hT命令查看
可以看到根分区是/dev/vda2,即第一个硬盘的第二个分区,在grub中表示为(hd0,2)
3.确定是DHCP还是静态IP执行ip addr查看网卡
如果活动网卡有dynamic字眼说明是DHCP,否则是静态IP
如果是静态IP,把ip地址,子网掩码以及网关记下来
我这台机器是DHCP
下载ISO镜像前往Linux镜像网站: mirrors.edge.kernel.org下载archlinux的ISO镜像文件这里以archlinux-2024.06.01-x86_64.iso为例
使用ssh工具连接你的VPS
12mkdir /iso && cd ...
计算机网络
未读TCP协议在负责端到端数据传输的过程中,其核心机制涉及到发送端和接收端的操作系统内存管理,具体包括用户空间(user space)与内核空间(kernel space)两部分。对于每一个TCP socket连接,在内核中都会配备一个发送缓冲区和一个接收缓冲区,TCP的全双工通信模式及流量控制、拥塞控制等特性正是基于这两个独立的缓冲区及其填充状态来实现的。
在TCP socket连接的两端,分别存在send和recv两个操作函数。例如,当客户端向服务器发送数据时,客户端进程会调用send函数,该函数的作用是将待发送的数据复制到socket在其内核中的发送缓冲区。值得注意的是,当send函数执行完毕并返回时,并不代表数据已经到达服务端;实际上,send函数仅完成了从应用层缓冲区到socket内核发送缓冲区的数据复制,数据的实际发送过程由TCP协议栈负责,而非send函数直接处理。
而在接收端,接收缓冲区用于暂存接收到的数据,直到应用程序调用recv函数进行读取为止。recv函数的主要职责是从内核缓冲区中复制数据到应用层用户指定的缓冲区,并返回已接收的数据量。若应用程序未及时调用recv读取 ...
首先安装专业版直达官网: https://www.jetbrains.com.cn/pycharm/download/?section=mac
下载激活工具点击下载这个压缩包: 激活.zip
进入下载目录,解压压缩包
用终端进入激活工具目录执行sh pycharm.sh
可以看见提示Success! Activate pycharm to 2099
验证打开PyCharm,查看About PyCharm
可以看到激活成功了
Python
未读以3.12.2版本为例在root用户下进行
1.安装编译所需的依赖项1apt update && apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev pkg-config liblzma-dev sqlite3 tk-dev uuid-dev libgdbm-compat-dev -y
2.下载并解压 Python 源代码123wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xztar -xvf Python-3.12.2.tar.xzcd Python-3.12.2
3.配置编译选项运行 configure 脚本配置编译选项,这里我们启用优化并设置安装路径:
1./configure --enable-optimizations --prefix=/usr ...
服务器商家提供的系统镜像虽然方便,但是其中总是包含多余的东西,我比较喜欢干净的系统,每次拿到新机器后都会进VNC控制台手动安装系统。但是手动执行系统比较费时费力,一台还好,但是我的服务器很多,一台一台地弄太慢了,把自己整的很烦躁。因此,我决定尝试使用自动化脚本来简化这一过程,提高效率。在服务器管理和运维领域,自动化脚本是节省时间和提高效率的关键。现在正好放寒假,于是我利用空闲的时间深入研究了如何使用preseed.cfg自动化部署Debian系统
脚本已经写好:bash <(curl -sL https://sitao.org/myscripts/installDebian)可选择的系统:Debian 10, 11, 12在debain或者ubuntu上运行脚本,一般在十分钟内完成,机器性能好的话可能才五六分钟,期间可以打开vnc控制台查看进度
脚本设计1.检查权限: 脚本首先检查用户是否以 root 权限运行,以确保能够执行必要的系统操作。
2.选择版本: 脚本提示用户选择要安装的 Debian 版本,并根据用户的选择下载相应的 netboot 文件。
3.设置密码: 用户需要 ...
127.0.0.1和0.0.0.0的共同点:1.都是IPV4地址;2.都属于A类地址;3.都属于特殊地址。
127.0.0.1所有以127开头的IP地址(127.0.0.0/8)都被视为回环地址(Loop back address),其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。简单来说,当数据包被发送到以127开头的IP地址时,该数据包并不会离开发送主机,而是由主机自身接收处理,根本传不出去,外部设备无法通过回环地址访问到这台主机。
当你向这个地址段中的任何一个IP地址发送数据时,数据包不会离开你的设备,而是由你的设备自身的网络协议栈处理。这意味着无论你使用这个范围内的哪个IP地址,实际上都是在与你自己设备上的服务或应用程序进行通信。
127.0.0.1是属于127集合中的一个具体实例,而所有网络号为127的IP地址都被统称为回环地址。因此,回环地址这个概念并不等同于单一的127.0.0.1地址,而是包含127.0.0.1在内的一个地址集合。也就是说,127.0.0.1是回环地址集合的一部分,二者之间是包含关系。通过使用ping 127.0.0.1 测试某台 ...