blob: e42c4d56a15b7c28f9aeb897761dadfc01d727a4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
---
title: me
---
* backend cloud software engineer
* lang: go
* infra: kubernetes
## tidbits
### #go
* layout packages by what they do, not by their abstract type
* use channels sparingly. write synchronous methods and allow the caller to make it async
* `append` modifies the underlying slice, you'll only make this mistake once
* define interfaces where you use them
* `make([]int, 5)` has a length and capacity of 5. `([]int, 0,5)` has a length of 0 and capacity of 5.
`append()` will only do what you want with the latter
* don't use `init()`
* TFBO (test, fix, benchmark, optimise)
* more CPU != more performance
more CPU == more Contention
### #git
* `git reflog`
* `git commit --fixup=<COMMITISH>`
`git rebase origin/main --autosquash`
## resources
* [`proc.go`](https://cs.opensource.google/go/go/+/refs/tags/go1.23.0:src/runtime/proc.go)
* [proposal: runtime/metrics: define a recommended set of metrics](https://github.com/golang/go/issues/67120)
## books
* [Designing Data Intensive Applications](https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063)
* [Database Internals](https://www.oreilly.com/library/view/database-internals/9781492040330)
* [Efficient Go](https://www.oreilly.com/library/view/efficient-go/9781098105709)
|