引言

相位解包裹是基于干涉的位相测量技术中的重要环节,如合成孔径雷达干涉、光学干涉测量技术、医学成像技术、数字全息三维成像、相干衍射成像等技术中都涉及位相解包裹。位相解包裹也称为位相展开、位相解截断、位相解缠绕等。与之相反的过程谓之包裹位相、截断位相、缠绕位相等。近年来,随着数字全息术和其他三维成像技术的发展,位相解包裹也得到了很快的发展,研究者提出了很多算法。虽然所提出的算法针对的具体领域不同,但由于解决的问题本质相同,位相解包裹算法具有通用性。

相位解包裹算法研究汇总分类

近年来,国外对于位相解包裹算法的研究很多,基本理论日趋成熟。下表对目前国际及国内出现的位相解包裹算法研究进行了初步的总结。

表1 国外相位解包裹算法研究汇总

序号作者方法积分路径优点缺点
1Jonahan M. Huntley枝切法PF使用奇异点环,抗噪能力强枝切线容易设置不当
2Antonio Baldi四叉树NPF分块再合并,速度较快噪声厉害区域效果不好
3Curtis W. Chen统计模型解费用函数NPF抗噪能力强需要先验图,费时
4Curtis W. Chen统计费用网络流法NPF图像分割合并算法,效果好需先验知识
5Mark Jerkimson网络流法NPF每一维分别操作,省时,准确较适合于处理 MRI 数据
6Vyacheslav V. Volkov2 次 FFT 方法NPF只需要三次 FFT 变换,省时欠采样厉害的区域出错
7Marvin A. Schofield4 次 FFTNPF编程简单,易于实现需要对图像进行镜像操作,费时
8Rene Schone加窗技术和最小费用匹配NPF抗噪能力强运行速度比较慢
9Mariano Rivera半正定费用函数,正则化法NPF抗噪声能力强位相出现不连续现象
10Y. Sasaki统计力学方法,1 - Ising 模型NPF适合处理含有欠采样图像运行速度比较慢
11Myung K. Kim双波长光学法NPF解包裹易实现会存在 “拉线” 现象
12Lei Ying马尔科夫随机场模型NPF对噪声、位相跳变区域处理效果好运行速度比较慢
13Wang Huailiang蒙特卡罗算法PF抗噪能力比较强易产生 “拉线” 现象
14S Kanat奇异点 - 矢量图作为质量图PF比其他质量图好产生 “孤岛区域”
15Jose M. Biurrun - Dias最大流最小割算法PF适合处理含有欠采样的图像运行速度比较慢
16Sheng Liu基于条纹估计和图像分割的区域滤波NPF精度较高运行速度比较慢
17Juan J. Martinez - Espla基于网络滤波器和枝切法PF抗噪能力强滤波会丢失信息,存在 “孤岛区域”
18Juan J. Martinez - Espla粒子滤波和 Isodata 算法PF抗噪能力强滤波会丢失高频信息,会产生 “拉线” 现象
19Handford C. Herndargo合成波长技术NPF精度较高只适用于光学干涉领域
20Gonzalo Valado贝叶斯方法NPF适合处理含有阴影、高斯噪声数据需要后验概率
21Miguel Arevalillo质量导向、区域增长和蚁切PF精度较高运行速度比较慢
22Rizardo Legarda Senz傅里叶相位包裹变换,时间里的正定变换NPF算法简单,速度较快只适合于跟时间有关系的数据
23A. Plyush Shanker改进的最小费用流法NPF用边代替闭合路径,可用于多维数据较适用于处理 INSAR 时间序列
24A. Khmaladze改变再现距离NPF消噪效果较好不适合于处理含有欠采样的数据
25Jesús Muñoz Maciel傅里叶方法NPF运行速度较快干涉图须含有封闭条纹
26Satoshi Tomioka旋转补偿器、不约束的奇异点定位和虚拟奇异点PF抗噪能力强运行速度比较慢
27Sai Siva Gorthi立方位相方程NPF位相跳变厉害的区域效果也好适合于光学干涉
28黄源浩傅里叶位相滤波和栅格位相解包裹PF抗噪能力强,适合于动态物体易产生 “拉线” 现象和 “孤岛区域”
29Batuhan OsmanogluFD 路径PF比其他路径好易产生 “拉线” 现象和 “孤岛区域”
30丁毅利用两幅干涉图恢复位相NPF算法简单运行时间短需选定两幅图像干涉的频率

注:LS:最小二乘;FFT:快速傅里叶变换;DCT:离散傅里叶变换;PF:路径跟踪;NPF:非路径跟踪;FD:Fisher距离;Itoh’s算法:行列逐点位相解包裹算法。

表2 国内相位解包裹算法研究汇总

序号作者方法积分路径优点缺点
1苏显渝等条纹分析PF误差传递小易产生 “拉线” 和 “孤岛区域”
2钱克茂等调制度加权最小二乘法NPF算法较稳健对条纹清晰度要求高
3Chi Fung Lo 等分块和质量导向PF抗噪能力强合并时可能导致连续性差
4康新等最小截面差NPF算法简单,速度较快,可靠性较高不适用于处理欠采样数据
5吴禄慎等新的区域增长算法PF抗噪能力强易产生 “拉线” 现象
6惠梅等DCTNPF速度快,不存在 “拉线” 现象具有平滑作用,产生误差
7彭震君等模拟退火NPF抗噪能力强,易于解决欠采样问题运行速度较慢
8彭震君等位相跳变区域划分PF抗噪能力强易不连续
9苏显渝等参数导向PF抗噪能力强易产生“孤岛区域”
10郑刚等可靠性的方法 & 队列法PF易处理含有噪声、阴影和空洞的数据易产生 “拉线” 现象
11王燕等相邻区域算法(菱形算法)PF算法简单,可消除 “拉线”不适用于处理欠采样数据
12杨亚良等确定性的 FFT 算法NPF速度较快,精度较高需要对图像进行镜像操作
13陈家凤等改进的最近相邻点连接法PF抗噪能力强,速度较快易产生 “孤岛区域”
14路元刚等质量相关的 WLSNPF抗噪能力强,速度较快不适用于处理欠采样数据
15朱勇建等局部质量导向和假设相邻像素在一平面上PF抗噪能力强对质量图要求高
16杨锋涛等基于二阶差分的加权最小费用流法NPF精度较高需权重,运行较慢
17杨锋涛等模拟退火NPF抗噪能力强,适合于处理含有欠采样的数据运行速度比较慢
18王军等八角模型消除不连续点和多方向去包裹NPF抗噪能力强运行速度比较慢
19魏志强等蚁群算法NPF抗噪能力强运行速度比较慢
20陈家凤等小波变换NPF速度较快,精度较高不适合用于处理欠采样数据
21武楠等枝切法和有限元法PF+NPF精度较高区域合并影响连续性
22张婷等边缘检测和 flynn 算法PF抗噪能力强运行速度比较慢
23朱勇建等4 次 DCTNPF速度较快,精度较高不适合用于处理欠采样数据
24钱克茂等加窗傅里叶滤波和质量导向PF对噪声、奇异点处理效果好滤波会丢失一些信息
25熊六东等希尔伯特变换NPF速度较快易产生 “拉线” 现象
26钱晓凡等基于掩膜和 LS 迭代法NPF易处理含有 “空洞” 的数据多次迭代,费时
27张志斌等枝切法和有限元法PF精度较高区域合并时会影响连续性
28钱晓凡等基于横向剪切干涉的 LS 法PF精度较高,速度较快,适合于解决欠采样问题限于光场再现的应用领域
29张会站等改进的 Goldstein 和 Pritt 算法PF精度较高运行速度比较慢
30万文博等菱形算法PF算法简单可消除 “拉线” 现象不适合用于处理欠采样数据
31范琦等傅里叶变换和横向剪切干涉NPF适用于处理欠采样数据抗噪能力较弱
32谢光明等不敏粒子滤波NPF精度较高,效率较高存在一定的误差

注:LS:最小二乘;FFT:快速傅里叶变换;DCT:离散傅里叶变换;PF:路径跟踪;NPF:非路径跟踪;FD:Fisher距离;Itoh’s算法:行列逐点位相解包裹算法。

通过比较,不难发现,国内对于位相解包裹算法大多是在国外基础上进行改进得到的,因此,国内在这方面的研究和国外还有很大的差距。通过观察表1和表2中各种算法的优缺点,可以发现:①各类位相解包裹算法都存在一定的优势,也存在一些不足。到目前为止,还没有发现一种能解决所有问题的算法;②噪声、欠采样问题是位相解包裹面临的两个主要困难,解决好这两个主要困难,可以提高位相解包裹精度,获得更准确的三维形貌信息。

常用算法基本思想

(1)路径跟踪算法:路径跟踪算法是依赖路径的局部算法,通过选择合适的积分路径,绕开噪声区,阻止误差的全程传递,采用逐点比较的方法,计算量小,效率高,但处理噪声、误差严重的位相图效果较差。该类算法主要包括六种:
①行列逐点解包裹算法,该算法是路径跟踪算法中最基本的算法,具有简单易行、耗时少、效率高、理想情况下位相解包裹精度高等优点,但噪声严重时,出现“拉线”现象,使解包裹结果出现严重的错误;
②枝切法(branch cut,BC),是最经典的路径跟踪算法,1986年由美国JPL实验室Goldstein等人提出。该算法通过识别正负残差点,然后连接邻近的残差点对,使残差点的“极性”达到平衡,形成最优枝切线,确定不经过枝切线的积分路径,防止误差传递,但若该算法速度快、效率高,枝切位置放置不当,会形成“孤岛区域”,从而导致严重错误;
③质量导向路径跟踪算法(quality guide,QG),是利用质量图指导积分路径的生成,使积分路径开始于高质量的像素,避开低质量的像素,最大限度地阻止误差传播。该算法最初由Bone于1991年提出,利用相位的二次偏导数作为质量图来指导位相解包裹。1995年,Querenga等提出了自适应的阈值,改进了Bone的方法。然后,Xu和Cumming首次将相干系数图作为质量图对像素进行排序,实现位相解包裹。这种算法不需要识别出残差点,准确性比枝切法要好,但速度比枝切法慢,而且需要高质量的质量图作为保证,若质量图选取的不好,在噪声过多的区域,会产生不能解调的“孤岛区域”;
④掩模 - 切割法(mask - cut),该算法是枝切法与质量图导向路径跟踪算法的结合,它首先识别残差点,并用枝切线将残差点连接起来,与Goldstein枝切法不同的是,它利用相位质量图指导枝切线的设置,从这一点上来说它又与质量图导向的路径跟踪法相似。该算法准确性较高,但速度比枝切法慢,且需要高质量的质量图作为保证。在噪声过多的区域,会形成“孤岛”现象;
⑤区域生长算法(region grow),区域生长法从高质量的像素出发,根据已经经解包裹的像元和质量图来决定下一个解包裹方向(从相邻的八个方向中选),同时通过设定阈值来评定相邻八个方向的平均偏差,优先选取平均偏差最小的方向进行解包裹。该算法可以实现同步位相解包裹。运算速度快,抗噪能力强,精度较高,但可能会形成“孤岛区域”;
⑥菱形算法(rhombus algorithm,RA),该算法是通过识别1个种子点,然后依次向相邻4点扩展,再把这4个点作为第二批种子点,依次向各自的4点邻域扩展,以菱形轨迹遍历所有的有效信息点,以达到整幅图像位相解包裹的目的。算法速度较快,但在噪声较多的区域,容易出现“拉线”现象。

(2)最小范数法:最小范数法是求出展开位相的相邻像素位相差和包裹位相的相邻像素位相差最小(L^{p})范数意义上的解,它是一种路径独立的全局算法,不需要识别残差点。该算法计算量大,但是对误差点的控制很好。

最小范数法从原理上来说就是进行曲面拟合,其关键就是范数的选取问题。当(p>2)时,解包裹位相的曲面过于平滑,与真实位相梯度误差较大;当(p<2)时,解包裹的结果与局部位相梯度较匹配,而对权重的要求就很高,确定噪声比较严重的区域权重是一个很困难的问题;当(p = 2)时,成为目前研究最多的最小范数法,即最小二乘位相解包裹方法,因为该类算法可尽量保证解包裹梯度和真实梯度一致,并且这时的位相解包裹问题可以转化为求解离散泊松方程的问题,求解该方程的方法有很多,扩展了位相解包裹的思路。

最小二乘法中有一种特殊情况,即无权最小二乘位相解包裹算法。求解此种情况下的离散泊松方程的方法有:①基本迭代法,它包括(omega - Jacobi)迭代法、高斯 - 赛德尔(Gauss - Seidel)迭代法、超松弛(SOR)迭代法,迭代法收敛速度比较慢,因而目前应用较少;②基于快速傅里叶变换的最小二乘法(简称FFT - LS),该算法需要对包裹位相图进行“镜像”操作,也即对包裹位相进行周期延拓,从而使泊松方程满足周期性,适合用FFT算法进行求解。由于采用的是FFT变换,该算法速度较快,抗噪能力强,不会出现“拉线”现象,但需要进行周期延拓会影响计算时间,而且由于采用FFT变换,所以要求图像满足(2^m+1)× (2^n+1)大小,有局限性;③基于离散余弦变换的最小二乘法(DCT - LS),该算法的原理和基于FFT的算法原理相同,它的优点是不需要进行周期延拓,但是它需要有纽曼边界条件进行约束,因而速度比FFT算法快,抗噪能力也比较强,不会出现“拉线”现象,由于该算法具有平滑作用,会导致误差传递;④多级格网法(multi - grid),该算法是对Gauss - Seidel迭代法进行改进得到的,目的是为了加快其收敛速度,基本算法与Gauss - Seidel法一致;⑤基于横向剪切干涉的最小二乘法(LS - LS),横向剪切干涉是指被测光场与其平移后的光场相干涉而形成的光场。对于数字全息来说,由于具有数字化优点,可以通过将数字全息重构光场做横向和纵向平移即可实现剪切干涉,得到几乎没有包裹的剪切位相分布,大幅度降低了位相解包裹的难度。

在实际应用中,常常会出现位相跳变厉害、调制度低以及欠采样的问题,使位相解包裹面临着比较大的困难。为了解决欠采样的问题,2011年,昆明理工大学钱晓凡老师等提出了一种基于横向剪切干涉的最小二乘位相解包裹算法,该算法的思路为:对重构光场的复振幅分布沿(X(Y))方向上平移(s)个像素(通常取(s = 1)),得到光场复振幅的新分布;由于平移量极小,可忽略原光场在((m,n))与((m + s,n))点处的差异,两光场相除可得到它们在((m,n))点处的位相差值,然后利用基于离散余弦变换的最小二乘法解包裹,即可获得光场的展开位相分布。该算法优点:速度快,抗噪能力强,精度更高,适合解决还有欠采样的图像。算法缺点:由于使用基于DCT的最小二乘法进行解包裹运算,所以会造成误差传递。

无权最小二乘位相解包裹算法没有考虑残差点的影响,因此会造成误差传递,这种误差可以通过加权来弥补。比较经典的加权最小二乘法主要有:演化的Gauss - Seidel迭代法、Picard法和预条件共轭梯度法(PCG)。对于加权最小二乘法,由于引入了迭代运算,运算时间比较长,且需要高质量的质量图作保证,实际应用价值不大。然而,由于引入权重,所以抗噪能力较强。

综上所述,最小二乘位相解包裹算法是最小范数算法中最常用的算法。由于加权算法引入了权重,可以减弱噪声对位相解包裹的影响,因此从解包裹精度上来说,加权最小二乘法要比无权最小二乘法精度高,但是加权算法的运行速度比无权算法的慢。

3)基于最优估计的位相解包裹算法:最经典的基于最优估计的位相解包裹算法就是1996年Costantini提出的基于网络规划的最小费用流算法(minimum cost flow,MCF),这种算法的基本思想是最小化解包裹位相导数和包裹位相导数差的范数。该算法比较费时,而且随着数据块的增多,运行时间急剧增加。郭春生博士提出了改进算法,将数据分块操作,然后再将解包裹后的位相合并起来。虽然可以提高速度,但是合并时的连续性受到了影响。为了提高位相解包裹的精度,王超等提出了一种基于不规则网络下的网络规划算法,但是该算法增加了生成Delaunay三角网的时间开销,使得运行速度更慢。后续提出的基于最优估计的算法有:遗传算法、模拟退火算法等,这些算法也同样存在运行速度慢的问题,不适合实时处理和动态监测领域,也不适合处理大面积的包裹位相图。

(4)基于特征提取的位相解包裹算法:基于特征提取的位相解包裹方法是直接从位相图干涉条纹入手,首先识别出位相条纹;然后根据条纹之间的相互关系,积分时每通过一个干涉条纹就加上或减去2π,最终实现整幅图的位相解包裹。条纹识别的常见方法有两种:①通过干涉图的特征提取位相条纹,可以通过各种算子进行特征提取,如罗伯斯(Roberts)算子、索贝尔(Sobel)算子、拉普拉斯(Laplacian)算子等;②也可以通过区域分割,即通过相邻像素位相差来获取,条纹之间的相互关系在区域分割过程中就可以获取。该算法不需要判断残差点,也不对误差点进行任何处理,因而简单快捷,但对条纹图要求较高,需要有连续的、明显的干涉条纹,条纹不连续的区域需要进行人工干预。必然会引入误差,实际应用严重受限。

(5)基于傅里叶变换的位相解包裹算法:该类算法运算速度比较快,这是FFT自身的特点所决定的,特别是当图像的大小是2的偶数次幂时,运算速度会更快。此外,由于在频域中对数据进行操作不是点点一一对应的,能够圆满解决空域中的噪声等问题。

基于傅里叶变换的经典算法有四种:基于四次傅里叶变换的算法(四次FFT)、基于二次傅里叶变换的算法(二次FFT)、基于四次离散余弦变换的算法(四次DCT)和基于横向剪切干涉与傅里叶变换相结合的算法(LS - FFT)等。基于横向剪切干涉与傅里叶变换相结合的算法比较适合解决欠采样的问题,基于四次和二次傅里叶变换的算法比较适合处理强噪声的情况,由此可见,将傅里叶变换引入到位相解包裹算法中来是很有发展前景的。

该类算法并不是无权最小二乘算法中的基于傅里叶变换的位相解包裹算法,不过也可以把基于傅里叶变换的最小二乘解包裹算法归为这类算法中来。

解包裹算法的分类比较

每类算法各有优缺点,它们的具体情况列于下表。

表3 相位解包裹算法比较

算法分类算法原理优点缺点前景
路径跟踪算法通过识别残差点或者依靠质量图寻找最佳积分路径来实现位相解包裹对于噪声少的情况,可以得到比较满意的结果噪声比较强,就会出现 “拉线” 和 “孤岛” 区域对于处理一些噪声弱的图像是不错的选择
最小Lp范数算法即求出解包裹位相的相邻像素位相差和包裹位相的相邻像素位相差最小Lp范数意义上的解运算稳定性好,速度较快,不需要识别误差点,抗噪能力强误差严重的区域,容易造成误差传递,导致精度降低最小二乘算法是目前比较常用的算法,有待进一步发展
基于最优估计算法即最小化解包裹位相导数和包裹位相导数的差异能有效抑制误差点导致的位相误差传播,且不需要识别误差点,效果较好由于计算量非常大,运行速度非常慢,不适合做大面积处理理论复杂,研究进展较慢,不适合于实时动态监测
基于特征提取算法识别出位相条纹,积分时每通过一个干涉条纹就加上或减去2π,最终实现整幅图的解包裹不需要识别误差点条纹必须清楚,条纹不连续区域需要进行人工干预,会引入误差限制太大,实际应用性不强
基于傅里叶变换的算法将傅里叶变换引入位相解包裹算法中,即将空域引入到频域中来,有其独特的优势处理速度非常快,尤其是处理 2 的偶数次幂的图像,解包裹精度较高有些相关算法不适合于解决欠采样问题速度较快,该类算法是比较有发展前景的一类算法

通过表可知,目前各类算法都有自己的优缺点,因此,相互借鉴、相互组合优化,寻找合适的适用范围是以后的必然趋势。

实验指导与matlab代码获取

博主(博士研究生)在上述领域可提供实验指导、实验系统研发以及相关Matlab程序开发服务。如有需求,请私信博主, 联系方式见文章底部。


⭐️◎⭐️◎⭐️◎⭐️ · · · **博 主 简 介** · · · ⭐️◎⭐️◎⭐️◎⭐️

▁▂▃▅▆▇ 博士研究生 ,研究方向主要涉及定量相位成像领域,具体包括干涉相位成像技术(如**全息干涉☑**、散斑干涉☑等)、非干涉法相位成像技术(如波前传感技术☑相位恢复技术☑)、条纹投影轮廓术(相位测量偏折术)、此外,还对各种相位解包裹算法☑相干噪声去除算法☑等开展过深入的研究。

程序获取、程序开发、实验指导,软硬系统开发,科研服务,请私信博主,联系方式如下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/79153.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/79153.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/79153.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust 学习笔记:关于枚举与模式匹配的练习题

Rust 学习笔记:关于枚举与模式匹配的练习题 Rust 学习笔记:关于枚举与模式匹配的练习题以下程序能否通过编译?若能,输出是什么?考虑这两种表示结果类型的方式,若计算成功,则包含值 T&#xff1b…

C++负载均衡远程调用学习之QPS性能测试

目录 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 3.QPS_TEST_SERVER端实现 4.QPS_TEST_QPS简单介绍 5.QPS_TEST_QPS客户端工具编写和性能测试 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 ## 14) Reactor框架QPS性能测试 ​ 接下来我们写一个测试用例来测一下我们…

【MySQL数据库】视图

1,视图的基本介绍 视图是一个虚拟表,其内容由查询定义。与真实表一样的是,视图包含带有名称的列和行数据;与真实表不一样的是,视图本身并不在数据库中存储数据。视图的数据变化会影响到基表,基表的数据变化…

Linux系统安装方式+适合初学者的发行版本

Linux系统安装方式适合初学者发行版—目录 一、Linux系统的安装方式1. 物理机直接安装2. 虚拟机安装3. 双系统安装4. Live USB试用5. 云服务器安装 二、适合初学者的Linux发行版1. Ubuntu2. Linux Mint3. Zorin OS4. Pop!_OS5. Elementary OS6. Fedora7. Manjaro 三、选择建议场…

Linux C++ JNI封装、打包成jar包供Java调用详细介绍

在前面 Android专栏 中详细介绍了如何在Android Studio中调用通过jni封装的c库。 在Android使用 opencv c代码,需要准备opencv4android,也就是c的任何代码,是使用Android NDK编译的,相当于在windows/mac上使用Android stdido交叉…

4.1 模块概述

1.Python结构 工程 > 包 > 模块 Python工程: “Python项目中最大的文件夹(本质就是一个文件夹)” --- 左侧的 CODE文件夹 为Python工程 Python包: 本质就是一个文件夹,但是python包中具备具体的标识,如果没有标识则不能导入 --- 左侧的 01.Python基础 文件夹为python包 P…

AJAX 实例

AJAX 实例 引言 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。Ajax通过在后台与服务器交换数据,实现了页面的动态更新,从而提高了用户体验和…

相机的基础架构

📷 相机相关基础架构学习路径 一、了解手机相机系统架构 Android Camera HAL(如果你是做 Android 平台) 学习 Camera HAL3 架构(基于 camera_device_t, camera3_device_ops 接口) 熟悉 CameraService → CameraProvid…

MLX Chat - 基于 Streamlit 的 MLX 前端界面

本文翻译整理自:https://github.com/da-z/mlx-ui 一、关于 MLX Chat 一个基于 Streamlit 的简单 UI/网页前端,用于 MLX mlx-lm 项目。 相关链接资源 github : https://github.com/da-z/mlx-uiMLX 社区模型库:https://huggingface.co/mlx-co…

el-table 自定义列、自定义数据

一、对象数组格式自定义拆分为N列 1-1、数据格式: const arrayList ref([{"RACK_NO": "A-1-001"},{"RACK_NO": "A-1-002"},{ "RACK_NO": "A-1-003"},//省略多个{"RACK_NO": "A-1-100…

JVM 如何使用性能分析工具定位代码中的性能问题?

核心思想: 通过工具观察程序在特定负载下的运行状态,识别消耗资源最多的代码段(热点代码)、异常的内存分配模式或线程阻塞情况,然后针对性的优化代码。 通用步骤: 确定问题: 首先明确遇到了什…

Python虚假新闻检测识别

程序示例精选 Python虚假新闻检测识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Python虚假新闻检测识别》编写代码,代码整洁,规则,易读。 学习与应…

网络原理 - 12(HTTP/HTTPS - 3 - 响应)

目录 认识“状态码”(status code) 200 OK 404 Not Found 403 Forbidden 405 Method Not Allowed 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 418 I am a teaport 状态码小结: …

Spring Boot中集成Guava Cache或者Caffeine

一、在Spring Boot(1.x版本)中集成Guava Cache 注意&#xff1a; Spring Boot 2.x用户&#xff1a;优先使用Caffeine&#xff0c;性能更优且维护活跃。 1. 添加依赖 在pom.xml中添加Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId&…

Linux工作台文件操作命令全流程解析

全文目录 1 确认当前工作路径2 导航与目录管理2.1 关键命令2.2 逻辑衔接 3 文件基础操作3.1 创建 → 备份 → 重命名 → 清理3.2 文件查看和编辑3.3 文件链接3.4 文件diff 4 文件权限与所有权管理5 文件打包与归档6 参考文献 写在前面 shell是一种命令解释器&#xff0c;它提供…

LeetCode第183题_从不订购的客户

LeetCode 第183题&#xff1a;从不订购的客户 题目描述 表: Customers ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | ---------------------- id 是该表的主键。 该表包含消费者的 id 和…

c语言的常用关键字

c语言的常用关键字 c语言的关键字表示数据类型的关键字autocharfloatdoubleintlongshortvoidsignedstruct、enum、unionunsigned 表示分支语句的关键字ifelseswitchbreakcasecontinuedefault 表示循环语句的关键字whiledoforgoto 用于修饰变量或函数的关键字constconst修饰变量…

MCU通用输入输出端口(GPIO)设计指南

在嵌入式系统开发中&#xff0c;MCU的GPIO接口是一个基础但非常实用的功能模块。GPIO全称是通用输入输出端口&#xff0c;它让MCU可以灵活地与外部设备进行交互。 GPIO的主要特点包括&#xff1a; 多功能性&#xff1a;每个引脚都可以单独配置为输入或输出 可编程性&#xff…

STM32完整内存地址空间分配详解

在STM32这类基于ARM Cortex-M的32位微控制器中&#xff0c;整个4GB的地址空间(从0x00000000到0xFFFFFFFF)有着非常系统化的分配方案&#xff0c;每个区域都有其特定的用途。下面我将详细介绍这些地址区域的分配及其功能&#xff1a; STM32完整内存地址空间分配详解(0x00000000…

实现水平垂直居中的多种方法

在前端开发中&#xff0c;元素的居中是一个常见但又经常让人头疼的问题。本文将全面总结各种CSS居中方法&#xff0c;特别是如何实现一个div的水平垂直居中。 为什么居中这么重要&#xff1f; 居中布局是现代网页设计中最基础也最重要的布局方式之一。无论是导航菜单、登录框…