首页 文章 精选 留言 我的

精选列表

搜索[网络框架],共10010篇文章
优秀的个人博客,低调大师

高性能网络通信框架 HP-Socket v5.8.4

项目主页:http://www.oschina.net/p/hp-socket 开发文档: https://www.docin.com/p-2704901774.html 下载地址: https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 v5.8.4 更新 一、主要更新 增加全局函数:SYS_Calloc()、SYS_Alloca() TCP 系列组件增加接口方法:SetNoDelay()、IsNoDelay() 问题修复:mimalloc 在 NDK 平台下触发 segment fault 段错误 二、第三方库更新 mimalloc 升级到 1.7.2 版本 llhttp 升级到 6.0.4 版本 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件

优秀的个人博客,低调大师

高性能网络通信框架 HP-Socket v5.8.3

项目主页:http://www.oschina.net/p/hp-socket 开发文档: https://www.docin.com/p-2571462318.html 下载地址: https://github.com/ldcsaa/HP-Socket v5.8.3 更新 一、Bug Fix 某些通信组件在 ARM32 平台下触发 segment fault 段错误 Linux 平台的 UDP Client 通信组件在某些特殊场景下触发 segment fault 段错误 ARQ UDP 组件发送数据时可能发生死锁 二、第三方库更新 mimalloc 升级到 1.7.1 版本 llhttp 升级到 6.0.2 版本 OpenSSL 升级到 1.1.1k 版本 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件

优秀的个人博客,低调大师

Gutty 0.14.9 发布,基于 Guice 和 Netty 的网络服务框架

一直很喜欢 Netty 和 Guice,简单好用,一直想自己动手来整合他们。 Gutty 大概用了一个月的时间来做,参考 Spring 中一些习惯, 通过扫描包完成路由,依赖,长链接配置, 或是自动给 Controller 传递值。 也预置了 模板,Redis 和 Mybatis 的便捷接入, 可以按 URI 来添加多个 Filter,后面还会继续的完善和添加便捷的功能。 功能列表和完成状况 短连接 * [√] Guice 和 Netty 整合 * [√] 启动时扫描包,为 @Controller 和 @Socket 的类配置路由 * [√] 自动绑定扫描到的 @Service 的类(普通的绑定 和 按名称绑定) * [√] @Post @Get @Delete @Put 的 httpMethod 支持 * [√] 通过 @Product 识别返回值是 Json 还是 模板,或是 Protobuf 或是 Binary * [√] 控制类下的方法参数传入,支持 @CookieParm @QueryParam @PathParam @FormParam * [√] Controller 识别 和输出 Json 请求 * [√] Controller 识别 Protobuf 请求 * [√] 可以通过 @FileParam 来上传文件 * [√] 支持模板,预置 Freemarker 和 Thymeleaf 的接入 * [√] 支持 @RequestAttribute,可以用来提供 Session 功能 * [√] 适配 uri 的 Filter 支持 Websocket * [√] 整合 Websocket,通过 @Socket 指定类接收长连接数据 * [√] Websocket 的路由通过类的 @Path 完成配置 * [√] 支持 @Open @Close @Message @TextMessage @BinaryMessage @Ping @Pong 完成不同数据包的传递 * [√] 长连接 WebsocketFrame 的值可自动传入到你的 socket handler * [√] 添加 protobuf, json 的自动编码,解码到变量 * [√] 适配 uri 的 Filter 支持 * [ ] 长连接的参数还需要补充和完善 包引入 <dependency> <groupId>com.doopp</groupId> <artifactId>gutty</artifactId> <version>0.14.9</version> </dependency> compile 'com.doopp:gutty:0.14.9' 启动 Gutty public static void main(String[] args) { new Gutty().loadProperties(args) // 加载配置文件 // 设定扫描的包路径 .setBasePackages("com.doopp.gutty.test") // Json 支持 .setMessageConverter(JacksonMessageConverter.class) // 模板支持 .setViewResolver(FreemarkerViewResolver.class) // 添加 Filter .addFilter("/api", ApiFilter.class) // 配置数据库,需要引入 guice-mybatis 包 .setMyBatis(HikariCPProvider.class, "com.doopp.gutty.test.dao", PageInterceptor.class) // 配置多个 redis .addModules( new RedisModule() { @Override protected void initialize() { bindJedisPoolConfigProvider(JedisPoolConfigProvider.class); bindSerializableHelper(JdkSerializableHelper.class); } @Singleton @Provides @Named("userRedis") public ShardedJedisHelper userRedis(JedisPoolConfig jedisPoolConfig, SerializableHelper serializableHelper, @Named("redis.user.servers") String userServers) { return new ShardedJedisHelper(userServers, jedisPoolConfig, serializableHelper); } @Singleton @Provides public ShardedJedisHelper testRedis(JedisPoolConfig jedisPoolConfig, SerializableHelper serializableHelper, @Named("redis.test.servers") String userServers) { return new ShardedJedisHelper(userServers, jedisPoolConfig, serializableHelper); } } ) // 完成 injector 配置后,执行里面的代码,多用于任务的执行 .addInjectorConsumer(injector->{ ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(8); newScheduledThreadPool.scheduleWithFixedDelay(injector.getInstance(AgarTask.class), 1000, 16, TimeUnit.MILLISECONDS); }) .start(); } Controller 类 @Path("/api") @Controller public class HelloController { private static final Logger logger = LoggerFactory.getLogger(HelloController.class); @Inject private HelloService helloService; @Inject private UserDao userDao; @Inject @Named("userRedis") private ShardedJedisHelper userRedis; @GET @Path("/redis/read") @Produces("application/json") public User readRedis() { User user = userRedis.get("user_redis".getBytes(), User.class); return user; } @GET @Path("/redis/write") @Produces("application/json") public User writeRedis() { User user = new User(); user.setId(System.currentTimeMillis()); userRedis.set("user_redis".getBytes(), user); return user; } @GET @Path("/template") public String template(ModelMap modelMap) { modelMap.addAttribute("hello", "hello freemarker !"); return "hello.template"; } @GET @Path("/hello") @Produces("application/json") public String hello(@CookieParam("user") String user) { return helloService.hello(); } @GET @Path("/users") @Produces("application/json") public List<User> users(@RequestAttribute("hello") String hello) { System.out.println(hello); return userDao.selectAll(); } @GET @Path("/hello/{id}/{name}") public String hello3(@PathParam("id") Integer id, @PathParam("name") String name) { logger.info("id {}", id); logger.info("name {}", name); return helloService.hello(); } @POST @Path("/hello") @Produces("application/json") public User hello2(@FormParam("liu") String liu) { logger.info("liu {}", liu); User user = new User(); user.setNickName(liu); return user; } @POST @Path("/json") @Produces("application/json") public User hello2(User user) { logger.info("user {}", user); return user; } @POST @Path("/upload") @Produces("application/json") public String upload(@FileParam(value = "file", path = "d:/tmp") File uploadFile) { logger.info("file {}", uploadFile); return "hello"; } } Service 类 // HelloService.java public interface HelloService { String hello(); } // HelloServiceImpl.java @Service public class HelloServiceImpl implements HelloService { @Override public String hello() { return "hello kunlun !"; } } Websocket 类 @Socket @Path("/ws/game") public class HelloSocket { private static final Logger logger = LoggerFactory.getLogger(HelloSocket.class); @Open public void onConnect(Channel channel) { channel.writeAndFlush(new TextWebSocketFrame("you connected")); } @TextMessage public void onTextMessage(Channel channel) { channel.writeAndFlush(new TextWebSocketFrame("hello")); } @TextMessage public void onJsonMessage(@JsonFrame User user) { logger.info("user {}", user.getNickName()); } @BinaryMessage public void onBinaryMessage(BinaryWebSocketFrame binaryWebSocketFrame) { logger.info("binaryFrame {}", binaryWebSocketFrame.content()); } @BinaryMessage public void onProtobufMessage(@ProtobufFrame User user) { logger.info("user {}", user); } //@Message //public void onMessage(WebSocketFrame webSocketFrame) { // logger.info("onMessage : {}", webSocketFrame.getClass()); //} @Ping public void onPing() { } @Pong public void onPong() { } @Close public void onClose() { } }

优秀的个人博客,低调大师

高性能网络通信框架 HP-Socket v5.8.1

项目主页:http://www.oschina.net/p/hp-socket 开发文档: https://www.docin.com/p-2571462318.html 下载地址: https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 v5.8.1 更新 一、第三方库更新 HTTP 解析器:llhttp 取代 http_parser 内存分配器:mimalloc 取代 jemalloc OpenSSL 升级到 1.1.1i 版本 二、其他更新 库公开头文件移到 include/hpsocket 目录 Windows目录结构调整:Common/Src 改为 Src/Common,Common/Lib 改为 Dependent HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件

优秀的个人博客,低调大师

高性能网络通信框架 HP-Socket v5.7.2

项目主页:http://www.oschina.net/p/hp-socket 开发文档: https://www.docin.com/p-2287339564.html 下载地址: https://github.com/ldcsaa/HP-Socket QQ Group: 44636872, 75375912 本次更新增加 UDP Node 组件,新增大量 API ! v5.7.2 更新 一、新增组件:UDP Node UDP Node 没有“连接”的概念,可以与任意地址相互收发数据 UDP Node 支持三种运行模式:单播、组播和广播 增加 UDP Node 组件示例 Demo ‘TestUDPNode’ UDP Node 工作流程 二、API 更新 所有组件增加 Wait() 方法,用于等待组件关闭 所有通信组件增加 SetReuseAddressPolicy() 方法,支持设置地址重用策略 所有 SSL 通信组件增加 SetSSLCipherList() 方法,支持设置 SSL 加密套件 大量 API 更新,代码重构、优化 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件

优秀的个人博客,低调大师

高性能网络通信框架 HP-Socket v5.6.1

本次更新主要对 SSL、HTTP 和 UDP 系列组件作了优化和调整! v5.6.1 更新 一、SSL 组件更新 所有 SSL 组件增加以下接口方法支持加载内存证书 1) Server:SetupSSLContextByMemory(), AddSSLContextByMemory() 2) Agent:SetupSSLContextByMemory() 3) Client:SetupSSLContextByMemory() 所有 SSL 组件增加 GetSSLSessionInfo() 方法,用来获取 SSL 会话相关信息 SSL Server 组件提供默认的 SNI 服务器域名绑定机制,大多数情形下应用程序不必自定义 SNI 回调函数 1) 当 SetupSSLContext() 的 'fnServerNameCallback' 参数值为 nullptr 则启用默认的服务器域名绑定机制 2) BindSSLServerName():绑定服务器域名到指定证书 3) HP_SSL_DefaultServerNameCallback():默认 SNI 回调函数 二、HTTP 组件更新 HTTP Server 组件的 SendWSMessage() 方法删除 lpszMask 参数 所有 HTTP 组件的 SendWSMessage() 方法的 pData 参数类型改为 const BYTE*,因此可以传入常量 所有 HTTP 组件添加 SendChunkData() 方法以方便地发送 Chunked 数据 三、UDP 组件更新 优化 Linux 平台的 UDP Cast 组件,使得其与 Windows 平台的 UDP Cast 组件保持行为一致 提升所有 UDP 组件的 IPv6 兼容性 UDP Client/Server 组件关闭时自动向对端发送“关闭通知”数据报 四、其他更新 jemalloc 升级到 5.2.1 版本 OpenSSL 升级到 1.1.1d 版本 代码优化,提高稳定性 HP-Socket 组件列表 基础组件 SSL 组件 HTTP 组件

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册