多平臺開發庫:tbox_v1.4.7_rc1 發布!
TBOX 是一個用c語言實現的多平臺開發庫,支持 windows、linux、mac、ios、android 以及其他嵌入式系統。
針對各個平臺,封裝了統一的接口,簡化了各類開發過程中常用操作,使你在開發過程中,更加關注實際應用的開發,而不是把時間浪費在瑣碎的接口兼容性上面,并且充分利用了各個平臺獨有的一些特性進行優化。
- 在線文檔:https://github.com/waruqi/tbox/wiki/%E7%9B%AE%E5%BD%95
- 在線手冊:http://tboox.github.io/doc/tbox/html/index.html
- 在線源碼:https://github.com/waruqi/tbox
流庫
針對 http、file、socket、data 等流數據,實現統一接口進行讀寫,并且支持: 阻塞、非阻塞、異步三種讀寫模式。
支持中間增加多層 filter 流進行流過濾,實現邊讀取,內部邊進行解壓、編碼轉換、加密等操作,極大的減少了內存使用。
主要提供以下特性:
- stream:通用非阻塞流,用于一般的單獨 io 處理。
- async_stream: 利用 asio 實現的純異步流,基于回調模式,可同時處理大量并發 io。
- transfer: 傳輸器,維護兩路流的傳輸,對 async_stream 的使用進行更上層的封裝,用其可以很方便的實現下載、上傳、復制等 io 傳輸操作。
- transfer_pool: 傳輸池,基于 asio,維護大量并發的傳輸,可以用于實現爬蟲、批量下載等等。
- static_stream: 針對靜態數據 buffer 優化的靜態流,用于輕量快速的數據解析。
asio 庫
- 支持 reactor 和 proactor 兩種模型,針對不同平臺,采用 epoll/poll/select/kqueue/iocp 接口,最大化異步操作的性能。
- 并且對 http、ssl、dns 也提供了純異步模式的實現。基于此庫完全可以很方便的寫出一個高性能的小型服務器。
數據庫
- 統一并簡化數據庫操作接口,適配各種數據源,通過統一的 url 來自動連接打開支持的數據庫,數據的枚舉采用迭代器模型。
- 目前支持 sqlite3 以及 mysql 兩種關系型數據庫,也可自定義擴展使用其他關系型數據庫。
xml 庫
- 針對 xml 提供 DOM 和 SAX 兩種解析模式,SAX 方式采用外部迭代模式,靈活性和性能更高,并且可以選擇指定路徑,進行解析。
- 解析過程完全基于 stream,所以是高度流化的,可以實現邊下載、邊解壓、邊轉碼、邊解析一條龍服務,使用較低的內存也可以解析大規模數據。
- 提供 xml writer 以支持對 xml 生成
內存庫
- 參考 linux 內核內存管理機制的實現,并對其進行各種改造和優化,所實現的 TBOX 獨有的一整套內存池管理架構。
- 調試模式下,可以輕松檢測并定位內存泄露、內存越界溢出、內存重疊覆蓋等常見內存問題,并對整體內存的使用進行了統計和簡要分析。
- 針對大塊數據、小塊數據、字符串數據進行了充分的利用,避免了大量外部碎片和內部碎片的產生。分配操作進行了各種優化,96% 的情況下,效率都是在O(1)。
容器庫
- 提供哈希、鏈表、數組、隊列、堆棧、最小最大堆等常用容器。
- 支持各種常用成員類型,在原有的容器期初上,其成員類型還可以完全自定義擴展。
- 所有容器都支持迭代器操作。
- 大部分容器都可以支持基于 stream 的序列化和反序列化操作。
算法庫
- 提供各種排序算法:冒泡排序、堆排序、快速排序、插入排序。提供各種查找算法:線性遍歷、二分法搜索。
- 提供各種遍歷、刪除、統計算法。
- 以迭代器為接口,實現算法和容器的分離,類似 stl,但是c實現的,更加輕量。
- 網絡庫
- 實現 http、cookies、dns 解析與緩存、ipv4、url 的封裝。
數學運算庫
- 提供各種精度的定點運算支持
- 提供隨機數生成器
libc 庫
- libc 的一個輕量級實現,完全跨平臺,并且針對不同架構進行了優化。
- 支持大部分字符串、寬字符串操作。
- 擴展字符串、寬字符串的各種大小寫不敏感操作接口
- 擴展 memset_u16、memset_u32 等接口,并對其進行高度優化,尤其適合圖形渲染程序
libm 庫
- libm 的一個輕量級實現,完全跨平臺,并且針對不同架構進行了優化。
- 擴展部分常用接口,增加對 sqrt、log2 等常用函數的整數版本計算,進行高度優化,不涉及浮點運算,適合嵌入式環境使用。
object 庫
- 輕量級類 apple 的 CoreFoundation 庫,支持 object、dictionary、array、string、number、date、data 等常用對象,并且可以方便擴展自定義對象的序列化。
- 支持對 xml、json、binary 以及 apple 的 plist (xplist/bplist)格式序列化和反序列化。
- 并且實現自有的 binary 序列化格式, 針對明文進行了簡單的加密,在不影響性能的前提下,序列化后的大小比 bplist 節省 30%。
平臺庫
- 提供 file、directory、socket、thread、time 等常用系統接口
- 提供 atomic、atomic64 接口
- 提供高精度、低精度定時器
- 提供高性能的線程池操作
- 提供 event、mutex、semaphore、spinlock 等事件、互斥、信號量、自旋鎖操作
- 提供獲取函數堆棧信息的接口,方便調試和錯誤定位
- 提供跨平臺動態庫加載接口(如果系統支持的話)
壓縮庫
- 支持 zlib/zlibraw/gzip 的壓縮與解壓(需要第三方 zlib 庫支持)。
字符編碼庫
- 支持 utf8、utf16、gbk、gb2312、uc2、uc4 之間的互相轉碼,并且支持大小端格式。
實用工具庫
- 提供 base64/32 編解碼、crc32、md5、sha 等 hash 算法、日志輸出、斷言、url 編解碼
來自:http://news.cnblogs.com/n/502844/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!