上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 42 下一页

2021年1月24日

Redis之订阅是怎么实现的

摘要: 一 订阅的数据结构 struct redisServer { //... dict *pubsub_channels; // .. } 该数据结构就是hashtable加上链表 每当客户端发送SUBSCRIBE命令分为两种情况 1 该channel已经存在了,那么就把新的客户端加到链表的尾节点 2 阅读全文

posted @ 2021-01-24 08:39 MaXianZhe 阅读(98) 评论(0) 推荐(0) 编辑

2021年1月23日

Redis事务实现原理

摘要: 一 Exec伪代码 二 watch的实现原理 每一个Redis数据库对象都保存着watched_keys字典,键是被watch的key,而value是所有watch的客户端组成的链表 上面图里的C1 C2 C3 C4 都是执行了watch的客户端 watch是什么时候被触发的呢 阅读全文

posted @ 2021-01-23 19:54 MaXianZhe 阅读(93) 评论(0) 推荐(0) 编辑

Spring 之@Value注解原理

摘要: @Value和@Autowired这两个注解都是由AutoWiredAnnotationBeanPostProcessor来处理的,这两个注解被处理的地方也是一样的,就是在一个bean被new出来之后,要填充属性的populateBean方法里。 会调用 AutoWiredAnnotationBea 阅读全文

posted @ 2021-01-23 12:39 MaXianZhe 阅读(2561) 评论(0) 推荐(0) 编辑

2021年1月22日

Netty之读取消息

摘要: 一 引言 如果我们不使用Netty而是直接使用JDK的话,可以使用socketChannel.read(ByteBuffer)的方式进行读取。而Netty牛逼的地方就是替我们把读取繁琐操作给做的,还把半包粘包给解决了。本文就来看看Netty是怎么做的 二 NioSocketChannelUnsafe 阅读全文

posted @ 2021-01-22 11:51 MaXianZhe 阅读(805) 评论(0) 推荐(0) 编辑

2021年1月21日

Redis源码之常见数据结构--ClusterNode

摘要: typedef struct redisDb { dict *dict; /* The keyspace for this DB */ dict *expires; /* Timeout of keys with a timeout set */ dict *blocking_keys; /* Ke 阅读全文

posted @ 2021-01-21 15:12 MaXianZhe 阅读(222) 评论(0) 推荐(0) 编辑

Netty之写成功后是怎么收到通知的

摘要: 有时候使用Netty要发送的两个消息有依赖关系,第一个发送成功才能发送第二个,代码里是可以这么写的 ChannelFuture channelFuture = ch.writeAndFlush(line + "\r\n"); channelFuture.addListener(new Generic 阅读全文

posted @ 2021-01-21 14:50 MaXianZhe 阅读(479) 评论(0) 推荐(0) 编辑

2021年1月16日

JMM之happens-before原则

摘要: 下面是Java内存模型下一些“天然的”先行发生关系, 这些先行发生关系无须任何同步器协助就已经存在, 可以在编码中直接使用。 如果两个操作之间的关系不在此列, 并且无法从下列规则推导出来, 则它们就没有顺序性保障, 虚拟机可以对它们随意地进行重排序。 在Java内存模型中,happens-befor 阅读全文

posted @ 2021-01-16 21:14 MaXianZhe 阅读(117) 评论(0) 推荐(0) 编辑

Netty解析之schedule方法的实现原理和心跳实现代码

摘要: 一 定时任务队列 如果我们想使用netty快速的开发心跳程序,简化下场景假设我们只需要客户端定期往服务端发送心跳消息,那么代码可以这么写 public class Pinger extends ChannelInboundHandlerAdapter { private Random random 阅读全文

posted @ 2021-01-16 16:11 MaXianZhe 阅读(940) 评论(0) 推荐(0) 编辑

2021年1月14日

复习复习nio的api之--SocketChannel read

摘要: 突然想到了netty是怎么读数据的,其实底层还是依赖jdk的nio,但是有想不起来了nio的api怎么调用的了。感觉找找过去自己写过的代码 private void read(SelectionKey key) { try { //建立写缓冲区 ByteBuffer readBuf = ByteBu 阅读全文

posted @ 2021-01-14 15:16 MaXianZhe 阅读(668) 评论(0) 推荐(0) 编辑

Netty之channelActive方法

摘要: 写这篇文章的原因是看一个开源框架的时候一个channelHandler的channelActive方法里有逻辑,嗯?这个channelActive看着这么眼熟呢,但是一时还想不起来。 不过自己凭借着印象外加idea搜索功能还是找到了触发channelActive的地方 AbstractChannel 阅读全文

posted @ 2021-01-14 15:02 MaXianZhe 阅读(8671) 评论(0) 推荐(0) 编辑

上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 42 下一页

导航