RLOAM/RO-LOAM
LOAM框架
LOAM框架包含三个步骤:
-
Scan registration:从原始激光扫描点数据中提取点特征。点特征是角点或者面点。
-
odometry estimation:在特征提取之后,特征点传递到里程计模块,通过特征匹配和优化步骤计算相对坐标变换即当前帧激光扫描数据相对前一帧激光扫描数据的位姿。里程计模块输出一个6-DoF位姿估计,作为建图模块的初始位姿估计。
-
mapping:
建图模块的第一步是地图准备,将地图的特征点排序并存储在一个立方体结构中,用于查找当前扫描点的特征与地图特征的对应关系。
J(q,t)=∑cS∈CSρ(∥fS(cS,q,t)∥2)+∑cC∈CCρ(∥fC(cC,q,t)∥2)J(q,t)=\sum_{c^{\mathcal{S}}\in C^{\mathcal{S}}}\rho(\Vert f^{\mathcal{S}}(c^{\mathcal{S}},q,t) \Vert^2)+\sum_{c^{\mathcal{C}}\in C^{\mathcal{C}}}\rho(\Vert f^{\mathcal{C}}(c^{\mathcal{C}},q,t) \Vert^2) J(q,t)=cS∈CS∑ρ(∥fS(cS,q,t)∥2)+cC∈CC∑ρ(∥fC(cC,q,t)∥2)CC={c1C,c2C,⋯,cnC}C^{\mathcal{C}}=\{c_1^{\mathcal{C}},c_2^{\mathcal{C}},\cdots,c_n^{\mathcal{C}}\}CC={c1C,c2C,⋯,cnC}是角点特征的特征点对应关系,CS={c1S,c2S,⋯,cmS}C^{\mathcal{S}}=\{c_1^{\mathcal{S}},c_2^{\mathcal{S}},\cdots,c_m^{\mathcal{S}}\}CS={c1S,c2S,⋯,cmS}是面特征的特征点对应关系,特征点对应关系的格式为c={p1,p2}c=\{p_1,p_2\}c={p1,p2},其中p1p_1p1是当前帧雷达扫描的点,p2p_2p2是地图的点。q,tq,tq,t是雷达坐标系转换到地图坐标系的四元数和平移向量。通过优化得到最优坐标变换,再次迭代执行特征点匹配和位姿优化。在两次迭代之后,使用最终的最优坐标变换将当前帧雷达扫描点的特征点插入到地图中。随后,更新后的地图可用于估计下一帧激光扫描的6-DoF位姿。
R-LOAM
Motivation动机
利用环境中的参考物体等先验知识来改善定位精度,减少漂移,提升地图构建质量,但之前的大多数工作都是利用二维CAD平面图等二维先验信息,即使使用三维模型,对3D先验信息的处理也很粗糙,例如对3D CAD建筑图采样得到初始点云地图进行定位,没有用3D先验信息优化建图的算法。该算法率先提出利用3D参考对象进行轨迹和地图优化,并提出了一种使用具体使用3D三角网格模型的方法。
Challenge挑战
-
该算法假设已知参考对象的3D模型及其在全局坐标系的位置,而且该算法对于参考模型的模型精度和位置精度要求很高,建模误差和模型位置误差都会导致算法性能的下降,甚至造成反向提升的效果。
-
该算法只针对激光雷达,应用范围受限,也不可避免的继承了激光SLAM的固有缺陷。
能否扩展到视觉传感器?
能否不知道参考对象的全局位姿,只知道参考对象的几何信息?
能否利用除几何信息外的先验信息?例如,桌子的四个腿成矩形排列,桌子上面有个碗。
先验信息能否来自AI检测或分割算法?
能否利用更高级、更抽象的先验信息帮助定位建图?
主要贡献
拓展了主流激光定位LOAM算法框架,在后端优化中不只利用激光特征点信息,还利用从参考物体的3D mesh模型中提取的网格特征,网格特征是在参考对象mesh模型表面上采样的虚拟点(mesh模型表面距离当前激光扫描点最近的点)。point-to-mesh匹配特征的欧式距离平方和作为新的代价函数加入LOAM的常规地图优化步骤。
使用了Axis-Aligned-Bounding-Box-Tree(AABB Tree)数据结构来加速网格特征匹配,能够处理由数十万三角网格组成的3D mesh模型。不止利用已经提前构建好的地图来做全局定位,还考虑与参考物体的相对位置减少长期漂移。
技术方案
首先假设参考对象的模型及其在全局坐标系下的位姿是已知的,模型以3D三角网格的形式给出。
AABB-Tree 每个叶节点都包含网格的一个面。
1) 点云分离 Scan-Isolation
-
使用odometry模块的输出作为initial pose将原始点云数据从雷达坐标系转换到地图坐标系。
-
分离点云
从原始点云数据中分离出属于参考对象的雷达扫描点。具体方法为只保留一个比参考对象3D模型大一点的3D bounding box之内的点云。理想情况下,只有属于参考对象的雷达扫描点会被保留下来。
需要权衡裁剪点云的方法,如果裁剪条件太严格,则必须要很准确的雷达初始位姿估计,否则可能剔除很多参考对象的扫描点,导致优化结果效果不好。而如果裁剪条件太宽松,则可能保留很多不属于参考对象的扫描点,导致反向优化使结果更差。
2) 网格特征提取 Mesh Feature Extraction(包含scan-to-model Alignment)
3D triangular mesh 模型是由一个个三角形面组成,每一个三角面由其顶点隐式定义。
- 在AABB-Tree的帮助下,可以高效计算出分离的点云与模型三角网格的对应关系。网格特征是三角网格平面上距离对应扫描点最近的虚拟点。
- 如果没有AABB-Tree,最简单的寻找扫描点与mesh对应关系的算法是蛮力算法(遍历),计算量非常大;而遍历AABB-Tree非常高效,因为只有在bounding box内的点才会被考虑。
- 一但为每个扫描点都找到了mesh面上的虚拟点,point-to-mesh对应关系就找到了。
3) 联合优化
fM(cM,q,t)=(qp1q−1+t)−p2,withp1,p2∈cMf^{\mathcal{M}}(c^{\mathcal{M}},q,t)=(qp_1q^{-1}+t)-p_2 ,{\rm{with}\ } p_1,p_2\in c^{\mathcal{M}} fM(cM,q,t)=(qp1q−1+t)−p2,with p1,p2∈cM
J(q,t)=1CSˉˉ∑cS∈CSρ(∥fS(cS,q,t)∥2)+1CCˉˉ∑cC∈CCρ(∥fC(cC,q,t)∥2)+λCMˉˉρ(∥fM(cM,q,t)∥2)J(q,t)=\dfrac{1}{\bar{\bar{C^{\mathcal{S}}}}}\sum_{c^{\mathcal{S}}\in C^{\mathcal{S}}}\rho(\Vert f^{\mathcal{S}}(c^{\mathcal{S}},q,t) \Vert^2)+\dfrac{1}{\bar{\bar{C^{\mathcal{C}}}}}\sum_{c^{\mathcal{C}}\in C^{\mathcal{C}}}\rho(\Vert f^{\mathcal{C}}(c^{\mathcal{C}},q,t) \Vert^2) +\dfrac{\lambda}{\bar{\bar{C^{\mathcal{M}}}}}\rho(\Vert f^{\mathcal{M}}(c^{\mathcal{M}},q,t) \Vert^2) J(q,t)=CSˉˉ1cS∈CS∑ρ(∥fS(cS,q,t)∥2)+CCˉˉ1cC∈CC∑ρ(∥fC(cC,q,t)∥2)+CMˉˉλρ(∥fM(cM,q,t)∥2)
CSˉˉ,CCˉˉ,CMˉˉ\bar{\bar{C^{\mathcal{S}}}},\bar{\bar{C^{\mathcal{C}}}},\bar{\bar{C^{\mathcal{M}}}}CSˉˉ,CCˉˉ,CMˉˉ是对应关系集合的元素数;λ\lambdaλ是加权乘子,调整point-to-mesh残差的影响。
就像 LOAM 一样,在得出最终优化的 6-DoF 姿势之前,我们至少运行了两次对应估计和联合优化迭代。直观地说,联合优化问题最小化了扫描点和地图点之间的残差,同时也最小化了孤立扫描点对网格表面的残差。这有效地将扫描与网格表面对齐,在当前环境中提供绝对参考并减少长期漂移,同时还考虑了构建的地图。地图构建过程与LOAM相同。
和SOTA的对比结果
与LOAM算法的对比,在三个场景中 APE中位值分别降低了超过92%,69%,94%。
而随着迭代次数的增加,R-LOAM的提升更明显。
网格特征是对点特征的重要补充。在某些数据集上,由于点特征很稀疏,LOAM可能无法运行成功,而由于R-LOAM利用了3D参考模型补充了mesh feature可以成功跑通。
指标:
-
RPE(relative pose error)相对位姿误差
-
APE(Absolute Pose Error)绝对位姿误差
APE 首先将真实值和估计值进行对齐,然后计算每个真实值和估计值之间的偏差得到,适合评估整条轨迹的全局一致性。 -
RMSE(Root Mean Square Error)均方根误差
-
STD(Standard Deviation)标准差
RE(Rotational Error)旋转误差
RO-LOAM
Motivation动机
R-LOAM没有对于扫描-模型误匹配的处理机制,一旦使用误匹配的扫描-模型误差项优化,会极大影响定位和建图的效果。R-LOAM中的利用先验信息的优化与LOAM中的map optimization紧耦合,这限制了算法在线运行下的地图优化迭代次数。
Challenge挑战
- 与R-LOAM类似,RO-LOAM依赖于参考对象的准确全局位姿估计和几何形状,全局位姿的误差会严重影响算法性能,模型与参考对象的实际几何形状之间的偏差也会增加扫描点-模型匹配阶段的误差。
- 该算法只针对激光雷达类距离传感器,应用场景受限。
主要贡献
- 提出了一种利用3D参考模型建图的扩展算法,可以用于任意其他3D LiDAR-SLAM的插件扩展,以实现基于参考对象的轨迹和地图优化。
- 提出了一种基于EKF的判断扫描点与参考模型的配准程度的评估方法,只有在高度准确的scan-to-model匹配时才会触发TMO(trajectory and map optimization)轨迹和地图优化。提高了算法对于误匹配的鲁棒性。
- 作为3DLiDAR-SLAM的松耦合扩展,可以与SLAM算法异步执行。与R-LOAM相比,该算法能够卸载到边缘云以完全并行的方式在线运行,降低机器人端侧的负载。
技术方案
-
扫描点云分离 Scan-Isolation
点云分离阶段,与R-LOAM相同,目的是保留只属于参考对象的扫描点。
-
扫描点到模型的匹配 Scan-to-Model Alignment
扫描点-模型匹配阶段的目的是精细化LOAM的输出map-optimized poses。这是通过匹配分离后的点云与参考模型来实现的,然而,扫描点与参考模型的匹配质量对于优化效果影响很大,错误的匹配会增大位姿误差。为此,RO-LOAM改进了R-LOAM的匹配方式,使用一系列连续的时序数据而不是只是某一时刻的数据去评估点云-模型匹配的准确性。
在接收到L次分离雷达扫描点后,如果最近的M+1次分离扫描点云都超过50个点,则执行分离扫描点与模型的配准操作。之后的分离扫描点云和对应的校正位姿会被缓存直到这个条件被满足。M+1帧从时间t-M到t采集的被分离的扫描点PDt−M:t\mathcal{P}^{D_{t-M:t}}PDt−M:t与模型的匹配可以多线程执行。参数L控制TMO的频率;参数M控制了下一阶段候选者评估的序列长度,M过小将导致EKF的输入序列过短,达不到收敛,M过大更可能导致由于状态转移函数的偏差而收敛到错误值,这两种情况下,执行TMO的次数都会减少。
在匹配之前,会统一执行一次降采样将分离点云的数量限制在500以限制计算复杂度。使用距离阈值来去除外点提高鲁棒性。匹配方法为ICP迭代最近点,执行100次匹配估计和优化迭代以收敛到极小的位姿误差。
该模块的输出是与模型配准后的位姿WT~Dt−M:t^W\tilde{T}_{D_{t-M:t}}WT~Dt−M:t 。
-
候选者评估 Candidate Evaluation
接收上一模块的WT~Dt−M:t^W\tilde{T}_{D_{t-M:t}}WT~Dt−M:t 输出,并评估扫描-模型匹配的精度是否达标,如果达标则将WT~Dt^W\tilde{T}_{D_t}WT~Dt输出到下一模型。
WT~Dt−M:t−1^W\tilde{T}_{D_{t-M:t-1}}WT~Dt−M:t−1作为观测输入zKz_KzK,对于每个观测,EKF执行一次预测步和一次校正步,最终通过一步预测得到预测状态xK∣K−1x_{K|K-1}xK∣K−1作为最后一个模型配准位姿WT~Dt^W\tilde{T}_{D_t}WT~Dt 的运动先验WT^Dt^W\hat{T}_{D_t}WT^Dt。
如果WT^Dt^W\hat{T}_{D_t}WT^Dt与WT~Dt^W\tilde{T}_{D_t}WT~Dt的平移误差和旋转误差均小于阈值,则说明扫描与模型配准的精度足够高,将WT~Dt^W\tilde{T}_{D_t}WT~Dt输出到下一个模块优化轨迹。
-
位姿图优化 Pose Graph Optimization (PGO)
PGO校正自上次TMO以来的轨迹,使用校正后的位姿可以用来更新地图。
在接收到模型配准位姿WT~Dt^W\tilde{T}_{D_t}WT~Dt之后,从LiDAR-SLAM算法的mapping module接收的map-optimized poses WTDt−X:t^WT_{D_{t-X:t}}WTDt−X:t构建位姿图,前一个TMO在时间t−Xt-Xt−X执行,当前TMO在时间ttt执行。节点由边连接ε={e0,1,e1,2,⋯}\varepsilon=\{e_{0,1},e_{1,2},\cdots\}ε={e0,1,e1,2,⋯},每一条边ei,j=<Ωi,j,qi,j,ti,j>e_{i,j}=\left<\Omega_{i,j},q_{i,j},t_{i,j}\right>ei,j=⟨Ωi,j,qi,j,ti,j⟩代表一个连接节点nin_ini和njn_jnj的图约束,qi,jq_{i,j}qi,j和ti,jt_{i,j}ti,j描述两个节点之间的相对位姿,由DiTDj=WTDi−1WTDj^{D_i}T_{D_j}=^WT^{-1}_{D_i}\ ^WT_{D_j}DiTDj=WTDi−1 WTDj得到,Ωi,j\Omega_{i,j}Ωi,j是6×66\times 66×6的信息矩阵,描述相对位姿的可信程度。
J(q^i,j,t^i,j)=∑e∈ερ(∥f(ei,j,q^i,j,t^i,j)∥2)f(ei,j,q^i,j,t^i,j)=Ω^i,j[Δti,j2Δq→i,j]Δti,j=ti,j−t^i,jΔqi,j=qi,jq^i,j∗J(\hat{q}_{i,j},\hat{t}_{i,j})=\sum_{e\in\varepsilon}\rho(\Vert f(e_{i,j},\hat{q}_{i,j},\hat{t}_{i,j}) \Vert^2)\\ f(e_{i,j},\hat{q}_{i,j},\hat{t}_{i,j})=\hat{\Omega}_{i,j}\begin{bmatrix}\Delta t_{i,j}\\ 2\Delta \overrightarrow{q}_{i,j}\end{bmatrix}\\ \Delta t_{i,j}=t_{i,j}-\hat{t}_{i,j}\\ \Delta q_{i,j}=q_{i,j}\hat{q}^*_{i,j} J(q^i,j,t^i,j)=e∈ε∑ρ(∥f(ei,j,q^i,j,t^i,j)∥2)f(ei,j,q^i,j,t^i,j)=Ω^i,j[Δti,j2Δqi,j]Δti,j=ti,j−t^i,jΔqi,j=qi,jq^i,j∗
其中q^i,j,t^i,j\hat{q}_{i,j},\hat{t}_{i,j}q^i,j,t^i,j是迭代优化的节点变量,Ω^i,j\hat{\Omega}_{i,j}Ω^i,j 是信息矩阵Ωi,j\Omega_{i,j}Ωi,j经过Cholesky 分解的下三角矩阵。对于每个相邻节点的相对位姿,取单位信息矩阵Ω=I\Omega=IΩ=I,在优化过程中每条相对位姿的边是平等的。最后加入上一个TMO位姿与当前TMO位姿的相对位姿边,约束Dt−XTDt=WTˉDt−X−1WT~Dt^{D_{t-X}}T_{D_{t}}=^W\bar{T}^{-1}_{D_{t-X}}\ ^W\tilde{T}_{D_t}Dt−XTDt=WTˉDt−X−1 WT~Dt,并将位姿图的第一个节点WTDt−X^WT_{D_{t-X}}WTDt−X,即上一次TMO优化的位姿设置为常数,这样优化器就不会再优化它。设置这条边的信息矩阵为很大的值Ωt−X,t=4000∗I\Omega_{t-X,t}=4000*IΩt−X,t=4000∗I。由于第一个节点是常数,并且对于当前TMO位姿设置了一个很大的信息矩阵,所以只有两个TMO pose之间的位姿节点被优化,输出结果为WTˉDt−X:t^W\bar{T}_{D_{t-X:t}}WTˉDt−X:t,WTˉDt−X=WT~Dt−X,andWTˉDt=WT~Dt^W\bar{T}_{D_{t-X}}=^W\tilde{T}_{D_{t-X}},and\ ^W\bar{T}_{D_{t}}=^W\tilde{T}_{D_{t}}WTˉDt−X=WT~Dt−X,and WTˉDt=WT~Dt.
-
地图校正 Map Correction
有了上一阶段的输出PG-optimized posesWTˉDt−X:t^W\bar{T}_{D_{t-X:t}}WTˉDt−X:t,就可以通过重投影之前的雷达扫描点用来校正地图。
地图校正模块是TMO扩展算法与LiDAR-SLAM算法直接的接口,是RO-SLAM中唯一与LiDAR-SLAM算法紧耦合的模块,因为它高度依赖于建图模块的地图结构。
和SOTA的对比结果
在LOAM和R-LOAM上激活RO扩展程序可以显著减少 LOAM 和 R-LOAM 的 APE,而在车载计算机上几乎没有额外的计算成本。
相关文章:
RLOAM/RO-LOAM
LOAM框架 LOAM框架包含三个步骤: Scan registration:从原始激光扫描点数据中提取点特征。点特征是角点或者面点。 odometry estimation:在特征提取之后,特征点传递到里程计模块,通过特征匹配和优化步骤计算相对坐标变…...
JUC并发编程之Semaphore-应用与深度源码剖析
目录 JUC并发编程之Semaphore-应用与深度源码剖析 1. Semaphore 是什么? 2.怎么使用Semaphore? 2.1构造方法 2.2 重要方法 2.3 基本使用 需求场景 基础版代码实现 tryAcquire()引入代码实现 acquireUninterruptibly(),acquire()对比代码实现 3.…...
JWT详细介绍使用
一、JWT介绍 JWT是JSON Web Token的缩写,即JSON Web令牌,是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务…...
C/C++开发,无可避免的多线程(篇六).线程池封装类
一、线程池概念 线程池是一种多线程处理方式,它包含一个线程工作队列和一个任务队列。当有任务需要处理时,线程池会从线程工作队列中取出一个空闲线程来处理任务,如果线程工作队列中没有空闲线程,则任务会被放入任务队列中等待处理…...
HIVE中如何实现针对IPv6 CIDR的查询
Hive默认情况下不支持IPv6 CIDR查询,因为IPv6 CIDR查询需要使用一些额外的函数。 但是可以通过使用UDF(用户自定义函数)来实现这一点。 IPv6 CIDR表示为网络地址/前缀长度,其中网络地址是一个IPv6地址,前缀长度是一个介于0和128之间的整数,表示网络地址中前多少位是网络…...
【微信小程序】-- 生命周期(二十八)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
Kafka 概述
Kafka 概述Broker消费者Kafka 属于分布式的消息引擎系统,主要功能 :提供一套完备的消息发布与订阅解决方案 生产者和消费者都是客户端(Clients): 生产者(Producer):向主题发布消息…...
详解Java8中如何通过方法引用获取属性名/::的使用
在我们开发过程中常常有一个需求,就是要知道实体类中Getter方法对应的属性名称(Field Name),例如实体类属性到数据库字段的映射,我们常常是硬编码指定 属性名,这种硬编码有两个缺点。 1、编码效率低&#x…...
0106广度优先搜索和最短路径-无向图-数据结构和算法(Java)
1 单点最短路径 单点最短路径。 给定一幅图和一个起点s,回答“从s到给定目的顶点v是否存在一条路径?如果有,找出其中最短的那条(所含边数最少)。“等类似问题。 深度优先搜索在这个问题上没有什么作为,因为…...
僵尸(Zombie)进程
文章目录1.僵尸进程2.产生僵尸进程的原因3.利用 wait 函数销毁僵尸进程4.使用 waitpid 函数销毁僵尸进程1.僵尸进程 进程完成工作后(执行完 main 函数中的程序后)应被销毁,但有时这些进程将变成僵尸进程,占用系统中的重要资源。这…...
JS实现:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 数列是 1,1,2,3,5,8,13,21....观察可以看出来从第三个数字开始…...
Verilog如何编写一个基础的Testbench
本文将讲述如何使用Verilog 编写一个基础的测试脚本(testbench)。在考虑一些关键概念之前,先来看看testbench的架构是什么样的。架构包括建模时间、initial块(initial block)和任务(task)。此文…...
基于JavaEE社区物业管理系统开发与实现(附源码资料)
文章目录1. 适用人群2. 你将收获3.项目简介4.技术栈5.测试账号6.部分功能模块展示6.1.管理员6.2.业主1. 适用人群 本课程主要是针对计算机专业相关正在做毕业设计或者是需要实战项目的Java开发学习者。 2. 你将收获 提供:项目源码、项目文档、数据库脚本、软件工…...
问一下ChatGPT:DIKW金字塔模型
经常看到这张DIKW金字塔模型图,还看到感觉有点过份解读的图,后面又加上了insight,impact等内容。 Data:是数据,零散的、无规则的呈现到人们眼前,如果你只看到这些数字,如果没有强大的知识背景&a…...
javaScript基础面试题 ---闭包
闭包1、闭包是什么?2、闭包可以解决什么问题?3、闭包的缺点1、闭包是什么? 闭包是一个函数加上到创建这个函数的作用域的链接,就是一个作用域可以访问到另一个作用域的变量,闭包‘关闭’了函数的自由变量 function f…...
如何自定义您的网站实时聊天图标
实时聊天图标是您网站上的一个按钮,可在访问者单击时打开实时聊天。它代表了您的企业与客户沟通的门户。这是您的网站访问者与您联系、提出问题和接收个性化推荐的一种方式,聊天图标的设计最好是简单且引人入胜,个性化的图标往往更能提现企业…...
Vue侦听器Watch
31. Vue侦听器Watch 1. 定义 Watch是Vue.js提供的一个观察者模式,用于监听数据的变化并执行相应的回调函数。虽然计算属性Computed在大多数情况下更合适,但有时也需要一个自定义的侦听器Watch。因为在有些情况下,我们需要在状态变化时执行一…...
云快充研发中心平台架构师谈云原生稳定性建设之路
作者:吕周洋 大家好,我是来自云快充研发中心的平台架构师吕周洋,今天我给大家分享云快充云原生稳定性之路。 点击查看:云快充研发中心平台架构师 吕周洋:云快充云原生稳定性治理之路 云快充成立于2016年,…...
ENVI IDL学习笔记之基本操作
前言ENVI IDL(交互式数据语言)是一个通用的科学计算包,它提供了一套数学函数、数据分析工具,以及一些科学可视化和动画工具。IDL 是 ENVI 图像处理和分析软件的基础,可用于编写脚本并自动执行许多使用 ENVI 图形用户界…...
多线程面试题
1. Sychronized的锁升级过程是怎样的? 2. Tomcat 中为什么要使用自定义类加载器? 3. 说说对线程安全的理解 4. 对守护线程的理解 5. 并发、并行、串行之间的区别 6. Java死锁如何避免? 7. 谈谈你对AQS的理解,AQS如何实现可重入锁&…...
YARN运行流程
YARN是Hadoop资源管理器,他是一个通用资源管理平台和调度平台,可为上层应用提供统一的资源管理和调度,MapReduce等运算程序则相当于运行于操作系统上的应用程序,YARN为这些程序提供运算所需的资源内存、cpu。 YARN并不清楚用户提…...
java八股系列——SpringMVC从接受请求到完成响应的过程
Spring的MVC框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。 流程大致如下: 用户发起请求:用…...
Elasticsearch索引全生命周期
索引(Index)是Elasticsearch中最重要的概念之一,也是整个Elasticsearch操作的基础,它是相互关联的文档的一个集合。在Elasticsearch种,数据存储为 JSON 文档,每个文档将一组键(字段或属性的名称)与其对应的…...
汇编指令学习(LOOP)
一、xor异或操作,相同为0,不同为1xor eax,eaxeax异或eax,相同为0,并把结果存放到eax,简单说该语句就是想eax寄存器清零。二、ECX,计数器mov ecx,0x3将ecx寄存器设置为3三、DEC减一操作dec ecxecx寄存器的值…...
Linux 配置本地yum源
挂载光盘 进入包 配置路径,查看在线yum源 移动在线yum源到/home/目录下 进入vi,任意取名以.repo结尾即可 按住i进行编辑,输入以下内容 注意gpgcheck1是检验,配置本地yum源不需要检验 写入上图内容按住:输入wq,点击回车…...
【PyTorch】教程:torch.nn.LeakyReLU
torch.nn.LeakyReLU 原型 CLASS torch.nn.LeakyReLU(negative_slope0.01, inplaceFalse) 参数 negative_slope (float) – 控制负值斜率,默认为 1e-2inplace (bool) – in-place 操作,默认为 False 定义 LeakyReLU(x)max(0,x)negative_slope∗min…...
【刷题】-- 基础 -- 二分查找
精于结构、敏于心智、熟于代码 方式:对于会的代码:学会以最快的速度构建,并以最快的速度书写;对于不会的代码:学会(以最短的路径下)看懂别人的代码。学会使用参考文档、熟悉每一个容器。 刷题位…...
Spark MLlib 特征工程
Spark MLlib 特征工程预处理特征选择归一化离散化Embedding向量计算特征工程制约了模型效果 : 决定了模型效果的上限 , 而模型调优只是在不停地逼近上限好的特征工程才能有好的模型 特征处理函数分类 : 预处理 : 将模型无法直接消费的数据,转为可消费的数据形式特…...
CentOS7 完全卸载 php
在 CentOS 7 使用 yum install 简单安装 php 后,发现 php 版本 5.4 ,太低了! 然后,使用 yum remove 简单卸载后,发现 php 还在,不干净! 只好 rpm 慢慢卸载 rpm -qa |grep php php-gd-5.4.16-4…...
关于OCS认证里必须知晓的内容
【关于OCS认证里必须知晓的内容】美国非营利组织Textile Exchange推出的有机认证标准——有机含量标准(The Organic Content Standard),简称OCS。该标准通过跟踪有机原材料的种植从而监管整个有机产业链。OCS将应用于各种有机种植原料的验证,而不只限于有…...
移动版网站开发/怎么自己制作网页
由于Linux默认的history记录仅保存了命令的内容,没有具体的时间,我只能通过查出用户的登录与退出的时间,来给他们一个时间范围。因此,我们非常有必要对history历史命令的记录功能进行优化,我推荐的参数如下:…...
一个公司多个网站做优化/推广平台
1. net start/stop w3svc这个command主要用于开启/停止服务 www service this command is used to start or stop www service. it commonly uses to reset w3svc after the IIS configuration is modified. notes: 不要w3svc和当个website搞混了。如果net stop w3sv…...
山东建设企业网站/百度投流运营
Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,…...
学校网站建设的申请/南昌企业网站建设
基于SSMMavenBootStrapMySQL的在线商城系统[实战视频]—304人已学习 课程介绍 本课程基于MavenSpringSpringMVCMyBatisMySQLBootStrap技术,使用IntelliJ IDEA开发工具。 主要是锻炼SSM技术的运用,通过项目实战,加强对框架技术的理解和运用…...
自己做网站卖阀门/网络推广怎么做
利用回溯法解决全排列问题。 题目: 给定一个没有重复数字的序列,返回其所有可能的全排列。示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]思路: 代码: class Solution { pub…...
wordpress 表单/网络营销工资一般多少
那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数…...