文章
一、交换指令:CMPXCHG、XCHG1) CPMXCHG用于比较并交换操作数,CPU对CAS的原语支持非原子性,最早用于单核CPU2)XCHG用于交换两个操作数具备原子性,CPU会自动加LOCK前缀The LOCK prefix is automatically assumed for XCHG instruction.——From Intel手册 8.1.2.2 Software Contro
  • arick
  • 2020-08-15 14:34:52
  • 393
每个 ChannelSocket 的 Unsafe 都有一个绑定的 ChannelOutboundBuffer , Netty 向站外输出数据的过程统一通过 ChannelOutboundBuffer 类进行封装,目的是为了提高网络的吞吐量,在外面调用 write 的时候,数据并没有写到 Socket,而是写到了 ChannelOutboundBuffer 这里,当调用 flush 的时候,才真正
  • arick
  • 2020-08-12 00:01:12
  • 373
实现单机的百万连接,瓶颈有以下几点:如何模拟百万连接突破局部文件句柄的限制突破全局文件句柄的限制在linux系统里面,单个进程打开的句柄数是非常有限的,一条TCP连接就对应一个文件句柄,而对于我们应用程序来说,一个服务端默认建立的连接数是有限制的。如何模拟百万连接如上图所示,当服务端开启一个端口,客户端去连接,除去固定的端口,最多只能实现单机6W的连接,实现单机百万连接,最简单的方法,就是启动十几
  • arick
  • 2020-08-08 01:33:55
  • 391
简单需求:直播的时候用户聊天的需求后台实现:分为两个接口:发送消息接口和请求消息接口主要点:redis的mget 的使用,以及key值的设计用直播期数【liveNum】作为当前期目前消息的总条数,使用incr在发送接口来累加总条数每条消息的key:直播期数【liveNum】_当前消息第几条实体类的属性public class LiveChat { /** * 当前期的第几条数据
  • arick
  • 2020-08-05 03:48:12
  • 425
编码器的执行时机首先, 我们想通过服务端,往客户端发送数据, 通常我们会调用ctx.writeAndFlush(数据)的方式, 入参位置的数据可能是基本数据类型,也可能对象其次,编码器同样属于handler,只不过他是特化的专门用于编码作用的handler, 在我们的消息真正写入jdk底层的ByteBuffer时前,数据需要经过编码处理, 不是说不进行编码就发送不出去,而是不经过编码,客户端可能接
  • arick
  • 2020-07-22 22:53:13
  • 536
Redis 6.0 的亮点之一就是支持多线程,Redis 分  主线程 和  IO线程 , IO线程 只用于读取客户端的命令和发送回复数据给客户端,处理客户端命令还是在  主线程 进行,如下图所示:从上图可知, 主线程 主要负责接收客户端连接,并且分发到各个  IO线程 ,而  IO线程 负责读取客户端命令。命令读取完成后,由  主线程 执行命令。 主线程 执行完命令后,再由  IO线程 把回复数
  • arick
  • 2020-07-11 01:38:21
  • 733
从零开发一个RPC框架纸上得来终觉浅,绝知此事要躬行。看过HSF和Dubbo的分析文章,总觉得少点什么,于是决定自己动手撸一个简易版的分布式RPC框架。实际上在学校的时候就曾经尝试做过一个最简单的RPC,但是过于简单,没有使用到服务注册中心,通信使用的是原生socket,更不支持注解形式,也没融入Spring生态,所以这次在此基础上完善了很多内容。代码很少,逻辑清晰,如下:一、架构设计RPC框架的
  • arick
  • 2020-06-09 02:51:26
  • 955
节选jdk源码中比较重要的方法进行分析,如下:public class ThreadLocal<T> { private final int threadLocalHashCode = nextHashCode(); private static AtomicInteger nextHashCode = new AtomicInteger(); priva
  • arick
  • 2020-06-09 02:35:00
  • 910
前言记录下spring源码阅读过程中的一些心得,好记性不如烂笔头问题描述当spring的bean注入过程中发现循环依赖时,框架是怎么解决的,如A->B->A这种互相依赖情况时,本文基于spring 4版本前置准备准备2个Class,通过配置文件的方式进行配置,形成一个循环依赖的场景。我们用FileSystemXmlApplicationContext这个容器作为demo,其他容器同理public
  • arick
  • 2020-06-06 03:46:44
  • 1054
一、前言最近在做项目时候遇到一个奇葩问题,就是bean依赖注入的正确性与bean直接注入的顺序有关系,但是正常情况下明明是和顺序没关系的啊,究竟啥情况那,不急,让我一一道来。二、普通Bean循环依赖-与注入顺序无关2.1 循环依赖例子与原理public class BeanA { private BeanB beanB; public BeanB getBeanB() {
  • arick
  • 2020-06-05 15:52:01
  • 1171
Rick ©2018