文章
实现单机的百万连接,瓶颈有以下几点:如何模拟百万连接突破局部文件句柄的限制突破全局文件句柄的限制在linux系统里面,单个进程打开的句柄数是非常有限的,一条TCP连接就对应一个文件句柄,而对于我们应用程序来说,一个服务端默认建立的连接数是有限制的。如何模拟百万连接如上图所示,当服务端开启一个端口,客户端去连接,除去固定的端口,最多只能实现单机6W的连接,实现单机百万连接,最简单的方法,就是启动十几
  • arick
  • 2020-08-08 01:33:55
  • 3
简单需求:直播的时候用户聊天的需求后台实现:分为两个接口:发送消息接口和请求消息接口主要点:redis的mget 的使用,以及key值的设计用直播期数【liveNum】作为当前期目前消息的总条数,使用incr在发送接口来累加总条数每条消息的key:直播期数【liveNum】_当前消息第几条实体类的属性public class LiveChat { /** * 当前期的第几条数据
  • arick
  • 2020-08-05 03:48:12
  • 28
编码器的执行时机首先, 我们想通过服务端,往客户端发送数据, 通常我们会调用ctx.writeAndFlush(数据)的方式, 入参位置的数据可能是基本数据类型,也可能对象其次,编码器同样属于handler,只不过他是特化的专门用于编码作用的handler, 在我们的消息真正写入jdk底层的ByteBuffer时前,数据需要经过编码处理, 不是说不进行编码就发送不出去,而是不经过编码,客户端可能接
  • arick
  • 2020-07-22 22:53:13
  • 112
Redis 6.0 的亮点之一就是支持多线程,Redis 分  主线程 和  IO线程 , IO线程 只用于读取客户端的命令和发送回复数据给客户端,处理客户端命令还是在  主线程 进行,如下图所示:从上图可知, 主线程 主要负责接收客户端连接,并且分发到各个  IO线程 ,而  IO线程 负责读取客户端命令。命令读取完成后,由  主线程 执行命令。 主线程 执行完命令后,再由  IO线程 把回复数
  • arick
  • 2020-07-11 01:38:21
  • 246
从零开发一个RPC框架纸上得来终觉浅,绝知此事要躬行。看过HSF和Dubbo的分析文章,总觉得少点什么,于是决定自己动手撸一个简易版的分布式RPC框架。实际上在学校的时候就曾经尝试做过一个最简单的RPC,但是过于简单,没有使用到服务注册中心,通信使用的是原生socket,更不支持注解形式,也没融入Spring生态,所以这次在此基础上完善了很多内容。代码很少,逻辑清晰,如下:一、架构设计RPC框架的
  • arick
  • 2020-06-09 02:51:26
  • 525
节选jdk源码中比较重要的方法进行分析,如下:public class ThreadLocal<T> { private final int threadLocalHashCode = nextHashCode(); private static AtomicInteger nextHashCode = new AtomicInteger(); priva
  • arick
  • 2020-06-09 02:35:00
  • 510
前言记录下spring源码阅读过程中的一些心得,好记性不如烂笔头问题描述当spring的bean注入过程中发现循环依赖时,框架是怎么解决的,如A->B->A这种互相依赖情况时,本文基于spring 4版本前置准备准备2个Class,通过配置文件的方式进行配置,形成一个循环依赖的场景。我们用FileSystemXmlApplicationContext这个容器作为demo,其他容器同理public
  • arick
  • 2020-06-06 03:46:44
  • 603
一、前言最近在做项目时候遇到一个奇葩问题,就是bean依赖注入的正确性与bean直接注入的顺序有关系,但是正常情况下明明是和顺序没关系的啊,究竟啥情况那,不急,让我一一道来。二、普通Bean循环依赖-与注入顺序无关2.1 循环依赖例子与原理public class BeanA { private BeanB beanB; public BeanB getBeanB() {
  • arick
  • 2020-06-05 15:52:01
  • 779
领域划分流程事件风暴B端商家-->查看发布的赛事列表-->查看发布的赛事详情-->生成海报  -->取消赛事  -->结束赛事  -->创建赛事-->发布赛事  -->查看当前赛事详情  -->查看当前的活动大盘  -->管理选手状态C端        用户-->查看赛事列表-->查看赛事详情-->报名-->支付-->查看我的报名列表-->查看我的报名详情  -->取消报名  -->查看当前活动详
  • arick
  • 2020-06-04 16:17:54
  • 591
如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,可以说在并发控制中是必不可少的部分,今天就来看一下synchronized的使用和底层原理。一、synchronized的特性1.1 原子性所谓原子性就是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,
  • arick
  • 2020-06-03 02:50:26
  • 642
Rick ©2018