Pistachio's Blog

Later equals never.

分布式事务基础理论CAP/BASE

本地事务使用本地事务,更多是通过关系型数据库数据库来控制事务,利用数据库本身的事务特性ACID实现,因此称数据库事务。 由于主要靠关系型数据库控制事务,而数据库和应用通常在同一个服务器,因此说关系型的数据库事务称为本地事务。 分布式事务提供服务的各个节点分布在不同的机器上,相互之间通过网络交互,但网络不稳定会出现不一致的问题,因此需要更进一步的理论支持。 CAP理论CAP分别是Consist......

自定义排序

1、构造题目所需的排序方法,例如根据 两数之差 从小到大排列: 1234vector<vector<int>>tasks = {{1,3},{2,4},{10,11}, {10,12},{8,9}};sort(tasks.begin(), tasks......

差分思想的应用

LC253. 会议室 II 给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。 示例 1: 12输入:intervals = [[0,30],[5,10],[15,20]]输出:2 示例 2: 12输入:intervals = [[7,10],[2,4]]输出......

分布式Id

前言在实习期间做的是手百APP动态UGC相关的业务,其中FeedId生成是常见的问题,因此总结一下 1、数据库自增id 2、UUID( Universally unique identifier) 生成id 3、Redis生成id 4、 Snowflake IDs 5、UidGenerator https://github.com/baidu/uid-generator/blob/maste......

go可变参数

add()接受不定量长度的参数,并且是int类型 12345678910111213141516func main() { add(1, 2) // 3 add([]int{1, 2, 3, 4}...) // 10 num := []int{1, 2, 3, 4} add(num[1:]...)// 9}func add......

消息队列

消息队列的作用 异步通信:消息不需要立刻处理,把消息放在消息队列中,在需要的时候再去处理 解耦:允许独立扩展或修改两边的处理过程,只需确保它们遵守同样的结构约束 削峰:在访问量剧增的情况下,使用消息队列顶住突发时的访问压力 缓冲:有助于控制和优化数据经过系统的速度,解决生产消息和消费消息处理速度不一致的情况(通常是生产速度比较大) 模式1、点对点模式2、发布订阅模式消息生产者(发布)把消息......

Raft算法

前言如果有多个机器(集群),则需要保证每个机器数据的一致性,这时候则需要分布式共识算法。Raft是实现分布式共识算法的协议,除了Raft,还有Paxos、ZAB、Gossip等。 Leader election每个节点有三个状态,分别是Leader、Follower或Candidate 一开始的时候,所有节点都处于Follower的状态。每个结点都有一个Election Timeout(随......

rune类型

使用场景1、Go字符串不支持下标修改,需要转byte或者rune才能改。byte是uint8的别名,而rune是int32的别名 1234str := "hello"str1 := []byte(str)str1[0] = 'x'fmt.Println(string(str1)) // xello 2、算法题:abcde你好 =>......

context

一、简介go并发编程中,用一个goroutine处理一个任务,而它又会创建多个goroutine来负责不同子任务的场景很常见。这种场景往往需要在api边界之间、过程之间传递截止时间、取消信号、以及其它请求数据(总的来说就是goroutine之间的通信),这时候便可以使用context。 二、使用场景 At Google, we developed a context package that......

二叉搜索树

二叉搜索树(Binary Search Tree,BST)是一种二叉树,它或者是一棵空树,或者是具有下列性质的二叉树: 若左子树不空,则左子树上所有结点的值均小于它的根结点的值,右子树上所有结点的值均大于根结点的值 中序遍历树的每个结点是有序的 验证二叉搜索树 1234567891011121314151617181920212223242526272829func main() ......