光速約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了,登機飛往巴西。...