一:學會如何讀一個JavaWeb項目源代碼
步驟:表結構->web.xml->mvc->db->spring ioc->log->代碼
1、先了解項目數據庫的表結構,這個方面是最容易忘記的,有時候我們只顧着看每一個方法是怎麼進行的,卻沒有去了解數據庫之間的主外鍵關聯。其實如果先了解數據庫表結構,再去看一個方法的實現會更加容易。
2、然後需要過一遍web.xml,知道項目中用到了什麼攔截器,監聽器,過濾器,擁有哪些配置文件。如果是攔截器,一般負責過濾請求,進行AOP等;如果是監 聽器,可能是定時任務,初始化任務;配置文件有如 使用了spring後的讀取mvc相關,db相關,service相關,aop相關的文件。
3、查看攔截器,監聽器代碼,知道攔截了什麼請求,這個類完成了怎樣的工作。有的人就是因爲缺少了這一步,自己寫了一個action,配置文件也沒有寫錯,但是卻怎麼調試也無法進入這個action,直到別人告訴他,請求被攔截了。
4、接下來,看配置文件,首先一定是mvc相關的,如springmvc中,要請求哪些請求是靜態資源,使用了哪些view策略,controller註解放在哪個包下等。如果你想學習java可以來這個羣,首先是二二零,中間是一四二,最後是九零六,裏面有大量的學習資料可以下載。
然後是db相關配置文件,看使用了什麼數據庫,使用了什麼orm框架,是否開啓了二級緩存,使用哪種產品作爲二級緩存,事務管理的處理,需要掃描的實體類放在什麼位置。最後是spring核心的ioc功能相關的配置文件,知道接口與具體類的注入大致是怎樣的。當然還有一些如apectj等的配 置文件,也是在這個步驟中完成
5、log相關文件,日誌的各個級別是如何處理的,在哪些地方使用了log記錄日誌
6、從上面幾點後知道了整個開源項目的整體框架,閱讀每個方法就不再那麼難了。
7、當然如果有項目配套的開發文檔也是要閱讀的。
二:爬蟲是如何實現的:
獲取規則url(正則表達式)
-> 模擬請求(如httpclient get請求)
-> 獲取列表頁html
-> 獲取信息頁
-> 發送請求
-> 信息頁html
-> 根據規則截取相應的字段信息
-> 對字段進行清理(如圖片壓縮)
-> 靜態化(存儲到數據庫)
三:架構文檔
開發項目是需要學會寫架構文檔,而不是隻是做一個碼農
包含以下內容:
1、模塊分級,各模塊關係,各模塊負責人
2、各模塊時序圖
3、各模塊表結構
4、協議文檔(接口文檔)
5、每個負責人工作計劃
下發任務後每個模塊的負責人用開發工具畫出自己的時序圖,表結構和接口文檔,最後彙總到總項目負責人處。
四:其它
1、數據庫是否分表問題:用分表的方式管理表有時並不合理,如果讀的壓力高是不值得的,可能更慢。如果寫併發高就行(以千萬級別爲準)。 讀是按緩存的,緩存密度在95%以上是比較保險的。
讀的優化:讀單條信息,只需搜到這個id,然後直接從緩存中拿,緩存用id做緩存,查id的效率是很高的。
2、CMS=模板+數據:可以通過只有一套自己的模板(如用freemarker),發送請求獲取json數據填入信息。CMS有模板通過把數據填入模板即形成一個網頁。
3、計算機瀏覽器的網頁內容要在手機上查看,需要做到響應式HTML。
4、如通過抓取網頁內容放到app上顯示,需要做的內容:圖片大小自適應,內容儘量保真,校驗內容是否丟失,鏈接需要替換的需要進行替換,html標籤替換
5、爬蟲的核心是多線程的任務管理,抓取分頁列表內容。
6、微信公衆號上是如何綁定用戶讓用戶只登錄一次,下次不用登陸?