我们或多或少了解过一些零拷贝的概念,而零拷贝也正是netty能够实现高性能的原因之一,因此我们有必要深入了解netty的零拷贝。但是在深入了解netty的零拷贝之前,让我们先来了解一下操作系统(以Linux为例)中的零拷贝。要了解操作系统的零拷贝,我们首先要先了解两个概念:DMA、用户态与内核态什么是DMADMA(Direct Memory Access),也就是直接内存存取。DMA是一种能够允许
  • arick
  • 2020-06-01 13:55:00
一、什么是G1G1(Garbadge First Collector)作为一款JVM最新的垃圾收集器,可以解决CMS中Concurrent Mode Failed问题,尽量缩短处理超大堆的停顿,在G1进行垃圾回收的时候完成内存压缩,降低内存碎片的生成。G1在堆内存比较大的时候表现出比较高吞吐量和短暂的停顿时间,而且已成为Java 9的默认收集器。未来替代CMS只是时间的问题。二、CMS与G1对比C
  • arick
  • 2020-04-29 14:37:05
1、redis分布式锁的基本实现redis加锁命令:SETNX resource_name my_random_value PX 30000 这个命令的作用是在只有这个key不存在的时候才会设置这个key的值(NX选项的作用),超时时间设为30000毫秒(PX选项的作用) 这个key的值设为“my_random_value”。这个值必须在所有获取锁请求的客户端里保持唯一。SETNX 值保持唯一的是
  • arick
  • 2019-09-24 22:07:54
1、前言1.1、背景介绍在TCC模式下,发起方需要考虑如何存储事务日志:异库发起方需要实现回查服务,并且自身业务量会受XTS Server及其db的瓶颈限制;同库发起方需要自行建库建表维护数据库,如果分库分表的话还需考虑如何对数据分片;对于参与者, 需要按TCC参与者设计规范,实现参与者服务;此外一个TCC参与者通常只适用于一个特定的业务场景,新的业务场景需要设计和实现新的TCC参与者,复用性比较
  • arick
  • 2020-05-12 15:53:52
什么是Feign?Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。Feign被广泛应用在Spring Cloud 的解决方
  • arick
  • 2020-05-12 15:29:48
序言在后端的日常开发工作中,集合是使用频率相当高的一个工具,而其中的HashMap,则更是我们用以处理业务逻辑的好帮手,同时HashMap的底层实现和原理,也成了面试题中的常客。以前曾有详细了解过HashMap的实现原理,看过源码(JDK7版本)。但随着jdk版本的飞速迭代(现在都到JDK13了,但新特性还从没用过。。),主流的jdk使用版本也终于从JDK7挪到了JDK8。由于JDK的向前兼容,在
  • arick
  • 2020-05-13 14:48:32
前言说起Guava Cache,很多人都不会陌生,它是Google Guava工具包中的一个非常方便易用的本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略。由于Guava的大量使用,Guava Cache也得到了大量的应用。但是,Guava Cache的性能一定是最好的吗?也许,曾经,它的性能是非常不错的。但所谓长江后浪推前浪,总会有更加优秀的技术出现。今天,我就来介绍一个比Guava C
  • arick
  • 2019-10-15 15:47:06
编码器的执行时机首先, 我们想通过服务端,往客户端发送数据, 通常我们会调用ctx.writeAndFlush(数据)的方式, 入参位置的数据可能是基本数据类型,也可能对象其次,编码器同样属于handler,只不过他是特化的专门用于编码作用的handler, 在我们的消息真正写入jdk底层的ByteBuffer时前,数据需要经过编码处理, 不是说不进行编码就发送不出去,而是不经过编码,客户端可能接
  • arick
  • 2020-07-22 22:53:13
# 0. 为什么要用我们的id生成器WE ALL KNOW,任何一个系统和应用的开发都避免不了id生成的需求,主键id、业务id、实体id……WE ALSO KNOW,id的生成需求在一个应用的初期开发中往往不受关注,因为实现太过简单:单机应用有本地数据库帮助自动生成id分布式应用有分布式数据库如公司内部的TDDL帮助自动生成id如果你的数据不存储在数据库而是存在hbase或redis里面,没办法
  • arick
  • 2020-06-01 14:05:59
rocketmq netty底层设计rocketmq底层网络使用的netty框架,类图如下 RecketMQ通信模块的顶层结构是RemotingServer和RemotingClient,分别对应通信的服务端和客户端首先看看RemotingServer 1 public interface RemotingServer extends RemotingService { 2 3 vo
  • arick
  • 2020-03-16 18:07:15
Rick ©2018