zcelib - One cplusplus C++ crossplatform library use for develop server,similar to ACE.
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.的更多相关文章
- libserialport: cross-platform library for accessing serial ports
/*********************************************************************************** * libserialport ...
- 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 ...
- FGX Native library功能介绍
Hot news from the fields of the cross-platform library "FGX Native" development. New Engli ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- Awesome C/C++
Awesome C/C++ A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. In ...
- C/C++ 框架,类库,资源集合
很棒的 C/C++ 框架,类库,资源集合. Awesome C/C++ Standard Libraries Frameworks Artificial Intelligence Asynchrono ...
随机推荐
- [TypeStyle] Style CSS pseudo elements with TypeStyle
Just like pseudo-classes, pseudo-elements are added to selectors but instead of describing a special ...
- gdb查看线程堆栈信息
查看堆栈:gdb -quiet -batch -ex='thread apply all bt' -p pid查看运行位置:gdb -quiet -batch -ex='thread apply al ...
- Android图表和图形创建库:EazeGraph
EazeGraph是一个 Android 库用于创建漂亮和花哨的图表.它具有易于使用和高度可定制的特点.当前支持四种不同的图表如下: Chart types Bar Chart Stacked Bar ...
- 【u109】数字生成游戏(gen)
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 小明完成了这样一个数字生成游戏,对于一个不包含0的数字s来说,有以下3种生成新的数的规则: 1. 将s ...
- 选iphone5可以正常编译运行 , 但是5s和6和6s都会编译报错
选iphone5可以正常编译运行 但是5s和6和6s都会编译报错 iphone6编译报错iphone5s编译报错 解决办法是,Build settings里面把Architectures里面的$( ...
- BZOJ 3932 - 主席树
传送门 题目分析 在只打会主席树模板的情况下做了这道题,也算是深有体会. 首先任务可以差分:一个任务是(s, e, p), 则在s处+1, 在e+1处-1,符合前缀.但是我们要查询指定时间的前k任务之 ...
- NOIP模拟 Ball - log积化和
题目描述 Alice 与 Bob 在玩游戏.他们一共玩了 t 轮游戏.游戏中,他们分别获得了 n 个和 m 个小球.每个球上有一个分数.每个人的得分都为他所获得所有小球分数的乘积,分数小者获胜.问每轮 ...
- Shell脚本实现在Linux系统中自动安装JDK
A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在A上运行本脚本: 复制代码 代码如下: $ ...
- 自定义view布局过程详解
布局过程,就是程序在运行时利用布局文件的代码来计算出实际尺寸的过程. 布局分为两个阶段:测量阶段和布局阶段. 测量阶段:从上到下递归地调用每个 View 或者 ViewGroup 的 measure( ...
- hbase 配置高可用hmaster
1.先停掉hbase bin/stop-hbase.sh 2.在hbase的conf目录下创建 backup-masters 添加hadoop003 3.分发 4.重新启动hbase并查看 bin/s ...