Java
文章平均质量分 75
Java
十拳剑
这个作者很懒,什么都没留下…
展开
-
MySQL(一):索引底层数据结构(B+树)
索引是帮助获取数据的一种排好序的数据结构下面先看下几种索引的数据结构,从而分析出为什么使用B+树。1.BST(平衡二叉树) BST 是有序的,但是当节点特别多的时候,这时候树的高度也就特别大,BST查询的时间复杂度就是和树的高度相关的,查询就会非常耗时。2.红黑树 原因和BST相同。3.hash表 hash表通过hash算法将数据映射一个数组里,出现hash碰撞的时候就在链表的后面添加,原理和HashMap相同,对于 = 查找速度很快,但是无法进行范围查找。4.B树 .原创 2021-03-13 23:38:08 · 351 阅读 · 0 评论 -
Netty(三):零拷贝、空轮循bug和ByteBuf扩容机制
零拷贝零拷贝是netty高性能设计的一个点,想要了解零拷贝,先要知道直接内存这个概念。直接内存不是Java虚拟机中的一部分,他对应的是机器的物理内存。以客户端向服务端发送数据为例,当client发送数据时,先由socket缓冲区接受数据,然后copy到机器的直接内存中,然后再由一些native方法将这些数据拷贝到JVM中,这个过程中就有两次拷贝。而零拷贝是这样做的:以客户端向服务端发送数据为例,当client发送数据时,先由socket缓冲区接受数据,然后copy到机器的直接内存中,然后将这些原创 2021-02-10 01:45:07 · 317 阅读 · 0 评论 -
Netty(二):编解码器和心跳机制
在上一篇文章中讲了底层的NIO模型,并且写了一个netty的简单demo,这篇文章主要讲netty中一些具体的应用。编解码器首先需要了解netty中pipeline。对于pipeline,有入站和出站的概念,以服务端举例,从客户端发送来数据就是入站,就是上图从head到tail。对于每一个handler,我们在添加入管道的时候,都是使用addLast方法,可以看做直接加入tail的前一个。自定义的handler都是实现了InboundHandler(入站)或者是OutboundHandl原创 2021-01-31 00:46:39 · 255 阅读 · 0 评论 -
Netty(一):NIO和Netty底层原理
NIONetty是基于NIO模型的,首先需要了解一下BIO和NIO。在Java中IO模型分为BIO、NIO和AIO。BIO 同步阻塞模型,一个客户端连接一个处理线程。原创 2021-01-28 22:35:05 · 964 阅读 · 1 评论