Pistachio's Blog

Later equals never.

差分思想的应用

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......

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() ......

组合数&排列数

1、求组合数:外层for循环物品,内存for循环背包。 组合数{1,3}与{3,1}属于同一种组合 1234567for(int coin : coins) { for(int i = 0; i <= amount; i++) { if(i >= coin) { dp[i] += dp[i - coin]; } &......

【结构型】代理模式

一、定义为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。 可能由于性能、安全控制、分布式等原因,不能直接访问某个对象,因此需要加一层代理。 二、结构 三、使用场景Proxy的设计有时候需要手动写代码,大部分情况可以用工具自动生成。 分布式系统proxy的应用非常广泛。 123456789101112131415161718192021222324252627class ......

字符串和位运算的应用

判断字符串是否由相同字符组成,可以结合位运算来计算,提升效率。 一、原理1、对字符串每个单词进行位运算 12345// word1 = "abdeg" int bitmask1 = 0; bitmask = 0; for(char c : word1) { mask1 |= 1 << (c - 'a'); }......