cao死我好湿好紧好爽动态视屏|精选久久久久久久久久|中文无码精品一区二区三区四季|AAA国语精品刺激对白视频|

當(dāng)前位置:首頁 > 軟件開放 > 正文內(nèi)容

二次解析源碼開源(簡單二次解析源碼)

軟件開放2年前 (2023-04-10)1410

本篇文章給大家談?wù)劧谓馕鲈创a開源,以及簡單二次解析源碼對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

開源爬蟲框架各有什么優(yōu)缺點?

首先爬蟲框架有三種

分布式爬蟲:Nutch

JAVA單機(jī)爬蟲:Crawler4j,WebMagic,WebCollector

非JAVA單機(jī)爬蟲:scrapy

第一類:分布式爬蟲

優(yōu)點:

海量URL管理

網(wǎng)速快

缺點:

Nutch是為搜索引擎設(shè)計的爬蟲,大多數(shù)用戶是需要一個做精準(zhǔn)數(shù)據(jù)爬?。ň槿。┑呐老x。Nutch運(yùn)行的一套流程里,有三分之二是為了搜索引擎而設(shè)計的。對精抽取沒有太大的意義。

用Nutch做數(shù)據(jù)抽取,會浪費(fèi)很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進(jìn)行二次開發(fā),來使得它適用于精抽取的業(yè)務(wù),基本上就要破壞Nutch的框架,把Nutch改的面目全非。

Nutch依賴hadoop運(yùn)行,hadoop本身會消耗很多的時間。如果集群機(jī)器數(shù)量較少,爬取速度反而不如單機(jī)爬蟲。

Nutch雖然有一套插件機(jī)制,而且作為亮點宣傳??梢钥吹揭恍╅_源的Nutch插件,提供精抽取的功能。但是開發(fā)過Nutch插件的人都知道,Nutch的插件系統(tǒng)有多蹩腳。利用反射的機(jī)制來加載和調(diào)用插件,使得程序的編寫和調(diào)試都變得異常困難,更別說在上面開發(fā)一套復(fù)雜的精抽取系統(tǒng)了。

Nutch并沒有為精抽取提供相應(yīng)的插件掛載點。Nutch的插件有只有五六個掛載點,而這五六個掛載點都是為了搜索引擎服務(wù)的,并沒有為精抽取提供掛載點。大多數(shù)Nutch的精抽取插件,都是掛載在“頁面解析”(parser)這個掛載點的,這個掛載點其實是為了解析鏈接(為后續(xù)爬取提供URL),以及為搜索引擎提供一些易抽取的網(wǎng)頁信息(網(wǎng)頁的meta信息、text)

用Nutch進(jìn)行爬蟲的二次開發(fā),爬蟲的編寫和調(diào)試所需的時間,往往是單機(jī)爬蟲所需的十倍時間不止。了解Nutch源碼的學(xué)習(xí)成本很高,何況是要讓一個團(tuán)隊的人都讀懂Nutch源碼。調(diào)試過程中會出現(xiàn)除程序本身之外的各種問題(hadoop的問題、hbase的問題)。

Nutch2的版本目前并不適合開發(fā)。官方現(xiàn)在穩(wěn)定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。Nutch2.3之前、Nutch2.2.1之后的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩(wěn)定(一直在修改)。

第二類:JAVA單機(jī)爬蟲

優(yōu)點:

支持多線程。

支持代理。

能過濾重復(fù)URL的。

負(fù)責(zé)遍歷網(wǎng)站和下載頁面。爬js生成的信息和網(wǎng)頁信息抽取模塊有關(guān),往往需要通過模擬瀏覽器(htmlunit,selenium)來完成。

缺點:

設(shè)計模式對軟件開發(fā)沒有指導(dǎo)性作用。用設(shè)計模式來設(shè)計爬蟲,只會使得爬蟲的設(shè)計更加臃腫。

第三類:非JAVA單機(jī)爬蟲

優(yōu)點:

先說python爬蟲,python可以用30行代碼,完成JAVA

50行代碼干的任務(wù)。python寫代碼的確快,但是在調(diào)試代碼的階段,python代碼的調(diào)試往往會耗費(fèi)遠(yuǎn)遠(yuǎn)多于編碼階段省下的時間。

使用python開發(fā),要保證程序的正確性和穩(wěn)定性,就需要寫更多的測試模塊。當(dāng)然如果爬取規(guī)模不大、爬取業(yè)務(wù)不復(fù)雜,使用scrapy這種爬蟲也是蠻不錯的,可以輕松完成爬取任務(wù)。

缺點:

bug較多,不穩(wěn)定。

爬蟲可以爬取ajax信息么?

網(wǎng)頁上有一些異步加載的數(shù)據(jù),爬取這些數(shù)據(jù)有兩種方法:使用模擬瀏覽器(問題1中描述過了),或者分析ajax的http請求,自己生成ajax請求的url,獲取返回的數(shù)據(jù)。如果是自己生成ajax請求,使用開源爬蟲的意義在哪里?其實是要用開源爬蟲的線程池和URL管理功能(比如斷點爬?。?。

如果我已經(jīng)可以生成我所需要的ajax請求(列表),如何用這些爬蟲來對這些請求進(jìn)行爬??? ? ? ?

爬蟲往往都是設(shè)計成廣度遍歷或者深度遍歷的模式,去遍歷靜態(tài)或者動態(tài)頁面。爬取ajax信息屬于deepweb(深網(wǎng))的范疇,雖然大多數(shù)爬蟲都不直接支持。但是也可以通過一些方法來完成。比如WebCollector使用廣度遍歷來遍歷網(wǎng)站。爬蟲的第一輪爬取就是爬取種子集合(seeds)中的所有url。簡單來說,就是將生成的ajax請求作為種子,放入爬蟲。用爬蟲對這些種子,進(jìn)行深度為1的廣度遍歷(默認(rèn)就是廣度遍歷)。

爬蟲怎么爬取要登陸的網(wǎng)站?

這些開源爬蟲都支持在爬取時指定cookies,模擬登陸主要是靠cookies。至于cookies怎么獲取,不是爬蟲管的事情。你可以手動獲取、用http請求模擬登陸或者用模擬瀏覽器自動登陸獲取cookie。

爬蟲怎么抽取網(wǎng)頁的信息?

開源爬蟲一般都會集成網(wǎng)頁抽取工具。主要支持兩種規(guī)范:CSSSELECTOR和XPATH。

網(wǎng)頁可以調(diào)用爬蟲么?

爬蟲的調(diào)用是在Web的服務(wù)端調(diào)用的,平時怎么用就怎么用,這些爬蟲都可以使用。

爬蟲速度怎么樣?

單機(jī)開源爬蟲的速度,基本都可以講本機(jī)的網(wǎng)速用到極限。爬蟲的速度慢,往往是因為用戶把線程數(shù)開少了、網(wǎng)速慢,或者在數(shù)據(jù)持久化時,和數(shù)據(jù)庫的交互速度慢。而這些東西,往往都是用戶的機(jī)器和二次開發(fā)的代碼決定的。這些開源爬蟲的速度,都很可以。

手把手帶你分析LeanCancary源碼

LeakCancary 是一個實時監(jiān)控內(nèi)存泄漏的開源框架,當(dāng)檢測到有內(nèi)存泄漏時,會以通知的方式提示開發(fā)者當(dāng)前發(fā)生了內(nèi)存泄漏

監(jiān)聽activity的生命周期,在Activity的onDestory方法中,開始監(jiān)聽activity對象, 通過將Activity包裝到WeakReference中,被WeakReference包裝過的Activity對象如果被回收,該WeakReference引用會被放到ReferenceQueue中,通過監(jiān)測ReferenceQueue里面的內(nèi)容就能檢查到Activity是否能夠被回收。其中最重要的兩個對象為

SetString retainedKeys: 存放所有監(jiān)控的Activity的key(值為通過uuid,唯一標(biāo)識Activity)

ReferenceQueueObject queue:所有被回收的activity對象會存放到這個引用隊列里面, 如果想要知道一個activity有沒有內(nèi)存泄漏,則只需要判斷該activity在

1.在build.gradle中添加依賴

至此,LeakCancary 的接入工作就完成了,是不是超簡單?

我們從入口函數(shù)開始分析

首先判斷當(dāng)前運(yùn)行的進(jìn)程是否是屬于HeapAnalyzerService進(jìn)程,如果是 則return調(diào),防止應(yīng)用本身Application的onCreate方法多次初始化。這里需要這么做的原因是:LeakCancary本身是運(yùn)行在另外一個進(jìn)程中的,這點我們可以從LeakCancary的AndroidManifaset.xml中可以看出是有單獨設(shè)置process Named的。

接下來執(zhí)行 LeakCanary.install

LeakCanary.refWatcher()

通過builder模式構(gòu)建了AndroidRefWatcherBuilder對象,然后通過AndroidRefWatcherBuilder對象設(shè)置了listenerServiceClass()用于綁定DisplayLeakService服務(wù),該服務(wù)用來分析和顯示內(nèi)存泄漏信息的通知

AndroidRefWatchBuilder.buildAndInstall

先調(diào)用AndroidRefWatchBuilder.buid() 構(gòu)建一個RefWatcher對象

構(gòu)建RefWatcher的參數(shù)有

解析來是

LeakCancaryInternal.java

啟動DisplayLeakActivity并顯示應(yīng)用圖標(biāo),這個圖標(biāo)是LeakCancary這個應(yīng)用的圖標(biāo)

接下來是執(zhí)行 :

ActivityRefWatcher.install(context, refWatcher);

在Activity的onDestroy方法中執(zhí)行RefWatcher.watch(activity)

RefWatcher.java

這里需要注意幾個變量:

這里有一個知識點:弱引用和引用隊列配合時,當(dāng)弱引用持有的對象被垃圾回收,java虛擬機(jī)會把這個弱引用加入到與之關(guān)聯(lián)的引用隊列中。也就是說當(dāng)activity被回收時,activity對象的引用就會被添加到ReferenceQueue這個引用隊列中。

接下來是具體的內(nèi)存泄漏判斷過程

efWatcher.ensureGoneAsync

這里的watchExecutor 實現(xiàn)類是AndroidWatchExecutor

AndroidWatchExecutor.execute()

這里是切換到主線程,當(dāng)消息隊列空閑時執(zhí)行run方法, run方法實際執(zhí)行的是RefWatcher中的ensureGone()

RefWatcher.ensureGone();

遍歷ReferenceQueue列表中的對象(這些對象已經(jīng)被回收), 判斷對象是否存在當(dāng)前activity的弱引用,存在則刪除retainedKeys中的activity的key 值; 如果activity沒有被回收,則不會添加到ReferenceQueue,也就不會從retainedKeys中移除

2.通過gone(reference)來判斷當(dāng)前弱引用對應(yīng)的Activity是否存在于retainedKeys?如果不存在,則說明通過第一步的操作,已經(jīng)移除了該引用的key值,直接返回即可。

3.如果第二部沒有返回,說明retainedKeys還存在當(dāng)前activity的引用(也就是改activity沒有被添加到ReferenceQueue,沒有被回收),則調(diào)用GcTigger.runGc方法運(yùn)行GC.

AndroidHeapDumper.dumpHeap()

調(diào)用 File heapDumpFile = leakDirectoryProvider.newHeapDumpFile(); 新建hprof文件,然后調(diào)用Debug.dumpHprofData() 方法 dump 當(dāng)前堆內(nèi)存并寫入剛才創(chuàng)建的文件。

然后調(diào)用heapdumpListener.analyze(heapDump)分析剛剛生成的heapDumpwen文件

這里的heapdumpListener 是ServiceHeapDumpListener

調(diào)用HeapAnalyzerService開始啟動HeapAnalyzerService 這個前臺服務(wù)執(zhí)行分析

HeapAnalyzerService.java

調(diào)用heapAnalyzer.checkForLeak 獲取結(jié)果后,調(diào)用AbstractAnalysisResultService.sendResultToListener展示分析結(jié)果。具體是通過DisplayLeakService 來展示的。

最后會執(zhí)行afterDefaultHandling方法,在這里我們可以自定義一些操作,例如上報泄漏信息給服務(wù)器

LeakCancary主要是利用了弱引用 WeakReference 和 引用隊列 ReferenceQueue的知識,當(dāng)WeakReference中引用的對象被回收時,該引用會被添加到ReferenceQueue中,如果沒有被回收,則不會添加到ReferenceQueue中。 所以可以通過檢測ReferenceQueue是否存在activity的引用來判斷activity是否存在泄漏導(dǎo)致沒有回收。

LeakCanacary 監(jiān)控內(nèi)存泄漏主要流程如下:

參考

半年java經(jīng)驗,二次開發(fā)不懂,正常嗎?

你這種情況屬于沒掌握二次開發(fā)方法,很正常的,慢慢鍛煉把。不清楚你做二次開發(fā)是怎么弄的,我的個人想法以及我的做法是:首先了解該開源框架的架構(gòu)、所使用技術(shù)。然后根據(jù)項目需求,找到牽扯到該功能所牽扯到的模塊。如果只是修改ui界面,這個應(yīng)該比較容易,其實就是jsp或者模版技術(shù)的功底。如果是牽扯修改原本功能的話,那么你要明白這個模塊調(diào)用過程,能大概的把一個類調(diào)用另一個類的關(guān)系畫出來。慢慢來吧,雖然代碼有200M多,你不用全部看,但你最好要了解這個項目的架構(gòu),如果你以后要發(fā)展,那么開源項目的架構(gòu)設(shè)計是你需要借鑒的。

CMS二次開發(fā)概念

DedeCMS系統(tǒng)的模板是非固定的,用戶可以在新建欄目時可以自行選擇欄目模板,官方僅提供最基本的默認(rèn)模板,即是內(nèi)置系統(tǒng)模型的各個模板,由于DedeCMS支持自定義頻道模型,用戶自定義新頻道模型后,還需要按該模型的字段設(shè)計一套新的模板,此外,DedeCMS也支持使用風(fēng)格的形式使用模板,默認(rèn)風(fēng)格是 default,它表示系統(tǒng)默認(rèn)使用 {cmspath}/templets/default 這個文件夾的模板。

一、概念

1、板塊(封面)模板:

指網(wǎng)站主頁或比較重要的欄目封面頻道使用的模板,一般用“index_識別ID.htm”命名,此外,用戶單獨定義的單個頁面或自定義標(biāo)記,也可選是否支持板塊模板標(biāo)記,如果支持,系統(tǒng)會用板塊模板標(biāo)記引擎去解析后才輸出內(nèi)容或生成特定的文件。

2、列表模板:

指網(wǎng)站某個欄目的所有文章列表的模板,一般用 “l(fā)ist_識別ID.htm” 命名。

3、檔案模板:

表示文檔查看頁的模板,如文章模板,一般用 “article_識別ID.htm” 命名。

4、其它模板:

一般系統(tǒng)常規(guī)包含的模板有:主頁模板、搜索模板、RSS、JS編譯功能模板等,此外用戶也可以自定義一個模板創(chuàng)建為任意文件。

二、 命名,DedeCMS模板默認(rèn)命名規(guī)則如下

1、模板保存位置:

模板目錄:{cmspath} /templets/樣式名稱(英文,默認(rèn)為default,其中system為系統(tǒng)底層模板,plus為插件使用的模板)/具體功能模板文件} 。

2、 模板文件命名規(guī)范:

(1)index_識別ID.htm: 表示板塊(欄目封面)模板;

(2)list_識別ID.htm: 表示欄目列表模板;

(3)article_識別ID.htm: 表示內(nèi)容查看頁(文檔模板,包括專題查看頁);

(4)search.htm: 搜索結(jié)果列表模板;

(5)index.htm: 主頁模板;

四、二次開發(fā)

在V5.3中已經(jīng)將標(biāo)簽開發(fā)分離出來,可以通過后臺[模板]-[標(biāo)簽代碼管理],點擊“新增加一個新的標(biāo)簽”來創(chuàng)建一個自己的標(biāo)簽,標(biāo)簽文件名為:標(biāo)簽名.lib.php 。

怎么自己做網(wǎng)站

自己做網(wǎng)站的步驟如下:

1、域名注冊。網(wǎng)站建設(shè)首先你需要一個屬于你自己的網(wǎng)址,也就是域名。

2、網(wǎng)站空間注冊。網(wǎng)站空間是用來放網(wǎng)站程序的。網(wǎng)站空間分為ASP、PHP、NET,三種類型。

3、網(wǎng)站備案

國內(nèi)的網(wǎng)站空間都需要備案,沒有備案的網(wǎng)站不允許上線。

4、上傳網(wǎng)站程序

網(wǎng)上有很多免費(fèi)網(wǎng)站程序,論壇(discuz)、博客(Emlog、WordPress、Z-blog)、綜合站(PageAdminCMS系統(tǒng))等,根據(jù)自己的網(wǎng)站來選擇程序。

5、添加網(wǎng)站內(nèi)容。我們可以在備案期間來完成網(wǎng)站內(nèi)容添加,添加網(wǎng)站內(nèi)容也是比較簡單。進(jìn)入網(wǎng)站后臺新建網(wǎng)站欄目,自己需要幾個欄目就建幾個。

6、解析域名和綁定域名。備案號后通過我就可以把域名解析到空間IP上了,域名解析完成后,再在空間的管理面板上把解析好的域名綁定。在地址欄輸入你的域名。就可以訪問到你的網(wǎng)站。

關(guān)于二次解析源碼開源和簡單二次解析源碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

掃描二維碼推送至手機(jī)訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://www.smallwaterjetsystem.com/post/16221.html

“二次解析源碼開源(簡單二次解析源碼)” 的相關(guān)文章

直播app軟件開發(fā)(手機(jī)直播app開發(fā)制作)

直播app軟件開發(fā)(手機(jī)直播app開發(fā)制作)

本篇文章給大家談?wù)勚辈pp軟件開發(fā),以及手機(jī)直播app開發(fā)制作對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、直播App軟件開發(fā)功能模塊有哪些? 2、開發(fā)一個視頻直播APP要多少錢 3、直播App軟件開發(fā)功能模塊有哪些? 直播App軟件開發(fā)功能模塊有哪些? 直...

成都軟件開發(fā)(成都軟件開發(fā)公司排名)

成都軟件開發(fā)(成都軟件開發(fā)公司排名)

本篇文章給大家談?wù)劤啥架浖_發(fā),以及成都軟件開發(fā)公司排名對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、成都軟件開發(fā)有哪些公司 2、成都教育系統(tǒng)軟件開發(fā)公司? 3、成都有沒有軟件開發(fā)做得好的公司? 4、成都哪個軟件開發(fā)培訓(xùn)學(xué)校好?要能學(xué)到東西的,不包就業(yè)也沒問...

如何自己開發(fā)軟件app(怎么才能自己開發(fā)軟件)

如何自己開發(fā)軟件app(怎么才能自己開發(fā)軟件)

本篇文章給大家談?wù)勅绾巫约洪_發(fā)軟件app,以及怎么才能自己開發(fā)軟件對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、如何開發(fā)一款app軟件 2、怎么開發(fā)app軟件? 3、如何開發(fā)手機(jī)app 4、怎么開發(fā)一款app軟件 5、如何自己開發(fā)一個app軟件 6、...

微信小程序跨境電商(微信小程序做跨境電商)

微信小程序跨境電商(微信小程序做跨境電商)

今天給各位分享微信小程序跨境電商的知識,其中也會對微信小程序做跨境電商進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、至臻小程序是正品嗎 2、如何說明跨境電商市場潛力大 3、騰訊小鵝拼拼上線不到兩年就要關(guān)停 4、優(yōu)時通奶粉是正品嗎 至臻小程序是...

婚禮官網(wǎng)免費(fèi)源碼(婚禮網(wǎng)站模板)

婚禮官網(wǎng)免費(fèi)源碼(婚禮網(wǎng)站模板)

今天給各位分享婚禮官網(wǎng)免費(fèi)源碼的知識,其中也會對婚禮網(wǎng)站模板進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、2022年國內(nèi)景區(qū)婚禮怎么報名 2、如何查詢一個企業(yè)的官網(wǎng)頁面源代碼?如何設(shè)置關(guān)鍵字的優(yōu)化,線上 3、愛克絲文婚禮公司還在嗎 4、婚禮的電...

eclipse學(xué)java選哪個安裝(怎樣安裝java和eclipse)

eclipse學(xué)java選哪個安裝(怎樣安裝java和eclipse)

本篇文章給大家談?wù)別clipse學(xué)java選哪個安裝,以及怎樣安裝java和eclipse對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、我是JAVA初學(xué)者Eclipse 用哪個版本? 2、想在Eclipse中學(xué)習(xí)javaswing開發(fā),請問要安裝哪些開發(fā)軟件 3...