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

Docker Swarm总结+Jenkins安装配置与集成(5/5)

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

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

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

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

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

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

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

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

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

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


目录

23、自由风格的 CI 操作(最终架构)

23.1 Jenkins 容器化实现

23.2 构建并推送镜像到 Harbor

23.3 通知目标服务器

24、自由风格的 CD 操作

24.1 发布 V1.0.0 版本

24.2 发布 V2.0.0 版本

24.3 Jenkins 配置 tag 参数

24.4 部署 v1.0.0

24.5 部署 v2.0.0

25、流水线任务

25.1 流水线简介

25.2 Hello World

25.3 SCM 方式维护脚本

25.4 流水线管理 hellojks

25.5 从 GitLab 拉取代码

25.6 将项目打为 jar 包

25.7 代码质量检测

25.8 构建镜像并推送到 Harbor

25.9 通知目标服务器执行 deploy 脚本

26、添加钉钉提醒

26.1 钉钉端操作

26.2 Jenkins 系统配置

26.3 重新构建


23、自由风格的 CI 操作(最终架构)


前面的架构存在的问题是,若有多个目标服务器都需要使用该镜像,那么每个目标服务
器都需要在本地构建镜像,形成系统资源浪费。若能够在 Jenkins 中将镜像相撞构建好并推
送到 Harbor 镜像中心,那么无论有多少目标服务器需要该镜像,都只需要从 Harbor 拉取即
可。

23.1 Jenkins 容器化实现

(1) Jenkins 容器化实现方案
有两种方案:

  •  DioD:要容器内部安装 Docker 引擎(不常用)
  •  DooD:与宿主机共享 Docker 引擎(常用)

(2) 修改 docker.sock 权限
/var/run/docker.sock 文件是 docker client 和 docker daemon 在本地进行通信的 socket
文件。默认的组为 docker,且 other 用户不具有读写权限,这样 Jenkins 是无法来操作该文
件的。

所以这里需要将其组调整为 root,且为其分配读写权限。(这个跟docker容器相关的,容器关闭后需要重新授权一下)

chown root:root docker.sockchmod o+rw docker.sock

此时再查看便可看到组与权限已经发生了变化。

(3) 修改 Jenkins 启动命令后重启
首先强制删除正在运行的 Jenkins 容器。

docker rm -f jenkins

然后在 Jenkins 启动命令中新增/var/run/docker.sock,docker 命令文件/usr/bin/docker,及/etc/docker/daemon.json 文件为数据卷。重启 Jenkins 容器。

docker run --name jenkins \
--restart always \
-p 8080:8080 \
-p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /etc/docker/daemon.json:/etc/docker/daemon.json \
-d jenkins/jenkins:2.387.1-lts

测试docker是否运行正常:

## 进入docker容器
docker exec -it jenkins bash## 查看docker信息
docker info

23.2 构建并推送镜像到 Harbor

这里要实现 Jenkins 将来自 GitLab 的 jar 包构建为镜像,并推送到 Harbor。

(1) 修改 daemon.json 文件
Jenkins 是 Harbor 的客户端,需要修改/etc/docker/daemon.json 文件。修改后重启 Docker。

"insecure-registries":["192.168.162.124"]

(2) Jenkins 删除构建后操作
原来的 Jenkins 中配置的“构建后操作”完成的是将代码推送到目标服务器后,让目标服务器通过 docker compose 完成镜像的构建与启动。但现在不需要了,因为镜像构建任务要由 Jenkins 自己完成了。在 Jenkins 当前任务下的“配置”中删除。

(3) Jenkins 添加 shell 命令
在 sonarqube 对代码质量检测完毕后,再添加一个“构建步骤”。这个构建步骤通过 shell命令方式完成。

mv target/*.jar docker/
docker build -t hellojks docker/
docker login -u admin -p 11111111 192.168.192.110
docker tag hellojks 192.168.192.118/jks/hellojks
docker image prune -f
docker push 192.168.192.110/jks/hellojks

(4) 重新构建
Jenkins 中在返回的任务首页中,再次执行立即构建。构建成功后,在 Jenkins 主机中可以查看到构建好的镜像与重 tag 过的镜像。

在 harbor 的仓库中也可以看到推送来的镜像。

23.3 通知目标服务器

(1) 修改 daemon.json 文件
目标服务器是 Harbor 的客户端,需要修改/etc/docker/daemon.json 文件。修改后重启
Docker。

(2) 定义脚本文件
在目标服务器 PATH 路径下的任意目录中定义一个脚本文件 deploy.sh。例如,定义在/usr/local/bin 目录下。然后再为其赋予可执行权限。这样该 deploy 命令就可以在任意目录下运行了。

文件内容如下:

(3) Jenkins 添加端口号参数
为了使用户可以随时指定容器对外暴露的参数,这里在 Jenkins 当前任务下的“配置”中“参数化构建过程”中添加一个字符参数。

(4) Jenkins 添加构建后操作
还是在 Jenkins 当前任务下的“配置”中,为任务添加构建后操作。

(5) 重新构建工程
这次重新构建,可以看到出现了 export_port 的文本框。在这里可以修改容器对外暴露的端口号。

构建成功后可以看到,目标服务器中增加了新的镜像,该镜像是从 harbor 拉取的。


还可以看到,该镜像的容器也已经启动。


通过浏览器访问目标服务器的应用,是没有问题的。

24、自由风格的 CD 操作


现在要为 GitLab 中当前的项目主干分支 origin/master 上的代码打上一个 Tag,例如 v1.0.0。
然后修改代码后仍提交到 GitLab 的主干分支 origin/master 上,此时再给项目打上一个 Tag,
例如 v2.0.0。这样, hellojenkins 项目的主干分支 origin/master 上就打上了两个 Tag。
而 Jenkins 可以根据主干分支 origin/master 上代码的不同 Tag 对项目进行分别构建。实
现项目的持续交付与持续部署。


24.1 发布 V1.0.0 版本


(1) 修改代码并推送
简单修改一个 Controller 中方法的返回值。修改代码后,将其推送到 GitLab。

(2) GitLab 中项目打 Tag

24.2 发布 V2.0.0 版本


(1) 修改代码
简单修改一个 Controller 中方法的返回值。将修改后的项目源码提交到 GitLab。


(2) GitLab 中再打 Tag
在 GitLab 中再次为刚提交到主干分支 origin/master 上的代码再打上一个新的 Tag。

此时可以看到,当前项目具有了两个 Tag。

24.3 Jenkins 配置 tag 参数


由于 GitLab 中的项目具有 tag 标签,那么 Jenkins 在进行项目构建时就需要让用户选择
准备构建哪个 tag 的项目。所以,需要在 Jenkins 中配置一个 Git 参数 tag 作为用户选项。
(1) 添加 Git 参数

这里选择的 Git 参数,即为前面下载的 Git Parameter 插件。

(2) 添加 checkout 命令
然后当前页面继续下拉,找到 Build Steps。

(3) 修改构建命令配置
然后当前页面继续下拉,找到 Build Steps 中原来添加的构建命令。在所有涉及镜像的命
令中添加上$hjtag 变量引用。然后应用保存。

(4) 修改 SSH 配置
然后当前页面继续下拉,找到“构建后操作”中的 Send build artifacts over SSH 中的 Exec 
command,将原来写死的版本 latest 修改为$hjtag。

24.4 部署 v1.0.0


(1) 重新构建工程
任务首页中再次点击 Build with Parameters 构建项目,发现增加了 hjtag 选项。这里选择v1.0.0 进行构建。

(2) 构建结果
构建成功后,在 Jenkins 中可以看到增加了新的镜像。

Harbor 中新增了 v1.0.0 的镜像。

在目标服务器上新增了 v1.0.0 的镜像,且该容器也运行了起来

在浏览器上访问到的页面内容也是 v1.0.0 的内容了。

24.5 部署 v2.0.0

此时再选择 v2.0.0 进行构建。

构建成功后,在浏览器刷新即可看到 v2.0.0 版本的内容了。

25、流水线任务


25.1 流水线简介


流水线是 Jenkins 对项目构建过程的一种管理方式。其将项目的构建过程按照构建阶段进行非常清晰的划分显示。用户可以通过可视化操作方式来轻松查看、管理构建过程中的各个阶段。


25.2 Hello World


(1) 新建流水线任务

(2) Hello World 项目创建与构建

点击立即构建后,就会看到“阶段视图”。

将鼠标放到各个阶段上会显示出 logs,点击 logs 可看到相关的日志。

(3) 修改项目脚本
为了更好的理解脚本,这里对 hello workd 项目的脚本进行修改。

(4) 再次构建
应用保存后,再次立即构建。阶段视图发生较大变化。每个阶段上均可看到相应的日志。

25.3 SCM 方式维护脚本


Jenkins 流水线任务提供了两种维护脚本的方式。本地方式与 SCM 方式。在 Jenkins 中维护的方式称为本地方式。
(1) 代码中追加 Jenkinsfile
每个要构建的项目采用 piple 方式进行构建管理,要求必须要有一个构建脚本,而采用SCM 脚本维护方式时,默认该脚本文件名为 Jenkinsfile。
对于本例,在 Idea 中的项目根目录下追加一个名为 Jenkinsfile 的文件。然后再将原来的脚本内容复制到该文件中。为了显示区别,这里对脚本内容进行了简单修改。

(2) 提交修改到 GitLab
将项目的修改追加到 GitLab 中。

然后在 GitLab 的项目首页中就可看到多了一个 Jenkinsfile 文件。然后再复制该项目的http 地址。

(3) Jenkins 配置
在 Jenkins 中流水线任务的“配置”中,流水线选择 SCM 方式,SCM 选择 Git,然后再将刚才复制的 GitLab 仓库地址粘贴到这里。


这里可以看到,文件名默认为 Jenkinsfile。当然,可以更换。应用保存。
(4) 重新构建
重新立即构建后会发现,除了这些阶段名称更新为了修改过的外,还新增了一个新的阶段 Checkout SCM。即从 SCM 中检出脚本。

25.4 流水线管理 hellojks


(1) 更新 Jenkinsfile
现要将之前的 hellojks 项目通过流水线方式进行构建管理。所以,首先需要修改 Idea 中的 Jenkinsfile 文件内容,然后再提交到 GitLab。

Jenkinsfile 文件具体内容如下:
 

pipeline {agent anystages {stage('从 GitLab 拉取代码') {steps {echo '从 GitLab 拉取代码,成功'}}stage('将项目打为 jar 包') {steps {echo '将项目打为 jar 包,成功'}}stage('代码质量检测') {steps {echo '代码质量检测,成功'}}stage('构建并推送镜像到 Harbor') {steps {echo '构建并推送镜像到 Harbor,成功'}}stage('通知目标服务器') {steps {echo '通知目标服务器,成功'}}}
}

(2) 重新构建
在 Jenkins 中对 hello_pipeline 任务重新构建。

25.5 从 GitLab 拉取代码


(1) 定义 Git 参数
在 Jenkins 中的 pipeline 任务中定义一个 Git 参数,该参数仍为发布的 tag。


(2) 流水线语法
在 pipeline 脚本文件中如何定义具体的命令语句来实现“从 GitLab 位取代码”“将项目打为 jar 包”等任务?pipeline 脚本文件是具有其特殊的语法的。不过,通过当前 pipeline 任务中的流水线语法,可自动生成符合 pipeline 脚本语法的脚本语句。

(3) 生成脚本命令
下面要通过流水线语法生成“从 GitLab 拉取代码”的语句。
首先从 GitLab 的项目中复制项目地址。

然后在 Jenkins 的流水线语法中选择“checkout:Check out from version control”,并将复制来的 GitLab 的项目地址粘贴到 Repository URL 中。

点击“生成流水线脚本”,便可以下面的文本框中自动生成相应脚本语句。

(4) 更新 Jenkinsfile
复制生成的流水线脚本,并将其写入到 Idea 中的 Jenkinsfile 的相应 stage{}中,并提交到GitLab。

(5) 重新构建
对任务进行重新构建,发现可以对构建的版本进行选择了。

构建成功后便可看到,在阶段视图中新增了一层的构建过程。在最上层的“从 GitLab拉取代码”阶段点击 Logs,便可看到拉取的日志。

25.6 将项目打为 jar 包


(1) 生成脚本命令
在 Jenkins 中通过流水线脚本语法生成“将项目打为 jar 包”的脚本语句。

(2) 更新 Jenkinsfile
复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交。

(3) 重新构建
对任务进行重新构建,然后便可在最上层的“将项目打为 jar 包”阶段中点击 Logs,便可看到 maven 构建的日志。


25.7 代码质量检测


(1) 生成脚本命令
在 Jenkins 中通过流水线脚本语法生成“代码质量检测”的脚本语句。

(2) 更新 Jenkinsfile
复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交。

(3) 重新构建
对任务进行重新立构建,然后便可在最上层的“通过 SonarQube 进行代码检测”阶段中点击 Logs,便可看到 SonarQube 代码检测的日志。

然后在 SonarQube 管理页面中就可看到新增加了一个 hello_pipeline 的项目了。

25.8 构建镜像并推送到 Harbor


(1) Jenkinsfile 中定义环境变量
在Idea中的Jenkinsfile文件中添加环境变量,这些变量将在后面生成的脚本命令中使用。

(2) 生成脚本命令
在 Jenkins 中通过流水线脚本语法生成“推送镜像到 Harbor”的脚本语句。脚本语句中使用的是 Jenkinsfile 中定义的环境变量。

(3) 更新 Jenkinsfile
复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交。

(4) 重新构建
对任务进行重新立构建,然后便可在最上层的“构建镜像并推送到 Harbor”阶段中点击 Logs,便可看到推送镜像到 Harbor 的日志。

此时在 Jenkins 中就可看到出现了 hello_pipeline 的镜像。

此时查看 harbor 的管理页面,可以看到在 jks 项目中新增加了 hello_pipeline 的仓库,且仓库中具有 v1.0.0 的镜像。

25.9 通知目标服务器执行 deploy 脚本


(1) 添加端口号参数
为了使用户可以随时指定容器对外暴露的参数,这里在 Jenkins 当前任务下的“配置”
中“参数化构建过程”中添加一个字符参数。

(2) 生成脚本命令
在 Jenkins 中通过流水线脚本语法生成“通知目标服务器执行 deploy 脚本”的脚本语句。选择sshPublisher:Send build artifacts over SSH,并从中找到目标服务器。

然后在下面的 Exec command 中键入要执行的命令,生成流水线脚本。

(3) 更新 Jenkinsfile
复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交。

原本生成的脚本中的 deploy.sh 命令是使用单引号括起来的,需要将这里的单引号更改为双引号。否则这些变量无法完成引用。

(4) 重新构建
对任务进行重新构建,然后便可在最上层的“通知目标服务器”阶段中点击 Logs,便可看到推送镜像到 Harbor 的日志。

查看目标服务器中的镜像,发现相应镜像已经从 harbor 上拉取了下来。

查看正在运行的容器,发现应用已经启动。

到此,通过 pipeline 进行项目构建已经全部完成。现在可以在浏览器上访问应用了。

26、添加钉钉提醒


这里要为流水线管理方式添加钉钉提醒功能。


26.1 钉钉端操作


(1) 创建项目群
首先需要在钉钉中创建一个项目群。

(2) 添加机器人
在项目群中添加一个自定义机器人,让该机器人进行项目构建提醒。

复制该 Webhook,后面在 Jenkins 配置时需要使用。

添加完毕后,就可看到机器人在群里发布的加入消息。


26.2 Jenkins 系统配置


(1) 插件下载
在 Jenkins 中下载 DingTalk 插件。

(2) Jenkins 配置
在 Jenkins 的系统管理中可找到“钉钉”,这是安装过 DingTalk 后出现的。

(3) 项目配置
打开项目的“配置”,在 General 中可以看到前面配置的钉钉机器人,点击该机器人的“高级”。

26.3 重新构建


(1) 构建成功
对任务进行重新构建。


构建结束后,钉钉的项目群中会看到机器人发出的消息。

(2) 构建失败
随便将脚本中的某数据修改错,然后提交到 GitLab。


重新构建后会出错。

同时也会在钉钉项目群中看到机器人发出的消息。

相关文章:

Docker Swarm总结+Jenkins安装配置与集成(5/5)

博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…...

docker安装Sentinel zipkin

文章目录 引言I Sentinel安装1.1 运行容器1.2 DOCKERFILE 参考1.3 pom 依赖1.4 .yml配置(整合springboot)II 资源保护2.1 Feign整合Sentinel2.2 CommonExceptionAdvice:限流异常处理类III zipkin引言 消息服务和请求第三方服务可不配置Sentinel。 </...

利用python实现文件压缩打包的功能

主要是利用了zipfile实现文件压缩打包&#xff0c;简单实例代码如下&#xff1a; import zipfilewith zipfile.ZipFile("archive.zip",w) as zipf:zipf.write("config.ini")zipf.write("test.py") 其中的模式 w表示如果没有该文件则创建该文件…...

如何创建百科?建立百科词条的意义何在?九问百科营销

在营销工作实践中&#xff0c;小马识途营销顾问经常接到关于百科营销的咨询&#xff0c;现整理了最受关注的九个问题分享给热爱营销工作的小伙伴。 一、什么是百科营销&#xff1f; 百科营销是借助百科知识传播&#xff0c;可以将企业、品牌、人物所拥有的对用户有价值的信息&a…...

Django如何设置时区为北京时间?

Django默认使用的是UTC时间&#xff0c;北京时间比UTC早8个小时&#xff0c;即如果UTC是凌晨两点&#xff0c;那么北京时间是早上八点。 Django中把setting.py中的语句&#xff1a; TIME_ZONE UTC修改为&#xff1a; TIME_ZONE Asia/Shanghai就把时区改为了北京时间。 这…...

Basemap地图绘制_Python数据分析与可视化

Basemap地图绘制 安装和使用地图投影地图背景在地图上画数据 Basemap是Matplotlib的一个子包&#xff0c;负责地图绘制。在数据可视化过程中&#xff0c;我们常需要将数据在地图上画出来。 比如说我们在地图上画出城市人口&#xff0c;飞机航线&#xff0c;军事基地&#xff0c…...

C#编程题分享(5)

判断质数问题 输⼊⼀个正整数&#xff0c;判断该数是否是质数。如果为质数输出 yes&#xff0c;如果不是输出no 样例输⼊113 输出yes int n Convert.ToInt32(Console.ReadLine()); int count 0; for (int i 1; i < n 1; i) {if (n % i 0) // 判断该数能被整除{coun…...

群晖Video Station 添加海报墙-新方法

海报墙 一般我们找到的都是mp4、mkv等格式的视频资源&#xff0c;而没有像上图这样的海报资源&#xff0c;那要怎样实现海报墙呢&#xff1f; 按照以前的方法&#xff0c;是可以通过The Movie Database的API Key来搜刮电影海报信息&#xff0c;但是现在这个方法不行了 现在介绍…...

【MODBUS】Modbus协议入门简介

Modbus&#xff08;Modicon Communication Protocol&#xff09;是一种用于工业自动化领域的通信协议&#xff0c;最初由Modicon&#xff08;现在是施耐德电气的一部分&#xff09;开发。Modbus协议被广泛应用于连接不同厂商的工业设备&#xff0c;实现设备之间的通信和数据交换…...

ORA-00257: archiver error. Connect internal only, until freed……

今天给客户测 试问题&#xff0c;让客户把数据发过来了。解压缩后一看&#xff0c;他们还是用的oracle 815版本的(他们exp导出时&#xff0c;带了导出日志&#xff0c;从导出日志中看出来是oracle 815版本的)&#xff0c;不过没有关系&#xff0c;低版本的exp是可以用高版本的i…...

继承 和 多肽(超重点 ! ! !)

[本节目标] 1.继承 2.组合 3.多肽 1.继承 1.1 为什么要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物对象&#xff0c;则可以用来表示现实中的实体&#xff0c;但是现实世界错综复杂&#xff0c;事物之间可能会存在一些关联&#xff0…...

H265、VP9、AV1视频编码器性能对比

1、背景介绍 目前在视频编解码器中,H264 已经成为绝对的主流,被大部分设备、浏览器所支持。虽然有更先进的编码器推出,但是受限于推广速度和设备支持成本,一直未能成为主流。 今年公司的目标是持续降本增效,现在将”屠刀“指向了视频业务的存储成本。视频文件存储主要两…...

C语言-结构体

---------------------------- ------------------ 岁月漫长心怀热爱&#xff0c;携手共赴星辰大海 --------今天来到我们自定义类型 -----结构体的讲解 目录 结构体的类型声明和初始化 结构体的类型声明 结构体成员的直接访问 结构体成员的间接访问 嵌套结构体进行访问 使用…...

C#拼夕夕自动化登录,电商网页自动化操作。WebView2

单纯靠WebView2是没办法通过JS实现自动登录操作的&#xff0c;包括浏览器插件&#xff0c;都不行&#xff0c;因为大公司对反爬机制控制的还是挺严格。 下面是实现效果&#xff0c;私信我&#xff0c;咨询解决方案。 20231202_153912 C#有偿Q群&#xff1a;927860652博客仅为…...

【Spring Boot 源码学习】BootstrapRegistryInitializer 详解

Spring Boot 源码学习系列 BootstrapRegistryInitializer 详解 引言往期内容主要内容1. 初识 BootstrapRegistryInitializer2. 加载 BootstrapRegistryInitializer3. BootstrapRegistryInitializer 的初始化 总结 引言 书接前文《初识 SpringApplication》&#xff0c;我们从 …...

预览功能实现

需求&#xff1a;将后端返回来的文字或者图片和视频展示在页面上。 <!-- 预览 --><el-dialog title"预览" :visible.sync"dialogPreviewVisible" width"50%" append-to-body :close-on-click-modal"false" close"Previe…...

canvas基础:绘制贝塞尔曲线

canvas实例应用100 专栏提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。 canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重要的帮助。 文章目录 bez…...

高项备考葵花宝典-项目范围管理输入、输出、工具和技术

项目范围管理包括确保项目“做”且“只做”所需的全部工作&#xff08;即不能少做&#xff0c;也不能多做&#xff0c;如果多做&#xff0c;就要消耗团队额外的时间和资源&#xff0c;并且无法被认可&#xff09;&#xff0c;以成功完成项目。项目范围管理主要在于定义和控制哪…...

在表格中显示字典的内容(根据后端返回的数据)vue3

进入页面&#xff0c;调接口&#xff0c;后端返回数据&#xff0c;indexType为0或者1&#xff0c;要用这个数据显示字典的内容 用插槽拿到数据 写一个函数&#xff0c;在模板中使用 const { proxy } getCurrentInstance(); // 字典-指标类型 const { index_type } proxy.u…...

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之边条主控菜单构件简介

编程怎么学才能快速入门&#xff0c;分享一款中文编程工具快速学习编程思路&#xff0c;中文编程工具之边条主控菜单构件简介 一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程编程系统化教程链接https://jywxz.blog…...

MySQL索引下推

文章目录 索引下推为什么范围查找Mysql没有用索引下推优化&#xff1f; 说到索引下推&#xff0c;应该会有不少人对它很陌生的&#xff0c;那么什么是索引下推&#xff0c;今天我们就来谈谈它到底是什么样&#xff1f; 索引下推 索引下推&#xff1a;MySQL 5.6 引入的索引下推…...

代码随想录刷题题Day3

刷题的第三天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C / Python Day3 任务 ● 链表理论基础 ● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表 1 链表理论基础 链表&#xff1a;通过…...

GO学习之 单例模式 sync.Once

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

应用安全四十三:无密码认证安全

什么是无密码认证&#xff1f; 无密码认证是一种新兴的安全技术和身份认证手段&#xff0c;是用密码以外的东西验证软件用户身份的过程&#xff0c;旨在替代传统的用户账号和密码认证方法&#xff0c;提高账号的安全性和用户体验。无密码技术通过生物识别、多因素认证、基于硬…...

Lattice-Based Blind Signatures: Short, Efficient, and Round-Optimal

目录 摘要引言 Lattice-Based Blind Signatures: Short, Efficient, and Round-Optimal CCS 2023 摘要 我们提出了一种基于随机预言机启发式和标准格问题&#xff08;环/模块SIS/LWE和NTRU&#xff09;的2轮盲签名协议&#xff0c;签名大小为22KB。该协议是全面优化的&#xf…...

Qt/C++音视频开发57-切换音视频轨道/切换节目流/分别切换音频视频轨道

一、前言 对各种音视频文件格式的支持&#xff0c;是一个播放器的基础功能。一般的音视频文件只有1路流&#xff0c;比如音频文件只有1路音频流&#xff0c;视频文件只有1路音频1路视频流&#xff0c;实践过程中发现&#xff0c;还有一种ts格式的文件&#xff0c;可能有多路流…...

深度学习之基于Django文本情感分析识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在文本情感分析领域的应用已经取得了显著的进展。Django是一个流行的Python Web框架&#xff0c;它可以帮助…...

138. 随机链表的复制 --力扣 --JAVA

题目 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点…...

Python Flask 框架开发

1. Python 代码示例&#xff08;使用 Flask 框架&#xff09; 1.1 安装依赖库 pip install flask flask_sqlalchemy flask_login flask_wtf 1.2 主应用文件 app.py from flask import Flask, request, jsonify, redirect, url_for, render_template, flash from flask_sqla…...

k8s安装-学习环境

目录 环境准备 配置hosts 关闭防火墙 关闭交换分区 调整swappiness参数 关闭setlinux Ipv4转发 时钟同步 安装Docker 配置Yum源 安装 配置 启动 日志 安装k8s 配置Yum源 Master节点 安装 初始化 配置kubectl 部署CNI网络插件 Node节点 检查 环境准备 准…...