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.mzph.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…