Sitao 分享折腾的经历
虚拟内存系统不仅仅指交换空间(swap),它是一种将逻辑地址与物理地址进行转换的技术,通过它,操作系统可以为每个进程提供独立的地址空间。虚拟内存系统通过使用页表或段表等数据结构来实现逻辑地址到物理地址的映射。逻辑地址是由进程使用的地址空间,而物理地址是实际对应到计算机的物理内存地址。虚拟内存系统使得每个进程认为它拥有连续的私有地址空间,而实际上这些地址可能被映射到物理内存的不同位置,或者在需要时被交换到磁盘的交换空间。虚拟内存系统的主要目的是提供以下几个方面的好处:1.扩展地址空间:每个进程可以拥有比物理内存更大的地址空间,使得程序可以使用比实际可用内存更多的内存。2.内存隔离:每个进程拥有独立的地址空间,彼此之间的内存访问互不干扰,提高了安全性和稳定性。3.内存共享:虚拟内存系统允许多个进程共享同一块物理内存区域,这在进程间通信和资源共享方面非常有用。4.内存管理:虚拟内存系统可以动态地将物理内存与磁盘上的交换空间进行交换,从而更有效地管理内存资源,提高系统的整体性能。因此,虚拟内存系统涵盖了逻辑地址与物理地址的转换关系,以及与交换空间相关的功能。它是操作系统中重要的内存管理技术之一
上游是Cloudie测试机器:1Core CPU1GB RAM20GB DISK1TB/Month BW100Mbps PORTLinux OS1 IPv41 IPv6Starting at$4.99/mo性能流媒体解锁MTR回程路由上海电信: root@JUHOST-wTxFb1:~# mtr -rznT 202.96.209.133Start: 2023-06-27T10:16:20-0400HOST: JUHOST-wTxFb1 Loss% Snt Last Avg Best Wrst StDevAS??? 10.182.102.53 0.0% 10 1.4 4.3 0.8 10.3 3.8AS??? 10.82.3.254 0.0% 10 11.4 116.7 1.6 1003. 312.1AS??? ??? 100.0 10 0.0 0.0 0.0 0.0 0.0AS??? ??
Golang使用var关键字声明变量方法1: 声明一个变量,默认值是0var a int方法2: 声明一个变量,并且初始化一个值var b int = 1方法3: 初始化的时候去掉变量类型,Go自动匹配类型var c = 100var cc = "Hello Go!"方法4:短声明e := 100s := "Hello Go!"声明多个变量:var xx yy int = 100,200var ss aa = "Hello Go!",100 var ( nn = 100 kk = "Hello Go!" )
以添加1GB SWAP为例生成文件块SWAP一般设置为内存的2倍,并非完全以此为标准; count后面的数值为要设置的swap大小xxMBdd if=/dev/zero of=/var/swapfile bs=1M count=1024 创建swap文件/sbin/mkswap /var/swapfile 激活swap文件/sbin/swapon /var/swapfile 查看一下swap是否正确:/sbin/swapon -s 另外为了安全建议改一下权限:chmod 0600 /var/swapfile fstab文件中添加开机自动挂载设置echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab 删除SWAP/sbin/swapoff /var/swapfile rm -f /var/swapfile
tar命令: 用途比较多,可以用于打包,压缩和解压缩等打包和压缩的区别打包:将一堆文件或目录变成一个文件压缩:将一个大文件,通过压缩算法变成一个小文件Linux中的很多压缩算法只能对一个文件进行压缩,所以我们要压缩的话,必须先进行打包常用的压缩算法gzip、bzip2、xz等tar命令常用的参数-c 新建打包文件,同 -v 一起使用 查看过程中打包文件名-x 解决文件, -C 解压到对应的文件目录。-f 后面接要处理的文件-j 通过bzip2方式压缩或解压,最后以.tar.br2 为后缀。压缩后大小小于.tar.gz-z 通过gzip方式压缩或解压,最后以.tar.gz 为后缀-v 压缩或解压过程中,显示出来过程-t 查看打包文件中内容,重点文件名-u 更新压缩文件中的内容。-p 保留绝对路径,即允许备份数据中含有根目录-P 保留数据原来权限及属性。--exclude =FILE 压缩过程中,不要讲FILE打包-c/-x/-t/u 不可以同时出现1.压缩tar -jcvf 压缩文件名称.tar.br2tar -zcvf 压缩文件名称.tar.gz2.解压解压打包文件,只需要把打包中的
CS和IP寄存器(在x86架构的计算机中)是两个非常重要的寄存器,它们一起组成了CPU中的指令指针,用于指示CPU当前正在执行的指令的位置。CS寄存器(Code Segment Register)存储了代码段的起始地址,它是在编译和链接过程中由操作系统和编译器计算出来的。当CPU执行一条指令时,它会从CS寄存器指向的内存地址中读取指令代码,并将其存储到CPU中的缓存中等待执行。IP寄存器(Instruction Pointer Register)存储了指令偏移量,它指示了CPU当前正在执行的指令在代码段中的偏移量。当CPU执行完一条指令后,它会根据IP寄存器中存储的偏移量计算出下一条指令的地址,并将其存储到CS寄存器中,然后继续执行下一条指令。CS和IP寄存器一起组成了CPU中的指令指针,它们的值随着程序的执行而不断变化,用于控制CPU的执行流程。在操作系统中,CS和IP寄存器的值通常可以被读取和修改,从而控制程序的执行流程和运行状态。
1.CPU内部寄存器的位数 是决定其寻址能力的一个重要因素。具体来说,CPU内部寄存器的位数决定了CPU可以直接寻址的最大物理内存空间大小。例如,32位CPU最大可以直接寻址4GB的物理内存空间,64位CPU最大可以直接寻址的物理内存空间大小则高达16EB(即16 x 1024 x 1024 x 1024 x 1024 GB)2.地址总线的位数 决定了CPU可以传输的地址信息的位数。例如,32位的地址总线可以传输32位的地址信息,因此最多可以寻址4GB的物理内存空间。3.物理内存的大小:CPU能够寻址的物理内存空间大小受到物理内存大小的限制。如果物理内存大小超过了CPU的寻址能力,则CPU只能访问其中的一部分内存。4.操作系统的限制:操作系统也会对CPU的寻址能力进行限制。例如,32位操作系统只能管理最多4GB的物理内存空间,即使CPU的寻址能力超过了4GB。5. 虚拟内存技术:虚拟内存技术可以将磁盘上的空间作为物理内存使用,从而扩大了CPU的寻址能力。总之,CPU的寻址能力受到多个因素的限制,需要综合考虑这些因素以确定CPU可以寻址的最大物理内存空间大小。
Docker 是一种容器化技术,可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件,而不再需要安装配置各种环境。开源 Docker社区致力于改进这类技术,并免费提供给所有用户,使之获益。传统模式下运维人员需要运行 docker run来启动各种容器,一旦容器过多,就无法一次性记住所有的运行参数和命令,这时候我们可以使用 Docker Compose 来解决这个问题。Docker Compose 是一种工具,用于帮助定义和共享多容器应用程序。 通过 Compose,你可以创建 YAML 文件来定义服务,并且只需一个命令,就可以启动或清理所有内容。使用 Compose 的巨大优点是,你可以在文件中定义应用程序堆栈,使其位于项目存储库的根目录下(它现在受版本控制),并方便其他人参与你的项目。 其他人只需克隆你的存储库即可开始撰写应用。 事实上,你可能会看到 GitHub/GitLab 上的很多项目现在都是这样做的。官方脚本安装(推荐)curl -fsSL https://get.docker.com | sh 手动安装以下操作需要在 root 用户下完成,请使用 sudo -i 或
1.安装所需要的依赖软件包apt install build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev -y2.下载Nginx源码可以前往nginx官网下载最新的stable稳定版本 这里以安装1.23.4版本为例wget https://nginx.org/download/nginx-1.23.4.tar.gz解压tar -xzvf nginx-1.23.4.tar.gz进入源代码目录cd nginx-1.23.4 3. 配置和编译接下来就是make环节了,编译时候的参数可以参考官方Nginx文档:http://nginx.org/en/docs/configure.html我自己编译Nginx时候,选择的参数一般是:./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/
Sitao
唯实惟新 至诚致志