闵思坤的博客

一切皆有可能

Scroll Down

Java8新特性

一、集合1、HashMap数组+链表+红黑树2、HashSet数组+链表+红黑树3、ConcurrentHashMapCAS + Synchronized二、JVM方法区:永久代PremGen --> 元空间MetaSpace(物理内存)三、Lambda 表达式1、从匿名类到Lambda的转换

(五)Netty 对二次编解码的支持

为什么需要“二次”编解码? 假设我们把解决半包粘包问题的常用三种解码器叫一次解码器: 那么我们在项目中,除了可选的的压缩解压缩之外,还需要一层解码,因为一次解码的结果是字节,需要和项目中所使用的对象做转化,方便使用,这层解码器可以称为“二次解码器”,相应的,对应的编码器是为了将 Java 对象转化成字节流方便存储或传输。

(四)Netty 如何处理TCP 粘包/半包

什么是粘包和半包? 在客户端发送数据时,实际是把数据写入到了TCP发送缓存里面的。 半包:顾名思义就是接收到半个包,如果发送的包的大小比TCP发送缓存的容量大,那么这个数据包就会被分成多个包,通过socket多次发送到服务端,服务端第一次从接受缓存里面获取的数据,实际是整个包的一部分,半包不是说只收到了全包的一半,是说收到了全包的一部分。 粘包:如果发送的包的大小比TCP发送缓存容量小,并且TCP缓存可以存放多个包,那么客户端和服务端的一次通信就可能传递了多个包,这时候服务端从接受缓存就可能一下读取了多个包

(三)Netty 如何支持三种 Reactor

什么是Reactor及三种版本 **反应堆设计模式(Reactor pattern):**是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。

"构造二叉树"系列题

105. 从前序与中序遍历序列构造二叉树给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。解题思路:求出根结点的值 rootVal(前序遍历第一个)求出根结点在中序遍历的位置rootIndex(预先存储在map中)求出左子树的个数 leftNum = r