摘要:
ServerBootstrap与Bootstrap分别是netty中服务端与客户端的引导类,主要负责服务端与客户端初始化、配置及启动引导等工作,接下来我们就通过netty源码中的示例对ServerBootstrap与Bootstrap的源码进行一个简单的分析。首先我们知道这两个类都继承自Abstra 阅读全文
摘要:
Future与FutureTask都是用于获取线程执行的返回结果。下面我们就对两者之间的关系与使用进行一个大致的介绍与分析 一、Future与FutureTask介绍: Future位于java.util.concurrent包下,它是一个接口 Future接口中声明了5个方法,下面介绍一下每个方法 阅读全文
摘要:
sofa-rpc是阿里开源的一款高性能的rpc框架,这篇文章主要是对sofa-rpc provider启动服务流程的一个代码走读,下面是我简单绘制的一个基本的关系流程图 下面我们根据sofa-rpc代码,对流程进行一个跟踪与走读。我们以BoltServer的为例 可以看到sofa-rpc通过Prov 阅读全文
摘要:
在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecut 阅读全文
摘要:
在netty基本组件介绍中,我们大致了解了netty的一些基本组件,今天我们来搭建一个基于netty的Tcp服务端程序,通过代码来了解和熟悉这些组件的功能和使用方法。 首先我们自己创建一个Server类,命名为TCPServer 第一步初始化ServerBootstrap,ServerBootstr 阅读全文
摘要:
Map是java中的一种数据结构,围绕着Map接口,有一系列的实现类如Hashtable、HashMap、LinkedHashMap和TreeMap。而其中HashMap和Hashtable我们平常使用的最多。 HashMap与Hashtable表面上看没有太大区别,但在一些使用细节和内部实现上有诸 阅读全文
摘要:
基于springboot的多线程程序开发过程中,由于本身也需要注入spring容器进行管理,才能发挥springboot的优势。所以这篇文字主要用来记录开发中两者结合时需要注意的一些事项。 第一步我们把线程类的实例注入sping容器进行管理 这里使用springboot @Import 注解,把Th 阅读全文
摘要:
List是java重要的数据结构之一,我们经常接触到的有ArrayList、Vector和LinkedList三种,他们都继承来自java.util.Collection接口,类图如下 接下来,我们对比下这三种List的实现和不同: 一、基本实现 1、ArrayList和Vector使用了数组实现, 阅读全文
摘要:
Netty做为一款用于搭建高性能网络应用程序的高级框架,由以下几个主要构件组成: 一、Channel Channel 是java NIO的一个基本构造,可以把channel看作是传入或者传出的数据载体,可以被打开或者关闭,连接或者断开连接。简单来说其实就是我们平常网络编程中经常使用的socket套接 阅读全文
摘要:
最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换;由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一点非常重要。 首先是结构体定义,一些基本的数据类型,C#与C++都是可以匹配的: 一、首先是 [St 阅读全文