加入收藏 | 设为首页 |

我愿意-C 言语完成的跨渠道开发库 TBOX

海外新闻 时间: 浏览:299 次

TBOX概述

TBOX 是一个用 C 言语完成的跨渠道开发库。针对各我愿意-C 言语完成的跨渠道开发库 TBOX个渠道,封装了一致的接口,简化了各类开发进程中常用操作,使你在开发进程中,愈加重视实践运用的开发,而不是把时刻糟蹋在琐碎的接口兼容性上面,而且充沛运用了各个渠道独有的一些特性进行优化。这个项意图意图,是为了使 C 开发愈加的简略高效。而且供给微内核编译形式,针对嵌入式渠道进行优化,仅生成 64K 巨细的精简库。现在支撑的渠道有:

  • Windows
  • Macosx
  • Linux
  • Android
  • iOS

TBOX功用

流库

针对http、file、socket、data等流数据,完成一致接口进行读写,而且支撑: 堵塞、非堵塞、异步 三种读写形式。 支撑中心添加多层filter流进行流过滤,完成边读取,内部边进行解压、编码转化、加密等操作,极大的减少了内存运用。首要供给以下模块:

  • stream:通用非堵塞流,用于一般的独自io处理,一起支撑协程以完成异步传输。
  • transfer:流传输器,保护两路流的传输。
  • st9527atic_stream:针对静态数据buffer优化的静态流,用于轻量快速的数据解析。

协程库

  • 快速高效的协程切换支撑(详细功能参阅:基准测试报告)
  • 供给跨渠道支撑,中心切换算法参阅boost,而且对其进行重写和优化,现在支撑架构:x86, x86_64, arm, arm64
  • 供给channel协程间数据通信支撑,根据出产、顾客模型
  • 供给信号量、协程锁支撑
  • socket、stream都模块原生支撑协程,而且可在线程和协程间进行无缝切换
  • 供给http、file等根据协程的简略服务器实例,只需几百行代码,就能够从socket开端写个高功能io服务器,代码逻辑比异步回调形式愈加明晰
  • 供给stackfull和stackless两种协程形式支撑,接口相似,stackfull愈加灵敏易用, stackless愈加轻量高效

数据库

  • 一致并简化数据库操作接口,适配各种数据源,经过一致的url来主动衔接翻开支撑的数据库,数据的枚举选用迭代器模型。
  • 现在支撑sqlite3以及mysql两种联系型数据库,也可自定义扩展运用其他联系型数据库。

xml库

  • 针对xml供给DOM和SAX两种解析形式,SAX方法选用外部迭代形式,灵敏性和功能更高,而且能够挑选指定途径,进行解析。
  • 解析进程彻底根据stream,所以是高度流化的,能够完成边下载、边解压、边转码、边解析一条龙服务,运用较低的内存也能够解析大规模数据。
  • 供给xml writer以支撑对xml生成

内存库

  • 参阅linux内核内存办理机制的完成,并对其进行各种改造和优化,所完成的TBOX独有的一整套内存池办理架构。
  • 调试形式下,能够轻松检测并定位内存走漏、内存越界溢出、内存堆叠掩盖等常见内存问题,并对全体内存的运用进行了核算和扼要剖析。
  • 针对大块数据、小块数据、字符串数据进行了充沛的运用,避免了很多外部碎片和内部碎片的发生。分配操作进行了各种优化,96%的情况下,功率都是在O(1)。

容器库

  • 供给哈希、链表、数组、行列、仓库、最小最大堆等常用容器。
  • 支撑各种常用成员类型,在原有的容器期初上,其成员类型还能够彻底自定义扩展。
  • 一切容器都支撑迭代器操作。
  • 大部分容器都能够支撑根据stream的序列化和反序列化操作。

算法库

  • 供给各种排序算法:冒泡排序、堆排序、快速排序、插入排序。
  • 供给各种查找算法:线性遍历、二分法查找。
  • 供给各种遍历、删去、核算算法。
  • 以迭代器为接口,完成算法和容器的别离,相似stl,可是c完成的,愈加轻量。

网络库

  • 完成http客户端模块
  • 完成cookies
  • 完成dns解析与缓存
  • 完成ssl(支撑openssl, polarssl, mbedtls)
  • 支撑ipv4、ipv6
  • 支撑经过协程完成异步形式

数学运算库

  • 供给各种精度的定点运算支撑
  • 供给随机数生成器

libc库

  • libc的一个我愿意-C 言语完成的跨渠道开发库 TBOX轻量级完成,彻底跨渠道,而且针对不同架构进行了优化。
  • 支撑大部分字符串、宽字符串操作。
  • 扩展字符串、宽字符串的各种巨细写不灵敏操作接口
  • 扩展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等事情、互斥、信号量、自旋锁操作
  • 供给获取函数仓库信息的接口,便利调试和过错定位
  • 供给跨渠道动态库加载接口(假如体系支撑的话)
  • 供给io轮询器,针对epoll, poll, select, kqueue进我愿意-C 言语完成的跨渠道开发库 TBOX行跨渠道封装
  • 供给跨渠道上下文切换接口,首要用于协程完成,切换功率十分高

紧缩库

  • 支撑zlib/zlibraw/gzip的紧缩与解压(需求第三方zlib库支撑)。

字符编码库

  • 支撑utf8、utf16、gbk、gb2312、uc2、uc4 之间的相互转码,而且支撑巨细端格局。

实用东西库

  • 完成base64/32编解码
  • 完成crc32、adler32、md5、sha1等常用hash算法
  • 完成日志输出、断语等辅佐调试东西
  • 完成url编解码
  • 完成位操作相关接口,支撑各种数据格局的解析,能够对8bits、16bits、32bits、64bits、float、double以及恣意bits的字段进行解析操作,而且一起支撑大端、小端和本地端形式,并针对部分操作进行了优化,像static_stream、stream都有相关接口对其进行了封装,便利在流上进行快速数据解析。
  • 完成swap16、swap32、swap64等位交流操作,并针对各个渠道进行了优化。
  • 完成一些高档的位处理接口,例如:位0的快速核算、前导0和前导1的快速位计数、后导01的快速位计数
  • 完成单例模块,能够对静态目标、实例目标进行快速的单例封装,完成大局线程安全
  • 完成option模块,对命令行参数进行解析,供给快速便利的命令行选项树立和解析操作,关于写终端程序仍是很有协助的

正则表达式库

  • 支撑匹配和替换操作
  • 支撑大局、多行、巨细写不灵敏等形式
  • 运用pcre, pcre2和posix正则库