日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

如何快速自學(xué)開源項(xiàng)目?試試我的訣竅

freeflydom
2024年11月13日 9:4 本文熱度 1611

如何快速學(xué)習(xí)項(xiàng)目?

1、初步了解項(xiàng)目

打開一個(gè) GitHub 上的開源項(xiàng)目后,第一件事就是去看項(xiàng)目的 README.md 介紹文檔,可以速覽一遍看看有沒有幫助你學(xué)習(xí)的內(nèi)容,比如技術(shù)選型、功能介紹、如何快速啟動(dòng)項(xiàng)目、架構(gòu)設(shè)計(jì)、注意事項(xiàng)等等。

以 MallChat 聊天室為例:https://github.com/zongzibinbin/MallChat ,項(xiàng)目介紹文檔中包含對(duì)核心功能的介紹,可以看看有沒有自己感興趣的功能:

如果是公司內(nèi)部的項(xiàng)目、或者比較成熟的開源項(xiàng)目,還會(huì)有 Wiki 文檔,往往對(duì)項(xiàng)目的介紹會(huì)更加詳細(xì),但暫時(shí)不用通篇閱讀,關(guān)注 “快速啟動(dòng)項(xiàng)目” 或者 “項(xiàng)目結(jié)構(gòu)介紹” 的部分即可。

像我如果決心要學(xué)一個(gè)新的項(xiàng)目,除了 GitHub 官方文檔外,還會(huì)在網(wǎng)上搜集一些相關(guān)資料,整理到自己的文檔中,便于后續(xù)學(xué)習(xí)時(shí)能快速找到。

 

2、了解項(xiàng)目結(jié)構(gòu)

看完項(xiàng)目介紹文檔后,建議先從上帝視角整體了解項(xiàng)目的結(jié)構(gòu),比如項(xiàng)目分為哪些模塊、每個(gè)模塊大致有哪些文件、文件命名規(guī)則如何等等,但不用進(jìn)一步理解模塊(或目錄)內(nèi)部的組織和實(shí)現(xiàn)方式。尤其對(duì)于復(fù)雜的微服務(wù)項(xiàng)目來(lái)說(shuō),這樣做可以快速幫你定位到學(xué)習(xí)重點(diǎn)。

大多數(shù)情況下,大家應(yīng)該都是把項(xiàng)目代碼下載到本地來(lái)學(xué)習(xí)。但如果你只是為了快速了解項(xiàng)目,并不打算深入學(xué)習(xí),其實(shí)有更高效的方式。

比如在 GitHub 倉(cāng)庫(kù)的主頁(yè)按  句號(hào)鍵,就能快速進(jìn)入網(wǎng)頁(yè)版的代碼編輯器,跟本地瀏覽項(xiàng)目的體驗(yàn)幾乎一致:

對(duì)于有一定經(jīng)驗(yàn)的開發(fā)者,一般會(huì)先查找關(guān)鍵文件,比如前端項(xiàng)目找 package.json(Node.js)、Java 項(xiàng)目找 pom.xml(Maven)或 build.gradle(Gradle)、Python 項(xiàng)目找 requirements.txt 或 setup.py 等,這些文件通常包含項(xiàng)目依賴和配置信息。如果項(xiàng)目是比較規(guī)范的,一般通過(guò)依賴和配置信息就能快速理解項(xiàng)目結(jié)構(gòu)了。

舉個(gè)例子,看到 aop 依賴,就知道項(xiàng)目用到了切面;看到 freemarker 依賴,就知道項(xiàng)目資源目錄中會(huì)有 FTL 模板文件;看到 Redisson,就知道會(huì)有初始化 Redisson 客戶端的配置類,這些就是積累經(jīng)驗(yàn)的重要性了。

 

3、運(yùn)行項(xiàng)目

如果要正式學(xué)習(xí)項(xiàng)目,先不要急著去閱讀源碼,而是要先把項(xiàng)目在本地成功運(yùn)行,便于后續(xù)邊調(diào)試邊學(xué)習(xí)。

運(yùn)行項(xiàng)目的步驟很簡(jiǎn)單,用 git clone 命令將項(xiàng)目復(fù)制到你的電腦,然后根據(jù) README 文件或其他文檔中的指示,安裝項(xiàng)目的必要依賴項(xiàng)、修改本地運(yùn)行配置、并最終運(yùn)行項(xiàng)目。

雖然步驟很簡(jiǎn)單,但現(xiàn)實(shí)往往是大家把項(xiàng)目拉到本地后各種各樣的報(bào)錯(cuò)信息,所以運(yùn)行項(xiàng)目時(shí)要格外注重以下幾點(diǎn):

  1. 確保自己系統(tǒng)環(huán)境和項(xiàng)目要求一致,比如注意下前端 Node.js 和后端 JDK 版本要求。

  2. 確保項(xiàng)目依賴的版本和項(xiàng)目要求一致,比如后端依賴的 MySQL 和 Redis 版本。對(duì)于這種主流的技術(shù),一般情況下只要?jiǎng)e用太新的版本,基本不會(huì)影響項(xiàng)目的運(yùn)行。

  3. 修改本地運(yùn)行配置為自己的,比如數(shù)據(jù)庫(kù)賬號(hào)、密碼等,而且要格外注意不要讀取錯(cuò)了配置文件,否則可能改了半天還在疑惑 “怎么配置沒生效呢”?

遇到報(bào)錯(cuò)是很正常的,因?yàn)椴皇撬械拈_源項(xiàng)目都做到了 “易用易上手”,遇到報(bào)錯(cuò)時(shí),我們只要定位到關(guān)鍵報(bào)錯(cuò)信息,然后順藤摸瓜找到對(duì)應(yīng)的文件去修改即可。實(shí)在搞不定,這不還有搜索引擎和 AI 么?

這里分享一個(gè)常用的快速運(yùn)行項(xiàng)目的技巧。有的時(shí)候項(xiàng)目用到了很多依賴(比如 MallChat 中用了 MinIO、RocketMQ 等),但是我們本地并沒有安裝這些依賴,導(dǎo)致項(xiàng)目無(wú)法啟動(dòng)。如下圖,因?yàn)槲覜]安裝 RocketMQ,導(dǎo)致啟動(dòng)時(shí)連接 RocketMQ 報(bào)錯(cuò):

要想啟動(dòng)項(xiàng)目,傳統(tǒng)方法就是自己安裝所有依賴,但如果項(xiàng)目只有一個(gè)不起眼的位置用到了某個(gè)依賴,其實(shí)花時(shí)間去安裝性價(jià)比不高。這時(shí),我們可以用一種更簡(jiǎn)單的方法,直接禁用掉用到這些依賴的 Bean 加載。

比如在啟動(dòng)類加上 exclude ,就能快速禁用某些依賴的自動(dòng)加載,示例代碼如下:

@SpringBootApplication(exclude = {RocketMQAutoConfiguration.class})

但是,禁用了 RocketMQ Bean 的初始化后,如果有代碼用到了這個(gè) Bean,就會(huì)因?yàn)槿笔б蕾嚨?Bean 而報(bào)錯(cuò)。這種情況下,可以使用 @Lazy 注解對(duì) Bean 進(jìn)行懶加載,用到的時(shí)候才會(huì)加載,啟動(dòng)項(xiàng)目時(shí)就不會(huì)報(bào)錯(cuò)了~ 示例代碼如下:

public class MQProducer {
   @Autowired
   @Lazy
   private RocketMQTemplate rocketMQTemplate;
}

 

4、了解業(yè)務(wù)流程和庫(kù)表設(shè)計(jì)

在閱讀代碼學(xué)習(xí)前,最好先整體了解項(xiàng)目的業(yè)務(wù)流程和庫(kù)表設(shè)計(jì),有助于明確后續(xù)閱讀源碼時(shí)的順序和學(xué)習(xí)方向。

核心業(yè)務(wù)流程可以通過(guò)閱讀文檔、或者自己體驗(yàn)系統(tǒng)的方式來(lái)了解。比如對(duì)于聊天室系統(tǒng),核心業(yè)務(wù)流程就是:用戶登錄 => 用戶上線 => 添加好友 => 創(chuàng)建房間 => 加入房間 => 發(fā)送消息 => 消息審核 => 其他用戶接收消息 => 回復(fù)消息。

了解項(xiàng)目的庫(kù)表設(shè)計(jì)也是有技巧的,比起直接看 SQL 文件,一般我會(huì)先在本地初始化數(shù)據(jù)庫(kù),然后通過(guò)可視化圖表來(lái)查看。

如圖,表之間的關(guān)系一目了然!比如房間又分為單聊和群聊,一個(gè)房間內(nèi)有多個(gè)會(huì)話和消息:

 

5、閱讀代碼

剛開始閱讀代碼時(shí),不要急著一行代碼一行代碼地按照順序去閱讀,而是要先整體理解每個(gè)目錄的 作用和目錄內(nèi)部的文件組織形式 ,但暫時(shí)不必深入理解具體的實(shí)現(xiàn)方式。

舉個(gè)例子,對(duì)于 MallChat 項(xiàng)目,你要先能明確紅字中的信息:

查看某個(gè)目錄內(nèi)部的文件組織形式時(shí),有一個(gè)小技巧??梢灾苯釉?IDEA 中右鍵點(diǎn)擊某個(gè)包,查看 UML 結(jié)構(gòu)圖:

通過(guò)結(jié)構(gòu)圖,我們可以速覽類之間的關(guān)系。比如下圖中,工廠創(chuàng)建策略、兩個(gè)具體策略繼承了抽象策略類:

之后,你就可以找到感興趣的項(xiàng)目核心功能模塊進(jìn)行學(xué)習(xí)了,分享幾個(gè)學(xué)習(xí)技巧:

1)如果想快速學(xué)習(xí)某個(gè)功能的實(shí)現(xiàn),建議是通過(guò)文檔等方式 先了解業(yè)務(wù)流程 ,再學(xué)習(xí)源碼。學(xué)習(xí)源碼時(shí),建議使用 Debug 模式啟動(dòng)項(xiàng)目,通過(guò)接口文檔(或前端)發(fā)送請(qǐng)求,完整地分析一個(gè)請(qǐng)求的處理流程。

可以通過(guò) IDEA 的 Endpoints 功能快速查看項(xiàng)目中的接口,并定位到源碼:

2)如果想快速了解單個(gè)文件的核心結(jié)構(gòu)(比如方法和屬性),可以使用 IDEA 的 Structure 功能,如圖:

3)可以通過(guò) Call Hierarchy 功能查看方法、類或變量在程序中被調(diào)用的層次結(jié)構(gòu)和關(guān)系。比如下圖我查看了 doMark 方法的調(diào)用者視圖,可以看到哪些方法調(diào)用了它,便于快速理解代碼之間的交互,不用自己一層一層點(diǎn)進(jìn)去看了。

4)可以通過(guò) Find Usages 功能快速查看一個(gè)方法或者類在項(xiàng)目中所有的使用位置:

5)當(dāng)然,對(duì)于復(fù)雜的功能,單獨(dú)看代碼可能是理解不了的,這時(shí)就需要搭配文檔和代碼注釋了。什么?沒有文檔?!不寫注釋?!那就直接通過(guò) Git 版本控制工具找到原作者去詢問吧。

 

6、理解項(xiàng)目開發(fā)流程和規(guī)范

在你熟悉了項(xiàng)目后,就可以嘗試參與開發(fā)了。可以先通過(guò) 閱讀項(xiàng)目的貢獻(xiàn)指南或開發(fā)文檔 來(lái)理解項(xiàng)目的開發(fā)流程、開發(fā)規(guī)范等,跟項(xiàng)目的其他開發(fā)者保持一致。如果有疑惑,可以看看別人的代碼中是怎么做的,有樣學(xué)樣就行;實(shí)在不確定的話,最好是提前詢問,不要提交一堆不符合規(guī)范的代碼,再被別人打回來(lái),浪費(fèi)彼此的時(shí)間。

 

7、參與項(xiàng)目

最后,學(xué)習(xí)開源項(xiàng)目最好的方式就是親身參與項(xiàng)目的開發(fā),這也是我一直建議大家做的,不僅能提升能力、也能給自己的簡(jiǎn)歷加分。

其實(shí)參與開源項(xiàng)目沒有那么困難,可以先在項(xiàng)目的 Issues 部分查看別人反饋的 Bug,并且?guī)兔π迯?fù),熟悉整個(gè)參與開源項(xiàng)目的流程。之后還可以 跟作者溝通 并嘗試添加新功能、進(jìn)行優(yōu)化等。

如果想讓你貢獻(xiàn)的代碼更快被作者接受,就一定要做好溝通!因?yàn)槲易约阂灿泻芏嚅_源項(xiàng)目,也有小伙伴給我貢獻(xiàn)過(guò)代碼,但不可能所有的代碼都接受。因?yàn)槊總€(gè)人關(guān)于項(xiàng)目的想法是不同的,在沒有跟作者交流的情況下,可能你做的功能對(duì)項(xiàng)目并沒有幫助、超出了項(xiàng)目的規(guī)劃,反而會(huì)讓項(xiàng)目更加復(fù)雜。團(tuán)隊(duì)開發(fā)也是一樣,大家要一起評(píng)審需求,確保需求是有價(jià)值的、和項(xiàng)目定位是匹配的,而不是誰(shuí)想加功能就加功能。

轉(zhuǎn)自https://www.cnblogs.com/yupi/p/18362486


該文章在 2024/11/13 9:04:44 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

久久久经典少妇无限免费| 草B短视频| 天天干天天爽夜夜爽免费| 药物经济 虚拟仿真教学软件| 日本色TV| 欧美色图亚洲色图美腿丝袜乱伦熟女| 二级黄片久久| 午夜寂寞少妇免费视| 久久久亚洲一区二区伦理| 亚洲日韩欧美美女视频| 偷拍凹凸视频| 久久国产精品综合| 免费播放国产性色生活片| 日韩一区二区 视频| 人妻体体内射精一区二区| 国产成人91精品免费看片麻豆| 91约美女精品视频| 国产欧美h在线观看| 一级av麻豆| 伊人无码在线青春草一区二区区区| 欧美日韩中亚黄片| 国精品网站| 日韩精品一区二区久久久久久 | 下载免费A片黄片一级欧美| 久久精品十区熟女| ——caoporu——| 日韩国产一区| 曰本一区不卡视频| CaoPorn超碰个人页面| 日韩精品Aaa| 91丨色丨国产熟女 蘑菇| 五月中文字幕开心| 婷婷少妇网| 老熟妇91人人人操| 调教裸体美女网站| 国产偷拍自拍图片| 久久天天干天天插天天艮| 亚洲日韩在线专区| 欧美啪啪地址| 极品无码一区二区| 日韩中文字幕女优影院|