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

时间: 2024-10-16 22:12:00

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

JRE System Library [jdk1.7]和Server Library [Apache Tomcat v6.0]为绑定错误解决方案

今天在用Myeclipse8.6导入一个Java Web工程时,包错,通过单击导入的文件工程名,点击属性(properties),查看Java Build Path,有如下信息:JRE System Library [jdk1.7](unbound)和Server Library [ApacheTomcat v6.0](unbound) JRE System Library[jdk1.7](unbound)系统JRE未绑定解决方案 eclipse导入项目报错 :Unboundclasspath

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 optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;C:\Windows\Sun\Java\bin;C:\Windows

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 memory structures. It is used in a number of areas including the library cache. The library cache is a memory area that holds parsed cursor structures n

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 a following line of dependency in module's build.gradle file. 1 2 3 dependencies {     compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3

Troubleshooting 'library cache: mutex X' waits. (文档 ID 1357946.1)

In this Document   Purpose   Troubleshooting Steps   What is a 'library cache: mutex X' wait?   What causes 'library cache: mutex X' wait?   How to diagnose the cause.   How to Examine the Diagnostics.   Potential Solutions   References APPLIES TO: O

How I Wrote a Modern C++ Library in Rust

https://hsivonen.fi/modern-cpp-in-rust/ Since version 56, Firefox has had a new character encoding conversion library called encoding_rs. It is written in Rust and replaced the old C++ character encoding conversion library called uconv that dated fro

【干货】国外程序员整理的 C++ 资源大全【转】

来自 https://github.com/fffaraz/awesome-cpp A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff Standard Libraries C++ Standard Library - including STL Containers, STL Aglorithm, STL Functio

Awesome C/C++

GUI Graphic User Interface CEGUI - Flexible, cross-platform GUI library. FLTK - Fast, light, cross-platform C++ GUI toolkit. [GPL2] GacUI - GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVV

跨平台的系统信息获取python库 - psutil

想写一个REST API来获取OS的CPU,内存等系统信息,正准备苦哈哈的轮一个 /proc/stat 的parser,发现了psutil ~ 一个跨平台的获取系统信息的python库,支持linux,windows,osx,sunos, 可以说很好,很全面,很pythonic https://github.com/giampaolo/psutil 简介: psutil (python system and process utilities) is a cross-platform libra