ref: https://vivek-singh.medium.com/system-design-cheat-sheet-318ba2e34723
本篇文章是一個筆記文,紀錄關於 System Design 路上常遇到的架構與元件,譬如
1. LoadBalancer
2. Caches
3. Queues
4. Configuration Service
5. API Gateway
6. Service Mesh
7. CDN
8. Cassandra
9. Snowflake
10. Numbers
每個概念都還會附上一些相關影片與文章,也因為是個筆記內容,因此每個元件的介紹都不會非常詳細,都是小小段落介紹每個元件的最基本概念。
譬如 LoadBalancer 的筆記有
1. L4/L7 兩種的差異
2. AWS 上 ELB/ALB/NLB 的三種差異
3. LB 的演算法, Round Robin,Weighted RR, Least Connection/Response Time/Resource based 等
Caches
1. 實作有 Memcached, Redis 等相關專案
2. 什麼時候會使用 Memcached:
a. 需求簡單,譬如單純 Key/Value 字串,可以輕易地透過調整 cores/threads 來調整效能。
b. Volatile,沒有儲存機制
c. 只有 LRU 的 Cache 演算法
d. Key 最多 250B, Value 最多 1MB
3. 什麼時候使用 Redis
a. 需要儲存 object,而非單純 string
b. 支援多種演算法
c. 支援 data store,可以達到 non-volatile 效果
d. 可以支援 Set/Hash/List/Sorted Set 不同型態
這類型的文章對於踏入 System Design 能夠提供一個簡易的入門介紹,先有哪些類別需要學習,再針對每個類別獨立學習也是一個不錯的學習路徑。
同時也有4部Youtube影片,追蹤數超過63萬的網紅Hana's Lexis,也在其Youtube影片中提到,Hello các bạn! Hôm nay, các bạn hãy cùng mình học từ vựng tiếng anh khó thông qua tin tức về sự tăng giá chóng mặt của Dogecoin nhé! Xem lời thoại dư...
「c volatile」的推薦目錄:
- 關於c volatile 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於c volatile 在 Facebook 的最讚貼文
- 關於c volatile 在 阿尼尛 Anima Facebook 的最讚貼文
- 關於c volatile 在 Hana's Lexis Youtube 的最佳解答
- 關於c volatile 在 lifeintaiwan Youtube 的最佳解答
- 關於c volatile 在 まひとくん。ܤ Youtube 的最讚貼文
- 關於c volatile 在 [問題] volatile的正確用法- 精華區C_and_CPP - 批踢踢實業坊 的評價
- 關於c volatile 在 How to Answer for What is Volatile ? Embedded C interview ... 的評價
c volatile 在 Facebook 的最讚貼文
How to beat savings inflation? I have been thinking to invest my savings into something actually profitable recently, since stock market & crypto market seems pretty volatile and risky lately.
Had a virtual session with them, and this property investment seems promising, don't believe me? Arrange your own virtual session now by registering with this link, to find out more and understand better:
https://docs.google.com/forms/d/e/1FAIpQLSemUlTumVcMxA4j9TP-vMwPuSY7vsHGqpRZu3E4FGt5Y6dMhg/viewform?vc=0&c=0&w=1&flr=0
✨Specially for Alvinators, you’ll be getting a free smartlock on me, upon completion of purchase, by registering using this link. 😉
Hotline:
+60 11 5638 3629
Whatsapp https://wa.link/7cf1k5
c volatile 在 阿尼尛 Anima Facebook 的最讚貼文
#尛外電 就愛耳屎這一味 蟑螂喜歡在人類的耳朵吃吃睡睡
----------------------------
Artist: Pan Luna
----------------------------
你知道嗎,耳朵可能是小強最愛待的地方之一。
美國北卡羅萊納州立大學昆蟲學家夏爾(Coby Schal)表示,蟑螂容易受到揮發性脂肪酸(volatile fatty acids)吸引。揮發性脂肪酸常見於麵包、酒、起司中,以及──你猜到了──人類的耳屎。
「對蟑螂來說,爬進耳朵裡面,就像是進入到一個可以安心吃吃睡睡的溫馨空間,因為耳朵會散發出吸引牠們的味道,」夏爾表示。
蟑螂在沒水沒食物的情況下,能活到一周。如果牠們意外跑進你的耳朵裡,他們其實會活得挺滋潤的。
由於蟑螂腳上帶刺,耳朵被蟑螂入侵時若擅自用鑷子或棉花棒想將牠驅逐,反而可能弄巧成拙,將蟑螂越推越深,傷及耳膜造成聽力受損,甚至引發感染。
雖然蟑螂不是唯一會跑進人類耳朵裡的生物,卻是很常見的訪客。根據2006年一項為期兩年的南非調查中,在24起耳朵被昆蟲入侵的通報案例裡,近42%的兇手是蟑螂,其次為蒼蠅與甲蟲。
2018年,美國佛州一名女子凱蒂(Katie Holley)夜半睡覺時被蟑螂爬入耳朵,9天後才順利將入侵小強成功移除。
尛評:突然覺得耳朵癢癢的。
#敬佩能跟蟑螂和平共處9天的凱蒂 #尛編
--
Source: The Verge
➤ 我們的IG https://reurl.cc/A848rK
➤ 你知道尛? https://reurl.cc/4mjkGD
➤ 我們的MeWe https://mewe.com/p/ani3small/
➤ 我們的YT https://www.youtube.com/c/Ani3small
c volatile 在 Hana's Lexis Youtube 的最佳解答
Hello các bạn! Hôm nay, các bạn hãy cùng mình học từ vựng tiếng anh khó thông qua tin tức về sự tăng giá chóng mặt của Dogecoin nhé!
Xem lời thoại dưới đây để học từ vựng tiếng Anh khó của ngày hôm nay nha.
Tin tức nóng hổi nhất trên sàn tiền ảo ngày thứ 3-4 vừa qua chính là về sự **spike** (sự tăng đột biến) của giá dogecoin, vào thời điểm mình làm video thì giá của doge đã **surge** (tăng mạnh) lên tới mức **all-time high** (giá cao nhất từ trước tới nay) là hơn 60 cents 1 đồng, so với giá hồi đầu năm nay chỉ ở mức dưới 5 cents, nghĩa là tăng 12 lần trong 1-2 tháng. Doge vốn là 1 **meme cryptocurrency** (đồng tiền ảo bắt nguồn từ trò đùa trên mạng) phỏng theo chú chó Shiba Inu nổi tiếng với những câu cảm thán sai ngữ pháp như: many learns, much wow, v.v. Nhiều chuyên gia tài chính khuyên các nhà đầu tư cá nhân cần cẩn trọng vì doge có tất cả các **hallmark** (dấu hiệu) của một loại tài sản bất ổn, dễ khiến ai **imprudent** (không cẩn trọng) mà đổ hết tiền vào thì có thể **hemorrhage** (mất máu nhiều), và kiệt quệ tài chính. Nếu số đông bị điêu đứng vì doge thì khi doge đi qua xong sẽ để lại một **carnage** (vụ thảm sát). Tuy nhiên lời chuyên gia không thấm vào đâu so với độ **hype** (sự thổi phồng) về tiềm năng của doge, sự **FOMO** (sự sợ bỏ lỡ việc vui), sự **speculation** (sự suy đoán) của các **paper hands** (nhà đầu tư muốn bán nhanh để kiếm lời). Hiện giờ cơn **frenzy** (cơn hỗn loạn) mua doge vẫn **persist** (vẫn diễn ra), **accompany** (kèm theo) chuyện đó là việc doge đạt được nhiều **landmark** (bước ngoặt) về giá mới chỉ trong vài tiếng đồng hồ. Những nhân vật **prominent** (tầm cỡ) như Elon Musk, Mark Cuban vẫn tiếp tục **leverage** (tận dụng) mxh để hết sức **extol** (ca tụng) doge rằng có nhiều tiền năng, muốn giúp **legitimize** (chính thống hoá) đồng doge, **demystify** (làm sáng tỏ) để crypto ko còn là thứ gì **intimidating** (đáng sợ). Cả Elon Musk và Mark Cuban đều có những **tweetstorm** (tràng dài tweet) về doge để **buoy** (làm phấn khích) cư dân mạng. Elon thì sắp làm host chương trình hài tối thứ 7 SNL, Mark Cuban thì vừa lên show Ellen để tung hô về doge. Nhiều sàn giao dịch như webull, etoro, gemini đều tuyên bố cho phép người dùng giao dịch đồng doge khiến **phenomenon** (hiện tượng) về doge càng bùng lên mạnh mẽ. Hiện giờ nhắc tới doge, người hiểu biết thì cảm thấy **apprehension** (sự e sợ) sẽ sớm có **mayhem** (sự hỗn loạn). Người chơi những đồng khác thì buông lời **jeer** (lời chế nhạo) người chơi doge vì đồng doge rất **volatile** (hay lên xuống thất thường). Còn phía doge thì đáp lại với câu **refrain** (câu xài đi xài lại nhiều lần) là “chúc nghèo vui vẻ".
--------------------
Click vào link tham gia Nuii Gang để nhận các đặc quyền sau! https://www.youtube.com/c/HanasLexis/join
1. Daily vlog đời sống chỉ chia sẻ cho Nuii Gang xem
2. Live stream riêng mỗi tháng trả lời câu hỏi nhiều bình chọn
3. Hẹn gặp ngoài đời khi mình tới thành phố bạn sống
4. Reply comment đăng trên video trong vòng 24h đầu
5. Hiện tên bạn cảm ơn trong end credits ở cuối video
--------------------
Q: Hana là ai làm gì ở đâu?
A: Hana hiện làm software engineer / lập trình viên ở Mỹ, là cựu chuyên Anh trường Phổ Thông Năng Khiếu, từng đạt 9.0 IELTS General, từng có quá khứ "huy hoàng" bỏ học, sống vô gia cư, làm chui, v.v không mấy lỗi lạc, bắt đầu làm Youtube từ 3/2019 sau khi chán ngán nghe chia sẻ tiếng Anh nhạt nhẽo, khô khan, không thực tế trên mạng.
Q: Hana's Lexis có nghĩa là gì?
A: Hana's Lexis có thể hiểu là vốn từ vựng của Hana, dùng từ chuyên ngành "lexis" nhằm hướng tới phân khúc người học tiếng Anh ở trình độ khá, đang phấn đấu lên giỏi. Cần lưu ý dấu 's sở hữu cách, vì đây không phải tên riêng.
Q: Kênh Hana's Lexis làm về nội dung gì?
A: Chia sẻ tiếng Anh xịn, chất, chuẩn, ví dụ như về sắc thái từ vựng, độ tự nhiên trong cách dùng ngôn ngữ, cách phát âm chuẩn Mỹ, những điều mà trường lớp không hoặc ít dạy. Một vài format / hình thức video Hana tự sáng tạo ra cho người xem thấy tiếng Anh thú vị hơn gồm Dịch Ngựa, Truyện Chêm, IELTS Khẩu Nghiệp, v.v. Ai bắt chước là lêu lêu copycat nhe.
--------------------
✪ Các thì tiếng Anh thật sự dùng trong văn nói?
➥ https://youtu.be/0mhWAFhs7KQ
✪ Học nhồi 100 từ vựng/ngày?
➥ https://youtu.be/Uq3KjJA8BHQ
✪ Bốn sai lầm khi phát âm tiếng Anh?
➥ https://youtu.be/9wHHy1JaSeQ
✪ Dịch ngựa cho Đen Vâu
➥ https://youtu.be/TgkI73t4vDc
--------------------
✪ WEBSITE: https://hanaslexis.com
✪ FACEBOOK: https://facebook.com/hanaslexis
✪ INSTAGRAM: https://instagram.com/hana.s.lexis
✪ EMAIL (vui lòng chỉ liên hệ về công việc): work@hanaslexis.com
➥ #hanaslexis #tuvung #tienganh
--------------------
© Bản quyền thuộc về Hana's Lexis
© Copyright by Hana's Lexis ☞ Do not Reup
c volatile 在 lifeintaiwan Youtube 的最佳解答
一個不穩定的話題,但台灣的一個巨大的新聞故事,所以我不得不對此發表意見!
A volatile topic but a huge news story in 台灣 so I just had to have my say on it!
#台灣 #同性婚姻 #samesexmarriage
去看看我的Patreon,您可以幫助支持該頻道並訪問一些令人驚嘆的VVVIP附加功能:
https://www.patreon.com/lifeintaiwan2017
Check out my Patreon where you can help support the channel and access some AWESOME VVVIP Extra Features:
https://www.patreon.com/lifeintaiwan2017
Subscribe! 訂閱吧 ---- : https://www.youtube.com/c/lifeintaiwan
Facebook/FB ---- : https://www.facebook.com/lifeintaiwan2017
Instagram/IG ---- : https://www.instagram.com/lifeintaiwan2017
看其他的影片:
Check out some other videos:
台灣VS中國
https://youtu.be/L1FDjHDIXtI
與黑素斯一起泡餅乾 BISCUIT dunking with JESUS!!
https://www.youtube.com/watch?v=SeJgp6KvmvY
台灣的外國人吃3種米血! I EAT 3 kinds of PIG's BLOOD cake!
https://www.youtube.com/watch?v=mjWRxvltJdw&t=5s
外國人在台灣吃傳統壽司 BEST SUSHI in 台灣
https://www.youtube.com/watch?v=AfutAW6k7DE&t=171s
台灣的最好吃美式早餐 ! Best AMERICAN Breakfast in TAIWAN???
https://www.youtube.com/watch?v=6TpH1Cu_-10&t=334s
My Gear:
My camera: http://s.click.aliexpress.com/e/YVbuNZN
My camera & lens kit: http://s.click.aliexpress.com/e/fIa27iy
My nighttime lens: http://s.click.aliexpress.com/e/uNzzneE
My microphone: http://s.click.aliexpress.com/e/RfAUR3F
My video light: http://s.click.aliexpress.com/e/Eu3jmMb
My cheap tripod: http://s.click.aliexpress.com/e/ji2JAee
My computer: http://s.click.aliexpress.com/e/Q7Qn2Z7
拍攝景點:
Shooting Location:
太原公園,台中市
Taiyuan Park, Taichung City
送給我信吧!Send me something interesting!
404台中市北區漢口路四段196號
196 Hankou Road, Section 4, Taichung City, TAIWAN 404
音樂:
Music:
Dj Quads - So Proud (Vlog No Copyright Music)
Music promoted by Vlog No Copyright Music.
Video Link: https://youtu.be/VN3Vm_utrYU
c volatile 在 まひとくん。ܤ Youtube 的最讚貼文
今回は、cod iwのマルチプレイのFFAにて】FTLx忍者武器"Rack-9-Volatile"がギャンブル運すぎる武器を使って遊んでみました。
◇チャンネル登録◇こちら↓から最新動画見れます
http://www.youtube.com/c/MahitoGames?sub_confirmation=1
◇Twitter◇リクエスト,質問は全てこちらまで!!↓
【@bacuwa】 https://twitter.com/bacuwa
◇生放送◇ 検証動画撮影したり、雑談してます。
TwitCasting
http://twitcasting.tv/bacuwa/
☆最新動画が見たい方はこちら↓
https://www.youtube.com/playlist?list=PLz2_rL3_v4IHzqJ6GyaS7eb1ioYMylVXQ
音楽 NCS提供
https://www.youtube.com/user/NoCopyrightSounds
c volatile 在 [問題] volatile的正確用法- 精華區C_and_CPP - 批踢踢實業坊 的美食出口停車場
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++/GCC/CLANG
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
None
問題(Question):
volatile大概是C/C++最難了解的關鍵字之一
最近在看完這篇[How to zero a buffer](https://bit.ly/1wmpbys)產生的問題
在開啟最佳化之後,對照Assembly Code,所有的編譯器會捨棄掉stack上的memset。
不過如果照他的方式刻一個,會發現所有Compiler都會做清空的動作
static void
secure_memzero(void * p, size_t len)
{
volatile uint8_t * _p = p;
while (len--) *_p++ = 0;
}
不過中間有句話不太明瞭
The C standard states that accesses to volatile objects are part of the
unalterable observable behaviour — but it says nothing about accesses via
lvalue expressions with volatile types. Consequently a sufficiently
intelligent compiler can still optimize the buffer-zeroing away in this case
— it just has to prove that the object being accessed was not originally
defined as being volatile.
我不知道這段話是否正確,不過還沒找到Standard是否有類似的規定
如果這段話是正確的話,目前找到的
C11的[memset_s](https://bit.ly/1qJG7vv)
Windows的[SecureZeroMemory](https://bit.ly/1oC33rV)
作法都一樣,難道不怕被最佳化掉嘛
請大家指點迷津吧..
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.47.165
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1410531700.A.6AF.html
> -------------------------------------------------------------------------- <
作者: Feis (永遠睡不著 @@) 看板: C_and_CPP
標題: Re: [問題] volatile的正確用法
時間: Sat Sep 13 20:34:03 2014
※ 引述《windows2k (程式宅 <囧>)》之銘言:
我的看法是:
1. 會被最佳化的情況很少見. 一般情況下, 你不會產生不能被最佳化的情況.
像網頁提的那種例子, 正常意識到自己在幹嘛的人都會用 volatile 宣告變數
如果變數本身是 volatile, 當然用 memset 有它的風險. 知道風險還去做. 那怪不得別人.
2. 真的要做的話, 寫 memset 的 volatile 版本我相信在一般的編譯器不會有甚麼問題.
像網頁說的那個問題還是著重在對標準的 volatile 行為該怎麼解釋.
我相信宣告變數本身為 volatile 又使用 memset 的 volatile 版本時, 應該不會有甚麼其他問題. (自以為)
3. 如果你真的真的很 care, 那就使用 memset_s 吧, 至少編譯器要保證它是可以用的 XD
> -------------------------------------------------------------------------- <
作者: Killercat (殺人貓™) 看板: C_and_CPP
標題: Re: [問題] volatile的正確用法
時間: Sat Sep 13 20:53:23 2014
我自己看過volatile會用在這幾個地方,可以參考一下
1. 大多數的Device都會在kernel space map一塊記憶體作為溝通之用
這塊100%是volatile,不然穩死
簡單說這塊記憶體內容根本不是自己控制的,所以每次查詢都需要去peek
2. 這情況雖然我不覺得需要volatile,但是很多人認為是需要的
就是threading的global部分(這是個多危險的東西啊 XD)
我總覺得這用法是從java來的,java會用volatile做某種程度的synchronized
我不知道C有沒有這種行為
3. shmat拿到的void*取值後最好要volatile,別鐵齒,雖然看起來是user space
> -------------------------------------------------------------------------- <
作者: CindyLinz (Cindy Wang) 看板: C_and_CPP
標題: Re: [問題] volatile的正確用法
時間: Sun Sep 14 14:43:00 2014
※ 引述《windows2k (程式宅 <囧>)》之銘言:
: 不過中間有句話不太明瞭
: The C standard states that accesses to volatile objects are part of the
: unalterable observable behaviour — but it says nothing about accesses via
: lvalue expressions with volatile types. Consequently a sufficiently
: intelligent compiler can still optimize the buffer-zeroing away in this case
: — it just has to prove that the object being accessed was not originally
: defined as being volatile.
我講一下我對這段話套用在這個 memset 例子的字面理解..
這個 memset 裡面把指標宣告為指向 volatile 的指標,
用這個指標來存取東西的時候是這一段文字裡面說的
「via lvalue expression with volatile types」
強調它是 volatile types 是因為我們是從這個指標來判斷的,
而不是這一塊被指的記憶體本身來看的.
這個 volatile 指標可能指向 volatile 記憶體, 也可能指向 non-volatile 記憶體,
這段話最前面說的
「access to volatile objects」
指的是一塊記憶體本身被標為 volatile.
所以, 他說這個 memset 有效, 是因為 compiler 還不夠聰明,
還沒辦法直接看出背後指到的記憶體是什麼, 所以就先用指標的型態判斷了,
但萬一有一天 compiler 覺醒了, 發現你只是用指標在騙他,
他看穿你的把戲以後可能就會怒把它 optimize 掉.. XD
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.121.80.249
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1410676983.A.3B6.html
※ 編輯: CindyLinz (112.121.80.249), 09/14/2014 14:45:03
> -------------------------------------------------------------------------- <
作者: csee (CSE) 看板: C_and_CPP
標題: Re: [問題] volatile的正確用法
時間: Wed Sep 17 16:29:00 2014
貢獻一下我自己對volatile的看法:
一開始我自己也是一知半解, 後來接觸嵌入式領域以後才比較清楚.
關於volatile的解釋是:
如果一個變數會因為外力而改變(非程式控制流程)
那每次取值請到memory中去讀取
一般而言, compiler會把 一個變數會被放在CPU的register or cache,
因為DRAM 的latency可是很嚇人的
( DRAM 光 RTL 讀取都要好幾個cycle, 更遑論CPU處理 )
所以直接放在CPU中or Cache中可以快速取值.
然而某些情況 如果某些變數的值會被ISR改變,
這種情況, 到快取中取得的值就是錯誤的
因此你必須每次都到記憶體中去抓取.
例如Timer_ticks就是個很好的例子.
因為timer的值並非是自己寫的程式主動去改動,
因此需要宣告成volatile, 告訴CPU抓取這個值的時候必須到記憶體中去讀取.
※ 引述《windows2k (程式宅 <囧>)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC++/GCC/CLANG
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: None
: 問題(Question):
: volatile大概是C/C++最難了解的關鍵字之一
: 最近在看完這篇[How to zero a buffer](https://bit.ly/1wmpbys)產生的問題
: 在開啟最佳化之後,對照Assembly Code,所有的編譯器會捨棄掉stack上的memset。
: 不過如果照他的方式刻一個,會發現所有Compiler都會做清空的動作
: static void
: secure_memzero(void * p, size_t len)
: {
: volatile uint8_t * _p = p;
: while (len--) *_p++ = 0;
: }
: 不過中間有句話不太明瞭
: The C standard states that accesses to volatile objects are part of the
: unalterable observable behaviour — but it says nothing about accesses via
: lvalue expressions with volatile types. Consequently a sufficiently
: intelligent compiler can still optimize the buffer-zeroing away in this case
: — it just has to prove that the object being accessed was not originally
: defined as being volatile.
: 我不知道這段話是否正確,不過還沒找到Standard是否有類似的規定
: 如果這段話是正確的話,目前找到的
: C11的[memset_s](https://bit.ly/1qJG7vv)
: Windows的[SecureZeroMemory](https://bit.ly/1oC33rV)
: 作法都一樣,難道不怕被最佳化掉嘛
: 請大家指點迷津吧..
> -------------------------------------------------------------------------- <
作者: JLong (白開水的味道) 看板: C_and_CPP
標題: Re: [問題] volatile的正確用法
時間: Sat Oct 4 08:21:11 2014
※ 引述《windows2k (程式宅 <囧>)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC++/GCC/CLANG
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: None
: 問題(Question):
: volatile大概是C/C++最難了解的關鍵字之一
: 最近在看完這篇[How to zero a buffer](https://bit.ly/1wmpbys)產生的問題
: 在開啟最佳化之後,對照Assembly Code,所有的編譯器會捨棄掉stack上的memset。
: 不過如果照他的方式刻一個,會發現所有Compiler都會做清空的動作
: static void
: secure_memzero(void * p, size_t len)
: {
: volatile uint8_t * _p = p;
: while (len--) *_p++ = 0;
: }
: 不過中間有句話不太明瞭
: The C standard states that accesses to volatile objects are part of the
: unalterable observable behaviour — but it says nothing about accesses via
: lvalue expressions with volatile types. Consequently a sufficiently
: intelligent compiler can still optimize the buffer-zeroing away in this case
: — it just has to prove that the object being accessed was not originally
: defined as being volatile.
針對這段敘述, 我分享自己的理解給你參考. (抱歉, 好像有點時間了~~)
In particular, the C standard states that the observable behaviour includes
accesses to volatile objects.
首先, 第一句話與文章最一開始提到 volatile 的地方要表達的意思一樣
(In particular, the C standard states that the observable behaviour includes
accesses to volatile objects), access volatile objects 是一個'會被看見'的行為,
compiler 不會對此做 optimize. 但以 lvalue expressions with volatile type 去
access object (即這段文字的上面的例子), C standard 沒有提到這種 case 的
behavior. 最後, 一個夠聰明的 compiler 只要證明所 access 的 object 不是原先就
被定義為 volatile, 它依然可以做 optimization (所以 secure_memzero() 同樣可能被
optimize).
這篇文章要探討的是如何避免 compiler 在特定狀況時, 因為 optimization 而衍生出的
安全性問題. 其中利用 volatile 的特性是一個可能的方式, 而且在幾個 compiler 上的
確有用 (This does trick a few more compilers).
至於為什麼 compiler 會有這樣的行為, 第一段 code 下面有解釋, 最後一句話:
While this completely subverts our intention, it is perfectly legal: The
observable behaviour of the program is unchanged by the optimization.
... <看更多>