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

[笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server

随着软件开发节奏的加快,持续集成(CI)和持续部署(CD)已经成为确保软件质量和加速产品发布的不可或缺的部分。Jenkins作为一款广泛使用的开源自动化服务器,为开发者提供了一个强大的平台来实施这些实践。然而,在实际操作中,尤其是在需要跨越不同操作系统边界时——例如将基于Linux的构建服务器上的Java应用程序部署到Windows Server环境中——可能会遇到一系列挑战。本文聚焦于这一特定场景,详细介绍如何使用Jenkins来创建和管理Jobs,以便从GitLab仓库中拉取最新的Java项目源码,经过自动化的构建过程,最终将其部署到Windows Server上运行。

jenkins 部署 : [笔记] Jenkins 安装与配置全攻略:Ubuntu 从零开始搭建持续集成环境


一. 安装 jenkins 插件

1. GitLab 相关插件

用于与 GitLab 仓库集成,支持拉取代码、触发构建等。

  • GitLab
    提供 GitLab 与 Jenkins 的集成,支持 GitLab Webhook、MR 触发构建等功能。

  • Git Plugin
    用于从 Git 仓库(包括 GitLab)拉取代码。

  • GitLab API
    提供与 GitLab API 的交互支持(可选,根据需求安装)。

2. 构建工具插件

用于构建 Java 项目。

  • Maven Integration Plugin
    如果使用 Maven 构建 Java 项目,需要安装此插件。

  • Gradle Plugin
    如果使用 Gradle 构建 Java 项目,需要安装此插件。

3. SSH 相关插件

用于通过 SSH 连接到 Windows Server 2019 并部署应用。

  • SSH Build Agents Plugin
    允许 Jenkins 使用 SSH 密钥进行身份验证。

  • Publish Over SSH
    支持通过 SSH 将构建产物传输到远程服务器(Windows Server 2019)。

在这里插入图片描述


二. 全局工具配置

在这里插入图片描述

1. Maven 配置

在这里插入图片描述

2. Maven 安装

在这里插入图片描述


三. 配置代码仓库

我的代码仓库是使用的 极狐 gitlab

1. 获取 gitlab 的访问令牌(Access tokens)

在这里插入图片描述

期间 read_repository 必须勾选

  • 仅需拉取代码:
    如果 Jenkins 只需要从 GitLab 拉取代码(例如通过 Git-over-HTTP 或 Repository Files API),那么只需授予 read_repository 权限即可。
  • 需要与 GitLab API 交互:
    如果 Jenkins 需要调用 GitLab API 来进行其他操作(比如获取项目详细信息、触发构建、管理合并请求等),你将需要授予 read_api 权限。这包括对所有群组和项目的读访问权、容器镜像库和软件包库的访问权等。
  • 高级集成:
    在某些情况下,你可能还需要更多的权限,例如推送代码、创建标签或分支等。这些情况通常需要更高的权限级别,如 write_repository 或自定义权限设置。

在这里插入图片描述

2. 配置 jenkins 凭证

  • 进入凭证管理
    在这里插入图片描述
  • 配置全局凭证

在这里插入图片描述

  • 添加凭证
    在这里插入图片描述
  • 选择类型 Username with password
    在这里插入图片描述

三. (win服务器使用) Windows Server 2019 启动 OpenSSH Server

1. 安装 OpenSSH Server

# 以管理员身份运行 PowerShell# 安装 OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0# 设置自动启动
Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic# 启动 SSH 服务
Start-Service sshd
Start-Service ssh-agent# 确认服务状态
Get-Service sshd

2. 配置 SSH 服务

编辑 C:\ProgramData\ssh\sshd_config 文件,添加或修改以下内容:

# 编辑 C:\ProgramData\ssh\sshd_config 文件,添加或修改以下内容:
PasswordAuthentication yes
PermitRootLogin yes
Subsystem powershell c:/progra~1/powershell/7/pwsh.exe
KexAlgorithms diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256
HostKeyAlgorithms ssh-rsa,rsa-sha2-512,rsa-sha2-256

3. 重启 SSH 服务

Restart-Service sshd

4. 配置防火墙

# 添加防火墙规则
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

四. 配置 SSH Servers

在这里插入图片描述

1. 使用账号密码

注意 : windows 服务器的配置 Remote Directory 只能使用基础目录 , 不可修改

在这里插入图片描述

2. 使用秘钥

a. 生成SSH密钥对

  • 打开终端或命令提示符。
  • 运行以下命令生成SSH密钥对:
# 生成 RSA 密钥对
ssh-keygen -t rsa -b 4096 -C "jenkins@example.com"# 密钥默认保存在:
# - 私钥:C:\Users\jenkins\.ssh\id_rsa
# - 公钥:C:\Users\jenkins\.ssh\id_rsa.pub
  • ssh-keygen : 用于生成、管理和转换认证密钥对的命令行工具,主要用于SSH协议。通常位于 /usr/bin/ssh-keygen/usr/local/bin/ssh-keygen
  • -t rsa-t 指定要生成的密钥类型。rsa 表示生成RSA类型的密钥。RSA是一种非对称加密算法,广泛用于SSH连接。其他常见的密钥类型包括 dsa(较少使用)、ecdsaed25519
  • -b 4096-b 指定密钥的位数。4096 表示生成的RSA密钥长度为4096位。默认情况下,ssh-keygen 生成的RSA密钥长度为2048位。增加密钥长度可以提高安全性,但也会稍微增加计算开销。4096位是一个常用的、安全的选择。
  • -C "your_email@example.com" : -C 添加一个注释(comment)到生成的公钥中。"your_email@example.com" 是你提供的注释内容,通常是你的电子邮件地址。
  • 按照提示操作,可以接受默认路径和文件名(通常是 ~/.ssh/id_rsa~/.ssh/id_rsa.pub)。
    在这里插入图片描述

  • Enter passphrase (empty for no passphrase):系统会提示你输入一个密码短语(passphrase)。如果你设置了密码短语,每次使用私钥时都需要输入它。这增加了安全性,但也增加了使用的复杂性。(如果你不希望设置密码短语,直接按回车键即可。)
    在这里插入图片描述
    在这里插入图片描述

b. 将公钥复制到 Windows Server

  • 将生成的公钥文件(通常是 ~/.ssh/id_rsa.pub)的内容复制到剪贴板。
  • 将公钥内容添加到 authorized_keys 文件
# 创建 authorized_keys 文件并添加公钥内容
# 将 Jenkins 服务器上 id_rsa.pub 的内容复制到这个文件
Add-Content -Path C:\Users\Administrator\.ssh\authorized_keys -Value "ssh-rsa AAAA..."

-Value 是你的 ~/.ssh/id_rsa.pub 的内容

在这里插入图片描述

c. 编辑 C:\ProgramData\ssh\sshd_config

# 启用公钥认证
PubkeyAuthentication yes# 指定授权密钥文件位置
AuthorizedKeysFile .ssh/authorized_keys# 可选:禁用密码认证(更安全)
PasswordAuthentication no

在这里插入图片描述

d. 设置文件权限

# 设置 .ssh 目录的权限
icacls "C:\Users\Administrator\.ssh" /inheritance:r
icacls "C:\Users\Administrator\.ssh" /grant "SYSTEM:(F)"
icacls "C:\Users\Administrator\.ssh" /grant "ADMINISTRATORS:(F)"
icacls "C:\Users\Administrator\.ssh" /grant "Administrator:(F)"# 设置 authorized_keys 文件的权限
icacls "C:\Users\Administrator\.ssh\authorized_keys" /inheritance:r
icacls "C:\Users\Administrator\.ssh\authorized_keys" /grant "SYSTEM:(F)"
icacls "C:\Users\Administrator\.ssh\authorized_keys" /grant "ADMINISTRATORS:(F)"
icacls "C:\Users\Administrator\.ssh\authorized_keys" /grant "Administrator:(F)"

e. 重启 SSH 服务

# 重启 SSH 服务
Restart-Service sshd

f. 在 Jenkins 中配置 SSH Publisher:

path to key 与 key 只需要配置一个就可以

在这里插入图片描述

3. 测试连接

在这里插入图片描述


四. 编写 jobs

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

1. 配置源码管理

在这里插入图片描述

2. 配置 构建完成后 上传产物与运行脚本

注意:

  1. 可以选择 构建环境中的 Send files or execute commands over SSH after the build runs 也可以选择 构建后操作中的Send build artifacts over SSH
  2. Remote directory : 我使用的是环境参数,在 Jenkins 中使用环境参数使用 必须是 ${FOLDER_NAME} 的格式。
  3. windows 服务器 运行脚本的话,只能运行服务器上的脚本。
> Exec command : 
> ${DEPLOY_BAT_PATH} "${FOLDER_NAME}" "${DEPLOY_LOG_PATH}" "${BASE_SOURCE_PATH}" "${BASE_TARGET_PATH}" "${JAR_NAME}"

在这里插入图片描述

3. 配置环境变量

在 Jenkins 中使用环境参数使用 必须是 ${FOLDER_NAME} 的格式。

  1. name : FOLDER_NAME , defaultValue : test , description : 部署文件夹名称
  2. name : DEPLOY_LOG_PATH , defaultValue : E:\deploy.log , description : 日志文件路径
  3. name : BASE_SOURCE_PATH , defaultValue : C:\Users\Administrator , description : 源代码基础路径
  4. name : BASE_TARGET_PATH , defaultValue : E:\project , description : 目标基础路径
  5. name : JAR_NAME , defaultValue : central-server.jar , description : JAR文件名称
  6. name : DEPLOY_BAT_PATH , defaultValue : E:\deploy.bat , description : 部署脚本路径

在这里插入图片描述

4. 编写脚本

部分内容声明 :

# 因为一些要求 , 要生成启动的脚本 , java -jar 换成 javaw -jar 也是一样的
echo Creating start script... >> %DEPLOY_LOG%
(echo @echo offecho cd /d "%TARGET_PATH%"echo java -jar "%JAR_NAME%" ^> "%TARGET_PATH%\app.log" 2^>^&1
) > "%TARGET_PATH%\start.bat"# 这里因为...用的盗版系统,环境变量被魔改过,start不会起作用.所以用 call 了,如果可以用start用start,call会等待。导致Jenkins超时
if exist "%TARGET_PATH%\%JAR_NAME%" (:: 启动应用cd /d "%TARGET_PATH%"call start.batecho Application started successfully >> %DEPLOY_LOG%
) else (echo WARNING: JAR file not found after deployment >> %DEPLOY_LOG%
)

完整脚本:

@echo off
setlocal EnableDelayedExpansion:: 检查参数
if "%~1"=="" (echo Error: folder_name parameter is missinggoto :usage
)
if "%~2"=="" (echo Error: deploy_log_path parameter is missinggoto :usage
)
if "%~3"=="" (echo Error: base_source_path parameter is missinggoto :usage
)
if "%~4"=="" (echo Error: base_target_path parameter is missinggoto :usage
)
if "%~5"=="" (echo Error: jar_name parameter is missinggoto :usage
):: 检查并创建日志文件目录
for %%I in ("%~2") do set "LOG_DIR=%%~dpI"
if not exist "!LOG_DIR!" (echo Creating log directory: !LOG_DIR!md "!LOG_DIR!" 2>nulif errorlevel 1 (echo Error: Failed to create log directorygoto :usage)
):: 设置日志文件和基础变量
set "FOLDER_NAME=%~1"
set "DEPLOY_LOG=%~2"
set "SOURCE_PATH=%~3\%FOLDER_NAME%"
set "TARGET_PATH=%~4\%FOLDER_NAME%"
set "JAR_NAME=%~5":: 记录部署开始
echo %date% %time% - Starting Jenkins deployment > %DEPLOY_LOG%
echo Configuration: >> %DEPLOY_LOG%
echo SOURCE_PATH=%SOURCE_PATH% >> %DEPLOY_LOG%
echo TARGET_PATH=%TARGET_PATH% >> %DEPLOY_LOG%
echo JAR_NAME=%JAR_NAME% >> %DEPLOY_LOG%:: 停止现有进程
echo %date% %time% - Attempting to stop existing process... >> %DEPLOY_LOG%
taskkill /F /IM java.exe /T >> %DEPLOY_LOG% 2>&1 || echo No Java processes found >> %DEPLOY_LOG%
echo %date% %time% - Process stop attempt completed >> %DEPLOY_LOG%:: 等待进程完全停止
echo %date% %time% - Waiting for processes to stop... >> %DEPLOY_LOG%
ping -n 11 127.0.0.1 > nul
echo %date% %time% - Wait completed >> %DEPLOY_LOG%:: 清理目标目录 - 即使失败也继续
echo Cleaning target directory... >> %DEPLOY_LOG%
if exist "%TARGET_PATH%" (rd /s /q "%TARGET_PATH%" >> %DEPLOY_LOG% 2>&1
):: 创建必要目录
md "%~4" 2>nul
md "%TARGET_PATH%" 2>nul:: 复制文件
echo Moving files... >> %DEPLOY_LOG%
robocopy "%SOURCE_PATH%" "%TARGET_PATH%" /E /MOVE /R:1 /W:1 >> %DEPLOY_LOG% 2>&1:: 创建启动脚本
echo Creating start script... >> %DEPLOY_LOG%
(echo @echo offecho cd /d "%TARGET_PATH%"echo java -jar "%JAR_NAME%" ^> "%TARGET_PATH%\app.log" 2^>^&1
) > "%TARGET_PATH%\start.bat":: 验证部署
if exist "%TARGET_PATH%\%JAR_NAME%" (:: 启动应用cd /d "%TARGET_PATH%"call start.batecho Application started successfully >> %DEPLOY_LOG%
) else (echo WARNING: JAR file not found after deployment >> %DEPLOY_LOG%
)echo Deployment completed at %date% %time% >> %DEPLOY_LOG%endlocal
exit /b 0:usage
echo Usage: deploy.bat [folder_name] [deploy_log_path] [base_source_path] [base_target_path] [jar_name]
echo Example: %%FOLDER_NAME%% %%DEPLOY_LOG_PATH%% %%BASE_SOURCE_PATH%% %%BASE_TARGET_PATH%% %%JAR_NAME%%
exit /b 1

五. 运行 jobs

在这里插入图片描述


相关文章:

[笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server

随着软件开发节奏的加快,持续集成(CI)和持续部署(CD)已经成为确保软件质量和加速产品发布的不可或缺的部分。Jenkins作为一款广泛使用的开源自动化服务器,为开发者提供了一个强大的平台来实施这些实践。然而…...

Git最便捷的迁移方式

#当公司要求git需要迁移时,你是不是感觉到束手无策。今天带来给大家最快,最便捷的迁移方式 这个命令是用于重命名git仓库中的远程仓库名。在这个命令中,我们将远程仓库的名字从"origin"改为"old-origin"。 git remote …...

【颜色分类--荷兰国旗问题】

问题 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums , 原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下…...

xrdp连接闪退情况之一

错误核查 首先使用命令vim ~/.xsession-errors,当里面的报错信息为WARNING **: Could not make bus activated clients aware of XDG_CURRENT_DESKTOPGNOME environment variable:Failed to execute child process “dbus-launch” (No such file or directory)&am…...

KubeVirt 进阶:设置超卖比、CPU/MEM 升降配、在线磁盘扩容

前两篇文章,我们分别介绍 Kubevirt 的安装、基本使用 以及 将 oVirt 虚拟机迁移到 KubeVirt,我们留了两个ToDo,一个是本地磁盘的动态分配,一个是固定 IP 的需求,本期我们先解决第一个,本地磁盘的动态分配。…...

(回溯法)leetcode39组合总和

第一个2开头,下面的子节点的集合元素均为2,5,3 但是在5开头,下面的子节点集合元素均为5,3 带着这个图的思路确定i和index的传递值 backtracking(i, nums,8,sum);用的是i而不是i1 // ConsoleApplication3.cpp : 此文件包含 "main" 函数。程序…...

【数据结构】二叉搜索树

目录 1. 二叉搜索树的概念 2. 二叉搜索树的性能分析 3.二叉搜索树的实现 3. 1.二叉搜索树的插入 3.2. 二叉搜索树的查找 3.3. 二叉搜索树的删除 3.4. 二叉搜索树的实现代码 4. 二叉搜索树key和key/value两种使用场景 4.1 key搜索场景: 4.2 key/value搜索场…...

高可用虚拟IP-keepalived

个人觉得华为云这个文档十分详细:使用虚拟IP和Keepalived搭建高可用Web集群_弹性云服务器 ECS_华为云 应用场景:虚拟IP技术。虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个…...

CSS语言的多线程编程

CSS语言的多线程编程 引言 在现代Web开发中,CSS(层叠样式表)被广泛用于给网页添加样式。然而,CSS本身是一种声明性语言,在设计上并没有直接支持多线程编程的功能。实际上,CSS的解析和应用是由浏览器的渲染…...

电脑之一键备份系统(One Click Backup System for Computer)

电脑之一键备份系统 相信使用电脑的的人都遇到过,电脑系统崩溃,开机蓝屏等原因,这个时候你急着用电脑办公,电脑却给你罢工是多么气人了,其实可以给电脑做一个系统备份。 最近每天都有系统蓝屏崩溃,这个实难…...

R语言的正则表达式

R语言中的正则表达式深度解析 正则表达式(Regular Expressions,简称Regex)是一种用于描述字符串匹配规则的工具,广泛应用于数据处理、文本分析、数据清洗等多个领域。在R语言中,正则表达式被广泛应用于字符串的处理和…...

解决el-table表格数据量过大导致页面卡顿问题 又名《umy-ui---虚拟表格仅渲染可视区域dom的神》

后台管理系统的某个页面需要展示多个列表 数据量过多 页面渲染dom卡顿 经调研发现两个组件 pl-table和umy-ui (也就是u-table) 最终决定使用umy-ui 它是专门基于 Vue 2.0 的桌面端组件库 流畅渲染表格万级数据 而且他是对element-ui的表格做了二次优化…...

《机器学习》——贝叶斯算法

贝叶斯简介 贝叶斯公式,又称贝叶斯定理、贝叶斯法则,最初是用来描述两个事件的条件概率间的关系的公式,后来被人们发现具有很深刻的实际意义和应用价值。该公式的实际内涵是,支持某项属性的事件发生得愈多,则该属性成…...

零基础 监控数据可视化 Spring Boot 2.x(Actuator + Prometheus + Grafana手把手) (上)

一、安装Prometheus Releases prometheus/prometheus GitHubhttps://github.com/prometheus/prometheus/releases 或 https://prometheus.io/download/https://prometheus.io/download/ 1. 下载适用于 Windows 的二进制文件: 找到最新版本的发布页面&#xf…...

4.STM32F407ZGT6-独立看门狗

参考: 1.正点原子 前言: 看门狗是一个项目或者产品中肯定需要的功能部分,必须会。常见的两种看门狗类型,独立看门狗和窗口看门狗,各有使用的场景。总结记录独立看门狗一些知识点: 1.独立看门狗的概念。&am…...

RHCE实验-nfs及autofs

本次实验的目的:实现服务端的网络文件共享(配置nfs),且实现客户端的自动挂载(配置autofs) 服务端配置: 关闭防火墙和selinux: 安装软件 [rootlocalhost ~]# yum install nfs-utils -y 创建需要被挂载的目…...

docker代理设置

最近遇到国内镜像无法下载的问题,因此需要配置docker代理来使其能够下载镜像 代理设置方法如下: 编辑 /etc/docker/daemon.json 文件: 配置 HTTP 和 HTTPS 代理: {"proxies": {"http-proxy": "http:/…...

死信交换机

什么是死信?什么是死信交换机? 在MQ中未能成功被消费的消息就被称之为死信,而死信交换机就用于存放死信消息。 消息转变成死信消息的原因: 消息被消费者拒绝或者需要重发(nack、reject) nack:消…...

cat命令详解

🏝️专栏:https://blog.csdn.net/2301_81831423/category_12872319.html 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” cat 是 Linux/Unix 中的一个非常常用的命令&…...

路由器的转发表

【4-24】 已知路由器R₁ 的转发表如表T-4-24 所示。 表T-4-24 习题4-24中路由器R₁的转发表 前缀匹配 下一跳地址 路由器接口 140.5.12.64/26 180.15.2.5 m2 130.5.8/24 190.16.6.2 ml 110.71/16 ----- m0 180.15/16 ----- m2 190.16/16 ----- ml 默认 11…...

腾讯云AI代码助手编程挑战赛-古诗词学习

一、作品介绍 在科技与文化深度交融的当下,“腾讯云 AI 代码助手编程挑战赛 - 每日古诗词” 宛如一颗璀璨的新星,闪耀登场。它绝非一场普通的赛事,而是一座连接编程智慧与古典诗词韵味的桥梁。 这项挑战赛以独特的视角,将每日古…...

积分系统的设计

1. 目的 学习是需要正反馈的,这样学员才能有源源不断的动力去继续学习。 为了激励学员,我们需要设定一个学习积分的排行榜系统。优秀的学员给予一定的奖励,比如奖励优惠券。大家互相比拼的,刺激学员持续学习,互相卷起…...

功能篇:spring事务配置

在 Java 应用程序中配置事务管理通常涉及使用 Spring 框架,因为 Spring 提供了强大的事务管理抽象,可以简化事务的配置和管理。Spring 支持两种类型的事务管理:编程式事务管理和声明式事务管理。 编程式事务管理 编程式事务管理是通过编写代…...

单元测试概述入门

引入 什么是测试?测试的阶段划分? 测试方法有哪些? 1.什么是单元测试? 单元测试:就是针对最小的功能单元(方法),编写测试代码对其正确性进行测试。 2.为什么要引入单元测试&#x…...

PySpark学习笔记2-RDD算子,RDD持久化

RDD定义 RDD是弹性分布式数据集,是spark中的最基本的数据抽象,里面的元素可以并行计算 RDD的五大特性 RDD是有分区的,它的分区是数据存储的最小单位 RDD的方法会作用在所有分区上 RDD之间是有依赖关系的 KV型的RDD可以有分区器 RDD的分区会尽…...

windows10下安装Microsoft SQL Server 2016

一、下载安装包 网站:MSDN, 我告诉你 - 做一个安静的工具站 选择需要的版本,点击详细信息,复制ed2k链接,打开eMule或迅雷,新建下载,粘贴链接,开始下载。 下载好的文件是一个.iso镜像文件。 二、…...

开关不一定是开关灯用 - 命令模式(Command Pattern)

命令模式(Command Pattern) 命令模式(Command Pattern)命令设计模式命令设计模式结构图命令设计模式涉及的角色 talk is cheap, show you my code总结 命令模式(Command Pattern) 命令模式&…...

急速了解什么是GPU服务器

GPU服务器是一种专门配置了高性能图形处理器(GPU)的服务器,旨在提供高性能计算、深度学习、科学计算等多种场景的计算服务。与传统的CPU服务器相比,GPU服务器在处理并行密集型计算任务时具有显著优势。本文将详细介绍GPU服务器的定…...

word论文排版常见问题汇总

word论文排版常见问题汇总 常用快捷键: Alt F9 正常模式与域代码模式切换 Ctrl F9 插入域代码 F9 刷新域代码显示,要注意选定后刷新才会有效果 word中在当前列表的基础上修改列表 在使用word时,我们会定义一个列表,并将其链接…...

作业:IO:day3

思维导图 使用3语言编写一个简易的界面 界面如下 1:标准输出流 2:标准错误流 3:文件流 要求: 按1的时候,通过printf输出数据, 按2的时候,通过perror输出数据, 按3的时候将输入写入文…...

H266/VVC 帧内预测 PDPC 技术

位置决定的帧内预测组合 PDPC 在 VVC 中,对于帧内预测的 Planar 模式、DC 模式和几种角度模式需要使用 PDPC (position dependent intra prediction combination) 方法进一步处理。 PDPC 用于 DC 模式、Planar 模式、小于等于水平模式(模式 18) 的角度模式、大于等于…...

微信小程序mp3音频播放组件,仅需传入url即可

// index.js // packageChat/components/audio-player/index.js Component({/*** 组件的属性列表*/properties: {/*** MP3 文件的 URL*/src: {type: String,value: ,observer(newVal, oldVal) {if (newVal ! oldVal && newVal) {// 如果 InnerAudioContext 已存在&…...

Hadoop3.x 万字解析,从入门到剖析源码

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...

mysql的一些函数及其用法

mysql 1-来自于leetcode1517的题目 表: Users------------------------ | Column Name | Type | ------------------------ | user_id | int | | name | varchar | | mail | varchar | ------------------------已知一个表,它的…...

[java基础]LinkedList源码粗析

LinkedList 的数据结构 实现List、Deque 接口,基于 双向链表实现的列表。与基于数组的 ArrayList 不同,基于链表的LinkedList 允许在列表的任何位置快速地插入和删除元素。 Java中LinkedList实现了Deque,它提供了 add, offer, remove, poll, …...

基于Spring Boot的海滨体育馆管理系统的设计与实现

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的海滨体育馆管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 宠物医院…...

易支付二次元网站源码及部署教程

易支付二次元网站源码及部署教程 引言 在当今数字化时代,二次元文化逐渐成为年轻人生活中不可或缺的一部分。为了满足这一庞大用户群体的需求,搭建一个二次元主题网站显得尤为重要。本文将为您详细介绍易支付二次元网站源码的特点及其部署教程&#xf…...

json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

在使用 Python 的 json 模块进行序列化时,默认情况下会将中文转换为 Unicode 编码。如果你希望在序列化时保留中文,可以通过设置 ensure_asciiFalse 来实现。 以下是示例代码: import jsondata {"name": "李浩瑞", &q…...

Perl语言的循环实现

Perl语言的循环实现 引言 Perl是一种强大的脚本语言,以其灵活的语法和强大的文本处理能力著称。无论是在系统管理、网络编程,还是在Web应用开发中,Perl都广泛应用于各种领域。循环是编程语言中一个极其重要的概念,它允许程序重复…...

IOMMU PT

什么是 IOMMU PT IOMMU PT(Input/Output Memory Management Unit - Pass-Through)是一种技术,主要用于虚拟化环境中,特别是在使用直接设备分配(也称为设备直通)的情况下。这项技术允许虚拟机直接访问物理硬…...

DNS协议漏洞利用实验_hust计算机网络安全实验

文章目录 计算机网络安全实验 DNS协议漏洞利用实验 docker使用 建立实验环境docker常用指令 一些注意事项设置本地 DNS 服务器 配置用户计算机设置本地DNS服务器在本地 DNS 服务器中建一个区域 修改主机文件(可略)netwox实施DNS的用户响应欺骗攻击netwo…...

深度学习中的卷积和反卷积(二)——反卷积的介绍

1 简介 反卷积(deconvolution)又称转置卷积,是卷积的拟操作,常用于GAN等模型中。反卷积是上采样的一种,上采样是指将特征图维度恢复到原始图的维度,这种增大维度的过程被称为上采样。上采样可以用插值或反…...

PyCharm 引用其他路径下的文件报错 ModuleNotFound 或报红

PyCharm 中引用其他路径下的文件提示 ModuleNotFound,将被引用目录添加到系统路径: # # 获取当前目录 dir_path os.path.dirname(os.path.realpath(__file__)) # # 获取上级目录 parent_dir_path os.path.abspath(os.path.join(dir_path, os.pardir))…...

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

​​​​​​​ 目录 一、引言 二、自动语音识别(automatic-speech-recognition) 2.1 概述 2.2 技术原理 2.2.1 whisper模型 2.2.2 Wav2vec 2.0模型 2.3 pipeline参数 2.3.1 pipeline对象实例化参数​​​​​​​ 2.3.2 pipeline对象使用参数…...

Linux 工作队列

系列文章目录 Linux内核学习 Linux 知识(1) Linux 知识(2) Linux 工作队列 Linux 内核源代码情景分析(一) Linux 设备驱动程序(二) 文章目录 系列文章目录综述工作(work_…...

程序血缘分析技术在工商银行软件工程中的应用

当前,随着软件领域技术更新换代速度的日益加快,市场需求也变得更加多样化和个性化,业界普遍通过加速产品迭代来满足客户需求,但在此过程中也暴露出一些研发管理痛点问题,如服务和程序类资产信息分散于各个不同的应用和系统中,信息归集费时费力;设计、开发和测试人员无法…...

纯手工(不基于maven的pom.xml、Web容器)连接MySQL数据库的详细过程(Java Web学习笔记)

1 引言 最近读一些Java Web开发类的书籍时,发现书中的连接数据库的过程缺少了一些关键性的过程,这对初学者非常不友好。为此,本文将给出详细的连接MySQL数据库的过程,并且是纯手工,不依赖于pom.xml和Web容器&#xff…...

node-sass@4.14.1报错的最终解决方案分享

输入npm i全安装文件所需的依赖的时候,博主是使用sass去书写的,使用的是node-sass4.14.1和sass-loader7.3.1的版本的,安装的时候老是出现错误, node-sass4.14.1版本不再被支持的原因 node-sass 是一个基于 LibSass 的 Node.js 绑…...

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨 作品简介 身处当今如火箭般迅猛发展的互联网时代,智能聊天助手已然化身成为提升用户体验的关键利器,全方位渗透至人们的数字生活。 紧紧跟随着这股汹涌澎湃的时代浪潮,我毅然投身于极具挑战性…...

【Linux系列】如何使用 nohup 命令在后台运行脚本

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...