- Notifications
You must be signed in to change notification settings - Fork58
hujianzhe/util
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
设计原则:单一接口和模块尽可能做到绝对原子和功能分层设计,绝不做不属于它本身的事情(例如绝不把协程与io混为一个大模块,协程就是协程,io就是io).
util/ .gitignore用于git忽略一些无用文件 makefileunix系统编译动态链接库 lib_compile.shunix系统编译静态链接库脚本 CPP部分 cpp_inc/ astar基于格子和邻接点的A*寻路算法 coroutine_default_sche.h基于C++20的无栈协程调度器,nodejs风格 coroutine_helper.h基于C++20的无栈协程结构定义,nodejs风格 cpp_compiler_define判断编译器当前指定的CPP版本 heap_timer基于标准库堆结构实现的定时器 lexical_cast简陋但可用的通用类型转换接口 misc一些无法归类的,方便兼容C风格的 string_helper一些简陋的字符串分割和to_string方法 纯C部分 inc/ all自动include所有库内头文件 compiler_define根据编译器不同,给出统一的关键字,定一缺失类型,必须的预处理语句,频闭不需要的警告等 platform_define根据系统平台的不同,给出统一的关键字,定义缺失类型,必须的预处理语句,频闭不需要的警告等 component/ net_channel_rw基于下面的reactor模块提供TCP/UDP传输,并发的可靠UDP传输与监听 dataqueue用于线程间通信的消息队列 log用于日志读写,支持异步/同步写入文件,且内置日志轮替机制 memheap_mt基于共享内存的多进程/线程安全的内存管理 memref基于引用计数实现的内存强引用和观察者 reactorReactor模型的网络套接字库 rbtimer一个基于红黑树结构的定时器模块 stack_co_sche基于系统平台API实现的有栈协程调度器 switch_co_sche基于switch case语法的无栈协程调度器 crt/ protocol/ hiredis_cli_protocol基于hiredis代码的裁剪,只保留了客户端对RESP协议解析和构造部分 httpframe用于解析与组装HTTP协议报文 websocketframe用于解析与组装WebSocket协议报文(13版本) cXML用于解析XML dynarr模拟泛型的动态数组 json用于解析JSON,沿用cJSON的命名风格,内部采用和cJSON不同的实现方式 math一些实用的数学运算接口 datastruct/ arrheap最小堆,最大堆 base64提供base64编解码接口 bstree类型无关的二叉搜索树 hash提供一些常用的hash算法 hashtable类型无关的哈希表 lengthfieldframe用于解析与组装包含长度字段的协议报文 list类型无关的双向链表,顺带支持栈/队列的PUSH/POP操作 md5MD5编码生成 memfunc不涉及分配释放的内存与字符串操作函数 memheap简单内存堆分配与释放 random随机数算法,提供rand48与MT19937算法 rbtree类型无关的红黑树(内部基于linux内核红黑树代码) serial_exec任务串行执行队列结构 sha1SHA1编解码,来源于Redis源码 transport_ctx提供ACK确认与滑动窗口的传输控制接口,不包含OS对应的IO系统接口,并于标准库无关 tree类型无关的普通树 urlURL解析与编解码接口 sysapi/ aio提供统一AIO接口(基于iocp/io_uring) assert提供一个相对于assert的高级断言 atomic提供统一的原子操作接口 error提供统一的系统错误码接口 file提供统一的文件与目录操作接口 io_overlapped提供OVERLAPPED结构与接口,用于NIO/AIO ipc提供统一的OS锁接口 misc杂项接口 mmap提供统一的文件内存映射与共享内存接口 nio提供统一网络NIO接口(基于iocp/epoll/kevent,reactor模式) process提供统一的进程/线程/协程接口 socket提供统一的socket接口 statistics一些杂项统计接口 terminal提供终端控制台的操作接口 time提供统一的线程安全的时间接口