成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

很多人在網(wǎng)絡(luò)學(xué)習(xí)中存在這兩個(gè)問(wèn)題

開(kāi)發(fā) 前端
對(duì)于大部分應(yīng)用場(chǎng)景來(lái)說(shuō),計(jì)算機(jī)科學(xué)與技術(shù)這個(gè)專(zhuān)業(yè)在技術(shù)的占比是遠(yuǎn)遠(yuǎn)要高于科學(xué)占比的,也就是說(shuō)它的技術(shù)屬性更多。對(duì)于一門(mén)技術(shù)來(lái)講,動(dòng)手就是非常非常重要的。

[[440246]]

本文轉(zhuǎn)載自微信公眾號(hào)「開(kāi)發(fā)內(nèi)功修煉」,作者張彥飛allen。轉(zhuǎn)載本文請(qǐng)聯(lián)系開(kāi)發(fā)內(nèi)功修煉公眾號(hào)。

大家好,我是飛哥!在互聯(lián)網(wǎng)時(shí)代里,我覺(jué)得網(wǎng)絡(luò)是最重要的一門(mén)技術(shù)了。但是我覺(jué)得從國(guó)內(nèi)計(jì)算機(jī)系的學(xué)生,到已經(jīng)工作了的工程師,在網(wǎng)絡(luò)的學(xué)習(xí)上整體存在兩個(gè)問(wèn)題。

第一個(gè)是對(duì)實(shí)踐的重視程度不夠。這個(gè)問(wèn)題在大學(xué)計(jì)算機(jī)課程中尤為突出。但這也不只是在學(xué)生群體中存在,很多工作了的工程師也是。在學(xué)習(xí)一個(gè)新技術(shù)的時(shí)候止步于眼睛看完就拉到,不想著去動(dòng)手寫(xiě)一寫(xiě),做測(cè)試跑一跑驗(yàn)證一下。

第二是對(duì)實(shí)現(xiàn)的重視程度不夠。大部分的人都愿意把精力放在自己代碼能波及的范圍內(nèi)。盲目相信工程中的黑盒依賴(lài),把底層當(dāng)成黑盒來(lái)使用,不愿意花功夫去了解一點(diǎn)底層實(shí)現(xiàn),這是對(duì)于成長(zhǎng)非常不利的。拿汽車(chē)來(lái)舉例,我們工程師更應(yīng)該是知曉汽車(chē)各項(xiàng)參數(shù)的優(yōu)秀賽車(chē)手,而不是靠車(chē)謀生的出租司機(jī)。

今天我就這兩點(diǎn)我就結(jié)合咱們內(nèi)功修煉技術(shù)文章的創(chuàng)作過(guò)程,來(lái)分別展開(kāi)了和大家聊聊~

一、對(duì)實(shí)踐的重視程度不夠

對(duì)于大部分應(yīng)用場(chǎng)景來(lái)說(shuō),計(jì)算機(jī)科學(xué)與技術(shù)這個(gè)專(zhuān)業(yè)在技術(shù)的占比是遠(yuǎn)遠(yuǎn)要高于科學(xué)占比的,也就是說(shuō)它的技術(shù)屬性更多。對(duì)于一門(mén)技術(shù)來(lái)講,動(dòng)手就是非常非常重要的。

而我們國(guó)內(nèi)的教學(xué)模式太過(guò)于偏重理論了,所以很多人都會(huì)覺(jué)得網(wǎng)絡(luò)技術(shù)這門(mén)課太抽象了。這不是學(xué)生的問(wèn)題,而是教育方法的缺陷。你應(yīng)該也沒(méi)聽(tīng)說(shuō)過(guò)有哪門(mén)技術(shù)是光看書(shū)就能看會(huì)的。

根據(jù)美國(guó)學(xué)者艾德加·戴爾1946年發(fā)現(xiàn)的金字塔學(xué)習(xí)理論,見(jiàn)下圖。傳統(tǒng)的理論性的學(xué)習(xí)如聽(tīng)講和閱讀對(duì)知識(shí)的吸收率只有 10% 左右,而動(dòng)手實(shí)踐對(duì)知識(shí)的吸收率能達(dá)到 75% 以上。從效率上來(lái)講,通過(guò)實(shí)踐的方式進(jìn)行學(xué)習(xí)的效率對(duì)理論學(xué)習(xí)的 7 -8 倍。

我覺(jué)得正確的學(xué)習(xí)方法應(yīng)該是邊學(xué)理論邊動(dòng)手實(shí)踐。動(dòng)手包括兩類(lèi)方法,一類(lèi)是用一些命令行工具進(jìn)行觀測(cè),另外一類(lèi)就是寫(xiě)程序驗(yàn)證。

如果你是一位計(jì)算機(jī)系學(xué)生,我建議首先要準(zhǔn)備一臺(tái) Linux 電腦(工程師就不用說(shuō)了,應(yīng)該大部分都用上 Linux 了)。在 Linux 下有很多成熟的網(wǎng)絡(luò)相關(guān)的工具可供你使用。現(xiàn)在國(guó)內(nèi)的互聯(lián)網(wǎng)公司的服務(wù)器基本上也都是 Linux。而且用 Linux 有個(gè)好處就是源碼是公開(kāi)的。實(shí)在遇到不懂的問(wèn)題,可以更容易地搜答案。這點(diǎn)比 Windows 強(qiáng)太多了。

對(duì)于第一類(lèi)動(dòng)手觀測(cè)法,我的建議是你學(xué)到某一層的時(shí)候,就找到一些相關(guān)的工具來(lái)做幾個(gè)實(shí)驗(yàn)。比如你可以啟動(dòng)一個(gè) Nginx(或者干脆自己寫(xiě)一個(gè) Server),用 curl 等工具發(fā)起 TCP 連接建立請(qǐng)求。這時(shí)候用 tcpdump 動(dòng)手進(jìn)行抓包,看看每次握手的時(shí)候,包體究竟是長(zhǎng)什么樣的。有資深工作經(jīng)驗(yàn)的同學(xué)可以試試 systemtab、perf 等高級(jí)工具。

我把 linux 下的各種網(wǎng)絡(luò)工具簡(jiǎn)單整理了一下,各位有需要可以把這張圖保存下來(lái)。

值得多提一下的是 systemtab 這個(gè)工具,他能夠跟蹤內(nèi)核中的函數(shù)并打印一些調(diào)試信息。可以獲取內(nèi)核函數(shù)里的變量值,也可以打印調(diào)用堆棧。不過(guò)需要安裝對(duì)應(yīng)版本的內(nèi)核調(diào)試包。

另外一個(gè)工具就是 perf,它可以統(tǒng)計(jì)和跟蹤內(nèi)核活動(dòng)。通過(guò) perf list 可以查看當(dāng)前系統(tǒng)支持的所有性能事件、檢查點(diǎn)。

第二類(lèi)方法就是動(dòng)手編程。對(duì)于學(xué)生來(lái)說(shuō),剛開(kāi)始可以從一些簡(jiǎn)單的開(kāi)始,比如就寫(xiě)個(gè) tcp server, tcp client 讓他們相互連接然后傳輸一些簡(jiǎn)單的數(shù)據(jù)。然后可以開(kāi)始練一些更為復(fù)雜一點(diǎn)的。比如寫(xiě)一套 FTP Server 和 Client, 讓它們之間能夠?qū)崿F(xiàn)簡(jiǎn)單的文件下載。或者寫(xiě)一個(gè) Web Server,支持通過(guò)瀏覽器來(lái)下載 Web Server 上的靜態(tài)文件。

或者參考 Libevent、Redis、Sogou WorkFlow 等項(xiàng)目包封裝一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)庫(kù)出來(lái)。再比如說(shuō)模擬 tcpdump 來(lái)寫(xiě)一個(gè)抓包工具。(可以參考我的這篇文章,里面提供了一個(gè)簡(jiǎn)單的 demo)。

對(duì)于工程師來(lái)說(shuō)也是一樣。新學(xué)到一個(gè)的技術(shù)方案的時(shí)候,要盡量多動(dòng)手去測(cè)試一下,驗(yàn)證驗(yàn)證。比如對(duì)于零拷貝來(lái)說(shuō),如果不使用零拷貝的話(huà),單純的使用 read 文件 + write 發(fā)送的方式和直接使用 sendfile 的方法比起來(lái)性能大概是差多少,能不能得出一些真實(shí)數(shù)據(jù)上的結(jié)論。

比如使用裸 epoll 的 QPS 數(shù)據(jù)最高能到多少, Golang 中的 net 包對(duì) epoll 使用協(xié)程封裝一次后能達(dá)到多少,完全不使用 epoll 的同步阻塞網(wǎng)絡(luò) IO 性能數(shù)據(jù)幾何。

如果你經(jīng)過(guò)實(shí)踐測(cè)試驗(yàn)證之后,你對(duì)性能的理解會(huì)得到質(zhì)的提升。對(duì)于我個(gè)人來(lái)講,我也是一直通過(guò)理論 + 實(shí)踐的方法來(lái)對(duì)知識(shí)進(jìn)行學(xué)習(xí)的,效果真的不錯(cuò)。

比如我在網(wǎng)絡(luò)中,我想弄懂一條空的 TCP 連接消耗多大的內(nèi)存。我自己在工作之余抽了好長(zhǎng)時(shí)間去翻內(nèi)核源碼,然后動(dòng)手做實(shí)驗(yàn)。當(dāng)實(shí)驗(yàn)完成的時(shí)候,我對(duì) TCP 連接的內(nèi)存開(kāi)銷(xiāo)的理解就非常的深了。

漫畫(huà) | 花了七天時(shí)間測(cè)試,我徹底搞明白了 TCP 的這些內(nèi)存開(kāi)銷(xiāo)!

我一直想弄清楚一臺(tái)服務(wù)器在實(shí)際中最大能支撐多少條 TCP 連接,我也是通過(guò)動(dòng)手實(shí)驗(yàn)的方法來(lái)學(xué)習(xí)的,當(dāng)時(shí)我前前后后至少花了半個(gè)多月。參見(jiàn):

漫畫(huà) | 一臺(tái)Linux服務(wù)器最多能支撐多少個(gè)TCP連接

漫畫(huà) | 理解了TCP連接的實(shí)現(xiàn)以后,客戶(hù)端的并發(fā)也爆發(fā)了!

如果你也想玩玩,直接用我這篇文章里提供的源碼就好。

百看不如一練,動(dòng)手測(cè)試單機(jī)百萬(wàn)連接的保姆級(jí)教程!

在比如在內(nèi)存和硬盤(pán)的性能上,我也是通過(guò)理論 + 實(shí)測(cè)的方法來(lái)深度理解的。

機(jī)械硬盤(pán)隨機(jī)IO慢的超乎你的想象

實(shí)際測(cè)試內(nèi)存在順序IO和隨機(jī)IO時(shí)的訪問(wèn)延時(shí)差異

如果你能能堅(jiān)持通過(guò)動(dòng)手加實(shí)踐的方法來(lái)學(xué)習(xí),相信你的技術(shù)水平一定會(huì)遠(yuǎn)遠(yuǎn)超過(guò)其他的同學(xué)。

二、對(duì)實(shí)現(xiàn)的重視程度不夠

翻開(kāi)任何一本計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)的教材大部分都是在講協(xié)議(首先聲明一下,我不反對(duì)理解這些基礎(chǔ)的協(xié)議是挺重要的),那么協(xié)議具體是咋實(shí)現(xiàn)的,講這些的貌似很少。

我們的日常開(kāi)發(fā)都是基于操作系統(tǒng)在協(xié)議的實(shí)現(xiàn)基礎(chǔ)上來(lái)進(jìn)行工作的。對(duì)實(shí)現(xiàn)理解不到位會(huì)導(dǎo)致很多線上問(wèn)題或者是性能優(yōu)化都無(wú)從下手。雖然市場(chǎng)上也有一些內(nèi)核實(shí)現(xiàn)相關(guān)的資料,但是又太難啃不動(dòng)。

比如大家都知道服務(wù)器先 listen 一下,然后才能 accpet 接收連接請(qǐng)求。但是,到底為啥要先 listen ,似乎沒(méi)有人和我們說(shuō)過(guò)。不理解這個(gè)的話(huà),就對(duì)全連接隊(duì)列半連接隊(duì)列理解不深,遇到問(wèn)題就不好處理。

再比如說(shuō),現(xiàn)在的互聯(lián)網(wǎng)大部分都是通過(guò) TCP 連接來(lái)工作的,那么一臺(tái)機(jī)器最多能撐多少個(gè) TCP 連接?按道理說(shuō),整個(gè)業(yè)界都在講高并發(fā),這應(yīng)該算是很入門(mén)的一個(gè)問(wèn)題了。但當(dāng)年我產(chǎn)生這個(gè)疑問(wèn)的時(shí)候,卻在 Google 上搜了個(gè)遍也沒(méi)找到令我滿(mǎn)意的答案。

再比如一個(gè)網(wǎng)絡(luò)包是如何從網(wǎng)卡到達(dá)你的進(jìn)程里的? 這個(gè)問(wèn)題表面上看起來(lái)簡(jiǎn)單,但事實(shí)上很多性能優(yōu)化方案都和這個(gè)接收過(guò)程有關(guān),能不能深度理解這個(gè)過(guò)程決定了你在網(wǎng)絡(luò)性能上有多少的優(yōu)化措施可用。例如多隊(duì)列網(wǎng)卡的優(yōu)化方案是在硬中斷這一步開(kāi)始將工作分散在多個(gè) CPU 核上,進(jìn)而提升性能的。我?guī)啄昵跋氚堰@個(gè)問(wèn)題徹底搞搞清楚,搜遍了互聯(lián)網(wǎng),翻遍了各種經(jīng)典書(shū)都沒(méi)能找到想要的答案。

還比如為啥 TCP 握手耗時(shí)過(guò)長(zhǎng),一條 TCP 連接會(huì)消耗多大的內(nèi)存。同步阻塞網(wǎng)絡(luò) IO 為啥就性能慢了,為啥 epoll 用上了以后就要性能高很多。這些和工程實(shí)踐相關(guān)的問(wèn)題光知道網(wǎng)絡(luò)協(xié)議理論是任何用都沒(méi)有的,都是應(yīng)該建立在對(duì)網(wǎng)絡(luò)實(shí)現(xiàn)的深刻理解上才能更好地應(yīng)對(duì)。

針對(duì)這個(gè)問(wèn)題,我在實(shí)現(xiàn)層面把網(wǎng)絡(luò)都扒了一遍,成果都通過(guò)咱們開(kāi)發(fā)內(nèi)功修煉公眾號(hào)發(fā)表。

 

例如,為什么服務(wù)端程序都需要先 listen 一下?事實(shí)上是因?yàn)榉?wù)器在接收客戶(hù)端連接之前,提前準(zhǔn)備了半連接和全連接兩個(gè)隊(duì)列。一個(gè)用于保存第一次握手請(qǐng)求,另一個(gè)用于保存第三次握手。客戶(hù)端呢是在 connect 發(fā)起前,在內(nèi)核里選擇好端口號(hào)的。

 

責(zé)任編輯:武曉燕 來(lái)源: 開(kāi)發(fā)內(nèi)功修煉
相關(guān)推薦

2019-12-09 10:02:41

泛型ypeScript前端

2024-09-12 08:32:42

2021-01-30 11:42:53

迭代器代碼元素

2020-11-16 11:24:00

Spring AOP數(shù)據(jù)庫(kù)

2021-02-22 13:14:00

計(jì)算機(jī)編程技術(shù)

2025-06-13 10:14:55

2018-02-13 14:48:17

戴爾

2022-02-06 00:07:19

互聯(lián)網(wǎng)失業(yè)職業(yè)

2020-07-14 08:43:54

VueHTML函數(shù)

2019-08-08 16:00:08

HTTPGETPOST

2022-12-05 15:23:33

JavaScript技巧運(yùn)算符

2022-07-06 10:33:39

技術(shù)債務(wù)CIO

2017-12-13 15:57:12

2019-08-21 08:24:34

技術(shù)過(guò)濾器代碼

2021-06-24 09:08:34

Java代碼泛型

2020-12-10 10:32:33

區(qū)塊鏈比特幣數(shù)字貨幣

2021-04-04 23:19:37

5G4G技術(shù)

2020-06-29 08:28:36

v-for 解構(gòu)函數(shù)

2014-05-09 15:29:21

2025-02-21 08:48:16

Typescript內(nèi)置聯(lián)合類(lèi)型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 青青久久 | 欧洲妇女成人淫片aaa视频 | 日韩欧美精品一区 | 国产伦精品一区二区三毛 | 精品久久影院 | 成人在线观看欧美 | 56pao在线| 又黄又色| 国产亚洲精品成人av久久ww | 国产资源在线视频 | 中文字幕日韩一区 | 午夜影院在线免费观看视频 | 久久精品国产一区二区三区不卡 | 综合色婷婷 | 欧美综合一区 | 欧美激情一区二区 | 亚洲天堂999 | 69福利影院 | 999久久久久久久久 国产欧美在线观看 | 国产一级一级毛片 | 91一区二区三区 | 一级欧美黄色片 | 91精品久久久久久综合五月天 | 亚洲免费人成在线视频观看 | 欧美日韩精品一区二区 | 国产精品久久久久久久午夜片 | 亚洲国产精品一区二区第一页 | 91精品中文字幕一区二区三区 | 亚洲成人自拍 | 久久国产精品久久久久久 | 国产精品自产拍在线观看蜜 | 精品美女在线观看视频在线观看 | 午夜欧美日韩 | 日韩在线视频播放 | 91精品入口蜜桃 | 日本一区二区视频 | 久久男女视频 | 午夜影视免费片在线观看 | 春色av| 亚洲最色视频 | 日本成人在线网址 |