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

DevOps持续集成-Jenkins(1)

文章目录

    • DevOps
      • DevOps概述
      • Code阶段工具(centos7-gitlab主机)
        • Windows下安装Git(作用是:使我们可以上传代码到GitLab)
        • Linux下安装GitLab⭐(作用是:运行一个GitLab接收代码)
          • 环境准备
            • 先创建新的虚拟机(centos7-gitlab)⭐
            • 修改IP和主机名
            • 关闭防火墙
            • 安装Docker
            • 安装Docker Compose
          • 使用Docker安装GitLab
      • Build阶段工具(centos7-jenkins主机)
        • Linux下安装Maven项目构建工具⭐
          • 环境准备
            • 先创建新的虚拟机(centos7-jenkins)⭐
            • 修改IP和主机名
            • 关闭防火墙
          • 安装Maven
            • 下载Maven和JDK8的tar.gz包
            • 将Maven和JDK8的tar.gz包上传到centos7-jenkins的/root目录上
      • Operate阶段工具(centos7-jenkins主机)
        • Linux下安装Docker和Docker-Compose⭐
          • 安装Docker
          • 安装Docker Compose

DevOps

DevOps概述

软件开发最初是由两个团队共同组成:(没有采用DevOps之前)

  • 开发团队:从头开始设计和整体系统的构建(编写代码)。需要系统不停的迭代更新。
  • 运维团队:将开发团队的代码进行测试通过后再部署上线。确保系统稳定运行。

没有采用DevOps的缺点:

  • 这看似两个目标不同的团队需要协同完成一个软件的开发。在开发团队指定好计划并完成编写代码后,需要把代码交给运维团队。运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。这时开发团队需要经常等待运维团队的反馈。这无疑会延长整个软件开发的周期。

采用DevOps的优点?

  • DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。核心就在于简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。说白了就是DevOps有利于快速完成项目,不会浪费时间)

整体的软件开发流程:

  • PLAN:开发团队根据客户的目标制定开发计划
  • CODE:根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中。
  • BUILD:编码完成后,需要将代码构建并且运行。
  • TEST:成功构建项目后,需要测试代码是否存在BUG或错误。
  • DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
  • OPERATE:运维团队将代码部署到生产环境中。
  • MONITOR:项目部署上线后,需要持续的监控产品。
  • INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核心即持续集成、持续部署。

为了保证整体流程可以高效的完成,各个阶段都有比较常见的工具,如下图:

Code阶段工具(centos7-gitlab主机)

  • 在code阶段,我们需要将不同版本(tag)的代码存储到一个远程仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。(GitHub和Gitee都可以,不过生产上用GitLab更多)

Code阶段步骤:

在Windows环境下编写好代码,然后将代码上传到Linux环境下的GitLab上。

Windows下安装Git(作用是:使我们可以上传代码到GitLab)
  • 进入Git官网安装Git到Windows环境下即可。(很简单)
Linux下安装GitLab⭐(作用是:运行一个GitLab接收代码)

步骤:

1:新建一个服务器(2核4G内存+60G硬盘),IP设置成192.168.184.70,主机名设置成centos7-gitlab,专门用来运行GitLab。

2:安装Docker容器。(如果已经安装过了就可以跳过这一步)

3:在这台新的GitLab的服务器上使用Docker的方式运行GitLab

环境准备
先创建新的虚拟机(centos7-gitlab)⭐

创建新的虚拟机过程省略!!!

修改IP和主机名
  • 1:新建服务器并将其IP地址修改成192.168.184.70:
vi /etc/sysconfig/network-scripts/ifcfg-ens33

找到 IPADDR 字段并将IP修改成192.168.184.70即可:

然后重启网络:

systemctl restart network

查看IP是否修改成功:(可以看到ens33已经修改成功了。)

[root@centos7-clear ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.184.70  netmask 255.255.255.0  broadcast 192.168.184.255inet6 fe80::9ce3:a607:cc1b:e87  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:f5:97:d0  txqueuelen 1000  (Ethernet)RX packets 550  bytes 56363 (55.0 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 487  bytes 71677 (69.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 2:修改服务器的主机名:
hostnamectl set-hostname centos7-gitlab
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
安装Docker
  • 1:切换镜像源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 2:安装特定版本的docker-ce
yum -y install docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-3:20.10.8-3.el7.x86_64 containerd.io
  • 3:给Docker接入阿里云镜像加速器

配置镜像加速器方法。

  • 准备工作:
  • 1:首先进入阿里云容器镜像服务 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  • 2:点击镜像工具下面的镜像加速器
  • 3:拿到你的加速器地址和下面第二步的registry-mirrors的值替换即可。

针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

  • 第一步:
mkdir -p /etc/docker
  • 第二步:
cat <<EOF> /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],	"registry-mirrors": ["https://u01jo9qv.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com"],"live-restore": true,"log-driver":"json-file","log-opts": {"max-size":"500m", "max-file":"3"},"max-concurrent-downloads": 10,"max-concurrent-uploads": 5,"storage-driver": "overlay2"
}
EOF
  • 第三步:
sudo systemctl daemon-reload
  • 第四步:
sudo systemctl restart docker

最后就接入阿里云容器镜像加速器成功啦。

  • 4:设置Docker开机自动启动:
[root@centos7-clear ~]# sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
安装Docker Compose
  • 1:拉取docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 2:给docker-compose分配权限:
chmod +x /usr/local/bin/docker-compose
  • 3:查看docker-compose的版本:
docker-compose --version
使用Docker安装GitLab
  • 1:查看gitlab镜像:
[root@centos7-clear ~]# docker search gitlab-ce
NAME                                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
gitlab/gitlab-ce                         GitLab Community Edition docker image based …   3642                 [OK]
  • 2:拉取最新版的gitlab镜像:(gitlab的镜像十分大,2个多GB的大小)
[root@centos7-gitlab gitlab]# docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
7b1a6ab2e44d: Pull complete 
6c37b8f20a77: Pull complete 
f50912690f18: Pull complete 
bb6bfd78fa06: Pull complete 
2c03ae575fcd: Pull complete 
839c111a7d43: Pull complete 
4989fee924bc: Pull complete 
666a7fb30a46: Pull complete 
Digest: sha256:5a0b03f09ab2f2634ecc6bfeb41521d19329cf4c9bbf330227117c048e7b5163
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
  • 3:查看gitlab的镜像是否拉取成功:
[root@centos7-gitlab gitlab]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
gitlab/gitlab-ce   latest    46cd6954564a   6 months ago   2.36GB
  • 4:准备docker-compose.yml文件:

创建文件夹:

[root@centos7-clear ~]# mkdir gitlab && cd gitlab

创建文件:

vi docker-compose.yml

文件内容如下:(记得修改external_url的ip地址为你的gitlab的服务器地址,我们的是192.168.184.70)

version: '3.1'
services:gitlab:image: 'gitlab/gitlab-ce:latest'container_name: gitlabrestart: alwaysenvironment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://192.168.184.70:8929'gitlab_rails['gitlab_shell_ssh_port'] = 2224ports:- '8929:8929'- '2224:2224'volumes:- './config:/etc/gitlab'- './logs:/var/log/gitlab'- './data:/var/opt/gitlab'
  • 5:执行docker-compose配置文件:(执行完需要等待)
[root@centos7-gitlab gitlab]# docker-compose up -d
  • 6:访问GitLab首页:
    • 网址是 192.168.184.70:8929

在这里插入图片描述

  • 7:查看root用户初始密码:(下面password就是我们的默认密码)
[root@centos7-gitlab gitlab]# docker exec -it gitlab cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.Password: 6PHFewZSOcvt5rQD65mlCP5Tr5i8MRYTadwa3VGvkPo=# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
  • 8:返回刚刚的登陆界面登陆gitlab:

在这里插入图片描述

  • 9:登陆gitlab成功后的首页:

在这里插入图片描述

  • 10:修改gitlab密码,然后重新登陆即可:(我修改成root123456)

在这里插入图片描述

Build阶段工具(centos7-jenkins主机)

  • 构建Java项目的工具一般有两种选择,一个是Maven,一个是Gradle。这里我们选择Maven作为项目的编译工具。
Linux下安装Maven项目构建工具⭐

步骤:

1:新建一个服务器(2核4G内存+60G硬盘),IP设置成192.168.184.80,主机名设置成centos7-jenkins

2:安装Docker容器。(如果已经安装过了就可以跳过这一步)

环境准备
先创建新的虚拟机(centos7-jenkins)⭐

创建新的虚拟机过程省略!!!

修改IP和主机名
  • 1:新建服务器并将其IP地址修改成192.168.184.80:
vi /etc/sysconfig/network-scripts/ifcfg-ens33

找到 IPADDR 字段并将IP修改成192.168.184.80即可:

然后重启网络:

systemctl restart network

查看IP是否修改成功:(可以看到ens33已经修改成功了。)

[root@centos7-clear ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.184.80  netmask 255.255.255.0  broadcast 192.168.184.255inet6 fe80::9aa7:2f1d:4559:d9c8  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:63:69:7f  txqueuelen 1000  (Ethernet)RX packets 136  bytes 17161 (16.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 157  bytes 20956 (20.4 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX
  • 2:修改服务器的主机名:
hostnamectl set-hostname centos7-jenkins
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
安装Maven
下载Maven和JDK8的tar.gz包

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

将Maven和JDK8的tar.gz包上传到centos7-jenkins的/root目录上
  • 1:查看当前目录:
[root@centos7-jenkins ~]# pwd
/root
  • 2:使用XFTP把刚刚下载好的两个包上传上去:

  • 3:查看上传好的包:

[root@centos7-jenkins ~]# ls
anaconda-ks.cfg  apache-maven-3.8.6-bin.tar.gz  jdk-8u333-linux-x64.tar.gz
  • 4:解压JDK包到/usr/local:
tar -zxvf jdk-8u333-linux-x64.tar.gz -C /usr/local
  • 5:解压Maven包到/usr/local:
tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local
  • 6:切换到/usr/local目录下:
cd /usr/local
  • 7:给JDK和Maven的文件夹进行改名:
mv jdk1.8.0_333 jdk
mv apache-maven-3.8.6 maven
  • 8:查看/usr/local:
[root@centos7-jenkins local]# ls
bin  etc  games  include  jdk  lib  lib64  libexec  maven  sbin  share  src
  • 9:修改Maven配置文件:(配置阿里云镜像加速和JDK8设置)
  • (1)阿里云镜像加速配置:
cd maven/conf
[root@centos7-jenkins conf]# vi settings.xml

插入内容如下:(插入到</ mirrors > 这个标签上面即可),先不用保存退出

<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

在这里插入图片描述

  • (2)JDK8设置:

插入内容如下:(插入到 < /profiles > 标签上面即可)

<profile><id>jdk8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties>
</profile>

并插入如下内容:(用于开启上面的jdk配置,插入到最下面的< /settings >标签上面即可),然后保存退出

<activeProfiles><activeProfile>jdk8</activeProfile>
</activeProfiles>

在这里插入图片描述

Operate阶段工具(centos7-jenkins主机)

Linux下安装Docker和Docker-Compose⭐
安装Docker
  • 1:切换镜像源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 2:安装特定版本的docker-ce
yum -y install docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-3:20.10.8-3.el7.x86_64 containerd.io
  • 3:给Docker接入阿里云镜像加速器

配置镜像加速器方法。

  • 准备工作:
  • 1:首先进入阿里云容器镜像服务 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  • 2:点击镜像工具下面的镜像加速器
  • 3:拿到你的加速器地址和下面第二步的registry-mirrors的值替换即可。

针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

  • 第一步:
mkdir -p /etc/docker
  • 第二步:
cat <<EOF> /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],	"registry-mirrors": ["https://u01jo9qv.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com"],"live-restore": true,"log-driver":"json-file","log-opts": {"max-size":"500m", "max-file":"3"},"max-concurrent-downloads": 10,"max-concurrent-uploads": 5,"storage-driver": "overlay2"
}
EOF
  • 第三步:
sudo systemctl daemon-reload
  • 第四步:
sudo systemctl restart docker

最后就接入阿里云容器镜像加速器成功啦。

  • 4:设置Docker开机自动启动:
sudo systemctl enable docker
安装Docker Compose
  • 1:拉取docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 2:给docker-compose分配权限:
chmod +x /usr/local/bin/docker-compose
  • 3:查看docker-compose的版本:
[root@centos7-jenkins conf]# docker-compose --version
Docker Compose version v2.4.1

相关文章:

DevOps持续集成-Jenkins(1)

文章目录 DevOpsDevOps概述Code阶段工具&#xff08;centos7-gitlab主机&#xff09;Windows下安装Git&#xff08;作用是&#xff1a;使我们可以上传代码到GitLab&#xff09;Linux下安装GitLab⭐&#xff08;作用是&#xff1a;运行一个GitLab接收代码&#xff09;环境准备先…...

Pytorch代码入门学习之分类任务(二):定义数据集

一、导包 import torch import torchvision import torchvision.transforms as transforms 二、下载数据集 2.1 代码展示 # 定义数据加载进来后的初始化操作&#xff1a; transform transforms.Compose([# 张量转换&#xff1a;transforms.ToTensor(),# 归一化操作&#x…...

oracle 里常用的一些 create insert update table

1、获得数据库里某个指定的库 SELECT COUNT(*) FROM ALL_TABLES ut WHERE ut.OWNERTJFX AND ut.TABLE_NAME CUR_TIME_BILL; 2、创建一个表&#xff0c;里面的数据可以从一个已存在的表里转移过来 CREATE TABLE temptable AS SELECT * FROM old_tbName //使用现有的表创建一…...

从Mysql架构看一条查询sql的执行过程

1. 通信协议 我们的程序或者工具要操作数据库&#xff0c;第一步要做什么事情&#xff1f; 跟数据库建立连接。 首先&#xff0c;MySQL必须要运行一个服务&#xff0c;监听默认的3306端口。在我们开发系统跟第三方对接的时候&#xff0c;必须要弄清楚的有两件事。 第一个就是通…...

Linux系统下DHCP服务安装部署和使用实例详解(蜜罐)

目录 一、概述 二、具体配置如下&#xff1a; 一、概述 DHCP &#xff1a;动态主机设置协议&#xff08;英语&#xff1a;Dynamic Host Configuration Protocol&#xff0c;DHCP&#xff09;是一个局域网的网络协议&#xff0c;使用UDP协议工作&#xff0c;主要有两个用途&…...

模数转换器-ADC基础

文章目录 一、ADC是什么二、ADC处理采样保持量化编码三、ADC采样的重要参数:测量范围:分辨率(Resolution):精度:采样时间:采样率(Sampling Rate):信噪比(Signal-to-Noise Ratio, SNR):转换时间:一、ADC是什么 ADC(Analog-to-Digital Converter):模拟数字转换器…...

Linux:【1】Linux中的文件权限概念和相关命令

Linux&#xff1a;【1】Linux中的文件权限概念和相关命令 1、什么是文件权限&#xff1f;1.1、文件权限的表示方式 2、理解文件权限2.1、用户权限2.2、组权限2.3、其他权限 3、设置文件权限3.1、chmod 命令3.2、权限符号表示法3.3、权限数字表示法 4、查看文件权限4.1、ls 命令…...

JS实用小计

1.如何创建一个数组大小为100&#xff0c;每个值都为0的数组 // 方法一: Array(100).fill(0);// 方法二: // 注: 如果直接使用 map&#xff0c;会出现稀疏数组 Array.from(Array(100), (x) > 0);// 方法二变体: Array.from({ length: 100 }, (x) > 0); 2.如何逆序一个字…...

Android---Bitmap详解

每一个 Android App 中都会使用到 Bitmap&#xff0c;它也是程序中内存消耗的大户&#xff0c;当 Bitmap 使用内存超过可用空间&#xff0c;则会报 OOM。 Bitmap 占用内存分析 Bitmap 用来描述一张图片的长、宽、颜色等信息&#xff0c;可用使用 BitmapFactory 来将某一路径下…...

设计高信度和效度的问卷:关键要点与技巧

设计调查问卷是任何研究过程中至关重要的一部分&#xff0c;无论是出于学术目的还是商业目的。调查是用于收集数据的常用工具&#xff0c;它们可以为消费者行为、意见、客户满意度和其他重要因素提供有价值的见解。然而&#xff0c;调查的可靠性和有效性对于确保收集的数据准确…...

从工厂到社会:探索如何应用设计模式工厂模式

文章目录 &#x1f31f; 将设计模式工厂模式运用到社会当中&#x1f34a; 工厂模式在社会中的应用&#x1f389; 工厂&#x1f389; 餐厅&#x1f389; 运输 &#x1f34a; 工厂模式的优势&#x1f389; 代码简洁&#x1f389; 扩展性强&#x1f389; 便于维护和管理 &#x1f…...

slice()和splice()用法

前言&#xff1a; slice()和splice()都是JavaScript中数组的方法&#xff0c;但是它们的用法有所不同。接下来让我们详细分析一下他们的不同之处。 slice()&#xff1a; slice()方法返回一个数组的一部分&#xff0c;不会改变原始数组&#xff0c;而是返回一个新数组。 语法…...

基于windows10的pytorch环境部署及yolov8的安装及测试

第一章 pytorch环境部署留念 第一步&#xff1a;下载安装anaconda 官网地址 &#xff08;也可以到清华大学开源软件镜像站下载&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/&#xff09; 我安装的是下面这个&#xff0c;一通下一步就完事儿。 第二步…...

面试算法40:矩阵中的最大矩形

题目 请在一个由0、1组成的矩阵中找出最大的只包含1的矩形并输出它的面积。例如&#xff0c;在图6.6的矩阵中&#xff0c;最大的只包含1的矩阵如阴影部分所示&#xff0c;它的面积是6。 分析 直方图是由排列在同一基线上的相邻柱子组成的图形。由于题目要求矩形中只包含数字…...

was下log4j设置日志不输出问题

was下log4j设置日志不输出问题 WAS 也是用的 commons-logging 日志框架 commons-logging 确定 LogFactory 实现的顺序是 从应用的 META-INF/services/org.apache.commons.logging.LogFactory 中获得 LogFactory 实现从系统环境中获得 org.apache.commons.logging.LogFactory…...

小米14系列, OPPO Find N3安装谷歌服务框架,安装Play商店,Google

10月26号小米发布了新款手机小米14,那么很多大家需求问是否支持谷歌服务框架,是否支持Google Play商店gms。因为毕竟小米公司现在安装的系统是HyperOS澎湃OS。但是我拿到手机之后会发现还是开机初始界面会显示power by android,证明这一点他还是支持安装谷歌,包括最近一段时间发…...

Servlet 与Spring对比!

前言&#xff1a; Spring相关的框架知识&#xff0c;算是目前公司在用的前沿知识了&#xff0c;很重要&#xff01;&#xff01; 那么以Spring为基础的框架有几个&#xff1f; 以Spring为基础的框架包括若干模块&#xff0c;其中主要的有Spring Framework、Spring Boot、Spring…...

粤嵌实训医疗项目--day03(Vue + SpringBoot)

往期回顾 粤嵌实训医疗项目day02&#xff08;Vue SpringBoot&#xff09;-CSDN博客 粤嵌实训医疗项目--day01&#xff08;VueSpringBoot&#xff09;-CSDN博客 目录 一、SpringBoot AOP的使用 二、用户模块-注册功能&#xff08;文件上传&#xff09; 三、用户模块-注册实现…...

spark3.3.x处理excel数据

环境: spark3.3.x scala2.12.x 引用: spark-shell --jars spark-excel_2.12-3.3.1_0.18.5.jar 或项目里配置pom.xml <!-- https://mvnrepository.com/artifact/com.crealytics/spark-excel --> <dependency><groupId>com.crealytics</groupId><art…...

哪一个更好?Spring boot还是Node.js

前言 本篇文章有些与众不同&#xff0c;由于我自己手头有些关于这个主题的个人经验&#xff0c;受其启发写出此文。虽然SpringBoot和Node.js服务于很不一样的场景&#xff0c;但是这两个框架共性惊人。其实每种语言都有不计其数的框架&#xff0c;但仅仅一部分是真正卓越的。如…...

AD7321代码SPI接口模数转换连接DAC0832输出verilog

名称&#xff1a;AD7321代码12位ADC&#xff0c;SPI接口模数转换连接DAC0832输出 软件&#xff1a;QuartusII 语言&#xff1a;VHDL 代码功能&#xff1a; 使用VHDL语言编写代码&#xff0c;实现AD7321的控制&#xff0c;将模拟信号转换为数字信号&#xff0c;再经过处理后…...

JavaScript_Pig Game切换当前玩家

const current0El document.getElementById(current--0); const current1El document.getElementById(current--1); if (dice ! 1) {currentScore dice;current0El.textContent currentScore;} else {} });这是我们上个文章写的代码&#xff0c;这个代码明显是有问题的&…...

EtherNet Ip工业RFID读写器与欧姆龙PLC 配置示例说明

一、准备阶段 POE交换机欧姆龙PLC 支持EtherNet Ip协议CX-Programmer 9.5配置软件 二、配置读卡器 1、打开软件 2、选择网卡&#xff0c;如果多网卡的电脑请注意对应所接的网卡&#xff0c;网卡名一般为“Network adapter Realtek PCIe GBE Family” 3、点击“选择网卡”&…...

UE5简化打包大小

UE5.3默认空项目带初学者包的打包后1G多 简化思路&#xff1a; 1.不打包初学者包&#xff08;或者创建时不包括初学者包&#xff0c;跳过第一条&#xff09; 导航&#xff1a;ProjectSettings->Project->Packaging->Packaging->Advanced->List of maps to incl…...

ThinkPHP8学习笔记

ThinkPHP8官方文档地址&#xff1a;ThinkPHP官方手册 一、composer换源 1、查看 composer 配置的命令composer config -g -l 2、禁用默认源镜像命令composer config -g secure-http false 3、修改为阿里云镜像源composer config -g repo.packagist composer https://mirror…...

NSSCTF做题第9页(2)

[SWPUCTF 2022 新生赛]ez_1zpop <?php error_reporting(0); class dxg { function fmm() { return "nonono"; } } class lt { public $impohi; public $md51weclome; public $md52to NSS; function __construct() { $this-&…...

Rust笔记【1】

元组和解构语法 let tup : (i32, f64, u8) (666, 2.0, 1);let tup (666, 2.0, 1); let (x, y, z) tup;let x tup.0; let y tup.1; let z tup.2;数组类型 数组定义是方括号&#xff1a;[ ] 元组定义是小圆括号&#xff1a;( ) 结构体定义是大括号&#xff1a;{ }&#xf…...

代码随想录训练营day3:链表part1

理论 链表的增删操作时间复杂度O(1),查询时间复杂度O(n),因为要从头结点开始。使用场景和数据完全相反 链表的储存地址是不连续的。也和数组不同。 移除链表元素 利用虚拟头结点可以同意操作。不然删除头结点需要额外写。 记得返回的是虚拟头结点的next而不是虚拟头结点retu…...

Bootstrap的咖啡网站实例代码阅读笔记

目录 01-index.html的完整代码02-图片可以通过类 rounded-circle 设置为圆形显示03-<li class"nav-item mt-1 a">中&#xff0c;类mt-1是什么意思&#xff1f;类a又是什么意思&#xff1f;04-href"javascript:void(0);"是什么意思&#xff1f;05-类f…...

2021年06月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 执行下列代码后&#xff0c;运行结果是&#xff1f; seq[hello,good,morning] s*.join(seq) print(s)A: hello*good*m…...