隧道论文阅读2-采用无人融合扫描数据的基于深度学习的垂直型隧道三维数字损伤图

news2024/11/15 9:41:08

目前存在的问题:

  • 需要开发新的无人测量系统测量垂直隧道
  • 图像数据量巨大,基于深度学习完成损伤评估
  • 跟踪获取图像位置的困难,对大型基础设施感兴趣区域(roi)的2d和3d地图建立进行了研究,对整个目标结构的损伤定位仍然具有挑战性。为了解决这个问题,对2d和3d的建立进行了研究大型基础设施感兴趣区域(roi)的映射
  • 基于投影的纹理映射算法受到损伤标签的形状失真的限制——即由于混合算法的缺点,微尺度裂纹尚未映射到3d模型。因此,从3d模型中提取的图像的损伤评估可能涉及损伤量化误差

文章主要研究内容:

  • 设计垂直隧道的自动测量系统(安装相机和2D激光扫描仪)
  • 通过两个传感器安装的位置关系,得到两类数据的对应关系
  • Sift特征配准上下位置的图像,计算图像重叠率,筛选保留图像及其对应的点云数据
  • 针对图像中大面积风化等损伤和小范围裂缝分别建立两种识别网络。语义分割网络架构deeplab v3 +,对裂纹和区域损伤分别量化,将裂纹分割区域的二值区域替换为彩色图像
  • 因为测量过程中相机位姿固定,将提取到的特征点映射到3D空间中形成稀疏点云,根据泊松重建之后,将损伤映射到重建表面上。

论文翻译:

摘要:对垂直型隧道的专家相关目视检查通常不仅对工人来说是危险的,而且检测结果不可靠。为了解决技术问题,本文描述了一种基于深度学习的基于三维数字损伤映射技术,利用无人融合数据扫描系统。该系统通过在隧道内垂直移动来获取原始数字图像和点云数据。随后,自动选择最优图像,用于基于深度学习的损伤评估和基于固定摄像机姿态的三维数字建模。最后,通过基于预定相机姿势将损伤特征映射到 3d 数字地图上来生成 3d 数字损伤图。该技术在韩国两种不同的现场试验台上进行了实验验证,表明平均精度和召回值分别为 90.89% 和 98.18%。预计所提出的技术可以提高原位可工作性和数据可靠性。

1. Introduction

随着城市的快速发展,地下设施的数量(如地铁、公路隧道和列车隧道)以同样的速度增长。随着地下隧道数量的增加,垂直型隧道的数量也会增加,这是自然通风和隧道管理的补充设施。因为在Korea中定期检查隧道,还必须定期检查垂直型隧道。然而,使用绳索系统检查深度、黑暗、垂直型隧道的专家目视检查可能很困难、不安全和不可靠[1]。为了解决上述问题,已经开发了许多视觉摄像头安装的无人机器人系统,如无人机(uavs)[2-4]、攀爬机器人[5-7]和隧道扫描仪[8-10]。视觉摄像头安装的无人机器人系统已被广泛用于检查大规模的基础设施——包括桥梁、建筑物和隧道——因为它们可以轻松访问目标和获取数据。特别是,开发了一种隧道扫描仪来评估水平地铁和公路隧道的损伤[11-13]。

  • 然而,由于垂直类型结构的检查由于其深度、狭窄的空间和潜在的障碍物可能非常困难,因此需要新开发的无人机器人系统来检查垂直隧道。wohlfeil等人开发了一种安装在导线上的垂直隧道扫描系统,并使用运动学激光扫描方法创建垂直深部矿轴的高分辨率点云[14]。vala等人开发了一种安装在两根导线[15]上的激光摄影测量模型矿轴检测系统。k̈onig等人。提出了一种测量装置,包括八个摄像头,覆盖完整的360◦范围,以建立高分辨率图像马赛克[16]。
  • 随着视觉相机安装的无人机器人系统的活跃发展,专家由于大量的图像而做出决策变得更加困难。在过去的几年里,基于深度学习的损伤评估工具已经成为专家依赖决策的替代方案,因为它们能够从大量数据中自动获得可靠的结果[17-20]。
  • 另一个关键问题是跟踪获取图像位置的困难。因此,对大型基础设施感兴趣区域(roi)的2d和3d地图建立进行了研究。即使可以通过使用深度学习有效和自动化地评估损伤,对整个目标结构的损伤定位仍然具有挑战性。为了解决这个问题,对2d和3d的建立进行了研究大型基础设施感兴趣区域(roi)的映射。jang等人开发了一种二维图像拼接算法,利用攀爬机器人[5]对高层桥墩进行裂纹评价。li等人还开发了一种二维拼接算法来评估损伤,分为在近距离拍摄的多幅图像到单幅图像[21]。同样,wang 等人。开发了一种 2d 拼接算法来评估钢梁裂纹,分为在近距离拍摄的多幅图像 [22]。Jang等人开发了一种基于特征控制的视觉图像拼接和时间空间集成坐标变换算法,用于二维拼接视觉和红外图像的裂纹评估[23]。此外,3d模型重建算法已广泛应用于大规模基础设施[24]的损伤评估。Fernandez等人提出了一种基于图像处理的分割损伤映射算法,使用3d模型[25]。liu等人开发了一种精确的纹理映射算法,利用uavs[26]所需的图像a3d模型进行裂纹评估。最近,开发了使用 3d 重建模型深度学习网络检测到的损伤纹理的映射技术。Kalfarisi等人利用深度分割模型[27]获得的受损分割标签设计了一个3d裂纹纹理模型。从深度分割模型[27]获得的注释标签。chaiyasarn等人开发了一种基于深度学习网络的裂纹检测算法,该网络使用重建的3d模型获得的马赛克图像,然后将检测到的损伤标签映射回3d模型[28]。随后,Chaiyasarn 等人提出的扩展算法。用于在通过虚拟相机从 3d 模型获得的大规模图像上使用深度学习基于网络的方法自动检测裂缝,然后重新映射结果 [29]。然而,基于投影的纹理映射算法受到损伤标签的形状失真的限制——即由于混合算法的缺点,微尺度裂纹尚未映射到3d模型。因此,从3d模型中提取的图像的损伤评估可能涉及损伤量化误差

为了克服这一问题,提出了一种基于固定摄像机姿态的三维建模和损伤映射算法,可以建立时间序列三维数字损伤图。在这项研究中,开发了一种用于垂直类型隧道检测的无人融合数据扫描系统。设计了一种基于三维数字损伤图的自动损伤映射算法,包括数据预处理、基于深度学习的自动损伤评估、基于固定摄像机姿态的三维建模和损伤映射算法,用于自动三维数字损伤图生成。与现有技术相比,该技术的优越性技术方面:(1)新开发了一种无人驾驶融合数据扫描系统,即使在隧道内没有光线的情况下,也能实现整个垂直隧道表面的非接触、非破坏性和快速损伤评估;(2)建立了基于尺寸的语义分割网络,实现了对各类损伤的有效自动评估;(3)考虑恶劣的垂直隧道地表条件,通过训练负样本提高语义分割网络的分类性能;(4)建立三维数字损伤图,实现损伤的量化和局部化;(5)提出的基于固定相机姿态的三维建模与损伤映射算法,可通过获取定期检测数据进行时间序列损伤分析。本文的其余部分组织如下。第2节描述了用于评估垂直隧道损伤的无人融合数据扫描系统的发展。第3节描述了基于三维数字地图的自动损伤映射算法的发展。随后,在第4节中对所提出的系统和算法进行了原位垂直型隧道的实验验证。最后,本文在第5节和第6节进行了简要的讨论。

2. Development of unmanned fusion data-scanning system for vertical-type tunnel damage evaluation垂直隧洞损伤评估无人融合数据扫描系统研制

图1显示了用于垂直隧道检查的无人融合数据扫描系统,包括融合数据传感和控制单元。通过连接垂直扫描模块的绞车电缆,可以安装无人融合数据扫描系统。为了最大限度地减少无人融合数据扫描系统在扫描过程中的振动,在系统周围的四个位置安装了导丝和基板。然后,专家可以使用计算机远程控制该系统,而无需实际进入垂直型结构的目标表面。当专家激活与垂直扫描模块和融合数据传感单元同步的控制单元时,控制单元通过发送适当的触发信号激活融合数据传感单元上的多个摄像头、2d激光雷达和led频闪灯模块。同时,悬挂在绞车缆绳上的无人融合数据扫描系统使用遥控绞车电机扫描目标结构的表面(上下)。然后,无人驾驶的融合数据扫描系统带着摄像头沿着垂直隧道移动二维激光雷达同时记录隧道的表面情况。根据摄像机的视场,安装多个摄像机覆盖ROI区域。在融合传感器采集数据的同时,与视觉摄像头同步的led频闪灯模块精确定时工作,通过曝光时间优化,在垂直隧道低照度条件下有效捕获目标图像,无闪烁效应。采集的图像和激光雷达数据被即时传输并保存为原始视觉(vr)图像和点云数据(pr)在控制计算机中。

3. Development of 3D digital map-based automated damage mapping algorithm基于三维数字地图的自动损伤制图算法的开发

本节介绍如何在垂直型隧道的整个ROI范围内自动建立三维数字损伤图。总体的基于三维数字模型的自动损伤映射算法如图2所示。由于整个垂直隧道中采集的vr图像和pr数据量很大,因此需要对融合数据进行预处理,匹配并选择最优数据,以减少计算开销。使用基于深度学习的自动损伤评估算法对最优图像中的损伤进行自动评估。同时,利用基于固定相机姿态的三维建模算法,可以重建三维数字地图。最后,根据提取的相机姿态,将图像中的损伤映射到三维数字图中,生成三维数字损伤图。每个步骤的细节如下。

3.1. Step 1: Data preprocessing

当无人驾驶融合数据扫描系统近距离扫描垂直隧道表面以评估微尺度损伤时,将获得大量随时间和空间变化的数据。此外,pr被记录的频率大约是其图像的100倍。因此,利用整个扫描数据重建三维数字损伤图会产生巨大的计算成本。因此,首先将vr图像与pr进行数据匹配,然后使用本文提出的最优数据选择算法选择最优数据,以减少数据量。

3.1.1. Fusion data matching融合数据匹配

无人融合数据扫描系统获取融合数据后,如图3(a)所示,由于数据量的差异,vr图像和pr图像无法精确匹配。为了匹配vr图像和pr,根据无人融合扫描系统安装传感器之间的距离,选择vr图像对应的pr,如图3(b)所示。为了精确地量化损伤,可以计算相机与目标结构之间的工作距离(dw)(根据传感器安装的位置计算,不具有普适性)

3.1.2. Optimal data selection algorithm最优数据选择算法

为了选择最优数据有效建立三维数字损伤图,提出了一种最优数据选择算法[30]。在此过程中,如图4所示,首先在多个摄像机中选择一个参考摄像机。这两幅图像(vp和vq)是从参考相机依次获取的vr图像中选择的。然后,利用尺度不变特征变换(sift)算法对两幅图像提取的特征进行特征匹配。由于无人融合数据扫描系统在垂直隧道中上下移动,jang等人[5]提出的特征控制算法有效地消除了不匹配的特征。然后,计算匹配向量的平均高度(μ)和宽度(ν),根据重叠比(r)选择vq, r定义如下:

其中h和w分别表示vr图像的高度和宽度分辨率。当r达到预先设定的重叠比阈值(rth)时,自动选择vp和vq。通过循环的迭代选择最优视觉图像,直到最后的虚拟现实图像。当选择图像时,与图像同步的pr会自动保存为最佳点云数据(po)

3.2. Step 2: Deep learning-based automated damage evaluation第二步:基于深度学习的自动损伤评估
3.2.1. Development of size-dependent semantic segmentation network for multi-damage detection多损伤检测中尺寸依赖语义分割网络的开发

为了自动检测vo图像中的多个损伤,分别建立了考虑损伤类型的尺寸依赖语义分割网络。由于需要近距离获取垂直隧道的高分辨率图像来量化微尺度裂缝,因此在获取的图像中,区域型损伤如风化、锈蚀、剥落占据了很大一部分。相比之下,裂缝非常薄,占据了所获取图像的一小部分,导致高分辨率图像中这两种损伤类型的像素区域差异至少为100倍。当在单个网络中同时训练两种类型时,这种物理差异可能会引起严重的类不平衡问题。为了有效地解决这种规模差异,针对两种不同的损伤类型开发两个单独的网络可以提高可探测性。区域型损伤网络的训练类别具有很好的损伤特征,因此可以对区域型损伤进行联合训练。特别是螺纹钢暴露等级通常同时存在剥落和锈蚀等级,因此即使螺纹钢暴露等级所占区域较小,也要考虑相关性,将其一起进行训练。

裂纹损伤网络的分类包括裂纹、类裂纹和边缘。在此,对非裂纹特征进行训练以提高裂纹检测性能。没有实际裂缝的物理深度,但具有相似像素强度的类裂缝特征,如施工缝、脏表面、划痕等,是引起正面误报警的裂缝。边缘特征是指结构的边缘线有较大的色差的情况,如天空与结构的边界被误分类为裂缝。区域破坏网的类别包括钢筋暴露、锈蚀、剥落和剥落。这里,剥落类包括有钢筋暴露和无钢筋暴露的情况,如剥落和弹出。具有代表性的训练图像如附录a所示。在裂纹与区域损伤检测结果的拼接过程中,裂纹分割区域构成了损伤层次的最优先级。本研究基于resnet-50骨干网开发了语义分割网络架构deeplab v3 +[31],如图5所示。本研究采用amd ryzen thread -dripper 3970x CPU和nvidia geforce RTX 2080 ti gpu实现。需要说明的是,我们采用了11gb内存,4352核的高性能RTX 2080 ti gpu来加速网络训练和测试。总共使用了2947张图像进行学习,其中裂缝网络学习使用了1759张,区域型网络学习使用了1188张。训练与验证的比率Images设置为9:1。训练图像通过水平或垂直翻转增强,每个历元的概率为50%。训练图像大小、epoch、mini-batch大小、学习率、优化器和损失函数分别为960 × 1280、100、10、10e。

3.2.2. Damage quantification algorithm损伤量化算法

由于裂纹量化的复杂性,本节对检测到的损伤(vd)图像中的裂纹区域型损伤分别采用不同的量化算法进行量化,如图6所示。为了使用所开发的损伤分割网络精确地量化vd图像中检测到的裂纹段内的裂纹,需要将裂纹分割区域的二值区域替换为彩色图像[32]。利用二值图像进行欧氏距离变换和骨架化处理提取裂纹形状并计算相应的裂纹长度和宽度。两个像素之间的欧几里得距离,即p和q,可以表示为[33]:

式中,a表示二值图像中以1表示的一组黑色像素,ac表示a的补集,则可得到欧式距离变换裂纹(ce)图像:

然后可以对二值图像进行骨架化,从而可以仅提取物理上表示相邻像素之间线性连接的裂纹边界。随后,使用形态学薄ning算法获得骨架化裂纹图像。那么,物理计算裂纹长度和宽度的比例因子s可由如下针孔相机方程[32]得到:

式中dw为摄像机镜头与目标结构表面的工作距离,l为摄像机传感器的尺寸,p为图像像素分辨率,f为摄像机焦距。最后得到裂纹量化结果(qc)如下:

然后,将分割区域的高度与宽度相乘,得到区域损伤量化结果qa,如下:

3.3. Step 3: Fixed camera pose-based 3D modeling and damage mapping algorithm基于固定摄像机姿态的三维建模和损伤映射算法

由于无人驾驶的融合数据扫描系统在垂直隧道中上下移动,相机的坐标系统和姿态是固定的。此外,所获得的视觉图像之间的关系是已知的,因为垂直隧道表面的时间和空间变化的图像是顺序获得的。因此,可以使用两个已知的约束构造三维数字损伤图,如图7所示。基于固定相机姿态的三维建模算法,利用尺寸相关语义分割网络对vo图像进行损伤检测时,可以同时生成三维数字地图。

首先,vo I (I = 1…Ni)可以用sift算法提取,如下:

式中,fi为提取的特征,x为特征点,f为特征描述符,r2为二维空间。Vo I可以根据数据记录自动配对,具体如下:

其中c为图像对。利用特征匹配算法对已经耦合的特征进行序列匹配,将特征点投影到三维空间中。然后使用已知的固定摄像机姿态(p = {pi∈se(3) |i = 1…)将匹配的特征点投影到3d空间中。倪})。其中se(3)是李群中的一个三维特殊欧几里得群。通过将二维空间中的特征点投影到三维空间中,可以得到一个初始的稀疏点云模型(xk∈r3, (k = 1…nx)。操作振动、不规则表面条件、场地条件不确定性所产生的特征投影误差可以最小化如下:

其中ρ表示损失函数,π表示将特征点投影到图像空间的函数。Eq .(10)可以基于levenberg-marquardt方法进行优化,即在配准整个图像时,保存三维重建过程中自动获得的最终相机姿态(pf),以映射分割后的损伤。利用eq.(8)提取vd I特征,生成初始三维数字损伤图,如下所示:

其中ζ表示使用相机姿态和输入图像进行三维重建的函数。随后,利用泊松曲面网格生成算法生成网格模型,并通过纹理映射完成三维重建。

4. Experimental validation using in-situ vertical-type tunnels原位垂直隧洞试验验证

本节介绍通过原位垂直隧道试验验证的实验结果。在两个不同的测试平台上展示了系统的实现细节,并对相应的测试结果进行了定量分析。

本研究中仅适用于深度小于20 m的垂直隧道,

6. Conclusions

本文提出了一种基于深度学习的基于无人融合数据扫描系统的垂直型隧道三维数字损伤图建立技术。该技术已通过韩国两条垂直式地铁隧道的现场试验成功验证。所提出的深度学习网络成功验证了平均准确率和召回率分别为90.89和98.18%。特别是,采用新颖的基于固定相机姿态的三维建模和损伤映射算法精确地重建了三维数字损伤图。该技术将作为垂直隧道数字孪生的核心技术之一。作为后续研究,所提出的系统目前正在应用于其他垂直型结构,如大型桥梁的内部公路桥墩及通气孔。在此基础上,对时间序列三维数字损伤图的建立进行数字模型更新研究,并将其扩展到损伤预测研究。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++动态规划 最长公共子序列】1035. 不相交的线|1805

本文涉及知识点 C动态规划 LeetCode1035. 不相交的线 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足: nums1[i] nums2[j] 且绘制的…

SELINUX和防火墙

SELINUX 简介: SELinux通过对进程和文件的访问进行精细的控制和限制,可以在系统级别上实现强制访问控制,即使是root用户也无法绕过这种控制。它基于策略规则来确定哪些进程可以访问哪些文件,从而有效地减少了系统遭受恶意攻击的…

计算机毕业设计Python+大模型农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

VUE实现点击导航栏进行切换右边内容

首先看看效果&#xff0c;左边导航栏进行切换&#xff0c;右边内容进行切换 代码如下 <div><el-tabs :tab-position"tabPosition" style"height: 800px;"><el-tab-pane label"通知通告">通知通告</el-tab-pane><el-t…

Power BI - Get Data from SQLite

1.简单介绍 Power BI支持连接的数据源很多&#xff0c;比如SQL Server, PostgreSQL,MYSQL, Dataverse等。如果要连接小型数据源Sqlite&#xff0c;由于没有内置的直接连接Sqlite选项&#xff0c;需要使用ODBC driver来进行连接 这边尝试一下使用Power BI去连接本地Sqlite数据…

DAY63||拓扑排序精讲 |dijkstra(朴素版)精讲

拓扑排序精讲 117. 软件构建 题目描述 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文件编号从 0 到 N - 1&#xff0c;在这些文件中&#xff0c;某些文件依赖于其他文件的内容&#xff0c;这意味着如果文件 A 依赖于文件 B&#xff0c;则必须在处理文件 A 之前处理文…

爬虫补环境案例---问财网(rpc,jsdom,代理,selenium)

目录 一.环境检测 1. 什么是环境检测 2.案例讲解 二 .吐环境脚本 1. 简介 2. 基础使用方法 3.数据返回 4. 完整代理使用 5. 代理封装 6. 封装所有使用方法 jsdom补环境 1. 环境安装 2. 基本使用 3. 添加参数形式 Selenium补环境 1. 简介 2.实战案例 1. 逆向目…

DICOM图像解析:深入解析DICOM格式文件的高效读取与处理(续)

目录 一、DICOM图像高效解析 1、处理压缩的像素数据 常见压缩算法及其处理方法 解压缩示例 2、多帧图像的处理 多帧图像解析流程 三维图像的体绘制 3、序列和嵌套数据元素 序列数据的解析 二、错误处理与数据验证 常见错误类型 错误处理策略 三、使用现有的DICOM库…

「QT」高阶篇 之 d-指针 的用法

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

如何绑定洛谷账号

首先注册洛谷 然后登陆 点击键盘F12 点击加号 点击应用程序 在name中找到__client_id和_uid 再复制相应的value到下图右侧 然后点击confirm即可 愿我们都能成为我们想要去成为的人&#xff01; 花会沿路盛开&#xff0c;我们以后的路也会&#xff01; 追风赶月莫停留&…

5G CPE:为什么活动会场与商铺的网络成为最新选择

在快节奏的现代社会中&#xff0c;无论是举办一场盛大的活动还是经营一家繁忙的商铺&#xff0c;稳定的网络连接都是不可或缺的基石。然而&#xff0c;面对复杂的布线难题或高昂的商业宽带费用&#xff0c;许多场所往往陷入两难境地。幸运的是&#xff0c;5G CPE&#xff08;Cu…

【ACM独立出版|高校主办】第四届信号处理与通信技术国际学术会议(SPCT 2024)

第四届信号处理与通信技术国际学术会议&#xff08;SPCT 2024&#xff09; 2024 4th International Conference on Signal Processing and Communication Technology 2024年12月27-29日 中国深圳 www.icspct.com 会议亮点&#xff1a; 1、ACM独立出版&#xff0c;EI稳…

CPU的性能指标总结(学习笔记)

CPU 性能指标 我们先来回顾下&#xff0c;描述 CPU 的性能指标都有哪些。 首先&#xff0c;最容易想到的应该是 CPU 使用率&#xff0c;这也是实际环境中最常见的一个性能指标。 用户 CPU 使用率&#xff0c;包括用户态 CPU 使用率&#xff08;user&#xff09;和低优先级用…

python 同时控制多部手机

在这个智能时代,我们的手机早已成为生活和工作中不可或缺的工具。无论是管理多个社交媒体账号,还是处理多台设备上的事务,如何更高效地控制多个手机成为了每个人的痛点。 今天带来的这个的软件为你提供了一键控制多部手机的强大功能。无论是办公、娱乐,还是社交,你都能通过…

实用教程:如何无损修改MP4视频时长

如何在UltraEdit中搜索MP4文件中的“mvhd”关键字 引言 在视频编辑和分析领域&#xff0c;有时我们需要深入到视频文件的底层结构中去。UltraEdit&#xff08;UE&#xff09;和UEStudio作为强大的文本编辑器&#xff0c;允许我们以十六进制模式打开和搜索MP4文件。本文将指导…

java项目-jenkins任务的创建和执行

参考内容: jenkins的安装部署以及全局配置 1.编译任务的general 2.源码管理 3.构建里编译打包然后copy复制jar包到运行服务器的路径 clean install -DskipTests -Pdev 中的-Pdev这个参数用于激活 Maven 项目中的特定构建配置&#xff08;Profile&#xff09; 在 pom.xml 文件…

【扩散——BFS】

题目 代码 #include <bits/stdc.h> using namespace std; const int t 2020, off 2020; #define x first #define y second typedef pair<int, int> PII; int dx[] {0, 0, 1, -1}, dy[] {-1, 1, 0, 0}; int dist[6080][6080]; // 0映射到2020&#xff0c;2020…

C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题

文章目录 1. 什么是 Short Write 问题&#xff1f;2. 如何解决 Short Write 问题&#xff1f;2.1 方法 1&#xff1a;将 Socket 设置为阻塞模式2.2 方法 2&#xff1a;用户态维护发送缓冲区 3. 用户态维护发送缓冲区实现3.1 核心要点3.2 代码实现3.3 测试程序 参考文档 1. 什么…

数据网格能替代数据仓库吗?

一、数据网格是什么&#xff1f; 数据网格&#xff1a;是一种新兴的数据管理架构和理念&#xff0c;主要用于解决大规模、复杂数据环境下的数据管理和利用问题。 核心概念&#xff1a; 1、数据即产品&#xff1a;将数据看作一种产品&#xff0c;每个数据域都要对其生产的数据负…

力扣经典面试26题删除有序数组中的重复项1

给你一个非严格递增排列的数组nums&#xff0c;请你原地删除重复出现的元素&#xff0c; 使每个元素 只出现一次&#xff0c;返回删除后数组的新长度。元素的相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k&#xff0c; 你需要做以…