摘要:版本選擇目前企業(yè)使用最多的版本,最為穩(wěn)定。例如使用的就是版本引入了內(nèi)存池等重大特性,可以有效的降低負(fù)載,使用的就是已經(jīng)被廢棄了,具體可參見所以這里我搭建的源碼閱讀環(huán)境是存在的版本。
Netty 簡介
Netty 是由 JBOSS 提供的一個(gè)開源的 java 網(wǎng)絡(luò)編程框架,主要是對(duì) java 的 nio 包進(jìn)行了再次封裝。Netty 比 java 原生的nio 包提供了更加強(qiáng)大、穩(wěn)定的功能和易于使用的 api。 netty 的作者是 Trustin Lee,這是一個(gè)韓國人,他還開發(fā)了另外一個(gè)著名的網(wǎng)絡(luò)編程框架,mina。二者在很多方面都十分相似,它們的線程模型也是基本一致 。不過 netty 社區(qū)的活躍程度要 mina 高得多。
版本選擇:
3.x 目前企業(yè)使用最多的版本,最為穩(wěn)定。例如dubbo使用的就是3.x版本
4.x 引入了內(nèi)存池等重大特性,可以有效的降低GC負(fù)載,rocketmq使用的就是4.x
5.x 已經(jīng)被廢棄了,具體可參見 https://github.com/netty/nett...
所以這里我搭建的源碼閱讀環(huán)境是存在的 4.1 版本。
準(zhǔn)備工具IDEA 2017
環(huán)境搭建在 IDEA 中導(dǎo)入項(xiàng)目地址:https://github.com/netty/nett... ,然后就會(huì)自動(dòng)下載項(xiàng)目所有的依賴,但是請(qǐng)注意:
必須在 IDEA 中將 Profiles 中的所有都勾選上,否則會(huì)導(dǎo)致很多 jar 包拉不下來,如下圖:
然后就是耐心等待了,一直到所有的 jar 包拉取下來。
中途你可能會(huì)遇到如下問題:
這里的是 1.5 版本,導(dǎo)致我們?nèi)绻胗眯└呒?jí)的語法會(huì)完全報(bào)錯(cuò)。
如果你把這個(gè)版本設(shè)置為 8 的版本后,
下面會(huì)提示你,項(xiàng)目是從 maven 導(dǎo)過來的,如果 maven 配置改變重新 reimport 后,任何在這里的改變都會(huì)丟失。
同時(shí)你會(huì)看到項(xiàng)目的 Java Compile 版本是 1.5 的,如下圖:
同樣,你在這里修改,如果 maven 配置改變重新 reimport 后,任何在這里的改變也都會(huì)丟失。我估計(jì)碰到這種問題的不少。
總結(jié)起來原因就是 maven 中的編譯版本就是 1.5 的,所以才會(huì)導(dǎo)致這里的問題發(fā)生,如果想完全修改好(一勞永逸)。請(qǐng)直接對(duì) pom 文件動(dòng)刀,就是干!
只需把大項(xiàng)目(netty-parent)的那個(gè) pom.xml 修改個(gè)屬性,把版本信息提高到 1.8。
在等待它拉取 jar 包吧
搞完了之后發(fā)現(xiàn)還有兩個(gè)模塊(netty-bom、netty-dev-tools)不能設(shè)置到 版本,只能手動(dòng)的和上面那種設(shè)置 language level 和 Java compile 為 1.8 了。
最后你會(huì)發(fā)現(xiàn)這里的完全沒有報(bào)錯(cuò)了,開心不?
代碼行數(shù)統(tǒng)計(jì)額,看到項(xiàng)目這么多子模塊,你都不知道該從哪里下手開始看,那么我就寫了個(gè)簡單的 Java 腳本去大概的統(tǒng)計(jì)每個(gè)子項(xiàng)目代碼的行數(shù)。先看看統(tǒng)計(jì)結(jié)果:
整個(gè)項(xiàng)目差不多 23 萬。(過濾了空行、各種注釋和 @Override 之后的 Java 代碼行數(shù)),靠這個(gè)數(shù)字很嚇人!
來看看我的腳本代碼吧:
public static void main(String[] args) throws Exception { long count = Files.walk(Paths.get("C:JetBrainsIDEAProject etty ransport-udt")) // 遞歸獲得項(xiàng)目目錄下的所有文件 .filter(file -> !Files.isDirectory(file)) // 篩選出文件 .filter(file -> file.toString().endsWith(".java")) // 篩選出 java 文件 .flatMap(Try.of(file -> Files.lines(file), Stream.empty())) // 將會(huì)拋出受檢異常的 Lambda 包裝為 拋出非受檢異常的 Lambda .filter(line -> !line.trim().isEmpty()) // 過濾掉空行 .filter(line -> !line.trim().startsWith("http://")) //過濾掉 //之類的注釋 .filter(line -> !(line.trim().startsWith("/*") && line.trim().endsWith("*/"))) //過濾掉/* */之類的注釋 .filter(line -> !(line.trim().startsWith("/*") && !line.trim().endsWith("*/"))) //過濾掉以 /* 開頭的注釋(去除空格后的開頭) .filter(line -> !(!line.trim().startsWith("/*") && line.trim().endsWith("*/"))) //過濾掉已 */ 結(jié)尾的注釋 .filter(line -> !line.trim().startsWith("*")) //過濾掉 javadoc 中的文字注釋 .filter(line -> !line.trim().startsWith("@Override")) //過濾掉方法上含 @Override 的 .count(); System.out.println("代碼行數(shù):" + count); }
后面我會(huì)把我閱讀源碼的中文注釋及解析之類的更新到我的 GitHub 去(歡迎關(guān)注、我是來騙 star 的),https://github.com/zhisheng17... ,如果你不想去自己設(shè)置上面所說的這些(偷懶),那就直接 fork 我的這份吧!
最后環(huán)境搭建就寫到這里了,轉(zhuǎn)載請(qǐng)注明地址:http://www.54tianzhisheng.cn/...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70793.html
摘要:目錄源碼分析之番外篇的前生今世的前生今世之一簡介的前生今世之二小結(jié)的前生今世之三詳解的前生今世之四詳解源碼分析之零磨刀不誤砍柴工源碼分析環(huán)境搭建源碼分析之一揭開神秘的紅蓋頭源碼分析之一揭開神秘的紅蓋頭客戶端源碼分析之一揭開神秘的紅蓋頭服務(wù)器 目錄 Netty 源碼分析之 番外篇 Java NIO 的前生今世 Java NIO 的前生今世 之一 簡介 Java NIO 的前生今世 ...
摘要:目錄此文章屬于源碼之下無秘密做最好的源碼分析教程系列文章之一代碼下載首先到的倉庫中點(diǎn)擊右邊綠色的按鈕拷貝地址然后在終端中輸入如下命令克隆工程工程源碼較大加上國內(nèi)網(wǎng)絡(luò)問題下載源碼可能會(huì)比較耗時(shí)當(dāng)有如下輸出時(shí)表示克隆成功了如果有朋友實(shí)在下載太 目錄 此文章屬于 源碼之下無秘密 ── 做最好的 Netty 源碼分析教程 系列文章之一. 代碼下載 首先到 Netty 的 Github 倉庫 中...
摘要:前提好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時(shí)...
摘要:目錄源碼之下無秘密做最好的源碼分析教程源碼分析之番外篇的前生今世的前生今世之一簡介的前生今世之二小結(jié)的前生今世之三詳解的前生今世之四詳解源碼分析之零磨刀不誤砍柴工源碼分析環(huán)境搭建源碼分析之一揭開神秘的紅蓋頭源碼分析之一揭開神秘的紅蓋頭客戶端 目錄 源碼之下無秘密 ── 做最好的 Netty 源碼分析教程 Netty 源碼分析之 番外篇 Java NIO 的前生今世 Java NI...
摘要:目錄源碼分析之番外篇的前生今世的前生今世之一簡介的前生今世之二小結(jié)的前生今世之三詳解的前生今世之四詳解源碼分析之零磨刀不誤砍柴工源碼分析環(huán)境搭建源碼分析之一揭開神秘的紅蓋頭源碼分析之一揭開神秘的紅蓋頭客戶端源碼分析之一揭開神秘的紅蓋頭服務(wù)器 目錄 Netty 源碼分析之 番外篇 Java NIO 的前生今世 Java NIO 的前生今世 之一 簡介 Java NIO 的前生今世 ...
閱讀 2405·2021-11-11 16:54
閱讀 1210·2021-09-22 15:23
閱讀 3653·2021-09-07 09:59
閱讀 2002·2021-09-02 15:41
閱讀 3290·2021-08-17 10:13
閱讀 3051·2019-08-30 15:53
閱讀 1241·2019-08-30 13:57
閱讀 1214·2019-08-29 15:16