求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

Redis 系列 事务

开启 redis 探索新篇章

Redis 事务使用非常简单,事务模型很不严格,不能像使用关系数据库事务一样来使用 Redis。 Redis 事务根本不能算「原子性」,而仅仅是满足了事务的「隔离性」,隔离性中的串行化——当前执行的事务有着不被其它事务打断的权利。 事务里没有 if-else 分支逻辑,事务的特点是一口气执行,要么全部执行要么一个都不执行. 事务 MULTI,EXEC,DISCARD ...

Redis 系列 主从同步

开启 redis 探索新篇章

分布式系统 的最大难点,就是各个节点的状态如何同步。 CPA原理 一句话概括 CAP 原理: 网络分区发生时,一致性和可用性两难全 C - Consistent 一致性 A - Availability 可用性 P - Partition tolerance 分区容错性 分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的,这意味着必然会有网络断开的...

设计模式 系列 装饰者模式

开启 设计模式 探索新篇章


设计模式 系列 工厂模式

开启 设计模式 探索新篇章

简单工厂模式 定义一个工厂类,根据传入的参数不同返回不同的实例,被创建的实例具有共同的父类或接口。 把实例创建的过程放在单独的一个工厂类中,应用中按照接口编程。 适用场景 首先由于只有一个工厂类,所以工厂类中创建的对象不能太多,否则工厂类的业务逻辑就太复杂了,其次由于工厂类封装了对象的创建过程,所以客户端应该不关心对象的创建。总结一下适用场景: 需要创建的对象较少。...

设计模式 系列 单例模式

开启 设计模式 探索新篇章

单例模式 确保一个类只有一个实例,并提供一个全局访问点 把某个类设计成自己管理的一个单独实例,同时避免其他类再自行产生实例。要想取得单例类的实例,通过单例类是唯一途径。 提供对这个单例类实例的全局访问点 懒汉模式(基于volatile的双重检查锁定的方案) 非线程安全的延迟初始化对象的示例代码: 1 2 3 4 5 6 7 8 9 public class Un...

设计模式 系列 Middleware模式

开启 设计模式 探索新篇章

核心思想:核心逻辑与通用逻辑分离,适用于日志记录、性能统计、安全控制、事务处理、异常处理等。 Handler是业务的核心逻辑,请求在进入核心业务逻辑之前会进过很多的中间层。比如一个请求在进入核心的Handler的时候会经过日志和Metric的中间层,产生相关的日志和打点。Response返回的时候会先经过Metrics,然后再经过日志。 中间件内部的执行顺序: ...

zookeeper 系列 常用命令

开启 Zookeeper 探索新篇章

部署 启动 ./zkServer.sh start ../conf/zoo1.cfg ./zkServer.sh start ../conf/zoo2.cfg ./zkServer.sh start ../conf/zoo3.cfg 停止 ./zkServer.sh stop ../conf/zoo1.cfg ./zkServer.sh stop ../conf/zoo2.cfg ...

Netty 系列 零拷贝

Netty 中的 Zero-copy 与 OS 层面上的 Zero-copy 不太一样(见/io模块/零拷贝), Netty的 Zero-coyp 完全是在用户态(Java 层面)的, 它的 Zero-copy 的更多的是偏向于 优化数据操作 这样的概念。 零拷贝 Netty 提供了 CompositeByteBuf 类, 它可以将多个 ByteBuf 合并为一个逻辑上的 B...

Netty 系列 长链接

HTTP 1.1 规定了默认保持长连接(HTTP persistent connection),数据传输完成时保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下(IP:port)继续用这个通道传输数据,相反的就是短连接。HTTP的 Keep-alive要让一个 TCP连接为持久连接。 心跳检测 用来检测一个系统是否存活或者网络链路是否通畅的一种方式,其一般做法是定时向...

IO 系列 操作系统级IO

解析 IO...

基础知识篇 每个进程中都有一个用户文件描述符表,表项指向一个全局文件表中的某个表项,全局文件表的表项有一个指向内存的索引节点指针(inode,包括偏移量等信息),每个inode 唯一标识一个文件。如果同时有多个进程打开同一文件,它们的用户文件描述符表的表项指向不同的全局文件表的表项,但是这些全局文件表的表项会指向同一个inode。 页缓存(pagecache) 页缓存是操作系统实现的一...