matlab拼碎紙片過程,碎紙片拼接復原模型

1. 引言

破碎文件的拼接在司法物證復原、歷史文獻修復以及軍事情報獲取等領域都有著重要的應用。企事業、機關、院校和軍隊基于保密的需要,使用碎紙機對重

要文件,單據以及材料進行銷毀。一些重要的文件隨著時間流逝,殘破不全,因此,又需要將已經破碎的文檔重新恢復。

傳統上,拼接復原工作需由人工完成,準確率較高,但效率很低。特別是當碎片數量巨大,人工拼接很難在短時間內完成任務。隨著當代科技和計算機技術的快速發展,人們試圖開發碎紙片自動拼接技術,以提高對碎紙片文件和圖片的拼接復原效率。

國內一些學者對碎紙片復原技術進行了研究,其中周豐提出了一種基于序列的二維圖像碎紙片輪廓匹配算法[1],何鵬飛研究了基于蟻群優化算法的紙片拼接技術[2],羅智中[3]研究了基于文字特征的文檔碎紙片半自動拼接方法,除此之外學者們還提出并研究了其他各種相應的技術[4-10]。然而目前通過計算機算法對破碎文檔進行恢復的技術研究還不多,基本上沒有一種全自動的碎紙片恢復技術,因此,一種能夠快速且高效的恢復碎紙機數據文檔技術的研究有巨大的現實意義。本文在借鑒其他學者研究基礎上,對邊緣規范的碎紙片拼接技術進行了研究。

2. 模型假設及符號說明

2.1. 模型假設

1) 設碎紙圖片與真實文件紙張大小、顏色、邊緣情況相同;

2) 假設碎紙照片邊緣完整,不存在破損;

3) 假設所有碎紙片的掃描情況相同;

2.2. 符號說明

A

i ——編號i的圖片的灰度矩陣;

B

i ——編號i的圖片二值化處理后矩陣;

C

i ——編號i的圖片二維邊緣矩陣;

D

,

D

,

D

,

D

? ——邊緣匹配度矩陣;

E

i ——編號

i 的圖片再次處理后的0-1矩陣;

F ——邊緣匹配度之和矩陣。

3. 問題分析

3.1. 中文碎紙片的分析

本論文數據來源于2013年全國大學生數學建模試題B題附件3、4,碎紙片均為一份紙張撕裂所得,不會存在含有相同信息的公共部分,下面不再重述。

附件3、4中所給的圖片為掃描原紙張碎片后得到的BMP格式的圖片,圖片像素均為

180

×

72 ,使用matlab中的imread函數[11,12]可做出圖片的灰度矩陣

A

i (

i

=

1

,

2

,

?

,

209 )。舉例如下(由于該像素圖片轉換后為

180

×

72 的矩陣,論文中無法放置,所以僅簡單舉例說明,論文中若還出現龐大的矩陣,同本說明):

A

i

=

(

255

255

0

255

220

150

255

0

0

)

矩陣的中元素表示該位置圖片灰度,255表示為白,0為黑,圖片中信息為黑白文字信息,但由于文字信息會存在陰影,所以矩陣中出現了介于0-255的元素。為了方便應用,可對黑白圖片做[13]二值化處理,將上例中

A

i 轉化為如下0-1矩陣:

B

i

=

(

0

0

1

0

1

1

0

1

1

)

其中白色用0值表示,非白色用1表示。

將附件3、4中

11

×

19 張圖片做如上處理得0-1矩陣

B

i

(

i

=

1

,

2

,

?

,

209

) ,矩陣階數為

180

×

72 。

分別提取

B

i 矩陣第1列和第72構成新的

180

×

2 階邊緣矩陣。搜索所有圖片矩陣發現

C

14

,

C

128 矩陣中均有一列為0,可認為編號為014和128的圖片為相鄰的兩張圖片,兩張圖片匹配的原則示例如圖1。

將左邊矩陣的第二列元素與右邊矩陣的第一列元素進行兩兩匹配,記錄元素相同的個數,個數除以180為左邊矩陣第二列對右邊矩陣第一列的邊緣匹配度,記為:

D

i

j

=

180

定義:

D

i

j

=

180 ——矩陣匹配度

將所有碎紙片的0-1矩陣做如上匹配過程,可依次選取與其匹配的碎紙片。圖1中左邊矩陣第一列與右邊矩陣第二列匹配的原則同上。

將附件3和附件4中各自的209碎紙片做同樣的圖像處理轉化為灰度矩陣后進行二值化處理得到與其相對應的矩陣,根據結果可知圖片轉化后的矩陣為

180

×

72 階的,若使用邊緣匹配的方法,一張碎紙片對應其他208張碎紙片的邊緣匹配相同的像素點有208種情況,變化范圍為

0

-

180 可知若直接采用邊緣匹配中的方法得到的結果可能出現多個相同或無法判斷的情況,所以這里我們先考慮附件中碎紙片的特

3127b342bb519bf5e08518a90d6242d7.png

Figure 1. The matching diagram of 014 and 128 two images

圖1. 014與128兩張圖片的匹配示意圖

性。

觀察圖2發現,通過查閱資料分析[3]基于文字特征的文檔碎紙片半自動拼接,每一行的絕大多數中文文字均可認為擁有同一上界、同一下界(圖2最右端出現了“一”字,但是同行還存在其他文字,可認為同一行文字有同一上界與同一下界),我們可以根據這一特性,利用聚類分析[14]方法并使用Matlab軟件將匹配度高及位置相同的碎紙片歸類為一組[3]。

利用聚類方法歸類步驟:

1) 搜索每一張碎紙片轉化后二值化矩陣

C

i 的每一行,若矩陣該行中存在數值1,則將該行全部賦值為1,若這一行元素全為0,則將該行全部賦值為0,其中1表示本行存在灰度小于255的像素,0表示不存在灰度小于255的像素,這樣將209張碎紙片做出新的二值化矩陣

E

i ;

2) 同3.1的分析取邊緣做邊緣匹配得修改后的邊緣匹配度矩陣

D ,匹配度高則說明碎紙片的文字信息處于同一水平位置,見圖2;

3) 在2)完成后如果未完全匹配,則進行再人工干預,得到較優的結果[11]見圖3。

4) 得到很多組有相同位置的碎紙片后,在每一組內采用邊緣匹配方法,這里為了防止出現兩白邊匹配造成碎紙片連接混亂的現象,要加以限制。方法為:若在組內做邊緣匹配出現匹配度為1的情況,則暫時不連接此碎紙片,從剩余的碎紙片出發做邊緣匹配與其他碎紙片連接,直到組內所有碎紙片均已覆蓋。

5) 這樣再通過一定人工干預可以得到拼接復原后的11橫行碎紙片,再同樣使用邊緣匹配方法,將得到的11行碎紙條長邊進行邊緣匹配做出

11

×

11 的匹配度矩陣后找最大匹配度作為連接的碎紙條[15],同樣為了防止出現兩白邊匹配造成碎紙片連接混亂的現象,要加以限制。方法為:若在組內做邊緣匹配出

13f7063ccc15774b03b26eb6524178d7.png

Figure 2. The images after secondary handling

圖2. 處理后的圖片

18f928a934c949427f64b84dc0bb3cf6.png

Figure 3. The images after secondary handling

圖3. 二次處理后的圖片

現匹配度為1的情況,則暫時不連接此碎紙片,從剩余的碎紙片出發做邊緣匹配與其他碎紙片連接,直到11張拼接后的碎紙片均已覆蓋。最后加以人工處理,得到完整的原文件。

3.2. 英文碎紙片的分析

碎紙片的英文在位置上也有一定的規則可循。如圖4。

可以發現英文字母的主要的部分擁有同一上界和同一下界,但是跟中文不同,英文中會出現一些“y”、“d”之類的字母,為了同樣使用3.1中的方法我們通過觀察附件4中圖片的像素情況,將圖片中每一行中黑色像素數少于13(該值的選取是為了方便二值化轉化,也可以選取別的數字)的及字母的次要部分轉變為二值化矩陣中的0,將每一行中黑色像素大于等于13的及字母的主要部分轉化為二值化矩陣中的1,這樣得到的新的二值化矩陣

E

i ,可認為圖像轉變為下圖5表示的方式,同樣使用3.1中的分析方法將新的二值化矩陣做邊緣匹配,匹配度高的可認為兩碎紙片在原紙張中位于同一行,把匹配度高于0.9的元素分為一組后,對每一組進行邊緣匹配。

考慮英文字符的情況,在3.1基礎上,對組內圖片原始二值化矩陣邊緣匹配度矩陣

D 每一行的搜索,若矩陣的任意一行中出現匹配度大于0.9的元素個數超過2個,則加以人工干預,根據文章的格式、內容選擇應該連接的碎紙片,其他過程同3.1,區別僅為本文中需要對軟件執行過程進行人工干預。

e8b1495fea3ca090a6a6008fe84ba060.png

Figure 4. Demonstrates picture 1

圖4. 演示圖片1

72ca27aa5a878c7bf85ec5212d23b28b.png

Figure 5. Demonstrates picture 2

圖5. 演示圖片2

4. 模型的建立與求解

4.1. 中文碎紙片復原的模型建立與求解

搜索每一張碎紙片轉化后的0-1矩陣

C

i 的每一行,若存在黑色即矩陣該行中存在數值1,則將該行全部賦值為1,若這一行不存在黑即此行元素全為0,則將該行全部賦值為0,這樣將209張碎紙片做出新的二值化矩陣

E

i ,之后按照3.1中的定義做邊緣匹配,做出矩陣大小為

209

×

209 邊緣匹配度矩陣

D (由于矩陣太大,在論文中不給出),元素

D

i

j 為處理后的碎紙片邊緣二值化矩陣

i 的第二列與處理后的碎紙片邊緣二值化矩陣

j 第一列的邊緣匹配度,匹配度高則說明碎紙片的文字信息處于同一水平位置。在矩陣

D 中每一行選取匹配度大于0.9的元素,進行統計分組,可得結果如表1。

可以看出在取匹配度為0.9及以上時,分出了20個組,其中組內元素最多的為19,組內元素最少的為1。而最后的結果應該為11行,我們需要對這些組中的元素進行合并后得到11行,所以我們要先考慮元素數量為19的組,再考慮其他元素數多的組,對組內圖片進行3.1中的邊緣匹配,匹配后的結果在與元素數少的組做匹配與人工處理。

以第2組為例,該組包含19個元素,對于組內的19個元素的原始二值化矩陣進行上述中的邊緣匹

44ff6901df27d6c3ba0a51ed127d4f25.png

Table 1. Grouping

表1. 分組情況

配,通過結果觀察本題模型第一步確定模型的可行性,其他的組的處理情況相同,不再重述。結果如表2。

分別復原得到圖片,觀察圖6、圖7。

對于第二問中文碎紙片的復原問題,通過上面的結果發現匹配結果較好,對于中文的碎紙片的拼接復原即使過程中未加入人工干預也可以得到較優的結果。

可發現該組中文字位置符合想象,及同一行中的文字擁有同一上界和同一下界,在這一組中Matlab軟件很好的將碎紙片拼接出來,思考為什么會出現上面圖6、圖7兩者不能匹配在一起的原因。可發現拼

44ff6901df27d6c3ba0a51ed127d4f25.png

Table 2. Internal group

表2. 內部分組

e3cf08b279309ef309e942c8490dfaf5.png

Figure 6. The second set of splice results (1)

圖6. 第二組拼接結果(1)

3da2c4fe9b518e5f63182c9bfda5051f.png

Figure 7. The second set of splice results (2)

圖7. 第二組拼接結果(2)

接復原后的圖6、圖7左右兩側均存在白邊,僅用計算機無法識別兩者先后,需加以人工干預,通過對文章的內容、結構、形式的觀察人工拼接,得出結果。改進后的圖片排序見表2,復原圖片見圖8。

通過結果可以發現拼接程度較好,所以也驗證了本問題中碎紙片拼接復原模型可行性。

其他組做相同處理,這樣可得到拼接好的11橫行的碎紙條,對11橫行的碎紙條的長邊進行邊緣匹配,建立新的邊緣匹配矩陣,結果如表3。

以上做出的表格把一些橫行碎紙片拼接在一起,未能拼接的原因是由于拼接后的橫行碎紙片兩端都存在白邊,計算機無法做出順序的判斷,所以我們要根據文字內容、規格、形式等因素人工將它們結合起來,人機結合后的原文件以表4。

觀察發現拼接復原后結果較好。

4.2. 英文碎紙片復原的模型建立與求解

搜索每一張碎紙片轉化后的0-1矩陣Ci的每一行,若存在黑色像素數量大于等于13即矩陣該行中數值1的數量大于等于13,則將該行全部賦值為1,若這一行黑色像素數量小于13,則將該行全部賦值為0,這樣將209張碎紙片做出新的二值化矩陣Ei,之后同4.1的求解過程做邊緣匹配,做出矩陣大小為

209

×

209 邊緣匹配度矩陣D(由于矩陣太大,在論文中不做出),

d3068b3ae5bc63fc03b4cf272fefdf80.png

Figure 8. The second set of results after splicing human intervention

圖8. 人工干預后第二組拼接結果

元素

D

i

j 為處理后的碎紙片邊緣二值化矩陣i的第二列與處理后的碎紙片邊緣二值化矩陣j第一列的邊緣匹配度,匹配度高則說明碎紙片的文字信息處于同一水平位置。同樣在矩陣D中每一行選取匹配度大于0.9的元素,進行統計分組。

在這里需要強調的是,若分完組后的組內元素進行4.1中的邊緣匹配進行殘片復原,小組成員發現結果十分的不理想,任舉一例,見圖9。

根據圖9可以發現對于本文中的英文殘紙片的文字信息主要內容處于相同水平位置,文字信息處于同一水平位置,結合4.1可以認為首先判斷文字信息未知的方法是正確的。但是組內英文碎紙片的拼接復原程度結果差,圖中部分碎紙片得到了復原,而大部分卻進行了錯誤的拼接。對比4.1的中文復原結果,可以認為英文相對中文會有一定的特殊性。

分析產生問題的原因,由于碎紙片的連接是按照組內圖片兩兩邊緣匹配的大小來決定的,發生如圖的情況說明:實際的對應的碎紙片的邊緣匹配度一般在0.9以上,英文碎紙片實際對應的碎紙片的邊緣匹配度會出現比其他碎紙片的邊緣匹配對小的情況。面對這種問題,我們需要對檢測邊緣匹配度的程序的過程進行人工干預,方法為:其他圖片對當前圖片的邊緣匹配度若出現兩個及兩個以上大于0.9的匹配度,則進行人工干預,根據文章的內容、格式等進行人工拼接復原,其他步驟同4.1。對于本文中對于英文碎紙片的拼接復原問題可用圖10的流程圖表示。

通過上述步驟可一把相同行的紙片先拼接好,得到新的11張橫行碎紙片,這里拼接11張碎紙片的方法同4.1,不再重述,得到的結果見表5。

4.3. 實現算法

索貝爾算子(Sobel operator)是圖像處理中的算子之一,主要用作邊緣檢測。在技術上,它是一離散性差分算子,用來運算圖像亮度函數的梯度之近似值。在圖像的任何一點使用此算子,將會產生對應的梯度矢量或是其法矢量。

44ff6901df27d6c3ba0a51ed127d4f25.png

Table 3. Long-edge stitching result of shredded paper

表3. 碎紙條的長邊拼接結果

44ff6901df27d6c3ba0a51ed127d4f25.png

Table 4. The recovery results of Annex 3

表4. 附件3的復原結果

57aa803e50dfffd3b5e08e6711ca4302.png

Figure 9. Part of the mosaic picture of the results of the English group after completion

圖9. 英文圖片分完組后的部分拼接結果

該算子包含兩組3 × 3的矩陣,分別為橫向及縱向,將之與圖像作平面卷積,即可分別得出橫向及縱

向的亮度差分近似值。如果以A代表原始圖像,Gx及Gy分別代表經橫向及縱向邊緣檢測的圖像,其公式如下:

G

x

=

(

?

1

0

+

1

?

2

0

+

2

?

1

0

+

1

)

?

A

G

y

=

(

+

1

+

2

+

1

0

0

0

?

1

?

2

?

1

)

?

A

cf4c54f06e4add21d99f8bae5c4efa93.png

Figure 10. The flow chart

圖10. 流程圖

44ff6901df27d6c3ba0a51ed127d4f25.png

Table 5. The recovery results of Annex 4

表5. 附件4的復原結果

圖像的每一個像素的橫向及縱向梯度近似值可用以下的公式結合,來計算梯度的大小。

G

=

G

x

2

+

G

y

2

然后可用以下公式計算梯度方向

Θ

=

arctan

(

G

y

G

x

)

在以上例子中,如果以上的角度Θ等于零,即代表圖像該處擁有縱向邊緣,左方較右方暗。在邊沿檢測中,常用的一種模板是Sobel算子。Sobel算子有兩個,一個是檢測水平邊沿的;另一個是檢測垂直平邊

沿的。Sobel算子對于象素的位置的影響做了加權,因此效果更好。Sobel算子另一種形式是各向同性Sobel(Isotropic Sobel)算子,也有兩個,一個是檢測水平邊沿的,另一個是檢測垂直平邊沿的。各向同性Sobel算子和普通Sobel算子相比,它的位置加權系數更為準確,在檢測不同方向的邊沿時梯度的幅度一致。

4.4. 聚類精度和算法時間復雜度分析

1) 聚類精度分析

傳統的k-means算法,所求的解往往是局部最優解,使用k-means算法在一定程度上減少了局部最優可能性,但從聚類過程看,求的解也往往是局部最優解,本文提出的調整簇閥值的加速算法,由于采用了近似的k-means算法,導致該算法只能找到局部近似解。適當地設置閥值,也能得到和k-means算法相當的聚類精度。

2) 時間復雜度分析

傳統k-means算法的時間復雜度為

O

(

n

k

d

t

) ,其中,n為樣本個數,k為簇數目,d為數據維數,t為迭代次數。

5. 模型的評價與推廣

5.1. 模型的優點

通過對復原后圖片驗證結果認為碎紙片復原拼接模型對于本問題有很高的可行性。對于中、英文兩種情況,發現了中文需要人工干預較少,英文人工干預較多的規律,說明不同語言有各自的特性,中文到英文由于難度的增加依次將模型進行改進,給出了嚴謹的說明過程,模型對該類問題有很好的可用性。

5.2. 模型的缺點

本模型僅適合規則碎紙片黑白信息的復原問題,不能解決不規則碎紙片的復原與非黑白信息的復原。人工干預占總過程時間的比例相對較高(35%),對于數據量大的碎紙片復原問題,人工干預可能會花掉大部分時間。

5.3. 模型的推廣

該模型適用于規則碎紙片的拼接復原問題。本模型給出了中英文碎片處理的算法,根據復原結果,可認為本論文中的模型很好的適用于該類問題的解決。對于一些不熟悉的語言和符號信息,碎紙片的倒置情況未知,需要先對倒置情況進行判斷,再進行類似的算法進行圖片復原處理問題。

對于規則殘片,如考古挖出的規則的文物、規則的鈔票殘片等殘片復原問題,只需將它們用照片照好轉化為灰度矩陣,對顏色進行一定的處理后借鑒本模型方法進行復原。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370302.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370302.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370302.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python實現貝葉斯分類器_python實現簡單的樸素貝葉斯分類器

本文使用的測試問題是“皮馬印第安人糖尿病問題”這個問題包括768個對于皮馬印第安患者的醫療觀測細節,記錄所描述的瞬時測量取自患者的年齡,懷孕和血液檢查的次數。所有患者都是21歲以上的女性,所有屬性都是數值型,而且屬性的單位…

VC++編譯MPIR 2.7.0

目錄 第1章編譯 2 1.1 簡介 2 1.2 下載 3 1.3 解決方案 4 1.4 創建項目 5 1.5 復制文件樹 6 1.6 不使用預編譯頭文件 8 1.7 包含目錄 9 1.8 定義宏 10 1.9 編譯前事件 11 1.10 修改 obj 的位置 13 1.11 編譯yasm 14 1.12 編譯匯編代碼 …

PHP大數據處理【轉】

1:硬件方面 普通的一個p4的服務器每天最多能支持大約10萬左右的IP,如果訪問量超過10W那么需要專用的服務器才能解決,如果硬件不給力 軟件怎么優化都是于事無補的。主要影響服務器的速度 有:網絡-硬盤讀寫速度-內存大小-cpu處理速度…

http1.X與2.0

HTTP HTTP 1.X HTTP是建立在TCP協議上的,HTTP協議的瓶頸及優化都是基于TCP協議本身的特性。TCP建立連接時有三次握手 會有1.5RTT的延遲,為了避免每次請求都經歷握手待來的延遲,應用層會選擇不同策略的http長連接。 HTTP 1.0 連接不能復用以…

php代碼清除空格注解,去除php注釋和去除空格函數分享

雖然php5中已有php_strip_whitespace方法可以返回刪除注釋和空格后的PHP源碼的功能,為了學習,這里為大家提供一個自己的方法,也可以去除代碼中的空白和注釋,代碼如下:. 代碼如下:/*** 去除代碼中的空白和注釋* param s…

包裝的重要性

我記得大約15年前開始學習Java的時候。 我讀了很多有關“包裝”和“命名空間”的東西,但我完全不了解。 可悲的是:雖然包裝的某些方面幾乎為業內每個人所了解,但其他方面卻并非如此。 因此,讓我們看一下哪些軟件包最適合。 命名空…

我的python學習筆記全集_我的python學習筆記

(此文是在實際工程中遇到的一些小問題,給予解決和整理。解決方法大多來自網上零散的文章。)1——如下代碼,a[1,2,3]bab也是[1,2,3]了,接著a[0]4a[1]5a[2]6此時a變成[4,5,6]了,再看b,a變了之后沒有對b進行新的引用&…

課時28.假鏈接(掌握)

什么是假鏈接? 就是點擊之后不會跳轉的鏈接我們稱之為假鏈接。 假鏈接存在的意義? 在企業開發前期,其他界面都沒有寫出來,那么,我們就不知道應該跳轉到什么地方,所以就只能使用假鏈接來代替,…

筆記45 | 代碼性能優化建議[轉]

地址 筆記45 | 代碼性能優化建議[轉] 目錄 前言避免創建不必要的對象選擇Static而不是Virtual常量聲明為Static Final避免內部的Getters/Setters使用增強的For循環使用包級訪問而不是內部類的私有訪問避免使用float類型使用庫函數謹慎使用native函數關于性能的誤區前言 通常來說…

導彈攔截

鏈接 分析:經典DP題,最長不下降子序列的變種,同時需要記錄路徑,用pre[]數組記錄當前結點的前一個結點的方法很妙 1 #include "iostream"2 #include "cstdio"3 #include "cstring"4 #include "…

JUnit4參數化和理論示例

我始終依靠TestNG將參數傳遞給測試方法,以便為我的測試或套件提供一些靈活性。 但是,使用JUnit4可以實現相同的靈活性。 要使用它很簡單: package com.marco.test;import java.util.Arrays;import java.util.Collection;import junit.fram…

楊杰matlab神經網絡30例,MATLAB神經網絡30例

實例1 BP神經網絡在非線性函數擬合中的應用11.1 理論基礎11.1.1 BP網絡概述11.1.2 BP神經網絡的MATLAB函數21.2 非線性函數擬合方法6實例2 主元BP神經網絡在股票價格預測中的應用122.1 理論基礎122.1.1 主成分分析的原理122.1.2 主元神經網絡與股票預測142.2 股票價格的預測方法…

HTMLCSS 問題

1.子div使用浮動&#xff0c;父div高度自適應(個人感覺好用) 方法&#xff1a; css: <style> .clear{ clear:both} </style> html&#xff1a;在父div關閉之前添加<div class"clear"></div> 本文轉載于:猿2048?https://www.mk2048.com/…

python matplotlib數據可視化教程_matplotlib的Python數據可視化和探索——入門指南

matplotlib——最受歡迎的Python庫&#xff0c;用于數據可視化和探索我喜歡在Python中使用matplotlib。這是我學會掌握的第一個可視化庫&#xff0c;此后一直存在。matplotlib是最受歡迎的用于數據可視化和探索的Python庫&#xff0c;這是有原因的——它提供的靈活性和敏捷性是…

mysql 查詢所有子節點的相關數據

定義一個函數 CREATE DEFINERrootlocalhost FUNCTION getColumnChildLst(rootId INT) RETURNS varchar(1000) CHARSET utf8 BEGINDECLARE sTemp VARCHAR(1000);DECLARE sTempChd VARCHAR(1000);SET sTemp $;SET sTempChd cast(rootId as CHAR);WHILE sTempChd is not null DOS…

怎么用PHP實現年月日date,PHP date函數用法,php年月日寫法

日期和時間信息在 PHP 內部是以 64 位數字存儲的&#xff0c; 它可以覆蓋當前時間前后 2920 億年的時間&#xff0c;這個范圍之廣&#xff0c;足以滿足現有應用的實際需求。需要注意的是&#xff0c; 這些PHP時間函數都是依賴服務器的區域設置的&#xff0c; 所以在使用它們的時…

python氣象衛星云圖解析_【我教你系列】想要實時的地球圖像作為桌面?

Python 定時獲取衛星圖像做為桌面背景簡介這兩天看新聞的時候&#xff0c;突然發現最近有個臺風產生&#xff0c;并且在不斷的增強中。幸運的是從中央氣象臺預報的路徑來看&#xff0c;不會登陸我國。也正是通過這則新聞&#xff0c;我發現了一個不錯的衛星云圖網站。(ps:這篇文…

CSS權重的比較方法

CSS的權重如下&#xff1a; !important Infinity正無窮 行間樣式 1000 id 100 class|屬性|唯類 10 標簽|偽元素 1 通配符 0 256進制 當出現多個選擇器時 在同一行的選擇器權重相加即可 當兩個混合選擇器權重相同時優先選擇后面的選擇器 如&#xff1a; html <…

python_day8 面向對象常用 補充

__str__ 作用本來 打印 類對象是 打印的內存地址 但是在類中 增加 __str__ 參數 以后 再打印這個 類對象 就是顯示 __str__中的 return __del__作用 當 實例化的對象 在內存中 被釋放的時候執行 item操作通過 set get del 操作 item最終目的是將 類里面的 變量 像 字典一樣操作…

Spring中的@Cacheable開銷

Spring 3.1引入了很棒的緩存抽象層 。 最后&#xff0c;我們可以放棄所有本地化的方面&#xff0c;裝飾器和污染我們與緩存相關的業務邏輯的代碼。 從那時起&#xff0c;我們可以簡單地注釋重量級方法&#xff0c;并讓Spring和AOP機械完成工作&#xff1a; Cacheable("bo…