java8 Stream API 发表于 2018-04-26 java8 Stream API基本概念为什么引进了Stream?众所周知,集合操作非常麻烦,若要对集合进行筛选、投影,需要写大量的代码,而stream是以声明的形式操作集合,它就像SQL语句我们只需要告诉流需要对集合进行什么操作,它就会自动进行操作,并将执行结果交给你,无需我们自己手写代码。 什么 ... 阅读全文 »
并发系列之ThreadLocal 发表于 2018-04-17 并发系列之ThreadLocal参考链接:https://www.cnblogs.com/micrari/p/6790229.html 线程封闭在《Java并发编程实战》一书中提到,“当访问共享的可变数据时,通常需要使用同步。一种避免使用同步的方式就是不共享数据”。因此提出了“线程封闭“的概念,一种 ... 阅读全文 »
并发系列之volatile关键字 发表于 2018-04-16 基本概念可见性可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是线程之间的可见性,一个线程修改的状态对另一个线程是可见 ... 阅读全文 »
并发系列之线程安全性 发表于 2018-04-10 并发系列之线程安全性前言 这篇博客开始算是《Java并发编程实战》的总结,其实这本书,不夸张的讲前几章我以及看了四遍以上了,但是一直为什么没有真真正正的看完这本书呢?每次看完几章可能被其他新的技术诱惑到了,就跑去研究别的去了,这本书就又放下了,再回来看时,前面的又忘了,循环往复。java中深感线程的 ... 阅读全文 »
dubbo系列之粘包和拆包 发表于 2018-04-10 前言其实在前面几篇网络编程的文章里面,关于粘包和拆包已经讲的差不多了,由于本人这周五准备组内分享——dubbo的粘包和拆包,这篇博客就把dubbo处理粘包和拆包的流程梳理总结一下。 什么是粘包和拆包 TCP粘包拆包发生的原因 1.应用程序write写入的字节大小大于套接口发送缓冲区大小 2.进行M ... 阅读全文 »
dubbo系列之网络通信编码解码-consumer响应结果编码 发表于 2018-04-03 dubbo系列之网络通信编码解码-consumer响应结果编码简要在收到provider返回的编码数据后,consumer要进行解码,这时候可能会出现粘包和拆包的问题。 源码解析NettyCodecAdapter.InternalDecoder类messageReceived()分两个部分 1234 ... 阅读全文 »
dubbo系列之网络通信编码解码-provider请求和响应编码 发表于 2018-04-03 dubbo系列之网络通信编码解码-provider请求和响应编码简要这篇博客分两个部分: 1:provider 请求编码 2:provider响应结果编码 源码解析在provider收到consumer编码后的数据时,首先要开始解码,下面先看一下provider是如何解码的。 provider请求编 ... 阅读全文 »
dubbo系列之网络通信编码解码-consumer请求编码 发表于 2018-04-03 dubbo系列之网络通信编码解码-consumer请求编码简要什么是编码、解码? 编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。 解码(Decode)反序列化(deserialization)把从网络、磁盘等读取的字节数 ... 阅读全文 »
dubbo系列之网络通信-IO异步变同步 发表于 2018-04-03 dubbo系列之网络通信-IO异步变同步简要dubbo 是基于netty NIO的非阻塞 并行调用通信。 (阻塞 非阻塞 异步 同步 区别 )dubbo 的通信方式 有3类类型: 1.异步,有返回值 123<dubbo:method name="sayHello" a ... 阅读全文 »
dubbo系列之网络通信-consumer的接收原理 发表于 2018-04-03 dubbo系列之网络通信-consumer的接收原理简介接着上一篇博客往下,在provider完成接收和发送之后,consumer才来接收,过程和provider的接收差不多,但还是有一点细微的区别,我们这篇博客就重点看看区别之处,相同的地方就直接跳过了,可参考上一篇博客。 源码介绍NettyHan ... 阅读全文 »