後端程式設計師需要知道的一些資料

2021-10-09 21:02:32 字數 3460 閱讀 5180

光速約3.00×108

m/s, 即每秒30w公里,每秒繞地球七圈半

深圳到北京距離大約為2000km,rtt延遲最少為2*2000km/300,000km=13ms

2023年提出的乙個bug,電子郵件無法傳送到500英里以外

2的次方

真實值近似值

位元組27

12828

256210

1024

1 thousand

1 kb

21665,536

64 kb

2201,048,576

1 million

1 mb

2301,073,741,824

1 billion

1 gb

2324,294,967,296

4 gb

2401,099,511,627,776

1 trillion

1 tb

在2023年,jeff dean在一次演講中給出了每個程式設計師都應該知道的數值列表,但這些資料收集於2023年,最初發表在 teach yourself programming in ten years。這些資料適用於粗略估算,並不是乙個準確值,重要的是理解這些數字的量級差異。-ns

µsms

速度l1 cache reference

0.5 ns

branch mispredict

5 ns

l2 cache reference

7 ns

14x l1 cache

mutex lock/unlock

25 ns

main memory reference

100 ns

20x l2 cache, 200x l1 cache

compress 1k bytes with zippy

3,000 ns

3 µs

send 1k bytes over 1 gbps network

10,000 ns

10 us

100 mb/s

ssd random read

150,000 ns

150 µs

~1gb/sec ssd

read 1 mb sequentially from memory

250,000 ns

250 µs

4 gb/s

round trip within same datacenter

500,000 ns

500 µs

read 1 mb sequentially from ssd*

1,000,000 ns

1 ms

1 gb/s

~1gb/sec ssd, 4x memory

disk seek

10,000,000 ns

10 ms

20x datacenter roundtrip

read 1 mb sequentially from disk

20,000,000 ns

20 ms

30 mb/s

80x memory, 20x ssd

send packet ca->netherlands->ca

150,000,000 ns

150 ms

生成包含30個縮圖的結果頁需要多長時間?

30 seeks * 10 ms/seek + 30 * 256k / 30 mb/s = 560 ms

10 ms/seek + 256k read / 30 mb/s = 18 ms

隨著硬體的發展,硬體的讀寫速度已經成倍的提公升了。從2010到2023年,network,ssd和disk的速度提公升明顯。

如下所示:

2010

2020

效能提公升倍數

埠tcp

udp描述20y

ftp - 預設資料埠21y

ftp - 控制埠22y

二進位制十進位制

1000 0000

1281100 0000

1921110 0000

2241111 0000

2401111 1000

2481111 1100

2521111 1110

2541111 1111

255網路標誌位

ip位址範圍

私有位址範圍

私有位址-cidra0

0.0.0.0 - 127.255.255.255

10.0.0.0 - 10.255.255.255

10.0.0.0/8b10

128.0.0.0 - 191.255.255.255

172.16.0.0 - 172.31.255.255

172.16.0.0/12

c110

192.0.0.0 - 223.255.255.255

192.168.0.0 - 192.168.255.255

192.168.0.0/16

d1110

224.0.0.0 - 239.255.255.255

e1111 0

240.0.0.0 - 247.255.255.255

上下文切換大概30µs的cpu開銷,最佳實踐方式是工作執行緒數等於cpu執行緒數,並以非同步/非阻塞方式編寫**。

64 ~ 1500 byte,如果mtu設定得不合理會導致ip分片與重組,從而導致網路傳輸質量問題。

程式設計師需要知道ThreadLocal的這幾個點

threadlocal是什麼呢?在實際開發中經常被用來繫結使用者資訊 日誌號。資料庫連線等等。這樣一來,我們編碼時就不用通過傳遞引數方式而影響業務邏輯。就如名字一般,我們可以簡單的認為它的作用就是把資料繫結到當前執行緒上,然後用於後續的操作。既然是將資料繫結到當前執行緒上,那最方便高效的資料儲存方式...

木訥的程式設計師需要知道的事情 一

最近讀了一本書,叫做極客與團隊,英文名是team geek a software developer s guide to working well with others,感覺不錯,這裡做一些筆記記錄下來。這本書講的是作為一名軟體工程師怎麼與團隊中的其他人溝通,怎麼影響團隊中的其他人。很多軟體工程...

程式設計師OR非程式設計師,有些程式設計的事需要知道

我們的日常生活深受軟體和web開發的影響。越來越多的人意識到了軟體的重要性,例如,假如你想前往巴西看世界盃,你應該首先在網上預訂機票,訂機票時應該用你的信用卡支付費用,成功預訂機票後,你的電子郵箱會收到乙個電子機票。當你到達機場時,你的身份證資訊會被移民資料庫系統檢測,當這些都ok了,登機飛往巴西。...