设为首页收藏本站

                      LUPA开源社区

                       找回密码
                       注册
                      文章 帖子 博客
                      LUPA开源社区 首页 业界资讯 软件追踪 查看内容

                      acl 3.5.0发布,跨平台网络通信与服务器开发框架

                      2019-3-10 10:51| 发布者: joejoe0332| 查看: 141| 评论: 0|原作者: oschina|来自: oschina

                      摘要: acl 包括以下丰富的常用函数库: 1、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式、触发器模式以及协程模式 2、网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具 ...

                      acl 包括以下丰富的常用函数库:
                      1、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式、触发器模式以及协程模式
                      2、网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具备了 SSL 通信能力)
                      3、HTTP 网络库:HTTP 客户端/服务端库,HTTP 服务端支持 HttpServlet 接口访问方式;支持 HTTP cookies/session;HTTP 客户端支持连接池及连接池集群;支持 Websocket
                      4、redis 客户端库:实现了 redis 客户端命令中 12 个大类中的总共 150 多个命令,支持连接池及集群连接池方式
                      5、常见网络应用库: SMTP 客户端库/PING 库/DNS 解析库/memcache 客户端库/handler socket 客户端库/beanstalk 客户端库/disque 客户端库
                      6、邮件解析库:mime解析库/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
                      7、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
                      8、通用连接池库:高效的连接池基础类库,支持丰富的功能
                      9、数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富,支持连接池及连接池集群管理功能
                      10、xml/json 流式解析库:区别于网上其它已有的 xml/json 解析库,acl 中的 xml/json 解析库采用有限状态机方式解析数据,处理方式更为灵活
                      11、网络协程库:该库将阻塞 IO 模式在底层通过上下文切换和事件触发方式转变为非阻塞模式,从而方便程序员快速编写高并发、高?#38405;?#30340;网络服务
                      12、支持将 C++ struct 对象序列化与反序列化(序列化为 Json 对象及由 Json 对象反序列化)

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

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

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

                      一、基础 C 库:lib_acl
                      .feature: acl_scan_dir.c 在扫描过程中为每个目录添加目录属性,以便于应用可以获得目录的访问时间等属性
                      .feature: acl_scan_dir.c 中在扫描目录过程中,如果遇到出错情况则会继续扫描下一个,以免提前结束扫描
                      .feature: acl_scan_dir.c 增?#30001;?#25551;过程中?#22659;?#31354;目录功能,例子参照:scan_rmdir
                      .feature: acl_udp_server.c 增加配置项 udp_fatal_on_bind_err 来决定当无法绑定地址时,进程是否需要自动崩溃
                      .feature: acl_aio_server.c, acl_single_server.c, acl_threads_server.c, acl_trigger_server.c, acl_udp_server.c 支持进程崩溃时所产生 core 文件的大小,以及进程退出前可禁?#20849;?#29983; core 文件
                      .feature: acl_udp_server.c 可以通过配置项 master_reuseport 决定是否需要绑定地址
                      .feature: acl_bind_udp() 在绑定 UNIX 域套接口时不再需要有 @udp 后缀,内部会自动进?#20449;?#26029;是否是 UNIX 域套接口
                      .feature: 新增函数 acl_socket_alive 用来检测所给套接字是否正常
                      .feature: 当创建监听套接口时通过新增标志位 ACL_INET_FLAG_EXCLUSIVE 来控制是否禁止地址复用,默认是允许地址复用
                      .feature: acl_cache2.c 中 acl_cache2_enter 在添?#26377;?#20803;素时,如果缓冲区满则按 LRU 算法将最老的元素?#22659;?#20197;保证缓冲区空间大小
                      .feature: 网络通信及域名解析全面支持 IPV6!

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

                      二、基础网络协议库:lib_protocol

                      三、c++ 库:lib_acl_cpp
                      .feature: scan_dir.cpp 增?#30001;境?#31354;目录功能
                      .feature: thread::start() 增加同步启动线程的控制参数;在异步创建线程时,如果创建者想通过 thread::thread_id() 获得新线程的线程 ID 号时,原来的方式还有等待过程导致 1 秒延迟返回,现在通过 tbox 方式可以"立即"获得线程 ID 号
                      .feature: http_request/http_client 类以 socket_stream 为参数的构造方法中,增加控制参数 stream_fixed,决定当对象销毁时是否自动将 socket_stream 对象一起销毁
                      .feature: connect_pool 支持放置非自己创建的连接对象,同时支持在 peek 连?#37038;保?#20165;从已有的连接中提取而不是创建新的连接
                      .feature: connect_manager 连接池管理器可以更好地支持协程的多线程模式,使用者仅需调用 connect_manager::bind_thread(true) 即可
                      .feature: redis_stream 功能模块支持 Redis5 stream 功能
                      .feature: master_thread.cpp 增加 task_qlen() 方便用户获得当前线程池任务队列中积压的任务数; 增 threads_pool() 方法用来获得 lib_acl C 库中的线程池句柄
                      .feature: redis_client, redis_client_pool 在非集群模式下创建连?#37038;?#33258;动选择db
                      .feature: websocket::send_frame_data 在被循环调用时需检查长度是否一致,且需要根据?#23548;?#20889;入的帧长度设置掩码
                      .feature: server_socket 构造方法分开多个,避免使用时产生歧义
                      .feature: master_udp 增加 proc_on_unbind 虚方法,用于当套接口关闭前的回调
                      .feature: acl::string 添加 end_with 方法
                      .feature: server_socket 类的构造函数中新增标志位 OPEN_FLAG_EXCLUSIVE 用来控制创建监听套接口是否禁止地址复用,缺省是允许地址复用
                      .feature: acl::socket_stream 增加 sock_type 来判断 socket 类型
                      .feature: 添加 sqlite_cursor 类,从而使 db_sqlite 支持 Sqlite 游标功能
                      .feature: 添加 token_tree 类,该类封装了 C 版的 256 叉匹配树算法
                      .feature: tbox 模板类允许传递空消息对象
                      .feature: acl::string 支持更多与 std::string 之间的互相操作
                      .feature: acl::fstream 增加文件锁方法
                      .feature: tbox 类完全由 C++ 模板类实现,不再依赖于 C 版中的消息队列,代码更简洁清晰
                      .feature: thread_cond 类中的 wait 方法参加参数 locked,内部会先判断该参数决定是否需要加锁
                      .feature: connect_monitor 类增加三个虚方法:on_connected, on_refused, on_timeout
                      .feature: redis_client_cluster 增?#26377;?#26041;法 get_password/get_passwords
                      .feature: connect_manager 增加 check_idle 用来检测并释放过期空闲连接

                      .bugfix: scan_dir.cpp 当扫描的节点为目录?#22791;?#30340;路径有误
                      .bugfix: connect_manager::check_idle() 当 pools_size 为 0 时应该直接返回
                      .bugfix: websocket::read_frame_data 被循环调用时,掩码使用方式有误
                      .bugfix: WebSocketServlet.cpp 中有多个成员变量未初始化
                      .bugfix: master_aio/master_threads 在添加 server_socket 时,应该加锁
                      .bugfix: master_udp::service_on_bind 被多线程同时调用时,需要对成员变量 sstream_ 加锁保护
                      .bugfix: db_mysql.cpp, 如果在执行操作的时候,发现跟mysql已经断开链接了,就会重连,万一在连?#37038;?#38388;内都没有重连成功,就会释放掉MYSQL*指针,造成这个连接对象永不可用了。因为dbmysql::sane_mysql_query函数判断conn_为null就直接返回了
                      --- young_hb
                      .bugfix: gson_helper.ipp 在处理空数组时有误
                      .bugfix: json 序列化工具对 double/float 类型且值不带小数部分时的支持?#36824;?#23436;善,通过在 acl::json_node::is_double 增加针对整数的支持得以解决
                      .bugfix: acl::HttpServlet 当 session 对象内?#30475;?#24314;时,需在析构函数里将其释放,否则会造成内存泄露
                      .bugfix: acl::thread 线程对象被创建时,默认采用非分离状态,以便于和操作系统的 API 行为相近,原来采用的是分离状态
                      .bugfix: redis_key::renamenx 返回值类型有误

                      四、网络协程库:lib_fiber
                      .feature: 增加 tcp_keeper 类用来预创建 TCP 连接及连接保持,减少 TCP 三次?#24080;?#36896;成的时延影响
                      .feature: 添加 fiber_cond.c 可用于协程和线程之间的条件变量
                      .feature: fiber_event.c 增加控制参数,可用于协程之间、线程之间及协程与线程之间的互斥
                      .feature: fiber_server.c 支持所生成 core 文件的大小及进程退出时不产生 core
                      .feature: 增加 fiber_tbox 类,可以在协程之间、线程之间及协程与线程之间传递对象

                      .bugfix: acl_fiber_cond.c 中 acl_fiber_cond_timedwait 和 acl_fiber_cond_wait 在释放 fbase 对象时,必须在调用 acl_fiber_event_wait 之前,否则会引起句柄被
                      提前关闭问题
                      .bugfix: acl_fiber_cond.c 中如果多个线程调用同一个条件变量的的 acl_fiber_cond_timedwait 方法时,可能会存在超时值失效的情况
                      .bugfix: fiber_server.cpp 当有连接未断开时,进程无法正常退出
                      .bugfix: fbase_event.c 中 fbase_event_wakeup/fbase_event_wait IO 如果遇到中断信号,应该需要重启 IO 过程
                      .bugfix: fiber_event.c 的方法 acl_fiber_event_notify 中需要用线程锁对等待队列(event->waiters)和原子数(event->atomic)进行保护,否则中间会有时间间隙,导?#24405;?#38145;等待者(调用acl_fiber_event_wait)永久等待
                      .bugfix: fiber_event.c 修复锁竞争问题
                      .bugfix: fiber_event.c 中的锁存在几处锁竞争失效问题
                      .bugfix: event_iocp.c 中的 iocp_check 方法中的一处断言有问题 -- [email protected]
                      .bugfix: getaddrinfo.c 修复一处 IPV6 相关问题
                      .bugfix: 使用 poll 方法时,在初始化参数时不需要设置 POLLERR, POLLHUP
                      .bugfix: acl_fiber_gethostbyname 在协程模式下是不安全的,会存在多个协程共用一个线程局部变量的问题,从而导致内存解析失败,解决方式是使用协程局部变量

                      软件下载链接:https://gitee.com/acl-dev/acl


                      酷毙

                      雷人

                      鲜花

                      鸡蛋

                      漂亮
                      • 快毕业了,没工作经验,
                        找份工作好难啊?
                        赶紧去人才芯片公司磨练吧!!

                      最新评论

                      关于LUPA|人才芯片工程|人才招聘|LUPA?#29616;?/a>|LUPA教育|LUPA开源社区 ( 浙B2-20090187  

                      返回顶部
                      双色球中奖图片