深入理解计算机系统

第一章计算机系统漫游 第一部分 程序结构与执行 第二章 信息的表示与处理 二进制 十进制 十六进制互转 低转高:用短除法反复短除高进制取余 高转低:用高进制的幂乘以每个高进制数字 字数据大小 每台计算机都有字长,指明指针数据的标称大小(normal size),虚拟地址以字来编码,对于$\omega$位的机器虚拟地址范围为:0~$2^{\omega}-1$,程序最多访问$2^{\omega}$个字节 32位机器虚拟地址限长为$2^{32}$字节=$2^{32}/2^{30}$=$2^{2}$=4Gb,32位操作系统最多只能使用4Gb的内存 寻址和字节顺序 小端法 最低有效字节在最前面 大端法 最高有效字节在最前面 整数表示 原码,补码,反码 机器数:一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。 真值:因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 = 1000 0001 反码的表示方法是: 正数的反码是其本身 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. [+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反 补码的表示方法是: 正数的补码就是其本身 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补...

November 16, 2022 · 2 min · 318 words · ecturing

OrangePi配置OpenWrt

OpenWrt Docker镜像准备 开源地址 网络配置 旁路由 网络地址 网络桥接 ​ docker与宿主机默认采用网络桥接方式,具体桥接方式为软件桥接

September 19, 2022 · 1 min · 9 words · ecturing

OrangePi单板服务器配置笔记

Ubuntu-Server配置 静态IP设置(可同样配置DNS服务器) 输入指令开启网络可视化配置 1 nmtui 点击Edit a connection,选择网卡,然后进行静态IP设置 注:配置静态IP一定要遵守局域网IP规则,推荐采用DHCP服务器进行分配IP,在路由器进行mac地址与IP地址进行绑定。 配置ZSH 卸载Oh-my-zsh 1 uninstall_oh_my_zsh 卸载自带ZSH 1 apt-get --purge remove zsh 重新安装zsh 1 apt-get install zsh 安装自动补全和指令高亮 1 apt-get install zsh-autosuggestions zsh-syntax-highlighting 安装主题插件p10k 1 2 git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ~/powerlevel10k echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc 配置p10k 1 p10k configure 启用插件(Ubuntu) 1 2 source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 启用历史记录 vim写入.zshrc,并新建.zsh_history空文件 1 2 3 HISTFILE=~/.zsh_history HISTSIZE=1000 SAVEHIST=1000

September 15, 2022 · 1 min · 61 words · ecturing

Nginx

Nginx服务器 Nginx是一款轻量级的Web 服务器反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型的网页服务器中表现较好。 在Docker中安装 拉取Nginx镜像 启动并挂载Nginx的Html,Conf,logs目录到宿主机 1 2 3 4 5 6 7 8 9 10 services: nginx: container_name: nginx image: nginx restart: always ports: - 80:80 volumes: - /home/docker-nginx/conf.d:/etc/nginx/conf.d #配置文件夹 - /home/docker-nginx/html:/usr/share/nginx/html #静态文件 反向代理 保障应用服务器的安全,使用反向代理实现内部设备的隐藏 实现负载均衡,常见于大型软件的集群式部署或微服务部署 实现跨域

April 3, 2022 · 1 min · 39 words · ecturing

Docker

Docker 是一个开源的应用容器引擎,是一种容器虚拟化技术,基于 Go 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 虚拟机也是虚拟化技术的一种体现,但是虚拟机占用资源多,冗余步骤多,启动慢,容器技术并不是模拟一个完整的操作系统,而是对进程进行隔离,用容器将软件所需的环境打包到一个隔离的容器中,容器只需要软件工作所需的库资源的设置 Docker安装 Docker组成 Client 客户端 Host 服务端 Registry 仓库 集中存放镜像文件的场所 Images 镜像 镜像是一个只读的模板,用于创建容器,类比面向对象,镜像是类 Containers 容器 容器是镜像的一个实例,类比面向对象,容器是对象 Docker daemon Docker守护进程 docker容器以后台形式运行 Docker命令 Docker 安装 1 2 3 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io 启动Docker 1 systemctl start docker 测试命令 1 2 3 docker version docker run hello-world docker images 配置镜像加速(阿里云) 1 2 cd /etc/docker/ vim daemon....

March 15, 2022 · 3 min · 568 words · ecturing