教你如何2小时从零开始搭建一套完整的性能测试环境

news2024/11/24 8:55:26

文章目录

  • 一、前言
    • 1.1 准备工作
    • 1.2 最终目标
  • 二、安装步骤
    • 2.1 购买云服务器和NAS存储
    • 2.2 kubekey方式安装k8s集群
      • 2.2.1 环境检查及安装基础包
      • 2.2.2 kubekey安装k8s集群
      • 2.2.3 压测机环境准备
      • 2.2.4 中间件部署
        • 2.2.4.1 部署NFS远程共享存储
        • 2.2.4.2 部署MySQL
        • 2.2.4.3 部署Redis
        • 2.2.4.4 部署RabbitMQ
        • 2.2.4.5 部署Sentinel
        • 2.2.4.6 部署Nacos
        • 2.2.4.7 部署ElasticSearch
        • 2.2.4.8 部署Kafka
        • 2.2.4.9 部署Logstash
        • 2.2.4.10 部署Skywalking
      • 2.2.5 mall-swarm商城应用部署
        • 2.2.5.1 容器镜像打包
        • 2.2.5.2 应用服务部署
      • 2.2.6 监控系统部署(Prometheus&Influxdb&Grafana)
      • 2.2.7 检查各个服务和工具的可用性
      • 2.2.8 执行压测场景
  • 三、最后

一、前言

1.1 准备工作

  • 项目源码:https://github.com/macrozheng/mall-swarm
  • 操作机&服务器:一台笔记本或台式机,6台服务器(1台压测机、5台k8s集群机器)
  • 操作机终端工具:Idea、Navicat、shell远程工具、Chrome等
  • 服务器组件:Java、Jmeter、Maven、Prometheus、K8s、Mysql等
  • 安装介质和脚本:mall_swarm_depoly.tar.gz、script-original.tar.gz

1.2 最终目标

完成压测环境搭建,含K8s集群、中间件、应用服务、全局监控、定向监控等,实现Jmeter一键压测

全文分为8个部分,阅读预估 20min,为缩减篇幅,本文省略原理讲解,需要知道为何这样操作的同学请移步本公众号其他分章节详细内容,读者若想获取安装介质和脚本,可在公众号留言“性能测试环境”获取相应资料。

二、安装步骤

2.1 购买云服务器和NAS存储

在阿里云官网注册、充值、购买即可。
在这里插入图片描述

在这里插入图片描述

2.2 kubekey方式安装k8s集群

2.2.1 环境检查及安装基础包

shell远程工具使用公网IP登录各台云服务器

################################### 所有集群内机器执行 ##########
yum update
yum install -y curl
yum install -y socat
yum install -y vim
yum install -y conntrack
swapoff -a
#查看防火墙状态
firewall-cmd --state
#CentOS 7.0默认使用的是firewall作为防火墙
#停止firewall
systemctl stop firewalld.service
#禁止防火墙开启启动
systemctl disable firewalld.service 
################################### 各机器分别执行 ##################################
hostnamectl set-hostname s5
hostnamectl set-hostname s6
hostnamectl set-hostname s7
hostnamectl set-hostname s8
hostnamectl set-hostname s9
hostnamectl set-hostname s10

2.2.2 kubekey安装k8s集群

shell远程工具使用公网IP登录master节点(S6)执行

################################## master节点执行 #################################
# 上传介质包mall_swarm_depoly.tar.gz到master机器的root家目录/root,并解压
tar -zxvf mall_swarm_depoly.tar.gz
rpm -ivh kubekey-v2.2.2-linux-64bit.rpm
export KKZONE=cn
kk create config --with-kubernetes v1.23.8 --with-kubesphere v3.2.1 -f k8s.yaml
#默认生成的目标文件,参数太多,推荐使用我们部署成功的,改一下内网IP、密码,机器角色、以及替换下刚刚生成的网络部分即可。
kk create cluster -f bihe-k8s-cluster-config.yaml
#################### docker模式 ########################
docker run -d   --restart=unless-stopped   --name=kuboard   -p 80:80/tcp   -p 10081:10081/tcp   -e KUBOARD_ENDPOINT="http://172.16.178.56:80"   -e KUBOARD_AGENT_SERVER_TCP_PORT="10081"   -v /root/kuboard-data:/data   swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
http://120.26.198.77:80

账号:admin
密码:Kuboard123

安装Kuboard向导,在kuboard中添加集群配置文件,master节点 cat ~/.kube/config。将其中信息添加进去。

2.2.3 压测机环境准备

shell 远程工具使用公网IP登录压测机(S5)执行

################################## 压测机S5机器执行 #################################
hostnamectl set-hostname s5
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
swapoff -a
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install -y curl
yum install -y socat
yum install -y vim
yum install -y conntrack
yum update -y 
yum install -y docker-ce
docker --version
systemctl start docker
systemctl status docker
docker run hello-world

# 添加镜像地址,cat显示结果为贴进S5机器/etc/docker/daemon.json中
vim /etc/docker/daemon.json
[root@s5 mall_swarm_depoly]# cat /etc/docker/daemon.json
{
 "registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
 "insecure-registries": ["172.31.184.225:5000"]
} 

# 重启docker
systemctl stop docker
systemctl status docker
systemctl start docker
systemctl status docker

# 安装JAVA
tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz 
mv java-se-8u41-ri/ jdk1.8
mkdir -p /usr/local/src/java
mv jdk1.8/ /usr/local/src/java/

# 安装Jmeter
tar -zxvf jmeter.tar.gz 
# 安装maven
tar -zxvf  apache-maven-3.8.6-bin.tar.gz

#  替换s5机器root用户下~/.bash_profile ,并执行source ~/.bash_profile
[root@s5 home]# cat ~/.bash_profile 
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
JMETER_HOME=/home/jmeter/apache-jmeter-5.4.3
PATH=$PATH:$HOME/bin:$JMETER_HOME/bin

export JAVA_HOME=/usr/local/src/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

export MAVEN_HOME=/opt/apache-maven-3.8.6
export PATH=$MAVEN_HOME/bin:$PATH

export PATH

[root@s5 home]source ~/.bash_profile
# 检查版本
[root@s5 mall-swarm]# java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment (build 1.8.0_332-b09)
OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)

[root@s5 mall-swarm]# jmeter --version
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
 / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.4.3

Copyright (c) 1999-2021 The Apache Software Foundation

[root@s5 mall-swarm]# mvn --version
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /opt/apache-maven-3.8.6
Java version: 1.8.0_332, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.19.1.el7.x86_64", arch: "amd64", family: "unix"
# 将代码mall-swarm.zip传至s5机器
[root@s5 ~]# yum install -y unzip
unzip mall-swarm.zip

# 替换成自己的username,注意先在阿里云镜像管理界面建立公开访问的命名空间original-mall
docker images
docker login --username=bihe666 registry.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/original-mall/mall-auth:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/original-mall/mall-auth:[镜像版本号]
docker pull registry.cn-hangzhou.aliyuncs.com/original-mall/mall-auth:1.0
docker images

2.2.4 中间件部署

2.2.4.1 部署NFS远程共享存储

shell远程工具使用公网IP登录master节点(S6)执行

########################## master节点执行 ########################
# 进入介质包的ali-nas_7d目录下
cd ~/mall_swarm_depoly/mall_swarm_7dgroup/ali-nas_7d/
kubectl create -f deploy/
# 替换sc.yaml中的nas服务器地址,然后创建StorageClass无须命名空间
kubectl create -f sc.yaml

在这里插入图片描述
在这里插入图片描述
操作示例:
在这里插入图片描述

2.2.4.2 部署MySQL

实测下来,还是应该先 helm 安装 MySQL ,其中也会一同创建需要的 pvc 等,但是 mysql 自己因为缺引导文件,我们可以通过另起一个 nginx 镜像,使用和 mysql 共享的pvc,这样在 nginx 创建好 binlog 目录下 mysql-bin.index 后,重启 mysql 服务就可正常启动。

#################### helm安装mysql ###########################
cd /root/mall_swarm_7dgroup/mysql
helm install mysql -n original-mall .

依赖文件:

mall_swarm_7dgroup/mysql/*
mall_swarm_7dgroup/nginx-dp-for-mysql.yaml

需要修改的地方:使用我们的配置无需修改。

安装命令

注:若直接helm安装mysql服务,会因文件不存在报错,无法启动,故我们先启动个original-mall命名空间下的pod,在共享目录里创建相应目录


cd /root/mall_swarm_7dgroup/
kubectl create -f nginx-dp-for-mysql.yaml -n original-mall


# 通过kuboard进入nginx容器内创建binlog目录和binlog目录下的mysql-bin.index
cd data
mkdir binlog
touch mysql-bin.index

cd /data
chmod -R 777 binlog
chmod -R 777 data

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


[root@s6 mysql]# kubectl get all -A | grep mysql
original-mall   service/mysql-min-headless   ClusterIP   None            <none>        3306/TCP                 15m
original-mall   service/mysql-min-metrics    ClusterIP   10.233.38.216   <none>        9104/TCP                 15m
[root@s6 mysql]# kubectl get all -A | grep mysql
original-mall   service/mysql-min-headless   ClusterIP   None            <none>        3306/TCP                 15m
original-mall   service/mysql-min-metrics    ClusterIP   10.233.38.216   <none>        9104/TCP                 15m
[root@s6 mysql]# helm install mysql -n original-mall .
Error: cannot re-use a name that is still in use
[root@s6 mysql]# ll
total 144
-rw-r--r-- 1 root root   219 Nov 11 22:59 Chart.lock
drwxr-xr-x 3 root root  4096 Nov 11 22:59 charts
-rw-r--r-- 1 root root   766 Nov 11 22:59 Chart.yaml
-rw-r--r-- 1 root root 65916 Nov 11 22:59 README.md
drwxr-xr-x 4 root root  4096 Nov 11 22:59 templates
-rw-r--r-- 1 root root  5495 Nov 11 22:59 values.schema.json
-rw-r--r-- 1 root root 51994 Nov 11 22:59 values.yaml

需要整理的资源mysql Node节点公网 ip:Nodeport, root密码通过kuboard中secret查看

在这里插入图片描述
在这里插入图片描述
检查服务及数据库登录验证。
在这里插入图片描述
数据同步。

2.2.4.3 部署Redis

服务器上对应.

在这里插入图片描述

#####################kubectl create 部署redis ##################
kubectl create -f redis-config.yaml -n original-mall
kubectl create -f redis-storage.yaml -n original-mall
kubectl create -f promethues-redis-deploy.yaml -n original-mall
2.2.4.4 部署RabbitMQ

服务器上我们用helm install方式来部署,NodePort方式暴露控制台。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#####################helm 安装rabbitmq ##################
helm install rabbitmq -n original-mall .

访问信息:

  • http://121.40.242.93:30584/
  • 用户名:mall 密码:mall
    在这里插入图片描述
2.2.4.5 部署Sentinel

服务器上执行。

#####################kubectl 安装sentinel ##################
kubectl create -f sentinel-deploy.yaml -n original-mall

在这里插入图片描述

访问地址:http://121.40.242.93:32291

在这里插入图片描述

2.2.4.6 部署Nacos

服务器上我们用helm install方式来部署,NodePort方式暴露控制台

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

#################### helm安装nacos ###########################
helm install nacos -n original-mall .
kubectl get svc -A | grep nacos

访问信息:

  • http://121.40.242.93:30460/nacos
  • 用户名:nacos,密码:nacos

在这里插入图片描述

2.2.4.7 部署ElasticSearch
#################### helm安装ES和Kibanna ###########################
cat run.sh 
kubectl create secret generic elastic-certificates --from-file=elastic-certificates.p12  -n original-mall
kubectl create secret generic elastic-certificate-pem --from-file=elastic-certificate.pem  -n original-mall
kubectl create secret generic elastic-credentials --from-literal=username=elastic --from-literal=password=7dgroup  -n original-mall
helm repo add  elastic    https://helm.elastic.co
helm repo update
helm install elasticsearch-master -f es-master-values.yaml --version 7.7.1 elastic/elasticsearch -n original-mall
helm install elasticsearch-data -f es-data-values.yaml --version 7.7.1 elastic/elasticsearch  -n original-mall
helm install elasticsearch-client -f es-client-values.yaml --version 7.7.1 elastic/elasticsearch  -n original-mall
helm install kibana -f es-kibana-values.yaml --version 7.7.1 elastic/kibana -n original-mall
kubectl get svc -A | grep kibana
kubectl edit svc  kibana-kibana -n original-mall
kubectl get svc -A | grep kibana

在这里插入图片描述

访问地址:http://121.40.242.93:30389/
在这里插入图片描述

2.2.4.8 部署Kafka
#################### helm安装kafka ###########################
helm install kafka -n original-mall .

在这里插入图片描述

在这里插入图片描述

2.2.4.9 部署Logstash
#################### kubectl安装logstash ###########################
cd logstash-kafka-to-es/
kubectl create -f logstash-cm.yaml -n original-mall
kubectl create -f logstash-conf-cm.yaml -n original-mall
kubectl create -f logstash-deploy.yaml -n original-mall

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

2.2.4.10 部署Skywalking

[root@s6 skywalking]# ll
total 96
-rw-r--r-- 1 root root   221 Nov 11 22:59 Chart.lock
drwxr-xr-x 2 root root  4096 Nov 11 22:59 charts
-rw-r--r-- 1 root root  1382 Nov 11 22:59 Chart.yaml
drwxr-xr-x 3 root root  4096 Nov 11 22:59 files
-rw-r--r-- 1 root root   877 Nov 11 22:59 OWNERS
-rw-r--r-- 1 root root 45984 Nov 11 22:59 README.md
drwxr-xr-x 3 root root  4096 Nov 11 22:59 templates
-rw-r--r-- 1 root root  1026 Nov 11 22:59 values-es6.yaml
-rw-r--r-- 1 root root  1026 Nov 11 22:59 values-es7.yaml
-rw-r--r-- 1 root root  1351 Nov 11 22:59 values-my-es.yaml
-rw-r--r-- 1 root root 10976 Nov 11 22:59 values.yaml
[root@s6 skywalking]# pwd
/root/mall_swarm_depoly/mall_swarm_7dgroup/skywalking/skywalking-kubernetes-master/chart/skywalking
[root@s6 skywalking]# helm install skywalking -n original-mall .
NAME: skywalking
LAST DEPLOYED: Sat Nov 12 23:25:45 2022
NAMESPACE: original-mall
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
************************************************************************
*                                                                      *
*                 SkyWalking Helm Chart by SkyWalking Team             *
*                                                                      *
************************************************************************


Thank you for installing skywalking.


Your release is named skywalking.


Learn more, please visit https://skywalking.apache.org/


Get the UI URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace original-mall -o jsonpath="{.spec.ports[0].nodePort}" services skywalking-ui)
  export NODE_IP=$(kubectl get nodes --namespace original-mall -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT
[root@s6 skywalking]# 

在这里插入图片描述
在这里插入图片描述
skywalking起来需要等待一会儿

2.2.5 mall-swarm商城应用部署

2.2.5.1 容器镜像打包

docker.host修改为镜像打包机器的内网IP地址(需运行docker服务端)
在这里插入图片描述

mvn clean package

在这里插入图片描述

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

2.2.5.2 应用服务部署
[root@s6 7d-mall-k8s]# kubectl create -f mall-auth-service.yaml -n original-mall
deployment.apps/svc-mall-auth created
service/svc-mall-auth created
[root@s6 7d-mall-k8s]# kubectl create -f mall-gateway-service.yaml -n original-mall
deployment.apps/gateway-mall-gateway created
service/gateway-mall-gateway created
[root@s6 7d-mall-k8s]# kubectl create -f mall-portal-service.yaml -n original-mall
deployment.apps/svc-mall-portal created
service/svc-mall-portal created
[root@s6 7d-mall-k8s]# kubectl create -f mall-search-service.yaml -n original-mall
deployment.apps/svc-mall-search created
service/svc-mall-search created
[root@s6 7d-mall-k8s]# kubectl create -f mall-admin-service.yaml -n original-mall
deployment.apps/svc-mall-admin created
service/svc-mall-admin created

在这里插入图片描述

mall-swarm商城应用部署

关键是serviceName、ClusterIP还是NodePort、Nacos配置、Command配置和数据库的数据。

2.2.6 监控系统部署(Prometheus&Influxdb&Grafana)

# 安装Prometheus、grafana等(influxdb单独部署--->视频测试influxdb已经一起安装)
cd kube-prometheus-release-0.10/manifests
kubectl create -f setup/
cd ..
kubectl create -f manifests/
kubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml --dry-run -oyaml > additional-scrape-configs.yaml
kubectl create -f additional-scrape-configs.yaml -n monitoring
kubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml --dry-run=client -oyaml > additional-scrape-configs.yaml
kubectl create -f additional-scrape-configs.yaml -n monitoring
kubectl get svc -n monitoring

从kuboard中进入influxdb容器,并创建jmeter数据库。

bash-4.4# show databases
bash: show: command not found
bash-4.4# influx
Connected to http://localhost:8086 version 1.7.10
InfluxDB shell version: 1.7.10
> show databases
name: databases
name
----
_internal
> CREATE DATABASE jmeter
> show databases
name: databases
name
----
_internal
jmeter

将常用JSON模板配置导入到grafana中,也可以从原来grafana中导出。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在grafana中配置jmeter数据源。
在这里插入图片描述
在这里插入图片描述

访问地址:http://influxdb.monitoring.svc:8086

2.2.7 检查各个服务和工具的可用性

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

2.2.8 执行压测场景

############################ 压测机器 s5 执行 #############################
# 修改压测脚本的API网关地址和端口,已经backend listener中influxdb的端口
vim 1_home.jmx
jmeter -n -t 1_home.jmx

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

大功告成!!!

说明:具体操作与资料也可参考“《高楼的性能工程实战课》-我们这个课程的系统是怎么搭建起来的?

三、最后

本文详细介绍了基于微服务架构的电商系统的搭建过程,包括服务器规划、Kubernetes集群搭建和插件安装等技术细节。作者首先介绍了Kubernetes管理平台Kuboard的部署步骤,采用可视化UI管理Kubernetes集群,降低了使用门槛。接着介绍了依赖组件的安装部署,包括MySQL、Elasticsearch、JMeter等的部署方式。此外,还介绍了全局监控和微服务架构的项目介绍、源代码拉取、Nacos配置修改、镜像打包推送、数据库导入、依赖组件初始化等步骤。最后展示了运行效果,包括服务器、Kubernetes集群、微服务部署架构图和资源监控等内容。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring 启动失败 active: @env@

参考&#xff1a;SpringBoot启动失败报错&#xff0c;spring.profiles.active:env中环境变量无法识别报错_active: env_profileactive启动报错 ine 3, column 13:-CSDN博客

通义灵码-----阿里巴巴推出的 AI 编程助手,一站式安装使用教程。 我自己就是在用,感觉写代码会高效很多

"通义灵码"&#xff08;Tongyi Lingma&#xff09;&#xff0c;这是阿里巴巴推出的 AI 编程助手。通义灵码是基于阿里云的通义大模型&#xff0c;为开发者提供代码补全、代码生成等智能辅助功能。 启用和使用通义灵码 以下是如何在 IntelliJ IDEA 中安装和使用通义灵…

VSCode的常用插件(持续更新)

点击左边工具栏的“扩展”&#xff0c;在搜索栏中查找对应插件&#xff0c;点击“安装”&#xff0c;安装完成后右边界面的插件会显示“卸载”按钮。 1、中文&#xff08;简体&#xff09;语言包 2、Auto Rename Tag 修改开始标签&#xff0c;结束标签也会随之自动变化。 3、O…

ClickHouse的原理及使用,

1、前言 一款MPP查询分析型数据库——ClickHouse。它是一个开源的&#xff0c;面向列的分析数据库&#xff0c;由Yandex为OLAP和大数据用例创建。ClickHouse对实时查询处理的支持使其适用于需要亚秒级分析结果的应用程序。ClickHouse的查询语言是SQL的一种方言&#xff0c;它支…

Python 情感分析与词向量

Python 情感分析与词向量 在现代数据驱动的世界中&#xff0c;情感分析成为了一种重要的文本分析技术&#xff0c;它帮助我们理解和挖掘用户对产品、服务或事件的情感倾向。Python 作为一种强大的编程语言&#xff0c;提供了丰富的工具和库来支持情感分析的实现&#xff0c;其…

【Kubernets】配置类型资源 Etcd, Secret, ConfigMap

文章目录 所有资源概览Etcd详细说明一、基本概念二、主要功能三、架构与组件四、数据模型与操作五、安全与认证六、集群部署与管理 Secret详细说明一、Secret 的类型二、Secret 的创建三、Secret 的使用四、Secret 的更新与删除五、Secret 的安全性 ConfigMap详细说明一、Confi…

Web服务器小项目(Linux / C / epoll)

注意&#xff1a;前置知识: HTTP: https://xingzhu.top/archives/web-fu-wu-qi Linux 多线程: https://xingzhu.top/archives/duo-xian-cheng 源码放github上了&#xff0c;欢迎star: https://github.com/xingzhuz/webServer 思路 实现代码 server.h #pragma once #include &…

毕设成品 基于深度学习二维码检测识别系统

文章目录 0 简介1 二维码基础概念1.1 二维码介绍1.2 QRCode1.3 QRCode 特点 2 机器视觉二维码识别技术2.1 二维码的识别流程2.2 二维码定位2.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 最后 0 简介 今天学长向大家分享一个毕业设计项目 **毕业设计 基于深度学习…

【最新华为OD机试E卷-支持在线评测】第K个排列(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

【MySQL 保姆级教学】在Linux(CentoS 7)中安装MySQL(1)

目录 1. 卸载linux&#xff08;Centos7&#xff09; 中不要的环境2. 获取MySQL官方yum源2.1 获取yum源前先查看自己 linux&#xff08;Centos&#xff09;的版本2.2 获取官方yum源 3. 安装xftp和连接4. 开放连接端口5. 上传文件到Centos76. 安装MySQL6.1 顺利安装6.2 查询是否安…

Terminus ssh key 登陆

生成key 一、添加 KEY 配置 电脑: Terminus > Preferences&#xff0c;或 ⌘,。选择左侧 Keychain 标签。 手机: Terminus > Keychain 电脑: 点击右侧上方的 NEW KEY 按钮, 手机: 点加号 电脑: 在最右侧弹出的页面中填写 Label 和 Private key&#xff0c;Private ke…

电脑怎么录屏?探索屏幕捕捉的奥秘,新手也能成为录屏高手!

在数字时代&#xff0c;无论是制作教学视频、分享游戏精彩瞬间还是展示软件操作流程&#xff0c;屏幕录制都成了一项必不可少的技能。然而&#xff0c;对于许多初次接触录屏的新手来说&#xff0c;如何开始这一过程似乎充满了挑战。本文将为你揭开录屏的神秘面纱&#xff0c;带…

golang-基础知识(流程控制)

1 条件判断if和switch 所有的编程语言都有这个if&#xff0c;表示如果满足条件就做某事&#xff0c;不满足就做另一件事&#xff0c;go中的if判断和其它语言的区别主要有以下两点 1. go里面if条件判断不需要括号 2. go的条件判断语句中允许声明一个变量&#xff0c;这个变量…

MySQL8.0环境部署+Navicat17激活教程

安装MySQL 下载MySQL MySQL官网下载当前最新版本&#xff0c;当前是8.0.39。 选择No thanks, just start my download等待下载即可。 安装MySQL 下载完成后&#xff0c;双击安装进入安装引导页面。选择Custom自定义安装。 选择MySQL Server 8.0.39 - X64安装。 点击Execute执…

基于BeautyEye开发Java程序用户界面

文章目录 I idea引入jar包添加本地jar包maven方式引入本地包方式1:将第三方JAR包安装到本地仓库maven方式引入本地包方式2:引用本地路径将本地jar包打进war包Maven内置变量说明II BeautyEye Swing外观实现方案案例III 知识扩展Swing常用的顶级容器BeautyEye SwingI idea引入j…

在python中如何判断回文串(二)?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

一次性解决vue3引入@jiaminghi/data-view需要手动修改node_modules下文件

修改文件1&#xff1a;node_modules\jiaminghi\data-view\lib\components\decoration6\src\main.vue 修改文件2&#xff1a; node_modules\jiaminghi\data-view\lib\components\decoration3\src\main.vue 修改前&#xff1a; 修改后&#xff1a; 通过打补丁的方式对引用库进行…

SpringBoot购物推荐网站:从零到一的构建过程

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

如何使用ipopt进行非线性约束求目标函数最小值(NLP非线性规划)内点法(Interior point method)

非线性规划,一般用matlab调用cplex和gurobi了,但这两个一般用于线性规划和二次规划 线性规划LP,二次规划(quadratic programming),如果要求更一般的非线性规划IPOT是个很好的选择,求解器很多,根据情况自己选择 非线性 具体的,这篇文章介绍的很清楚了https://blog.csd…

Javascript笔试题目(一)

1.JS查找文章中出现频率最高的单词? 要在JavaScript中查找文章中出现频率最高的单词&#xff0c;你可以按照以下步骤进行操作&#xff1a; 将文章转换为小写&#xff1a;这可以确保单词的比较是大小写不敏感的。移除标点符号&#xff1a;标点符号会干扰单词的计数。将文章拆…