導航:首頁 > 凈水問答 > googleurl過濾

googleurl過濾

發布時間:2022-08-20 17:08:40

⑴ 0誰能告訴我google郵箱申請頁的URL

http://mail.google.com/mail/a-38555ea909-0171b6ae9e-29159572d6
你怎麼還不申請阿?

⑵ 關於谷歌分析的自定義過濾

過濾器個我生氣了

⑶ 聯網了但是手機進不了瀏覽器,網頁顯示「檢查Google提供的該網頁的緩存副本」是什麼意思

緩存副本就是google網頁快照。

⑷ 基於布隆過濾器的非法URL識別,有沒有能用Java

假如有1億個不重復的正整數(大致范圍已知),但是只有1G的內存可用,如何判斷該范圍內的某個數是否出現在這1億個數中?最常用的處理辦法是利用點陣圖,1*108/1024*1024*8=11.9,也只需要申請12M的內存。但是如果是1億個郵件地址,如何確定某個郵件地址是否在這1億個地址中?這個時候可能大家想到的最常用的辦法就是利用Hash表了,但是大家可以細想一下,如果利用Hash表來處理,必須開辟空間去存儲這1億個郵件地址,因為在Hash表中不可能避免的會發生碰撞,假設一個郵件地址只佔8個位元組,為了保證Hash表的碰撞率,所以需要控制Hash表的裝填因子在0.5左右,那麼至少需要2*8*108/1024*1024*1024=1.5G的內存空間,這種情況下利用Hash表是無法處理的。這個時候要用到另外一種數據結構-布隆過濾器(Bloom Filter),它是由Burton Howard Bloom在1970年提出的,它結合了點陣圖和Hash表兩者的優點,點陣圖的優點是節省空間,但是只能處理整型值一類的問題,無法處理字元串一類的問題,而Hash表卻恰巧解決了點陣圖無法解決的問題,然而Hash太浪費空間。針對這個問題,布隆提出了一種基於二進制向量和一系列隨機函數的數據結構-布隆過濾器。它的空間利用率和時間效率是很多演算法無法企及的,但是它也有一些缺點,就是會有一定的誤判率並且不支持刪除操作。

布隆過濾器的原理
1
布隆過濾器需要的是一個位數組(這個和點陣圖有點類似)和k個映射函數(和Hash表類似),在初始狀態時,對於長度為m的位數組array,它的所有位都被置為0

2
對於有n個元素的集合S={s1,s2......sn},通過k個映射函數{f1,f2,......fk},將集合S中的每個元素sj(1<=j<=n)映射為k個值{g1,g2......gk},然後再將位數組array中相對應的array[g1],array[g2]......array[gk]置為1:

3
如果要查找某個元素item是否在S中,則通過映射函數{f1,f2.....fk}得到k個值{g1,g2.....gk},然後再判斷array[g1],array[g2]......array[gk]是否都為1,若全為1,則item在S中,否則item不在S中。這個就是布隆過濾器的實現原理。
當然有讀者可能會問:即使array[g1],array[g2]......array[gk]都為1,能代表item一定在集合S中嗎?不一定,因為有這個可能:就是集合中的若干個元素通過映射之後得到的數值恰巧包括g1,g2,.....gk,那麼這種情況下可能會造成誤判,但是這個概率很小,一般在萬分之一以下。
很顯然,布隆過濾器的誤判率和這k個映射函數的設計有關,到目前為止,有很多人設計出了很多高效實用的hash函數。並且可以證明布隆過濾器的誤判率和位數組的大小以及映射函數的個數有關。假設誤判率為p,位數組大小為m,集合數據個數為n,映射函數個數為k,它們之間的關系如下:
p=2-(m/n)*ln2 可得 m=(-n*lnp)/(ln2)2=-2*n*lnp=2*n*ln(1/p)
k=(m/n)*ln2=0.7*(m/n)
可以驗證若p=0.1,(m/n)=9.6,即存儲每個元素需要9.6bit位,此時k=0.7*(m/n)=6.72,即存儲每個元素需要9.6個bit位,其中有6.72個bit位被置為1了,因此需要7個映射函數。從這里可以看出布隆過濾器的優越性了,比如上面例子中的,存儲一個郵件地址,只需要10個bit位,而用hash表存儲需要8*8=64個bit位。
一般情況下,p和n由用戶設定,然後根據p和n的值設計位數組的大小和所需的映射函數的個數,再根據實際情況來設計映射函數。
尤其要注意的是,布隆過濾器是不允許刪除元素的,因為若刪除一個元素,可能會發生漏判的情況。不過有一種布隆過濾器的變體Counter Bloom Filter,可以支持刪除元素,感興趣的讀者可以查閱相關文獻資料。
END
布隆過濾器的應用
布隆過濾器在很多場合能發揮很好的效果,比如:網頁URL的去重,垃圾郵件的判別,集合重復元素的判別,查詢加速(比如基於key-value的存儲系統)等,下面舉幾個例子:
1.有兩個URL集合A,B,每個集合中大約有1億個URL,每個URL佔64位元組,有1G的內存,如何找出兩個集合中重復的URL。
很顯然,直接利用Hash表會超出內存限制的范圍。這里給出兩種思路:
第一種:如果不允許一定的錯誤率的話,只有用分治的思想去解決,將A,B兩個集合中的URL分別存到若干個文件中{f1,f2...fk}和{g1,g2....gk}中,然後取f1和g1的內容讀入內存,將f1的內容存儲到hash_map當中,然後再取g1中的url,若有相同的url,則寫入到文件中,然後直到g1的內容讀取完畢,再取g2...gk。然後再取f2的內容讀入內存。。。依次類推,知道找出所有的重復url。
第二種:如果允許一定錯誤率的話,則可以用布隆過濾器的思想。
2.在進行網頁爬蟲時,其中有一個很重要的過程是重復URL的判別,如果將所有的url存入到資料庫中,當資料庫中URL的數量很多時,在判重時會造成效率低下,此時常見的一種做法就是利用布隆過濾器,還有一種方法是利用berkeley db來存儲url,Berkeley db是一種基於key-value存儲的非關系資料庫引擎,能夠大大提高url判重的效率。
布隆過濾器的簡易版本實現:
#include<iostream>
#include<bitset>
#include<string>
#define MAX 2<<24
using namespace std;

bitset<MAX> bloomSet; //簡化了由n和p生成m的過程

int seeds[7]={3, 7, 11, 13, 31, 37, 61}; //使用7個hash函數

int getHashValue(string str,int n) //計算Hash值
{
int result=0;
int i;
for(i=0;i<str.size();i++)
{
result=seeds[n]*result+(int)str[i];
if(result > 2<<24)
result%=2<<24;
}
return result;
}

bool isInBloomSet(string str) //判斷是否在布隆過濾器中
{
int i;
for(i=0;i<7;i++)
{
int hash=getHashValue(str,i);
if(bloomSet[hash]==0)
return false;
}
return true;
}

void addToBloomSet(string str) //添加元素到布隆過濾器
{
int i;
for(i=0;i<7;i++)
{
int hash=getHashValue(str,i);
bloomSet.set(hash,1);
}
}

void initBloomSet() //初始化布隆過濾器
{
addToBloomSet("http://www..com");
addToBloomSet("http://www.cnblogs.com");
addToBloomSet("http://www.google.com");
}

int main(int argc, char *argv[])
{

int n;
initBloomSet();
while(scanf("%d",&n)==1)
{
string str;
while(n--)
{
cin>>str;
if(isInBloomSet(str))
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}

}
return 0;
}

⑸ URL怎麼去優化

1)域名的選擇

如果是在兩年前,我會告訴大家域名中最好放上關鍵詞。不過現在建議大家域名中能放關鍵詞最好,但不要為了放關鍵詞把域名弄的很長,更不要為了放關鍵詞,注冊帶有連詞符的域名。

再退一步,為讓域名看得清楚,可以放一個連詞符,最多放兩個,但是不要為了堆積關鍵詞。如果帶有關鍵詞的域名不好找,寧可選擇一個容易品牌化的短的生僻詞,或者新造的詞。

2)描述性

整個URL包括域名,目錄名和文件名,在可能的情況下,用具有描述性的單詞,尤其是目錄名和文件名。讓用戶看到URL,就可以大致了解這個網頁是什麼內容。

3)URL裡面的關鍵詞

在可能的情況下,目錄名文件名可以放上一些關鍵詞。Matt Cutts在他的一個帖子裡面曾經暗示過,URL中的關鍵詞多少對搜索引擎演算法有用。

4)URL不可太長

雖然可以考慮在URL中放關鍵詞,但最好不要為了放關鍵詞,而把目錄名文件名弄的很長。

5)用連詞符

URL中目錄名文件名單詞之間最好用連詞符-,不要用下劃線_,也不要用其他允許但很奇怪的字元。連詞符會被當作空格處理。

6)英文單詞和拼音

對英文網站來說,當然URL中的描述性關鍵詞比較好寫。對中文網站可以考慮實使用拼音。但是對比較長的詞,用拼音就不容易讀懂,這種情況下還是建議使用英文單詞。

另外有的人把目錄名文件名裡面放上中文字,或者有時候有空格,這樣的URL出現在瀏覽器地址欄的時候,都會變成一些編碼字元。雖然搜索引擎可以辨識,但看起來很難看,不建議。

7)URL靜態化

這幾乎是必須的。別較真,不要爭辯說有很多帶有一兩個問號的URL都收錄的很好。能做的更好也很簡單,就不要去跟做的不好的看齊。

8)二級域名和目錄

二級域名在中文網站裡面似乎很流行,而且現在二級域名在Google裡面有大量的垃圾內容,Google對此還沒有什麼好的辦法。

不過我個人還是建議使用目錄,除非有特別需要的時候,最好不要使用二級域名。

9)大小寫

URL中最好統一全部使用小寫字母,像Unix/Linux伺服器大小寫字母是不同處理的,也就是說Index.html和index.html是被當作兩個不同的文件。如果一個目錄下面的首頁是Index.html,訪問目錄的時候就會出錯。在其他情況下大小寫混用也經常會造成混亂。

⑹ chrome 插件開發一個url攔截,重定向到另外一個地址,怎樣做本地緩存

開始

為了著手創建你的擴展程序,你只需要為你的擴展創建一個文件夾。程序所必須的文件只有manifest.json.,不過也推薦准備一些圖片用作圖標,和至少一個JavaScript以提供功能。一般來說還會包含HTML文檔、樣式表、圖片等等其他的資源。

Manifest文件

每個擴展都必須在其根目錄下包含一個manifest.json文件。

這個文件裡面聲明了擴展的名稱、版本、許可權、設置選項和其他的一些和擴展相關的元數據。Manifest v1早在Chrome 18便已被棄用,而且會根據這個時間表逐漸淘汰使用Manifest v1的擴展。如果你在參考一些舊擴展的Manifest文件的話,請確認添加"manifest_version": 2.

Google發布的Manifest v2中支持的域

後台頁

大多數擴展都會在其manfiest.json文件內有這樣的內容:

1
2
3
4
5
{
"background": {
"scripts": ["index.js", "other.js"]
}
}
這一段代碼指定了兩個需要被載入而且要保持在後台運行的腳本,這些腳本會在擴展的後台頁運行。後台頁是一個在擴展的進程中生成並運行的頁面,存在時間會和擴展的生命周期等長。後台頁可用來作為擴展的其他界面的控制器,用來維護某個狀態或者保持某些活動。如果你需要用後台頁來聲明一些標記來用,可以把一個HTML文件名指定給page選項。事件頁

後台頁會從擴展被載入的時候被裝載,而且會一直留在內存里。這是因為如果有些狀態需要被長時間維護,或者需要被擴展的其他部分訪問。但是如果你沒有這個需求,那麼應該盡可能的使用事件頁。事件頁其實只是相當於一個包含了地persistent地: false條目的後台頁,這一行語句告訴Chrome可以不需要把後台頁保留在內存里。相對來說,事件頁也會在最開始被裝載,但是一旦指定的腳本運行完畢,事件頁便會從內存卸載,而且會在需要的時候被再次載入(比如用來回應某些操作)。以上便是在為擴展添加功能之前所需要知道的。

交互

利用Google提供的大量API,你的擴展與瀏覽器交互或者為用戶提供功能都變得方便。

chrome.* APIs

Chrome的程序和擴展程序都非常喜歡調用chrome.* APIs,這些API可以讓你通過不同的方式來操控瀏覽器,API通常會在後台腳本裡面被調用,這是我找到的一些常用API:

chrome.tabs 標簽頁:新建、刷新、關閉、訪問和操控標簽頁
chrome.history 歷史:訪問用戶瀏覽歷史
chrome.bookmarks 書簽:添加、編輯、移除和搜索用戶書簽
chrome.events 事件:監聽或者管理瀏覽器發生的事件
chrome.commands 命令:添加或者改變鍵盤命令
chrome.contextMenus 右鍵:添加條目到右鍵下文菜單
chrome.omnibox 多功能框(地址欄):添加多功能框關鍵字,使用戶可以向擴展發送指令或者激活擴展


其他API

Chrome程序和擴展程序通常也會用到其他的API,包括如本地存儲、地理位置、緩存、畫布等新型的HTML5 API。你也可以用普通的JavaScript或者webkit API來實現。聲明許可權

有些Chrome API的功能必須要在manifest.json文件中聲明相關許可權才能被調用,通過在permissions 域中把值設成相應許可權名稱,或者是通識符組成的數組。

1
2
3
4
5
6
7
8
{
"permissions": [
"contextMenus",
"tabs",
"*",
"*"
]
}
在這一段聲明代碼中,數組中的頭兩個字元串是分別用來為chrome.contextMenus和chrome.tabs 的API授權的,最後的兩個字元串則是用來匹配以 和 開頭的地址。用戶界面

Chrome擴展的用戶界面有著嚴格的限制,但是根據擴展的需要卻可以有不同形式的界面。瀏覽器按鈕[a]

瀏覽器按鈕允許你在右上角放置一個的16 x 16像素的圖標,如果擴展應用的界面是全局的,而不是針對某個頁面,那就應該使用瀏覽器操作。如果要使用瀏覽器按鈕,你必須在manifest.json中的browser_action域中做如下聲明:

1
2
3
4
5
6
7
8
9
10
{
"browser_action": {
"default_icon": {
"19": "images/icon19.png",
"38": "images/icon38.png"
},
"default_title": "tooltip text here",
"default_popup": "popup.html"
}
}
一個瀏覽器按鈕可以有一個圖標、提示、文字標記和一個彈出內容,文字標記可以將極少的文字(4字元)動態的覆蓋在瀏覽器操作的圖標上,你也可以通過chrome.browserActionAPI來對瀏覽器按鈕相關的事件做出反應。頁面按鈕

頁面按鈕允許你在多功能欄(地址欄)右邊添加一個按鈕,其實他和瀏覽器按鈕很相似,區別之處在於頁面按鈕是專門用來處理某些指定的頁面的。頁面按鈕必須在manfiest.json中聲明, page_action域的使用和瀏覽器按鈕一樣。頁面按鈕可以通過chrome.pageAction API控制,可以在不同的標簽頁中靈活的顯示或者隱藏。頁面按鈕也可以設置圖標、提示和彈出內容,和瀏覽器按鈕不同的是其沒有文字標記功能。右鍵菜單

右鍵菜單是另一個提供用戶界面,方便用戶和擴展交互的方式。Chrome的右鍵菜單通過右鍵激活,但根據激活內容的變化,菜單內容也會做相應改變。

chrome.contextMenusAPI允許你向為不同內容激活的右鍵菜單添加項目,若要使用此API,則在manifest.json文件中聲明相應的contextMenus許可權。

目前可用的激活內容有:

all, page, frame, selection, link, editable,image, video, audio

對應:所有內容、頁面、框架、選擇、鏈接、可編輯、圖像、視頻、音頻,以下這個例子需要contextMenus 和tabs許可權,他可以使擴展為右鍵菜單添加一個根項目,然後添加一個子菜單,用來復制當前的頁面到一個新選項卡。[b]

1
2
3
4
5
6
7
8
9
10
11
12
13
var root = chrome.contextMenus.create({
title: 'MyExtension',
contexts: ['page']
}, function () {
var subMenu = chrome.contextMenus.create({
title: 'Duplicate Tab'
contexts: ['page'],
parentId: root,
onclick: function (evt) {
chrome.tabs.create({ url: evt.pageUrl })
}
});
});
多功能框

Chrome把地址欄/搜索欄稱為多功能框,通過chrome.omnibox API,他可以讓擴展有另一個界面。通過API 可以設置一個特定的激活字元串,當這個字元串被鍵入多功能框時擴展便可以對其做出反應。在manifest.json中做如下聲明:

1
2
3
4
5
{
"omnibox": {
"keyword": "ext-"
}
}
這部分代碼會把ext-作為激活字元串,當用戶鍵入ext-並按下SPACE鍵或者TAB鍵時擴展會被激活。激活字元串必須通過manifest.json文件聲明,故也不能通過JavaScript來更改。用戶可以通過右鍵單擊多功能框—–修改搜索引擎來更改。激活字元串是大小寫敏感的,同時想為一個擴展聲明多個激活字元串也是不可以的。

chrome.omnibox API可以讓你添加激活字元串被鍵入之後的修改或者輸入的事件處理器。選項頁面

選項頁面是一個的常見的用戶界面,在chrome://extensions里可以通過單擊擴展右邊的選項按鈕來打開。通常這個頁面會和存儲API結合使用,以用來在計算機上為用戶保存設置。而使用腳本通過chrome.tabsAPI來打開選項頁面也是可以的。頁面重載

頁面重載允許你完全替代一個以下指定頁面(一個擴展程序只能重載一個頁面)

書簽管理器
通過訪問chrome://bookmarks或者Chrome菜單打開的頁面
歷史
通過訪問chrome://history或者Chrome菜單打開的頁面
新選項卡
通過訪問chrome://newtab或者新建選項卡出現的頁面
這些被替換的頁面必須在manifest.json文件中如下聲明chrome_url_overrides域:

1
2
3
4
5
{
"chrome_url_overrides": {
"bookmarks": "newBookmarkManager.html"
}
}
內容腳本

內容腳本是和你的擴展有關,在網頁中運行的腳本。這個腳本可以讓你訪問頁面里相應的DOM元素,你可以像這樣在manifest.json里通過指定content_scripts域定義一個內容腳本數組:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"content_scripts": [
{
"matches": ["*"],
"css": ["custom-google-styles.css"],
"js": ["custom-google-script-1.js", "custom-google-script-2.js"]
},
{
"matches": ["http://*"],
"css": ["global-styles.css"],
"js": ["global-script.js"]
}
]
}
你也可以用通過chrome.tabs API以動態的把JavaScript或者CSS注入網頁。

內容腳本有以下限制:

不能使用chrome.* API (chrome.extension的部分除外)
不能使用由擴展腳本定義的變數或函數
不能使用由網頁所定義的變數或函數
不能使用由其他內容腳本定義的變數或函數
內容腳本可以通過消息傳遞間接的使用chrome.* API,或者是和擴展腳本交互。

閱讀全文

與googleurl過濾相關的資料

熱點內容
如何處理含硫酸根的廢水 瀏覽:1
污水在線PH監測儀 瀏覽:379
自來水廠反滲透膜中標 瀏覽:312
生活污水排放試驗壓力是多少 瀏覽:713
凝膠過濾NaCl 瀏覽:304
醫療廢棄物無污水處理的情況說明 瀏覽:408
05老寶來汽油濾芯在哪裡 瀏覽:213
水垢是晶體 瀏覽:917
遼陽自來水廠生產廢水如何處理 瀏覽:963
洗碗廠污水設備多少錢 瀏覽:832
濾芯器什麼牌子好 瀏覽:392
電流互感器如何提升精度 瀏覽:701
自己清洗ro膜 瀏覽:565
一體式凈水器濾芯有什麼區別 瀏覽:3
大話西遊2男鬼用什麼武器回血最好 瀏覽:312
如何選擇飲水器濾芯的規格 瀏覽:875
水龍頭凈水器出水少怎麼辦 瀏覽:965
義騎v8摩托車機油濾芯在哪裡 瀏覽:423
瑞士原廠空氣濾芯多少錢一個 瀏覽:146
進口純凈水機哪個品牌好 瀏覽:100