计算机视觉各个方向概述
计算机视觉发展很长时间了,由传统的计算机视觉到现在如火如荼的计算机视觉多模态,有很多的方向,每一个方向都是一个研究门类,有些已经比较成熟,有些还处于一个开始的阶段,相对于文本语言的处理,计算机视觉更加复杂,仍然有着很长的路要走。
目录
1 概述
2 基本任务类型
2.1图像分类
2.2 物体检测
2.3 图像分割
2.3.1 基于阈值的分割
2.3.2 基于区域的分割
2.3.3 基于边缘的分割
2.3.4 基于图割的分割
2.3.5 基于深度学习的分割
2.4 场景理解
2.5 人脸识别
2.6 姿态估计
2.7 光流估计
2.8 立体视觉
1 概述
计算机视觉是研究如何使计算机系统能够理解和解释图像和视频数据的领域。
计算机视觉的目标是让计算机具备类似于人类视觉的能力,包括感知、理解、分析和解释图像和视频数据。通过计算机视觉技术,计算机可以自动提取图像中的特征、识别和分类图像中的对象、检测和跟踪运动、测量物体的尺寸和形状、重建三维场景等。
计算机视觉的基本步骤包括:图像获取、前期处理、特征提取、图像分析和解释。
- 图像获取涉及使用传感器或摄像机获取图像或视频数据,技术对应相应的相机技术包括驱动、编解码、A/D和D/A、传输协议等。
- 前期处理阶段包括对图像进行校正、去噪、增强等操作,以提高后续处理的效果,技术对应ISP pipeline和相应的图像处理技术。
- 特征提取是提取图像中的关键特征,如边缘、纹理、颜色等,用于图像的描述和分析,技术对应传统的提取技术、深度学习、强化学习、transform等。
- 图像分析是通过对特征进行分析和处理,来实现图像分类、目标检测、目标跟踪、场景分割等任务,技术对应图像分类技术。
- 图像解释则是对图像进行高级推理和理解,如物体识别、场景理解、行为分析等,技术对应语义识别、语义理解等。
2 基本任务类型
- 图像分类:将图像分为不同的预定义类别。可用于图像搜索和内容过滤。
- 物体检测:识别图像中的物体并确定其位置。可用于智能监控、自动驾驶和人机交互。
- 图像分割:将图像划分为多个区域,每个区域包含相同类别的像素。可用于医学影像分析和自动驾驶中的场景理解。
- 场景理解:对图像进行更高级的理解,包括物体识别、关系理解和场景语义理解。
- 人脸识别:识别和验证图像或视频中的人脸。人脸识别可用于身份验证和人脸支付。
- 姿态估计:理解图像中人或物体的姿态或姿势。可用于动作捕捉和虚拟现实。
- 光流估计:估计图像序列中像素或物体的运动方向和速度。可用于视频稳定和运动分析。
- 立体视觉:从多个视角的图像中恢复出三维视觉信息。可用于三维重建和增强现实。
2.1图像分类
这是最基本的计算机视觉任务,目标是将整个图像分类到一个或多个预定义的类别中。例如,给定一张图像,判断图像中是否包含猫。
1. 传统机器学习方法:传统的图像分类方法主要基于特征提取和分类器的组合。常见的特征提取方法包括颜色直方图、纹理特征、边缘检测等。然后,使用分类器(如支持向量机、随机森林、k最近邻等)对提取的特征进行分类,从而实现图像分类。
2. 深度学习方法:深度学习在图像分类中取得了显著的突破。深度学习模型,特别是卷积神经网络(CNN),能够学习图像的高级特征表示。通过多层卷积和池化操作,CNN能够提取出图像的局部特征和上下文信息。最后,通过全连接层和softmax激活函数,将提取的特征映射到不同的类别,并输出分类结果。
常用算法说明: 在深度学习中,常用的图像分类算法包括:
- LeNet-5:是最早的卷积神经网络模型之一,用于手写数字识别。
- AlexNet:是深度学习在图像分类中的重要里程碑,通过使用多个卷积层和池化层,实现了高效的图像分类。
- VGGNet:采用了较深的网络结构和小尺寸的卷积核,具有更好的特征提取能力。
- GoogLeNet(Inception):通过引入Inception模块,有效减少了参数数量,提升了模型的性能。
- ResNet:采用了残差学习的思想,解决了深层网络难以训练的问题,具有更好的收敛性和准确性。
应用场景说明: 图像分类在各个领域都有广泛的应用,包括但不限于以下场景:
- 图像搜索:根据用户提供的关键词或参考图像,搜索和识别具有相似特征的图像。
- 图像自动标记:对于大规模图像数据库,通过图像分类可以自动为图像添加标签和描述,方便检索和管理。
- 目标识别和物体检测:图像分类是目标识别和物体检测的基础。在目标识别任务中,首先需要将图像分类为不同的类别,然后进一步识别和定位目标对象。
- 视觉监控和安防:图像分类可以应用于视频监控系统,用于识别和分类不同的行为和事件,如人、车辆、异常行为等。
- 医学图像识别:在医学领域,图像分类用于识别和分类不同的病变、疾病和组织结构,辅助医生进行诊断和治疗。
- 自动驾驶:图像分类在自动驾驶领域中起到重要作用,用于识别和分类道路上的交通标志、行人、车辆等,实现智能驾驶和交通安全。
- 农业图像分析:通过图像分类,可以识别和分类不同的植物、病害、土壤状况等,用于农业生产的管理和决策。
2.2 物体检测
物体检测不仅需要识别图像中的物体类别,还需要确定物体在图像中的位置,通常以边界框的形式给出。例如,给定一张图像,找出图像中所有的猫,并给出它们在图像中的位置。
1. 特征提取:从图像中提取有用的特征,以便识别物体。常用的特征提取方法有边缘检测、纹理特征、颜色直方图等。
2. 候选区域生成:在图像中生成多个候选区域,这些区域可能包含待检测的物体目标。常用的候选区域生成方法有滑动窗口、图像分割、选择性搜索等。
3. 物体分类:对生成的候选区域进行物体分类,判断每个区域中是否包含特定的物体类别。分类模型可以使用传统机器学习算法如支持向量机(SVM),也可以使用深度学习算法如卷积神经网络(CNN)。
4. 位置回归:对包含物体的候选区域进行精确定位,调整边界框的位置和大小,使其更好地匹配物体的实际位置。
5. 后处理与筛选:对分类和位置回归结果进行后处理,去除重叠的边界框,并选择得分最高的边界框作为最终的物体检测结果。常用的后处理方法有非最大抑制(NMS)。
6. 应用场景:物体检测在许多领域都有广泛的应用,包括自动驾驶、安防监控、人脸识别、机器人导航等。它可以帮助机器理解图像中的内容,并实现更智能的视觉应用。
2.3 图像分割
图像分割的目标是将图像划分为多个区域,每个区域包含的是同类的像素。例如,给定一张图像,将图像中的猫、狗、背景等各自分割出来。
2.3.1 基于阈值的分割
- 技术实现方法:通过选择合适的阈值来分割图像。可以根据直方图、像素灰度值或其他图像统计特征来确定阈值。
- 原理:基于阈值的分割方法假设目标和背景在灰度值上具有明显的差异,通过设置适当的阈值来将图像中的像素分为两个类别。
- 适用场景:适用于图像中目标和背景具有明显灰度差异的情况,例如二值化图像或简单的图像分割任务。
- 举例:假设我们有一张黑白照片,想要将其中的目标物体分割出来。我们可以选择一个适当的阈值,将图像中灰度值高于该阈值的像素标记为目标物体,灰度值低于该阈值的像素标记为背景。这样,就可以将目标物体从背景中分割出来。
2.3.2 基于区域的分割
- 技术实现方法:使用基于区域的分割算法,如区域生长、分水岭算法、均值漂移等,根据像素之间的相似性和连通性将图像分割成不同的区域。
- 原理:基于区域的分割方法通过将像素组织成具有相似性和连通性的区域,从而将图像中不同的目标分割开来。
- 适用场景:适用于图像中目标具有相似颜色、纹理或亮度的情况,例如自然风景、医学图像等。
- 举例:假设我们有一张自然风景的彩色照片,希望将图像中的天空、树木和水域分割成不同的区域。基于区域的分割方法可以根据像素之间的相似性和连通性将图像分割成不同的区域,从而得到天空、树木和水域的区域。
2.3.3 基于边缘的分割
- 技术实现方法:使用边缘检测算法,如Canny边缘检测、Sobel算子等,识别图像中的边缘信息,并根据边缘将目标物体分割出来。
- 原理:基于边缘的分割方法利用图像中的边缘信息来推断物体的轮廓和形状,从而实现物体的分割。
- 适用场景:适用于需要准确提取物体轮廓的情况,如计算机视觉、目标检测等领域。
- 举例:假设我们有一张包含一只猫的图像,我们希望提取出猫的轮廓。基于边缘的分割方法可以检测图像中的边缘信息,然后根据边缘将猫从背景中分割出来,得到猫的轮廓。
2.3.4 基于图割的分割
- 技术实现方法:使用图割算法,如GrabCut、Normalized Cut等,将图像表示为一个图,并通过最小割或最大流算法将图像分割成不同的区域。
- 原理:基于图割的分割方法将图像像素作为图的节点,相邻像素之间的相似性作为边的权重,通过图割算法将图像分割成不同的区域。
- 适用场景:适用于需要精确分割和处理复杂场景的图像,如图像编辑、计算机视觉、医学图像分析等。可以用于目标分割、背景去除、图像分割和对象提取等任务
- 举例:假设我们有一张包含多个水果的图像,我们想要将每个水果分割出来。基于图割的分割方法可以将图像表示为一个图,其中每个像素作为图的节点,相邻像素之间的相似性作为边的权重。通过最小割或最大流算法,可以将图像分割成不同的区域,从而将每个水果分割出来。
2.3.5 基于深度学习的分割
- 技术实现方法:使用深度学习方法,如卷积神经网络(CNN)或全卷积网络(FCN),对图像进行训练和推断,将每个像素分配给特定的类别。
- 原理:基于深度学习的分割方法通过学习大量标记的图像数据集,训练一个神经网络模型来推断图像中每个像素所属的类别,从而实现精确的图像分割。
- 适用场景:适用于需要高精度和复杂图像分割的任务,如医学图像分析、自动驾驶、图像语义分割等。
- 举例:假设我们有一张包含多个物体的图像,我们想要将每个物体分割出来。基于深度学习的分割方法可以使用深度神经网络进行学习和推断,将图像中的每个像素分配给特定的物体类别。例如,我们可以使用全卷积网络(FCN)训练一个模型,将图像中的每个像素分割成人、汽车和背景等类别,从而实现对图像中物体的精确分割。
2.4 场景理解
场景理解是对图像进行更高级的理解,包括识别图像中的物体、理解物体之间的关系、理解场景的语义等。例如,给定一张图像,理解图像中的人正在做什么,他们之间有什么关系等。
- 对象检测:对象检测是识别和定位图像中多个对象的任务。它涉及使用计算机视觉技术和机器学习算法来检测和边界框定位图像中的不同对象,如人、车、动物、家具等。常见的对象检测算法包括基于深度学习的方法,如目标检测中的卷积神经网络(CNN)和区域提议网络(RPN)。
- 语义分割:语义分割是将图像分割成不同的语义区域的任务,每个区域对应于特定的对象或物体类别。与传统的图像分割方法相比,语义分割旨在为每个像素分配语义标签,从而更精确地理解图像的内容。常见的语义分割算法包括基于深度学习的方法,如全卷积网络(FCN)、U-Net、Mask R-CNN等。
- 场景分类:场景分类是将图像或视频分为不同场景类别的任务。它涉及对输入的图像或视频进行分析和学习,以识别场景的类型,如室内、户外、城市、自然风景等。场景分类可以通过传统的特征提取和机器学习方法,以及基于深度学习的方法实现。
- 行为识别:行为识别是从图像或视频中识别和理解人或物体的动作和行为的任务。它涉及使用计算机视觉和机器学习技术来识别和分类特定的行为,如行走、跑步、打开门等。行为识别可以通过提取空间和时间特征,并使用分类或序列建模方法来实现。
- 场景生成:场景生成是根据输入的文本或其他信息,生成符合语义和上下文的图像或视频的任务。它涉及将自然语言理解和计算机视觉技术结合起来,以生成具有逼真场景的图像或视频。场景生成可以用于虚拟现实、游戏开发、电影特效等领域。
- 目标跟踪:目标跟踪是在连续的图像序列中跟踪特定目标的任务。它涉及识别和跟踪目标对象的位置、运动和外观变化。目标跟踪可应用于视频监控、自动驾驶、虚拟现实等场景中。
- 场景分析与推理:场景分析与推理旨在对复杂场景进行更高层次的理解和推断。它涉及整合多种计算机视觉任务的结果,如对象检测、语义分割、行为识别等,以获取对整个场景的综合理解。场景分析与推理可以用于智能监控、智能交通、智能助理等领域。
- 情感识别:情感识别是识别人脸表情或图像中的情感状态的任务。它涉及使用计算机视觉和机器学习技术来分析人脸的表情特征,以推断出人的情感状态,如快乐、悲伤、愤怒等。情感识别可应用于情感分析、用户体验评估等场景。
场景理解的应用场景广泛,包括智能监控与安防、智能交通系统、智能助理与机器人、虚拟现实与增强现实、医疗诊断与辅助、自动驾驶等领域。它可以提供对场景的深入理解,帮助实现自动化决策、智能辅助和人机交互等功能。
2.5 人脸识别
人脸识别的主要功能是通过对人脸图像或视频的分析,将其与事先存储的人脸模板进行比对,以确定身份或验证身份。它可以用于自动识别和区分不同的个体,实现自动化的身份认证、门禁控制、安全监控等应用。
人脸识别的实现方法通常包括以下步骤:
1. 人脸检测:使用图像处理算法和模型,从图像或视频中检测出人脸区域。 2. 人脸对齐: 对检测到的人脸进行对齐,以保证后续的特征提取和匹配的准确性。 3. 特征提取:从对齐后的人脸图像中提取出关键的特征向量或描述子,通常使用深度学习模型(如卷积神经网络)来学习和提取有代表性的特征。 4. 特征匹配:将提取到的特征与已知的人脸模板进行比对,通过计算相似度或距离来判断是否匹配。 5. 决策阈值:根据设定的阈值,判断匹配结果的可靠性,并决定是否认可或拒绝。
常用算法:
- 主成分分析(PCA):通过降维和特征提取的方式来进行人脸识别。
- 线性判别分析(LDA):通过优化分类边界,实现更好的人脸识别效果。
- 支持向量机(SVM):在特征空间中构建分类模型,用于人脸的分类和识别。
- 卷积神经网络(CNN):通过深度学习的方法,学习和提取人脸图像的特征,实现高效的人脸识别。
应用场景说明:
人脸识别在许多领域都有广泛的应用,包括但不限于以下场景:
- 门禁系统:用于身份验证和门禁控制,可以替代传统的刷卡或密码的方式。
- 安防监控:应用于视频监控系统,用于实时识别和跟踪特定人员,对异常事件进行预警。
- 人脸支付:
2.6 姿态估计
姿态估计的主要功能是从输入的图像或视频中提取出人体或物体的姿态信息。姿态信息包括人体或物体的位置、朝向、关节角度等,可以用于行为分析、运动捕捉、人机交互等领域。例如,给定一张图像,判断图像中的人是站立还是跑步。
姿态估计的实现方法通常基于计算机视觉和机器学习技术,包括以下步骤:
1. 关键点检测:使用目标检测和关键点定位算法,从图像或视频中检测出关键点,如人体的关节或物体的特征点。
2. 姿态回归:通过训练模型,将检测到的关键点映射到目标的姿态表示,如欧拉角、四元数、旋转矩阵等。
3. 姿态估计:根据关键点的位置和姿态表示,计算出人体或物体的姿态信息,如位置、朝向、姿势等。
常用算法:
- 基于模板匹配的方法:使用事先准备的姿态模板库,通过与输入图像的匹配来估计姿态。常见的方法包括投影模板匹配和形状匹配算法。
- 基于深度学习的方法:利用深度学习模型,如卷积神经网络(CNN)或递归神经网络(RNN),从图像中学习姿态估计模型。这些模型通常通过监督学习的方式进行训练,以从大量标注数据中学习姿态的表示和预测。
- 基于优化的方法:通过最小化姿态表示与关键点位置之间的差异或约束条件,使用优化算法来估计姿态。常见的优化方法包括迭代最近点(ICP)算法和非线性优化算法。
姿态估计在许多领域都有广泛的应用,包括但不限于以下场景:
- 运动捕捉:用于电影、游戏和动画制作等领域,通过捕捉人体或物体的姿态信息,实现真实的动作重现或角色控制。
- 健身和运动分析:通过估计人体的姿态,帮助健身教练和运动
2.7 光流估计
光流估计的主要功能是计算连续图像序列中每个像素的运动速度矢量。通过分析图像之间的亮度变化,光流估计可以推断出物体的运动方向和速度,用于运动分析、目标跟踪、三维重建等应用。
1. 亮度恒定假设:光流估计基于亮度恒定假设,即相邻帧之间的像素亮度在运动过程中保持不变。根据这一假设,光流估计算法通过比较像素点周围邻域内的亮度变化来推断运动信息。
2. 运动场建模:光流估计将运动场表示为像素的运动矢量,即每个像素在图像中的移动方向和速度。运动场可以是稠密的(每个像素都有对应的运动矢量)或稀疏的(只选择一部分像素进行估计)。
3. 约束条件:光流估计算法使用了一些约束条件,如平滑性约束和空间一致性约束,以提高估计结果的准确性和稳定性。
常用算法:
- Lucas-Kanade算法:一种经典的光流估计算法,基于亮度恒定假设和小运动假设,通过最小二乘法求解光流方程,适用于稀疏的光流估计。
- Horn-Schunck算法:也是一种经典的光流估计算法,基于亮度恒定假设和平滑性约束,通过最小化能量函数求解光流场,适用于稠密的光流估计。
- 光流金字塔算法:将图像金字塔的多层次信息结合光流估计算法,用于处理不同尺度和运动范围的图像序列。
- 基于深度学习的方法:利用深度学习模型,如卷积神经网络(CNN)或循环神经网络(RNN),直接从图像序列中学习光流估计模型,通过监督学习训练来实现更准确的光流估计。
应用场景:
- 视频压缩:光流估计可以用于视频编码和压缩算法中,通过对连续帧之间的光流估计,可以减少视频数据的冗余性,提高压缩效率。
- 运动分析:通过光流估计,可以分析和跟踪图像序列中物体的运动模式,用于运动目标检测、行为分析、运动轨迹预测等。
- 目标跟踪:光流估计可用于目标的连续跟踪,通过计算物体在图像中的光流矢量,可以实现目标的位置预测和姿态估计。
- 视觉里程计:光流估计可用于相机的运动估计和视觉里程计算法中,通过分析图像序列中的光流变化,可以推断相机的运动轨迹和相对位姿。
- 三维重建:通过光流估计和图像序列的几何关系,可以恢复场景中物体的深度信息,实现三维重建和结构恢复。
2.8 立体视觉
立体视觉是一种通过两个或多个视角的图像来感知和重建三维场景的技术。它模拟了人类双眼观察世界的方式,通过左右眼的视差信息来推断物体的深度和形状。。例如,给定一对立体图像,恢复出图像中的深度信息。
下面是立体视觉的详细说明:
- 视差计算:视差是指同一物体在不同视角下的图像之间的像素位移。通过计算视差,可以推断出物体的距离和深度。常用的视差计算方法包括块匹配法、全局优化方法、基于深度学习的方法等。
- 相机标定:为了进行准确的立体视觉分析,需要对使用的相机进行标定。相机标定包括确定相机的内参和外参,即相机的内部参数(如焦距、畸变等)和外部参数(如相机的位置和朝向)。
- 立体匹配:立体匹配是指将左右眼的图像进行匹配,找出对应的像素点。通过匹配得到的像素点对,可以计算出视差,并推断出物体的深度。常用的立体匹配算法包括基于窗口匹配、图割算法、基于深度学习的方法等。
- 深度图生成:通过视差计算和立体匹配,可以生成一个深度图,其中每个像素点表示该点的深度信息。深度图可以用于重建三维场景、物体识别、遮挡检测等应用。
- 三维重建:通过立体视觉技术,可以重建三维场景的几何结构。通过将多个视角下的深度图或点云数据融合在一起,可以恢复出物体的三维形状和位置。
- 应用场景:立体视觉在许多领域都有广泛的应用,包括机器人导航、自动驾驶、增强现实、虚拟现实、三维重建、人脸识别、遥感影像分析等。通过利用立体视觉技术,可以实现对环境的感知、场景理解和三维重建,为这些领域提供更精确和细致的信息。
相关文章:
计算机视觉各个方向概述
计算机视觉发展很长时间了,由传统的计算机视觉到现在如火如荼的计算机视觉多模态,有很多的方向,每一个方向都是一个研究门类,有些已经比较成熟,有些还处于一个开始的阶段,相对于文本语言的处理,…...
AIGC: 关于ChatGPT中API接口调用相关准备工作
ChatGPT之API接口相关 通过页面和GPT交流获取信息相比直接调用GPT的API而言是非常有限的 页面上的GPT是比较封闭的,而且只允许我们去输入文本的信息 我们需要借助GPT的API开发来激发AI工具的无限可能,实现更多个性化需求 1 )使用API 使用A…...

【Java Web学习笔记】 1 - HTML入门
项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/html 零、网页的组成 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片视频等。 CSS样式是表现。就像网页的外衣。比如,标题字体、…...
基于windows系统使用Python对于pc当前的所有窗口的相关操作接口
对于windows系统的电脑使用Python可以对其当前的窗口进行宏观的查询等操作 派生博客1:python对pc的窗口进行操作(windows) 派生博客2python获取当前pc的分辨率(windows) 派生博客3使用uiautomation模块来对基于windows系统的pc中的前端界面进行自动化测试(查找控件ÿ…...

30秒搞定一个属于你的问答机器人,快速抓取网站内容
我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 文章目录 简介运行效果GitHub地址 简介 爬取一个网站的内容,然后让这个内容变成你自己的私有知识库,并且还可以搭建一个基于私有知识库的问…...

JPA数据源Oracle异常记录
代码执行异常 ObjectOptimisticLockingFailureException org.springframework.orm.ObjectOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleSta…...
抽奖送平板是骗局!!!
在街上被派传单,然后扫了码抽奖中了平板,被领到卖电器门店兑奖。他们给我在宜嘉商城上充值4980,我现场给他们付了4980元,签了他们的业务办理单,上面有违约者赔款30%违约金字样。我领走了荣耀畅玩40plus手机一台。第二天…...
json.decoder.JSONDecodeError: Extra data: line 1 column 332 (char 331)
项目场景: 提示:扩充数据集时,同步修改json标签中的"imagePath"字段的值,出现json文件读写不一致问题。 采用open函数读写模式修改json文件字段。open(jsonF.json, r)。 问题描述 运行修改json文件报错:j…...

rust持续学习 COW
COW我第一次看见还以为是奶牛 很奇怪是个啥 后来了解到是clone on write 缩写的,大乌龙啊 这个有两种enum,一种是borrow,一种是own rust中,数据读写经常涉及到所有权 这个borrow,很显然,就是不可变借用了 own就是可以写…...

【计算机网络】14、DHCP
文章目录 一、概述1.1 好处 二、概念2.1 分配 IP2.2 控制租赁时间2.3 DHCP 的其他网络功能2.4 IP地址范围和用户类别2.5 安全 三、DHCP 消息3.1 DHCP discover message3.2 DHCP offers a message 如果没有 DHCP,IT管理者必须手动选出可用的 ip,这太耗时了…...

【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现
目录 Ⅰ. 实践说明 0x00 计数器(Counter) 0x01 异步计数器(Asynchronous Counter)...
IDEA常用快捷键
快捷键功能tab接受选择–选择的名称将覆盖带插入符号右侧的其它名称–而如果按shift或者enter,光标右边的内容会保留Ctrlshift空格智能匹配–查找当前上下文的方法和变量Ctrld对比文件–选中需要对比的文件shift滚动水平滚动Ctrlaltl格式化Ctrlk提交Ctrlaltz回滚类C…...
【2024秋招】2023-10-17 金山云文档服务端二面
1 实习 1.1 讲解一下curd启动器 1.2 数据同步的过程是怎么实现的,同步过程中的数据一致性怎么保证的 答:同步过程中会记录断点,表示每一批同步成功时的位置,如果对端出现问题,则下一次同步会继续从这个断点后开始同…...

一种excel多线程并发写sheet的方案
一、背景 有一次项目的需求要求导出excel,并且将不同的数据分别写到不同的sheet中。 二、 方案概述 首先一开始使用easyexcel去导出excel,结果发现导出时间需要3秒左右。于是想着能不能缩短excel导出时间,于是第一次尝试使用异步线程去查询数…...

深入了解接口测试:揭秘网络分层和数据处理!
网络分层和数据 上一小节中介绍了接口测试中一些必要重要的定义,这一节我们来讨论一下在学习接口测试过程中我们要关注的最重要的东西:网络分层和数据。 首先,我们来尝试理解一下,为什么网络是要分层的呢? 我们可以…...
Java并发编程
进程和线程 进程即程序的一次执行过程,各个进程之间是独立的。线程是更小的单位,一次进程中,可能会有多个线程,可能会相互影响,各个线程有自己的程序计数器,虚拟机栈和本地方法栈,同时共同使用…...

vue+echarts实现依赖关系无向网络拓扑结图节点折叠展开策略
目录 引言 一、设计 1. 树状图(不方便呈现节点之间的关系,次要考虑) 2. 力引导依赖关系图 二、力引导关系图 三、如何实现节点的Open Or Fold 1. 设计逻辑 节点展开细节 节点收缩细节 代码实现 四、结果呈现 五、完整代码 引言 我…...

Unity3d 灯光阴影开启,法线贴图出现BUG
URP项目打开灯光的阴影后,法线贴图出现BUG 解决方案:按照下图所示调整材质的选项即可...

c语言:模拟实现atoi函数
atoi函数的功能和用法: 主要功能:将字符串转换为整数。例如,将字符类型的“123”转换为整数123. #include <stdio.h> #include <stdlib.h>int main() {char str[] "123";int num atoi(str);printf("Converted …...

Docker 使用心得
创建一个docker 镜像,相关运行代码,放在docker镜像文件同级, pm2 不能与 docker一起使用() # node 服务docker FROM node:10.16.3LABEL author"sj"RUN mkdir -p /var/nodeCOPY ./node /var/nodeWORKDIR /va…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...