亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種獲取域名后綴的方法及裝置與流程

文檔序號(hào):12753531閱讀:238來(lái)源:國(guó)知局
一種獲取域名后綴的方法及裝置與流程
本發(fā)明屬于計(jì)算機(jī)
技術(shù)領(lǐng)域
,尤其涉及一種獲取域名后綴的方法及裝置。
背景技術(shù)
:在計(jì)算機(jī)應(yīng)用程序的開(kāi)發(fā)中,特別是互聯(lián)網(wǎng)應(yīng)用系統(tǒng),經(jīng)常需要用到域名后綴。如域名解析系統(tǒng),在添加域名的時(shí)候需要判斷系統(tǒng)是否支持該類(lèi)域名,就需要去獲取本系統(tǒng)所配置了的域名后綴。所謂域名后綴,例如:“alibaba-inc.com”,獲取的后綴為“.com”。目前域名后綴越來(lái)越多,在一個(gè)應(yīng)用程序中需要維護(hù)的域名后綴也經(jīng)常變化,對(duì)于域名后綴的獲取和維護(hù)都比較困難?,F(xiàn)在的域名后綴數(shù)據(jù)都存在于應(yīng)用系統(tǒng)數(shù)據(jù)庫(kù)的配置項(xiàng)中,在每次修改配置項(xiàng)后都需要重啟應(yīng)用系統(tǒng),即每次維護(hù)都需要重新發(fā)布。同時(shí)現(xiàn)有域名后綴獲取方式需要遍歷配置項(xiàng),從最高位后綴域名,一直比對(duì)到二級(jí)域名后綴、頂級(jí)域名后綴,效率不高。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提供一種獲取域名后綴的方法及裝置,為應(yīng)用系統(tǒng)提供獨(dú)立域名后綴服務(wù),從而提高應(yīng)用程序獲取域名后綴的效率,同時(shí)便于維護(hù)。為了實(shí)現(xiàn)上述目的,本發(fā)明技術(shù)方案如下:一種獲取域名后綴的方法,其特征在于,包括:讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存;根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴。進(jìn)一步地,在所述讀取配置數(shù)據(jù)之后,用獲取到的配置數(shù)據(jù)更新緩存之前,還包括清除緩存的步驟。在所述讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存之前,還包括開(kāi)啟緩存寫(xiě)鎖的步驟;在所述讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存之后,還包括關(guān)閉緩存寫(xiě)鎖的步驟。通過(guò)在更新緩存前開(kāi)啟寫(xiě)鎖,并在更新后關(guān)閉寫(xiě)鎖,可以有效保護(hù)緩存在并發(fā)操作時(shí),不會(huì)發(fā)生混亂,保證更新過(guò)程的準(zhǔn)確。本發(fā)明中,所述配置數(shù)據(jù)包括域名后綴及域名后綴級(jí)別。所述用獲取到的配置數(shù)據(jù)更新緩存,包括:對(duì)配置數(shù)據(jù)中的每個(gè)域名后綴,經(jīng)過(guò)哈希計(jì)算得到對(duì)應(yīng)的哈希值;將哈希值與哈希表數(shù)組長(zhǎng)度相與,得到對(duì)應(yīng)的哈希表數(shù)組位置;根據(jù)該哈希表數(shù)組位置,將該域名后綴放入哈希表中;取配置數(shù)據(jù)中所有域名后綴的最大域名后綴級(jí)別存儲(chǔ)在緩存中。本發(fā)明采用哈希表存儲(chǔ)域名后綴,方便查找,在查找時(shí)只需根據(jù)域名后綴與哈希表數(shù)組長(zhǎng)度相與,找到對(duì)應(yīng)位置的域名后綴進(jìn)行比較即可。進(jìn)一步地,本發(fā)明所述讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存為一個(gè)獨(dú)立線(xiàn)程,所述獨(dú)立線(xiàn)程定期重復(fù)執(zhí)行。進(jìn)一步地,本發(fā)明所述根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴之前,還包括開(kāi)啟緩存讀鎖的步驟;所述根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴之后,還包括關(guān)閉緩存讀鎖的步驟。同樣在對(duì)緩存進(jìn)行操作時(shí),還執(zhí)行開(kāi)鎖和閉鎖的操作,有利與防止并發(fā)操作,并保證緩存不被錯(cuò)誤地重寫(xiě)。進(jìn)一步地,所述根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴,還包括:通過(guò)正則表達(dá)式從所述查詢(xún)參數(shù)中匹配出需要進(jìn)行查詢(xún)的域名。進(jìn)一步地,所述根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴,包括:獲取緩存中的域名后綴級(jí)別;根據(jù)獲取的域名后綴級(jí)別,生成正則表達(dá)式,與所述需要進(jìn)行查詢(xún)的域名進(jìn)行匹配,在匹配后進(jìn)行判斷,判斷匹配出的結(jié)果是否在緩存中,如果緩存命中,則返回匹配結(jié)果,如果不在緩存中,則令域名后綴級(jí)別減一,重新生成正則表達(dá)式,繼續(xù)進(jìn)行匹配,直到返回匹配結(jié)果或返回空。本發(fā)明還提出了一種獲取域名后綴的裝置,包括:緩存更新模塊,用于讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存;后綴查詢(xún)模塊,用于根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴。進(jìn)一步地,所述緩存更新模塊還用于在讀取配置數(shù)據(jù)之后,用獲取到的配置數(shù)據(jù)更新緩存之前,清除緩存。所述緩存更新模塊還用于:在讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存之前,開(kāi)啟緩存寫(xiě)鎖;在讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存之后,關(guān)閉緩存寫(xiě)鎖。本發(fā)明所述配置數(shù)據(jù)包括域名后綴及域名后綴級(jí)別,所述緩存更新模塊在用獲取到的配置數(shù)據(jù)更新緩存時(shí),執(zhí)行如下操作:對(duì)配置數(shù)據(jù)中的每個(gè)域名后綴,經(jīng)過(guò)哈希計(jì)算得到對(duì)應(yīng)的哈希值;將哈希值與哈希表數(shù)組長(zhǎng)度相與,得到對(duì)應(yīng)的哈希表數(shù)組位置;根據(jù)該哈希表數(shù)組位置,將該域名后綴放入哈希表中;取配置數(shù)據(jù)中所有域名后綴的最大域名后綴級(jí)別存儲(chǔ)在緩存中。進(jìn)一步地,所述緩存更新模塊定期重復(fù)讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存。進(jìn)一步地,所述后綴查詢(xún)模塊還用于:在根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴之前,開(kāi)啟緩存讀鎖;根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴之后,關(guān)閉緩存讀鎖。進(jìn)一步地,所述后綴查詢(xún)模塊還用于通過(guò)正則表達(dá)式從所述查詢(xún)參數(shù)中匹配出需要進(jìn)行查詢(xún)的域名。其中,所述后綴查詢(xún)模塊在根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴時(shí),執(zhí)行如下操作:獲取緩存中的域名后綴級(jí)別;根據(jù)獲取的域名后綴級(jí)別,生成正則表達(dá)式,與所述需要進(jìn)行查詢(xún)的域名進(jìn)行匹配,在匹配后進(jìn)行判斷,判斷匹配出的結(jié)果是否在緩存中,如果緩存命中,則返回匹配結(jié)果,如果不在緩存中,則令域名后綴級(jí)別減一,重新生成正則表達(dá)式,繼續(xù)進(jìn)行匹配,直到返回匹配結(jié)果或返回空。本發(fā)明提供的一種獲取域名后綴的方法及裝置,通過(guò)將系統(tǒng)數(shù)據(jù)庫(kù)配置項(xiàng)中的域名后綴緩存在內(nèi)存哈希表中,同時(shí)通過(guò)正則表達(dá)式獲取查詢(xún)參數(shù)對(duì)應(yīng)的域名后綴,整體上提高了獲取域名后綴的速度。并且通過(guò)周期性更新緩存,不需要重新發(fā)布整個(gè)應(yīng)用系統(tǒng),可維護(hù)性高。附圖說(shuō)明圖1為本發(fā)明獲取域名后綴的方法流程圖;圖2為本發(fā)明緩存中哈希表的結(jié)構(gòu)示意圖;圖3為本發(fā)明獲取域名后綴的裝置結(jié)構(gòu)示意圖。具體實(shí)施方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明技術(shù)方案做進(jìn)一步詳細(xì)說(shuō)明,以下實(shí)施例不構(gòu)成對(duì)本發(fā)明的限定。本發(fā)明的總體思路是在互聯(lián)網(wǎng)應(yīng)用系統(tǒng)中,通過(guò)將存在數(shù)據(jù)庫(kù)配置項(xiàng)中的域名后綴緩存在內(nèi)存中,便于應(yīng)用系統(tǒng)通過(guò)正則表達(dá)式獲取域名后綴。如圖1所示,本實(shí)施例一種獲取域名后綴的方法,包括如下步驟:S1、讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存;本實(shí)施例以Java語(yǔ)言為例來(lái)進(jìn)行說(shuō)明,具體地,通過(guò)定義的Java類(lèi),實(shí)現(xiàn)InitializingBean接口,在Java對(duì)象初始化完成后,調(diào)用afterPropertiest方法,創(chuàng)建并啟動(dòng)單個(gè)更新緩存的線(xiàn)程,初始化緩存數(shù)據(jù),來(lái)執(zhí)行將配置數(shù)據(jù)寫(xiě)入緩存的步驟。本實(shí)施例讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存,包括如下步驟:開(kāi)啟寫(xiě)鎖;讀取數(shù)據(jù)庫(kù)中的配置數(shù)據(jù);清除緩存;遍歷配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存;關(guān)閉寫(xiě)鎖。本實(shí)施例中的配置數(shù)據(jù)包含域名后綴和對(duì)應(yīng)的域名后綴級(jí)別,例如一個(gè)應(yīng)用系統(tǒng)配置項(xiàng)中的配置數(shù)據(jù)如下表:統(tǒng)一標(biāo)識(shí)符創(chuàng)建時(shí)間域名后綴域名后綴級(jí)別12015-01-2117:31:00.ac.cn2102015-01-2117:31:00.jl.cn21002015-02-0310:09:00.solar110002015-02-0310:09:00.forex110012015-02-0310:09:00.bmw110022015-02-0310:09:00.day110032015-02-0310:09:00.lds110042015-02-0310:09:00.fast110052015-02-0310:09:00.bms110062015-02-0310:09:00.insurance110072015-02-0310:09:00.spreadbetting110082015-02-0310:09:00.edu.cn210092015-02-0310:09:00.farm11012015-02-0310:09:00.購(gòu)物110102015-02-0310:09:00.weatherchannel110112015-02-0310:09:00.author1表1在獲取到應(yīng)用系統(tǒng)配置項(xiàng)的配置數(shù)據(jù)之后,使用獲取的配置數(shù)據(jù)來(lái)更新緩存。本實(shí)施例中緩存的具體形式是哈希表,使用哈希表能夠提高查詢(xún)速度。本實(shí)施例用獲取到的配置數(shù)據(jù)更新緩存,具體方法如下:對(duì)每個(gè)域名后綴經(jīng)過(guò)哈希計(jì)算得到對(duì)應(yīng)的哈希值;將哈希值與哈希表數(shù)組長(zhǎng)度相與,得到對(duì)應(yīng)的哈希表數(shù)組位置;根據(jù)該哈希表數(shù)組位置,將該域名后綴放入哈希表中。需要說(shuō)明的是,如果哈希值相同,域名后綴內(nèi)容不相同,則以鏈表的形式順序排列。將所有域名后綴都添加完成后,得到如圖2所示的數(shù)據(jù)結(jié)構(gòu)示意圖,其中.ac.cn與.jl.cn以鏈表的形式順序排列,.farm與.name、.pay以鏈表的形式順序排列。同時(shí),對(duì)于表1中的域名后綴級(jí)別,取上述域名后綴中的最大域名后綴級(jí)別單獨(dú)存儲(chǔ)在緩存中。因?yàn)槟壳俺S糜蛎缶Y最多2級(jí),因此本實(shí)施例中規(guī)定默認(rèn)域名后綴級(jí)別為2。如果將來(lái)數(shù)據(jù)庫(kù)中的配置數(shù)據(jù)的域名后綴級(jí)別大于2,則在更新緩存時(shí),同時(shí)更新緩存中該最大域名后綴級(jí)別。本實(shí)施例中在更新緩存之前先開(kāi)啟寫(xiě)鎖,之后關(guān)閉寫(xiě)鎖,能夠有效避免并發(fā)問(wèn)題,即在并發(fā)操作時(shí)不會(huì)造成沖突。需要說(shuō)明的是,本實(shí)施例更新緩存的過(guò)程是一個(gè)獨(dú)立線(xiàn)程,可以定期重復(fù)執(zhí)行這個(gè)過(guò)程,更新緩存的配置數(shù)據(jù),重復(fù)周期可根據(jù)需求而定。例如:通過(guò)Executors.newSingleThreadScheduledExecutor()維護(hù)定時(shí)任務(wù)線(xiàn)程,從而避免因?yàn)榫€(xiàn)程的意外中斷導(dǎo)致更新線(xiàn)程停止。S2、根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴。在用獲取的配置數(shù)據(jù)更新緩存后,則可以針對(duì)定義的Java對(duì)象來(lái)進(jìn)行域名后綴的查詢(xún),具體包括如下步驟:開(kāi)啟讀鎖;獲取域名后綴;關(guān)閉讀鎖。同樣地,在獲取域名后綴之前要開(kāi)啟緩存的讀鎖,并且在之后關(guān)閉,這樣能夠有效防止并發(fā)問(wèn)題,整體上提高了獲取域名的速度。本實(shí)施例輸入的查詢(xún)參數(shù)可以是需要查詢(xún)的域名,也可以是包括域名的字符串,例如URL。在查詢(xún)域名后綴時(shí),根據(jù)域名后綴級(jí)別,創(chuàng)建正則表達(dá)式,通過(guò)遞歸的方法查找輸入的域名中與正則表達(dá)式匹配的部分,在緩存中判斷是否存在,不存在則域名后綴級(jí)別遞減再次獲取,直到得到域名后綴或當(dāng)前后綴級(jí)別等于0。舉例如下:在查詢(xún)時(shí),如果輸入的查詢(xún)參數(shù)不是域名,而是URL,例如:http://www.alibaba-inc.com;則需要根據(jù)通過(guò)正則表達(dá)式"(http://|https://)?([^:/]+)(/|:)*?"進(jìn)行初步過(guò)濾,匹配出需要進(jìn)行查詢(xún)的域名部分。例如輸入的URL為:http://www.alibaba-inc.com;則匹配出:www.alibaba-inc.com。如輸入查詢(xún)參數(shù)直接是域名,例如:www.alibaba-inc.com,則直接用其作為需要查詢(xún)的域名。接著從緩存中獲取域名后綴級(jí)別,該域名后綴級(jí)別是從緩存中讀取的域名后綴級(jí)別,即目前域名后綴的最大級(jí)別,而緩存中的域名后綴級(jí)別為2。然后根據(jù)從緩存中獲取的域名后綴級(jí)別(假設(shè)值為N),拼接N次正則表達(dá)式,形如(\\.{1}[^.]+")$,小括號(hào)內(nèi)部部分重復(fù)N次,采用遞歸的方法進(jìn)行查詢(xún)。即根據(jù)N,拼接正則表達(dá)式,然后與輸入的域名進(jìn)行匹配,在匹配后進(jìn)行判斷,判斷匹配出的結(jié)果是否在緩存中,如果緩存命中,則返回匹配結(jié)果;如果不在緩存中,則令N=N-1,重新生成正則表達(dá)式,再次執(zhí)行上述查詢(xún)步驟,直到有返回值,或者N等于0,返回null。例如當(dāng)N=2時(shí),拼接的正則表達(dá)式為:(\\.{1}[^.]+\\.{1}[^.]+)$;匹配出:.alibaba-inc.com,顯然該結(jié)果不在緩存中;則令N=2-1=1,拼接的正則表達(dá)式為:(\\.{1}[^.]+)$進(jìn)行再次匹配,獲取得到域名后綴:.com,緩存命中,返回最后的結(jié)果:.com。如圖3所示,本實(shí)施例基于上述方法的一種獲取域名后綴的裝置,包括:緩存更新模塊,用于讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存;后綴查詢(xún)模塊,用于根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴。與方法對(duì)應(yīng)地,緩存更新模塊還用于在讀取配置數(shù)據(jù)之后,用獲取到的配置數(shù)據(jù)更新緩存之前,清除緩存。并且,所述緩存更新模塊還用于:在讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存之前,開(kāi)啟緩存寫(xiě)鎖;在讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存之后,關(guān)閉緩存寫(xiě)鎖。與本發(fā)明方法對(duì)應(yīng)地,本實(shí)施例配置數(shù)據(jù)包括域名后綴及域名后綴級(jí)別,則緩存更新模塊在用獲取到的配置數(shù)據(jù)更新緩存時(shí),執(zhí)行如下操作:對(duì)配置數(shù)據(jù)中的每個(gè)域名后綴,經(jīng)過(guò)哈希計(jì)算得到對(duì)應(yīng)的哈希值;將哈希值與哈希表數(shù)組長(zhǎng)度相與,得到對(duì)應(yīng)的哈希表數(shù)組位置;根據(jù)該哈希表數(shù)組位置,將該域名后綴放入哈希表中;取配置數(shù)據(jù)中所有域名后綴的最大域名后綴級(jí)別存儲(chǔ)在緩存中。并且,緩存更新模塊定期重復(fù)讀取配置數(shù)據(jù),用獲取到的配置數(shù)據(jù)更新緩存。與本發(fā)明方法對(duì)應(yīng)地,后綴查詢(xún)模塊還用于:在根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴之前,開(kāi)啟緩存讀鎖;根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴之后,關(guān)閉緩存讀鎖。與本發(fā)明方法對(duì)應(yīng)地,本實(shí)施例后綴查詢(xún)模塊還用于通過(guò)正則表達(dá)式從所述查詢(xún)參數(shù)中匹配出需要進(jìn)行查詢(xún)的域名。進(jìn)一步地,后綴查詢(xún)模塊在根據(jù)輸入的查詢(xún)參數(shù)及緩存中的域名后綴級(jí)別,在緩存中查詢(xún)得到對(duì)應(yīng)的域名后綴時(shí),執(zhí)行如下操作:獲取緩存中的域名后綴級(jí)別;根據(jù)獲取的域名后綴級(jí)別,生成正則表達(dá)式,與所述需要進(jìn)行查詢(xún)的域名進(jìn)行匹配,在匹配后進(jìn)行判斷,判斷匹配出的結(jié)果是否在緩存中,如果緩存命中,則返回匹配結(jié)果,如果不在緩存中,則令域名后綴級(jí)別減一,重新生成正則表達(dá)式,繼續(xù)進(jìn)行匹配,直到返回匹配結(jié)果或返回空。通過(guò)上述方法及裝置,能夠在不重新發(fā)布應(yīng)用系統(tǒng)的情況下,對(duì)數(shù)據(jù)庫(kù)中的配置項(xiàng)進(jìn)行配置,并隨后重新更新緩存,整體上提高了獲取域名后綴的速度,且可維護(hù)性高。以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1