當前位置:首頁 » 操作系統 » 原創閱讀源碼

原創閱讀源碼

發布時間: 2023-01-26 02:56:46

㈠ 大牛們是怎麼閱讀 Android 系統源碼

您好,很高興能幫助您
顯然Eclipse不是閱讀Android源碼的好工具,不流暢,搜索低效,繼承性關系/調用關系都無法有效查看。推薦Source Insight,在這個工具幫助下,你才可以駕馭巨大數量的Android 源碼,你可以從容在java,C++,C代碼間遨遊,你可以很快找到你需要的繼承關系。
順便,我們公司一直是Windows+Linux+Samba的工作模式。
2.宏觀上看,Android源碼分為功能實現上的縱向,和功能拓展上的橫向。在閱讀源碼時需要把握好著兩個思路。
譬如你需要研究音頻系統的實現原理,縱向:你需要從一個音樂的開始播放追蹤,一路下來,你發現Jni調用解碼庫,共享內存的創建和使用,路由的切換,音頻輸入設備的開啟,音頻流的開始。
3.Android的功能模塊絕大部分是C/S架構,你心裡一定需要有這個層級關系,你需要思路清晰地找到Server的位置,它才是你需要攻破的城。然後你才能發現HAL和Kernel一層層地剝離。
我大概在三個月前閱讀完Android UI系統的源碼,這是Android最復雜的部分,沒有之一。
我需要先找一個開頭,和UI有直接關系的就是最常見的Activity了吧,我就從它開始解剖。
我從Activity的創建入手,尋找Activity真正的創建位置,setContentview這個方法很明顯和UI有關,這兩方面一結合,我發現了ViewRoot和WindowManager的身影,沿著WM和WMS我發現了Surface,以及draw的函數,它居然在Activity 創建時出現的DeCorView上畫東西。藉助Source Insight我總結了UI Java層的橫向靜態圖。
完成這個靜態UML,我覺得我可以開始功能實現上追蹤了,這部分主要是C++的代碼(這也是我堅定勸阻的放棄Eclipse的原因),我沿著draw函數,看到了各個層級的關系,SurfaceSession的控制和事務處理,SharedBuffer讀寫控制,彪悍的SurfaceFlinger主宰一切,OpenGL ES的神筆馬良。FrameBuffer和FrameBufferDevice的圖像輸出。一氣呵成的完成了。

你的採納是我前進的動力,
記得好評和採納,答題不易,互相幫助,

㈡ 閱讀wordpress源碼有哪些好的方法和建議

使用phpxref

地址:phpxref.sourceforge.net/

這款開源軟體被稱為PHP源碼閱讀利器

我一直使用該軟體查看wordpress的源碼,可以快捷地查看各常量、變數、函數、類及各函數之間的引用等等。

安裝方法:


1. 直接解壓phpxref.zip到目錄wp-source


2. 進入目錄wp-source,編輯phpxref.cfg文件,更改如下設置四項設置:SOURCE, OUTPUT, PROJECT, CHARSET



#source指wordpress源碼存放的位置
SOURCE=D:http_rootwordpress4.6

#output指phprexf執行後輸出的目錄
OUTPUT=D:code_reviewwp4.6

#項目名稱,可依自己習慣起名
PROJECT=wp4.6

#基本上指定utf-8即可
CHARSET=utf-8

3. 雙擊執行phpxref.exe

㈢ 如何閱讀程序源代碼

閱讀源代碼的第一個工具,就是你手中的code base。把它編譯出來,運行它,加log,試著修改一些數據和代碼,看看有什麼變化。

第二個重要的工具就是debugger,而debugger最重要的功能是獲取call stack。在你感興趣的use case里pause一下,在你不知道有什麼用的函數里加個斷點,顯示出來的call stack都能讓你對系統有更清晰的認識。

一個軟體系統就是一個小宇宙。別期待有什麼高明的文檔。要把自己當成探求自然真理的物理學家。

必須找好切入點。你要解決什麼問題。是要fix bug;還是要把這個系統和其它模塊集成;還是要增加新功能。物理學家沒有上來就研究整個宇宙的,必須選好分支。
如果你有一個猜想,但是又和你的目標關聯不太大,那就堅持這個猜想,直到出現明顯反例。物理學有很多這樣的例子,和數學不同,為了旁支猜想投入過多研究是不明智的。
如果有明顯證據證明你的某個旁支猜想大錯特錯,你就要放棄主要目標,暫時把解決旁支猜想作為主要目標。比如,你本來以為某個結構是LRU的cache,結果發現怎麼做都不對,那就先放棄原來的目標,專門研究這個結構的用途。
對於旁支猜想的不斷切換,要做好自己的task stack保留。在旁支猜想解決之後,要根據結論盡快回到上次中斷的任務。

復雜的軟體系統更像一個動物,待久了你會了解它的脾性。有些是通過邏輯,有些是通過感覺。玩車的尚且有這種感覺,我們玩的東西比車復雜上萬倍,就更不能對它缺乏感情投入。(這也是我不愛做企業開發的原因,我不愛養個爬行類當寵物,還是貓貓狗狗的親切。)

㈣ 求小說網站源碼

常春藤文學網站系統
ftp://203.171.239.183/asp/ArtSql1520061205.rar
不能下載的話你到這個網址自己用迅雷下載:
http://60.28.178.205/dload1.html?cid=
此網址中還有一個 常春藤文學網站系統 SQL 1.5 可以下載,希望能夠滿足你的要求

㈤ 大牛們是怎麼閱讀 Android 系統源碼的

由於工作需要大量修改framework代碼, 在AOSP(Android Open Source Project)源碼上花費了不少功夫, Application端和Services端都看和改了不少.
如果只是想看看一些常用類的實現, 在Android包管理器里把源碼下載下來, 隨便一個IDE配好Source Code的path看就行.
但如果想深入的了解Android系統, 那麼可以看下我的一些簡單的總結.

知識
Java
Java是AOSP的主要語言之一. 沒得說, 必需熟練掌握.
熟練的Android App開發
Linux
Android基於Linux的, 並且AOSP的推薦編譯環境是Ubuntu 12.04. 所以熟練的使用並了解Linux這個系統是必不可少的. 如果你想了解偏底層的代碼, 那麼必需了解基本的Linux環境下的程序開發. 如果再深入到驅動層, 那麼Kernel相關的知識也要具備.
Make
AOSP使用Make系統進行編譯. 了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.
Git
AOSP使用git+repo進行源碼管理. 這應該是程序員必備技能吧.
C++
Android系統的一些性能敏感模塊及第三方庫是用C++實現的, 比如: Input系統, Chromium項目(WebView的底層實現).

硬體
流暢的國際網路
AOSP代碼下載需要你擁有一個流暢的國際網路. 如果在下載代碼這一步就失去耐心的話, 那你肯定沒有耐心去看那亂糟糟的AOSP代碼. 另外, 好程序員應該都會需要一個流暢的Google.
一台運行Ubuntu 12.04的PC.
如果只是閱讀源碼而不做太多修改的話, 其實不需要太高的配置.
一台Nexus設備
AOSP項目默認只支持Nexus系列設備. 沒有也沒關系, 你依然可以讀代碼. 但如果你想在大牛之路走的更遠, 還是改改代碼, 然後刷機調試看看吧.
高品質USB線
要刷機時線壞了, 沒有更窩心的事兒了.
軟體
Ubuntu 12.04
官方推薦, 沒得選.
Oracle Java 1.6
注意不要用OpenJDK. 這是個坑, 官方文檔雖然有寫, 但還是單獨提一下.
安裝:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default

Eclipse
估計會有不少人吐槽, 為什麼要用這個老古董. 其實原因很簡單, 合適. 剛開始搞AOSP時, 為了找到效率最優的工具, 我嘗試過Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最終結果還是Eclipse. 主要優點有:
有語法分析 (快速准確的類, 方法跳轉).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等調試工具.
為了提高效率, 花5分鍾背下常用快捷鍵非常非常值得.
調整好你的classpath, 不要導入無用的代碼. 因為AOSP項目代碼實在是太多了. 當你還不需要看C++代碼時, 不要為項目添加C++支持, 建索引過程會讓你崩潰.
Intellij IDEA
開發App必備. 當你要調試系統的某個功能是, 常常需要迅速寫出一個調試用App, 這個時候老舊的Eclipse就不好用了. Itellij IDEA的xml自動補全非常給力.
巨人的肩膀

這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.

這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.

此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.

鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.

Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.

一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間.
Binder
這是Android最基礎的進程間通訊. 在Application和System services之間大量使用. 你不僅要知道AIDL如何使用, 也要知道如何手寫Binder介面. 這對你理解Android的Application和System services如何交互有非常重要的作用. Binder如何實現的倒不必著急看.
HAL
除非你對硬體特別感興趣或者想去方案公司上班, 否則別花太多時間在這一層.
CyanogenMod
這是一個基於AOSP的第三方Rom. 從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西. 比如如何支持Nexus以外的設備.
DIA
這是一個Linux下畫UML的工具, 能夠幫你梳理看過的代碼.
XDA

這里有最新資訊和最有趣的論壇.
想到了再補充.

㈥ 如何閱讀源代碼

這樣閱讀源代碼:

1、你會懂的這些代碼是什麼意思,點擊右鍵

提示:專業人士才能看懂的

㈦ 閱讀源代碼

沒錯,最好的辦法是閱讀源代碼,至於源代碼簡直太多了,隨便網上一搜就出來了。還有一些編程的書上也有的是源代碼。簡直太容易找了。
UltraEdit就是一個文本編輯器而已,用它來編輯程序,比較易看,比如關鍵字會用藍色表示,自動按程序規則分行什麼的。

㈧ 關於閱讀開源項目的源碼,有哪些經驗值得分享

閱讀源代碼的過程中,最重要的一點是反復地重復。ttserver來源只是解讀台詞時,我將不熟悉C,有很多奇怪的代碼ttserver習慣,所以硬著頭皮vim線看它一遍又一遍,有些不明白的地方,看到十幾次,真正理解,可能被視為量變引起質變。

所以我一直認為,寫一篇文章,你可以毫無問題地閱讀和理解,這是一個好主意。

㈨ 如何在 GitHub 上高效閱讀源碼

之前聽說過一個故事,一個領導為了提高團隊戰鬥力,把團隊成員集中起來,搞封閉開發,重點還是在沒有網的條件下。

結果就是一個月過去了,產出基本為零。

我發現,如果沒有網,程序員基本上是寫不出代碼了。現在做什麼功能之前,先到網上搜搜看,然後直接復制粘貼搞定。

最實用的技術就是這么朴實無華。

而大部分的代碼都是在 GitHub 上找的,可以這么說,GitHub 基本上撐起了程序員一半的工資。

那如果不想把代碼 clone 到本地,怎麼在 GitHub 上高效閱讀源碼呢?

我最開始用的是一個插件,叫 Octotree

有了這個插件之後,在頁面的最左側會多一個目錄樹。這樣的話,就可以快速查看項目的整體目錄結構,而且在切換文件時也會更加流暢,再也不用來回刷新頁面了。

細心的小夥伴可能也發現了,上面的截圖還有一處不同,就是頁面中央多了一個「 GitHub1s 」按鈕。

沒錯,這就是我要介紹的第二個插件。

點擊這個按鈕之後呢,就會呼出在線版的 VS Code,然後使用 VS Code 打開代碼倉庫,直接享受 IDE 的體驗。

如果想直接通過網址來打開也是可以的,比如我的項目地址是:

只需要將地址稍稍改動,加一個 1s 即可:

那麼這個 1s 到底是什麼意思呢?官方是這么說的:

當然了,我們也可以把代碼拉下來,自己部署。然後根據服務響應的快慢,起個名字叫 2s 或者 3s 都可以。

雖然這種方式已經很方便了,但還有一個缺點,就是打開的代碼是只讀的,不能編輯。比如我只想改幾個很小的點,那麼不好意思,還是要把代碼 clone 下來,走一遍提交流程。

那還有更好的方式嗎?

當然有。

終於到重點了,隆重推出由官方支持的方式:只需要在代碼倉庫頁面按一下 . 就可以直接使用 VS Code 打開,而且支持編輯。

也可以通過地址訪問,把 .com 改成 .dev ,比如:

太方便了,太優雅了。感覺好多操作都可以直接在瀏覽器里搞定了。

微軟還是厲害。曾幾何時,我記得微軟在網上罵聲一片,對其收購 GitHub 也持悲觀態度。但人家現在開源項目已經上千個了,還在不斷貢獻。而且產品也越做越好,別的不說,單靠 VS Code 就俘獲了多少程序員的芳心。

科技 公司還是得踏踏實實搞技術,誠心誠意做產品,搞其他花里胡哨的東西沒啥用。

我們程序員呢,努力提升技術,然後多給文章點在看,多轉發,就挺好。

㈩ 為什麼以及如何閱讀源碼

對於這些問題,說到底主要是因為經驗不夠,而經驗主要從項目實踐中積累,所以招聘單位一般都會限定工作時間大於 3 年,因為這些人的項目經驗相對較豐富,項目中遇到的場景相對較多。
工作經驗的積累來自於年限與實踐,然而看源碼可以擴展我們的思路,這是變相增加我們經驗的不錯方法。雖然不能短時間內通過時間積累經驗,但是可以通過學習開源框架、開源項目來獲取。
另外進職場後一般都要先熟悉現有系統,如果有文檔還好,沒文檔的話就得自己去翻代碼研究。如果大家之前對閱讀源碼有經驗,那麼在研究新系統的代碼邏輯時就不會那麼費勁了。

熱點內容
瀏覽器里的伺服器錯誤是什麼意思 發布:2023-01-30 23:03:08 瀏覽:385
綜合實踐初始密碼是什麼 發布:2023-01-30 23:00:02 瀏覽:279
python多線程與多進程 發布:2023-01-30 22:58:50 瀏覽:563
哪些商品適合配置在通道貿架 發布:2023-01-30 22:56:38 瀏覽:592
栽種演算法 發布:2023-01-30 22:50:46 瀏覽:435
解壓站台 發布:2023-01-30 22:50:40 瀏覽:333
該頁面訪問已升級 發布:2023-01-30 22:50:27 瀏覽:438
銀行卡輸錯3次密碼怎麼辦 發布:2023-01-30 22:49:31 瀏覽:815
拍攝腳本報價 發布:2023-01-30 22:48:15 瀏覽:530
蘋果和安卓哪個追劇更好 發布:2023-01-30 22:46:02 瀏覽:539