国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何選擇一個(gè)適合自己的開源項(xiàng)目來閱讀

開發(fā) 項(xiàng)目管理
人們都說, 閱讀源碼是提高編程水平的一個(gè)極好的方法, 但是如何找到一個(gè)適合自己閱讀的源碼, 就蛋疼的很。 優(yōu)秀的開源項(xiàng)目非常多, 肯定是看不完的。 而且如果沒有一個(gè)明確的目的, 只是因?yàn)榛鹁涂矗?則事倍功半。

人們都說, 閱讀源碼是提高編程水平的一個(gè)極好的方法, 但是如何找到一個(gè)適合自己閱讀的源碼, 就蛋疼的很。 優(yōu)秀的開源項(xiàng)目非常多, 肯定是看不完的。 而且如果沒有一個(gè)明確的目的, 只是因?yàn)榛鹁涂矗?則事倍功半。

我更像一個(gè)后臺(tái)開發(fā)程序員, 所以以下觀點(diǎn)都基于后臺(tái)程序員的視角出發(fā)。 

從 Node.js 和 Tornado 出發(fā)

在幾個(gè)月前, 我學(xué)習(xí)了 Tornado 框架并用來做了一個(gè)項(xiàng)目; 而 Node.js 則是最近幾天才開始學(xué)的。 所以很可能會(huì)有說的不嚴(yán)謹(jǐn)?shù)牡胤健?/p>

Tornado 是一個(gè)異步非阻塞服務(wù)器應(yīng)用與輕量級(jí)Web框架的結(jié)合體。 Node.js 則是一個(gè)開源跨平臺(tái)的運(yùn)行環(huán)境(runtime environment)。 在我看來, Node.js 基本上就是一個(gè)服務(wù)器應(yīng)用了, 因?yàn)檫@一部分和 Tornado 的服務(wù)器部分幾乎是一模一樣。

我們的問題主要是應(yīng)該選擇什么樣的開源代碼來閱讀, 目前為止, 我們可以選擇的項(xiàng)目有Tornado和Node.js了。 先不著急做出決定, 繼續(xù)向深處探索一番。 首先化簡問題, 因?yàn)?Node.js 的優(yōu)勢(shì)并非僅僅是異步非阻塞提供的高性能, 還有很多其他的東西, 我們暫時(shí)不管那些其他的部分。

  • Tornado = AIO Server + Web Framework

  • Node.js = AIO Server

如果學(xué)習(xí)過操作系統(tǒng), 就會(huì)知道 Linux 下這兩個(gè)程序之所以達(dá)到如此高性能的效果, 歸功于 Linux 2。6 Kernel 提供的epoll。 我的思路是, Node.js 如果在 Linux 下運(yùn)行, 一定會(huì)調(diào)用操作系統(tǒng)提供的 epoll; 如果在 Windows 下運(yùn)行, 一定會(huì)調(diào)用操作系統(tǒng)提供的 IOCP。

順著這個(gè)思路, 我發(fā)現(xiàn)了 libuv 和 pyuv 這兩個(gè)開源項(xiàng)目。

  • libuv: 一般認(rèn)為, libuv 是因 nodejs 而生。 libuv的作用是對(duì)用戶隱藏操作系統(tǒng)的差異, 封裝Linux的libev和 windows 的 IOCP 等等, 提供跨平臺(tái)的異步操作庫。

  • pyuv: 給 Python 提供一個(gè)調(diào)用 libuv 的接口

屢清關(guān)系

上面提到了nodejs, tornado, libuv, pyuv, libev, IOCP 這些概念(項(xiàng)目), 他們中大部分都可以找到開源代碼, 如果想要從中選擇出合適自己學(xué)習(xí)的項(xiàng)目, 最好的辦法是先縷清他們的關(guān)系。

首先, Tornado 和 Node.js 都可以用來做網(wǎng)站后臺(tái)服務(wù)器應(yīng)用。 而 Tornado 更是提供了一個(gè) Web 框架。

Tornado 的 Web 框架提供了視圖和路由功能, 利用這一點(diǎn)我們可以很容易寫出一個(gè) MVC 模式的 Web 應(yīng)用。 對(duì)于Web框架來說, 他直接從服務(wù)器應(yīng)用拿到用戶的 request, 處理完畢后得到一個(gè) response, 直接給回服務(wù)器就可以了, 是不需要了解 request 如何傳輸過來以及 response 如何返回給用戶的細(xì)節(jié)的。

[[148697]]

圖片: web框架與服務(wù)器的關(guān)系

由于同時(shí)會(huì)有很多客戶端向服務(wù)器發(fā)起請(qǐng)求, 服務(wù)器要盡快處理這些請(qǐng)求, 提高性能一般是讓cpu在單位時(shí)間里面盡量可以處理更多的I/O請(qǐng)求, 方法一般就是采用阻塞的多線程, 或者非阻塞的單線程(當(dāng)然也可以多線程或者多進(jìn)程)。

[[148698]]

圖片: 服務(wù)器與客戶端的關(guān)系

無論是采用哪一種I/O模型, 都要有操作系統(tǒng)的支持, 如果CPU沒有中斷功能, 操作系統(tǒng)就沒有鎖的功能, 也就沒有信號(hào)量, 沒有Monitor等一系列同步機(jī)制。

對(duì)于 Tornado 來說, Python 解釋器提供了上述一系列的同步機(jī)制。 因此 Tornado 到底能用什么樣的 I/O 模型, 直接取決于 Python 解釋器。

而 Python 解釋器是運(yùn)行在操作系統(tǒng)之上, 如果操作系統(tǒng)不提供鎖, 那么解釋器也無法做出一把鎖。 因此 Tornado 到底能用什么樣的 I/O 模型, 間接取決于操作系統(tǒng)。

我想 Node.js 也是一樣的道理。

[[148699]]

圖片: 服務(wù)器與操作系統(tǒng)的關(guān)系

得出結(jié)論

  • 如果想知道一個(gè)網(wǎng)站的框架是如何將路由, 視圖(html, css, js之類), 數(shù)據(jù)處理拼在一起的, 那么可以閱讀 Tornado 源碼中的 Web 框架部分。

  • 如果想知道同時(shí)有很多很多的 request 到來, 服務(wù)器應(yīng)用是如何利用操作系統(tǒng)提供的接口來完成高并發(fā)處理的, 可以閱讀 Tornado 的服務(wù)器部分或者 Node.js的源碼

  • 如果想知道, 不同的操作系統(tǒng)提供了不同的接口, 如何在這個(gè)基礎(chǔ)上構(gòu)建出一個(gè)跨平臺(tái)的統(tǒng)一接口, 可以閱讀 libuv 的源碼

  • 如果想知道在 Linux 操作系統(tǒng)下, 到底是如何實(shí)現(xiàn)這些I/O接口的, 可以閱讀 libev 的源碼

  • 如果想知道如何利用 libuv, 在 Python 下也可以調(diào)用跨平臺(tái) I/O 接口, 可以閱讀 pyuv 的源碼

不僅如此, 我們由結(jié)論還可以知道更多: 如果想看 libuv 的源碼, 知道 libuv 是如何實(shí)現(xiàn)的, 首先得會(huì)用它。 只有知道它的作用, 看起源碼來才有一個(gè)目的性。 要想知道如何使用 libuv, 得參考其上面一層的 Tornado 源碼中的很小一部分, 或者查閱 libuv 的文檔。

選擇源碼的一般方法

  1. 列出一些感興趣的關(guān)鍵字

  2. 對(duì)關(guān)鍵字的上層和下層進(jìn)行了解

  3. 梳理出整個(gè)關(guān)系圖

  4. 得出結(jié)論, 做出選擇

經(jīng)過剛剛幾個(gè)步驟, 我們由對(duì) Tornado 和 Node.js 的一些模糊的認(rèn)識(shí), 逐漸梳理出從用戶發(fā)起請(qǐng)求, 到操作系統(tǒng)甚至硬件層面的一條比較清晰的路線。 雖然一行源碼都還沒看, 已經(jīng)知道了我們看不同的源碼, 分別能學(xué)到什么知識(shí)。 在這個(gè)基礎(chǔ)上, 選擇適合自己當(dāng)前需求的源碼來閱讀, 就能事半功倍了。

原文:http://jecvay.com/2015/09/how-to-choose-a-open-source-project-to-read.html 作者: Jecvay

責(zé)任編輯:王雪燕
相關(guān)推薦

2015-09-08 10:32:21

開源項(xiàng)目選擇方式

2017-04-13 19:26:21

2011-11-25 10:18:48

SaaS云計(jì)算

2015-07-29 10:00:16

開源項(xiàng)目

2014-10-21 10:25:50

程序員

2009-12-08 11:19:00

2012-08-08 09:30:22

移動(dòng)OA系統(tǒng)

2021-03-02 14:50:57

開源技術(shù) 項(xiàng)目

2021-10-10 12:45:13

編程語言開發(fā)

2023-08-17 14:37:55

OmnivorPocket開源

2021-08-23 11:35:37

代碼開發(fā)開源

2009-11-18 09:54:25

2011-05-25 09:32:45

數(shù)據(jù)庫

2015-03-16 09:18:53

2012-12-13 21:50:43

2024-07-02 08:28:17

開源代碼社區(qū)

2013-08-19 12:40:18

開源項(xiàng)目

2019-03-10 22:21:47

框架AI開發(fā)

2011-09-29 13:32:45

iPhone閱讀

2020-11-14 15:49:40

編程語言C語言Java
點(diǎn)贊
收藏

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

国产精品成久久久久三级| 91精品久久久久久久久不口人| a'aaa级片在线观看| 麻豆传媒网站在线观看| 成人精品在线视频| 97人人爽人人喊人人模波多 | 风间由美性色一区二区三区 | 国产成人三级在线观看| 亚洲视频免费| 成人中文在线| 国产蜜臀av在线播放| 日韩a在线播放| 日韩在线视频二区| 亚洲另类在线视频| 激情综合久久| 欧美精品中文字幕亚洲专区| 都市激情久久综合| av在线下载| caoporn国产精品免费视频| 国产美女玉足交| 男人用嘴添女人下身免费视频| 成人xxxxx| 国产成人福利网站| 亚洲网址你懂得| 日韩亚洲欧美在线| 欧美午夜视频网站| 日韩精品专区在线影院观看 | 精品久久国产老人久久综合| 欧美日韩亚洲系列| 国产日韩三级在线| 欧美国产禁国产网站cc| 国产精品拍天天在线| 久久精品电影| 老司机午夜精品视频| 麻豆视频一区二区| 97超碰欧美中文字幕| 26uuu欧美日本| 欧美国产日韩亚洲一区| 国v精品久久久网| 国产精品欧美经典| 2020国产精品| 成人在线免费观看网站| 91欧美国产| 日韩精彩视频在线观看| 成人国产精品免费网站| 中文字幕一区二区三区精华液 | 亚洲女与黑人做爰| 中文在线不卡| 日韩不卡在线观看| 国产色在线观看| 久久精品国产亚洲一区二区三区| 中文字幕综合| 国产真实有声精品录音| 你微笑时很美电视剧整集高清不卡| 午夜av一区| 国产裸体歌舞团一区二区| 国产精品高潮久久久久无| 欧洲一区在线电影| 日韩在线观看网站| 国产精品十八以下禁看| 欧美高清性xxxxhd| 九九热在线免费| 亚洲wwwww| 欧美精品第一区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧洲综合另类在线| 亚洲精品自拍第一页| 精品国产一区二区三区久久狼5月| 日本电影亚洲天堂| 亚洲精品美女久久7777777| 国产女优裸体网站| 日韩欧美一区二区三区免费观看| 另类尿喷潮videofree| 欧美一级专区| 日韩欧美有码在线| 久久久久久亚洲精品| 亚洲人成人77777线观看| 免费在线观看污视频| 超碰成人在线观看| 黄色成人在线网站| 一区二区三区四区国产精品| 日韩中文视频免费在线观看| 成人在线精品视频| 亚洲一二区在线| 三级av在线| 精品中文字幕一区二区三区av| 亚洲一卡久久| 亚洲欧美日韩中文字幕一区二区三区 | 综合在线一区| 亚洲不卡在线观看| 日韩免费观看视频| 日本爱爱免费视频| 国产亚洲字幕| 97aⅴ精品视频一二三区| 这里只有精品丝袜| 亚洲综合第一| 亚洲第一会所| av在线播放不卡| 久久精品99久久久香蕉| 国产亚洲天堂网| 日韩中文字幕视频网| 国产精品黄色在线观看| 久久久亚洲影院| 亚洲精品高清无码视频| 国产福利一区二区精品秒拍| 久久久久久日产精品| 日韩一区二区精品视频| 欧美人成在线观看| 91麻豆精品国产91久久久久推荐资源| 国产蜜臀av在线一区二区三区| 91成人在线播放| 久草在线青青草| 性xx色xx综合久久久xx| 精品美女被调教视频大全网站| gogogo免费高清日本写真| 一区二区三区四区久久| 超碰最新在线| 91老司机福利 在线| 亚洲色图第三页| 成年人黄色电影| 国产精品a久久久久| 欧美丝袜丝交足nylons图片| 视频二区一区| 精品视频在线一区| 中文字幕一区在线观看视频| 欧美性视频精品| 极品白浆推特女神在线观看| 日韩一级在线| 久久久av亚洲男天堂| 在线视频您懂的| 久久不射2019中文字幕| 国产一区二区三区在线免费观看| 亚洲国产欧美日韩| 好吊日av在线| 国产欧美日韩激情| 国产精品大全| 久久精品国产福利| 欧美日韩中文字幕综合视频| 国产成人精品电影| 波多野结衣久久| 韩国精品一区二区| 国产精品欧美日韩久久| 欧美hdfree性xxxx| 美女精品网站| 欧美大片第1页| 毛片网站在线看| 亚洲韩国精品一区| av日韩一区二区三区| 99国产精品视频免费观看一公开 | 日本亚洲精品在线观看| 国产区av在线| 亚洲色图视频网| 亚洲中文字幕无码av永久| 国产毛片一区| 欧美亚洲国产视频小说| 日韩影视在线| 亚洲一区二区不卡免费| wwwjizzjizzcom| 国产另类在线| 久久视频在线观看免费| 影音先锋男人资源在线| 亚洲午夜av在线| 99riav视频| 国产色一区二区| 日本精品免费视频| 香蕉久久久久久久av网站| 日韩电影免费在线观看中文字幕| 91久久久一线二线三线品牌| 国产精品视频区| 亚洲欧美专区| 国产亚洲日本欧美韩国| 性网站在线观看| 欧美怡红院视频| 青青草免费观看免费视频在线| 亚洲国产精品久久人人爱蜜臀| 欧美hdsex| 午夜精品123| 成人福利在线| 欧美久久久久久蜜桃| 毛片网站在线看| 亚洲午夜激情免费视频| 少女频道在线观看高清 | 亚洲免费观看视频| 久久99久久99精品| 久久99国产精品免费| 一区二区在线中文字幕电影视频| 日韩电影在线观看电影| 神马影院午夜我不卡影院| 啪啪国产精品| 26uuu国产精品视频| 小嫩嫩12欧美| 国产日韩av在线| 欧美三级网页| 色噜噜狠狠色综合网| 免费观看30秒视频久久| 9色视频在线观看| 一区在线播放视频| 国产视频网站在线| 欧美精品一区二区在线播放| 色豆豆成人网|