1. cmake 使用记录

    target_link_libraries 链接库顺序 target_link_libraries(test libA libB libC) # 链接顺序 libA <== libB <== libC 优先使用 libC

    2023/03/07 cmake, build

  2. 日常随笔

    评价一台服务器的硬件资源是否能承载10Gbps流量的dpi深度协议解析还原的能力

    2023/03/06 essay

  3. 线程池的应用与分析

    概述 线程池(Thread pool)是一种常用的线程管理模式,它可以在需要时重复使用已创建的线程,而不是创建新的线程,从而减少系统开销和提高程序性能。线程池是通过维护一组工作线程,将多个任务分配给这些工作线程来完成的。

    2023/03/02 design-pattern

  4. 汇编移位操作

    概述

    2023/03/02 assemble

  5. sha256 哈希算法分析

    概述

    2023/02/28 algorithm

  6. 分布式一致性算法

    2023/02/28 algorithm

  7. 高性能定时器时间轮设计与实现

    概述

    2023/02/26 algorithm

  8. linux 环境下性能分析、压测手段

    概述 在软件开发过程中,功能完成度是一方面,软件性能也是非常重要的一方面,为了测试软件性能或者特定环境下的软件性能表现,可以借助一些工具分析软件性能及构造特定环境。

    2023/02/23 perf, tools

  9. 从 hook 的角度来分析内存泄漏

    概述 内存由用户管理可能会导致很多问题,如访问空指针、访问野指针、内存越界访问、内存泄漏、重复释放。为什么会发生内存泄漏,本质上就是程序在堆上申请内存空间后,在使用完成后没有对应释放。在 C 语言中就是 malloc 后没有 free,C++ 中则是 new 后没有 delete, 但是 C++ 可以借助 RAII 机制(智能指针)自动释放申请的资源。那么如何检测程序中的内存泄漏呢?以下是几种常用手段。 代码走查,适用于代码查找范围小的情况 借助分析工具,如 valgrind 和 gcc 中的 sanitizer等 hook malloc/free 函数,实现自定义的 malloc/free 函数以统计内存申请释放情况

    2023/02/22 hook, memory

  10. linux 网卡名为什么从eth0变为诸如ens33命名

    概述 在早期的Linux系统中,网卡命名是通过udev(一个动态设备管理器)和内核的net kernel subsystem(网络内核子系统)自动分配的,命名规则是按照物理设备的顺序来命名的,比如eth0、eth1、eth2等。这种命名方式会出现问题,例如在插拔网卡或者系统升级后,顺序可能会改变,导致网卡的命名混乱,从而影响网络配置。

    2023/02/22 daily, QA