Recent Posts
-
2025-05-01
实现一个通用命令行组件
简介最近几天, 在 deepseek 的帮助下, 倒腾了一个通用的命令行组件. 它具有以下特点:1.易集成. 开发者只需要将2个源码集成到已有系统进行编译即可.2.易使用. 所有命令可联想, 可通过缩写输入命令.源代码仓库: https://github.com/switch-router-nat/cliii使用举例我们以注册3个命令的例子为例:CLI_COMMAND (test_show_instance_command) = { .path = "show instance", ...
-
2025-03-30
debian12 top -H 显示 CPU 利用率异常
问题环境现象环境: debian12 (kernel 6.1.0)现象: 运行一个多线程程序(测试程序见文末), 其中主线程空闲, 2个子线程繁忙, 使用 top -H 观察其各个线程的 CPU 利用率可见, 此刻限制的主线程的 CPU 利用率异常地高.原因分析top命令来自于procps-ng包, 它通过定时读取/proc/PID文件系统下内核暴露的 tick 数据, 计算 CPU 利用率.如果不使用-H选项, 则读取的就是整个进程(或者说线程组thread group)的占用近况, 此...
-
2025-03-27
dlmalloc 原理分析
简介dlmalloc 全称是 Doug Lea’s Malloc, 它是由 Doug Lea 开发的经典 memory allocator, 被广泛运用在其他开源软件或库, 如 VPP、SQLite、uClibc、RT-Thread 等.从实践上看, 它具有以下优点: 多线程无锁分配: 它通过线程本地存储(TLS)或私有堆(per-thread-heap)实现完全无锁分配. 元数据开销最小化: 它的元数据结构十分简洁, 额外开销甚少, 非常适合应用于资源受限环境. ...
-
2024-11-15
网络封锁与反封锁
前言近日, 俄罗斯政府将 discord 进行了网络封锁, 其国内用户不再能直接使用该软件, 除非使用科学上网软件或者将网络流量进行一些伪装.在搜集学习了一些相关资料后, 今天将一些读后所得记录于此, 以免以后忘掉.正文不同国家地区封锁的范围和策略并不相同。以我国为例, 除了国家层面大名鼎鼎的GFW外, 小到一些运营商或者校园网络都可能进行一些网络流量干扰或阻断.干扰的方式一般是对特定网络流量进行限制. 这些流量可能是以下条件的单独一项或者多项的组合:type1.访问特定目的IP地址typ...
-
2024-09-17
P2P游戏通信原理与STUN/TURN协议笔记
本文用于记录个人学习P2P游戏通信过程中的心得体会。两种网络拓扑 CS vs P2P网络游戏一般采用两种网路拓扑之一: CS(Client-Sever) 或 P2P(Peer-to-Peer)在采用 CS 网络拓扑的游戏中, 各个玩家客户端都是与中心服务器进行网络通信, 这类游戏的游戏逻辑处理和计算都在服务端, 典型的例子如 PUBG、LOL、DOTA2、CS2 等.而 P2P 网络拓扑的游戏则不一样, 各个玩家通常是与一名玩家(房主)建立网络连接, 再由房主进行网络流量中转和分发。这个过...