亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bdbmultipleworkqueues.html

?? 網(wǎng)絡(luò)爬蟲開源代碼
?? HTML
?? 第 1 頁 / 共 4 頁
字號:
<a name="282" href="#282">282</a>         OperationStatus status;<a name="283" href="#283">283</a>         <strong>try</strong> {<a name="284" href="#284">284</a>             cursor = <strong>this</strong>.pendingUrisDB.openCursor(<strong>null</strong>, <strong>null</strong>);<a name="285" href="#285">285</a>             <em class="comment">// get cap; headKey at this point should always point to </em><a name="286" href="#286">286</a>             <em class="comment">// a queue-beginning cap entry (zero-length value)</em><a name="287" href="#287">287</a>             status = cursor.getSearchKey(headKey, result, <strong>null</strong>);<a name="288" href="#288">288</a>             <strong>if</strong>(status!=OperationStatus.SUCCESS || result.getData().length > 0) {<a name="289" href="#289">289</a>                 <em class="comment">// cap missing</em><a name="290" href="#290">290</a>                 <strong>throw</strong> <strong>new</strong> DatabaseException(<span class="string">"bdb queue cap missing"</span>);<a name="291" href="#291">291</a>             }<a name="292" href="#292">292</a>             <em class="comment">// get next item (real first item of queue)</em><a name="293" href="#293">293</a>             status = cursor.getNext(headKey,result,<strong>null</strong>);<a name="294" href="#294">294</a>         } <strong>finally</strong> { <a name="295" href="#295">295</a>             <strong>if</strong>(cursor!=<strong>null</strong>) {<a name="296" href="#296">296</a>                 cursor.close();<a name="297" href="#297">297</a>             }<a name="298" href="#298">298</a>         }<a name="299" href="#299">299</a>         <strong>return</strong> status;<a name="300" href="#300">300</a>     }<a name="301" href="#301">301</a>     <a name="302" href="#302">302</a>     <em>/**<em>*</em></em><a name="303" href="#303">303</a> <em>     * Put the given CrawlURI in at the appropriate place. </em><a name="304" href="#304">304</a> <em>     * </em><a name="305" href="#305">305</a> <em>     * @param curi</em><a name="306" href="#306">306</a> <em>     * @throws DatabaseException</em><a name="307" href="#307">307</a> <em>     */</em><a name="308" href="#308">308</a>     <strong>public</strong> <strong>void</strong> put(<a href="../../../../org/archive/crawler/datamodel/CrawlURI.html">CrawlURI</a> curi, <strong>boolean</strong> overwriteIfPresent) <a name="309" href="#309">309</a>     throws DatabaseException {<a name="310" href="#310">310</a>         DatabaseEntry insertKey = (DatabaseEntry)curi.getHolderKey();<a name="311" href="#311">311</a>         <strong>if</strong> (insertKey == <strong>null</strong>) {<a name="312" href="#312">312</a>             insertKey = calculateInsertKey(curi);<a name="313" href="#313">313</a>             curi.setHolderKey(insertKey);<a name="314" href="#314">314</a>         }<a name="315" href="#315">315</a>         DatabaseEntry value = <strong>new</strong> DatabaseEntry();<a name="316" href="#316">316</a>         crawlUriBinding.objectToEntry(curi, value);<a name="317" href="#317">317</a>         <em class="comment">// Output tally on avg. size if level is FINE or greater.</em><a name="318" href="#318">318</a>         <strong>if</strong> (LOGGER.isLoggable(Level.FINE)) {<a name="319" href="#319">319</a>             tallyAverageEntrySize(curi, value);<a name="320" href="#320">320</a>         }<a name="321" href="#321">321</a>         OperationStatus status; <a name="322" href="#322">322</a>         <strong>if</strong>(overwriteIfPresent) {<a name="323" href="#323">323</a>             status = pendingUrisDB.put(<strong>null</strong>, insertKey, value);<a name="324" href="#324">324</a>         } <strong>else</strong> {<a name="325" href="#325">325</a>             status = pendingUrisDB.putNoOverwrite(<strong>null</strong>, insertKey, value);<a name="326" href="#326">326</a>         }<a name="327" href="#327">327</a>         <strong>if</strong>(status!=OperationStatus.SUCCESS) {<a name="328" href="#328">328</a>             LOGGER.severe(<span class="string">"failed; "</span>+status+ <span class="string">" "</span>+curi);<a name="329" href="#329">329</a>         }<a name="330" href="#330">330</a>     }<a name="331" href="#331">331</a>     <a name="332" href="#332">332</a>     <strong>private</strong> <strong>long</strong> entryCount = 0;<a name="333" href="#333">333</a>     <strong>private</strong> <strong>long</strong> entrySizeSum = 0;<a name="334" href="#334">334</a>     <strong>private</strong> <strong>int</strong> largestEntry = 0;<a name="335" href="#335">335</a>     <a name="336" href="#336">336</a>     <em>/**<em>*</em></em><a name="337" href="#337">337</a> <em>     * Log average size of database entry.</em><a name="338" href="#338">338</a> <em>     * @param curi CrawlURI this entry is for.</em><a name="339" href="#339">339</a> <em>     * @param value Database entry value.</em><a name="340" href="#340">340</a> <em>     */</em><a name="341" href="#341">341</a>     <strong>private</strong> <strong>synchronized</strong> <strong>void</strong> tallyAverageEntrySize(<a href="../../../../org/archive/crawler/datamodel/CrawlURI.html">CrawlURI</a> curi,<a name="342" href="#342">342</a>             DatabaseEntry value) {<a name="343" href="#343">343</a>         entryCount++;<a name="344" href="#344">344</a>         <strong>int</strong> length = value.getData().length;<a name="345" href="#345">345</a>         entrySizeSum += length;<a name="346" href="#346">346</a>         <strong>int</strong> avg = (<strong>int</strong>) (entrySizeSum/entryCount);<a name="347" href="#347">347</a>         <strong>if</strong>(entryCount % 1000 == 0) {<a name="348" href="#348">348</a>             LOGGER.fine(<span class="string">"Average entry size at "</span>+entryCount+<span class="string">": "</span>+avg);<a name="349" href="#349">349</a>         }<a name="350" href="#350">350</a>         <strong>if</strong> (length>largestEntry) {<a name="351" href="#351">351</a>             largestEntry = length; <a name="352" href="#352">352</a>             LOGGER.fine(<span class="string">"Largest entry: "</span>+length+<span class="string">" "</span>+curi);<a name="353" href="#353">353</a>             <strong>if</strong>(length>(2*avg)) {<a name="354" href="#354">354</a>                 LOGGER.fine(<span class="string">"excessive?"</span>);<a name="355" href="#355">355</a>             }<a name="356" href="#356">356</a>         }<a name="357" href="#357">357</a>     }<a name="358" href="#358">358</a> <a name="359" href="#359">359</a>     <em>/**<em>*</em></em><a name="360" href="#360">360</a> <em>     * Calculate the 'origin' key for a virtual queue of items</em><a name="361" href="#361">361</a> <em>     * with the given classKey. This origin key will be a </em><a name="362" href="#362">362</a> <em>     * prefix of the keys for all items in the queue. </em><a name="363" href="#363">363</a> <em>     * </em><a name="364" href="#364">364</a> <em>     * @param classKey String key to derive origin byte key from </em><a name="365" href="#365">365</a> <em>     * @return a byte array key </em><a name="366" href="#366">366</a> <em>     */</em><a name="367" href="#367">367</a>     <strong>static</strong> byte[] calculateOriginKey(String classKey) {<a name="368" href="#368">368</a>         byte[] classKeyBytes = <strong>null</strong>;<a name="369" href="#369">369</a>         <strong>int</strong> len = 0;<a name="370" href="#370">370</a>         <strong>try</strong> {<a name="371" href="#371">371</a>             classKeyBytes = classKey.getBytes(<span class="string">"UTF-8"</span>);<a name="372" href="#372">372</a>             len = classKeyBytes.length;<a name="373" href="#373">373</a>         } <strong>catch</strong> (UnsupportedEncodingException e) {<a name="374" href="#374">374</a>             <em class="comment">// should be impossible; all JVMs must support UTF-8</em><a name="375" href="#375">375</a>             e.printStackTrace();<a name="376" href="#376">376</a>         }<a name="377" href="#377">377</a>         byte[] keyData = <strong>new</strong> byte[len+1];<a name="378" href="#378">378</a>         System.arraycopy(classKeyBytes,0,keyData,0,len);<a name="379" href="#379">379</a>         keyData[len]=0;<a name="380" href="#380">380</a>         <strong>return</strong> keyData;<a name="381" href="#381">381</a>     }<a name="382" href="#382">382</a>     <a name="383" href="#383">383</a>     <em>/**<em>*</em></em><a name="384" href="#384">384</a> <em>     * Calculate the insertKey that places a CrawlURI in the</em><a name="385" href="#385">385</a> <em>     * desired spot. First bytes are always classKey (usu. host)</em><a name="386" href="#386">386</a> <em>     * based -- ensuring grouping by host -- terminated by a zero</em><a name="387" href="#387">387</a> <em>     * byte. Then 8 bytes of data ensuring desired ordering </em><a name="388" href="#388">388</a> <em>     * within that 'queue' are used. The first byte of these 8 is</em><a name="389" href="#389">389</a> <em>     * priority -- allowing 'immediate' and 'soon' items to </em><a name="390" href="#390">390</a> <em>     * sort above regular. Next 1 byte is 'cost'. Last 6 bytes </em><a name="391" href="#391">391</a> <em>     * are ordinal serial number, ensuring earlier-discovered </em><a name="392" href="#392">392</a> <em>     * URIs sort before later. </em><a name="393" href="#393">393</a> <em>     * </em><a name="394" href="#394">394</a> <em>     * NOTE: Dangers here are:</em><a name="395" href="#395">395</a> <em>     * (1) priorities or costs over 2^7 (signed byte comparison)</em><a name="396" href="#396">396</a> <em>     * (2) ordinals over 2^48</em><a name="397" href="#397">397</a> <em>     * </em><a name="398" href="#398">398</a> <em>     * Package access &amp; static for testing purposes. </em><a name="399" href="#399">399</a> <em>     * </em><a name="400" href="#400">400</a> <em>     * @param curi</em><a name="401" href="#401">401</a> <em>     * @return a DatabaseEntry key for the CrawlURI</em><a name="402" href="#402">402</a> <em>     */</em><a name="403" href="#403">403</a>     <strong>static</strong> DatabaseEntry calculateInsertKey(<a href="../../../../org/archive/crawler/datamodel/CrawlURI.html">CrawlURI</a> curi) {<a name="404" href="#404">404</a>         byte[] classKeyBytes = <strong>null</strong>;<a name="405" href="#405">405</a>         <strong>int</strong> len = 0;<a name="406" href="#406">406</a>         <strong>try</strong> {<a name="407" href="#407">407</a>             classKeyBytes = curi.getClassKey().getBytes(<span class="string">"UTF-8"</span>);<a name="408" href="#408">408</a>             len = classKeyBytes.length;<a name="409" href="#409">409</a>         } <strong>catch</strong> (UnsupportedEncodingException e) {<a name="410" href="#410">410</a>             <em class="comment">// should be impossible; all JVMs must support UTF-8</em><a name="411" href="#411">411</a>             e.printStackTrace();<a name="412" href="#412">412</a>         }<a name="413" href="#413">413</a>         byte[] keyData = <strong>new</strong> byte[len+9];<a name="414" href="#414">414</a>         System.arraycopy(classKeyBytes,0,keyData,0,len);<a name="415" href="#415">415</a>         keyData[len]=0;<a name="416" href="#416">416</a>         <strong>long</strong> ordinalPlus = curi.getOrdinal() &amp; 0x0000FFFFFFFFFFFFL;<a name="417" href="#417">417</a>         ordinalPlus = <a name="418" href="#418">418</a>         	((<strong>long</strong>)curi.getSchedulingDirective() &lt;&lt; 56) | ordinalPlus;<a name="419" href="#419">419</a>         ordinalPlus = <a name="420" href="#420">420</a>         	((((<strong>long</strong>)curi.getHolderCost()) &amp; 0xFFL) &lt;&lt; 48) | ordinalPlus;<a name="421" href="#421">421</a>         ArchiveUtils.longIntoByteArray(ordinalPlus, keyData, len+1);<a name="422" href="#422">422</a>         <strong>return</strong> <strong>new</strong> DatabaseEntry(keyData);<a name="423" href="#423">423</a>     }<a name="424" href="#424">424</a>     <a name="425" href="#425">425</a>     <em>/**<em>*</em></em><a name="426" href="#426">426</a> <em>     * Delete the given CrawlURI from persistent store. Requires</em>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91成人在线精品| 亚洲福利视频导航| 亚洲欧洲美洲综合色网| 亚洲另类在线制服丝袜| 日韩vs国产vs欧美| 国产成人免费在线观看不卡| 91视频国产观看| 欧美区一区二区三区| 久久久精品国产免大香伊| 亚洲欧洲成人自拍| 美国一区二区三区在线播放| 国产精品影音先锋| 欧美日韩中字一区| 国产喷白浆一区二区三区| 亚洲国产成人tv| 国产精品一区三区| 欧美日韩黄视频| 国产精品嫩草久久久久| 日本欧美一区二区| 91亚洲精品一区二区乱码| 日韩三级免费观看| 亚洲三级久久久| 久久99久久99精品免视看婷婷| 99久久精品99国产精品| 精品嫩草影院久久| 亚洲精品成人在线| 国产乱码一区二区三区| 欧美日韩亚洲不卡| ●精品国产综合乱码久久久久 | 韩国成人在线视频| 福利91精品一区二区三区| 亚洲女性喷水在线观看一区| 久久91精品久久久久久秒播| 99re热视频精品| 欧美成人艳星乳罩| 五月天亚洲精品| 99re热这里只有精品视频| 国产亚洲va综合人人澡精品| 日韩精品午夜视频| 在线一区二区三区做爰视频网站| 国产视频一区在线播放| 午夜天堂影视香蕉久久| 91丨porny丨最新| 久久久久久久综合狠狠综合| 日韩**一区毛片| 在线免费观看日本一区| 亚洲欧洲日韩av| 91麻豆精品视频| 91麻豆精品国产自产在线| 国产精品色一区二区三区| 久久99国内精品| 欧美精品1区2区3区| 亚洲精品免费在线播放| 成人福利视频网站| 国产午夜精品久久| 激情成人午夜视频| 精品奇米国产一区二区三区| 日本伊人午夜精品| 精品久久人人做人人爰| 国产精品久久久一区麻豆最新章节| 精品在线播放免费| 日韩精品一区二区三区视频| 三级久久三级久久久| 欧美日韩日日摸| 亚洲国产综合人成综合网站| 欧美在线免费观看亚洲| 成人av在线播放网址| 欧美va亚洲va香蕉在线| 免费高清在线一区| 日韩一区二区麻豆国产| 麻豆成人91精品二区三区| 欧美一区二区网站| 日本亚洲视频在线| 欧美一区二区三区视频免费| 日本伊人午夜精品| 欧美videos大乳护士334| 国产一区二区免费视频| 久久精品一区二区三区不卡牛牛 | 欧美日韩中文国产| 欧美在线观看一区二区| 99久久国产综合色|国产精品| 国产精品麻豆欧美日韩ww| 国产成人无遮挡在线视频| 欧美国产日韩在线观看| 99r国产精品| 一级日本不卡的影视| 欧美精品久久一区| 久久国产剧场电影| 国产午夜精品理论片a级大结局| 豆国产96在线|亚洲| 亚洲欧美aⅴ...| 欧美色图免费看| 丝袜诱惑亚洲看片| 欧美精品电影在线播放| 蜜桃视频在线观看一区二区| xvideos.蜜桃一区二区| 国产成人精品免费看| 亚洲欧美日韩国产中文在线| 欧美午夜精品免费| 裸体歌舞表演一区二区| 国产日韩三级在线| 欧美一级一区二区| 色综合久久六月婷婷中文字幕| 一区二区三区加勒比av| 日韩一区二区三免费高清| 国产黑丝在线一区二区三区| 国产精品久久久久四虎| 欧美日韩国产天堂| 国产一区二区三区在线观看免费视频 | 91影视在线播放| 日韩黄色小视频| 国产亚洲欧美日韩俺去了| 国产成人精品综合在线观看| 国产精品久久久一区麻豆最新章节| 欧美色欧美亚洲另类二区| 精品一二三四在线| 亚洲少妇30p| 欧美性色aⅴ视频一区日韩精品| 久久精品国产亚洲高清剧情介绍| 国产精品嫩草99a| 在线不卡中文字幕播放| 高清成人免费视频| 亚洲成人av在线电影| 2020国产精品| 欧美最猛性xxxxx直播| 国产又粗又猛又爽又黄91精品| 一区二区三区在线视频免费观看| 欧美变态tickle挠乳网站| 色狠狠综合天天综合综合| 九九久久精品视频| 一个色在线综合| 亚洲国产精华液网站w | 日韩精品91亚洲二区在线观看| 日本一区二区三区免费乱视频| 欧美人妇做爰xxxⅹ性高电影 | 中文一区在线播放| 老色鬼精品视频在线观看播放| 国产精品国产三级国产aⅴ中文 | 一色桃子久久精品亚洲| 欧美videos中文字幕| 欧美三级午夜理伦三级中视频| 国产99精品视频| 美日韩一区二区| 亚洲综合激情网| 国产精品美女视频| 欧美成人三级在线| 欧美日韩在线综合| 99在线热播精品免费| 精品一区二区三区免费毛片爱| 亚洲午夜成aⅴ人片| 国产精品美女久久久久久久网站| 久久影院视频免费| 91麻豆精品国产91久久久久| 在线精品视频一区二区三四| 丁香啪啪综合成人亚洲小说| 久久国产福利国产秒拍| 亚洲国产裸拍裸体视频在线观看乱了 | 久久久精品免费网站| 欧美一二三四区在线| 欧美亚洲国产一区二区三区va| 成人一级黄色片| 国产一区二区剧情av在线| 三级一区在线视频先锋| 天天操天天综合网| 亚洲线精品一区二区三区 | 白白色 亚洲乱淫| 国产在线精品一区二区三区不卡 | 亚洲在线一区二区三区| 国产精品三级电影| 2024国产精品视频| 欧美电视剧免费观看| 欧美日韩情趣电影| 欧美中文字幕一区二区三区 | 亚洲视频免费观看| 亚洲国产高清aⅴ视频| 欧美tickling挠脚心丨vk| 欧美一区二区三区小说| 91精品国产综合久久久久久漫画| 欧美午夜精品免费| 欧美女孩性生活视频| 欧美日韩国产影片| 欧美一区二区三区在线看| 日韩欧美不卡一区| 精品动漫一区二区三区在线观看| 精品噜噜噜噜久久久久久久久试看| 欧美一区二区三区喷汁尤物| 欧美一级生活片| 精品美女在线观看| 久久久国际精品| 久久免费美女视频| 国产日韩欧美精品一区| 欧美国产视频在线| 尤物av一区二区| 午夜视频在线观看一区二区三区| 蜜臀va亚洲va欧美va天堂| 国产一区二区三区香蕉| 国产999精品久久久久久绿帽| 99久久精品国产毛片| 欧美午夜一区二区三区免费大片| 666欧美在线视频|