Java
Shine_OfSun
这个作者很懒,什么都没留下…
展开
-
RPC
RPC RPC( Remote Procedure Call Protocol ) 远程过程调用协议。就是用其他服务器方法实现需要的功能,而具体连接细节将被封装不需要了解底层协议。 常用RPC框架 Dubbo、Motan、Dubbox、rpcx、Hadoop、gRPC 优缺点 优点: 提高系统可扩展性 提升系统可维护性和持续交付能力 实现系统高可用 缺点: 一个完善的RPC框架开发难度大,需要人员配置多 RPC框架调用成功率受限于网络状况 调用远程方法初学难度大 结构 Client原创 2020-09-20 21:21:38 · 119 阅读 · 0 评论 -
Netty(3)
Netty(4) TCP粘包和拆包 TCP是个"流"协议,所谓流,就是没有界限的一串数据。类似于自来水管,其间是没有分界线的。但一般通讯程序开发是需要定义一个个相互独立的数据包的,比如用于登陆的数据包,用于注销的数据包。由于TCP"流"的特性以及网络状况,在进行数据传输时会出现以下几种情况。 假设我们连续调用两次send分别发送两段数据data1和data2,在接收端有以下几种接收情况(当然不止这几种情况,这里只列出了有代表性的情况)。 A.先接收到data1,然后接收到data2。 B.先接收到data1原创 2020-08-20 17:14:55 · 185 阅读 · 0 评论 -
Netty(2)
Netty(2) Reactor模式 通过一个或多个输入同时传递给服务处理器的模式(基于事件驱动)。 服务器端程序处理传入的多个请求,并将它们同步分派到相应处理线程。 使用IO复用监听事件,收到事件后,分发给某个线程(进程)。 举例子: 有家独特的医院,当患者来了要门诊(请求Event),入口处前台服务员(ServiceHandler)先迎客,该服务员接着送这个顾客到空闲屋子处理业务进行门诊治疗(EventHandler)。 单Reactor单线程 Select是前面IO复用模型介绍的标准网络原创 2020-08-14 18:52:23 · 168 阅读 · 0 评论 -
Netty(1)
Netty(1) Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。 BIO、NIO和AIO 采用烧水的例子: **BIO:**叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。 **NIO:**叫一个线程不停的循环观察每一个水壶,根据每个水壶当前的状态去处理。 **AIO:**每个水壶上装一个开关,当水开了以后会提醒对应的线程去处理。 BIO方式:采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连原创 2020-08-13 18:06:32 · 151 阅读 · 0 评论 -
volatile和synchronized的区别
volatile和synchronized的区别 volatile仅能使用在变量上,synchronized可以使用在变量和方法上; volatile仅能实现变量的可见性,不能保证原子性,synchronized可以保证变量的可见性和原子性; volatile不会造成线程阻塞,synchronized可能会造成线程阻塞(因为volatile只是将当前变量的值及时告知所有线程,而synchronized是锁定当前变量不让其它线程访问); volatile标记的变量不会被编译器优化(因为不能指令重排),syn原创 2020-08-13 11:38:02 · 550 阅读 · 0 评论 -
JMM( Java Memory Model )
JMM( Java Memory Model ) 什么是JMM: 因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。 JMM特征 原子性: 操作不可分割的最小单元。 可见性: 当某个线程修改完某个变量之后,在其他的线程中,可以观察到该变量已经被修改。 有序性: Java的有序性跟线程相关。如果原创 2020-08-03 17:08:21 · 112 阅读 · 0 评论