阅读更多

2顶
1踩

开源软件
acl 3.0.19 版本发布了。

项目主页:https://sourceforge.net/projects/acl/
技术文章主页:http://zsxxsz.iteye.com/

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 包括以下丰富的常用函数库:

  • 常见网络应用库: SMTP 客户端库/PING 库/memcache 客户端库/handlersocket 客户端库/beanstalk 客户端库
  • HTTP 网络库:HTTP 客户端/服务端库,C++版 HttpServlet 类,HTTP COOKIE/HTTP SESSION 等
  • 邮件解析库:mime解析库/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
  • 网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具备了 SSL 的能力)
  • 服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式及触发器模式
  • 事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
  • 通用连接池库:高效的连接池基础类库,支持丰富的功能
  • 数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富
  • xml/json 流式解析库:区别于网上其它已有的 xml/json 解析库,acl 中的 xml/json 解析库采用有限状态机方式解析数据,处理方式更为灵活

本次 acl 升级主要包含一些 BUG 修复及功能特性增加。

一、基础 C 库:lib_acl

  • 新特性:acl_scan_dir.c 增加了一些功能接口
  • 新特性:服务器框架 acl_master 支持非 root 用户身份运行
  • 性能优化:线程池库(acl_pthread_pool.c), worker_wait() 函数将空闲线程添加至线程池和从线程池中移除的操作放在 pthread_cond_timedwait 等待循环的外面,这样既可以减少添加/移除操作的次数,同时又可以使等待任务超时的线程迟早地退出
  • 删除:去掉了 acl_ioctl_app_main.c/acl_aio_app_main.c,将 acl_aio_app_main.c 功能分别合并至 acl_aio_server.c 中;将 acl_ioctl_server.c 的接口申明为过期,建议用户使用 acl_threads_server.c 中的功能接口
  • 问题修复:acl_vstream.c 中函数 acl_vstream_ftell 问题修复
  • 问题修复:acl_aqueue.c 异步线程消息队列支持无限等待方式
二、lib_protocol 库

  • 问题修复:http_hdr_req.c 中函数 http_hdr_req_cookies_parse 解析处理 cookie 时存在内存冲突
三、lib_acl_cpp 库

  • 新特性:文件类 fstream(fstream.cpp)增加了 ftell 方法,用来表示当前文件指针位置
  • 新特性:连接类 connect_client(connect_client.cpp)增加了设置/获取连接池对象的方法
  • 新特性:字符串类 string(string.cpp)增加了多个功能接口,方便对字符串的操作
  • 新特性:增加了目录扫描类 scan_dir(scan_dir.cpp),可以非常方便地对目录进行扫描等操作
  • 新特性:连接池管理类 connect_manager(connect_manager.cpp)增加了连接池故障自动恢复功能
  • 问题修复:异步处理服务器类 master_aio(master_aio.cpp)在析构函数中不应调用异步处理函数,否则会引起内存冲突
  • 问题修复:http 处理类 http_client(http_client.cpp) 构造函数中未对缓冲区 buf_ 初始化,当调用 reset 方法会造成内存冲突
参考链接:

技术博客:http://zsxxsz.iteye.com/
download:http://sourceforge.net/projects/acl/
svn:svn checkout svn://svn.code.sf.net/p/acl/code/trunk acl-code
github:https://github.com/zhengshuxin/acl

2
1
评论 共 2 条 请登录后发表评论
2 楼 zsxxsz 2014-06-30 22:09
jd2bs 写道
支持一下开源

这库跟ACE类似末?

不一样,虽然 acl 主要的核心也是网络通信及服务器框架,但 acl 更面向实际应用。
1 楼 jd2bs 2014-06-30 16:43
支持一下开源

这库跟ACE类似末?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Struts中禁止刷新Action重复添加数…

    往数据库里面插数据,在插入成功的页面刷新的话,他又会插入同样的数据。怎么让客户刷新这个页面就显示网页已过期啊。 Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理...

  • Struts2中防止表单重复提交的两种方式

    当用户提交了一个表单,此时,地址栏显示的是处理这个表单的Action的地址,若此时刷新,则会重新发送一次表单数据,即又进行了一次提交,若这个Action是用来处理用户注册的,那么重复提交会再一次向数据库中插入之前...

  • Strust2总结及在面试中的一些问题.

    Strust2总结及在面试中的一些问题.   转载:https://www.cnblogs.com/wang-meng/p/5701977.html 1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层)、...

  • Strust2总结

    1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层)、业务逻辑层、数据持久层。【其中WEB层会使用前端控制器模式】 MVC是一种思想,是一种模式,将软件分为 ...

  • 页面防止重复提交,在服务端使用struts令牌机制,前台分为jsp和extJs(其他js框架同理)

    1.strust1+ jsp ,在后台调转到添加界面的方法中设置super.saveToken(request);调转到添加界面后,填写表单信息,保存后,在保存方法中 if (!super.isTokenValid(request, true))  {  MessagePojo msg = new ...

  • Struts的防止重复提交

    用struts的保存新增信息:新增信息之后,转到展现页面,但是其实真实的路径还是新增的,而且刚才新增的信息还保存在缓存里面,当刷新的时候,还是会提交数据,就相当于再次新增一次信息。 在action里面可以这样...

  • 4.Strust2总结及在面试中的一些问题

    1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层)、业务逻辑层、数据持久层。【其中WEB层会使用前端控制器模式】 MVC是一种思想,是一种模式,将软件分为 ...

  • JSP

    JSP(Java Server Page)是由sun 公司倡导、许多公司参与而建立的动态网页技术标准。它在HTML代码中嵌入Java代码片段(Scriptlet)和JSP标签,构成了JSP网页。在接收到用户请求时,服务器会处理Java代码片段,然后生成...

  • JSP学习笔记

    1、基于Servlet MVC实现,代表框架:Spring MVC 2、基于Filter MVC实现,代表框架:Strust2 线程: step1:Servlet线程不安全,不要定义共享成员变量;因为Servlet是单例模式 step2:Strust2的Action类线程安全...

  • [Java面试四]Strust2总结及在面试中的一些问题.

    [Java面试四]Strust2总结及在面试中的一些问题. 1.JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层)、业务逻辑层、数据持久层。【其中WEB层会使用前端...

  • Jsp基础知识

    Jsp:Java Server Pages http://127.0.0.1:8080/weba/hello.html Tomcat执行过程: 浏览器通过http协议发送请求,以TCP协议作为底层,去tomcat的安装目录下找到webapps下的weba文件夹,再继续找到hello.html. ...

  • struts中防止重复提交的方法

              &...Struts的防止重复提交 ...1、strust1.2 用struts的保存新增信息:新增信息之后,转到展

  • strus2常用标签自己一点小小的应用1

     在strust2的标签库中,对日期处理的标签集成了第三方的插件。用起来很直观   但是在执行的时候必须这么做: 首先,要导入struts2的自己的风格单 <s:head/><!--表示把常用...

  • setting.xml文件,修改Maven仓库指向至阿里仓

    setting.xml文件,修改Maven仓库指向至阿里仓

  • 基于java的玉安农副产品销售系统的开题报告.docx

    基于java的玉安农副产品销售系统的开题报告

  • dev-c++ 6.3版本

    dev-c++ 6.3版本

  • 基于java的项目监管系统开题报告.docx

    基于java的项目监管系统开题报告

  • 基于springboot多彩吉安红色旅游网站源码数据库文档.zip

    基于springboot多彩吉安红色旅游网站源码数据库文档.zip

  • 毕业设计&课设_基于 AFLFast 改进能量分配策略的毕业设计项目,含 Mix Schedule策略设计及测试结果分析.zip

    毕业设计&课设_基于 AFLFast 改进能量分配策略的毕业设计项目,含 Mix Schedule策略设计及测试结果分析.zip

  • 基于springboot办公用品管理系统源码数据库文档.zip

    基于springboot办公用品管理系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics