上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页
摘要: SubPage 级别的内存分配: 通过之前的学习我们知道, 如果我们分配一个缓冲区大小远小于page, 则直接在一个page 上进行分配则会造成内存浪费, 所以需要将page 继续进行切分成多个子块进行分配, 子块分配的个数根据你要分配的缓冲区大小而定, 比如只需要分配1KB 的内存, 就会将一个p 阅读全文
posted @ 2019-08-05 17:48 吴振照 阅读(1086) 评论(4) 推荐(0) 编辑
摘要: Page 级别的内存分配: 之前我们介绍过, netty 内存分配的单位是chunk, 一个chunk 的大小是16MB, 实际上每个chunk, 都以双向链表的形式保存在一个chunkList 中, 而多个chunkList, 同样也是双向链表进行关联的, 大概结构如下所示: 在chunkList 阅读全文
posted @ 2019-08-02 18:30 吴振照 阅读(1305) 评论(0) 推荐(0) 编辑
摘要: 内存池的内存规格: 在前面的源码分析过程中,关于内存规格大小我们应该还有些印象。其实在Netty 内存池中主要设置了四种规格大小的内存:tiny 是指0-512Byte 之间的规格大小,small 是指512Byte-8KB 之间的规格大小,normal 是指8KB-16MB 之间的规格大小,hug 阅读全文
posted @ 2019-08-02 12:33 吴振照 阅读(2543) 评论(0) 推荐(0) 编辑
摘要: ByteBufAllocator 内存管理器: Netty 中内存分配有一个最顶层的抽象就是ByteBufAllocator,负责分配所有ByteBuf 类型的内存。功能其实不是很多,主要有以下几个重要的API: 到这里有些小伙伴可能会有疑问,以上API 中为什么没有前面提到的8 中类型的内存分配A 阅读全文
posted @ 2019-08-02 12:31 吴振照 阅读(3926) 评论(0) 推荐(1) 编辑
摘要: 初识ByteBuf: ByteBuf 是Netty 整个结构里面最为底层的模块,主要负责把数据从底层IO 里面读到ByteBuf,然后传递给应用程序,应用程序处理完成之后再把数据封装成ByteBuf 写回到IO。所以,ByteBuf 是直接与底层打交道的一层抽象。这块内容,相对于Netty 其他模块 阅读全文
posted @ 2019-07-23 14:08 吴振照 阅读(1613) 评论(0) 推荐(0) 编辑
摘要: Pipeline 设计原理 Channel 与ChannelPipeline: 相信大家都已经知道,在Netty 中每个Channel 都有且仅有一个ChannelPipeline 与之对应,它们的组成关系如下: 通过上图我们可以看到, 一个Channel 包含了一个ChannelPipeline 阅读全文
posted @ 2019-07-21 16:17 吴振照 阅读(6585) 评论(0) 推荐(4) 编辑
摘要: EventLoopGroup 与Reactor: 前面的章节中我们已经知道了,一个Netty 程序启动时,至少要指定一个EventLoopGroup(如果使用到的是NIO,通常是指NioEventLoopGroup),那么,这个NioEventLoopGroup 在Netty 中到底扮演着什么角色呢 阅读全文
posted @ 2019-07-21 14:45 吴振照 阅读(2897) 评论(0) 推荐(0) 编辑
摘要: 客户端BootStrap: Bootstrap 是Netty 提供的一个便利的工厂类, 我们可以通过它来完成Netty 的客户端或服务器端的Netty 初始化。下面我先来看一个例子, 从客户端和服务器端分别分析一下Netty 的程序是如何启动的。首先,让我们从客户端的代码片段开始: EventLoo 阅读全文
posted @ 2019-07-19 21:57 吴振照 阅读(1800) 评论(0) 推荐(1) 编辑
摘要: 传统RPC 调用性能差的三宗罪 网络传输方式问题:传统的RPC 框架或者基于RMI 等方式的远程服务(过程)调用采用了同步阻塞IO,当客户端的并发压力或者网络时延增大之后,同步阻塞IO 会由于频繁的wait 导致IO 线程经常性的阻塞,由于线程无法高效的工作,IO 处理能力自然下降。下面,我们通过B 阅读全文
posted @ 2019-07-17 18:43 吴振照 阅读(3740) 评论(0) 推荐(1) 编辑
摘要: 下面的这张图,大概很多小伙伴都见到过,这是Dubbo 官网中的一张图描述了项目架构的演进过程。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时,只需一个应用,将所有 阅读全文
posted @ 2019-07-17 14:13 吴振照 阅读(775) 评论(0) 推荐(1) 编辑
摘要: Netty是什么: 异步事件驱动框架,用于快速开发高i性能服务端和客户端 封装了JDK底层BIO和NIO模型,提供高度可用的API 自带编码解码器解决拆包粘包问题,用户只用关心业务逻辑 精心设计的Reactor线程模型支持高并发海量连接 自带协议栈,无需用户关心 Netty 是一款提供异步的、事件驱 阅读全文
posted @ 2019-07-15 18:31 吴振照 阅读(1448) 评论(2) 推荐(1) 编辑
摘要: 同步阻塞IO(BIO): 我们熟知的Socket编程就是BIO,每个请求对应一个线程去处理。一个socket连接一个处理线程(这个线程负责这个Socket连接的一系列数据传输操作)。阻塞的原因在于:操作系统允许的线程数量是有限的,多个socket申请与服务端建立连接时,服务端不能提供相应数量的处理线 阅读全文
posted @ 2019-07-05 09:56 吴振照 阅读(1233) 评论(0) 推荐(0) 编辑
摘要: MyBatis 插件原理与自定义插件: MyBatis 通过提供插件机制,让我们可以根据自己的需要去增强MyBatis 的功能。需要注意的是,如果没有完全理解MyBatis 的运行原理和插件的工作方式,最好不要使用插件,因为它会改变系底层的工作逻辑,给系统带来很大的影响。 MyBatis 的插件可以 阅读全文
posted @ 2019-07-04 11:10 吴振照 阅读(19649) 评论(1) 推荐(2) 编辑
摘要: 先来看一下MyBatis 的编程式使用的方法: public void testMapper() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getR 阅读全文
posted @ 2019-07-02 14:37 吴振照 阅读(8928) 评论(1) 推荐(1) 编辑
摘要: MyBatis 缓存详解 缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。跟Hibernate 一样,MyBatis 也有一级缓存和二级缓存,并且预留了集成第三方缓存的接口。 缓存体系结构: MyBatis 跟缓存相关的类都在cache 包里面,其中有一个Cache 阅读全文
posted @ 2019-06-28 15:43 吴振照 阅读(65934) 评论(8) 推荐(17) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 14 下一页