算法-设计数据结构

双向队列,跳表等

April 4, 2022 · 6 min · Lambert Xiao

LevelDB总览

level,多层级

April 3, 2022 · 1 min · Lambert Xiao

leveldb内部实现之compact

了解一下leveldb的WAL是怎么做的

March 31, 2022 · 4 min · Lambert Xiao

leveldb内部实现之journal

了解一下leveldb的WAL是怎么做的

March 31, 2022 · 9 min · Lambert Xiao

leveldb内部实现之memdb

长成这样,真是看不出这是个跳表

March 30, 2022 · 7 min · Lambert Xiao

算法-只出现一次的数字

挺恶心的位运行

March 27, 2022 · 2 min · Lambert Xiao

golang-http2实现

扒开go源码,看看http2在go里的实现

March 25, 2022 · 22 min · Lambert Xiao

golang-runtime

func chansend(c *hchan, ep unsafe.Pointer, block bool, callerpc uintptr) bool func chanrecv(c *hchan, ep unsafe.Pointer, block bool) (selected, received bool) func deferproc(siz int32, fn *funcval)

March 25, 2022 · 1 min · Lambert Xiao

LevelDB是干嘛的

level,多层级

March 25, 2022 · 11 min · Lambert Xiao

Golang-epoll

go怎么用的epoll

March 24, 2022 · 15 min · Lambert Xiao

算法-全O(1)的数据结构

写在字节4面后

March 23, 2022 · 3 min · Lambert Xiao

golang-怎么用的epoll

March 17, 2022 · 0 min · Lambert Xiao

linux-常用命令

mtr

March 17, 2022 · 1 min · Lambert Xiao

什么是happend-before

字节面试问到了,留个记录

March 17, 2022 · 1 min · Lambert Xiao

拥塞控制算法都有哪些

March 17, 2022 · 0 min · Lambert Xiao

网络IO的演变

一颗红黑树,一个就绪句柄链表,一个进程等待队列,少量的内核cache

March 15, 2022 · 1 min · Lambert Xiao

算法-BFS

200. 岛屿数量 200. 岛屿数量 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 func numIslands(grid [][]byte) int { m, n := len(grid), len(grid[0]) bfs := func(i, j int) { // 从[i, j]位置开始扩散 q := [][]int{{i, j}} for len(q) != 0 { e := q[0] q = q[1:] x, y := e[0], e[1] if x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1' { grid[x][y] = '0' q = append(q, []int{x+1, y}) q = append(q, []int{x-1, y}) q = append(q, []int{x, y+1}) q = append(q, []int{x, y-1}) } } } cnt := 0 for i := 0; i < m; i++ { for j := 0; j < n; j++ { if grid[i][j] == '0' { continue } bfs(i, j) // 为什么找到了一块陆地就可以增加一个岛屿数呢, // 是因为在bfs方法中会将跟这块陆地相连的其他陆地染色,不会再次重复计算 cnt++ } } return cnt } 301....

March 13, 2022 · 2 min · Lambert Xiao

算法-DFS

22. 括号生成 22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 func generateParenthesis(n int) []string { ans := []string{} var dfs func(lb, rb int, s string) dfs = func(lb, rb int, s string) { if lb > rb { return } if lb == 0 && rb == 0 { // 括号用完了,并且是合法的 if isValid(s) { ans = append(ans, s) } return } if lb != 0 { dfs(lb - 1, rb, s + "(") } if rb !...

March 13, 2022 · 5 min · Lambert Xiao

算法-hash表

hash表也算是刷题中的老常客了

March 13, 2022 · 0 min · Lambert Xiao

算法-LRU和LFU

经典面试题了属实是

March 13, 2022 · 3 min · Lambert Xiao