4 平凡的L同学

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 4k+

Netty源码阅读之NioEventLoop简析

在Netty中NioEventLoop以及NioEventLoopGroup是很重要的两个类,而NioEventLoopGroup主要是对NioEventLoop进行管理;首先来看一下这两个类的关系图(错综复杂): 图 11. NioEventLoopGroup初始化流程通过分析NioEven...

2020-06-25 21:08:15

Netty源码阅读之编码器简析

上回主要聊了一下Netty中的解码器,那么既然有解码,必须也必须得聊下编码过程了,下面将对Netty中的编码器作一下总结:1.编码器简介作为解码的逆过程,编码的目的主要是将消息转换为字节或者消息,Netty中主要使用了MessageToByteEncoder这个抽象类来规定处理编码的一些流程,不妨先来看下该类的UML:可以看出编码器其实也只是一类特殊的ChannelHandler,使用encode()方法来处理编码相关的逻辑,不妨先自定义一个编码器然后写一段demo:1.1...

2020-06-07 16:46:09

Netty源码阅读之解码器简析

通过网络传输过来的数据,需要通过netty中的解码器进行处理,其中抽象类ByteToMessageDecoder中定义了相应的处理方法。不妨先来围观下该类的继承关系:由上图可以明白,该类实现了ChannelHandler这个接口,所以,说到底,解码器就是一个特殊的handler而已。查看channelRead()方法:public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {

2020-05-26 00:07:08

Netty源码阅读之ByteBuf简析(二)

前面对于Netty中的ByteBuf缓存做了一下简单的介绍,下面将围绕源码,对于其中的几个特性进行分析。1.扩容机制首先来聊下Bytebuf的扩容机制,这个机制也是Netty比较强悍的地方,而我们知道JDK自带的ByteBuffer是无法扩容的,在Bytebuf创建的时候,我们通常会设置一个初始容量,在我们写数据的时候,如果写指针超过了设置的初始容量,那么Bytebuf将进行扩容,废话不多说,下面我们直接通过源码来一探究竟吧:public ByteBuf writeBytes(ByteBuf

2020-05-10 22:09:35

Netty源码阅读之ByteBuf简析(一)

在Netty中ByteBuf主要是用于数据的中转,底层IO将数据读取到ByteBuf,之后传输给应用程序;而应用程序在处理完之后将数据封装成ByteBuf发送给底层IO。在介绍ByteBuf具体的实现之前,让我们先来查看一下相关类的关系图:...

2020-05-05 22:07:55

Netty源码阅读之事件传输机制的简要分析

前面提到,ChannelHandler可以用来处理inBound以及outBound事件;而inBound以及outBound事件的流转也是Netty中比较重要的一环;下面,将对Netty源码中对事件的传输机制进行简要的分析:在Netty的事件传播过程中,总共有两种的传播方式,第一种方式是调用pipeline进行传播,另外的一种是直接以pipeline中的某个Context作为起始进...

2020-04-19 19:32:31

Netty源码阅读之Pipeline中添加以及删除ChannelHandler流程总结

1.简要介绍 首先,ChannelHandler主要的作用是用来处理inbound或者outbound事件,调用者可以通过ch.pipeline().addLast()来进行添加,我们可以通过一张经典图例来认识一下ChannelHandler、pipeline、以及ChannelHandlerContext之间的关系: 通过上图,我们知道,Channel以及pipel...

2020-04-04 22:04:41

Netty源码阅读之Pipeline初始化流程

1.Pipe的创建时机Pipe的创建是在AbstractChannel类的构造函数中完成的:protected AbstractChannel(Channel parent) { this.parent = parent; id = newId(); unsafe = newUnsafe(); pipeline = newC...

2020-03-29 19:34:25

使用Hutool 工具库导出Excel表格

Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,...

2020-03-14 20:00:10

Google guava新集合类型汇总整理

Google guava新集合类型汇总整理1.使用说明1.1 Multiset1.2 SortedMultiset1.3 Multimap1.4 ListMultimap1.5 SetMultimap1.6 BiMap1.7 ClassToInstanceMap1.8 Table原文地址:1.使用说明Guava中新定义的集合类型有以下的几种:1.1 Multiset首先是Multiset...

2019-11-16 12:18:28

关于DDD领域驱动设计的理解

转载自:点击这里当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决。比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品。所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的。再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备。但是最近由于各种原因,导致服务经常...

2019-09-22 22:36:27

javassist简单介绍以及如何使用它来实现lombok的功能

最近在学习MyBatis的源码,在阅读的过程中,发现有一个叫做javaassist的工具,查阅了一些资料,这个工具和ASM的功能类似,可以直接修改Java的字节码文件,而ASM要更偏向底层一些。下面我们通过一个例子来学习其使用方法:public class Run { public static void main(String[] args) { Class...

2019-07-10 23:59:16

Java 11 新特性介绍

原文地址Java 11 已于 2018 年 9 月 25 日正式发布,之前在 Java 10 新特性介绍中介绍过,为了加快的版本迭代、跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个大版本,每个季度发布一个中间特性版本,并且做出不会跳票的承诺。通过这样的方式,Java 开发团队能够将一些重要特性尽早的合并到 Java Release 版本中,以便快速得到开发者的反馈...

2019-06-12 23:25:32

Angular6.x 实战开发总结

最近的一段时间,撸了一些前端的东西,对于前端开发有了一些新的认识,下面主要针对Angular(主要是2.0以后的版本)这个开发框架来对前端的知识点进行一些简单的总结:1. 实现返回功能:private goBack() { this.router.navigate(["../controllerinfo"], { relativeTo: this.r...

2019-05-14 19:38:54

Elasticsearch-基础介绍及索引原理分析

本文转载自:http://blog.pengqiuyuan.com/ji-chu-jie-shao-ji-suo-yin-yuan-li-fen-xi/最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/想了解的同学有所帮助。 ...

2019-03-31 23:45:13

初识Spring Cloud--Spring Cloud Bus在服务配置中心的简单应用

前面对配置中心进行了讲解,我们可以很明显的感受到使用spring cloud在处理配置方面的便捷性,然而,当托管到git等工具上的配置一旦发生变化,若采用前面的架构我们的每一个客户端都需要发送一遍请求,这势必会照成一些问题,这时候,spring cloud bus横空出世了。下面,我们直接进入正题,通过一个简单的例子来进行测试:首先,我们需要做一些准备的工作:安装zookeeper和kaf...

2019-03-31 12:19:54

spring boot 2.1.x整合jersey遇到的坑

由于最近的开发需要用到这个框架,所以打算重新学习下,但是spring boot的版本升级了,导致了依赖方面一些问题,应用老是起不来,没想到这个还是spring boot的bug...这里记录一下:首先来看一下相关的依赖:<dependencies> <dependency> <groupId>org.springframework.boot&...

2019-01-01 13:34:19

全面了解Nginx到底能做什么

原文链接前言本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得。所以还请见谅,同时欢迎留言交流Nginx能做什么1.反向代理2.负载均衡3.HTTP服务器(包含动静分离)4.正向代理以上就是我了解到的Nginx在不依赖第三方模块能处理的事情,下面详细说明每种功...

2018-12-23 12:26:13

初识Spring Cloud--分布式配置中心实践

在一个分布式的微服务集群中,各个服务的数量可能有成百上千,管理成本将非常大,这时候就迫切需要一个统一的配置和管理中心,spring cloud就提供了一套集中式的配置中心方案,下面是配置中心的示意图:依照上边的原理图,我们首先来实现config-server,也即配置中心的服务端:创建项目sc10,导入相关的依赖:<dependency> <grou...

2018-12-15 23:25:51

初识Spring Cloud--微服务网关实现之zuul

在spring cloud中,zuul主要担任服务网关的角色(现已被Spring Cloud Gateway所取代),可以将外部的请求分发到不同的微服务上去,官网上有一张图片,可以直观的展示zuul的功能,其中的API Gateway便是今天的主角--zuul。为了使用这个服务网关功能,首先,我们需要创建一个新项目sc09,并指定端口号为8996,设定服务名称为service09。要使...

2018-12-14 23:01:53

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。