
源码分析|底层原理
文章平均质量分 85
源码分析或底层原理
xianghan收藏册
从专注于Java方向的高级架构师,转变为AI大模型技术专家。目前从事智能驾驶领域。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
11-网络架构和Netty系列-深入Netty通讯框架知识
项目,该项目是一个通用的工具类项目,几乎被所有的其它项目依赖使用,它提供了一些数据类型处理工具类,并发编程以及多线程的扩展,计数器等等通用的工具类。 项目,该项目下是 Netty 自行实现的一个 Byte Buffer 字节缓冲区。该包的实现相对于 JDK 自带的 ByteBuffer 有很多优点:无论是 API 的功能,使用体验,性能都要更加优秀。它提供了**一系列( 多种 )**的抽象定义以及实现,以满足不同场景下的需要。该项是核心项目,实现了 Netty 架构图中 Transport Services原创 2022-07-13 08:08:55 · 252 阅读 · 0 评论 -
10-网络架构和Netty系列-Netty通讯框架关键技术知识点原理
Netty 基于 Selector 对象实现 I/O 多路复用,通过 Selector 一个线程可以监听多个连接的 Channel 事件。当向一个 Selector 中注册 Channel 后,Selector 内部的机制就可以自动不断地查询(Select) 这些注册的 Channel 是否有已就绪的 I/O 事件(例如可读,可写,网络连接完成等),这样程序就可以很简单地使用一个线程高效地管理多个 Channel 。NioEventLoop 中维护了一个线程和任务队列,支持异步提交执行任务,线程启动时会调用原创 2022-07-12 08:02:42 · 169 阅读 · 0 评论 -
9-网络架构和Netty系列-Netty通讯调用请求生命周期
在使用Netty进行网络编程的时候,通常需要在网络连接的不同阶段进行相应的操作,比如在连接建立时,客户端向服务端发起认证,在接收到数据时对数据内容进行解析等等。那么,连接的不同阶段在netty中如何表示呢? 这便是本文讨论的内容,Netty中ChannelHandller的生命周期。首先我们先分析小网络连接的生命周期,连接建立 —> 数据交互 —> 连接断开,在数据交互阶段,包括从连接中读取数据和向连接中写入数据。知道了连接的生命周期,就可以按图索骥的在各个阶段进行想要的操作。而在Netty中,网络连接的不原创 2022-07-12 08:00:15 · 406 阅读 · 0 评论 -
8-网络架构和Netty系列-ServerBootstrap运行过程
服务端从启动到新连接的改变过程(1)EventLoopGroup:无论是服务端还是客户端,都必须指定EventLoopGroup。在上面的代码中,指定了NioEventLoopGroup,表示一个NIO的EventLoopGroup,不过服务端需要指定两个EventLoopGroup,一个是bossGroup,用于处理客户端的连接请求;另一个是workerGroup,用于处理与各个客户端连接的I/O操作。(2)指定Channel的类型。这里是服务端,所以使用了NioServerSocketChannel。(原创 2022-07-07 08:25:24 · 346 阅读 · 0 评论 -
7-网络架构和Netty系列-Bootstrap运行原理分析
(1)调用NioSocketChannel.newSocket(DEFAULT_SELECTOR_PROVIDER)打开一个新的JavaNioSocketChannel。(2)初始化AbstractChannel(Channel parent)对象并给属性赋值,具体赋值的属性如下。● id:每个Channel都会被分配一个唯一的id。● parent:属性值默认为null。● unsafe:通过调用newUnsafe()方法实例化一个Unsafe对象,它的类型是AbstractNioByteChannel.原创 2022-07-07 08:19:25 · 396 阅读 · 0 评论 -
6-网络架构和Netty系列-Bootstrap和Channel源码分析
参考源码AbstractBootstrapBootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。为父(接收者)和子(客户端)设置 EventLoopGroup。指定Channel的类型server端为NioServerSocketChannelclient端为NioSocketChann原创 2022-07-06 08:37:11 · 623 阅读 · 0 评论 -
5-网络架构和Netty系列-网络线程模型与核心概念
Netty 是典型的 Reactor 模型结构,关于 Reactor 的详尽阐释,可参考 POSA2 ,这里不做概念性的解释。而应用 Java NIO 构建 Reactor 模式,Doug Lea在 “Scalable IO in Java” 中给了很好的阐述。这里截取其 PPT 中经典的图例说明 Reactor 模式的典型实现:Reactor 线程模型Reactor 是反应堆的意思,Reactor 模型是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。服务端程序处理传入多路请求,并将原创 2022-07-06 08:32:35 · 142 阅读 · 0 评论 -
4-网络架构和Netty系列-Netty通讯框架总体架构设计
Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients.Netty 功能特性如下:Netty 功能特性如下:通常,我们设计一个事件处理模型的程序有两种思路:以 GUI 的逻辑处理为例,说明两种逻辑的不同:事件驱动模型主要包括 4 个基本组件:可以看出,相对传统轮询模式原创 2022-07-06 08:28:59 · 224 阅读 · 0 评论 -
1-网络架构和Netty系列-网络模型
完成一次网络通信,大致要经过以下5个步骤。(1)客户端产生数据,存放于客户端应用的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存。(2)客户端操作系统收到数据后,按照客户端应用指定的规则(即协议),调用网卡并发送数据。(3)网络传输数据。(4)服务端应用调用系统接口,想要将数据从操作系统内存拷贝到自己的内存中。(5)服务端操作系统收到指令后,使用与客户端相同的规则(即协议)从网卡读取数据,然后拷贝给服务端应用。左侧:TCP/IP五层或TCP/IP四层右侧:从不同维度分为OSI七层每层运行的常原创 2022-06-27 23:22:42 · 678 阅读 · 0 评论 -
深度分析Dubbo SPI源码,扩展Dubbo Validation (groups)
深度分析Dubbo SPI源码,扩展Dubbo Validation (groups),定义自己的异常处理。原创 2021-12-01 22:26:33 · 2472 阅读 · 0 评论 -
快速搞定tomcat8.5源码构建
项目源码构建下载源码git clone https://gitee.com/mirrors/tomcat.gitcd tomcat# 切换分支# git checkout -b "tomcat7.0" origin/7.0.xgit checkout -b "tomcat8.5" origin/8.5.x导入到IDEA中添加pom文件添加pom.xml到项目根目录<?xml version="1.0" encoding="utf-8"?><project xmlns原创 2020-12-09 11:37:17 · 307 阅读 · 1 评论