YOLOv5目标检测学习(4):YOLOV5源码的文件结构解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • ①py、cpp、java后缀的文件
    • ②md、txt、yml后缀的文件
    • ③yaml后缀的文件
  • 一、.github文件夹
    • 1.1 workflows文件夹:该文件夹通常包含GitHub Actions 的工作流程配置文件。
    • 1.2 ISSUE_TEMPLATE文件夹:该文件用于定义GitHub 仓库的 Issue 模板,可以规范化用户提交的 Issue 内容,提高 Issue 的质量和可读性。
  • 二、classify文件夹
  • 三、data文件夹
    • 3.1 hyps文件:模型训练时存放yaml格式的超参数配置文件
      • ①. hyps.scratch-high.yaml #数据增强高,适用于大型型号,即v3、v3-spp、v5l、v5x. hyps.scratch-low.yaml #数据增强低,适用于较小型号,即v5n、v5s. hyps.scratch-med.yaml #数据增强中,适用于中型型号。即v5m
    • 3.2. images文件:存放着官方给的两张测试图片
    • 3.3 . scripts #存放数据集和权重下载shell脚本
      • 这些数据集的yaml文件有什么用?
  • 四、models文件夹:神经网络构建的配置文件和一些函数
    • 4.1 hub文件夹
    • ①anchors.yaml # cOCo数据的默认锚点
    • ②yolov5m6.yaml #yolov5的版本6的神经网络配置
    • 4.2 segment文件夹
    • 4.3 同级的几个py文件
  • 五、runs文件夹:运行后输出一个模型的相关结果
  • 六、utils文件夹
  • 七、其他一级目录的文件
  • 八、总结一下


前言

先看一下

在这里插入图片描述
这里我想先介绍一些关于yolo源码中不同.后缀文件的区别:

①py、cpp、java后缀的文件

.py、.cpp 和 .java 是常见的文件后缀名,分别代表Python、C++ 和 Java 编程语言的源代码文件。

.py 文件:是Python编程语言的源代码文件后缀名。Python源代码文件通常以 .py 结尾,可以使用Python解释器来执行这些文件中的代码。

.cpp 文件:是C++编程语言的源代码文件后缀名。C++源代码文件通常以 .cpp 结尾,可以使用C++编译器将这些文件编译成可执行程序。

.java 文件:是Java编程语言的源代码文件后缀名。Java源代码文件通常以 .java 结尾,可以使用Java编译器将这些文件编译成字节码文件,然后在Java虚拟机上运行。

②md、txt、yml后缀的文件

.md、.txt 和 .yml 是常见的文件后缀名,分别代表Markdown、文本文件和YAML文件。这些文件后缀名通常用于标识不同类型的文本文件,让计算机系统和应用程序能够识别并正确处理这些文件。

.md 文件:是Markdown文件的后缀名。Markdown是一种轻量级标记语言,用于简单而直观地排版文本,常用于编写文档、博客文章、README 文件等。Markdown文件通常以 .md 结尾,可以使用各种Markdown编辑器或在线编辑器来编辑和预览这些文件。

.txt 文件:是文本文件的后缀名。文本文件是一种纯文本格式的文件,通常包含人类可读的文本内容,不包含格式化样式或特殊的编码。文本文件可以使用任何文本编辑器打开和编辑,是最简单的文件格式之一。

.yml 文件:是YAML文件的后缀名。YAML是一种人类可读的数据序列化格式,常用于配置文件、数据传输等场景。YAML文件通常以 .yml 或 .yaml 结尾,可以使用各种编程语言的YAML解析库来读取和处理这些文件。

③yaml后缀的文件

.yaml 文件是一种常见的文件格式后缀名,代表 YAML(YAML Ain’t Markup Language)文件。YAML是一种人类可读的数据序列化格式,旨在成为一种简洁、直观的数据表示方式,适用于配置文件、数据传输、文档等多种应用场景。

YAML 文件通常以 .yaml 或 .yml 结尾,使用一种类似于缩进的方式来表示数据结构,包括标量值、列表、字典等。YAML 文件常用于配置文件、数据传输、API 接口定义等场景,被广泛应用于软件开发和系统管理中。许多编程语言都提供了对 YAML 文件的解析和生成库,方便开发人员读取和处理 YAML 格式的数据。

一、.github文件夹

在一个GitHub仓库中,.github文件夹通常用于存放与GitHub仓库管理和GitHub Actions 相关的配置文件和设置。
在这里插入图片描述
具体来说,.github文件夹中可能包含以下内容:

1.1 workflows文件夹:该文件夹通常包含GitHub Actions 的工作流程配置文件。

1.2 ISSUE_TEMPLATE文件夹:该文件用于定义GitHub 仓库的 Issue 模板,可以规范化用户提交的 Issue 内容,提高 Issue 的质量和可读性。

总的来说,.github文件夹中的内容主要用于规范化GitHub 仓库的管理流程,提高团队协作效率,以及利用GitHub Actions 实现自动化构建和部署。这些配置文件和设置有助于提升项目的质量和可维护性。

所以这个文件夹一般来说不重要,可以不看。

二、classify文件夹

三、data文件夹

在这里插入图片描述
data文件夹主要是存放一些超参数的配置文件(如.yaml文件),是用来配置训练集和测试集还有验证集的路径的,其中还包括目标检测的种类数和种类的名称;还有一些官方提供测试的图片。

YOLOv5有大约30个超参数用于各种训练设置。更好的初始猜测会产生更好的最终结果,因此在演化之前正确初始化这些值很重要。
如果是训练自己的数据集的话,那么就需要修改其中的yaml文件。不过要注意,自己的数据集不建议放在这个路径下面,建议把数据集放到YOLOv5项目的同级目录下面。

详解:

3.1 hyps文件:模型训练时存放yaml格式的超参数配置文件

①. hyps.scratch-high.yaml #数据增强高,适用于大型型号,即v3、v3-spp、v5l、v5x. hyps.scratch-low.yaml #数据增强低,适用于较小型号,即v5n、v5s. hyps.scratch-med.yaml #数据增强中,适用于中型型号。即v5m

比如med文件:
在这里插入图片描述
lr0:初始学习率,控制模型参数的更新速度。在这个示例中,初始学习率为0.01。
lrf:OneCycleLR学习率的最终值,通常是初始学习率乘以一个系数。在这里,最终学习率为初始学习率的10倍。
momentum:SGD动量或Adam优化器的beta1参数,用于加速优化过程。
weight_decay:优化器的权重衰减参数,用于控制模型的复杂度。
warmup_epochs:预热训练的轮数,用于在训练初期逐渐增加学习率。
box、cls、obj:损失函数中不同部分的权重,用于平衡不同损失项的重要性。
iou_t:IoU训练阈值,用于目标检测中的真实框和预测框匹配。
mosaic、mixup、flipud等:数据增强技术的概率,用于增加训练数据的多样性。

这些超参数是干嘛的呢?

这些超参数通常用于训练深度学习模型时进行调优和优化,以影响模型的训练过程和性能。以下是这些超参数在训练过程中的作用和含义:
学习率(learning rate):控制模型参数更新的速度,过大的学习率可能导致模型不稳定,而过小的学习率可能导致训练过慢或陷入局部最优解
动量(momentum):对于优化算法(如SGD、Adam)来说,动量可以帮助加速收敛过程,避免陷入局部最优解。
权重衰减(weight decay):用于控制模型的复杂度,防止过拟合。通过惩罚较大的权重值,可以使模型更加简单且泛化能力更强。
损失函数中不同部分的权重:在多任务学习或复杂损失函数中,不同部分的权重可以调整损失函数中各项的重要性,以平衡不同损失项的影响。
数据增强技术的概率:数据增强可以增加训练数据的多样性,提高模型的泛化能力。通过调整数据增强的概率,可以控制不同的数据增强技术在训练中的应用程度。
预热训练轮数(warmup epochs):在训练初期逐渐增加学习率,有助于稳定训练过程,避免模型在初始阶段出现不稳定的情况。

3.2. images文件:存放着官方给的两张测试图片

在这里插入图片描述
在这里插入图片描述

公交车和齐达内

3.3 . scripts #存放数据集和权重下载shell脚本

在这里插入图片描述
①. Argoverse.yaml #Argoverse数据集的配置文件
②. coco.yaml # cOCO数据集配置文件
③. coco128.yaml# cOCo128数据集配置文件
④GlobalWheat2020.yaml 数据集
⑤imageNet.yaml 数据集
⑥object365.yaml
⑦SKU-110K
⑧VisDrone.yaml
⑨VOC.yaml
⑩Xview.yaml

这些基本就是一些数据集的配置文件,下面介绍一下这些数据集:

Argoverse:Argoverse数据集是专为自动驾驶领域设计的数据集,包含了大规模的自动驾驶场景数据,如高清地图、传感器数据、车辆轨迹等。这些数据可用于自动驾驶系统的训练、测试和评估。

COCO:COCO数据集是一个用于目标检测、图像分割和关键点检测的大规模数据集,包含了超过33万张图像和80个不同类别的物体实例标注。

COCO128:COCO128是COCO数据集的一个子集,包含了128个类别的物体实例标注,适用于小规模目标检测和分类任务。

GlobalWheat2020:Global Wheat Detection 2020数据集是专为小麦检测任务设计的数据集,包含了各种小麦植株的图像和标注信息,用于推动农业领域的图像识别技术。

ImageNet:ImageNet是一个用于图像分类任务的大规模数据集,包含了超过1400万张图像和1000个类别,是深度学习领域中常用的基准数据集之一。

Object365:Object365数据集包含365个类别的目标检测数据,用于更广泛的目标检测任务和多类别物体识别。

SKU-110K:SKU-110K数据集是一个用于商品识别和检测的数据集,包含了11万个SKU(库存单位)的商品图像和标注信息。

VisDrone:VisDrone数据集是专为无人机视觉任务设计的数据集,包含了各种场景下的无人机图像和标注信息,用于目标检测、跟踪和行为分析。

VOC:VOC数据集是一个常用的目标检测和图像分割数据集,包含了20个类别的物体标注信息,用于评估目标检测和分割算法的性能。

xView:xView数据集是一个用于灾害响应和地理信息分析的数据集,包含了各种自然灾害场景的高分辨率图像和标注信息,用于灾害监测和应急响应。

这些数据集的yaml文件有什么用?

这些数据集的 YAML 文件通常用于存储数据集的配置信息,包括数据集的路径、类别标签、数据预处理方式等。具体来说,YAML 文件在计算机视觉领域的数据集中扮演着以下几个重要的作用:

数据集配置信息:YAML 文件可以包含数据集的元数据信息,如数据路径、类别标签、数据划分方式等。这些信息对于加载和处理数据集非常重要。

数据预处理参数:YAML 文件可以定义数据预处理的参数,如图像大小、归一化方式、数据增强方式等。这些参数在训练和评估模型时需要用到。

训练参数设置:有时候,YAML 文件还可以包含训练过程中的超参数设置,如学习率、优化器类型、批量大小等。这些参数可以帮助用户灵活地调整训练过程。

数据集统计信息:YAML 文件中可能还包含数据集的统计信息,如数据样本数量、类别分布情况等。这些信息有助于用户了解数据集的特点。

四、models文件夹:神经网络构建的配置文件和一些函数

4.1 hub文件夹

在这里插入图片描述
models是模型文件夹。里面主要是一些网络构建的配置文件和函数,其中包含了该项目的四个不同的版本,分别为是s、m、l、x.
从名字就可以看出,这几个版本的大小。他们的检测速度分别都是从快到慢,但是精确度分别是从低到高。如果训练自己的数据集的话就需要修改这里面相对应的yaml文件来训练自己模型。

详解:

. hub#存放yolov5各版本目标检测网络模型配置文件
. anchors.yaml # cOCo数据的默认锚点
. yolov3-spp.yaml # 带spp的yolov3. yolov3-tiny.yaml #精简版yolov3. yolov3.yaml # yolov3
. yolov5-bifpn.yaml#带二值fpn的yolov5l. yolov5-fpn.yaml # 带fpn的yolov5
. yolov5-p2.yaml # (P2,P3,P4,P5)都输出,宽深与large版本相同,相当于比large版本能检测更小物体. yolov5-p34.yaml #只输出(P3,P4),宽深与small版本相同,相当于比small版本更专注于检测中小物体. yolov5-p6.yaml #(P3,P4,P5, P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体
. yolov5-p7.yaml #(P3,P4,P5,P6,P7)都输出,宽深与large版本相同,相当于比large版本能检测更更大物体. 
yolov5-panet.yaml # 带PANet的yolov5l
. yolov5n6.yaml #(P3,P4,P5,P6)都输出,宽深与nano版本相同,相当于比nano版本能检测更大物体,anchor已预定义。 yolov5s6.yaml #(P3, P4,P5,P6)都输出,宽深与small版本相同,相当于比small版本能检测更大物体,anchor已预定义. yolov5m6.yaml#(P3, P4,P5,P6)都输出,宽深与middle版本相同,相当于比middle版本能检测更大物体,anchor已预定义.
yolov5l6.yaml #(P3,P4,P5,P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体,anchor已预定义
推测是作者做实验的产物
yolov5x6.yaml#(P3,P4,P5,P6)都输出,宽深与Xlarge版本相同,相当于比Xlarge版本能检测更大物体,anchor已预定义. yolov5s-ghost.yaml # backbone的卷积换成了GhostNet形式的yolov5s,anchor已预定义
.yolov5s-transformer.yaml # backbone最后的C3卷积添加了Transformer模块的yolov5s,anchor已预定义

①anchors.yaml # cOCo数据的默认锚点

anchors.yaml文件通常用于目标检测任务中的目标检测器(如YOLO、Faster R-CNN等)中,用于定义目标检测器的anchor boxes(锚框)的大小和比例。锚框是一种预定义的边界框,用于在图像中生成候选目标区域,以便目标检测器可以预测目标的位置和类别。

在anchors.yaml文件中,通常会包含以下信息:
Anchor Box的数量:定义了目标检测器使用的anchor boxes的数量。
Anchor Box的尺寸和比例:指定每个anchor box的宽度、高度以及宽高比,通常以像素为单位。
Anchor Box的缩放因子:有时候还会包含anchor box的缩放因子,用于在不同尺度的特征图上生成不同大小的anchor boxes。

②yolov5m6.yaml #yolov5的版本6的神经网络配置

# Parameters
nc: 80 # number of classes
depth_multiple: 0.67 # model depth multiple
width_multiple: 0.75 # layer channel multiple
anchors:
  - [19, 27, 44, 40, 38, 94] # P3/8
  - [96, 68, 86, 152, 180, 137] # P4/16
  - [140, 301, 303, 264, 238, 542] # P5/32
  - [436, 615, 739, 380, 925, 792] # P6/64

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [
    [-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
    [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
    [-1, 3, C3, [128]],
    [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
    [-1, 6, C3, [256]],
    [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
    [-1, 9, C3, [512]],
    [-1, 1, Conv, [768, 3, 2]], # 7-P5/32
    [-1, 3, C3, [768]],
    [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64
    [-1, 3, C3, [1024]],
    [-1, 1, SPPF, [1024, 5]], # 11
  ]

# YOLOv5 v6.0 head
head: [
    [-1, 1, Conv, [768, 1, 1]],
    [-1, 1, nn.Upsample, [None, 2, "nearest"]],
    [[-1, 8], 1, Concat, [1]], # cat backbone P5
    [-1, 3, C3, [768, False]], # 15

    [-1, 1, Conv, [512, 1, 1]],
    [-1, 1, nn.Upsample, [None, 2, "nearest"]],
    [[-1, 6], 1, Concat, [1]], # cat backbone P4
    [-1, 3, C3, [512, False]], # 19

    [-1, 1, Conv, [256, 1, 1]],
    [-1, 1, nn.Upsample, [None, 2, "nearest"]],
    [[-1, 4], 1, Concat, [1]], # cat backbone P3
    [-1, 3, C3, [256, False]], # 23 (P3/8-small)

    [-1, 1, Conv, [256, 3, 2]],
    [[-1, 20], 1, Concat, [1]], # cat head P4
    [-1, 3, C3, [512, False]], # 26 (P4/16-medium)

    [-1, 1, Conv, [512, 3, 2]],
    [[-1, 16], 1, Concat, [1]], # cat head P5
    [-1, 3, C3, [768, False]], # 29 (P5/32-large)

    [-1, 1, Conv, [768, 3, 2]],
    [[-1, 12], 1, Concat, [1]], # cat head P6
    [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)

    [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)
  ]

Parameters:这部分包含了模型的一些参数设置,如类别数量(nc: 80)、模型深度倍数(depth_multiple: 0.67)、层通道倍数(width_multiple: 0.75)以及每个输出层对应的锚框信息。在这里,每个输出层都有自己的一组锚框,用于目标检测。

YOLOv5 v6.0 backbone:这部分描述了模型的主干网络(backbone),包括了一系列卷积层(Conv)、C3块(C3)和SPPF块(SPPF),用于提取图像特征

YOLOv5 v6.0 head:这部分描述了模型的头部结构(head),包括了一系列卷积层(Conv)、上采样层(nn.Upsample)、拼接层(Concat)和C3块(C3),用于生成目标检测的输出

Detect:最后一部分是Detect层,用于在不同尺度的特征图上进行目标检测,生成最终的检测结果。这里的锚框信息会被传递给Detect层,用于目标检测。

整个代码段描述了一个完整的目标检测模型的结构,包括了主干网络、头部结构和检测层的设置。

4.2 segment文件夹

在这里插入图片描述

4.3 同级的几个py文件

在这里插入图片描述
. int.py#空的,里面什么都没有

. common.py #放的是一些网络结构的定义通用模块,包括autopad、Conv、DWConv、TransformerLayer等,这个文件比较复杂,总共一千多行,后面再慢慢分析。

. experimental.py#实验性质的代码,包括MixConv2d、跨层权重Sum等

. tf.py # tensorflow版的yolov5代码

. yolo.py # yolo的特定模块,包括BaseModel,DetectionModel,ClassificationModel,parse_model等

这几个py文件其实都很有深意,后面专门写一篇来进行分析。

五、runs文件夹:运行后输出一个模型的相关结果

在这里插入图片描述
这里由于我还没有开始训练一个自己的模型,因此就暂时不写这部分的内容,等后续再补充吧

六、utils文件夹

在这里插入图片描述
utils存放的是工具类的函数,里面有loss函数, metrics函数, plots函数等等。
详解:
●aws #恢复中断训练, 和aws平台使用相关的工具
●flask_ rest api #和flask相关的工具
●google
app engine #和谷歌app引擎相关的工具
●loggers #日志打印.
● init_ .py # notebook的初始化, 检查系统软件和硬件
●activations.py #激活函数
●augmentations #存放各种图像增强技术
●autoanchor.py # 自动生成锚框
●autobatch.py #自动生成批量大小
●benchmarks.py #对模型进行性能评估(推理速度和内存占用上的评估)
●callbacks.py #回调函数,主要为logger服务
●datasets # dateset和dateloader定义代码
,downloads.py #谷歌云盘内容下载
●general.py #全项目通用代码,相关实用函数实现
●loss.py #存放各种损失函数
●metrics.py #模型验证指标,包括ap,混淆矩阵等
●plots.py #绘图相关函数,如绘制loss、 ac曲线, 还能单独将一 个bbox存储为图像
,torch
_utils.py #辅助函数

七、其他一级目录的文件

在这里插入图片描述
.dockerignore # docker的ignore文件
.gitattributes#用于将.ipynb后缀的文件剔除GitHub语言统计.
.gitignore# docker的ignore文件
.CONTRIBUTING.md # markdown格式说明文档
. detect.py#目标检测预测脚本
. export.py #模型导出
. hubconf.py # pytorch hub相关
.LICENSE#证书
README.md # markdown格式说明文档
. requirements.txt #可以通过pip install requirement进行依赖环境下载
. setup.cfg # 项目打包文件
. train.py#目标检测训练脚本
. tutorial.ipynb #目标检测上手教程. val.py #目标检测验证脚本
. yolov5s.pt # coco数据集模型预训练权重,运行代码的时候会自动从网上下载

这里面最重要的几个文件是:
①推理部分:detect.py
②训练部分:train.py
③验证部分:val.py

由于代码量比较大,所以我会放到下一节进行分析。

八、总结一下

我认为yolov5的源码基本以两个部分的文件为核心,一个是.yaml文件,另一个是.py文件
yaml文件一个是关于数据集的配置,一个是关于神经网络结构的配置。
.py文件一个是关于一些工具类的配置,一个是关于推理、训练、验证方面的配置

后续几篇文章将深入解析这些文件的内容:

①推理部分:detect.py
②训练部分:train.py
③验证部分:val.py
④配置文件:yolov5s.yaml‘
⑤网络结构之:yolo.py
⑥网络结构之:common.py

为了完成一个深度学习目标检测的全过程,会按照以下顺序进行:

①配置部分(yolov5s.yaml):用于确定yolov5的网络结构和参数,包括模型的架构、数据预处理方式、训练参数等重要信息

②工具部分(yolo.py、common.py):提供一些函数,用于辅助后续部分,包括定义网络结构、损失函数、激活函数等

③训练部分(train.py):首先,使用训练部分的代码(train.py)来训练模型。在训练过程中,模型会根据训练数据集进行参数更新,以便更好地识别目标物体。

④验证部分(val.py):在训练过程中,通常会使用验证部分的代码(val.py)来评估模型在验证数据集上的性能。这有助于监控模型的泛化能力和避免过拟合。

⑤推理部分(detect.py):最后,在完成训练和验证后,可以使用推理部分的代码(detect.py)来对新的图像或视频进行目标检测。推理部分通常用于实际应用场景中使用训练好的模型进行预测。

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

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

相关文章

vue provide 与 inject使用

在vue项目中,如果遇到跨组件多层次传值的话,一般会用到vuex,或者其他第三方共享状态管理模式,如pinia等,但是对于父组件与多层次孙子组件时,建议使用provide 与 inject,与之其他方式相比&#x…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-2、线条平滑曲面(原始颜色)但不去除无效点

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

CTR之行为序列建模用户兴趣:DIEN

前言 在上一篇文章中 CTR之行为序列建模用户兴趣:DIN,开启了用户行为序列建模用户兴趣的篇章。DIN引入了Attention机制,对于不同的候选item,可以根据用户的历史行为序列,动态地学习用户的兴趣表征向量。但是&#xff…

智慧城市与智慧乡村:共创城乡一体化新局面

一、引言 随着科技的不断进步和城乡发展的日益融合,智慧城市与智慧乡村的建设已成为推动城乡一体化发展的新引擎。智慧城市利用物联网、大数据、云计算等先进技术,实现城市治理、公共服务、产业发展等领域的智能化;而智慧乡村则借助现代科技…

【GO】HTTP标准库1 - http协议基础知识

目录 一 http协议 1 http协议 2 http request 3 请求方法 4 URL 5 协议版本 6 请求头 7 Content-type 9 POST与GET区别 10 HTTP Response 11 常见的状态与话术 12 HTTP 响应头 13 完整的HTTP响应 14 HTTPS 一 http协议 1 http协议 HTTP(HyperText Tra…

【开源】SpringBoot框架开发智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

网工内推 | 数据库工程师,最高35k*14薪,OCP认证优先,带薪年假

01 洛轲智能 招聘岗位:数据库工程师 职责描述: 1. 负责数据库备份及恢复策略制定; 2. 负责数据库性能分析及调优; 3. 负责数据库相关项目的方案制定、评测、投产实施和维护管理; 4. 数据库日常运维工作: -…

爬虫技术之正则提取静态页面数据

第一天 简单示例 在爬虫过程中,我们获取到了页面之后,通常需要做的就是解析数据,将数据持久化到数据库为我所用。如何又快又准确得提取有效数据?这是一门技术,看了我的博客之前可能略有难度,但各位大师看…

LeetCode - 和为K的子数组

LCR 010. 和为 K 的子数组 看到这道题的时候,感觉还挺简单的,找到数组中和为k的连续子数组的个数,无非就是一个区间减去另一个区间的和等于k,然后想到了用前缀和来解决这道问题。再算连续子数组出现的个数的时候,可以使…

体检业务数字化管理平台,健康体检管理系统(PEIS)源码

健康体检管理系统(PEIS)源码,自动生成体检报告,提供查询、统计和分析功能 健康体检管理系统(PEIS)可以建立完整的健康档案,系统实现了与HIS系统的无缝连接,着重于临床信息系统的应用…

【更新】数字金融与企业ESG表现:效应、机制与“漂绿”检验数据集(2011-2022年)

参照温亚东(2024)的做法,本团队对来自统计与决策《数字金融与企业ESG表现:效应、机制与"漂绿"检验》一文中的基准回归部分进行复刻 一、数据介绍 数据名称:数字金融与企业ESG表现 参考期刊:《统…

布隆过滤器(做筛选器索引)

什么是布隆过滤器 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。 它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是…

【数据结构】初识二叉搜索树(Binary Search Tree)

文章目录 1. 二叉搜索树的概念2. 二叉搜索树的操作1.1 二叉搜索树的查找1.2 二叉搜索树的插入1.3 二叉搜索树的删除 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树,它可能是一棵空树,也可能是具有以下性质的二叉树: 若它的左子树不为空&am…

构造方法/构造器

1、构造器的介绍 2、构造器的快速入门 3、 注意事项和使用细节 4、 javap的使用----反编译

封装的echarts子组件使用watch监听option失效的问题

项目场景: 我在项目里面封装了一个echarts组件,组件接收一个来自外部的option,然后我用了一个watch函数去监听这个option的变化,option变化之后,销毁,然后再新建一个charts表 碎碎念 问题如标题所示,这篇…

每日面经03

1.String一些方法? 答:length()方法是获取字符串长度,charAt(int index)是返回指定索引的字符,equals(Object anther)比较两个字符串的内容是否完全相同,compareTo(String s)按照字典顺序比较两个字符串,相…

vscode使用remote-ssh免密连接服务器

你还在使用XShell、Hyper、FinalShell等等SSH客户端软件吗,作为前端的我们,一直在用的功能强大的开发工具vscode,早已实现SSH连接功能(借助官方提供的插件)。而且更加好用,可以直接打开服务器上的文件&…

如何在Linux使用docker安装Plik并实现无公网ip上传下载内网存储的文件资源

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默&…

内网穿透的应用-如何在Linux系统Docker安装JSON Crack并实现远程访问本地数据

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序,能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

javaEE5(javascript/jquery附加作业(选做))

在网页结尾嵌入一段javascript/jquery代码,作用:将网页中所有粗体字(strong标签包裹的文字)以链接方式提取出来作为提纲,放到页面右上角,点击它,文章定位到相应位置(附件两个文件可作…