ssingularity的个人日志

怕什么真理无穷,进一步有进一步的欢喜

深入理解Nginx(一)——安装、命令与配置

这篇博文主要从安装、常用命令以及配置文件常用配置项三个角度着手,对于Nginx进行一个入门级的介绍。Nginx安装常用命令常用配置项

Redis设计与实现(四)——复制与集群

复制在Redis中用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器Redis的复制功能分为同步和命令传播两个操作:同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态命令传播操作则用于在主服务器的数据库状态被修改时,将对应的命令发给从服务器

Linux I/O与Zero-copy

背景简述传统的Linux操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和用户进程地址空间定义的缓冲区之间进行传输。设置缓冲区最大的好处是可以减少 I/O 的操作,如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的

Redis设计与实现(三)——单机数据库实现

数据库数据库结构Redis将所有数据库都保存在服务器状态redisServer结构的db数组中,数据库的具体存储都在redisDb结构中,也即每一个redisDb结构代表一个数据库,Redis默认会创建16个数据库,并通过db字段存储对应的指针,另外在Redis内部,客户端状态redisClient

Redis设计与实现(二)——基础数据结构和对象系统

这篇博客主要介绍在Redis中的各种基本数据结构以及由其实现的各种高层对象SDS在Redis中没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组),而是自己构建了一种名为简单动态字符串(Smple Dynamic String,SDS)的类型,并作为Redis的默认字符串表示SDS的定义如下

Redis设计与实现(一)——基础指令

通用指令INFO [section] // 查看服务器情况SELECT database // 选择数据库KEYS patterns // 查看所有键 (O(n))DBSIZE // 查看键的数量(O(1))SCAN cusor [MATCH patterns] [COUNT count] (游标查

分布式事务原理

XA强一致性分布式事务XA中主要定义了三个核心组件,分别是应用程序、资源管理器和事务管理器应用程序: 定义各个分支事务边界,即开始和结束同时在事务边界内对资源进行操作资源管理器:主要由数据库本身担任,提供访问、操作资源的能力事务管理器:负责分配事务唯一标识,监控事务的执行进度,并负责全局事务的Pre

分布式事务概述

不管是流程本身导致分布式的数据库调用,比如:订单微服务下单,调用库存微服务扣减库存(此时数据库可能是一个数据库),还是数据库本身的分布式,比如:单个流程调用涉及订单数据库和库存数据库两个数据库(此时调用流程可能是在一个应用中),都会导致分布式事务的问题CAP理论中的P主要指的是分区可容忍性,也即在网

事务实现原理

事务的核心为ACID:原子性,一致性,隔离性,持久性其中,隔离性是由锁和MVCC机制实现的,这在之前的一篇博客中已经给出,原子性和持久性是由Redo Log实现的,一致性是由Undo Log实现的Redo Log是物理日志,Undo Log和Binlog都是逻辑日志,物理日志和逻辑日志的区别在于:前

Netty源码阅读9——时间轮

时间轮主要处理延时任务问题,jdk原生地提供了Timer和ScheduledExecuterService解决了该问题,前者采用了绝对时间+最小堆实现,后者采用了DelayQueue和多线程基于生产者消费者模式实现,它们在增加任务和取消任务上都需有O(logn)的时间复杂度,在面对大量任务时会出现性