hero image

Kevin2li's Blog

行者长至,为者长成!

CPU原理

冯 • 诺依曼结构

运算器

功能:执行算术逻辑运算 组成:

  • ALU: 用于执行各种算术和逻辑运算,包括加、减、乘、除、与、或、非、移位等。
  • 数据寄存器: 用于存储运算器中的操作数和运算结果。
  • 状态寄存器:用于存储运算器的运算状态,例如运算结果是否为零、是否溢出等。

Kevin2li大约 4 分钟ComputerComposition
常用配置文件

常用配置文件路径

路径 说明
/etc/services 服务名称及其对应的端口号等
/etc/passwd 密码
/etc/sudoers sudo权限用户
/etc/resolv.conf 域名解析服务配置
/etc/hosts hosts文件
/etc/profile 环境变量配置
/etc/apt/sources.list apt镜像源
/etc/ssh/sshd_config ssh配置文件
/etc/nginx/nginx.conf nginx配置文件
/etc/dnsmasq.conf dnsmasw配置文件
/etc/fstab 开启启动挂载分区设置等
$HOME/.zshrc zsh配置文件
$HOME/.bashrc bash配置文件
$HOME/.vimrc vim配置文件

Kevin2li小于 1 分钟Box
中断

常见中断类型

Operating Systems - Internals and Design Principles 9th, p36

程序执行流


Kevin2li小于 1 分钟ComputerComposition
基础知识

字节序

  • 大端法:高字节存储在低地址,网络传输中采用,又叫网络字节序
  • 小端法:高字节存储在高地址,现代PC基本采用,又叫主机字节序

0x01234567为例:


Kevin2li大约 1 分钟ComputerComposition
x86_64汇编

寄存器

在Intel CPU中,通常有以下类型的寄存器:

  • 通用寄存器:通用寄存器是最常用的寄存器类型,它们用于存储整数数据。在64位系统中,有16个通用寄存器,每个寄存器大小为64位。这些寄存器的名称是RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、R8-R15。
寄存器名称 描述
RAX 累加器寄存器(Accumulator Register),用于存储算术和逻辑运算的操作数和结果。在函数调用中,它通常用于存储函数的返回值。
RBX 基址寄存器(Base Register),用于存储数据的基地址。在一些内存寻址方式中,它通常用于存储变量的地址。
RCX 计数寄存器(Counter Register),用于在循环中计数。在函数调用中,它通常用于存储函数的参数。
RDX 数据寄存器(Data Register),用于存储算术和逻辑运算的操作数和结果。在函数调用中,它通常用于存储函数的参数。
RSI 源索引寄存器(Source Index Register),用于字符串操作中的源地址。
RDI 目的索引寄存器(Destination Index Register),用于字符串操作中的目的地址。
RBP 基址指针寄存器(Base/Frame Pointer Register),用于存储当前栈帧的基址。在函数调用中,它通常用于存储上一个栈帧的基址。
RSP 栈指针寄存器(Stack Pointer Register),用于存储当前栈顶的地址。在函数调用和异常处理中,它通常用于存储函数的返回地址和异常处理的返回地址。
R8-R15 扩展寄存器(Extended Register),这些寄存器是在64位系统中新增的。它们用于存储算术和逻辑运算的操作数和结果,以及函数调用的参数和返回值。

Kevin2li大约 4 分钟ComputerComposition
Linux命令三剑客学习

grep

grep是一个命令行文本搜索工具,它可以在文件或标准输入中搜索指定的文本模式并输出匹配的行。grep命令通常用于命令行管道中,可以与其他命令一起使用,例如find、ls等命令,以便在文件系统中搜索特定的文件。

# 普通搜索
grep 'hello' example.txt

# 正则搜索
grep '^a\w*' example.txt

# 输出匹配行号
grep -n 'hello' example.txt

# 递归搜索
grep -r 'hello' /home/user

Kevin2li大约 5 分钟Box
Python使用经验总结

自定义包导入路径设置

假设项目根目录下有个src目录,当导入scr.some_pkg失败时,可以将根目录加入到site-packages的环境变量中。

# 在项目根目录下执行(tqdm是环境下确认安装过的包名,也可以换成其他)
echo $PWD >>  $(pip show tqdm|awk -F: '/Location/ {print $2}')"/my.pth"

Kevin2li小于 1 分钟Box
自用常用alias命令记录
## 防火墙管理
alias fw_add='sudo firewall-cmd --permanent --zone=public --add-port'
alias fw_del='sudo firewall-cmd --permanent --zone=public --remove-port'
alias fw_reload='sudo firewall-cmd --reload'
alias fw_view='sudo firewall-cmd --list-all'

## git
alias git_acp="git add . && git commit -m 'update' && git push"

# 服务
alias service_status="sudo systemctl status "
alias service_start="sudo systemctl start "
alias service_restart="sudo systemctl restart "
alias service_stop="sudo systemctl stop "

Kevin2li小于 1 分钟Box
Windows文件共享教程

简介

文件共享即允许计算机之间共享文件和文件夹。Windows提供了简单方便地在局域网内共享文件夹的方式,您可以轻松在多个Windows计算机之间共享文档、音乐、照片等文件。共享文件夹还可以被Mac和Linux计算机访问,只需要知道其IP地址或计算机名即可。

如何开启共享

  1. 新建一个文件夹,名称自定义,我这里取名“共享文件夹测试”
  2. 选中新建的文件夹,右击选择“属性”,切到“共享”选项卡。

里面提供了简单共享高级共享两种方式。


Kevin2li大约 1 分钟Box
2
3
4
5
...
20