cfan是开源的ANSI C实现的基础库。讲究代码整洁,性能和跨平台。 包括内存检测,内存分配池,日志记录,堆栈跟踪,字符串处理, 动态数组,哈希表,队列,单元测试,线程池,文件,流等(不断增长中)。 cfan在纯C基础上采用面向对象和模版编程技术。
使用fc_malloc/cf_realloc/cf_free等代替标准的内存管理函数,在Debug下可以进行内存泄露检测和内存溢出检测等。 调用void cf_Memory_dumpMem()函数将打印未释放的内存和分配时的文件行数。 另外提供了加速内存分配的内存池。
cf_Log_log(tag, level, msg, ...) 用来统一记录日志,其中tag参数是自定义的字符串,用来过滤日志。 调用int cf_Log_addListener(cf_Log_listener listener)可以添加一个自定义的日志监听器。 cf_Log_cfDebug记录的日志在非Debug模式下将被忽略。
程序崩溃时打印函数调用堆栈能快速定位Bug,内存泄露时打印调用堆栈能定位泄露点。 也许某些调试程序能在Debug模式下进行堆栈跟踪,但是不能方便在程序中获得,有些时候也经常会跟踪出错。 在这里我们手动跟踪了函数调用堆栈,在函数进入时调用CF_ENTRY_FUNC,返回时调用CF_EXIT_FUNC。 调用cf_FuncTrace_printStackTrace()打印调用堆栈,调用cf_FuncTrace_printPerformance()打印性能统计。
StrBuf是可以动态扩增的字符串缓冲,可以进行快速的字符串连接操作。 Str包含对标准库补充的字符串处理函数。
Array是动态数组容器,能通过索引快速访问。其中还实现了快速排序和二分查找算法。 HashMap是哈希表,提供K-V对的快速访问。采用模版编程技术,最大限度提高效率。 Queue是固定容量的先进先出队列实现。
Test是简单的单元测试框架。 使用前调用cf_Test_init()初始化,使用cf_Test_add(name)添加一个单元测试用例。 调用void cf_Test_run(const char *nameFilter, const int attrFilter)运行测试用例。
BlockingQueue是一个阻塞队列,当在队列满时增加会被阻塞,当在队列为空时提取会阻塞。 Executor是采用生产者消费者模式的线程池。
File是跨平台的文件和文件夹操作库。 Config用来读取简单的K=V配置文件。
Object是所有对象的基类。 Stream定义了一个多态的流对象。
好像不错的样子,下载过来学习学习。######~~有个自己的库多爽。######常写C程序,基本都有自己的库######类库?内裤! ######这个必须顶一下。######貌似淘宝也开源了他们内部用的一套库。######回复 @chunquedong : http://code.taobao.org/p/tb-common-utils/src/######叫什么名字,没搜到######没有内裤,不舒服的。。。谁用谁知道。哈。无非内裤比较难外穿,通常也无法外借。。。总会有体味残留,随便拿来穿,比较容易交叉感染。哈。######有些代码还是可以复用的。######精辟!######菜鸟码农,感觉没什么注释,看不太懂。。。######这已经是我写过比较有注释的代码了######谢谢分享######非常好!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。