基于斜坡单元的机器学习模型预测滑坡易发性,考虑条件因素的异质性
1、引用
Chang Z, Catani F, Huang F, et al. Landslide susceptibility prediction using slope unit-based machine learning models considering the heterogeneity of conditioning factors[J]. Journal of Rock Mechanics and Geotechnical Engineering, 2023, 15(5): 1127-1143.
LSP:Landslide Susceptibility Mapping(滑坡易发性制图)
LSI:Landslide Susceptibility Index(滑坡易发性指数)
STD:Standard Deviation(标准差)
2、 要点
- 通过多尺度分割(MSS)方法提取的斜坡单元适用于滑坡易发性预测(LSP);
- 利用均值、极差和标准差来反映条件因素的异质性;
- 变体斜坡机器学习模型比普通斜坡机器学习模型具有更高的滑坡易发性预测精度;
- 基于斜坡单元的机器学习模型比基于网格单元的机器学习模型具有更强的工程实用性。
3、评价单元选取
栅格单元和斜坡单元是两种常用的制图单位。
栅格单元是最常见的评价单元,因为不同地理区域的LSP数学建模和计算很简单。
然而,栅格单元与滑坡相关的地貌信息之间没有直接的物理关系。由于潜在的滑坡边界难以准确确定,基于栅格单元的LSP结果在实际应用中可能会产生一些弱点。
大规模提高斜坡单元提取的自动化和效率是一项具有挑战性的任务。
一种图像分割方法,即多尺度分割(MSS)实现了斜率单位的自动提取。
4、模型
多层感知机(MLP)和随机森林(RF)
Grid-RF和Grid-MLP Slope-RF和Slope-MLP 变体Slope-RF和变体Slope-MLP
5、多尺度分割法(MSS)——黄发明
Huang F, Tao S, Chang Z, et al. Efficient and automatic extraction of slope units based on multi-scale segmentation method for landslide assessments[J]. Landslides, 2021, 18: 3715-3731.
MSS方法是黄发明提出的一种自动提取斜坡单元的新方法。该方法使用自下而上的区域合并分割算法来实现图像对象之间的最小均匀性和图像对象内部的最大均匀性。
MSS方法的基本原理是将具有相同特征(形状、颜色、纹理)的像素组合成一个图像对象,以实现斜坡单元划分。
选择合适的输入图像并确定合理的分割参数组合对分割结果起着重要作用。对于前者,分割结果取决于输入数据的质量和特征,例如空间分辨率、图像量化和场景特征(Hölbling et al., 2015)。根据斜坡单元的定义,选择区域坡向和阴影地貌图作为输入图层,然后组合成多波段影像。对于滑坡,将传统的试错法与滑坡的形态和尺度信息相结合,可以确定包括规模、形状和密实度参数在内的参数组合。有关使用 MSS 方法提取坡度单位的更多详细信息,请参见 Huang et al. (2021)。
6、斜坡单元内条件因子的异质性
通常,斜坡单元内的条件因子信息由平均值表示。这可能会导致所使用的多变量模型出现一些错误和过度简化,因为无法充分考虑斜坡单元内条件因素的异质性。
针对这一缺点,根据 Catani et al. (2013) 的研究结果,可以通过诉诸每个条件因子的均值、范围和标准差 (STD) 值的描述性统计变量来表征条件因子的内部变化,以获得更合理和丰富的基于斜坡单元的条件因子。
斜坡单元内条件因子的异质性表示条件因子信息在斜坡单元尺度上的可变性和差异性。本研究发现,一些地形和水文条件因子(如高程、坡度、剖面曲率等)在不同位置表现出较高的可变性,而岩性和坡向等条件因子在斜坡单元上通常变化很小。对于基于栅格单元的条件因子,每个栅格单元对于每个条件因子都有一定的值,并且不同位置的栅格单元之间存在一些异质性。但是,对于基于斜坡单元的条件因子,每个斜坡单元中可能存在数百个具有不同条件因子值的格网单元。因此,在某个斜坡单元内,这些网格单元之间存在显著的异质性。
目前,基于 slope units 的条件因子的值通常通过 ArcGIS 10.2 软件中的分区统计功能由每个坡度单位内所有格网单位值的平均值和/或众数值分配。因此,条件因子的异质性没有得到充分考虑,导致条件因子的信息丢失。因此,为了丰富局部尺度信息并拟合基于坡度单元的条件因子的异质性,将基于坡度单元的条件因子的范围值和 STD 值的描述性统计变量视为 LSP 模型的输入变量。
范围变量定义为每个坡度单位内每个基于格网单位的条件因子的最大值和最小值之间的差值,可以反映每个坡度单位中条件因子的变化。
同时,STD 变量可以反映每个坡度单位中基于格网单元的条件因子值的离散程度。
获得范围和 STD 变量的过程如图 2 所示 。在这个过程中,对于某个坡度单元中的不完全网格单元,如果坡度单元包含不完整网格单元的中心点,则以该坡度单元考虑条件因子数据(图 2 中的绿点)。否则,不考虑它(图 2 中的红点)。
Zonal Statistical Function in ArcGIS:ArcGIS 中的分区统计函数
7、滑坡清单、提取斜坡单元、条件因子
根据野外调查和滑坡清查结果,研究区 1970 年至 2003 年共发生 235 次滑坡(图 4)。这些滑坡可视为浅层滑坡,具有中小尺度和群体发生的特点。滑坡体主要由第四纪冲积层组成,破坏模式主要为平移和旋转滑动(Hungr et al., 2013)。滑坡面积主要在 4.2 × 103 m2 和 3.2 × 104 m2 之间变化,平均面积约为 7.6 × 103 m2。滑坡的厚度在 2.8 m 到 8 m 之间。位于北部地区的衡水镇和界坝镇滑坡数量最多,而位于东部地区的龙沟镇滑坡数量最少。此外,浅层滑坡主要由强降雨引发。
本研究从网格分辨率为 8.9 m 的数字高程模型中提取区域坡向和阴影地貌图(图 5),然后作为 MSS 方法的输入数据。 当使用改进的试错法将比例、形状和紧凑度参数分别设置为 20、0.8 和 0.8 时,可以获得最合适的分割结果。有关确定这些适当参数的更多详细信息,请参见 Huang et al. (2021)。崇义县有 53,055 个斜坡单元。此外,为了评估 MSS 方法的提取性能,以案例 1、案例 2 和案例 3 三个案例作为研究案例,分别代表丘陵、过渡带和高山(图 5)。从图 6 中可以看出,无论在高山还是丘陵地区,MSS 方法都具有出色的提取性能,可以准确识别丘陵之间的差异,从而完美地实现坡度单元的提取。
条件因子可以反映边坡的自然环境条件并影响边坡稳定性,可分为地形、地质、水文、土地覆盖和人类活动因子(Reichenbach et al., 2018)。共有 15 个基于坡度单位的条件因素,包括高程、坡度、坡向、平面曲率、剖面曲率、地势幅度、斜坡单元形态、岩性、土壤厚度、地形湿度指数、到河流的距离、排水密度、归一化差值植被指数 (NDVI)、归一化差值建筑指数 (NDBI) 和道路密度(Catani et al., 2013;Sur等 人,2020 年;Tang et al., 2020)。
【斜坡单元形态】用形状指数值和紧密度参数两个指标来定量描述。形状指数定义为周长的平方与面积的比率。越平坦或越有条纹,形状索引值越大。形状索引值大于 28 表示坡度单位的长宽比约为 5:1。 图 8a 显示形状指数范围为 13.98 至 254.94。紧密度参数定义为坡度单位的最小封闭矩形面积与其包含的像素数的比率。紧密度值越大,坡度单位越不规则。 图 8b 显示紧密度值从 1.08 到 2.2 不等。
【土壤厚度】决定了崇义县浅层滑坡的滑坡表面、大小和体积。在区域尺度绘制土壤厚度的方法包括基于物理的、经验统计、插值和机器学习方法。其中,Kriging 等插值方法已广泛应用于不同景观中,用于基于采样点数据的土层厚度估算。对 235 例滑坡的土厚度进行了调查,并记录为样本数据。200 个样本用于估计土壤厚度,35 个样本用于验证估计性能。此外,均值误差和均方根误差被应用于评估估计性能和效率。因此,以坡度为单位,该研究区域的土壤厚度范围为 2.84 m 至 7.9 m
通常,基于坡度单位的条件因子分为连续类别和离散类别。对于基于连续坡度单位的条件因子,当考虑基于坡度单位的条件因子的内部变化时,使用坡度单元内基于网格单位的条件因子值计算每个坡度单元的平均值、范围和 STD 值(图 2)。因此,对于每个基于连续斜率单位的条件因子,有三个变量可用于 LSP。每个坡度单位中网格单元的平均值计算为基于坡度的常规条件因子(Slope-RF和Slope-MLP),而每个坡度单元中网格单元的范围和 STD 值作为基于可变坡度单元的条件因子计算。所有这些基于变值率单位的条件因子都用作基于变值的 RF/MLP 模型的输入变量(variant Slope-based RF/MLP)。
对于一些基于坡度单元的离散条件因子,如岩性、坡向、距路面和到河流的距离,不可能采用每个基于坡度单元的制条件因子的范围和 STD 值。
每个离散条件因子的众数值用作相应的基于坡度的条件因子的值。从上述分析中,原来的 15 个基于坡度单位的条件因子被扩展为总共 38 个扩展的基于坡度单位的条件因子,用于 LSP 建模。
8、基于斜坡单元的调节因子对滑坡的影响
使用自然断点法将基于坡度单位的条件因子分为八类(Huang et al., 2020)(岩性按地层构型划分,坡向分为九类),并分别计算均值、范围、标准差的FR。
分析38个基于扩展斜坡单元的条件因子之间的相关性,以避免这些变量之间多重共线性的影响。文献表明,当相关系数的绝对值小于 0.3 时,这两个变量被认为可以忽略不计(Mukaka,2012 年)。共有22个基于扩展坡度单位的条件因子,相关性可以忽略不计(相关系数的绝对值小于0.3),包括高程(平均值和范围变量)、坡度(平均值、范围和STD变量)、剖面曲率(平均值变量)、平面曲率(平均值、范围和STD变量)、 地形湿度指数(平均变量)、NDBI(平均变量)、NDVI(平均变量)、道路密度(平均和范围变量)、排水密度(平均和范围变量)、土壤厚度(平均变量)、形状指数(平均变量)、紧凑度(平均变量)、坡向、岩性和到河流的距离。因此,这 22 个基于扩展斜率单位的条件因子用作输入变量,以使用变体 Slope-RF 和 Slope-MLP 模型实现 LSP。
本研究中,共有 744 个发生过滑坡的滑坡单元被标记为 1,相同数量的非滑坡单元(从无滑坡区域随机采样)被标记为 0。然后,将包含基于斜率单位的条件因子和标注数据的数据集随机分化为训练数据集和测试数据集,比例为 70%/30%。
在 LSP 建模过程中,选择 15 个基于斜率单位的条件因子作为输入变量来构建传统的斜率机器学习模型,并使用 22 个基于扩展斜率单元的条件因子作为输入变量来构建变体斜率机器学习模型。训练样本(滑坡和非滑坡样本)的每个条件因子的 FR 值用作构建 RF 和 MLP 模型的基本输入数据。
9、结果
使用自然断点法将LSI分为五类,这是一种根据数值统计分布的分类方法,通过最大化不同类之间的差异。
此外,与 Grid-RF 和 Grid-MLP 模型的 LSM 相比,可以发现基于斜率单元的 LSM 比基于网格单元的 LSM 具有更强的实际应用。例如,Slope 机器学习模型可以准确识别并在实践中轻松识别并发现具有非常高敏感性等级的滑坡的位置和范围。此外,使用斜坡机器学习模型也可以避免网格机器学习模型中具有非常高滑坡敏感性等级的孤立网格单元引起的误差。
10、LSP的验证
ROC曲线的AUC值
LSP 模型的接收器工作特性曲线如图 11 所示 。变体 Slope-RF、Slope-RF、Grid-RF、变体 Slope-MLP、Slope-MLP 和 Grid-MLP 模型的 AUC 值分别为 0.875、0.827、0.896、0.843、0.805 和 0.826。可以得出结论,变体 Slope-RF 和变体 Slope-MLP 模型的预测性能优于 Slope-RF 和 Slope-MLP 模型。Grid-RF 模型具有比 Grid-MLP 模型更好的预测性能。同时,揭示了 RF 模型比 MLP 模型具有更好的预测性能。
FR精度验证
MLP 模型的FR值从极高易发性等级到极低易发性等级逐渐降低。然而,RF 模型的FR呈现出极高易发性等级的FR显著高于其他四个易发性等级的特点。此外,变异坡度 - RF(variant Slope - RF)、坡度 - RF(Slope - RF)、网格 - RF(Grid - RF)、变异坡度 - MLP(variant Slope - MLP)、坡度 - MLP(Slope - MLP)和网格 - MLP(Grid - MLP)的FR精度分别为 0.958、0.948、0.974、0.762、0.751 和 0.77。因此,变异坡度机器学习模型的滑坡易发性预测(LSP)准确率似乎优于坡度机器学习模型,这表明考虑坡度单元内条件因素内部变化的滑坡易发性预测更符合实际观测。还可以发现,基于坡度单元的滑坡易发性预测准确率与基于网格单元的相近。此外,对比结果还显示,根据所采用的标准,RF 模型的预测性能优于 MLP 模型。
10、讨论
RF和MLP模型的LSP性能比较
通过AUC值和FR精度的验证结果表明,RF模型的LSP性能比MLP模型好得多。
LSI值的频率分布
下图显示了变体 Slope-RF、Slope-RF、变体 Slope-MLP 和 Slope-MLP 模型的 LSI 分布及其相应的平均值和 STD 值。平均值反映了 LSI 的集中化趋势,STD 值反映了 LSI 的分散程度。
可以看出,基于斜率的 RF 和 MLP 模型的 LSI 分布模式符合近似对数正态分布(图 12 中的红线)。RF 和 MLP 模型计算的 LSI 主要属于低和极低滑坡易发性类别,分散程度较低。此外,平均值和 STD 值表明,变体 Slope-RF 和变体 Slope-MLP 模型比 Slope-RF 和 Slope-MLP 模型具有更好的 LSP 性能。例如,在 RF 模型的结果中,变体 slope-RF 模型和 Slope-RF 模型的平均值接近;但是,变体 Slope-RF 模型的 STD 值大于 Slope-RF 模型的 STD 值。
新滑坡的验证分析
在 2009 年至 2019 年期间,我们在现场调查了 19 起新的滑坡。然后,选择由变体 Slope-RF、Slope-RF、变体 Slope-MLP 和 Slope-MLP 模型生成的 LSM,与这些新的滑坡进行比较。
具有非常高和高滑坡易感性水平的新滑坡占所有新滑坡的比例定义为预测精度。变体 Slope-RF、Slope-RF、变体 Slope-MLP 和 Slope-MLP 模型的预测精度分别为 0.895、0.798、0.895 和 0.798。结果表明,在变体 Slope-RF/MLP 模型中,在滑坡易发性等级非常高的斜坡单元中发生的新滑坡比 Slope-RF/MLP 模型多。因此,可以得出结论,变体 Slope-RF 模型的 LSP 结果具有更高的适用性和准确性,可用于支持滑坡防治的决策过程。
variant slope,slope and grid-machine learning models的LSP结果比较
Grid-RF 模型的 AUC 值略高于 Slope-RF 模型。因为在使用网格单位时,用于构建 LSP 模型的标注滑坡样本比使用坡度单位的样本多。比较基于网格和斜率的机器学习模型的 LSP 结果,可以发现,在基于网格的机器学习模型中,一些敏感性水平较低和非常低的区域通常具有几乎孤立的网格单元,具有非常高的敏感性水平;但是,在基于 Slope 的机器学习模型中可以避免这种现象。因此,仅使用 AUC 值比较 LSP 结果是不完整且不确定的。
通过对 LSP 结果的综合对比分析,可以发现,与网格单元相比,斜率单元更适合作为 LSP 的映射单元。主要原因是斜率机器学习模型的 LSM 可用于在斜坡或流域尺度上准确确定具有非常高的磁化率等级的确定位置和边界,而网格机器学习模型的 LSM 表现出离散和区分差的特征。另一个原因是,通过将数百万个网格单元转换为数万个坡度单元,减少了 Slope 机器学习模型的计算负担(Camilo et al., 2017)。此外,坡度单元可以有效地表达滑坡与区域形态要素之间的物理关系,与网格单元相比,可以保证条件因子信息完整性的准确表达(Wang et al., 2005)。
与 Slope 机器学习模型相比,变体 Slope 机器学习模型在 LSP 方面具有更多优势。事实上,一个坡度单元可能包含数十个或数百个网格单元;因此,当仅使用每个基于格网单位的条件因子的平均值作为基于坡度单位的条件因子的值时,它是有偏差且不完整的。同时,基于坡度单元的条件因子的非均质性特征不能通过网格单元的平均值来综合考虑。此外,在变体 Slope-machine learning 模型中,范围和 STD 值可以有效反映每个基于斜率单位的条件因子的异质性。在这种情况下,可以表征基于斜率单元的条件因子的更多异质性特征,以获得更真实、更准确的 LSP 结果。
相关文章:
基于斜坡单元的机器学习模型预测滑坡易发性,考虑条件因素的异质性
1、引用 Chang Z, Catani F, Huang F, et al. Landslide susceptibility prediction using slope unit-based machine learning models considering the heterogeneity of conditioning factors[J]. Journal of Rock Mechanics and Geotechnical Engineering, 2023…...
Node.js调用DeepSeek Api 实现本地智能聊天的简单应用
在人工智能快速发展的今天,如何快速构建一个智能对话应用成为了开发者们普遍关注的话题。本文将为大家介绍一个基于Node.js的命令行聊天应用,它通过调用硅基流动(SiliconFlow)的API接口,实现了与DeepSeek模型的智能对话…...
实战 - 编写一个最简单的 Hello World 内核模块
实战 - 编写一个最简单的 Hello World 内核模块 在嵌入式开发中,编写 Linux 内核模块是设备驱动开发的重要基础。内核模块可以帮助我们在不修改内核源码的情况下扩展内核功能。本篇博客将指导你如何编写并运行一个简单的 Hello World 内核模块,让你快速…...
面向对象程序设计-实验七
6-1 计算捐款总量 这里需要设计一个捐款人类Donator及一个相关函数getMaxName( ),Donator类中包含捐款人的姓名及其捐款额 代码清单: #include <iostream> using namespace std; class Donator { private: string name; float money; //单位&…...
JVM组成
JVM是什么? JVM(Java Virtual Machine):Java程序的运行环境(java二进制字节码的运行环境) 好处: 1.一次编写,到处运行 Java代码是如何做到一次编写,到处运行? 计算机的最底层是计…...
java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException
Java8升级到17之后, 启动报错, :LocalValidatorFactoryBean]: Factory method defaultValidator threw exception; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException 报错原因:这个错误通常是由于缺少 javax.xml.bind 相关的依赖引起…...
Electron 实现自定义系统托盘菜单
效果如下: 其实实现自定义托盘菜单的本质上,就是开一个新窗口,下面直接给出核心代码。 // 加载窗口 const loadWindow (example, path) > {if (is.dev && process.env[ELECTRON_RENDERER_URL]) {example.loadURL(process.env[EL…...
HCIA-路由器相关知识和面试问题
二、 路由器 2.1 关于路由器的知识 2.1.1 什么是路由器 路由器是一种网络层互联设备,主要用于连接多个逻辑上分开的网络,实现不同网络之间的数据路由和通信。它能根据网络层地址(如 IP 地址)来转发数据包,在网络中起…...
2.【BUUCTF】bestphp‘s revenge
进入题目页面如下 进行代码审计 <?php // 1. 高亮显示当前PHP文件的源代码,方便开发者查看代码内容,在生产环境中不应使用此函数,可能会导致代码泄露。 highlight_file(__FILE__);// 2. 定义变量 $b ,其值为字符串 implode &…...
wx060基于springboot+vue+uniapp的宿舍报修系统小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
使用 meshgrid函数绘制网格点坐标的原理与代码实现
使用 meshgrid 绘制网格点坐标的原理与代码实现 在 MATLAB 中,meshgrid 是一个常用函数,用于生成二维平面网格点的坐标矩阵。本文将详细介绍如何利用 meshgrid 函数生成的矩阵绘制网格点的坐标,并给出具体的代码实现和原理解析。 实现思路 …...
快速上手Vim的使用
Vim Linux编辑器-vim使用命令行模式下所有选项都可以带数字底行模式可视块模式(ctrlV进入) Linux编辑器-vim使用 Vim有多种模式的编辑器。能帮助我们很快的进行代码的编辑,甚至完成很多其他事情。 默认情况下我们打开vim在命令模式下&#x…...
HCIA项目实践---ACL访问控制列表相关知识和配置过程
十 ACL访问控制列表 1 策略的概念 在网络连通之后, 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上,匹配流量,执行相应的动作。(流量流入或者流出的接口并不是一个固定的概念而是一个相对的…...
机器学习核心算法解析
机器学习核心算法解析 机器学习是人工智能的核心技术之一,它通过从数据中学习模式并做出预测或决策。本文将深入解析机器学习的核心算法,包括监督学习、无监督学习和强化学习,并通过具体案例和代码示例帮助读者理解这些算法的实际应用。 1. …...
Oracle 12c 并发统计信息收集功能:技术解析与实践指南
一、功能背景与核心价值 在Oracle数据库的早期版本中,统计信息收集(如通过DBMS_STATS包)是串行执行的,即一次仅处理一个表或分区。对于大规模数据库或数据仓库环境,这种串行模式可能导致统计信息收集耗时过长…...
Android Studio:EditText常见4种监听方式
1. 文本变化监听(TextWatcher) TextWatcher 主要用于监听 EditText 里的文本变化,它有三个方法: beforeTextChanged(文本变化前)onTextChanged(文本正在变化时)afterTextChanged&a…...
【第2章:神经网络基础与实现——2.3 多层感知机(MLP)的构建与调优技巧】
在当今科技飞速发展的时代,人工智能早已不是一个陌生的词汇,它已经渗透到我们生活的方方面面,从智能语音助手到自动驾驶汽车,从图像识别到自然语言处理。而支撑这一切的核心技术之一,就是神经网络。作为机器学习领域的璀璨明星,神经网络已经在众多任务中取得了令人瞩目的…...
C++ 网络编程
1. socket Socket 是一种用于网络通信的编程接口,它提供了一种类似于文件描述符的接口,允许不同计算机之间的进程进行通信。Socket 可以工作在多种协议上,最常用的是 TCP/IP 和 UDP/IP 协议 1.1 UDP 1.1.1 概念 UDP(用户数据报协…...
SQL-leetcode—1683. 无效的推文
1683. 无效的推文 表:Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中,tweet_id 是这个表的主键。 content 只包含美式键盘上的字符&am…...
vue前端可视化大屏页面适配方案
参考了其他博主的代码,但发现会有滚动条,并且居中的位置不太对,所以改了一下css,修复了这些问题,直接上代码 <template> <div class"ScaleBoxA"><divclass"ScaleBox"ref"Sca…...
mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案
用的是【Mars3d】官网的uniapp的仓库,安卓没有问题,但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案:感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域,需要先把瓦片下载后转base64&…...
Dockfile语法
目录 dockerfile的作用 1. 构建 Docker 映像 2. 提高开发和运维效率 3. 版本控制 4. 提供可移植性和灵活性 使用示例 总结 dockerfile应该放的位置 为什么放在根目录? 例外情况 调用构建 dockerfile的基本结构和常用指令 基本结构和常用指令 示例 Dock…...
Nginx负载均衡
一。Nginx负载均衡的算法以及过程 二。nginx四层负载均衡的配置(四层) 1.vi /etc/nginx/conf.d/lb.conf 比较常见:weight:设置权重,backup:当其他主机全部用不了,这个作为备份 2.systemctl r…...
【C】初阶数据结构5 -- 栈
前面学习了两种最基本的数据结构 -- 顺序表和链表,接下来就可以基于这两种数据结构来实现其他数据结构了。其实,其他的数据结构的物理结构要么是数组,要么就是链表,所以学好顺序表和链表是学好其他数据结构的基础。接下里…...
Linux查找占用的端口,并杀死进程的简单方法
在Linux系统管理中,识别并管理占用特定端口的进程是一项常见且重要的任务。以下是优化过的步骤指南,帮助您高效地完成这一操作,同时提供了一个简洁的命令参考表。 Linux下识别并终止占用端口的进程 1. 探寻端口占用者 使用 lsof命令 lsof…...
为什么Pytorch中实例化模型会直接调用forward方法?
在 PyTorch 中,为何定义一个继承自 nn.Module 的自定义类并实现 forward 方法后,直接调用模型实例时,便会自动调用其 forward 方法?例如使用 output model(x) 这种形式。 因为自定义的神经网络类所继承的 nn.Module 类对 __call_…...
easyexcel快速使用
1.easyexcel EasyExcel是一个基于ava的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel 即通过java完成对excel的读写操作, 上传下载 2.easyexcel写操作 把java类中的对象写入到excel表格中 步骤 1.引入依赖 <depen…...
DeepSeek的出现会对百度有多大影响?
当DeepSeek与ChatGPT等大模型接管搜索入口,我们正见证百年一遇的信息革命。 01 传统搜索已死?AI助手正在重写游戏规则! 当DeepSeek与ChatGPT等大模型接管搜索入口,我们正见证百年一遇的信息革命。 就像汽车淘汰马车、触屏终结按键…...
生成格雷码
以下是Verilog实现格雷码的两种常见方法: 1. 二进制转格雷码(组合逻辑实现) module binary_to_gray #(parameter N 4 // 默认4位位宽 )(input [N-1:0] binary, // 二进制输入output [N-1:0] gray // 格雷码输出 );assign gray binary…...
【STM32】BootLoader和IAP详解
文章目录 0 前言1 基本概念2 BootLoader3 主程序相关配置4 相关理论:芯片启动与中断响应5 特殊情况:Cortex-M0内核的芯片 0 前言 最近在研究一个RT-Thread的项目,遇到很多之前没咋遇见过的STM32相关的知识,想着顺带也整体过一遍。…...
Threadlocal的实现原理
文章目录 ThreadLocal与Thread关系分析Threadlocal 不支持继承性lnheritableThreadLocal 类 ThreadLocal与Thread关系分析 由该图可知, Thread 类中有一个 threadLocals 和一个 inheritableThreadLocals , 它们 都是 ThreadLocalMap 类型 的变量 &#x…...
【Elasticsearch】多字段查询方式汇总
在 Elasticsearch 中,实现多字段查询的常见方式有以下几种,每种方式适用于不同的场景: --- ### 1. **multi_match 查询** - **用途**:在多个字段中执行同一查询,支持多种匹配策略。 - **关键参数**:…...
Unity使用反射进行Protobuf(CS/SC)协议,json格式
protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了,前端还搞完时,可使用此请求,可自测 响应(SC)_可自行构建一个响应,对数据进行测试 // 请求 使用物品 CS message ReqUseItem{optional Opcodes MessageID1[def…...
MySQL和SQL server的区别
在当今数据驱动的世界里,数据库技术的选择对于企业和个人开发者来说至关重要。MySQL 和 SQL Server 是两个广泛使用的数据库管理系统(DBMS),它们各自拥有独特的优势和适用场景。本文将深入探讨这两个数据库系统之间的区别…...
SpringMVC请求执行流程源码解析
文章目录 0.SpringMVC九大内置组件1.processRequest方法1.请求先到service方法2.然后不管是get还是post都会跳转到processRequest方法统一处理 2.doService方法3.doDispatch方法1.代码2.checkMultipart 4.核心流程 0.SpringMVC九大内置组件 1.processRequest方法 1.请求先到se…...
LabVIEW与小众设备集成
在LabVIEW开发中,当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求,而厂家虽然提供了配套软件,但由于系统中还需要控制其他设备且不能使用厂商的软件时,必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中࿰…...
docker-compose暴露端口,但其他主机无法访问问题。
问题描述:docker-compose暴露端口,但其他主机无法访问问题。 排障思路: 执行命令:ss -antlp | grep 80,发现端口正常监听0.0.0.0:80(ps:如果是127.0.0.1:80则只能本机访问同区域网段服务器执行…...
【MySQL】 基本查询(上)
欢迎拜访:雾里看山-CSDN博客 本篇主题:【MySQL】 基本查询(上) 发布时间:2025.2.14 隶属专栏:MySQL CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 目录 Create基…...
python 爬虫教程 0 基础入门 一份较为全面的爬虫python学习方向
文章目录 前言一、Python 爬虫简介二、环境搭建1. 下载 Python2. 安装 Python3. 安装必要的库 三、一个简单的爬虫示例四、应对网站反爬机制五、深入学习方向 前言 以下是一份较为全面的 Python 爬虫教程,涵盖基础知识、环境搭建、简单示例、反爬应对及深入学习方向…...
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证 一HttpsUtil工具类二SSLUtil工具类 一HttpsUtil工具类 package com.example.util;import javax.net.ssl.HttpsURLConnection; impo…...
你认为如何理解“约定大于配置”?
SpringBoot的“约定大于配置”(Convention Over Configuration)是一种核心理念,旨在简化开发过程,减少开发人员在配置上的繁琐工作。以下是对其含义的详细介绍: 一、定义与目的 定义:约定优于配置&#x…...
Linux 基础IO——重定向和缓冲区
目录 一、重定向 1、重定向的本质 2、使用 dup2 系统调用 (1)输出重定向 (2)追加重定向 (3) 输入重定向 二、缓冲区 1.理解缓冲区 2.缓冲区刷新问题 3.为什么要有缓冲区? 4.这个缓冲区在哪里ÿ…...
基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!
一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统,专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈,提供了丰富的功能…...
华为云之CodeArts IDE的使用体验
一、CodeArts IDE介绍 1.1 CodeArts IDE简介 CodeArts IDE定位华为云开发者桌面,是利用华为自研IDE内核技术,面向华为云开发者提供的智能化可扩展桌面集成开发环境(IDE),结合华为云行业和产业开发套件,实现…...
DeepSeek-VL2 环境配置与使用指南
DeepSeek-VL2 环境配置与使用指南 DeepSeek-VL2 是由 DeepSeek 公司开发的一种高性能视觉-语言模型(VLM)。它是 DeepSeek 系列多模态模型中的一个版本,专注于提升图像和文本之间的交互能力。 本文将详细介绍如何配置 DeepSeek-VL2 的运行环…...
超纯水设备的智能化控制系统为用户带来安全简便的操作体验
随着信息技术的发展,智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列,配备了高性能的PLC控制系统及人机交互界面,实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统,探讨它如…...
若依系统环境搭建记录
开源若依系统网上资料也很全的,本篇博文记录下自己搭建环境过程中遇到的一些问题。 配置Maven和编辑器选择 我懒得配置Eclipse了,直接用vscode作为编辑器,后面构建运行都用命令行。 配置数据库连接 按照mysql5.7按网上教程即可࿱…...
基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南
基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南 禅道镜像版本:easysoft/zentao:21.4 Redis版本:redis:6.2.0 Mysql版本:mysql:8.0.35 文章目录 **基于Docker-compose的禅道部署实践:自建MySQL与…...
为AI聊天工具添加一个知识系统 之102 详细设计之43 自性三藏 之3 祖传代码
本文要点 法宝和三藏 总括如下: 三藏[经/律/论] 法宝:法阵/法轮/法力(三“件” 证件 / 表件 / 物件 ,分别对应三藏:论藏/律藏/经藏 --反序)。“法宝”演示了 发轮轮转的法阵中物件具有的法力。 这里的“…...
fork: retry: No child processes-linux18
根据错误信息 fork: retry: Resource temporarily unavailable 和 sh: fork: retry: No child processes,这通常是因为系统资源不足(例如可用的进程数、内存或 CPU 限制)导致的。为了解决这个问题,您可以尝试以下几种方法…...