zcelib - One cplusplus C++ crossplatform library use for develop server,similar to ACE.
OS适配层,为了适应WINDOWS和LINUX两个环境的代码增加的一层,同时都有一些扩展,基本可以替代ACE了。这部分其实用不少有趣的代码,主要思路是在Windows下模拟Posix的代码。让我的代码可以在Windows下直接调试。这部分代码都是以 zce_os_adapt_XXX 开头命名的。代码都是在ZCE_LIB名字空间下,后面的函数名称和POSIX函数名称基本移植。。比较大块的功能包括,网络,时间,文件系统,GETOPT,C STRING的一些函数,线程,各种同步锁,共享内存的处理,进程和线程的监控。
LOG日志库和调试库,以及一些调试的宏的封装,用于记录日志,可以定义分割日志的方式等(大小,日期),日志可以定级输出,输出点包括文件,stdout,stderr,Windows下的TRACE, 调试库,提供完善的调试方法,VC在这方面很强,偷学了一些.调试还可以输出当前的堆栈信息等。早起的日志类其实是对ACE日志的封装,但自己的代码要独立成行的时候还是把原来的那个改造了拿出来用了。另外提供一个完全模版化的日志输出接口
TIME 时间和定时器,原来打算只用 timeval,结果发现Time在网络编程中无处不在,还是有一个自己的封装比较容易控制,结果就有了ZCE_Time_Value这个非常底层的类,他内部就是 timeval,好在他在Visual C++也有,在OS适配曾,就封装了各种系统的时间到timeval的转换,有了Time当然就要有定时器,我们的定时器是有2种封装,一种是比较常见的TimerHeap 定时器堆,一种是 TimerWheel 定时器时间轮,相对而言,TimerWheel具有更加强大的性能。
NET网络封装,包括网络函数,OO的封装包括网络地址,UDP,TCP的封装,包括阻塞和非阻塞的发送,接收接口。连接器Connector和接收器Acceptor。可以大大方便你的开发。(本来这部分完全是使用ACE的,但最后还是去掉了ACE的部分代码,所以还是被迫自己实现了一个网络层。)
Reactor反应器,包括select 的反应器,在Windows下和Linux下都可以使用,epoll的反应器,
Thread线程封装,线程包括OS层的封装,OO的封装包括线程对象,线程的管理器,
MMAP STL 一套在共享内存里面实用的STL(大部分接口类似,但实现还是完全不一样的。)对于MMAP STL的一些代码,我封装他们纯属无奈,其实我不认为使用MMAP有多大好处.我喜欢线程和普通内存,但是如果使用多进程的模型,而且要有一个持久存储时,你就必须用共享内存.而几乎所有的容器模板(包括ACE的)都使用了指针,而指针这种东西对于共享内存又是天敌.不过也好,可以通过写这些东西,彻底理解STL.(虽然我认定多线程的代码可以美丽优雅,决不逊色于多进程的各种模型,但是持久存储那是一堵墙),而持久存储也许是一个好看但并不太实用的东西,恢复现场可能会有无数的问题.小心。
MySQL接口封装,完整和方便是这个库最大的好处。我在2005年甚至封装了STMT.前卫把。封装接口和原生接口类似,原生API是还不错,但还是有很多细节没有屏蔽。OO封装分成connect,cmd,result几个部分封装,封装包装了重连,自动释放等功能。同时也有STMT的一组实用封装。但MySQL的STMT在多表的情况下实用并不方便,必须每个表保存一个STMT对象。(不如Oracle)所以原意实用的人不多。
SQLite
加解密
Hash算法
快速压缩算法
INI XML INI和XML配置文件读取,会将配置读取到一个配置树上,另外,还有一个和Win32的API类似INI文件的读写,(不过也就是因为想和他的API类似,把代码搞复杂了),这块代码估计是这儿最老的代码,原来里面还有我当年的工号,9527,这是你的终生编号.
iNotify 这个有一个简单的封装,甚至可以在Windows和Linux两个平台下使用。
MMAP 操作库,包括一些类似STL的模版,
SERVERKIT 服务器的工具类,目前提供了一个使用MMAP的状态统计类。
PIDFILE 防止服务器多次启动的PID文件类,很有意思,发现UNIX通信卷2也讲过这些东西。土呀,还是土呀。
RADOM 随机数的封装,这个代码其实和BOOST没有啥关系。是从GNU的数学课中慢慢扣出来的,而且我增加了一个薄薄的模板封装。从而让实用更加方便。
Lua接口的封装,
https://github.com/sailzeng/zcelib

zcelib - One cplusplus C++ crossplatform library use for develop server,similar to ACE.的更多相关文章

  1. libserialport: cross-platform library for accessing serial ports

    /*********************************************************************************** * libserialport ...

  2. IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;

    最近玩起IDEA这开发工具,搭建ssm框架测试时,部署项目出现如下问题: 信息: The APR based Apache Tomcat Native library which allows opt ...

  3. FGX Native library功能介绍

    Hot news from the fields of the cross-platform library "FGX Native" development. New Engli ...

  4. Troubleshooting 'library cache: mutex X' Waits.

    What is a 'library cache: mutex X' wait? The mutex feature is a mechanism to control access to in me ...

  5. How to distribute your own Android library through jCenter and Maven Central from Android Studio

    In Android Studio, if you wish to include any library to your application. You could just simply add ...

  6. Troubleshooting 'library cache: mutex X' Waits. (Doc ID 1357946.1)

    In this Document   Purpose   Troubleshooting Steps   What is a 'library cache: mutex X' wait?   What ...

  7. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path(Myeclipse添加Server Library)

    网上找练习的项目导入到myeclipse项目发现每个JSP 出现错误The superclass "javax.servlet.http.HttpServlet" was not ...

  8. Awesome C/C++

    Awesome C/C++ A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. In ...

  9. C/C++ 框架,类库,资源集合

    很棒的 C/C++ 框架,类库,资源集合. Awesome C/C++ Standard Libraries Frameworks Artificial Intelligence Asynchrono ...

随机推荐

  1. Latex表格制作记录

    Latex表格制作记录 主要功能 合并表格的行列 长表格的使用 makecell例程借鉴 效果图 参考代码 \documentclass{ctexart} \usepackage{indentfirs ...

  2. [PReact] Handle Simple Routing with preact-router

    Some applications only need a very minimal routing solution. This lesson will cover a practical exam ...

  3. [Angular2] Build reuseable template with ngTemplateOutlet

    We can build a template, use this template and pass in different context to make it reuseable: <t ...

  4. C#的Timer(很多相关文章)

    再C#里现在有3个Timer类: System.Windows.Forms.Timer System.Threading.Timer System.Timers.Timer 这三个Timer我想大家对 ...

  5. [Recompose] Set the HTML Tag of a Component via a Prop using Recompose

    Learn how to user the ‘componentFromProp’ helper and ‘defaultProps’ higher order component to swap t ...

  6. 9个完整android开源app项目

    一.photoup 介绍: photoup 是一款开源的相册类app,主要功能是将本地图片提交到facebook上去,虽然他的功能和facebook的远程服务相关,但是本身是可以被当作一款 相册应用的 ...

  7. [Node.js] Identify memory leaks with nodejs-dashboard

    In this lesson, I introduce a memory leak into our node.js application and show you how to identify ...

  8. WIN内核线程池函数

    线程池 (本章节中样例都是用 VS2010 编译调试的) 线程池编写必须在 Windows Vista 操作系统(以及以上版本号的操作系统)下,且 C++ 编译器版本号至少是 VS2008 线程池的功 ...

  9. Centos Apache和tomcat集成配置,同一时候支持PHP和JAVA执行

    近期因为项目的须要,须要再原来执行Tomcatserver上支持PHP执行.非常显然,PHP执行使用的是Apacheserver.尽管Tomcat也属于Apache,可是并没有现有的环境,须要我们自己 ...

  10. 【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希

    传送门 题目分析 题意即求有多少对字符串只相差一个字符,枚举删除每个字符后的哈希, 看有多少相等即可. 比如有如下字符串:$Sd123$,其中S部分的哈希值为H,删除的是d,则原字符串的哈希值为$$( ...