随笔分类 - 后台+分布式
摘要:历史 CRDT (Conflict-free Replicated Data Type),即“无冲突复制数据类型”,它主要被应用在分布式系统中,保证分布式应用的数据一致性。文档协同编辑可以理解为分布式应用的一种。CRDT的本质是数据结构,通过数据结构的设计保证并发操作数据的最终一致性。 CRDT 于
阅读全文
摘要:背景 Operational Transformation(OT)算法是一种用于实时协同编辑的算法。它是通过将用户操作转换为操作序列并将其应用于文档来实现多用户同时编辑文档的一致性的。 在多用户同时编辑文档时,每个用户的操作将会相互影响,可能会导致冲突。为了解决这个问题,OT算法通过将用户操作转换为
阅读全文
摘要:来历 协同编辑是什么?顾名思义就是多人的编辑。当然也不是这么简单,还要加上有规律的、有先后的定语修饰。 为什么会有这个东西?我们先从场景分析入手: 对于使用git的程序员来说,以下场景再熟悉不过:从主干fork一个分支修改代码,花了半天修复之后准备合入到主分支,发现主分支已经被B修改了,此时如果历史
阅读全文
摘要:柔性事务是什么? 柔性事务(Flexible transaction),相对于刚性事务而言, 是一种相对于传统事务而言更加灵活和容错的事务处理模型。传统的 ACID 事务模型在保证数据的一致性和完整性方面表现出色,但是在分布式系统环境下容易出现性能瓶颈和单点故障等问题。柔性事务模型是一种分布式事务模
阅读全文
摘要:定义 可重入(reentrant)的定义1: 在单个线程中先后执行一段代码是安全的,所谓安全,即一段代码执行的时候,其不会因为进程的signal打断而产生不一致的结果(以及产生的副作用,如更改的全局变量)。signal中断如下: 可重入(reentrant)的定义2:但是,如果参考POSIX的定义,
阅读全文
摘要:1.背景 在单进程中对一个资源的并发操作需要加锁,而在分布式环境中加锁的方式则有所不同,需要分布式锁。 分布式锁在许多环境中是非常有用的原语,在这些环境中,不同的进程必须以互斥的方式使用共享资源。[1] 一般来说,实现分布式锁的方式有以下几种: 使用MySQL,基于唯一索引。 使用ZooKeeper
阅读全文
摘要:背景 跳表:跳表是多个有序链表平行连接组成的结构,由于链表没有额外的信息和操作方式来执行快速的定位,所以跳表用了多个链表分摊了数据查询的复杂度;但是用了多个链表是怎么加快的?因为额外增加的链表中间是有空隙的,所以可以用来跳过步骤。理想情况下,底层的间隙为1,依次往上,分别是间隔2,4,8。 但是实际
阅读全文
摘要:1. 背景 在各行各业的发展中,无论来源、记录方式如何,人们必然会积累各种各样的数据,并且倾向于通过统计数据分析现实情况,以此作为指导行动方向的依据。因此,统计学中一直围绕着数据进行建模与问题分析,给出对数据背后反映问题的判断。 由于计算机的发展,承载数据统计和分析的实体自然而然地变成了各式各样的计
阅读全文
摘要:发表于 2016-08-23 | 作者: rich | https://wereadteam.github.io/2016/08/23/Typesetter/ 引言 在 微信读书 App 中,排版引擎负责解析 EPUB 或 TXT 格式的书籍源文件,将排版后的书籍内容如文字、图像、注解等元素渲染至屏
阅读全文
摘要:本章节主要介绍现代IM系统中的消息系统架构以及基于表格存储(Tablestore)自研的Timeline模型构建的消息系统。基于Timeline构建的现代消息系统能够同时支持消息系统的多种特性,包括多端同步、消息漫游和在线检索,在性能和规模上能够实现全量消息云端存储和索引、百万TPS写入以及毫秒级延
阅读全文
摘要:https://tikv.org/docs/deep-dive/key-value-engine/b-tree-vs-lsm/ The B-tree and the Log-Structured Merge-tree (LSM-tree) are the two most widely used d
阅读全文
摘要:Git 命令 stash cherry-pick reset rebase I. 前提:git reflog命令 git stash show(show the file changed) git stash list(show the stash stack) stash的应用场景:本地分支正在开
阅读全文
摘要:三种语言的线程实现机制 C/C++ 不同Linux系统下提供的底层线程有好几种,其中POSIX类型的线程最为常用。POSIX线程是pthread开头的一系列C语言API,数据结构包括mutex,condition等。C语言多线程不是必须的,只在一些场合适用,而例如单线程的服务器如redis和ngin
阅读全文
摘要:问题1: 跟Github通信的时候,如果使用git协议,本地git bash使用git clone git@github.com:***.git方式下载github代码至本地时需要依赖ssh key, 长期吃灰不用服务器,再git clone可能会出现权限不足问题,一般都是SSH key失效或者SS
阅读全文
摘要:MyISAM: The default MySQL storage engine and the one that is used the most in Web, data warehousing, and other application environments. MyISAM is sup
阅读全文
摘要:Windows 控制台的batch控制 打开cmd, 这是个控制台, 就不讲windows的powershell了 1. @echo off 关闭路径显示 2. 可以使用vbscript: ...YOUR_CODE ... exit 例: vbscript:CreateObject("Shell.A
阅读全文
摘要:Node.js, Express的服务器搭建过程的问题 Express : node.js 的框架,2012年BYvoid说过,它是node.js官方唯一推荐的框架 怎么搭建项目? - 安装nodejs->npm->express - express 的问题: 2017年, express-gene
阅读全文