acl 3.1.2 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整个 acl 项目主要包含三个函数库:lib_acl(纯C开发的基础库,主要包含网络通信及服务器编程框架以及其它丰富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信协议的C语言实现)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 两个C库,提供了更为强大的编程接口及丰富的功能类);本次 acl 升级的主要内容有:修复了 acl redis 库中几处 BUG,增加了对 redis cluster 管理命令的支持;对 redis 客户端库提供了英文注释;提供了用于创建与维护 redis 集群的工具 redis_builder;增加了针对集群消息队列 disque 的支持;通用连接池模块功能的完善。
acl 包括以下丰富的常用函数库:
1、常见网络应用库: SMTP 客户端库/PING 库/memcache 客户端库/handlersocket 客户端库/beanstalk 客户端库/redis 客户端库/disque 客户端库
2、HTTP 网络库:HTTP 客户端/服务端库,C++版 HttpServlet 类,HTTP COOKIE/HTTP SESSION 等
3、邮件解析库:mime解析库/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
4、网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具备了 SSL 的能力)
5、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式及触发器模式
6、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
7、通用连接池库:高效的连接池基础类库,支持丰富的功能
8、数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富
9、xml/json 流式解析库:区别于网上其它已有的 xml/json 解析库,acl 中的 xml/json 解析库采用有限状态机方式解析数据,处理方式更为灵活
一、基础 C 库:lib_acl
.编译: acl_define_win32.h 中的 socklen_t 的定义原来使用宏定义 #define 方式,有时会因为有些版本的 VC 提供了此类型而导致编译报错,现在改为 typedef 定义方式
二、lib_protocol 库
.无
三、lib_acl_cpp 库
.新特性:redis_client_cluster 类支持静态初始化哈希槽与服务结点的对应关系,从而避免了运行时的重定向
.新特性:新增加类 redis_cluster,支持官方新公布的 CLUSTER 指令集
.新特性:增加了 redis_slot 类及 redis_node 类,方便对集群中的 redis 结点进行管理
.新特性:redis_cluster 类中的 cluster_nodes, cluster_slots, cluster_slaves, cluster_info 方法返回组织好的结果集
.新特性:connect_monitor 连接池自动检测类支持应用重载 IO 处理过程,从而可以面向更复杂的通信协议处理情况
.新特性:增加了分布式消息队列 disque 的客户端库模块
.性能提升:HttpServletResponse::write 当采用 chunk 传输时由原来的多次调用系统 API write 方式改为只调用一次 writev,从而减少了系统调用次数
.问题修复:redis_command.cpp 中最后三个 get_strings 函数在取得 rr 下标时有误
.问题修复:redis_cluster 类中的 reset 方法与基类 redis_command 中的方法重名,造成了命名污染,现将 redis_cluster 中的所有方法都加了前缀 cluster_
.问题修复:acl::redis 类因为是虚继承了 redis_xxx 类,所以无法通过这些类的构造函数将参数传递给基类 redis_command 的构造函数,必须在 acl::redis 的构造函数中显示地将参数传递给基类 redis_command 的构造函数
.问题修复:redis_client::get_redis_string 当数据长度为 0 时会出现异常, 从而兼容 redis 是允许数据值为空串的情况
.问题修复:redis_command.cpp 中的 run 方法在处理服务器返回的 ASK 响应后应该向目标服务器先发送 ASKING 指令
.问题修复:redis_command 类中的方法 get_client_addr 当采用集群模式时不能取得当前所用连接的服务端地址
.问题修复:samples/connect_manager,异步检测对象应该是局部的,不应与 monitor 绑定在一起,增加了 check_async 回调类
.问题修复:类 aio_timer_callback 中的方法 set_time 中在给成员变量 present_ 赋值时,在 32 位系统下会造成计算结果值的整形溢出
四、示例
1、app/redis_tools/redis_builder:该工具用于创建与管理 redis 集群
2、lib_acl_cpp/samples/redis/redis_cluster:该例子于用测试 redis 中的 CLUSTER 命令集
五、参考链接:
download:http://sourceforge.net/projects/acl/
github:https://github.com/acl-dev/acl
技术博客:http://zsxxsz.iteye.com/
QQ 群:242722074
- 浏览: 450544 次
- 性别:
- 来自: 北京
最新评论
-
zsxxsz:
2202877 写道你好,请问一下acl库是否可以移植到arm ...
利用ACL开发并发网络服务器 -
taoshengyijiu20008:
非常不错啊
acl 服务器编程框架设计要点 -
lgqss:
最后的例子用了__thread,依然不能用在动态库中?
再谈线程局部变量 -
foxbryant88:
膜拜中~
我为什么要发明一个轮子? -
zsxxsz:
eryueniaobp 写道关于reset的使用,查看了 g ...
使用 acl 库编写高效的 C++ redis 客户端应用
相关推荐
含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-...
[confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] easymind-3.1.2.jar [confluence插件] ...
hive-jdbc-3.1.2-standalone适用于linux
https://arduino.esp8266.com/stable/package_esp8266com_index.json ... 下载在arduino下开发esp8266-3.1.2版本,下载时需要关闭防火墙 路径:C:\Users\lan\AppData\Local\Arduino15
apache-hive-3.1.2-bin.tar.gz, 下载自:https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/, 上传至CSDN备份,本资源下载后需要解压缩zip文件,才是原本的apache-hive-3.1.2-bin.tar.gz文件
标题中的"apache-hive-3.1.2-bin.tar.gz"表明这是一个Hive 3.1.2的二进制发行版,以tar.gz格式压缩。这种压缩包通常包含Hive的可执行文件、库文件、配置文件以及必要的脚本,用于在Linux或Unix环境中快速部署和运行...
jdbc连接hive所需的一个包 ( hive-jdbc-3.1.2.jar)
guava-27.0-jre.jar 编译的hive-exec-3.1.2.jar
Hive连接的jar包——hive-jdbc-3.1.2-standalone.jar,使用数据库连接软件连接数据仓库时需要使用相应的驱动器驱动,希望对大家有所帮助
标签中的"postgis-3.1.2"、"postgres"和"linux"表明这个压缩包适用于Linux操作系统,且主要用于PostgreSQL数据库与PostGIS 3.1.2版本的集成。"数据库"标签则提醒我们,这涉及到的是数据库管理和地理空间数据存储。 ...
- Spark-3.1.2-bin-hadoop2.7版本说明Spark与Hadoop 2.7兼容。Hadoop是另一个开源的大数据处理框架,主要负责数据存储(HDFS)和作业调度(YARN)。Spark可以与Hadoop生态系统无缝集成,利用HDFS作为数据源,并且...
赠送原API文档:metrics-core-3.1.2-javadoc.jar; 赠送源代码:metrics-core-3.1.2-sources.jar; 赠送Maven依赖信息文件:metrics-core-3.1.2.pom; 包含翻译后的API文档:metrics-core-3.1.2-javadoc-API文档-...
安装Yanagishima时,需要将"Hive-jdbc-uber-3.1.2.jar"配置到其类路径中,以便与Hive服务通信。同时,还需要配置Kerberos认证的相关参数,如principal和keytab文件的位置,以确保Yanagishima能够在安全模式下正常...
Spring 3.1.2.RELEASE是该框架的一个重要版本,虽然它已经相对较老,但仍然在某些项目中被广泛使用,尤其是那些无法立即升级到最新版本的系统。这个版本的发布在当时引入了许多改进和新特性,旨在提升性能、简化开发...
在eclipse中搭建hadoop环境,需要安装hadoop-eclipse-pulgin的插件,根据hadoop的版本对应jar包的版本,此为hadoop3.1.2版本的插件。
flink-sql-connector-hive-3.1.2_2.11-1.11.6.jar 已经解决guava冲突亲测可以
赠送原API文档:commons-compiler-3.1.2-javadoc.jar; 赠送源代码:commons-compiler-3.1.2-sources.jar; 赠送Maven依赖信息文件:commons-compiler-3.1.2.pom; 包含翻译后的API文档:commons-compiler-3.1.2-...
适用于Centos7.9的rsync 工具安装包 rsync-3.1.2-10.el7.x86_64.rpm