文章
Redis 6.0 的亮点之一就是支持多线程,Redis 分  主线程 和  IO线程 , IO线程 只用于读取客户端的命令和发送回复数据给客户端,处理客户端命令还是在  主线程 进行,如下图所示:从上图可知, 主线程 主要负责接收客户端连接,并且分发到各个  IO线程 ,而  IO线程 负责读取客户端命令。命令读取完成后,由  主线程 执行命令。 主线程 执行完命令后,再由  IO线程 把回复数
  • arick
  • 2020-07-11 01:38:21
  • 5
摘要尽管IM产品五花八门、不可枚举,但就其最基础的能力归结起来不过就是三点:不丢、不重、保序。而这三大能力,最根本的就是不丢。试想,如果消息丢了,那么消息是否重复、消息是否有序就无从谈起了。本篇文章将重点介绍在文娱IM平台场景下如何实现消息不丢。同时,消息的不丢失与消息的加载速度或多或少也有些联系。比如消息加载慢了,即使消息未丢失,用户也可能会以为是消息丢了;此外,消息的加载速度严重影响着用户的体
  • arick
  • 2020-06-09 21:29:02
  • 355
从零开发一个RPC框架纸上得来终觉浅,绝知此事要躬行。看过HSF和Dubbo的分析文章,总觉得少点什么,于是决定自己动手撸一个简易版的分布式RPC框架。实际上在学校的时候就曾经尝试做过一个最简单的RPC,但是过于简单,没有使用到服务注册中心,通信使用的是原生socket,更不支持注解形式,也没融入Spring生态,所以这次在此基础上完善了很多内容。代码很少,逻辑清晰,如下:一、架构设计RPC框架的
  • arick
  • 2020-06-09 02:51:26
  • 325
节选jdk源码中比较重要的方法进行分析,如下:public class ThreadLocal<T> { private final int threadLocalHashCode = nextHashCode(); private static AtomicInteger nextHashCode = new AtomicInteger(); priva
  • arick
  • 2020-06-09 02:35:00
  • 307
前言记录下spring源码阅读过程中的一些心得,好记性不如烂笔头问题描述当spring的bean注入过程中发现循环依赖时,框架是怎么解决的,如A->B->A这种互相依赖情况时,本文基于spring 4版本前置准备准备2个Class,通过配置文件的方式进行配置,形成一个循环依赖的场景。我们用FileSystemXmlApplicationContext这个容器作为demo,其他容器同理public
  • arick
  • 2020-06-06 03:46:44
  • 383
一、前言最近在做项目时候遇到一个奇葩问题,就是bean依赖注入的正确性与bean直接注入的顺序有关系,但是正常情况下明明是和顺序没关系的啊,究竟啥情况那,不急,让我一一道来。二、普通Bean循环依赖-与注入顺序无关2.1 循环依赖例子与原理public class BeanA { private BeanB beanB; public BeanB getBeanB() {
  • arick
  • 2020-06-05 15:52:01
  • 585
领域划分流程事件风暴B端商家-->查看发布的赛事列表-->查看发布的赛事详情-->生成海报  -->取消赛事  -->结束赛事  -->创建赛事-->发布赛事  -->查看当前赛事详情  -->查看当前的活动大盘  -->管理选手状态C端        用户-->查看赛事列表-->查看赛事详情-->报名-->支付-->查看我的报名列表-->查看我的报名详情  -->取消报名  -->查看当前活动详
  • arick
  • 2020-06-04 16:17:54
  • 385
如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,可以说在并发控制中是必不可少的部分,今天就来看一下synchronized的使用和底层原理。一、synchronized的特性1.1 原子性所谓原子性就是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,
  • arick
  • 2020-06-03 02:50:26
  • 427
背景最近在做一个项目(HttpDNS),简单说其中一个流程,客户端通过DNS协议构造好UDP包发给Akamai DNS Server,每个包都会带一个ID,做过网络通讯开发的同学应该都知道它的用处,把req和resp做关联映射,防止串包。那么在DNS协议里面有个限制,ID的大小不能超过65535,不然会报错误“DNS message ID 65536 is out of range”,那么ID只能
  • arick
  • 2020-06-02 16:43:41
  • 532
# 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
  • 416
Rick ©2018