2023-06-02
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172package mainimport "fmt"func main()...
阅读全文
2023-06-01
传送到leetcode: leetcode-104
123456789101112131415161718192021222324252627282930313233/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *...
阅读全文
2023-05-31
原理:定义lru结构的时候主要包含一个哈希表和双向链表,哈希表便于获取指定key的数据(复杂度O(1)),把每次热点数据都更新到表头,则从表头到表尾访问热度依次递减,溢出的时候直接删除表尾数据即可。
go代码实现:
12345678910111213141516171819202122232425262728293031323334353637383940...
阅读全文
2023-05-28
推断下面代码输出结果:12345678910111213141516var f = func(i int) { fmt.Println("x")}func main(){ f := func(i int) { println(i) if i > 0 { f(i-1) ...
阅读全文
2023-05-28
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889// 是否冲突// ...
阅读全文
2023-05-21
不可复用的简单实现其实就是基于有缓冲channel的特性,每创建一个goroutine就向goroutine里面发送一个数据,goroutine任务完成之后就消费一条channel里面的数据,当channel满了之后就阻塞。
123456789101112131415161718192021222324func main() { // 最多50个g...
阅读全文
2023-05-15
先看下面代码,是否有问题。
1234567func main(){ const sh = "zhang" fmt.Println(&sh, sh) var nl string = "san" fmt.Println(&nl, nl)}
运行结果:
123☁ te...
阅读全文
2023-03-26
概念二叉排序树(Binary Sarech/Sort Tree)或者是一颗空树;或者是具有如下性质的二叉树:
(1) 若它的左子树不空,则 左子树 上所有结点的值 均小于 它的根结点的值;(2) 若它的右子树不空,则 右子树 上所有结点的值 均大于 它的根结点的值;(3) 它的 左、右子树又分别为二叉排序树 。
比如一下值: 8、3、10、1、...
阅读全文
2023-03-25
方式概念
前序遍历:递归遍历根->左->右
中序遍历:递归遍历左->根->右
后续遍历:递归遍历左->右->中
层序遍历:由根节点开始一层层的遍历
其实前序遍历、中序遍历、后序遍历里面的前、中、后指的是根结点的位置。以下面这棵树来举例说明。
存储结构12345type Node struct { Valu...
阅读全文
2023-03-03
分布式锁当我们对一份数据进行修改的时候需要先读取,再修改,由于读取和修改不是原子操作,在并发的情况下,无法保证前后数据是一致的,在单点服务中我们可以使用本地锁来实现(比如:sync.Mutex),但是对于分布式系统服务,本地锁却无能为力。这时候就需要使用分布式锁来保证数据的一致性。
很多应用场景是需要系统保证幂等性的(如api服务或消息消费者),并发情况下...
阅读全文
上一页 1 2 3 4 5 下一页