摘要: 在实际项目开发中我们会经常使用到设计模式,设计模式是否能够正确、合理、灵活的运用到项目当中,是评判你开发能力的重要指标之一, 这一方面需要你打下牢固的编程基础,同时也需要积累大量的项目经验。这个过程并不是一蹴而就的,可能需要大量时间与项目的磨炼。本篇文章旨在汇总设计模式中的一些概念性知识,起到一个总 阅读全文
posted @ 2021-07-04 09:28 DaFanJoy 阅读(1050) 评论(0) 推荐(1) 编辑
摘要: 在日常的项目开发中,我们会经常遇到通过多线程执行程序并需要返回执行结果的场景,下面我们就对获取多线程返回结果的几种方式进行一下归纳,并进行简要的分析与总结。 一、Thread.join 在一些简单的应用场景中我们可以使用线程本身提供的join方法,我们知道join方法的目的是让一个线程等待另一个线程 阅读全文
posted @ 2021-04-28 09:01 DaFanJoy 阅读(12626) 评论(1) 推荐(1) 编辑
摘要: 我们在平常使用Shrio进行身份认证时,经常通过获取Subject 对象中保存的Session、Principal等信息,来获取认证用户的信息,也就是说Shiro会把认证后的用户信息保存在Subject 中供程序使用 public static Subject getSubject() { retu 阅读全文
posted @ 2021-01-31 09:44 DaFanJoy 阅读(1818) 评论(0) 推荐(0) 编辑
摘要: Netty中的内存分配是基于ByteBufAllocator这个接口实现的,通过对它的具体实现,可以用来分配我们之前描述过的任意类型的BytebBuf实例;我们先看一下ByteBufAllocator接口中的定义的关键方法 一、ByteBufAllocator 构造 public interface 阅读全文
posted @ 2020-11-26 09:04 DaFanJoy 阅读(1504) 评论(0) 推荐(0) 编辑
摘要: 控制反转,即Inversion of Control(IoC),是面向对象中的一种设计原则,可以用有效降低架构代码的耦合度,从对象调用者角度又叫做依赖注入,即Dependency Injection(DI),通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的容器,将其所依赖的对象的引用传递 阅读全文
posted @ 2020-10-31 19:03 DaFanJoy 阅读(2928) 评论(0) 推荐(2) 编辑
摘要: 在日常的项目开发中,我们经常会遇到需要生成唯一ID的业务场景,不同的业务对唯一ID的生成方式与要求都会不尽相同,一是生成方式多种多样,如UUID、雪花算法、数据库递增等;其次业务要求上也各有不同,有的只要保证唯一性即可,有的需要加上时间戳,有的要保证按顺序递增等。以下是我结合实际业务中的使用总结了几 阅读全文
posted @ 2020-09-28 09:25 DaFanJoy 阅读(9634) 评论(5) 推荐(3) 编辑
摘要: ByteBuf是Netty中主要的数据容器与操作工具,也是Netty内存管理优化的具体实现,本章我们先从整体上对ByteBuf进行一个概述; AbstractByteBuf是整个ByteBuf的框架类,定义了各种重要的标志位与API供具体的实现类使用与实现;下面我们就从AbstractByteBuf 阅读全文
posted @ 2020-08-31 09:38 DaFanJoy 阅读(1599) 评论(0) 推荐(0) 编辑
摘要: 在之前的文章中我们详细介绍过Netty中的NioEventLoop,NioEventLoop从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个for(;;)循环来处理事件消息。今天我们就借鉴NioEventLoop,并加入消息分发策略构建一个基础的Eventl 阅读全文
posted @ 2020-07-27 09:02 DaFanJoy 阅读(680) 评论(0) 推荐(1) 编辑
摘要: 在日常的网络开发当中,协议解析都是必须的工作内容,Netty中虽然内置了基于长度、分隔符的编解码器,但在大部分场景中我们使用的都是自定义协议,所以Netty提供了 MessageToByteEncoder<I> 与 ByteToMessageDecoder 两个抽象类,通过继承重写其中的encode 阅读全文
posted @ 2020-06-23 09:03 DaFanJoy 阅读(2318) 评论(1) 推荐(1) 编辑
摘要: TCP协议属于网络分层中的传输层,传输层作用的就是建立端口与端口的通信,而其下一层网络层的主要作用是建立"主机到主机"的通信,所以在我们日常进行网络编程时只要确定主机和端口,就能实现程序之间的数据交流,在Unix系统中就把主机+端口,叫做"套接字"(socket),所以一般网络编程都是基于对于soc 阅读全文
posted @ 2020-05-27 13:38 DaFanJoy 阅读(1003) 评论(1) 推荐(1) 编辑