去 GitHub(https://github.com/acl-dev/acl/releases) 上下载最新的版本.

ACL包括以下丰富的常用函数库:
1、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式、触发器模式以及协程模式
2、网络通信库:阻塞/非阻塞网络IO库(其中lib_cpp库通过嵌入Polarssl而具备了ssl通信能力)
3、HTTP网络库:HTTP客户端/服务端库,HTTP服务端支持HttpServlet接口访问方式;支持HTTPcookie/Session;HTTP客户端支持连接池及连接池集群;支持WebSocket
4、redis客户端库:实现了redis客户端命令中12个大类中的总共150多个命令,支持连接池及集群连接池方式
5、常见网络应用库:smtp客户端库/ping库/dns解析库/memcache客户端库/处理程序套接字客户端库/豆柄客户端库/disque客户端库
6、邮件解析库:MIME解析库/RFC 2047/RFC 2048/MIME base 64/MIME qp/MIME uucode等
7、事件引擎:支持选择、轮询(用于Unix)、EPOLL(用于Linux)、kQueue(用于bsd)、devpoll(用于Solaris)、IOCP(用于Win 32)、Win 32窗口消息(用于Win 32)事件引擎
8、通用连接池库:高效的连接池基础类库,支持丰富的功能
9、数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富,支持连接池及连接池集群管理功能
10、xml/json流式解析库:区别于网上其它已有的xml/json解析库,acl中的xml/json解析库采用有限状态机方式解析数据,处理方式更为灵活
11、网络协程库:该库将阻塞IO模式在底层通过上下文切换和事件触发方式转变为非阻塞模式,从而方便程序员快速编写高并发、高性能的网络服务
12、支持将C++struct对象序列化与反序列化(序列化为Json对象及由Json对象反序列化)

示例:
1、lib_acl/该目录下有大量的基于lib_acl C库的示例
2、库协议/示例:该目录下有大量的基于lib_protocol C库的示例
3、lib_acl_cpp/该目录下有大量的基于lib_acl_cpp C++库的示例
4、lib_纤维/样品:该目录下有大量的基于协程的网络客户端/服务端示例

应用:
1、应用程序/主程序:该目录为acl服务容器(Acl_Master)及常用工具
2、app/redis_tools:该目录下为redis集群管理、监控及智能创建工具
3、应用程序/向导:用来自动生成acl服务器框架的向导程序
4、应用程序/主调度:用于管理和分发客户端连接的服务程序
5、app/gid:用来产生全局唯一整型ID的服务程序及客户端库
6、应用程序/向导_演示:为一些服务器测试程序
7、app/gson:json序列化及反序列化代码生成工具

本次升级为大版本升级,主要有以下改进:
1、网络协程库功能更加丰富、更加稳定,具备应用于复杂业务场景的能力;
2、完全支持IPv 6、内部自动识别IPv 4/IPv 6环境并自动适配;
3、redis客户端库支持Redis5功能;
4、支持使用AndroidStudio 3.3.2。
此外,还包括大量的新功能特性及问题修复.具体内容如下:

一、基础C库:LIB_ACL
特征:acl_scan_di.c在扫描过程中为每个目录添加目录属性,以便于应用可以获得目录的访问时间等属性
特征:acl_scan_di.c中在扫描目录过程中,如果遇到出错情况则会继续扫描下一个,以免提前结束扫描
特征:acl_scan_di.c增加扫描过程中删除空目录功能,例子参照:scan_rmdir
特征:acl_udp_server.c增加配置项_来决定当无法绑定地址时,进程是否需要自动崩溃_on_BIND_ERR
.特征:acl_aio_server.c,acl_单机_server.c,acl_文件的大小,以及进程退出前可禁止产生_server.c,acl_文件的大小,以及进程退出前可禁止产生_server.c,acl_udp_server.c,acl_udp_server.c文件的大小,以及进程退出前可禁止产生核心文件
特征:acl_udp_server.c可以通过配置项master_reuseport决定是否需要绑定地址
特性:在绑定_BIND_UDP()域套接口时不再需要有@UDP后缀,内部会自动进行判断是否是UNIX域套接口
特征:新增函数acl_Socket_live用来检测所给套接字是否正常
.特征:当创建监听套接口时通过新增标志位acl_iet_来控制是否禁止地址复用,默认是允许地址复用_独占来控制是否禁止地址复用,默认是允许地址复用
特征:acl_cache2.c中acl_cache2_enter在添加新元素时,如果缓冲区满则按lru算法将最老的元素删除,以保证缓冲区空间大小
功能:网络通信及域名解析全面支持IPv 6!

.bugfix:acl_lines_server.c,在Client_Wakeup()中调用acl_access_时如果该函数返回0后再调用ctx->serv_时如果该函数返回()时会导致服务崩溃,原因是调用serv_后再调用中的参数顺序不对
.bugfix:acl_udp_server.c中server_binding绑定失败时不应放在事件监控中
.bugfix:acl_json_utio.c,acl_json_build()当数组成员为字符串类型时,应允许空串的存在
.bugfix:acl_udp_server.c,server_open()在打开多个流对象时未将数组索引递增,导致无法绑定多个地址
.bugfix:acl_inetconnect.c中acl_inc_CONNECT_EX函数不支持地址为域名
.bugfix:acl_host_port.c中不支持只有端口的解析方式
.bugfix:acl_cache2.c中acl_cache2_的过期时间添加有误
.bugfix:acl_ifcon.c中的acl_ifconf_Search修正几处地址匹配模式问题
.bugfix:acl_json_parse.c在分析json数据时,针对字符串对象,如果字符串值的开始部分为空格,则会被过滤掉,此问题已修复
.bugfix:acl_json_parse.c不能处理空数组的情况
.bugfix:ACL_WITH_WAY.c中使用Poll方法时,针对POLLHUP,POLLERR应直接返回正常,让写函数触发异常行为

二、基础网络协议库:LIB协议

三、c++库:Lib_acl_cpp
.特征:扫描_dir.cpp增加删除空目录功能
特性:线程::start()增加同步启动线程的控制参数;在异步创建线程时,如果创建者想通过线程::获得新线程的线程_id()获得新线程的线程ID号时,原来的方式还有等待过程导致1秒延迟返回,现在通过TBox方式可以“立即”获得线程ID号
特性:http_类以/http_Client为参数的构造方法中,增加控制参数_Flow_为参数的构造方法中,增加控制参数_Flow_FIX,决定当对象销毁时是否自动将Socket_Flow对象一起销毁
.特点:CONNECT_POWER支持放置非自己创建的连接对象,同时支持在PEEK连接时,仅从已有的连接中提取而不是创建新的连接
特性:CONNECT_Manager连接池管理器可以更好地支持协程的多线程模式,使用者仅需调用CONNECT_即可::BIND_TEAH(True)即可
.特点:redis_stream功能模块支持Redis5流功能
.增加_cpp任务_qlen()方便用户获得当前线程池任务队列中积压的任务数;增线程_池()方法用来获得lib_aclc库中的线程池句柄
.特点:redis_client,redis_client_在非集群模式下创建连接时自动选择db
.特性:WebSocket::Send_Frame_Data在被循环调用时需检查长度是否一致,且需要根据实际写入的帧长度设置掩码
.特点:SERVER_SOCKET构造方法分开多个,避免使用时产生歧义
.特点:master_udp增加proc_on_unbind虚方法,用于当套接口关闭前的回调
.特性:acl::String添加End_with方法
.特点:服务器_套接字类的构造函数中新增标志位OPEN_LOGO_用来控制创建监听套接口是否禁止地址复用,缺省是允许地址复用
.特性:acl::Socket_Flow增加Sock_type来判断Socket类型
.特征:添加sqite_CURSOR类,从而使db_sqite支持Sqlitite游标功能
特征:添加令牌树类,该类封装了C版的256叉匹配树算法
功能:tbox模板类允许传递空消息对象
.特性:acl::String支持更多与std::String之间的互相操作
.特征:acl::fstream增加文件锁方法
.特性:tbox类完全由C++模板类实现,不再依赖于C版中的消息队列,代码更简洁清晰
特性:线程_cond类中的等待方法参加参数锁定,内部会先判断该参数决定是否需要加锁
.特点:CONNECT_CONNER类增加三个虚方法:ON_CONNECT,ON_DENAL,ON_TIM
.特点:redis_client_增加新方法GET_Password/GET_Password
特性:CONNECT_Manager增加CHECK_IDELL用来检测并释放过期空闲连接

.bugfix:扫描_dir.cpp当扫描的节点为目录时给的路径有误
.bugfix:CONNECT_Manager::CHECK_IDELL()当Pools_Size为0时应该直接返回
.bugfix:WebSocket::Read_Frame_Data被循环调用时,掩码使用方式有误
.bugfix:WebSocketServlet.cpp中有多个成员变量未初始化
.bugfix:master_aio/master_lines在添加server_Socket时,应该加锁
.bugfix:master_udp::service_on_bind被多线程同时调用时,需要对成员变量sstream_加锁保护
.bugfix:DB_mysql.cpp,如果在执行操作的时候,发现跟mysql已经断开链接了,就会重连,万一在连接时间内都没有重连成功,就会释放掉mysql*指针,造成这个连接对象永不可用了。因为dbmysql::sane_mysql_query函数判断conn_为null就直接返回了
-杨HB
.bugfix:gson_helper.pp在处理空数组时有误
.bugfix:json序列化工具对Double/Float类型且值不带小数部分时的支持不够完善,通过在acl::json_node::is_类型且值不带小数部分时的支持不够完善,通过在增加针对整数的支持得以解决
.bugfix:acl::httpServlet当会话对象内部创建时,需在析构函数里将其释放,否则会造成内存泄露
.bugfix:acl::线程对象被创建时,默认采用非分离状态,以便于和操作系统的行为相近,原来采用的是分离状态
.bugfix:redis_key::renmenx返回值类型有误

四、网络协程库:LiB纤维
.特性:增加tcp_类用来预创建类用来预创建tcp连接及连接保持,减少tcp三次握手造成的时延影响
.特征:添加fif_cond.c可用于协程和线程之间的条件变量
特征:FERF_Event.c增加控制参数,可用于协程之间、线程之间及协程与线程之间的互斥
.特性:光纤_server.c支持所生成核心文件的大小及进程退出时不产生核
.特征:增加纤维盒类,可以在协程之间、线程之间及协程与线程之间传递对象

.bugfix:acl_fif_cond.c中_fi纤_cond_timed候和acl_fif_cond_在释放fbase对象时,必须在调用_纤维事件_之前,否则会引起句柄被
提前关闭问题
.bugfix:acl_fiedcond.c中如果多个线程调用同一个条件变量的的_fiedcond_timedWait方法时,可能会存在超时值失效的情况
.bugfix:纤维_server.cpp当有连接未断开时,进程无法正常退出
.bugfix:fbase_中_如果遇到中断信号,应该需要重启_Wakeup/fbase_EventWakeup/fbase_Event_Wait IO如果遇到中断信号,应该需要重启IO过程
.bugfix:的方法_Event.c中需要用线程锁对等待队列_FERF_EVENT_NOTIFY中需要用线程锁对等待队列(事件->等待者)和原子数(事件->原子)进行保护,否则中间会有时间间隙,导致加锁等待者(调用ACL_FERF_EVENT_永久等待
.bugfix:FERF_Event.c修复锁竞争问题
.bugfix:FERF_Event.c中的锁存在几处锁竞争失效问题
.bugfix:Event_iocp.c中的IOCP_CHECK方法中的一处断言有问题--程序代码@sohu.com
.bugfix:getaddrinfo.c修复一处IPv 6相关问题
.bugfix:使用方法时,在初始化参数时不需要设置POLLERR,POLLHUP
.bugfix:acl_fif_gethostbyname在协程模式下是不安全的,会存在多个协程共用一个线程局部变量的问题,从而导致内存解析失败,解决方式是使用协程局部变量

ACL跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架相关推荐

  1. acl 服务器编程框架特点介绍

    2019独角兽企业重金招聘Python工程师标准>>> acl 中服务器框架模块是一个非常重要的模块,使用该模块技术人员可以快速地写出稳定.安全.高效的网络服务应用,该模块主要来源于 ...

  2. mac可以写linux的进程,macOS系统上读写Linux的ext4分区方法

    macOS系统上读写Linux的ext4分区方法 很多时候需要在macOS上操作Linux的ext4分区,然后macOS系统默认并不支持ext4等分区格式.今天给大家介绍的方法是如何在macOS上,使 ...

  3. 基于VS2019 C++的跨平台(Linux)开发(2.1)——网络基础

    一.引言 首先,来聊聊我们现实中的QQ聊天,如下图所示,两个客户端分别表示聊天的两方,那么可能有人会想为什么中间多了个腾讯公司的服务器呢?因为我们的QQ软件是从腾讯公司下载下来的,它其实起到了中转站的 ...

  4. linux高性能服务器编程书本总结

    目录 目录分析 第一篇从 1-4章节主要是介绍 计算机网络基础知识和 TCP/IP模型 第二篇 核心篇 5 章到 15 章节 5-6章节 主要介绍 套接字编程API的使用和介绍 7章 是linux 服 ...

  5. python制作词典软件_AlphaDict: 它是一个轻量级的开放词典格式的开源词典软件,你可以制作自己的词典, 也是一个跨平台的软件支持 linux, unix and windows....

    关于 "阿尔法词典" =============== 版本号: 1.4.1 作者: 李力琼 (joni lee) 网站: prajna.top 它是一个轻量级的开放词典格式的开源 ...

  6. 钉钉桌面版(dingtalk)介绍:支持Linux、Windows和macOS平台

    钉钉桌面版(dingtalk)介绍:支持Linux.Windows和macOS平台 钉钉桌面版(dingtalk),它基于electron及钉钉网页版开发的跨平台桌面版钉钉,支持Linux.Windo ...

  7. Sublime Text 2 - 程序员必备神器!跨平台支持Win/Mac/Linux

    代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大.灵活的编辑器,相信你和我一样,都不会例外. 我用过 ...

  8. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux

    原文:http://www.iplaysoft.com/sublimetext.html 代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一 ...

  9. Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮、代码补全等...

    Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等-- 语法高亮.代码提示补全. ...

最新文章

  1. 微信jsapi支付获取code_微信支付(公众号支付JSAPI)
  2. 阅读源码技术与艺术五
  3. 3种用python代码实现99乘法表
  4. 什么是闭合GOP和开放GOP?
  5. python数字类型及运算_Python类型和运算--数字
  6. 通过一个简单的例子,了解如何单步调试 Cypress 代码
  7. 5错误怎么办_“选择不对,一生白费”:如果选错了,该怎么办?记住这两句话...
  8. 这个AI狠!能互译C++、Java和Python,以后只学一种编程就行吗
  9. 禅道的安装与简单使用
  10. MySQL复制以及调优
  11. php自定义按钮,vue实现自定义按钮的方法介绍(附代码)
  12. 大战设计模式【10】—— 外观模式
  13. TIBCO Spotfire 入门指南
  14. 什么是BS,BS和CS的区别有哪些:
  15. 【树莓派】使用USB摄像头拍照
  16. lsb算法 matlab隐藏图片算法,数字图像加密算法之空域LSB
  17. 简述一代、二代、三代测序技术在应用上的区别
  18. MTCNN 人脸检测论文解读,及tensorflow代码实现
  19. 软件民工的幸福生活3
  20. VR全景图在家装行业的应用及发展

热门文章

  1. 月薪3000她是如何买房买车 原因竟是。。。。
  2. 如何撰写项目的解决方案
  3. 车联网2022上半年“十四五”规划大盘点
  4. Java编写五线谱上的音符_干货| 认识五线谱上的音符!
  5. 万字解读区块链游戏行业:洞察游戏的未来
  6. 如何获取网页上的LOGO
  7. Throwing OutOfMemoryError “pthread_create (1040KB stack) failed: Try again“
  8. 黎明杀机因为计算机丢失,黎明杀机丢失存档怎么办 黎明杀机丢失存档解决办法介绍-游侠网...
  9. 贪吃蛇java设计代码下载_java贪吃蛇游戏源代码
  10. 解决树莓4B motion 卡顿