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 ...
随机推荐
- 【48.51%】【poj 1611】The Suspects
Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 34447 Accepted: 16711 Description Severe ...
- [AngularFire2] Build a Custom Node Backend Using Firebase Queue
In this lesson we are going to learn how to build a custom Node process for batch processing of Fire ...
- 线程之一:JAVA线程基础 分类: B1_JAVA 2013-10-10 12:48 662人阅读 评论(0) 收藏
参考core java,马士兵视频 1.线程的基本概念 (1)一个线程是一个程序内部的顺序控制流. (2)线程和进程 –每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大. –线程: ...
- css 翻牌 翻转 3d翻转 特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java NIO的基本概念与使用
public class TestBuffer { /** * 一. 缓冲区 (Buffer):Java Nio中负责数据的 存取+缓冲就是数组.用于存储不同类型的数据 * * 根据类型不同(bool ...
- c# 调用ArcEngine的GP工具
转自原文c# 调用ArcEngine的GP工具,AE调用GP工具 IAoInitialize m_AoInitialize = new AoInitializeClass(); esriLicense ...
- 跟我学AngularJs:Service、Factory、Provider依赖注入使用与差别
林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 本教程使用AngularJs版本号:1.5.3 AngularJ ...
- ajax跳转到新的jsp页面(局部刷新)
ajax可以实现局部刷新页面,即在不刷新整个页面的情况下更新页面的局部信息. 项目中遇到一个问题:在用户列表也,当点击某个按钮时需要去查询用户的信息,查询成功跳转到用户详情界面:查询失败,则在原页面弹 ...
- 【codeforces 768A】Oath of the Night's Watch
[题目链接]:http://codeforces.com/contest/768/problem/A [题意] 让你统计这样的数字x的个数; x要满足有严格比它小和严格比它大的数字; [题解] 排个序 ...
- Oracle数据库零散知识09 -- DBLink的创建(转)
通过创建database link实现Oracle跨数据库查询的方法 在Oracle本地数据库端执行赋权dbuser帐号 SQL> grant create database link to d ...