文先生的博客

  • 首页
  • 文集分类
    • 技术 (13)
      • [技术] 回顾 2023 阅读的技术书籍
      • [知乎回答] socket的任意event都会导致epoll_wait的惊群效应吗?
      • [知乎回答] Nginx为啥使用ET模式Epoll?
      • [知乎回答] epoll的EPOLLEXCLUSIVE真的能防住惊群吗?
      • [知乎回答] 协程如何做到切换到另一个函数还能完成原函数的IO?
      • [知乎回答] 程序员都是怎么记笔记的?
      • [知乎回答] 作为程序员的你,工作台是怎样的?
      • [知乎回答] 如何设计内存池?
      • [知乎回答] poll/epoll函数中的各种event分别应该在什么时候监听并处理呢?
      • 我的阅读书单
      • Collection
      • 商品秒杀问题的思考
      • 文件服务器架构逻辑
    • c/c++ (41)
      • [C++] 提高 C++ 项目编译速度的神兵利器
      • [C++] Google Authenticator 算法实现
      • [C++] 使用时间轮实现对象的操作频率限制
      • [C++] 浅析 std::share_ptr 内部结构
      • [C++] 深入探索 C++ 多态 ④ - 模板静态多态
      • [C++] 右值引用
      • [muduo] vscode + gdb 调试 muduo
      • [C++] 深入探索 C++ 多态 ③ - 虚析构
      • [C++] 深入探索 C++ 多态 ② - 继承关系
      • [转载] What is the VTT for a class
      • [stl 源码分析] 浅析 std::vector::emplace_back
      • [QT] 浅析信号与槽
      • [C++] C++ 有什么好用的线程池?
      • [C++] 深入探索 C++ 多态 ① - 虚函数调用链路
      • [C++] 浅析 C++11 移动语义
      • [stl 源码分析] std::sort
      • (ubuntu) vscode + gdb 调试 c++
      • [stl 源码分析] std::vector::push_back 内存扩充
      • [stl 源码分析] std::list::size 时间复杂度
      • 基于 stl map 的定时器(C++)
      • 剖析 stl + glibc “内存泄漏” 原因
      • 计算两个集合差集(C++)
      • protobuf / json 数据转换(C++)
      • [C++] 理解 C++ 多线程条件变量 pthread_cond_wait 使用
      • c++ 分割字符串函数
      • cryptopp 加密库使用
      • gettimeofday 获取本地时间
      • jemalloc 性能测试
      • [数据库] 自动代码工具 - 分析 mysql 脚本(*.sql)生成 C++ 源码
      • libev 源码理解方式
      • gcc/make/Makefile 源码编译
      • strncpy 安全吗?
      • [多线程] 剖析嵌套式死锁问题
      • printf 问题的思考
      • 反汇编查看宏函数/函数调用原理
      • Linux 下实现 itoa 转二进制
      • 类型强制转换异常跟踪
      • c++ 语言基础知识
      • stl 基础知识
      • c 语言基础知识
      • C++ 日志宏定义
    • 工具 (18)
      • MacOS 安装使用 Docker
      • perf 常用方法
      • (Centos 7)GDB 调试 glibc(附视频)
      • ubuntu 20.4 常用软件安装
      • rsync 传输文件
      • Centos7 常用软件安装
      • MacOS 通过虚拟机(Virtual Function)安装 Centos7
      • tmux 常用快捷键
      • vscode 一键(快捷键)执行脚本命令
      • LLDB 使用
      • Linux 软件性能分析--火焰图 🔥
      • tmux 返回前一个 panel 快捷键
      • vim c++ 代码自动格式化配置
      • Git 常用命令场景
      • GDB 使用
      • Siege HTTP 压力测试
      • Centos7 vim 编码环境 (C++/golang)
      • ccache 优化 C++ 编译速度
    • redis (41)
      • [Redis] 浅析 Redis 并发模型
      • 延时双删(redis-mysql)数据一致性思考
      • [hiredis 源码走读] redis pipeline
      • [redis 源码走读] maxclients 最大连接数限制
      • [redis 源码走读] 域名解析 - getaddrinfo
      • [redis 源码走读] sentinel 哨兵 - 通知第三方
      • [redis 源码走读] redis 与 raft 算法
      • [redis 源码走读] sentinel 哨兵 - 故障转移
      • [redis 源码走读] sentinel 哨兵 - 选举投票
      • [kimserver] libev + hiredis redis 异步连接池
      • [hiredis 源码走读] 异步回调机制剖析
      • [redis 源码走读] sentinel 哨兵 - 主客观下线
      • [redis 源码走读] sentinel 哨兵 - 节点链接流程
      • [redis 源码走读] sentinel 哨兵 - 原理
      • [redis 源码走读] 主从数据复制 ②
      • redis 为啥这么快
      • [redis 源码走读] 主从数据复制 ①
      • [redis 源码走读] 异步通信流程-单线程
      • [redis 源码走读] 多线程通信 I/O
      • [redis 源码走读] 事件 - 文件事件
      • [redis 源码走读] 事件 - 定时器
      • redis 持久化方式 - aof 和 rdb 区别
      • [redis 源码走读] aof 持久化 ①
      • [redis 源码走读] aof 持久化 ②
      • [redis 源码走读] rdb 持久化 - 文件结构
      • [redis 源码走读] rdb 持久化 - 应用场景
      • [redis 源码走读] maxmemory 数据淘汰策略
      • [redis 源码走读] redis 过期策略
      • [redis 源码走读] 对象(redisObject)
      • [redis 源码走读] 整数集合(inset)
      • [redis 源码走读] 跳跃表(skiplist)
      • [redis 源码走读] 压缩列表(ziplist)
      • [redis 源码走读] 链表
      • [redis 源码走读] zmalloc
      • [redis 源码走读] 字符串(sds)
      • [redis 源码走读] 字典(dict)
      • 用 gdb 调试 redis
      • [redis 源码走读] sentinel 哨兵 - 脑裂处理方案
      • redis 学习的思考
      • 压测 redis 消息队列(golang)
      • hiredis + libev 异步测试
    • Go (5)
      • 简单的 http 通信校验(golang)
      • 物联网数据通信 mqtt - mosquitto
      • 简单说说 golang 的主要优点
      • golang & viper config & zookeeper
      • 压测 redis 消息队列(golang)
    • 科技 (4)
      • 智慧农场解决方案
      • Macbook Pro 副屏 - Gobigger 4k 便携屏使用体验
      • MacBook Pro 2019 13寸 体验
      • “黑科技”(ipad + termius + 100 元的蓝牙键盘)
    • 系统 (11)
      • 信号
      • x86_64 函数运行时栈帧内存布局
      • 常用汇编知识
      • 程序工作流程(Linux)
      • Linux 文件目录权限
      • 程序变量内存分布(Linux)
      • [shell] ssh 快捷登录
      • fork 进程测试 copy-on-write
      • [shell] sed 插入多行文本
      • [shell] shell 常用语法
      • Linux 常用命令
    • 即时通讯 (4)
      • 即时通讯方案
      • [即时通讯] 分布式系统-用户在线状态管理
      • [即时通讯] 千人群组-消息管理
      • [即时通讯] 视高企业协同办公系统
    • 分布式系统 (14)
      • [co_kimserver] libco mysql 连接池
      • [co_kimserver] co_kimserver 简介
      • [kimserver] 统计负载信息
      • [kimserver] 配置文件 config.json
      • [kimserver] zookeeper-client-c 接入流程思考
      • [kimserver] 分布式系统 - 一致性哈希算法
      • [kimserver] 分布式系统 - 节点发现
      • [kimserver] 父子进程传输文件描述符
      • [kimserver] 分布式系统-多进程框架节点通信
      • zookeeper-client-c 异步/同步工作方式
      • 安装 ZooKeeper
      • [kimserver] libev + hiredis redis 异步连接池
      • [kimserver] C++ 异步非阻塞 Mysql 连接池
      • golang & viper config & zookeeper
    • 数据库 (4)
      • [数据库] sqlite3 模糊查找效率
      • [数据库] mysql 常用命令配置
      • [数据库] 自动代码工具 - 分析 mysql 脚本(*.sql)生成 C++ 源码
      • [数据库] mysql 数据库创建,删除,导入,导出数据 shell 脚本
    • 算法 (5)
      • [算法] 一致性哈希算法
      • 算法 lru c++ 实现
      • [算法导论] 堆排序
      • [算法导论] 归并排序
      • [算法导论] 快速排序
    • 随笔 (10)
      • [随笔] 最好的编程语言
      • [知乎回答] 程序员都是怎么记笔记的?
      • [知乎回答] 作为程序员的你,工作台是怎样的?
      • [随笔] 敏捷开发
      • trello - 化零为整
      • (研发)十年工作总结 - 平凡之路
      • github + jekyll 搭建博客
      • 用 Mac 第一次剪辑视频
      • 付费自习室
      • 早睡早起
    • nginx (9)
      • [知乎回答] Nginx为啥使用ET模式Epoll?
      • [知乎回答] epoll的EPOLLEXCLUSIVE真的能防住惊群吗?
      • 探索惊群 ⑥ - nginx - reuseport
      • 探索惊群 ⑤ - nginx - NGX_EXCLUSIVE_EVENT
      • 探索惊群 ④ - nginx - accept_mutex
      • 探索惊群 ③ - nginx 惊群现象
      • gdb 调试 nginx(附视频)
      • nginx 地址对齐(ngx_align_ptr)
      • [nginx 源码走读] 内存池
    • epoll (10)
      • [知乎回答] socket的任意event都会导致epoll_wait的惊群效应吗?
      • [知乎回答] Nginx为啥使用ET模式Epoll?
      • [知乎回答] epoll的EPOLLEXCLUSIVE真的能防住惊群吗?
      • [知乎回答] poll/epoll函数中的各种event分别应该在什么时候监听并处理呢?
      • 深入理解 epoll 回调用户数据
      • [内核源码] epoll lt / et 模式区别
      • [内核源码] epoll 实现原理
      • [内核源码] epoll 源码实现-预备知识
      • epoll 多路复用 I/O工作流程
      • [redis 源码走读] 事件 - 文件事件
    • network (11)
      • [network] 记一次网站网络流量优化
      • 浅析 HTTPS TLS(ECDHE)协议的握手流程(图解)
      • 探索惊群 ⑦ - 文件描述符透传
      • 探索惊群 ①
      • 简单的 http 通信校验(golang)
      • 字节序转换关系
      • 重温网络基础
      • HTTP 状态码
      • 高性能服务异步通信逻辑
      • epoll 多路复用 I/O工作流程
      • 抓包分析 tcp 握手和挥手
    • 内核 (30)
      • [内核源码] 浅析 CFS 完全公平调度器工作原理
      • [内核源码] tcp 连接队列
      • [内核源码] Linux 网络数据接收流程(TCP)- NAPI
      • tcp + epoll 内核睡眠唤醒工作流程
      • 如何学习 Linux 内核源码
      • 搭建 Linux 内核网络调试环境(vscode + gdb + qemu)
      • [知乎回答] socket的任意event都会导致epoll_wait的惊群效应吗?
      • [知乎回答] Nginx为啥使用ET模式Epoll?
      • [知乎回答] poll/epoll函数中的各种event分别应该在什么时候监听并处理呢?
      • 探索惊群 ⑥ - nginx - reuseport
      • 探索惊群 ⑤ - nginx - NGX_EXCLUSIVE_EVENT
      • 探索惊群 ④ - nginx - accept_mutex
      • 探索惊群 ③ - nginx 惊群现象
      • 探索惊群 ② - accept
      • 探索惊群 ①
      • [内核源码] Linux 系统调用(x86_64)
      • [内核源码] 网络协议栈 - write (tcp) 发送数据
      • [内核源码] 网络协议栈 - tcp 三次握手状态
      • [内核源码] 网络协议栈 - connect (tcp)
      • [内核源码] 网络协议栈 - accept (tcp)
      • [内核源码] 网络协议栈 - listen (tcp)
      • [内核源码] 网络协议栈 - bind (tcp)
      • [内核源码] 网络协议栈 - socket (tcp)
      • [内核源码] list 链表
      • vscode + gdb 远程调试 linux 内核源码(附视频)
      • gdb 调试 Linux 内核网络源码(附视频)
      • 学习 Linux 内存分配
      • [内核源码] epoll lt / et 模式区别
      • [内核源码] epoll 实现原理
      • [内核源码] epoll 源码实现-预备知识
    • 协程 (11)
      • [知乎回答] 协程如何做到切换到另一个函数还能完成原函数的IO?
      • [libco] 删除协程的正确姿势
      • [libco] libco 定时器(时间轮)
      • [co_kimserver] libco mysql 连接池
      • [co_kimserver] co_kimserver 简介
      • [libco] 协程栈空间
      • [libco] libco 不干活也费 CPU
      • [libco] libco 工作流程
      • [libco] 协程调度
      • [libco] 协程切换理解思路
      • [libco] 协程库学习,测试连接 mysql
  • 时间归档
    • 2025 (2)
      • [network] 记一次网站网络流量优化
      • [内核源码] 浅析 CFS 完全公平调度器工作原理
    • 2024 (6)
      • [C++] 提高 C++ 项目编译速度的神兵利器
      • [C++] Google Authenticator 算法实现
      • [C++] 使用时间轮实现对象的操作频率限制
      • [随笔] 最好的编程语言
      • [技术] 回顾 2023 阅读的技术书籍
      • [算法] 一致性哈希算法
    • 2023 (13)
      • [数据库] sqlite3 模糊查找效率
      • [C++] 浅析 std::share_ptr 内部结构
      • [Redis] 浅析 Redis 并发模型
      • [C++] 深入探索 C++ 多态 ④ - 模板静态多态
      • [C++] 右值引用
      • 浅析 HTTPS TLS(ECDHE)协议的握手流程(图解)
      • [muduo] vscode + gdb 调试 muduo
      • [C++] 深入探索 C++ 多态 ③ - 虚析构
      • [C++] 深入探索 C++ 多态 ② - 继承关系
      • [转载] What is the VTT for a class
      • [stl 源码分析] 浅析 std::vector::emplace_back
      • [QT] 浅析信号与槽
      • [C++] C++ 有什么好用的线程池?
    • 2022 (7)
      • [C++] 深入探索 C++ 多态 ① - 虚函数调用链路
      • [C++] 浅析 C++11 移动语义
      • MacOS 安装使用 Docker
      • [stl 源码分析] std::sort
      • (ubuntu) vscode + gdb 调试 c++
      • 延时双删(redis-mysql)数据一致性思考
      • [内核源码] tcp 连接队列
    • 2021 (59)
      • [内核源码] Linux 网络数据接收流程(TCP)- NAPI
      • tcp + epoll 内核睡眠唤醒工作流程
      • 如何学习 Linux 内核源码
      • 搭建 Linux 内核网络调试环境(vscode + gdb + qemu)
      • [知乎回答] socket的任意event都会导致epoll_wait的惊群效应吗?
      • [知乎回答] Nginx为啥使用ET模式Epoll?
      • [知乎回答] epoll的EPOLLEXCLUSIVE真的能防住惊群吗?
      • [知乎回答] 协程如何做到切换到另一个函数还能完成原函数的IO?
      • [知乎回答] 程序员都是怎么记笔记的?
      • [知乎回答] 作为程序员的你,工作台是怎样的?
      • [知乎回答] 如何设计内存池?
      • [知乎回答] poll/epoll函数中的各种event分别应该在什么时候监听并处理呢?
      • [随笔] 敏捷开发
      • perf 常用方法
      • (Centos 7)GDB 调试 glibc(附视频)
      • ubuntu 20.4 常用软件安装
      • 探索惊群 ⑦ - 文件描述符透传
      • 探索惊群 ⑥ - nginx - reuseport
      • 探索惊群 ⑤ - nginx - NGX_EXCLUSIVE_EVENT
      • 探索惊群 ④ - nginx - accept_mutex
      • 探索惊群 ③ - nginx 惊群现象
      • 探索惊群 ② - accept
      • 探索惊群 ①
      • [内核源码] Linux 系统调用(x86_64)
      • [内核源码] 网络协议栈 - write (tcp) 发送数据
      • [内核源码] 网络协议栈 - tcp 三次握手状态
      • rsync 传输文件
      • 信号
      • 简单的 http 通信校验(golang)
      • [内核源码] 网络协议栈 - connect (tcp)
      • [内核源码] 网络协议栈 - accept (tcp)
      • [内核源码] 网络协议栈 - listen (tcp)
      • [内核源码] 网络协议栈 - bind (tcp)
      • [内核源码] 网络协议栈 - socket (tcp)
      • 字节序转换关系
      • [内核源码] list 链表
      • 即时通讯方案
      • gdb 调试 nginx(附视频)
      • vscode + gdb 远程调试 linux 内核源码(附视频)
      • gdb 调试 Linux 内核网络源码(附视频)
      • 重温网络基础
      • 我的阅读书单
      • [stl 源码分析] std::vector::push_back 内存扩充
      • 学习 Linux 内存分配
      • [stl 源码分析] std::list::size 时间复杂度
      • 基于 stl map 的定时器(C++)
      • 剖析 stl + glibc “内存泄漏” 原因
      • [libco] 删除协程的正确姿势
      • [libco] libco 定时器(时间轮)
      • [co_kimserver] libco mysql 连接池
      • [co_kimserver] co_kimserver 简介
      • [数据库] mysql 常用命令配置
      • [hiredis 源码走读] redis pipeline
      • [libco] 协程栈空间
      • 深入理解 epoll 回调用户数据
      • Centos7 常用软件安装
      • [redis 源码走读] maxclients 最大连接数限制
      • [libco] libco 不干活也费 CPU
      • MacOS 通过虚拟机(Virtual Function)安装 Centos7
    • 2020 (95)
      • [libco] libco 工作流程
      • [libco] 协程调度
      • [libco] 协程切换理解思路
      • x86_64 函数运行时栈帧内存布局
      • 常用汇编知识
      • [redis 源码走读] 域名解析 - getaddrinfo
      • [libco] 协程库学习,测试连接 mysql
      • [kimserver] 统计负载信息
      • [kimserver] 配置文件 config.json
      • [kimserver] zookeeper-client-c 接入流程思考
      • tmux 常用快捷键
      • 物联网数据通信 mqtt - mosquitto
      • 计算两个集合差集(C++)
      • protobuf / json 数据转换(C++)
      • [kimserver] 分布式系统 - 一致性哈希算法
      • vscode 一键(快捷键)执行脚本命令
      • [kimserver] 分布式系统 - 节点发现
      • [kimserver] 父子进程传输文件描述符
      • [kimserver] 分布式系统-多进程框架节点通信
      • [C++] 理解 C++ 多线程条件变量 pthread_cond_wait 使用
      • LLDB 使用
      • zookeeper-client-c 异步/同步工作方式
      • 安装 ZooKeeper
      • c++ 分割字符串函数
      • [redis 源码走读] sentinel 哨兵 - 通知第三方
      • [redis 源码走读] redis 与 raft 算法
      • [redis 源码走读] sentinel 哨兵 - 故障转移
      • [redis 源码走读] sentinel 哨兵 - 选举投票
      • 智慧农场解决方案
      • [kimserver] libev + hiredis redis 异步连接池
      • trello - 化零为整
      • [kimserver] C++ 异步非阻塞 Mysql 连接池
      • cryptopp 加密库使用
      • [hiredis 源码走读] 异步回调机制剖析
      • gettimeofday 获取本地时间
      • jemalloc 性能测试
      • Linux 软件性能分析--火焰图 🔥
      • 简单说说 golang 的主要优点
      • HTTP 状态码
      • [redis 源码走读] sentinel 哨兵 - 主客观下线
      • [redis 源码走读] sentinel 哨兵 - 节点链接流程
      • 高性能服务异步通信逻辑
      • [内核源码] epoll lt / et 模式区别
      • [redis 源码走读] sentinel 哨兵 - 原理
      • [数据库] 自动代码工具 - 分析 mysql 脚本(*.sql)生成 C++ 源码
      • [redis 源码走读] 主从数据复制 ②
      • redis 为啥这么快
      • libev 源码理解方式
      • [即时通讯] 分布式系统-用户在线状态管理
      • [redis 源码走读] 主从数据复制 ①
      • Collection
      • Macbook Pro 副屏 - Gobigger 4k 便携屏使用体验
      • [redis 源码走读] 异步通信流程-单线程
      • 程序工作流程(Linux)
      • [内核源码] epoll 实现原理
      • [内核源码] epoll 源码实现-预备知识
      • gcc/make/Makefile 源码编译
      • epoll 多路复用 I/O工作流程
      • [redis 源码走读] 多线程通信 I/O
      • 抓包分析 tcp 握手和挥手
      • strncpy 安全吗?
      • [redis 源码走读] 事件 - 文件事件
      • [redis 源码走读] 事件 - 定时器
      • redis 持久化方式 - aof 和 rdb 区别
      • [redis 源码走读] aof 持久化 ①
      • [redis 源码走读] aof 持久化 ②
      • 商品秒杀问题的思考
      • [redis 源码走读] rdb 持久化 - 文件结构
      • [redis 源码走读] rdb 持久化 - 应用场景
      • Linux 文件目录权限
      • (研发)十年工作总结 - 平凡之路
      • 算法 lru c++ 实现
      • [多线程] 剖析嵌套式死锁问题
      • [redis 源码走读] maxmemory 数据淘汰策略
      • printf 问题的思考
      • [redis 源码走读] redis 过期策略
      • 程序变量内存分布(Linux)
      • github + jekyll 搭建博客
      • 反汇编查看宏函数/函数调用原理
      • nginx 地址对齐(ngx_align_ptr)
      • [redis 源码走读] 对象(redisObject)
      • [redis 源码走读] 整数集合(inset)
      • [redis 源码走读] 跳跃表(skiplist)
      • 用 Mac 第一次剪辑视频
      • [redis 源码走读] 压缩列表(ziplist)
      • [redis 源码走读] 链表
      • [nginx 源码走读] 内存池
      • [redis 源码走读] zmalloc
      • [redis 源码走读] 字符串(sds)
      • Linux 下实现 itoa 转二进制
      • 付费自习室
      • [redis 源码走读] 字典(dict)
      • [shell] ssh 快捷登录
      • 用 gdb 调试 redis
      • fork 进程测试 copy-on-write
    • 2019 (18)
      • [redis 源码走读] sentinel 哨兵 - 脑裂处理方案
      • 早睡早起
      • [算法导论] 堆排序
      • [算法导论] 归并排序
      • [算法导论] 快速排序
      • tmux 返回前一个 panel 快捷键
      • redis 学习的思考
      • MacBook Pro 2019 13寸 体验
      • [即时通讯] 千人群组-消息管理
      • vim c++ 代码自动格式化配置
      • [数据库] mysql 数据库创建,删除,导入,导出数据 shell 脚本
      • [shell] sed 插入多行文本
      • golang & viper config & zookeeper
      • [即时通讯] 视高企业协同办公系统
      • Git 常用命令场景
      • [shell] shell 常用语法
      • Linux 常用命令
      • GDB 使用
    • 2018 (8)
      • “黑科技”(ipad + termius + 100 元的蓝牙键盘)
      • 压测 redis 消息队列(golang)
      • 类型强制转换异常跟踪
      • hiredis + libev 异步测试
      • Siege HTTP 压力测试
      • c++ 语言基础知识
      • stl 基础知识
      • c 语言基础知识
    • 2017 (3)
      • Centos7 vim 编码环境 (C++/golang)
      • ccache 优化 C++ 编译速度
      • C++ 日志宏定义
    • 2016 (1)
      • 文件服务器架构逻辑
  • 我的链接
    • Github
    • Processon
    • Bilibili

Contact me at:

粤ICP备20011260号

文章目录

微信赞赏支持

微信赞赏

关注我们

微信公众号,干货持续更新~

微信公众号 微信公众号