Docker Swarm总结+Jenkins安装配置与集成snarqube和目标服务器(4/5)

 博主介绍:Java领域优质创作者,博客之星城市赛道TOP20专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。

🍅文末获取源码下载地址🍅

👇🏻 精彩专栏推荐订阅👇🏻 欢迎点赞收藏评论拍砖........

【Docker Swarm总结】《容器技术 Docker+K8S专栏》✅

【uniapp+uinicloud多用户社区博客实战项目】《完整开发文档-从零到完整项目》✅

【Springcloud Alibaba微服务分布式架构 | Spring Cloud】《系列教程-更新完毕》✅

【SpringSecurity-从入门到精通】《学习完整笔记-附(完整demo源码)》✅

【从零开始Vue项目中使用MapboxGL开发三维地图教程】《系列教程-不定时更新》✅

【Vue.js学习详细课程系列】《共32节专栏收录内容》✅

感兴趣的可以先收藏起来相关问题都可以给我留言咨询,希望帮助更多的人。


目录

19、Jenkins 安装与配置

19.1 Jenkins 简介

19.2 安装 JDK

19.3 JDK 的配置环境变量

19.4 查看JDK版本

19.3 安装 maven

19.4 配置maven环境变量

19.5 安装启动 Jenkins

19.6 配置 Jenkins

20、Jenkins 集成 SonarQube

20.1 Jenkins 中安装SonarScanner

20.2 Jenkins 配置 SonarQube

21、Jenkins 集成目标服务器

22、自由风格的 CI 操作(中间架构)

22.1 中间架构图

22.2 创建 web 项目

22.3 Idea 提交项目到远程仓库

22.4 从 GitLab 拉取代码

22.5 将项目打为 jar 包

22.6 代码质量检测

22.7 将 jar 包推送到目标服务器

22.8 构建镜像启动容器


19、Jenkins 安装与配置

19.1 Jenkins 简介

(1) 百度百科
以下是百度百科中关于 Jenkins 的词条:
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
(2) 主机要求
这里要使用docker方式来安装,所以需要一台安装有docker及docker-compose的主机。

19.2 安装 JDK

由于 Jenkins 通过调用 Maven 来实现对项目的构建,所以需要在 Jenkins 主机中安装Maven。由于 maven 的运行需要 JDK 的环境,所以需要首安装 JDK。

jdk-8u241-linux-x64.tar.gz下载地址:https://download.csdn.net/download/weixin_43025151/88570747


对于 JDK 的安装非常简单,只需要从官网下载相应版本的 JDK 到 Linux 系统后,直接解压即可。无需配置。这里下载的是jdk-8u241-linux-x64.tar.gz,将其解压到了/opt/apps 目录下,并重命名为了 jdk。

#解压jdk

tar zxvf jdk-8u241-linux-x64.tar.gz -C /opt/apps/

#重命名jdk
mv jdk1.8.0_241/ jdk

19.3 JDK 的配置环境变量

vi /etc/profile

## 在文件最后添加如下代码: jdk环境变量配置
JAVA_HOME=/opt/apps/jdk
JRE_HOME=/opt/apps/jdk/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

使环境变量配置生效

source /etc/profile

19.4 查看JDK版本

java -version

19.3 安装 maven

(1) 下载解压 maven
首先需要从官网下载最新版本的 Maven 到 Linux 系统后,直接解压。这里下载的是apache-maven-3.9.0-bin.tar.gz,将其解压到/opt/apps 目录下,并重命名为 maven。

apache-maven-3.9.0-bin.tar.gz下载地址:https://download.csdn.net/download/weixin_43025151/88569794

#解压maven文件
tar zxvf apache-maven-3.9.5-bin.tar.gz -C /opt/apps/

#重命名jdk
mv apache-maven-3.9.5/ maven

19.4 配置maven环境变量

1、编辑/etc/profile文件

vi /etc/profile

2、在文件中添加,注意将MAVEN_HOME的值改成自己文件夹。

## maven3.9.5环境变量配置
MAVEN_HOME=/opt/apps/maven
export PATH=${MAVEN_HOME}/bin:${PATH}

3、使环境变量生效,每一次编辑都要执行下面命令使环境变量生效。

source /etc/profile

4、验证

mvn -v



5、配置 maven 镜像仓库
maven解压后需要修改解压目录中conf/settings.xml文件中的两处配置。这里配置maven的镜像源为 aliyun。

       <!-- 中央仓库在中国的镜像 -->
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

6、配置 maven 编译器版本
maven 默认的编译器版本为 JDK1.4,这里需要指定为 JDK1.8。配置了该<profile>后,在文件最后的<activeProfiles>中再激活一下即可。

<profiles>

	<profile>
	  <id>jdk-8</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>

</profiles>


<activeProfiles>
  <activeProfile>jdk-8</activeProfile>
</activeProfiles>

19.5 安装启动 Jenkins

(1) 下载镜像
这里要使用 docker 方式来安装 Jenkins,所以需要先下载 Jenkins 的镜像。

docker run --name jenkins \
--restart always \
-p 8080:8080 \
-p 50000:5000 \
-v /var/jenkins_home:/var/jenkins_home \
-d jenkins/jenkins:2.387.1-lts

(2) 启动 jenkins
使用 docker run 命令启动 Jenkins。(同上)

(3) 修改数据卷权限
当 Jenkins 启动后,通过 docker logs jenkins 命令查看 jenkins 的日志可以看到出错了。

docker logs jenkins

原因是,jenkins 需向数据卷挂载点的文件/var/jenkins_home/copy_reference_file.log 中写入日志时,由于写入操作的用户不是 root 用户,而非 root 用户对数据卷没有写操作权限。

此时需要修改数据卷操作权限,为非 root 用户添加写操作权限。

chmod -R 777 /var/jenkins_home

此时再查看,发现已经具备了写操作权限。

(4) 重启 jenkins
重启 jenkins 容器。

docker restart jenkins

(5) 修改插件下载源
由于 jenkins 在后期运行时需要下载很多的插件,而这些插件默认都是从国外的 Jenkins官方服务器上下载的,下载速度很慢,且下载失败的比例很高。所以,一般会先将这些插件的下载源更新为国内的服务器。
该更新文件是数据卷目录中的 hudson.model.UpdateCenter.xml。

vi hudson.model.UpdateCenter.xml

将该默认的<url>更换为清华大学的下载源地址。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json

(6) 查看 admin 默认密码
通过 docker logs jenkins 命令查看日志,可以看到已经正常了。并且在最后还可以看到Jenkins 的 admin 用户及其初始化密码。

 docker logs jenkins


(7) 插件下载
在浏览器中键入 jenkins 的地址后进行访问,可看到 Jenkins 解锁页面。在管理员密码中输入前面 docker logs jenkins 中看到的初始化密码后继续。

选择插件来安装

保持默认的选择即可。

该页面需要的时间可能会较长。


(8) 创建管理员用户

当插件下载完毕后,会自动跳转到该页面。填写上第一个管理员信息后保存并完成。
 

19.6 配置 Jenkins

(1) 安装两个插件
点击 Manage Jenkins 中的 Manage Plugins 页面,在 Available plugins 选项卡页面的搜索栏中分别键入 Git Parameter 与 Publish Over SSH,选中它们后,Install without restart。

然后就可看到下载过程显示“等待”,直到看到下面的“完成”“Success”后,即可返回首页了。

(2) 移动 JDK 与 Maven
首先要将 Jenkins 主机中的 JDK 与 Maven 解压目录移动到数据卷/var/Jenkins_home 中。

mv ./* /var/jenkins_home/

这里可以重新配置一下jdk和maven的全局环境变量


## 修改配置文件
vi /etc/profile
## jdk环境变量配置:
JAVA_HOME=/var/jenkins_home/jdk
JRE_HOME=/var/jenkins_home/jdk/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH


## maven3.9.5环境变量配置
MAVEN_HOME=/var/jenkins_home/maven
export PATH=${MAVEN_HOME}/bin:${PATH}
## 修改后的配置生效
source /etc/profile

## 查看jdk版本
java -version

## 查看maven版本
mvn -v

(3) 配置 JDK 与 Maven
在 Manage Jenkins 的 Global Tool Configuration 页面中配置 Maven 与 JDK。

这里填写的是容器中挂载点目录中的路径。

这里填写的也是容器中挂载点目录中的路径。最后再应用并保存。
 

20、Jenkins 集成 SonarQube

20.1 Jenkins 中安装SonarScanner

(1) SonarScanner 简介
SonarScanner 是一种代码扫描工具,专门用来扫描和分析项目代码质量。扫描和分析完成之后,会将结果写入到 SonarQube 服务器的数据库中,并在 SonarQube 平台显示这些数据。

(2) 下载
在 SonarQube 官网的帮助文档中可以下载 SonarScanner。这里下载一个 Linux 系统下使用的版本。SonarQube 官网链接:Clean Code: Writing Clear, Readable, Understandable & Reliable Quality Code | Sonar

(3) 安装 unzip
由于下载的 SonarScannner 是 zip 压缩类型的,所以需要在 Linux 系统中安装 unzip 命令,
以解压该压缩包。

yum install -y unzip


(4) 解压/移动
解压 zip 压缩包。

unzip sonar-scanner-cli-5.0.1.3006-linux.zip

由于后期要在 Jenkins 中集成 SonarScanner,需要 SonarScanner 存在于 Jenkins 服务器中的数据卷目录中。所以将解压后的目录移动到数据卷jenkins_home下并更名为sonar_scanner。

mv sonar-scanner-cli-5.0.1.3006-linux /var/jenkins_home/sonar-scanner

(5) 修改配置文件
在 sonar-scanner 目录的 conf 目录下有其配置文件 sonar-scanner.properties。修改该配置文件。

#----- Default SonarQube server
sonar.host.url=http://192.168.162.123:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

sonar.sources=./
sonar.java.binaries=./target

20.2 Jenkins 配置 SonarQube

(1) 安装插件
在 Jenkins 页面的系统管理 -- 插件管理 --Available plugins 中搜索 sonarqube scanner,
安装该插件。该插件用于连接 SonarScanner。

安装完毕后,点选“安装完成后重启 Jenkins”,进行重启。
(2) 添加 Sonarqube
打开 Jenkins 的 Manage Jenkins --Configure System 页面,找到 SonarQube servers,添加 SonarQube 服务器。

点击 Add SonarQube 按钮后即可看到以下配置框。

(3) 添加 SonarScanner
这里要将前面安装在 Jenkins 数据卷中的 SonarScanner 配置到 Jenkins 中。
在 Jenkins 页面的 Manage Jenkins  全局工具配置 中找到 SonarQube Scanner。

21、Jenkins 集成目标服务器


这里要配置连接到目标服务器的连接方式。打开 Manage Jenkins 中的 Configure System页面。

将页面拉到最下面,可以看到 Publish over SSH。这里可以设置非对称加密的身份验证方式,也可设置对称加密的身份验证方式。这里采用对称加密身份验证方式。点击新增按钮。

填写完毕后,页面拉到最下面,点击 Test Configuration 进行测试。

如果可以看到 Success,说明连接成功。然后再应用并保存。


22、自由风格的 CI 操作(中间架构)

22.1 中间架构图

22.2 创建 web 项目

创建一个 web 项目,就使用最简单的 spring boot 工程,例如工程名为 hellojks。仅需导入 spring web 依赖即可。

(1) 创建工程
创建一个 Spring Boot 工程,其仅包含一个 spring web 依赖。
(2) 定义 Controller
只需定义一个简单的 Controller 即可。

package com.tigerhhzz.hellojks.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author tigerhhzz
 * @Date 2023 11 27 16 28
 **/
@RestController
public class hellojenkinsController {
    @GetMapping("/hellojks")
    public String sayHellojks(){
        return "hello tigerhhzz,welcome to jenkins!!";
    }
}

(3) 访问效果

22.3 Idea 提交项目到远程仓库

(1) 在 GitLab 中创建远程仓库
首先在 GitLab 中创建一个远程仓库,用于管理前面 Idea 中创建的工程。

点击Create project后就可进入下个页面,可以看到当前仓库的信息及相关的操作命令。客户端通过这些命令可完成对该仓库的操作。

(2) 创建用户
仿照远程仓库页面中的 Git global stetup 中的命令,在项目的 Terminal 窗口中创建一个全局用户。
 

git config --global user.name "tigerhhzz"

git config --global user.email "5758703@qq.com"

(3) 初始化本地仓库
将当前的项目目录 hellojks 初始化为本地仓库。

(4) 提交代码到本地库
在项目上右击,选择 Git -- Commit Directory。

此时会弹出一个 Commit to master 的窗口。在其中选择要提交的文件,并在文本区填写提交日。然后 Commit。


然后会看到警告,不影响提交,直接再 Commit Anyway 即可。
提交后变为以下形式。

(5) 提交到远程库
首先要从远程仓库中获取仓库地址。选择复制 Clone with HTTP 的地址。

然后在项目上右键,选择 Git - Push

在新窗口中点击 Define remote,在弹出的窗口中粘贴进复制来的远程仓库地址。

Push 后会弹出访问 GitLab 的登录窗口,输入用户名 root,密码为前面修改过的密码。


推送成功后,在 idea 右下角即可看到成功提示。

此时刷新 GitLab 页面,即可看到推送来的项目。


22.4 从 GitLab 拉取代码

(1) 新建任务

(2) Jenkins 集成 GitLab
在点击确定后即可立即配置 Jenkins 中 GitLab 服务器的信息。

对于 public 的 GitLab 仓库,直接指定仓库地址,应用保存即可。但对于 private 仓库,则需要指定访问 GitLab 的用户名与密码。点击添加按钮,即可打开下面的窗口。

在其中填写用户名与密码后“添加”即可返回之前的页面,此时在 Credentials 下拉框中即可找到新添加的用户信息,选择即可。


(3) 立即构建

任务创建成功后即可看到如下页面。在该页面中点击“立即构建”,Jenkins 即可开始从GitLab 上拉取项目。此时右下角就会发生变化。

点击右下角的日期时间,选择控制台输出,可看到这个拉取过程的日志。


从以上日志的 git init /var/jenkins_home/workspace/my_hellojks 命令可以看出,Jenkins将其容器内的/var/jenkins_home/workspace/my_hellojks 目录作为项目的本地仓库。也就是将数据卷目录。进入 jenkins 数据卷可以看到该项目已经存在了。

cd /var/jenkins_home/workspace/my_hello-jks

22.5 将项目打为 jar 包

在 Jenkins 能够通过配置,调用本地的 maven 的 mvn 命令,将拉取来的项目打为 Jar 包。
(1) Jenkins 配置 mvn 命令

点击配置后,打开配置页面。然后点击 Build Steps,跳转到以下位置。

选择调用顶层 Maven 目标,即可使用前面配置的 Maven 来完成打包任务。


在 Maven 版本下拉框中选择前面配置好的 maven,目标中写入需要 maven 去执行的maven 命令,应用保存后,自动跳转回任务首页。


(2) 重新构建
在配置好 maven 的构建命令后,再次执行“立即构建”。

查看构建成功的日志,可看到熟悉的 BUILD SUCCESS。

构建成功后进入 jenkins 数据卷目录/var/jenkins_home/workspace/my_hello-jks 中可以看
到新增了 target 目录。打开 target 目录,可以看到打出的 jar 包。

22.6 代码质量检测

(1) sonar-scanner 手动检测
在 Jenkins 中数据卷目录/var/Jenkins_home 中已经安装过了 sonar-scanner。该目录下的bin 目录中有 sonar-scanner 命令。Jenkins 就是通过调用该命令完成代码质量检测的。

这里先通过手工执行命令方式来体验一下 sonar-scanner 命令完成代码检测的过程。
由于配置文件中使用的相对路径都是相对路径,所以若要运行 sonar-scanner 命令对项目进行手工质量检测,就需要在 workspace 的需要检测的项目目录中执行。所以,要么配置全局变量 path,要么直接使用 sonar-scanner 命令的绝对路径。为了简单,采用命令绝对路径方式。
 

/var/jenkins_home/sonar-scanner/bin/sonar-scanner \

-Dsonar.login=admin \
-Dsonar.password=XXXXXXX \
-Dsonar.projectKey=my_hello-jks \

检查过程有点慢!!!!!

看到以下日志,说明检测成功。

此时,在 sonarqube 首页就可看到多出了一个检测项目。

(2) 任务中配置 SonarScanner
现在要在 Jenkins 的 my_hellojks 项目中应用 SonarScanner 对其代码进行质量检测。所以需要在该项目中配置 SonarScanner。

(3) 重新构建
再次执行“立即构建”,构建成功后,刷新 SonarQube 页面,便可看到新增了一个项目。


22.7 将 jar 包推送到目标服务器

(1) 配置 SSH
Jenkins 通过 SSH 方式连接上目标服务器,并将 jar 包推送到目标服务器。

点击配置后,打开配置页面。将页面拉到最下面,找到“增加构建后操作步骤”。

(2) 重新构建
在返回的任务首页中,再次执行立即构建。查看日志可以看到连接目标服务器,推送 1个文件的日志。

查看目标服务器的目标目录/usr/local/jenkins,可以看到 jar 包已经推送了过来。

22.8 构建镜像启动容器

通过在 Jenkins 中配置在目标服务器中将要执行的相关命令,使得 Jenkins 将 jar 包推送到目标服务器后,立即自动执行配置的命令,将 jar 包构建为一个镜像,并启动其相应的容器,使项目启动运行。
(1) 定义 Dockerfile
若要构建镜像,就需要定义其 Dockerfile。现在 Idea 的工程中新建一个 Directory,例如docker,然后在其中新建一个 file。

FROM openjdk:8u102
MAINTAINER tigerhhzz 5758703@qq.com
LABEL auth="tiger" email="5758703@qq.com"
COPY hello-jks-0.0.1-SNAPSHOT.jar /root/hjks/hellojks.jar
WORKDIR /root/hjks
ENTRYPOINT ["java","-jar","hellojks.jar"]

(2) 定义 compose.yml
在 idea 的新建目录中再新建一个 compose.yml,用于构建镜像和启动容器。

services:
  hellojks:
    build: ./
    image: hellojks
    container_name: myhellojks
    ports:
      - 8080:8080

(3) 推送到 GitLab
将定义的这两个文件推送到 GitLab。在项目上右击,选择 Git -Commit Directory…。

push成功!!!!

刷新gilab:

(4) 再配置构建后操作
重新返回到任务首页,再次对“构建后操作”进行配置。

cd /usr/local/jenkins/docker
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build
docker image prune -f

(5) 重新构建
Jenkins 中在返回的任务首页中,再次执行立即构建。构建成功后,查看目标服务器中的//usr/local/jenkins/docker 目录,发现 docker 目录及其下的两个 docker 文件已经存在了,且 jar 包也复制了进来。

在目标服务器中 docker images,可以看到 hellojks 镜像已经生成。

在目标服务器中 docker ps,可以看到容器已经启动了。

在浏览器中访问目标服务器中的应用,已经可以访问了。


 

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

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

相关文章

分析某款go端口扫描器之一

一、概述 进来在学go的端口检测部分&#xff0c;但是自己写遇到很多问题&#xff0c;又不知道从何入手&#xff0c;故找来网上佬们写的现成工具&#xff0c;学习一波怎么实现的。分析过程杂乱&#xff0c;没啥思路&#xff0c;勿喷。 项目来源&#xff1a;https://github.com/…

python 基于opencv和face_recognition的人脸识别

python 基于opencv和face_recognition的人脸识别 代码如下&#xff1a; 使用一个photos存放你需要识别的照片&#xff0c;注意一个人一张就行 然后通过下面代码注册用户&#xff0c;之后启动程序&#xff0c;就会调用摄像头进行识别了。 AddPhoto(“发哥”, “./photos/fag…

【yolov5人行道-斑马线目标检测】

yolov5人行道-斑马线目标检测 数据集yolov5人行道-斑马线目标检测检测模型 数据集 YOLOv5是一种目标检测算法&#xff0c;可以用于检测图像中的人行道-斑马线。在目标检测领域&#xff0c;YOLOv5通过结合多种技术手段&#xff0c;包括使用Mosaic数据增强操作、自适应锚框计算与…

TIME_WAIT状态TCP连接导致套接字无法重用实验

理论相关知识可以看一下《TIME_WAIT相关知识》。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/socket.h> #include<errno.h> #include<syslog.h> #inc…

【ArcGIS Pro二次开发】(78):批量合并GDB数据库

有些GDB数据库会按分幅或行政区划进行分开储存&#xff0c;尤其是一些地形测绘或国情地理数据。 如下图所示&#xff1a; 数据是完整的&#xff0c;但使用的时候要一个一个拖进地图中&#xff0c;进行分析的时候也需要将其合并后使用。 因此就做了这个合库工具。 一、要实现的…

直播前期准备

直播前的准备是一个综合性的过程&#xff0c;需要从多个方面进行考虑和准备。以下是一些直播前准备的参考∶ 1.确定直播主题和目标∶明确直播的主题和目标&#xff0c;以及如何吸引观众。考虑观众的兴趣和需求&#xff0c;选择一个熟悉且具有吸引力的主题&#xff0c;以提升直…

字符串相似度匹配算法_莱茵斯坦距离算法

package day0330;public class LevenshteinDistanceUtil {public static void main(String[] args) {String a "WN64 F98";String b "WN64 F98 ";System.out.println("相似度:" getSimilarityRatio(a, b));}/*** 获取两字符串的相似度* * par…

扫码听音乐该如何制作?音乐的二维码生成方法

多个音频文件怎么做成一个二维码显示&#xff1f;二维码在现在的生活中拥有丰富的使用场景&#xff0c;可以用来作为多种内容类型的载体&#xff0c;比如音频二维码就是经常被使用的一种二维码类型。通过扫秒二维码来听音频文件&#xff0c;更加的灵活方便&#xff0c;那么音频…

六、shell编程

详见 《shell编程超详细入门教程》

队列基础(循环队列)

1.队列的定义: 和栈相反,队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表.它只允许在表的一端进行插入,而在另一端删除元素. 在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front). 2.循环队列的设计图示: 3.循环队列的结构设计: ty…

电话销售如何提高成功率

电话销售是一种非常有效的销售方式&#xff0c;睡着通信技术&#xff0c;互联网的发展&#xff0c;现在电话销售已经成为一种重要的销售方式&#xff0c;很多行业和领域都有使用。 虽然最终目的都是为了将产品卖出去&#xff0c;但是对于电话销售来说&#xff0c;前期寻找客户…

MySQL进阶知识:锁

目录 前言 全局锁 表级锁 表锁 元数据锁&#xff08;MDL&#xff09; 意向锁 行级锁 行锁 行锁演示 间隙锁/临界锁 演示 前言 MySQL中的锁&#xff0c;按照锁的粒度分&#xff0c;分为以下三类 全局锁&#xff1a;锁定数据库中的所有表。表级锁&#xff1a;每次操…

11-@Transaction与AOP冲突解决

如题&#xff0c;最近碰到了一个问题&#xff0c;在public方法上添加Transaction没有生效&#xff0c;事务没有回滚。 我自己模拟了一个功能&#xff0c;向数据库表User里面插入用户数据。说一下代码背景&#xff0c; 数据库MySQL&#xff0c;持久化层Mybatis&#xff0c;项目使…

Linux系统编程 day07 信号

Linux系统编程 day07 信号 1. 信号的介绍以及信号的机制2. 信号相关函数2.1 signal2.2 kill2.3 abort和raise2.4 alarm2.5 setitimer 3. 信号集4. 信号捕捉函数6. SIGCHLD信号7. SIGUSR1与SIGUSR2 1. 信号的介绍以及信号的机制 信号是信息的载体&#xff0c;在Linux/Unix环境下…

行业追踪,2023-11-30

自动复盘 2023-11-30 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

企业数字化转型应对传统网络挑战的关键策略

数字化变革正在以前所未有的速度和规模改变着我们的生活和工作方式&#xff0c;使得传统网络架构面临着巨大的挑战。其中包括带宽需求增加、多云应用增加、安全威胁增加以及传统网络设备无法满足需求等问题。 数字化时代需要更高速、更可靠、更安全的网络支持&#xff0c;传统网…

C语言必备知识--函数返回局部变量

0.总结 1. 不能以局部变量的方式创建字符串数组的首地址 2.如果函数的返回值非要是一个局部变量的地址&#xff0c;那么该局部变量一定要申明为static类型 3.返回指向字符串常量的指针 4.数组不能作为函数返回值 5.在函数中可以返回局部变量的值&#xff0c;但是不能返回…

如何安装鸿蒙Harmony 4.0低版API9三方库

比如我要用下拉刷新三方库pulltorefresh 安装命令如下 ohpm install ohos/pulltorefresh 安装完后然后运行Demo报错,说没有isAtEnd方法 然后查看pulltorefresh 最新版2.0.4对应Harmony API10,然而我的手机是API9,所以必须找到API9的库&#xff0c;然后查看2.0.1是还是API9 所…

docker集群的详解以及超详细搭建

文章目录 一、问题引入1. 多容器位于同一主机2. 多容器位于不同主机 二、介绍三、特性四、概念1. 节点nodes2. 服务(service)和任务(task)3. 负载均衡 五、docker网络1. overlay网络 六、docker集群搭建1. 环境介绍2. 创建集群3. 集群网络4. 加入工作节点 七、部署可视化界面po…

建设中国版MBA在线教育网站,群硕为Quantic敲开中国大门

2024考研即将拉开序幕&#xff0c;一个令人胆寒的问题出现在问答社区热榜—— 从现实来看&#xff0c;学历贬值已经成为一种全球现象。在卷学历的也不仅是大学生&#xff0c;还有很多职场人士&#xff0c;渴望通过获得MBA学位成为精英人才、商业领袖。 Quantic是交互式MBA线上…