基于车载点云数据的城市道路特征目标提取与三维重构

作者:邓宇彤,李峰,周思齐等

来源:《北京工业大学学报》

编辑:东岸因为@一点人工一点智能公众号

基于车载点云数据的城市道路特征目标提取与三维重构本研究旨在弥补现有研究在处理复杂环境和大数据量上的不足,解决当前城市道路特征提取和三维重构方法在应对复杂场景和大数据量处理上的局限性,提供一种更高效、更可靠的解决方案。icon-default.png?t=N7T8https://mp.weixin.qq.com/s/LBvvp2bGNJL09VDDTsLeqA城市道路作为交通基础设施的重要组成部分,其数字化建模是智慧交通、自动驾驶以及基础设施变形监测等领域发展的必要前提[1]。尽管发达国家的道路建设已达到相对饱和的状态,但针对既有道路的快速、准确的数字化模型重建仍是研究的重点。在这方面,三维激光扫描技术通过激光雷达系统采集待测区域的点云数据,进而成为实现高精度重建的重要手段[2]。

然而,现有的研究中,大多数的方法存在一些局限性,如人工参与度高、处理效率低、仅针对特定类型的场景进行优化。这些因素都对提高系统的普适性和精确度造成了阻碍。

已经有许多方法被提出来进行道路特征提取和三维重构,如基于图像处理技术的方法、传统的计算机辅助设计(computer aided design,CAD)方法、图纸数据建模方法以及近年来新兴的基于三维激光扫描和倾斜影像数据的方法[3],但是这些方法往往存在各自的问题和挑战。例如,传统的方法在处理复杂的场景和大量的数据时,往往需要大量的人力、物力和时间成本[4]。近年来,倾斜摄影技术的发展促使了基于倾斜影像数据进行三维模型重建方法的产生,虽然该方法能够提高模型重建的效率,但是在某些场景下,如存在遮挡的情况或者全球定位系统(global positioning system,GPS)信号丢失的地方,此方法的效果则会受到严重影响[5-7]。

基于三维激光扫描技术的方法虽然可以保留更多的细节,但是在对点云数据处理和解释上存在较大挑战[8-9],尤其是当数据量大且复杂度高时。

在道路边界提取方面,Hu等[10]通过布料滤波提取出地面点云,进而选取车辆前方的部分路面点来估计路面模型的法向量,基于路面点云密度分布的均匀性,通过计算一维和二维点密度的连续性,从平面点集中滤波出所有道路点,最终提取出道路边界点云;Wang等[11]通过车辆轨迹辅助道路划分、特征性地图构建与特征性点提取、抑制子检测与抑制子最低点提取、道路边界拟合等步骤提取并拟合出城市道路边界。这种方法通过处理二维图像代替三维点云,方法较为成熟且效率较高,但是道路点云地物类型多,投影时相互叠加导致精度损失,另外二维图像的格网大小选择也会对提取结果造成较大影响。一部分学者基于扫描线处理道路点云数据,提取道路边界。Zhang等[12]基于每条扫描线,将激光雷达距离数据分解为高程信号和地面投影信号,对高程信号进行滤波处理,再通过模式识别技术确定是否为路面,并通过投影信号加以验证;方莉娜等[13]基于每条扫描线做高程滤波处理,提取路面点云和路坎,最终获得道路边界。以上基于扫描线对点云数据进行处理的方法考虑了地物的空间分布信息并加以利用,但未考虑到扫描线之间的连续关系,而且部分阈值的确定大多基于经验,自适应性较差,在场景较为复杂时难以获得应用。

针对道路标识线的提取方法,也有研究者进行了相关研究。Yang等[14]通过插值的方法生成地理参考特征图像,根据反射强度进行分离,进而利用高度阈值对分离的点进行分割,最后利用道路标记的语义信息提取道路标识线,但一些较为复杂的交通标识线在提取的时候准确性较差;Ye等[15]将道路点云数据分割成垂直于车辆轨迹的块,采用双自适应强度阈值法从路面中提取道路标记,最后根据点云数据的密度分布进行自适应空间密度滤波,去除虚假路标点;Wang等[16]基于GPS轨迹从原始点云中提取和分割道路表面和附属设施点云,动态地将点云从全局坐标系转移到基于块的局部坐标系,根据块廓线和重采样点云估计边缘和中心点,基于半径滤波器提取道路标记。这种方法虽然可以提取道路标识线的三维信息,但对反射强度较低的道路标识线提取效果不佳。

针对路侧目标,目前多采取空间聚类的方法提取。Zhen等[17]和李永强等[18]首先在道路点云数据中进行聚类获得各个点簇,计算点簇的特征,创建训练集通过分类器对各个点簇进行分类。这种方法对于特征差异比较大的地物可以获取比较好的提取效果,但对于路侧的杆状地物来说其差异性较小,难以分辨,效果比较差。Yu等[19]在道路点云数据中人工提取出路灯,建立路灯模板,使用此模板在道路点云数据中不断进行匹配,若匹配度较高则将其识别为路灯点云。

本研究旨在弥补现有研究在处理复杂环境和大数据量上的不足,解决当前城市道路特征提取和三维重构方法在应对复杂场景和大数据量处理上的局限性,提供一种更高效、更可靠的解决方案。

01 基于车载点云数据的道路特征目标提取与三维重构方法

1.1 道路特征目标提取

在车载道路点云数据中,主要包含以下地物:路面、路缘石、路面标识线、交通指示牌、路灯、行道树、中央隔离护栏和建筑物等,在文献[20]的基础上对地物进行空间分布特点和几何构造特点分析,结果如表 1所示。​​​​

表1 地物空间分布特点与几何构造特点

1.1.1 道路边界点云提取方法

在城市道路的组成中,路缘石是必要的组成部分,所以在分析路缘石特征的基础上,提出路缘石描述算子,将路缘石附近点云提取出来,进一步通过平面拟合算法提取道路边界。

通过高程过滤将道路点云数据中高程值大于路面点高程值50cm以上的点除掉,仅保留路面、路缘石和低矮植被等点云,避免过高的地物由于遮挡而对实验结果产生影响。将点云数据向下投影到XOY平面并建立规则格网。

分析路缘石的空间分布,发现路缘石具备两大特征:1)在道路横断面方向,路缘石具备单侧连续性,即路缘石某一侧是连续且平坦的路面,另一侧是花草、行道树等杂乱无章的地物;2)在车辆行驶方向,路缘石具备连续分布性,即随着道路向前延伸,路缘石也是在车辆行驶方向上不间断地延续的,如图 1所示。图 1中,(a)是道路示意图,(b)是(a)中A~F的局部放大图,红色部分为路缘石,绿色部分代表灌木,黑色部分代表路面。​​​​​​​

图1 路缘石示意

基于单侧连续性和连续分布性,确定路缘石描述算子,包含2个判别条件。基于格网化的点云采用一个3×3的移动判别窗口,对点云数据进行检验和判别,如果点云格网满足判别条件A和判别条件B,就判定这个格网是路缘石格网,否则,将其判别为非路缘石格网。为了便于描述和计算,令点云格网内所有点的最大高程为该格网的值。

1)判别条件A:中心格网与邻域格网的高程差值\Delta h应处于10~25 cm;满足此特性的邻域格网的最大个数N应处于N_1N_2之间,N_1=2,N_2=4。

2)判别条件B:计算中心格网与邻域格网的坡度,若坡度小于阈值\Delta s,则标记邻域格网;计算中心格网的中心点与标记的邻域格网中心点构成的所有向量之间的最大夹角\alpha_{max}应等于135°或180°。

确定判别条件A和判别条件B后,即可用3×3的移动判别窗口一一判别,若2个条件都符合,则可将其判别为路缘石格网。

为了去除道路中央护栏及花坛内植被等伪边界格网,以一路缘石格网为起始格网,以邻域格网数量和角度作为聚类条件采取区域增长算法进行聚类,获得确定的路缘石格网。

在确定的路缘石格网内采取随机采样一致性方法分别拟合出路缘石立面和路面平面,然后求2个平面的交集,这个交集就是道路边界点云。

1.1.2 道路标识线提取

对道路点云数据进行滤波处理,将点云分为地面点和非地面点,避免汽车、行道树、路灯等非地面点对地面元素的检测产生干扰,以更好地对非地面道路特征(如行道树、路灯)进行提取。

综合利用点云数据的高程信息、强度信息、点云密度信息分别生成3种灰度地理参考图像:非地面点的高程图像、地面点的强度图像和地面点的点密度图像。高程图像的格网灰度值是通过计算格网内非地面点的平均Z值确定的,强度图像的格网灰度值是通过计算格网内地面点的平均反射强度确定的,点密度图像的格网灰度值是通过统计落入格网内地面点的个数确定的,3种图像如图 2所示。

图2 地理参考图像

对高程图像和强度图像处理获取高程梯度图像和强度梯度图像,对高程梯度图像和点密度图像进行二值化处理,基于强度梯度图像粗略提取标识线像素,以强度梯度图像为基础,用坡度二值图像和点密度二值图像对其进行过滤,剔除坡度二值图像中坡度较大和密度二值图像中点密度较小的分布,保留坡度小、点密度大的部分,利用最大熵阈值法将过滤后的强度梯度图像进行二值化处理,粗略地将值为1的像素点作为道路标识线的边界像素,采用区域增长算法对提取到的封闭的道路标识线边界进行填充。

最后,将地理参考图像映射回原始的三维空间中,选用最大类间方差法进行点云强度阈值过滤,保留强度值较高的点,以细化道路标记,去除地理参考图像的锯齿效应,为了减小噪声点的影像,采取逐次松驰法(successive over- relaxation,SOR)滤波去除异常点和噪声点。

1.1.3 路灯和行道树提取

由于路灯和行道树都属于非地面点云,因此利用布料滤波方法对点云进行过滤,去除地面点云,保留非地面点云。

将平滑度参数引入欧式聚类,通过改进的欧式聚类方法完成地物的聚类分割,考虑到路灯和行道树的实际高度,若某聚类最高点的离地距离小于6 m则将其滤除。

对剩余的聚类点云建立三维格网索引,并对每一层格网点云分别做平面投影,杆状地物在向XOY平面做投影后,是圆弧形状,采用RANSAC拟合算法对格网化后的点云数据从下向上计算每个格网内拟合圆的半径大小和圆心坐标。为了防止部分非路灯和行道树杆状地物的拟合圆聚类混入,需要对其添加2个限制条件,其一是拟合出的圆半径r应在一定的阈值内,其二是考虑到二者的高度,应使满足拟合圆半径r的格网层数大于8,满足这2个条件的即可将其归为路灯和行道树杆状地物。

最后,采用支持向量机算法分类得到路灯和行道树点云。

1.2 道路三维重构

1.2.1 路面重构

前文在进行道路边界提取时已将道路边界点云成功提取出来,在建立路面三维模型前,需获取路面的参数,对道路边界线点云做抽稀处理,每隔10 m保留关键节点,并将关键节点的XYZ坐标提取出来,并分别存储在A[n]和B[n]数组中,相邻的2个点确定一个路面族,用L[n]和B[n]表示,进而计算出道路四边形模板的参数,此处采取连续四边形重建算法,通过不断加载路面族并对族参数进行修改即可创建路面模型,如图 3所示。​​​​​​​​​​​​

图3 连续四边形重建方法示意

同时应考虑到,道路在设计施工时,必然存在部分弯道区域,这些弯道区域就可能存在不平滑的现象,那么在弯道区域进行路面重建时,就必须缩小边界线上关键点的间距,通过缩小间距、加密处理的方式完成弯道区域的建模。

1.2.2 标识线重构

路面与标识线是包含和被包含的拓扑关系,在路面重建完成后,再进行路面标识线的重建,包含长标识线、短标识线和导向箭头等。

路面长标识线和短标识线均为矩形结构,根据前期提取的道路标识线点云,通过K最近邻(K-nearest neighbor,KNN)分类算法提取出道路标识线点云的边界点,进而拟合出道路标识线的边界线,通过拟合的直线求交点的方式获取道路标识线角点坐标,即可计算出矩形的长、宽信息,再通过角点的坐标信息,即可将长、短标识线顺利加载到路面上。

导向箭头的种类较为复杂,分为直行、左转、右转、直行且左转、直行且右转等多种,在建立模板时就应充分考虑到各种类型情况,同时通过查阅国家标准,发现对箭头尺寸有着明确的规定,在建立模板时可将尺寸的箭头一一建立,在进行标识线重建时直接调取,而不再需要对其进行编辑处理,通过箭尖的坐标即可将导向箭头顺利载入。

1.2.3 路灯和行道树重建

一般情况下,同一道路上路灯的种类是相同的,因此单个路灯进行精细化的手工建模,然后采用根据位置和方位批量化快读建模的方法,实现道路路灯的重建,极大地减少了工作量,且提高了建模速度。

由于树木生长速度不同、树冠大小形状不同等各种原因,想要将每棵树都实施映射到道路模型中很难实现,因此,为了提高建模效率,对道路上行道树的种类进行统计,创建了相应的模型,根据树干的圆心坐标值,将不同种类的单棵树模型重复使用,完成行道树的重建。

02  实验

2.1 实验数据

在本文研究中,采用了青岛秀山移动测量有限公司生产的VSurs-E道路三维激光移动巡检系统,如图 4所示。该测量系统是由汽车搭载平台、数据采集系统、汽车定位系统以及协调传感器的时间同步系统构成的三维空间测量系统。​​​​​​​​​​​​

图4 车载移动测量系统组成

该系统作业灵活,系统集成化程度高,可实现数据快速、高效采集,可应用于道路病害巡检、公路高精度测量、智慧城市的数字化测量等领域,采集精度可达到厘米级别,本研究应用该系统进行青岛市某路段全长1.5 km的数据采集,采集到的点云数据如图 5所示。

图5 道路点云数据示例

除这部分点云数据外,还采用了另外1组数据作为实验对象,本文中分别用数据1和数据2来指代。2组数据存在较大的差异性,其中数据1是城市普通道路点云数据,道路两侧含有部分建筑物立面,数据较为复杂;数据2同样来自山东科技大学车载移动测量系统所采集的道路数据,采集对象是快速道路数据,道路由中央隔离带断开,未采集到道路两侧的路灯和行道树点云。数据1、2的原始点云如图 6所示,点云数据的部分参数如表 2所示。​​​​​​​​​​​​

图6 原始点云数据

​​​​​​​​​​​​​

表2 数据1、数据2参数

2.2 评价指标

道路目标提取实验完成后,分别统计以下数据:1)正确提取的目标地物点个数x_t;2)漏提取的目标地物点个数x_n;3)错误提取的目标地物点个数x_f。统计x_tx_nx_f的值后,为了评价道路目标提取的精度,本文选择了目前目标提取与识别中应用比较广泛的客观评价指标精确率P、召回率R和综合评价指标F1,计算公式分别为

2.3 道路目标提取实验

原始数据为无序的道路点云数据,没有提供正确的道路边界、道路标识线、路灯、行道树点云,因此并无正确的结果可以作为实验的评价标准,在采用算法对道路目标进行提取实验之前,首先采用人工的方法从2组点云数据中提取目标地物,作为正确的结果,以便后续进行对比分析。

对数据1、2进行道路边界提取,同时为了更加精细地展示提取效果,将部分边界进行放大,便于观察,如图 7、8所示,从图中可以看出,道路边界的提取效果比较好,但是也会存在部分零星的噪声点。​​​​​​​​​​​​​

图7 数据1道路边界点云提取结果
图8 数据2道路边界点云提取结果

对数据结果进行分析,得到表 3、4,从表中可以看出,本文的算法可以得到比较好的效果,2组实验数据的精确率、召回率和综合评价指标都超过了96%。其中在数据1中,由于道路两侧的路缘石高度较低,且路侧停留车辆造成了遮挡,导致边缘处存在着一些噪声点,进而导致准确度较低。但总体来说算法仍取得了比较好的效果,与人工提取的边界线具有较好的吻合度。​​​​​​​​​​​​​

表3 道路边界提取结果精度分析
表4 道路标识线提取结果精度分析

对道路点云进行标识线自动提取,结果如图 9、10所示,并对局部进行放大,以观察提取效果,从图中可以看出,道路标识线边缘的噪声基本不存在了,提取效果良好。

图9 数据1道路标识线点云提取结果

图10 数据2道路标识线点云提取结果

总体来说,2组数据的评价精度都超过了96%,表明该算法可以取得比较准确的道路标识线提取效果。

对数据1进行路灯和行道树自动提取,结果如图 11所示。

图11 数据1路灯和行道树点云提取结果

从图 11中可以看出,数据1中所有的路灯和行道树均被准确地提取出来,由于行道树的整个树冠点云较为庞大和复杂,因此本节仅对路灯的提取效果做分析,根据表 5,可以发现路灯提取的精度没有道路边界线和标识线的提取精度高,但也达到92%。

表5 路灯提取结果精度分析

最后,为了更加直观地展示城市道路特征目标提取的结果,本文将提取出的目标点云设置为不同的颜色,以数据1为例,树木为绿色,路灯为红色,道路边界为黑色,道路标识线为蓝色,如图 12、13所示。

图12 数据1地物

图13 数据2地物

2.4 道路三维重构实验

在对2组数据进行道路目标提取实验后,便需要从这些道路目标点云中提取获得道路三维重构所需的各项参数,基本参数确定后便可按照前文所提出的道路三维重构方法进行道路模型的快速自动化重建。

对道路边界点云来说,需要对边界点云作抽稀处理,以5m为间隔,获取道路边界点的X、Y、Z坐标值,进而计算出路面重建的基本梯形族的各参数。

对道路标识线而言,长标线和短标线要获取其4个角点的坐标值,通过角点的坐标值计算出长标线和短标线的长宽尺寸,同时记录下行车方向上右下角点的坐标值,便于加载。

对于路灯和行道树来说,针对单一路灯进行精细化建模并以路灯坐标将路灯模型批量复制并放置足以满足建模需要,对数据1中的路灯进行了精细化建模,然后根据杆状地物拟合时的坐标值分别将路灯和行道树置于正确的位置。

最终的三维重构模型如图 14、15所示。

图14 数据1三维重构结果
图15 数据2三维重构结果

03 结论

1) 以路缘石的空间分布特征为基础可完成道路边界的自动提取。

2) 基于车载道路点云的强度特征、高程信息和点密度信息可以完成道路标识线的自动提取。

3) 利用灯杆和行道树的三维杆状特征和二维圆弧特征检测出杆状地物并分类可以完成路灯和行道树的自动提取。

4) 基于提取的特征目标,通过参数化设计可以完成道路的三维重构,实现道路数字化。

本文通过2组实验数据验证了所提方法的有效性,实现了道路边界、标识线、路灯和行道树的自动提取和重建,评价指标均超过了92%,较之已有的算法有了较大的提升。

研究也存在着一些不足,需要进一步地研究和改进。实际情况中大部分城市道路都具备路缘石,但当道路不具备路缘石时,如何提取道路边界有待进一步研究;算法的部分参数比较依赖人工经验,自适应性有待进一步加强;在树木茂密的地方,可能会出现路灯和树木相交的情况,对地物分类产生影响,未来将进一步研究如何使相交的路灯和行道树分离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/578976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt设置可执行程序图标,并打包发布

一、设置图标 图标png转ico: https://www.toolhelper.cn/Image/ImageToIco设置可执行程序图标 修改可执行程序图标 添加一个rc文件,操作如下,记得后缀改为rc 打开logo.rc文件添加代码IDI_ICON1 ICON DISCARDABLE "logo.ico"在项目pro后缀名的文件中添加代码 RC_…

系统盘空间不足调优方式1-APPData/大文件清理

作者:私语茶馆 1.前言 Windows系统盘(C盘)很容易剩余空间不足,这种情况下会非常影响Windows系统的运行,系统盘约束非常多,不方便在线扩容,因此规划和利用好系统盘是保障整体运行效率的关键。包…

机器人系统开发ros2-基础实践01-学会自定义一个机器人动作aciton实体类

您之前在了解操作教程中了解了action 。与其他通信类型及其各自的接口(主题/消息和服务/srv)一样,您也可以在包中自定义操作。本教程向您展示如何定义和构建可与您将在下一个教程中编写的action服务器和action 客户端一起使用的操作。 需要理…

Rust 实战练习 - 12. Axum Web 简单demo

Rust Web 历程 Rust 的异步框架tokio非他莫属,而web框架一直是悬而未决,说到底还是因为没有官方成熟的方案指引,大家各玩各的,互不兼容,白白浪费精力。 这个事情一直等到半官方组织tokio推出axum有了改善。但是市场上…

LeetCode455:分发饼干

题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个…

Orange3数据可视化(组件概览)

概要 大家见过Orange3提供的丰富数据可视化组件吗? Orange3为您提供了一系列生动的图表工具,包括树图、箱线图、小提琴图、分布图、散点图、折线图、条形图、筛图、马赛克图、自由投影、线性投影、雷达图、热力图、韦恩图、轮廓图、毕达哥拉斯树、毕达哥…

关于springboot内置tomcat最大请求数配置的一些问题

前言 springboot内置了tomcat。那么一个springboot web应用,最大的请求链接数是多少呢?很早以前就知道这个是有个配置,需要的时候,百度一下即可。但,事实并非如此,有几个问题我想大多数人还真不知道。比如…

强化学习-MAPPO算法解析与实践-Multi Agent Proximal Policy Optimization

一 算法简介 mappo 是一种将ppo算法扩展到多智能体情况的算法,在讨论过这种算法的论文中,比较有名和权威的是Nips2021上发表的《The Surprising Effectiveness of PPO in Cooperative》。比较遗憾的是,可能作者出于自己不是最早提出mappo算法…

Avalonia UI跨平台WPF

Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。 它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。 官网链接: 官网链接 文档链接&#…

mstsc 远程桌面由于以下原因之一无法连接到远程计算机

问题 想使用win自带的局域网远程工具mstsc远程连接电脑。如何连接:只需要两台电脑在同一个局域网内,然后使用被远程电脑的ip地址、Microsoft用户名和密码。 但是连接的时候会跳出来如下提示: 远程桌面由于以下原因之一无法连接到远程计算机…

【每日刷题】Day23

【每日刷题】Day23 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 138. 随机链表的复制 - 力扣(LeetCode) 2. 链表的回文结构_牛客题霸_牛客网 …

C++11新特性:lambda表达式

目录 1.lambda表达式 1.1 C98中的一个例子 1.2 lambda表达式 1.3 lamzbda表达式语法 1. lambda表达式各部分说明 2. 捕获列表说明 1.4 函数对象与lambda表达式 1.lambda表达式 1.1 C98中的一个例子 在C98中,如果想要对一个数据集合中的元素进行排序&#xff0…

spring的常用注解

目录 1.前言 2.web url映射 2.1RequestMapping 2.2PostMapping 2.3GetMapping 3.参数接受和接口响应 3.1RequestParam 3.2RequstBoby 3.3ResponseBoby 3.4RestController 4.bean的存储 4.1Controller 4.2Service 4.3Repository 4.4Compontent 4.5Configuration …

判断n以内的素数个数的五种方法+时间对比

目录 方法一:暴力法 复杂度 方法二:跨度为6的倍数的优化 复杂度 方法三:埃氏筛法 复杂度 方法四:埃氏筛法的改良 复杂度 方法五:线性筛 复杂度 性能对比测试 练习 方法一:暴力法 就是写一个函…

Nacos 集群 On K8s 实践服务注册发现、服务动态配置

一、K8s 部署 Nacos 集群 安装规划 组件replicas类型mysql1StatefulSetnacos3StatefulSet 使用 k8s 版本为:v1.18.0 。 本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创建和管理持久…

JavaEE——Spring Boot入门

目录 📚 JavaEE——Spring Boot入门 🔧 1. 新建Spring Boot项目 🛠 2. 添加pom依赖 📝 3. 添加application.yml文件 📂 4. 创建Dao层 🔧 5. 创建Service层 🖥️ 6. 创建Controller层及HT…

easyExcel快速入门

目录 🧂1.简单介绍 🌭2.快速入门 🥓1.导入依赖 🍿2.导出到excel 🎏3.读入数据 🎉4.下载 1.简单介绍 传统操作Excel大多都是利用Apach POl进行操作的,但是POI框架并不完善,使用过程非常繁琐且有较多…

redisson分布式锁的单机版应用

package com.redis;/*** author linn* date 2024年04月23日 15:31*/ import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.…

多端文件互传软件-LocalSend

一、前言 日常学习或者是工作需求,需要手机和电脑互传文件。用到频率低的话,使用即时通讯软件也就够了。 像我日常使用的多端互传文件软件是LocalSend。 二、 LocalSend LocalSend是一款基于局域网的文件传输工具。 LocalSend是一种用于在本地网络中…

super与this

目录 原型链与继承继承中的原型链 classsuper与this 我们可能会对一个问题感到好奇:为什么在派生类中,我们需要在调用this之前调用super。我们通常将其视为一种规范,却很少深入探究这个规范的真正意义。许多人认为super不过是ES6之前继承方式…