- 博客(27)
- 收藏
- 关注
原创 【Netty系列10】Netty源码探秘:核心机制解析
本文深入解析Netty框架的两大核心机制:EventLoop运行流程和ByteBuf池化分配。EventLoop采用单线程串行处理模式,通过任务队列、IO事件监听和任务执行的循环实现高效事件处理。ByteBuf池化分配通过分级内存块、引用计数和本地线程缓存实现零拷贝和内存复用,显著提升性能。文章结合源码剖析设计思想,揭示Netty如何通过事件循环调度与内存池化实现高并发与低GC开销的平衡,为构建高性能网络应用提供经典范本。
2025-12-11 18:38:58
849
原创 【Netty系列9】WebSocket协议与Netty支持
本文介绍了基于Netty的WebSocket实时聊天室实现。WebSocket通过单TCP连接实现全双工通信,相比HTTP减少了通信开销。Netty的WebSocketServerProtocolHandler简化了协议升级和连接管理。聊天室核心功能包括:1) HTTP升级WebSocket握手流程;2) 使用ChannelGroup管理连接和消息广播;3) 处理连接生命周期事件。
2025-12-02 18:12:07
979
原创 【Netty系列8】基于Netty的HTTP服务开发
异步事件驱动模型:Netty基于Reactor模式,通过事件循环组实现非阻塞I/O,支持高并发连接。管道处理器链:管道(pipeline)中的处理器顺序执行,每个处理特定任务(如解码、聚合、业务逻辑),提高代码模块化。资源管理:使用确保线程池优雅关闭,防止资源泄漏。性能优化:NIO通道和字节缓冲区(ByteBuf)减少了内存复制,提升吞吐量。
2025-11-28 11:49:43
365
原创 【Netty系列7】构建一个简易的命令行交互服务
本文介绍了基于Netty实现的文本命令服务端设计。核心采用LineBasedFrameDecoder解决TCP粘包拆包问题,配合String编解码器处理字符串转换。
2025-11-24 14:06:05
147
原创 【Netty系列6】Netty心跳机制与空闲检测
本文介绍了Netty框架中实现心跳检测和空闲连接管理的方法。首先阐述了心跳机制的必要性,包括防止资源浪费、检测连接失效和避免网络超时。然后详细说明了如何使用IdleStateHandler检测连接空闲状态,通过配置读/写空闲时间阈值来触发事件。最后演示了在userEventTriggered方法中处理空闲事件的实现逻辑,包括发送心跳包、跟踪失败次数和关闭无效连接。这种机制能有效维护网络连接的可靠性,建议根据业务需求调整空闲时间和失败阈值参数。
2025-11-22 20:35:31
35
原创 【Netty系列5】Netty编解码实战:自定义协议解析
本文介绍了在Netty框架中实现自定义协议的方法。首先设计了一个包含长度字段和消息体的简单协议格式,用于确保消息边界识别。然后详细讲解了如何通过LengthFieldBasedFrameDecoder解决TCP粘包拆包问题,并实现消息解码器将字节流转换为消息对象。同时展示了使用MessageToMessageEncoder实现编码器,将消息对象序列化为字节流。最后说明了如何将编解码器集成到Netty的管道中,形成完整的消息处理流程。文章提供了完整的代码示例,为开发高效可靠的网络通信系统提供了实用指导。
2025-11-21 16:42:03
29
原创 【Netty系列4】Netty ChannelHandler 详解:数据处理的核心
摘要: ChannelHandler是Netty网络通信的核心组件,作为ChannelPipeline中的处理器,负责处理网络数据的入站(Inbound)和出站(Outbound)事件。其生命周期方法如handlerAdded、channelRead和exceptionCaught等,分别在处理器添加、数据读取和异常捕获时触发。Inbound处理器按添加顺序正向处理入站数据(如解码、业务逻辑),而Outbound处理器反向处理出站数据(如编码、发送)。理解ChannelHandler的类型与执行顺序是核心。
2025-11-21 14:34:18
21
原创 【Netty系列3】第一个Netty应用:Echo服务实现与调试
本文展示了基于Netty框架实现的Echo服务,包含服务端和客户端的完整代码实现。
2025-11-20 18:25:18
266
原创 【Netty系列2】Netty ByteBuf:高效的数据容器
Netty的高性能网络框架核心组件ByteBuf相比传统Java NIO的ByteBuffer具有显著优势。它通过池化机制减少内存开销,引用计数实现精准资源管理,动态索引简化读写操作。ByteBuf包含Heap、Direct和Composite三种内存类型,支持高效数据处理。测试显示其吞吐量比ByteBuffer提升约40%,是构建高性能网络应用的关键。本文详细对比了两者差异,剖析了ByteBuf结构,并演示了基础读写和高级API操作。
2025-11-17 11:28:05
867
原创 【Netty系列1】Netty入门:核心组件与线程模型解析
本文概述Netty框架的核心架构,包括其关键组件及工作原理。首先介绍Netty的核心组件及其功能定位,然后通过图解方式展示基于Reactor模式的线程模型实现。最后简要说明ChannelPipeline和ChannelHandler构成的责任链机制,解析请求处理流程。全文聚焦Netty的三大核心特性,帮助读者快速理解其底层设计思想。
2025-11-07 18:55:00
874
原创 基础SQL语法总结
SQL(Structured Query Language), 结构化查询语言,标准SQL由ANSI标准委员会管理,从而成为ANSI SQL。主键的值不允许修改,不允许复用,也不能将已经删除的主键赋给新数据行的主键,这样做主要是避免数据混乱SQL语句不区分大小写,但是数据库表名、列名是否区分依赖于具体的DBMS以及配置。sql的注释方法有三种数据库的创建和使用。
2024-11-25 14:18:59
411
原创 sql索引学习总结
索引:辅助数据库高速查找到数据的数据结构。索引的本质是:数据结构。索引,维护一个查找树,每个节点包含索引键值,和一个指向数据物理地址的指针,这样就可以在一定复杂度内获取到对应的数据,从而快速检索出符合条件的记录。索引本身也很大,不可能全部存储在内存中,
2024-11-25 14:18:15
418
原创 sql数据库切分总结
在MySQL中,分区是一种数据库架构技术,它允许将单个表的数据分散存储在多个物理部分中,这些物理部分可以基于特定的规则存在于一个或多个磁盘上。分区可以提高查询性能,特别是在处理大型表时,并使得数据管理和维护变得更为简便。在MySQL中,您可以根据不同的键值将数据分配到不同的分区中,例如按照时间范围或按照某个特定的字段值。
2024-11-25 14:17:05
535
原创 sql性能优化学习总结
本文主要从mysql体系结构和架构优化等角度出发,通过连接配置优化、查询优化、存储引擎和字段优化、架构体系优化等手段,多环节多角度解决SQL性能优化。一般而言,查询优化、字段优化、缓存使用时优化的最佳手段。
2024-11-06 14:29:51
1032
原创 数据库存储引擎学习总结
前提:阅读完能回答以下问题1、InnoDb引擎和MyISAM引擎的区别?2、存储引擎的选择?3、存储引擎,介绍一下4、mysql的体系结构,简单回答下。
2024-10-31 18:21:01
952
原创 eclipse一些有用的技巧总结
1.启动Eclipse时选中“将此值用作缺省值并且不再询问”复选框,可通过如下方法进行恢复提示:Window—>General—>Startup and shutdown—>Workspaces,选中启动时提示工作空间复选框,点击apply。2.System.out.println()在编辑器中输入“syso”和按alt+/快捷键完成快速输入。System.out.println();只有在方法函数内才能使用快捷键syso输入。3.System.out.printn();输错了,可以
2020-09-11 21:59:51
431
原创 MQTT跨ip/跨机访问
这几天,遇到了需要用到MQTT的时候,而且还需具备跨iP/跨机的,百度了很久都没有解决问题,后来还是自己联想到rabbitmq管理页面的特点才解决的,这个特点就是:http://127.0.0.1:15672/ 页面对应的账户有个默认的是guest,但http://192.本机ip:15672/ 没有这个默认的账户,需要建非guest的账户。MQTT下载,到rabbitmq的官网,找到github源码,打包下载:https://www.rabbitmq.com/web-mqtt.html下载后找到p
2020-09-11 15:13:19
1659
原创 Eclipse报错:The import org.apache cannot be resolved
一开始,在maven仓库找到缺失的依赖代码放置到pom.xml下,但刚解决一个error,第二个error又出来了,后来自己想出了一个办法。自己的解决方法:1.找到tomcat\apache-tomcat-9.0.37\lib该路径2.右键点击项目名——>build path——>add External Archives to java build Path3.导入第1步路径下的所有tomcat包问题是解决了,但导的包有点多,算是一个粗暴的解决办法吧,如果有更好的解决办法欢迎交流指出
2020-09-09 20:13:45
4576
原创 Arcgis API For js 的离线部署
之前,因为所做的项目不大,一直用的都是在线的Arcgis API For js,后来意识到了搞开发,离线部署是必须要掌握的,在线资源属于不可控范畴,能够避免的尽量避免。所以有了这次记录,以防以后忘记。如果有不对的地方,欢迎指出交流。Arcgis API For js 的离线部署一、下载Arcgis API For js二、部署IIStomcat三、访问一、下载Arcgis API For js官方下载网址(需要注册账号,注册提供邮箱即可无其他要求)https://developers.arcgis.
2020-09-09 15:56:18
884
转载 Eclipse启动失败,提示查看.metadata文件夹下的.log文件
Eclipse启动失败,提示查看.metadata文件夹下的.log文件附上一些网上通用解决方法,方便以后查找:尝试方法一:orkspace目录下的.metadata目录整个删除。结果:未成功。尝试方法二:打开Eclipse安装目录下的configuration目录,删除org.eclipse.update和org.eclipse.osgi这两个文件夹。结果:成功启动。...
2020-09-08 10:16:38
2626
1
原创 在普通maven项目应用中使用MQ
新人学习,本文从B站学习借鉴而来,链接:https://www.bilibili.com/video/BV14A411q7pF/?p=9本文会介绍maven项目创建,通过项目介绍简单模式Simple、工作模式Work、订阅模式Publish/Subscribe、路由模式Routing这四种常用的模式在普通maven项目应用中使用MQmaven项目创建步骤:1.简单模式1.1.消息生产者1.2.消息消费者2.工作模式2.1.消息生产者2.2.消息消费者12.3.消息消费者23.订阅模式3.1.消息.
2020-09-05 21:13:14
881
原创 rabbitmq消息发送与接收&stomp通道测试
新人学习笔记,有错欢迎交流指出~~发现问题:安装好Erlang、rabbitmq客户端后,启用插件rabbitmq-plugins enable rabbitmq_web_stomp后无法访问http://localhost:15674/stomp/info,在百度了许久后还是无法解决这个访问的问题,一度以为自己的stomp通道没有建立成功解决办法:后来,仔细研究了一下,通过stomp.html来访问获取队列中的消息,测试通讯功能,附上代码<!DOCTYPE HTML><.
2020-09-02 11:10:57
2042
2
原创 Eclipse 使用中一些好用的快捷键
Eclipse 使用中一些好用的快捷键在学习过程中记录一些方便的快捷键,以防忘记。标题格式化 :-Ctrl + Shift+ F(排版,使得代码变得更整齐)import导入:-添加类的import导入: Ctrl + Shift+ M-组织类的import导入: Ctrl + Shift+ O(后者既有Ctrl+Shift+M的作用,又可以帮你去除没用的导入,很有用)注释:-Ctrl + /(注释当前行,再按则取消注释)变量赋值:-Ctrl + 2,再按下 L connect
2020-09-01 21:04:43
162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅