日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

兩位巨佬吃了一頓晚飯,整個(gè)互聯(lián)網(wǎng)徹底被改變了!

來源: 責(zé)編: 時(shí)間:2024-07-17 16:54:26 603觀看
導(dǎo)讀1992年9月, 一個(gè)周三的下午,貝爾實(shí)驗(yàn)室。 Rob Pike (Go語言發(fā)明人之一) 正在操作系統(tǒng)Plan 9 上忙碌,這是繼Unix之后的一個(gè)大工程, 馬上就要完工了, 這個(gè)時(shí)候他突然接到了一個(gè)電話。 電話是IBM的人打來的,他們正在奧斯汀參

1992年9月, 一個(gè)周三的下午,貝爾實(shí)驗(yàn)室。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Rob Pike (Go語言發(fā)明人之一) 正在操作系統(tǒng)Plan 9 上忙碌,這是繼Unix之后的一個(gè)大工程, 馬上就要完工了,  這個(gè)時(shí)候他突然接到了一個(gè)電話。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

(年輕帥氣的Rob Pike)pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

電話是IBM的人打來的,他們正在奧斯汀參加X/Open 委員會(huì)會(huì)議, 想請(qǐng)Rob Pike 和 Ken Thomson (Unix發(fā)明人) 對(duì)他們?cè)O(shè)計(jì)的一個(gè)Unicode編碼進(jìn)行評(píng)審。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Rob Pike知道X/Open委員會(huì)主要負(fù)責(zé)制定Unix上的標(biāo)準(zhǔn)規(guī)范,以便提高應(yīng)用程序的在不同Unix變體上的移植性。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

很明顯,這一次會(huì)議的主題是:編碼!pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Rob Pike想到了自己正在忙活的操作系統(tǒng)Plan 9 , 為了支持全世界的語言如英文、中文、韓文、日文、阿拉伯文...... Plan 9 當(dāng)然要用Unicode 。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

(這貨怎么和Go的吉祥物長得如此之像?)pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

大家都知道Unicode只是規(guī)定了每個(gè)字符用什么編碼,但是沒有規(guī)定如何去存儲(chǔ), 當(dāng)時(shí)Plan 9 采用了一個(gè)叫做ISO 10646 UTF編碼, 但是這個(gè)編碼實(shí)在不怎么樣, 按照Rob Pike的話說:我們恨這個(gè)編碼。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Rob 和 Ken 立刻意識(shí)到:機(jī)會(huì)來了 !pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Rob :我們有豐富的經(jīng)驗(yàn), 為什么不設(shè)計(jì)一個(gè)真正好用的Unicode存儲(chǔ)標(biāo)準(zhǔn)呢? pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Ken :同意, 我們?cè)O(shè)計(jì)出來,把標(biāo)準(zhǔn)推廣的事情交給X/Open委員會(huì)。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

倆人向IBM的人表達(dá)了這個(gè)想法, 得到了支持,條件是: 一定要快,快速設(shè)計(jì)、快速實(shí)現(xiàn)。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

因?yàn)橄轮芤痪鸵镀北頉Q了!pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

對(duì)于天才程序員來說,快速、高質(zhì)量把活兒搞定就是小菜一碟。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Ken :還記得《老婆離家三周,我開發(fā)了一個(gè)操作系統(tǒng)嗎?》pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

他們倆慢悠悠地去餐廳吃飯,在吃飯期間,Ken 和 Rob就把基本的方案給設(shè)計(jì)出來了,這就是大名鼎鼎的UTF-8。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

回到貝爾實(shí)驗(yàn)室,他們就把想法寫成了提綱,發(fā)給了X/Open 委員會(huì)的人, 委員會(huì)的回復(fù)是: pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

這比我們?cè)O(shè)計(jì)的版本好多了,你們什么時(shí)候能實(shí)現(xiàn)它? pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Rob 和Ken 拍著胸脯說:放心吧,下周一肯定能有一個(gè)完整的、可以運(yùn)行的實(shí)現(xiàn)。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)天晚上(周三),他們倆就卷起袖子干活, Ken 把packing和unpacking的代碼搞定, Rob則去折騰C和圖形庫相關(guān)的東西。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

周四,所有的代碼都已完成,開始將Plan 9操作系統(tǒng)上的文本文件轉(zhuǎn)成UTF-8 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

周五,Plan 9 操作系統(tǒng)就已經(jīng)運(yùn)行在UTF-8上面了。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

實(shí)際花費(fèi)不到三天!pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

這三天的工作成果最終統(tǒng)治了整個(gè)互聯(lián)網(wǎng)的編碼標(biāo)準(zhǔn), 統(tǒng)計(jì)顯示, 現(xiàn)在96.8%的Web網(wǎng)站在使用UTF-8。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

故事講完了,我們來看看為什么UTF-8能流行起來。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

前面說過Unicode只是一個(gè)字符集,它規(guī)定了每個(gè)字符的二進(jìn)制代碼,例如“碼” , 對(duì)應(yīng)的Unicode 是7801 , 二進(jìn)制是pbj28資訊網(wǎng)——每日最新資訊28at.com

111 1000 0000 0001pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

需要兩個(gè)字節(jié)來保存, 如果表示其他更大范圍的字符,可能需要3個(gè)字節(jié)或者4個(gè)字節(jié),甚至更多。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)計(jì)算機(jī)面對(duì)這兩個(gè)字節(jié)的字節(jié)流的時(shí)候,就會(huì)出現(xiàn)嚴(yán)重的問題:計(jì)算機(jī)怎么知道這兩個(gè)字節(jié)表示的是一個(gè)字符?還是兩個(gè)字符?pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

大家知道英文字母用一個(gè)字節(jié)保存就夠了,如果Unicode規(guī)定每個(gè)英文字符也用兩個(gè)字節(jié)或三個(gè)字節(jié)來保存,那每個(gè)英文字母前面勢必要補(bǔ)上0, 文本文件要大兩到三倍。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

這是巨大的浪費(fèi),肯定不行。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

Rob和Ken的設(shè)計(jì)的UTF-8就比較聰明, 看看這個(gè)表:pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

把Unicode 轉(zhuǎn)換成UTF-8,非常簡單,比如漢字“碼” , Unicode 是7801 , 二進(jìn)制是 111 1000 0000 0001pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

7801對(duì)應(yīng)上圖的第三行,只要把二進(jìn)制從右向左填到對(duì)應(yīng)的“模板”中就行,不夠的補(bǔ)零pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

更多的細(xì)節(jié)就不展開了,關(guān)鍵要看看UTF-8有什么好處。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

1. 兼容ASCII, 表格中的第一行就是為ASCII所設(shè)。 

pbj28資訊網(wǎng)——每日最新資訊28at.com

多字節(jié)編碼的每個(gè)字節(jié)的最高位永遠(yuǎn)是 1,而 ASCII 字符編碼的最高位是 0,所以從根本上杜絕了編碼沖突。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

2. 第一個(gè)字節(jié)就指明了后續(xù)的長度

pbj28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)程序面對(duì)一個(gè)字節(jié)流的時(shí)候,只需要讀出第一個(gè)字節(jié)最前面有幾個(gè)1 ,就知道這個(gè)字符的長度,解碼很方便。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

3. 前綴碼

pbj28資訊網(wǎng)——每日最新資訊28at.com

大家仔細(xì)觀察下, UTF-8中沒有任何合法字符是其他字符的前綴, 這樣就帶來了一個(gè)好處:支持程序快速地跳過有問題的字節(jié),然后正常解碼。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

假設(shè)有兩個(gè)中文 “碼” 和 “農(nóng)”, 對(duì)應(yīng)的UTF-8編碼為E7A081(碼) and E5869C(農(nóng))。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

但是網(wǎng)絡(luò)傳輸丟失了一些數(shù)據(jù),變成了 E781 E5869C   (即“碼”的A0丟失了)pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在程序先讀到了E7, 二進(jìn)制是 1110 0111,它就知道這個(gè)字符應(yīng)該是3字節(jié)的, 并且后面的兩個(gè)字節(jié)都應(yīng)該以10 開頭。 pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

于是它就要再讀兩個(gè)字節(jié), 因?yàn)锳0這個(gè)字節(jié)丟失了, 程序讀到了81 和 E5。 pbj28資訊網(wǎng)——每日最新資訊28at.com

程序就發(fā)現(xiàn): pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

81 (二進(jìn)制10000001) 是符合規(guī)范的pbj28資訊網(wǎng)——每日最新資訊28at.com

E5(二進(jìn)制11100101)的開始兩個(gè)bit不是10啊, 這應(yīng)該是另外一個(gè)字符的開始。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

所以程序就判斷出有字符丟失了,可以丟棄剛讀到的E7 81 , 然后從E5開始讀取, E5 86 9C ,最終顯示“農(nóng)”字。pbj28資訊網(wǎng)——每日最新資訊28at.com

pbj28資訊網(wǎng)——每日最新資訊28at.com

是不是很巧妙?pbj28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-101379-0.html兩位巨佬吃了一頓晚飯,整個(gè)互聯(lián)網(wǎng)徹底被改變了!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Trip.com QUIC 高可用及性能提升

下一篇: 基于Netty的自研流系統(tǒng)緩存實(shí)現(xiàn)挑戰(zhàn): 內(nèi)存碎片與OOM困境

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 枣庄市| 巴中市| 陇川县| 赫章县| 三明市| 东辽县| 察哈| 阿尔山市| 永兴县| 雷州市| 河北省| 兴城市| 达拉特旗| 通化县| 南木林县| 乐山市| 仙桃市| 余姚市| 新疆| 屏山县| 双城市| 裕民县| 随州市| 安多县| 长治市| 安阳县| 大化| 剑川县| 通州市| 巧家县| 苍山县| 红安县| 进贤县| 图木舒克市| 株洲县| 福泉市| 思茅市| 玉林市| 安阳县| 嵊州市| 响水县|