it-boy
latest

Contents:

  • 操作系统
    • 硬件结构
      • 局部性原理
      • 图灵机的工作方式
      • 冯诺依曼模型
        • 内存
        • 中央处理器
        • 总线
        • 输入、输出设备
      • 线路位宽与CPU位宽
        • 程序执行的基本过程
      • a = 1 + 2 执行具体过程
      • 指令
        • 基础
        • 指令的类型
        • 指令的执行速度
        • 流水线
        • 指令乱序执行
        • 如何让程序跑的更快?
      • 处理单位
      • 存储器
        • 存储器的层次结构
        • 寄存器
        • CPU Cache
        • 内存
        • SSD/HDD 硬盘
        • 存储器的层次关系
        • CPU-Cache 细节
          • 计算 Tag 位数的步骤
          • DMA中内存的数据结构
          • 缓存行的数据结构
        • 直接Cache映射
        • 如何写出让 CPU 跑得更快的代码?
        • 如何提升多核 CPU 的缓存命中率?
      • CPU缓存一致性
        • 缓存命中与未命中
        • 写直达
        • 写回
        • 缓存一致性问题
        • 总线嗅探
        • MESI 协议
      • CPU执行任务的过程
        • Cache 伪共享
        • 避免伪共享的方法
        • CPU 如何选择线程的
        • 调度类
        • 完全公平调度
        • CPU 运行队列
        • 调整优先级
      • 中断
        • 软中断
        • 系统里有哪些软中断
      • 数字表示
        • 基础概念
        • 负数的表示
        • 十进制小数与二进制的转换
        • 计算机是怎么存小数的?
        • 0.1 + 0.2 == 0.3 ?
        • 举例计算
          • 小数转二机制
          • 二机制转小数
        • 总结
          • 正向计算小数的二进制表示
          • 逆向从二进制推算小数
          • float和double的取值范围
    • Linux 内核 vs Windows 内核
      • 内核
        • 内核的主要作用
      • Linux 的设计
        • MultiTask
        • SMP
        • ELF
          • ELF Header
        • Monolithic Kernel
      • Windows 设计
    • 内存管理
      • 早期内存分配
      • 分段
      • 分页
      • 虚拟内存
      • 内存分段
      • 内存分页
      • 多级页表
      • TLB(Translation Lookaside Buffer)
      • 段页式内存管理
      • Linux 内存布局
      • malloc分配内存
        • malloc 是如何分配内存的?
        • free 释放内存,会归还给操作系统吗?
        • 为什么不全部使用 mmap 来分配内存
        • 既然brk那么牛逼,为什么不全部使用brk来分配
        • free()函数只传入一个内存地址,为什么能知道要释放多大的内存?
      • 内存满了,会发生什么?
        • 内存分配的过程是怎样的?
        • 哪些内存可以被回收?
        • 回收内存带来的性能影响
      • 内存回收优化
        • 调整文件页和匿名页的回收倾向
        • 尽早触发 kswapd 内核线程异步回收内存
        • NUMA 架构下的内存回收策略
        • 如何保护一个进程不被 OOM 杀掉呢?
      • 在 4GB 物理内存的机器上,申请 8G 内存会怎么样?
        • 操作系统虚拟内存大小
        • 32 位系统的场景
        • 64 位系统的场景
        • Swap 机制的作用
      • 预读失效和缓存污染
        • Linux和MySQL的缓存
          • Linux 操作系统的缓存
          • MySQL的缓存
        • 传统LRU是如何管理内存数据的?
        • 预读失效
          • 预读机制
          • 预读失效问题
          • 预读失效原因
          • 预读失效避免
        • 缓存污染
          • 缓存污染定义
          • 避免缓存污染
        • 总结
      • Linux 虚拟内存管理
        • 虚拟内存地址概念
        • 为什么要使用虚拟地址访问内存
        • 进程虚拟内存空间
          • 内存映射段(mmap)
        • Linux进程虚拟内存空间
          • 32位机器上进程虚拟内存空间分布
          • 64位机器上进程虚拟内存空间分布
        • 进程虚拟内存空间的管理
          • 描述符
          • task_struct结构
        • 内核如何划分用户态和内核态虚拟内存空间
        • 内核如何布局进程虚拟内存空间
        • 内核如何管理虚拟内存区域
        • 定义虚拟内存区域的访问权限和行为规范
        • 关联内存映射中的映射关系
          • 匿名映射与文件映射
        • 针对虚拟内存区域的相关操作
        • 虚拟内存区域在内核中是如何被组织的
        • 程序编译后的二进制文件如何映射到虚拟内存空间中
        • 内核虚拟内存空间
          • 32 位体系内核虚拟内存空间布局
            • 直接映射区
            • ZONE_HIGHMEM 高端内存
            • vmalloc 动态映射区
            • 永久映射区
            • 固定映射区
            • 临时映射区
            • 32位体系结构下 Linux 虚拟内存空间整体布局
          • 64 位体系内核虚拟内存空间布局
            • 64位体系结构下 Linux 虚拟内存空间整体布局
        • 到底什么是物理内存地址
          • DRAM芯片的访问
          • CPU如何读写主存
          • CPU 从内存读取数据过程
          • 如何根据物理内存地址从主存中读取数据
          • CPU 向内存写入数据过程
      • Linux物理内存管理
        • 从CPU角度看物理内存模型
          • FLATMEM 平坦内存模型
          • DISCONTIGMEM 非连续内存模型
          • SPARSEMEM 稀疏内存模型
          • 物理内存热插拔
        • 从 CPU 角度看物理内存架构
          • 一致性内存访问 UMA 架构
          • 非一致性内存访问 NUMA 架构
          • NUMA 的内存分配策略
        • NUMA 的使用简介
          • 查看 NUMA 相关信息
          • 绑定 NUMA 节点
          • 内核如何管理 NUMA 节点
            • 内核如何统一组织 NUMA 节点
          • NUMA 节点描述符 pglist_data 结构
          • NUMA 节点物理内存区域的划分
          • NUMA 节点中的内存规整与回收
          • NUMA 节点的状态 node_states
          • 内核如何管理 NUMA 节点中的物理内存区域
          • 物理内存区域中的预留内存
          • 物理内存区域中的水位线
          • 水位线的计算
          • min_free_kbytes 的计算逻辑
          • setup_per_zone_wmarks 计算水位线
          • watermark_scale_factor 调整水位线的间距
          • 物理内存区域中的冷热页
        • 内核如何描述物理内存页
          • 匿名页的反向映射
    • 进程管理
      • 进程
        • 概念
        • 状态
        • 控制结构
        • 控制
        • 上下文切换
      • 线程
        • 基本概念
        • 比较
        • 上下文切换
        • 实现
      • 调度
        • 调度时机
        • 调度原则
        • 调度算法
      • 进程之间的通信
        • 管道
        • 消息队列
        • 共享内存
        • 信号量
        • 信号
        • Socket
      • 多线程冲突
        • 竞争与协作
        • 互斥的概念
        • 同步的概念
        • 互斥与同步的实现和使用
          • 锁
          • 信号量
        • 生产者-消费者问题
        • 经典同步问题
          • 哲学家就餐问题
          • 读者-写者问题
      • 死锁
        • 死锁的概念
          • 互斥条件
          • 持有并等待条件
          • 不可剥夺条件
          • 环路等待条件
          • 模拟死锁问题的产生
          • 利用工具排查死锁问题
          • 避免死锁问题的发生
        • 悲观锁和乐观锁
          • 互斥锁与自旋锁
        • 读写锁
        • 乐观锁与悲观锁
      • 一个进程最多可以创建多少个线程
      • 线程崩溃了,进程也会崩溃吗
        • 线程崩溃,进程一定会崩溃吗
        • 进程是如何崩溃的-信号机制简介
        • 为什么线程崩溃不会导致 JVM 进程崩溃
        • openJDK 源码解析
    • 文件系统
      • 文件系统的基本组成
      • 虚拟文件系统
      • 文件的使用
      • 文件的存储
        • 连续空间存放方式
        • 非连续空间存放方式
      • Unix 文件的实现方式
    • 设备管理
      • 设备控制器
      • I/O控制方式
      • 设备驱动程序
      • 通用块层
      • 存储系统I/O软件分层
    • 网络系统
      • 零拷贝
        • DMA 技术
        • 传统的文件传输
        • 优化文件传输
        • 零拷贝
          • mmap + write
          • sendfile
          • 零拷贝技术实际应用
        • PageCache
          • 大文件传输
      • I/O 多路复用
        • Socket 模型
        • 如何服务更多的用户
          • 多进程模型
          • 多线程模型
        • I/O 多路复用
          • select/poll
          • epoll
          • 边缘触发和水平触发
      • Reactor 和 Proactor
    • 硬件架构
      • 并行硬件架构
      • 数据库架构设计的三种模式
      • MPP模式
  • 网络
    • 基础概念
      • 网关
      • 网卡
      • 交换机
      • 路由器
      • 防火墙
      • 负载均衡器
    • 脑图思考
      • HTTP脑图
      • TCP脑图
      • IP脑图
    • 网络设计
      • 集线器
      • 交换机
      • 路由器
      • 路由寻址
      • 总结
    • 网络协议
      • ARP 与 RARP 协议
      • DNS 域名解析
      • DHCP
      • NAT 网络地址转换
      • ICMP 协议
      • IGMP 因特网组管理协议
      • OSI协议
      • TCP/IP协议
      • HTTP协议
      • HTTPS协议
    • 网络性能指标
      • 查看网络配置
      • 查看协议栈信息
        • 网络吞吐率&PPS
        • 带宽
        • 连通性和延时
    • 网页访问过程
      • 网页访问及显示
    • 杂项
      • 测试服务器的某个端口是否通畅
    • 证书生成及验证
      • 常见的加密算法
        • 摘要算法
        • 对称加密算法
        • 非对称加密算法
      • 证书的构成
      • 证书的生成及解析
      • 证书结构解析(asn1parse结果解析)
      • SSL/TLS协议基本流程
      • 总结
      • 证书签发及验证
      • 双向认证
    • 网络抓包
      • tcpdump
        • 基本用法
        • 常用选项与过滤
        • 抓包实例
      • WireShark
        • 语法结构
        • 常用过滤
      • 抓包实践
        • wireshark抓包界面
        • http应用抓包
          • TCP三次握手
          • TCP窗口大小机制
          • TCP Payload
          • HTTP请求
          • HTTP响应
          • TCP四次挥手
    • HTTP与HTTPS
      • HTTP
      • HTTPS
      • HTTP的演变
        • HTTP/1.1 相比 HTTP/1.0 性能上的改进:
        • HTTP/2 做了什么优化
        • HTTP/3 做了哪些优化
      • 优化
        • HTTP/1.1 如何优化
        • HTTP与RPC
        • HTTP和RPC区别
      • 总结
      • 服务器主动发消息给客户端
        • 使用 HTTP 不断轮询
        • 长轮询
        • WebSocket
        • 总结
    • IP知识
      • 基本概念
      • IP地址
      • ip地址的分类
      • CIDR
      • 公有ip地址和私有ip地址
      • ip地址与路由控制
      • ip分片和重组
    • JWT原理及验证
      • 1.简介
      • 2.跨域认证
      • 3.JWT原理
      • 4.JWT的数据结构
        • 4.1 Header
        • 4.2 Payload
        • 4.3 Signature
        • 4.4 Base64和Base64URL
      • 5 JWT 的使用方式
      • 6 JWT 的几个特点
      • 7 程序验证
    • Linux收发网络包
      • linux收发数据包
        • 发送数据包
        • 接收数据包
      • ASGI/WSGI
    • OSI网络模型
      • 应用层
      • 传输层
      • 网络层
      • 网络接口层
      • 数据包流转
    • TCP
      • 定义
      • 协议构成
      • 存在必要性
      • 与UDP区别
        • UDP协议
        • 对比
      • 连接
      • 序列号与确认应答号
      • TCP分段
      • 为什么需要三次握手
        • 防止历史连接
        • 同步双方初始序列号
        • 避免资源浪费
      • 半连接和全半连接
      • 四次挥手
      • Q&A
  • 数据库
  • Linux
    • 内核参数调优
      • 工具
      • 查看所有系统变量
      • 优化性能调查
        • uptime
        • dmesg | tail
        • vmstat
        • mpstat -P ALL 1
        • pidstat 1
        • iostat -xz 1
        • free -m
        • sar -n DEV 1
        • sar -n TCP,ETCP 1
        • top
      • 内核参数
        • 网络相关内核参数
        • 内核参数调整
    • 时区时间设置
      • 常见时区
      • 时区和时间设置
      • 授时中心
      • 时间同步
      • 设置语言环境
  • 编程
    • python
      • PDM管理
        • 安装
        • 初始化
        • 语法
          • 配置pypi源
          • 增加依赖库
          • 依赖库分组
          • 查看依赖库
          • 删除依赖库
          • 更新依赖库
          • 分组更新
          • 查看项目环境
          • 切换解释器
          • 运行python命令
          • 命令别名
      • python函数基础
        • 1.函数的定义
        • 2.函数参数
        • 3.函数名称
        • 4.函数返回值
        • 5.函数作用域
        • 6.函数类型
          • 6.1 内置函数
          • 6.2 匿名函数
          • 6.3 嵌套函数
          • 6.4 闭包函数
          • 6.5 回调函数
        • 7.函数属性
          • 7.1 属性分析
          • 7.2 属性和字节码对象PyCodeObject
        • 8.函数冻结
        • 9.函数装饰器
          • 9.1 基础
          • 9.2 定义
        • 10.代码块
        • 11.思考
      • python函数的执行过程
        • 简介
        • 解释器
        • 基本执行
        • 汇编
        • 反汇编
        • 关于dis
        • 编译
        • 栈帧
        • 函数调用
        • 函数调用与栈
        • 函数调用过程
        • 函数调用示例
      • 模块和包
        • 1. 内置模块和标准库
        • 2. 模块和包的定义
          • 2.1 模块
          • 2.2 包
        • 3. 模块导入
          • 3.2 模块搜索路径
          • 3.3 模块的导入过程
          • 3.4 重载模块
          • 3.5 模块导入细节
        • 4. 包
          • 4.1 导入格式
          • 4.2 关于__init__.py
          • 4.2 关于__path__.py
        • 5. 导入示例
        • 6. 相对导入
        • 7.关于__name__
      • python基础知识
        • 解释器执行流程
        • 特点
        • 与ELF文件的关系
        • 变量
        • 基本数据类型
        • 语句和表达式
        • 运算符
          • 数值基本运算
          • 其它数学运算方法
          • 浮点数
          • 真除法、Floor除法和小数位截断
          • 数值类型的转换
          • 小数类型(Decimal)
          • 分数(Fraction)
        • 布尔类型
          • True/False的各种形式
        • None
        • 逻辑运算:and、or、not
        • 空、非空测试的建议
        • 等值、大小比较
          • is 和 ==
        • python中的字符串
          • raw字符串
          • 字符串转换
          • 操作字符串
          • 字符串的索引和分片操作
          • 索引取单个元素
          • 分片取多个元素
        • 异常和错误处理
          • 异常处理:try/except
          • 异常处理:try/finally
          • 产生异常:raise和assert
          • 自定义异常
          • 如何看抛出的异常
          • 深入异常处理
          • raise
          • sys.exc_info()
          • 区分异常和错误
          • 异常类的继承
          • 异常类的嵌套
          • except应该捕获哪些异常
          • 自定义异常类
          • 自定义异常输出
          • 提供构造方法
          • 提供异常类的其它方法
        • with/as和contextlib上下文管理使用说明
          • with/as
          • 嵌套多个环境管理器
          • 自定义环境管理器
          • contextlib模块
        • f-string
          • 基本语法
          • 用 Python f-string 来评估表达式
          • 如何在 Python f-string 中使用条件语句
          • 用 Python f-string 调用方法
          • 在 Python f-string 中调用函数
          • 使用f-string进行格式化
          • 使用建议
        • 深拷贝与浅拷贝
        • for迭代的陷阱
        • 验证小整数常量池
      • 序列化及反序列化
        • 基础概念
        • python中实现
        • 比较
    • 基础
      • 递归算法
        • 递归函数的条件
        • 内存栈区堆区
        • 尾递归
        • 关于return
        • 理解递归
        • python递归函数基本原理及执行顺序
      • 编程语言
      • 编码
        • 基础概念
          • 字与字长
        • Unicode编码
        • 字符编码模型
        • 现代字符编码模型
          • 抽象字符表ACR-明确字符的范围(即确定支持哪些字符)
          • 编号字符集CCS(Coded Character Set)-用数字编号表示字符(即用数字给字符编号)
          • 字符编码方式CEF(Character Encoding Form)-将字符编号(即码点值)编码为码元序列(即字符编码)
          • 字符编码模式CES
          • 传输编码语法TES(Ttransfer Encoding Syntax)
        • 内码+外码
        • UTF-8编码规则
        • UTF-16编码
        • 零宽字符
      • 进程线程和协程
        • 进程
          • ps命令中的进程状态
          • 进程状态转换:
        • 线程
        • 执行单元
        • 切换问题与协程
        • 协程的切换成本
  • 大数据
    • 数据指标体系
      • 1.指标定义
      • 2.指标理解
      • 3.指标分类
      • 4.指标分级
      • 5.指标计算
      • 6.指标要素
      • 7.指标管理
        • 7.1 覆盖和收敛
        • 7.2 及时性的提升
        • 7.3 命名的统一性
        • 7.4 一致性与生态
      • 8.指标命名
      • 9.指标体系及建设流程
        • 9.1 业务梳理与指标体系框架指定
        • 9.2 基于业务目标做业务过程的拆解
        • 9.3 基于业务过程梳理确定分析主题
        • 9.4 校验整合信息形成指标体系框架
      • 10.业务指标梳理
        • 10.1业务分析所需指标清单的梳理
        • 10.2分析数据所需的维度的确定
        • 10.3建立指标和维度之间的映射关系
      • 11.指标清单梳理
      • 12.指标体系平台
      • 13.指标拆解
  • 中间件
    • Haproxy
      • 特点
      • 负载均衡算法
      • 常见的使用场景
      • 缺点
      • 健康检查和故障转移机制
      • LVS、Nginx、HAproxy的区别
  • 工具
    • vscode
      • 1.快捷键使用
        • 通用快捷键
        • 基础编辑
        • 导航
        • 查询和替换
        • 多行光标操作于选择
        • 丰富的语言操作
        • 编辑器管理
        • 文件管理
        • 显示
        • 调试
        • 集成终端
    • git
      • 1.提交规范
        • 1.1 目标
        • 1.2 动机
        • 1.3 提议
          • 1.3.1 提交格式
        • 1.4 恢复
        • 1.5 例子
      • 2.生成CHANGELOG.md
      • 3.在线学习网站
      • 4.Git常用
        • 4.1 代码提交和同步代码
        • 4.2 代码撤销和撤销同步
          • 已修改,但未暂存
          • 已暂存,未提交
          • 已提交,未推送
          • 已推送到远程
        • 4.3 相对引用
        • 4.4 整理提交记录
        • 4.5 合并分支
        • 4.6 冲突与合并
          • 解决冲突
        • 4.7 日志查看
        • 4.8 其它常用命令
          • 删除本地分支和远程分支
          • 关联远程仓库
          • 切换分支
          • 撤销操作
          • 版本回退与前进
        • 4.9 配置Git
      • 5. git模型
        • 版本控制系统核心功能
        • git的优势
        • 版本管理的挑战
        • git分支模型
          • Git flow
          • GitHub flow
          • Gitlab flow
          • TBD flow
          • TBD flow++
        • 选择合适的分支模型
        • 小团队
          • 常见任务
    • vim使用
      • 1. vim 键盘图
      • 2. 基础命令
      • 3.保存退出
      • 4.移动
        • word 与 WORD 的区别
      • 5.复制 / 粘贴 / 删除
      • 6.模式切换
      • 7.大小写 / 加减
      • 8.撤销
      • 9.Folding
      • 10.window/tab
      • 11.Buffer
      • 12.tag
      • 13.Mark
      • 14.Completion
      • 15.Quick List
      • 16.Location List
      • 17.宏
      • 18.参数列表
      • 19.命令行模式
      • 20.Insert 模式
      • 21.路径
      • 22.寄存器
        • 使用方式
      • 23.vimdiff
      • 24.远程编辑
    • 正则表达式
      • 正则表达式概念
      • 断言
      • 特殊字符
      • 匹配字符的元字符
      • 匹配位置的元字符
        • 关于\b
      • 量词
      • 分支和分组
        • 非捕获组
        • 正向先行断言
        • 负向先行断言
        • 正向后行断言
        • 负向后行断言
      • 匹配模式选项
      • findall 和 finditer
      • compile
      • match 和 search
      • split
      • sub 和 subn
      • escape
      • match 对象
    • wget和curl
      • 1.wget使用
        • 1.1 使用 wget 命令下载单个文件
        • 1.2 使用 wget 命令下载多个文件
        • 1.3 使用 wget 命令获取不同名称的文件
        • 1.4 使用 wget 命令将文件保存在指定目录中
        • 1.5 使用 Wget 命令限制下载速度
        • 1.6 使用 Wget 命令设置重试次数
        • 1.7 使用 Wget 命令在后台下载
        • 1.8 使用Wget命令通过FTP下载
        • 1.9 使用 Wget 命令检索整个网站
        • 1.10 使用 Wget 命令查找断开的链接
        • 1.11 使用 Wget 命令断点续传
        • 1.12 选择性的下载
      • 2.CRUL工具
        • 2.1 curl 协议
        • 2.2 curl 命令选项
        • 2.2 curl 示例
        • 2.3 可用的 –write-out 变量
        • 2.4 Unicode 编码的响应的转换
        • 2.5 模拟POST/GET请求
    • nc命令
      • 简介
      • 文件传输
      • TCP端口扫描
it-boy
  • 网络
  • 在 GitHub 上编辑

网络

  • 基础概念
  • 脑图思考
  • 网络设计
  • 网络协议
  • 网络性能指标
  • 网页访问过程
  • 杂项
  • 证书生成及验证
  • 网络抓包
  • HTTP与HTTPS
  • IP知识
  • JWT原理及验证
  • Linux收发网络包
  • OSI网络模型
  • TCP
上一页 下一页

© 版权所有 2024, zys。 版本 4fc7f85c. 最后更新于 2024-09-30 06:26:12.

利用 Sphinx 构建,使用的 主题 由 Read the Docs 开发.