当前位置: 首页 > news >正文

wordpress远程安装教程/推广seo是什么意思

wordpress远程安装教程,推广seo是什么意思,知名的网页制作公司服务好,大秦wordpress付费阅读1. CenterNet简介 CenterNet采用了一种新的检测思路,即以目标中心点为基础,直接回归出目标的位置和大小。而传统的目标检测算法通常会先产生大量候选框(Anchor),再通过分类器进行筛选,这种方法比较复杂。C…

1. CenterNet简介

CenterNet采用了一种新的检测思路,即以目标中心点为基础,直接回归出目标的位置和大小。而传统的目标检测算法通常会先产生大量候选框(Anchor),再通过分类器进行筛选,这种方法比较复杂。CenterNet在准确率上比传统算法更好。相对于传统算法,CenterNet有更快的速度,因为采用端到端模型,没有二阶段修正,因此可以更快地进行目标检测。其AP精度相较YOLOCornerNet均有明显提高,相对于R-CNN方法有较大优势。下图为CenterNet在COCO数据集中的表现。

 2. 环境配置

训练环境Ubuntu20.04+Pytorch1.4+cuda10.4,笔者的训练硬件为RTX2080Ti(22G显存)。GPU驱动配置请参考:《环境感知算法——1.简介与GPU驱动、CUDA和cudnn配置》。

1)配置CenterNet虚拟环境

下面为在Anaconda虚拟环境中,配置运行CenterNet的环境。

conda create --name CenterNet python=3.6
conda activate CenterNet
conda install cudatoolkit=10.1
conda install --channel https://conda.anaconda.org/nvidia cudnn
conda install pytorch==1.4.0
pip install torchvision==0.5.0
pip install --upgrade jupyter_client

测试torch是否调用了虚拟环境中的cuda(在conda虚拟环境中不可以使用nvcc -V查看cuda信息):

进入CenterNet虚拟环境后,使用下列代码查看虚拟环境中的cuda版本:

# 使用python进入,exit()退出
import torch
print(torch.version.cuda)
print(torch.backends.cudnn.version())

测试显卡的算力:

AIscore = torch.cuda.get_device_capability()
AIscore = f'{AIscore[0]}{AIscore[1]}'
print(AIscore)

2) 下载CenterNet代码包

CenterNet源工程在GitHub的链接如下:

https://github.com/xingyizhou/CenterNethttps://github.com/xingyizhou/CenterNet

如果安装有git可以采用以下代码下载(或直接从Github页面下载压缩包文件后解压):

CenterNet_ROOT=/home/yaoyao/Documents/CenterNet # 视实际下载目录更改
git clone https://github.com/xingyizhou/CenterNet $CenterNet_ROOT

注意上述代码的位置应根据实际情况更改,并且目标目录不得存在名称为CenterNet的文件夹(否则会报错)。笔者下载CenterNet源代码的位置如下,请视自己实际目录情况修改:

CenterNet_ROOT=/home/yaoyao/Documents/CenterNet 

后续代码中CenterNet_ROOT请替换为对应CenterNet的目录。

3)替换DCNv2文件

源工程中的DCNv2并不适合于cuda10.0之后的版本,需要下载修改后的版本。下面链接给出了一个在本环境中经过测试可行的DCNv2版本。

https://github.com/CharlesShang/DCNv2https://github.com/CharlesShang/DCNv2

为了替换下载DCNv2,请逐步执行以下步骤:

# 切换至CenterNet中CenterNet所在目录
cd CenterNet_ROOT/src/lib/models/networks/
# 删除源程序中的DCNv2
rm -r DCNv2/
# 下载修改后、满足当前cuda版本的DCNv2
git clone https://github.com/CharlesShang/DCNv2.git

4)编译并测试DCNv2

# 编译DCNv2
cd CenterNet_ROOT/src/lib/models/networks/DCNv2
python setup.py build develop
# 测试DCNv2
cd CenterNet_ROOT/src/lib/models/networks/DCNv2
python testcpu.py
python testcuda.py

DCNv2需要使用python setup.py build develop编译(如果没有编译器需要补充安装gcc与g++等编译器)。DCNv2文件夹内分别基于CPU与GPU给出测试程序testcpu.py和testcuda.py。

编译过程中会出现部分Warning,可以忽略。若编译安装完成会提示:

DCNv2 0.1 is already the active version in easy-install.pthInstalled /home/yaoyao/Documents/CenterNet/src/lib/models/networks/DCNv2
Processing dependencies for DCNv2==0.1
Finished processing dependencies for DCNv2==0.1

此时,可以分别运行python testcpu.py和python testcuda.py测试DCNv2是否编译成功。

如果编译成功会出现:

check_gradient_dpooling: True
check_gradient_dconv:  True

如果出现了以下RuntimeError报错,笔者认为是正常现象(这个DCNv2版本可能也存在小问题但是不影响使用),可以反复重新运行testcpu.py和testcuda.py直至出现上列没有RuntimeError报错的结果。

Zero offset passed
/home/yaoyao/anaconda3/envs/CenterNet/lib/python3.6/site-packages/torch/autograd/gradcheck.py:242: UserWarning: At least one of the inputs that requires gradient is not of double precision floating point. This check will likely fail if all the inputs are not of double precision floating point. 'At least one of the inputs that requires gradient '
check_gradient_dpooling: True
Traceback (most recent call last):File "testcuda.py", line 265, in <module>check_gradient_dconv()File "testcuda.py", line 97, in check_gradient_dconveps=1e-3, atol=1e-4, rtol=1e-2))File "/home/yaoyao/anaconda3/envs/CenterNet/lib/python3.6/site-packages/torch/autograd/gradcheck.py", line 289, in gradcheck'numerical:%s\nanalytical:%s\n' % (i, j, n, a))File "/home/yaoyao/anaconda3/envs/CenterNet/lib/python3.6/site-packages/torch/autograd/gradcheck.py", line 227, in fail_testraise RuntimeError(msg)
RuntimeError: Jacobian mismatch for output 0 with respect to input 1,
numerical:tensor([[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.],...,[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.]])
analytical:tensor([[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.],...,[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.],[0., 0., 0.,  ..., 0., 0., 0.]])

5)修改并编译NMS

在CenterNet\src\lib\external中找到set.py文件,修改set.py中的代码,在第10行处注释掉#extra_compile_args=["-Wno-cpp", "-Wno-unused-function"]。

编译NMS需要安装Cython,使用pip安装:

pip install Cython

之后,使用以下代码进行编译:

cd CenterNet_ROOT/src/lib/external
python setup.py build_ext --inplace

编译成功后,终端将输出:

gcc -pthread -shared -B /home/yaoyao/anaconda3/envs/CenterNet/compiler_compat -L/home/yaoyao/anaconda3/envs/CenterNet/lib -Wl,-rpath=/home/yaoyao/anaconda3/envs/CenterNet/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/nms.o -o /home/yaoyao/Documents/CenterNet/src/lib/external/nms.cpython-36m-x86_64-linux-gnu.so

此时,在.../CenterNet/src/lib/external文件夹内,将出现编译后的可执行文件nms.cpython-36m-x86_64-linux-gnu.so。

6)下载pth文件

CenterNet作者在Google Drive中放置了多个训练完成的.pth文件。

MODEL_ZOO.mdhttps://github.com/xingyizhou/CenterNet/blob/master/readme/MODEL_ZOO.md

以下载ctdet_coco_dla_2x为例,将其放入.../CenterNet/models中,模型大小为80.9MB,训练自COCO train 2017训练集。

接下来,需要进入.../CenterNet/code/src/lib/models/networks文件夹,找到pose_dla_dcn.py,并注释掉约309行处dla34函数的if pretrained代码段:

def dla34(pretrained=True, **kwargs):  # DLA-34model = DLA([1, 1, 1, 2, 2, 1],[16, 32, 64, 128, 256, 512],block=BasicBlock, **kwargs)# if pretrained:#     model.load_pretrained_model(data='imagenet', name='dla34', hash='ba72cf86')return model

7)安装必要的Python库

为了避免出现cvShowImage错误:

cv2.error: OpenCV(4.7.0) /tmp/pip-install-nqqlbtpw/opencv-contrib-python_7d60b527e6514716a754388095cd100d/opencv/modules/highgui/src/window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

需要在安装OpenCV前,安装一些必要的系统程序:

sudo apt-get install libgtk2.0-dev pkg-config

定位至.../CenterNet/src文件夹,安装所需Python包。

cd CenterNet_ROOT/src
conda install Cython numba progress matplotlib scipy
pip install opencv-contrib-python
pip install easydict

如果希望重新下载和从源码编译安装opencv-contrib-python,可相应更改代码如下:

pip install --no-cache-dir --no-binary opencv-contrib-python opencv-contrib-python

此外,还需要下载评估Kitti数据集所需的ddd_3dop模型:

KITTI 3DOP split modelhttps://github.com/xingyizhou/CenterNet/blob/master/readme/MODEL_ZOO.md#:~:text=Download-,ddd_3dop,-2

8)测试demo

在CenterNet/images文件夹内,有几个用于测试的图片文件。使用以下代码对于下载的.pth文件在demo图片上进行测试。

cd CenterNet_ROOT/src
python demo.py ctdet --demo ../images/16004479832_a748d55f21_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth

上述代码内,16004479832_a748d55f21_k.jpg为两只可爱的小狗,使用CenterNet识别这张demo图片的结果如下:

此步完成,证明各DCNv2、NMS、OpenCV等库安装正确,也可以直接使用该.pth文件进行目标定位与分类。

9)安装COCO API

COCO 数据集是一个大型图像数据集,主要用于目标检测、分割和字幕等计算机视觉任务。COCO API是一种用于处理和解析 COCO 数据集的库。COCO API 提供了一系列的函数和方法,使得用户能够有效地加载、解析和可视化 COCO 数据集。针对 COCO 数据集进行查询和分析、评估模型的性能、用于数据预处理和后处理等设计了API。

使用以下代码进行下载、编译与安装:

# 定位到CenterNet文件夹
cd CenterNet_ROOT
# git下载cocoapi
git clone https://github.com/cocodataset/cocoapi.git
# 进入PythonAPI
cd ./cocoapi/PythonAPI/
# 编译并安装
make
python setup.py install --user

若安装完成,终端内会显示:

Using .../anaconda3/envs/CenterNet/lib/python3.6/site-packages
Finished processing dependencies for pycocotools==2.0

也可以在Python环境中测试coco API,使用以下代码,若COCO顺利导入则说明COCOAPI安装成功。

import torch    
from pycocotools.coco import COCO

10)准备KITTI数据集

CenterNet对于COCO、Pascal VOC、KITTI等预处理链接如下:

https://github.com/xingyizhou/CenterNet/blob/master/readme/DATA.mdhttps://github.com/xingyizhou/CenterNet/blob/master/readme/DATA.md以KITTI数据集为例,在CenterNet项目文件夹内,需要将KITTI数据集整理为如下格式:

${CenterNet_ROOT}
|-- data
`-- |-- kitti`-- |-- training|   |-- image_2|   |-- label_2|   |-- calib|-- ImageSets_3dop|   |-- test.txt|   |-- train.txt|   |-- val.txt|   |-- trainval.txt`-- ImageSets_subcnn|-- test.txt|-- train.txt|-- val.txt|-- trainval.txt

下面为CenterNet/data/kitti文件夹内的training、ImageSets_3dop、ImageSets_subcnn等文件夹分别传入图像与标签数据。

a)training文件夹

涉及文件的源下载链接分别为 images, annotations,  calibrations ,需要首先登记邮箱后通过邮件收到下载地址后下载。或者,使用以下网盘链接:

Kitti数据集提取码:yao1https://pan.baidu.com/s/1xJLKJQYGpc3PsdvSPZV8ag?pwd=yao1

下载其中data_object_label_2.zip、data_object_image_2.zip、data_object_calib.zip及对应的.z01与.z02文件,并按照training文件夹格式,(分卷)解压 image_2、label_2、calib至相应位置。

b)ImageSets_3dop文件夹

从以下链接下载获得imagesets.tar.gz,解压后重命名为ImageSets_3dop。3DOPhttps://xiaozhichen.github.io/files/mv3d/imagesets.tar.gz

c)ImageSets_subcnn文件夹

从以下链接获取 SubCNN-master,并提取subcnn/fast-rcnn/data/KITTI/内的test.txt、train.txt、val.txt、trainval.txt至ImageSets_subcnn文件夹内。SubCNNhttps://github.com/tanshen/SubCNN/tree/master/fast-rcnn/data/KITTI

获取各个图像与标签文件后,还需要在CenterNet/data/kitti文件夹内新建两个文件夹annotations与images。

cd CenterNet_ROOT/data/kitti
# 新建annotations与images文件夹
mkdir images
mkdir annotations

再在tools目录下运行convert_kitti_to_coco.py脚本,用于将KITTI格式的注释转换为COCO格式。

cd CenterNet_ROOT/src/tools
python convert_kitti_to_coco.py

链接文件

cd CenterNet_ROOT/data/kitti
ln -s CenterNet_ROOT/data/kitti/training/image_2/  CenterNet_ROOT/data/kitti/images/trainval

整理后的data/kitti文件夹配置如下:

${CenterNet_ROOT}
|-- data
`-- |-- kitti`-- |-- annotations|   |-- kitti_3dop_train.json|   |-- kitti_3dop_val.json|   |-- kitti_subcnn_train.json|   |-- kitti_subcnn_val.json`-- images|-- trainval|-- test (CenterNet的原作者标注了此行,但实际不会生成本test行)

11)编译kitti_eval

编译kitti-eval前首先需要安装Boost 库:

sudo apt upgrade
sudo apt-get install libboost-all-dev

使用下列代码编译kitti-eval:

cd CenterNet_ROOT/src/tools/kitti_eval
g++ -o evaluate_object_3d_offline evaluate_object_3d_offline.cpp -O3

12)安装可视化结果文件所需的gnuplot与pdfcrop

sudo apt upgrade
sudo apt install gnuplot
sudo apt-get install texlive-extra-utils

13)评估预训练模型3dop

根据预训练模型评估KITTI数据集(不是训练,而是直接使用预训练模型进行评估)。经过此步骤,可以了解不同.pth的识别精确度,便于与自己的训练结果进行对比。

为了避免以下错误:

ERROR: Couldn't read: 000212.txt of ground truth. Please write me an email!
An error occured while processing your results.

 需要在CenterNet/src/lib/datasets/dataset/kitti.py中,第87行将label_val修改为label_2,即有

  def run_eval(self, results, save_dir):self.save_results(results, save_dir)os.system('./tools/kitti_eval/evaluate_object_3d_offline ' + \'../data/kitti/training/label_2 ' + \ #修改此处Line87'{}/results/'.format(save_dir))

针对第(7)步下载的ddd_3dop.pth进行评估,目标数据集为kitti 3dop。

cd CenterNet_ROOT/src/
python test.py ddd --exp_id 3dop --dataset kitti --kitti_split 3dop --load_model ../models/ddd_3dop.pth

评估过程如下图所示: 

评估完成后,在CenterNet/exp/ddd/3dop/plot文件夹内,可以获得Kitti数据集不同类别(包括Car、Cyclist、Pedestrian等)的识别精度,以P-R(Precision-Recall)表征,每个种类根据困难程度均分为Easy、Moderate、Hard三个难度。

预训练模型的识别结果:

a)二维定位(XXX_detection)

b)三维定位(XXX_detection_3d)

3. 训练模型

终于做完了全部准备工作,可以训练模型了!
取训练参数如下表:

batch_sizelrmaster_batchnum_epochs
63.125e-5570

训练模型调用代码如下:

cd CenterNet_ROOT/src
python main.py ddd --exp_id 3dop --dataset kitti --kitti_split 3dop --batch_size 6 --lr 3.125e-5 --master_batch 5  --num_epochs 70 --lr_step 45,60 --gpus 0

训练过程中,终端如下所示: 

可在另一个终端中使用以下代码查看GPU占用率(5s刷新一次显存占用与GPU情况):

watch -n 5 nvidia-smi   

Tips: batch_size为6时,GPU显存约占用7.4GB。

4. 训练结果分析

在CenterNet对于Kitti数据集完成了70epochs的训练后,/3dop文件夹内出现了model_45、model_60与model_best、model_best等pth模型文件(45/60因各人的训练代码设置而异)。

使用以下代码评估模型(Kitti数据集3000+图片上验证): 

python test.py ddd --exp_id 3dop --dataset kitti --kitti_split 3dop --load_model ../exp/ddd/3dop/model_last.pth 

评估训练获得的.pth模型文件,其结果除上述CenterNet/exp/ddd/3dop/plot的P-R图外,识别结果还以txt文本储存于.../exp/ddd/3dop/results内。 

下图为740号图片的识别结果,两辆Car均能识别。

下图为1625号图片的识别结果,在高速上堵车的工况下进行识别。

测试223号图片,元数据为Car / Car / Van / Misc / Person_sitting / DontCare ,但训练后检测为三个Car(如下图标记),错误地将Van(厢式货车)识别为了Car,由于Van和Car在较远、较小的情况下很难区别,因此发生了误识别。

可视化代码如下(注意修改对应的png目录与labels框数据)。

import cv2
import numpy as np# 读取图像和标签文件
img = cv2.imread('.../data/kitti/training/image_2/000740.png')
labels = [
'Car 0.0 0 -1.69 800.94 199.48 1244.19 366.32 1.41 1.61 3.87 2.93 1.50 5.22 -1.17 0.96',
'Car 0.0 0 2.06 419.74 180.67 640.23 306.54 1.55 1.62 4.07 -1.31 1.89 11.32 1.95 0.95',
]# 解析标签并可视化物体
for label in labels:label_parts = label.split(' ')object_type = label_parts[0]truncation = float(label_parts[1])occlusion = int(label_parts[2])alpha = float(label_parts[3])bbox_2d = np.array([float(p) for p in label_parts[4:8]])dims_3d = np.array([float(p) for p in label_parts[8:11]])location_3d = np.array([float(p) for p in label_parts[11:14]])rotation_y = float(label_parts[14])# 可视化标签cv2.rectangle(img, (int(bbox_2d[0]), int(bbox_2d[1])), (int(bbox_2d[2]), int(bbox_2d[3])), (0, 255, 0), 2)cv2.putText(img, object_type, (int(bbox_2d[0]), int(bbox_2d[1]) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)# 显示图像
cv2.imshow('Image with labels', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

相关文章:

环境感知算法——2.CenterNet基于KITTI数据集训练

1. CenterNet简介 CenterNet采用了一种新的检测思路&#xff0c;即以目标中心点为基础&#xff0c;直接回归出目标的位置和大小。而传统的目标检测算法通常会先产生大量候选框&#xff08;Anchor&#xff09;&#xff0c;再通过分类器进行筛选&#xff0c;这种方法比较复杂。C…...

JUC 高并发编程基础篇

JUC 高并发编程基础篇 • 1、什么是 JUC • 2、Lock 接口 • 3、线程间通信 • 4、集合的线程安全 • 5、多线程锁 • 6、Callable 接口 • 7、JUC 三大辅助类: CountDownLatch CyclicBarrier Semaphore • 8、读写锁: ReentrantReadWriteLock • 9、阻塞队列 • 10、ThreadPo…...

【十二】设计模式~~~行为型模式~~~命令模式(Java)

命令模式-Command Pattern【学习难度&#xff1a;★★★☆☆&#xff0c;使用频率&#xff1a;★★★★☆】 1.1. 模式动机 在软件设计中&#xff0c;我们经常需要向某些对象发送请求&#xff0c;但是并不知道请求的接收者是谁&#xff0c;也不知道被请求的操作是哪个&#xf…...

可再生能源的不确定性和储能系统的时间耦合的鲁棒性和非预期性区域微电网的运行可行性研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Revit中如何使创建的族文件内存变小

族文件的大小直接影响到项目文件的大小和软件运行速度&#xff0c;如何将族文件做的最小并且满足项目需求呢? 方法一&#xff1a;清除未使用项 1. 族制作完成可以把族文件中未用到的外部载入族或其他多余数据删掉&#xff0c;点击“管理”选项卡下拉的“清除未使用项”命令; 2…...

ClassLoader源码

介绍 ClassLoader 顾名思义就是类加载器 ClassLoader 是一个抽象类 没有父类 作用 1.负责将 Class 加载到 JVM 中 2.审查每个类由谁加载&#xff08;父优先的等级加载机制&#xff09; 3.将 Class 字节码重新解析成 JVM 统一要求的对象格式 常量&变量 //注册本地方法…...

Kafka分区消息积压排查指南

针对某个TOPIC只有几个分区积压的场景&#xff0c;可以采用以下方法进行排查&#xff1a; 消息生产是否指定key&#xff1f; 如果指定了消息key&#xff0c;那么消息会指定生产到hash(key)的分区中。如果指定了key&#xff0c;那么有下列几种可能&#xff1a; 生产该key的消息体…...

数据库 期末复习(4) 概念数据库的设计

第一部分 为啥要引入概念数据库 感觉只有一个重点 实体联系模型----ER模型 第二部分-----实体联系模型 这个例子可以全看完之后再来看 举个例子:根据COMPANY数据库的需求来构造数据库模式:The company is organized into DEPARTMENTs. Each department has a name, number …...

WuThreat身份安全云-TVD每日漏洞情报-2023-05-26

漏洞名称:Barracuda Email Security Gateway TAR文件命令注入 漏洞级别:严重 漏洞编号:CVE-2023-2868,CNNVD-202305-2128 相关涉及:Barracuda Email Security Gateway 5.1.3.001 漏洞状态:在野 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-12949 漏洞名称…...

关于Idea的一些常用设置项

1. 输出中文不乱码 设置工程项目编码 file -> settings -> Editor -> File Encodings-> 如下图通通UTF-8 2. 创建文件自动设置本文模板 File–>settings–>Editor–>File and Code Templates–>Includes -> 输入类注释模板 /*** Classname ${N…...

Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

引言 今天给大家分享一篇有关Python和Windows系统的文章。你有没有想过如何获取Windows系统的硬件信息&#xff1f;或者你是否曾经尝试过将Python脚本编译打包成可执行文件&#xff1f;如果你对这些问题感兴趣&#xff0c;那么这篇文章一定适合你。 背景 由于公司现阶段大多…...

JavaScript语句(七)

JavaScript语句 1、条件语句2、循环语句3、break 和 continue 语句4、异常处理语句4.1、抛出异常4.2、捕获异常4.3、处理异步代码块中的异常4.3.1、Promise4.3.2、async/await try-catch 4.4、处理未捕获的异常4.5、总结 1、条件语句 名称描述if当指定条件为 true 时&#xf…...

孪生诱捕网络在欺骗防御领域的应用

信息化在给人们带来便利的同时,网络信息安全问题也日益凸显。尤其是随着网络攻击由传统的盲目、直接、粗暴的方式转变为目前的精确化、持久化、隐匿式的恶意攻击,攻击过程中只需发现并利用一个未被修复的漏洞或不安全配置即可击破边界防御,试图将攻击者拒之门外的安全防护方…...

【性能测试】Jenkins+Ant+Jmeter自动化框架的搭建思路

前言 前面讲了Jmeter在性能测试中的应用及扩展。随着测试的深入&#xff0c;我们发现在性能测试中也会遇到不少的重复工作。 比如某新兴业务处于上升阶段&#xff0c;需要在每个版本中&#xff0c;对某些新增接口进行性能测试&#xff0c;有时还需要在一天中的不同时段分别进行…...

ARM体系结构与异常处理

目录 一、ARM体系架构 1、ARM公司概述 ARM的含义 ARM公司 2.ARM产品系列 3.指令、指令集 指令 指令集 ARM指令集 ARM指令集 Thumb指令集 &#xff08;属于ARM指令集&#xff09; 4.编译原理 5.ARM数据类型 字节序 大端对齐 小端对齐 …...

招聘网站—Hive数据分析

招聘网站—Hive数据分析 第1关&#xff1a;统计最热门的十种职业&#xff08;招聘人数最多&#xff09; #进入hive hive#在hive中创建数据库 mydb create database mydb;#使用数据库 mydb use mydb;#创建表 recruitcleaned 并使用"/t"分割字段 create table re…...

双指针滑动窗口整理1——长度最小的子数组、水果成篮

209. 长度最小的子数组 这篇文章主要是想针对这题 209. 长度最小的子数组&#xff0c;总结一下双指针或是滑动窗口的小细节。对于暴力算法&#xff0c;我们就不再阐释了。 算法原理&#xff1a; 滑动窗口主要是通过控制循环终止节点j&#xff0c;并移动i来缩放窗口。具体而言…...

textarea之换行、replace、\n、br、innerHTML

文章目录 前言换行符介绍JavaScript部分html部分 前言 textarea标签本身不识别换行功能&#xff0c;回车换行用的是\n换行符&#xff0c;输入时的确有换行的效果&#xff0c;但是渲染时就只是一个空格了。这时就需要利用换行符\n和br标签的转换进行处理。 换行符介绍 表格 序…...

SKD240

SKD240 系列智能电力仪表 SKD240 系列智能电力仪表是陕西斯科德智能科技有限公司自主研发、生产的。 产品概述 - 点击了解详情 SKD240采用先进的微处理器和数字信号处理技术&#xff08;内置主芯片采用32位单片机, 采用32位浮点型真有效值处理数据&#xff09;&#xff0c;测量…...

大数据采集怎么做呢?

随着互联网的发展&#xff0c;大数据已经成为了一个非常热门的话题。大数据采集是大数据分析的第一步&#xff0c;也是非常重要的一步。本文将介绍大数据采集的基本概念、采集的方法、采集的难点以及采集的注意事项等方面&#xff0c;希望能够对大家有所帮助。 一、大数据采集…...

【学习日记】操作系统-入门知识-个人学习记录

我的学习笔记链接&#xff1a; MyLinuxProgramming 参考资料 CSAPP操作系统导论OSTEP √APUEhttps://stevens.netmeister.org/631软件调试王道-操作系统操作系统真象还原小林coding-图解系统https://xiaolincoding.com嵌入式软件开发笔试面试指南Linux是怎样工作的2020 南京大…...

ChatGPT自动生成思维导图

&#x1f34f;&#x1f350;&#x1f34a;&#x1f351;&#x1f352;&#x1f353;&#x1fad0;&#x1f951;&#x1f34b;&#x1f349; ChatGPT自动生成思维导图 文章目录 &#x1f350;问题引入&#x1f350;具体操作markmapXmind &#x1f433;结语 &#x1f…...

count(0)、count(1)和count(*)、count(列名) 的区别

当我们对一张数据表中的记录进行统计的时候&#xff0c;习惯都会使用 count 函数来统计&#xff0c;但是 count 函数传入的参数有很多种&#xff0c;比如 count(1)、count(*)、count(字段) 等。 到底哪种效率是最好的呢&#xff1f;是不是 count(*) 效率最差&#xff1f; 一.…...

python爬虫入门,10分钟就够了,这可能是我见过最简单的基础教学

一、基础入门 1.1什么是爬虫 爬虫(spider&#xff0c;又网络爬虫)&#xff0c;是指向网站/网络发起请求&#xff0c;获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为&#xff0c;把站点返回的HTML代码/JSON数据/二进制数据&…...

华为OD机试真题 Java 实现【记票统计】【牛客练习题】

一、题目描述 请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。 (注:不合法的投票指的是投票的名字不存在n个候选人的名字中!!) 数据范围:每组输入中候选人数量满足 1≤n≤100 ,总票数量满足 1≤…...

.NET并行计算

一段很简答的&#xff0c;模拟多任务并发的测试代码。 private void button_Click(object sender, EventArgs e) { List<Action> actions new List<Action>(); for (int i 0; i < 30; i) { //匿…...

Python:Python编程:金融量化交易

金融量化交易 1. numpy2. scipy3. Pandas3.1 : Series 3.2&#xff1a; DataFrame代码示例 在金融量化交易中&#xff0c;下面几个模块是应用的比较广泛的 numpy (Numberic Python) : 提供大量的数值编程工具&#xff0c;可以方便的处理&#xff1a;向量矩阵等运算&#xff0c;…...

「HTML和CSS入门指南」canvas 标签详解

什么是 canvas 标签? 在 HTML 中,canvas 标签用于在网页中绘制图形、动画和其他复杂的视觉效果。它是一个独立的标签,并且可以使用 JavaScript 来操纵和渲染其内容。使用 canvas 标签可以帮助您创造交互性更强、生动更具吸引力的用户界面和体验。 canvas 标签的基本语法 以…...

【JS】1699- 重学 JavaScript API - WebSockets API

❝ 前期回顾&#xff1a; 1. Page Visibility API 2. Broadcast Channel API 3. Beacon API 4. Resize Observer API 5. Clipboard API 6. Fetch API 7. Performance API 8. Web Storage API ❞ WebSockets API 提供了一种在客户端和服务器之间建立持久连接的机制&#xff0c;使…...

String s = new String(“xyz“) 创建了几个对象?

这个问题相信每个学习 java 的同学都不陌生&#xff0c;作为一个经典的面试题&#xff0c;到现在工作这么多年了我真是认为挺操蛋的一个问题&#xff0c;在网上到现在你仍然可以看见很多讨论这个问题的人&#xff0c;其中不乏工作很多年的人都有争论&#xff0c;我认为还是有必…...