TBOX

一个用c语言实现的多平台开发库,支持windows、linux、mac、ios、android以及其他嵌入式系统。

针对各个平台,封装了统一的接口,简化了各类开发过程中常用操作,使你在开发过程中,更加关注实际应用的开发 而不是把时间浪费在琐碎的接口兼容性上面,并且对各个平台的特性和架构进行了针对性优化。常用特性如下:

  • 流库:针对http、file、socket、data等流数据,实现统一接口进行读写,并且支持 阻塞非阻塞异步 三种读写模式, 支持中间增加多层filter流进行流过滤, 实现边读取,内部边进行解压、编码转换、加密等操作,极大的减少了内存使用。 主要有非阻塞流:basic_stream, 有利用asio实现了整套纯异步回调的流:async_stream, 还有维护两路流传输的:transfer,以及多路流传输池:transfer_pool, 实现一个线程里面进行多路流的传输, 并且支持多个工作线程同时处理,来最大化工作效率。还有针对静态数据buffer优化的静态流static_stream, 用于轻量快速的数据解析。

  • asio异步io库:支持reactorproactor两种模型,针对不同平台,采用epoll/poll/select/kqueue/iocp接口,最大化异步操作的性能。并且对http、ssl、dns也提供了纯异步模式的实现。基于此库完全可以很方便的写出一个高性能的小型服务器。

  • 数据库:统一并简化数据库操作接口,适配各种数据源,通过统一的url来自动连接打开支持的数据库,数据的枚举采用迭代器模型,目前支持sqlite3以及mysql两种关系型数据库,也可自定义扩展使用其他关系型数据库。

  • 解析库:提供 位段 解析,可以很方便的解析各类二进制格式文件数据。提供各种xml解析模式,DOM解析和SAX解析,SAX方式采用外部迭代模式,灵活性和性能更高。并且支持xpath操作,可以选择指定路径,进行解析。支持json解析和生成。

  • 内存库:各种内存池模式的实现。可以轻松检测并定位内存泄露内存越界内存重叠等常见内存问题。并且针对字符串、小块数据、固定大小的数据 分配都做了优化,减少内存碎片。分配操作利用预测机制优化,90%的情况下,效率都是在O(1)。

  • 容器库:提供哈希、链表、数组、队列、堆栈、最小最大堆等常用容器, 支持不同元素类型。

  • 算法库:提供排序(冒泡、堆、快速、插入。。)和查找(线性、二分法),以迭代器为接口,实现算法和容器的分离,类似stl,但是c实现的,更加轻量。

  • 网络库:实现http、cookies、dns解析与缓存、ipv4、url的封装。

  • libc库:libc的一个轻量级实现,完全跨平台,并且针对不同架构进行了优化。

  • libm库:libm的一个轻量级实现,完全跨平台,并且针对不同架构进行了优化。

  • 序列化库:轻量级类apple的CoreFoundation库,支持object、dictionary、array、string、number、date、data等常用对象,并且可以方便扩展自定义对象的序列化,支持对xmljsonbinary以及apple的plist(xplist/bplist)格式序列化和反序列化。并且实现自有的binary序列化格式, 针对明文进行了简单的加密,在不影响性能的前提下,序列化后的大小比bplist节省30%,而且支持边读取边序列化,更加适合网络传输,bplist必须一次性读到内存才能解析。另外, 自定义的文件格式也是可以很方便的扩展到现有接口中去,并且实现自动探测注册进去的所有文件格式,进行智能解析。

  • 平台库:针对不同平台系统api的接口层兼容,提供:file、socket、thread、event、semaphore、mutex、atomic、time、timer 。。等常用api。

  • 压缩库:支持zlib/zlibraw/gzip的压缩与解压(利用zlib库), lz77、lzsw、rlc算法自有实现,压缩率不是很高,仅供参考。

  • 字符编码库:支持utf8、utf16、gbk、gb2312、uc2、uc4 之间的互相转码,并且支持大小端格式。

  • 实用工具库:提供base64/32编解码、crc32、md5、sha等hash算法、字符串处理、定点数运算、日志输出、断言、随机数生成