Netty 之IdleStateHandler心跳机制

基础心跳机制心跳是在TCP长连接中,客户端和服务端定时向对方发送数据包通知对方自己还在线,保证连接的有效性的一种机制在服务器和客户端之间一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文,
2021年08月28日 442次浏览

NUMA架构的CPU

从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构(SMP:Symmetric Multi-Processor),非一致存储访问结构(NUMA:Non-Uniform Memory Access),以及海量并行处理结构(MPP:Massive Parallel Processing
2021年08月26日 750次浏览

MySQL游标分页与传统分页

传统分页通常在分页时(以 HTTP 协议 GET 方法举例),会携带两个可选参数,limit和offset。或者是携带一个 page 参数,如果是 limit,offset 参数,在后端从数据库获取数据时,便是直接的使用 LIMIT 关键字查询,如下使用 page 参数控制翻页的实现方式与上面大同小
2021年08月25日 1,640次浏览

Netty的内存池设计

一、简介netty作为一款优秀的通信框架,不可避免的需要面对频繁的数据读入与写出,此时肯定会导致大量ByteBuf对象的创建,为了减少频繁申请内存带来的开销与gc,netty设计了内存池。二、内存池设计的演化假设让你设计一个内存池,你会怎么设计?也许你会创建一个字节数组,然后分配一定的大小,像下面这
2021年08月22日 539次浏览

计算机缓存Cache以及Cache Line详解

1.计算机存储体系简介存储器是分层次的,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小。寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(缓存也是分级,有L1,L2等缓存),再次是主存(普通内存),再次是本地磁盘。寄存器的速度最快,可以在一个时钟周期内访
2021年08月20日 1,147次浏览

happens-before理解和应用

理解happens-before主要为了理解源码。主要jdk里面一堆华丽呼哨的操作,如果基础不牢靠,看着心累。目录:1.happens-before的理解2.应用1,futuretask non-volatile引用:1.why outcome object in FutureTask is non
2021年08月20日 381次浏览

什么是内存屏障?

当你看到“内存屏障”四个字的时候,你的第一反应是什么?寄存器里取出了错误的值?ifence,sfence之类的指令?还是诸如volatile之类的关键字?好吧,我第一次看到这四个字的时候,脑子里浮现出的是魔兽争霸里绿油油的铺满苔藓的岩石屏障- -#,并且,当我搞明白内存屏障具体是什么,而且自认为对其
2021年08月20日 473次浏览

缓存一致性协议(MESI)

在目前主流的计算机中,cpu执行计算的主要流程如图所示:数据加载的流程如下:1.将程序和数据从硬盘加载到内存中2.将程序和数据从内存加载到缓存中(目前多三级缓存,数据加载顺序:L3->L2->L1)3.CPU将缓存中的数据加载到寄存器中,并进行运算4.CPU会将数据刷新回缓存,并在一定的
2021年08月20日 446次浏览

堆内存超过32G时,为什么压缩指针失效

对象内存布局:对象头中的Class Pointer默认占8个字节,开启-XX:+UseCompressedOops后,为了节省空间压缩为4个字节,4*8=32位表示可寻址4G个对象,在内存空间小于32G时,可以通过编码、解码方式进行优化,使得jvm可以支持更大的内存配置。当堆内存大于32G时,压缩指
2021年08月18日 476次浏览

Elasticsearch中的 三种缓存介绍:Query Cache、Request Cache、Fielddata Cache

一、Query CacheQuery Cache也称为Filter Cache,顾名思义它的作用就是对一个查询中包含的过滤器执行结果进行缓存。比如我们常用的term,terms,range过滤器都会在满足某种条件后被缓存,注意,这里的bool过滤器是不会被缓存的,但bool过滤器包含的子query
2021年08月18日 1,521次浏览