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

Jenkins:开启高效软件开发的魔法之门

一、Jenkins 是什么

Jenkins 是一款基于 Java 开发的开源持续集成工具,在软件开发流程中占据着举足轻重的地位。它的前身是 Hudson ,于 2004 年由 Sun 公司的 Kohsuke Kawaguchi 开发,2011 年因商标纠纷更名为 Jenkins。发展至今,Jenkins 已拥有庞大的社区支持和丰富的插件生态,几乎涵盖了软件开发生命周期的每一个环节。

它通过监控代码仓库的变化,一旦有新代码提交,便自动触发预先设定的构建、测试和部署等任务 ,实现了软件交付过程的自动化。借助 Jenkins,开发团队能够更加高效地协作,及时发现并解决代码集成过程中出现的问题,极大地提升了软件开发的效率和质量。

二、Jenkins 的特点和优势

2.1 丰富的插件生态

Jenkins 拥有超过 1800 个插件 ,几乎可以与任何你能想到的工具集成。比如与版本控制系统 Git、SVN 集成,实现代码的自动拉取;通过 Maven Integration 插件,能无缝对接 Maven 项目,进行自动化的编译、测试和打包;还有 Allure 插件,用于生成精美的测试报告,方便团队成员查看测试结果。以一个 Java 项目为例,借助这些插件,Jenkins 可以在代码提交后,自动从 Git 仓库拉取代码,使用 Maven 进行构建和测试,并将 Allure 生成的测试报告展示在 Jenkins 界面上,极大地简化了开发流程。

2.2 自动化构建与测试

只需简单配置,Jenkins 就能监控代码仓库的变化,一旦有新代码提交,便会自动触发构建和测试流程。这种自动化不仅节省了人力,还能确保每次代码变更都能及时得到验证,大大提高了代码质量。例如,一个多人协作的项目,开发人员频繁提交代码,Jenkins 持续集成可以在每次提交后自动构建和测试,及时发现代码中的语法错误、单元测试失败等问题,避免问题在后续开发中积累,降低修复成本。

2.3 分布式构建

分布式构建是指 Jenkins 可以将构建任务分配到多个节点(物理机或虚拟机)上并行执行。在大型项目中,构建过程可能涉及大量的代码编译、依赖下载等操作,单节点的计算资源可能无法满足需求,导致构建时间过长。而分布式构建通过利用多个节点的计算资源,可以显著缩短构建时间,提高构建效率。比如一个包含多个模块的大型微服务项目,每个模块的构建都可以分配到不同的节点上同时进行,最后再将各个模块的构建结果整合,大大加快了整个项目的构建速度。

2.4 易于配置与使用

Jenkins 提供了直观的 Web 界面,即使是新手也能轻松上手。在创建任务时,通过简单的表单填写和选项选择,就能完成项目配置,包括源码管理、构建触发器、构建步骤和构建后操作等。以构建一个简单的 Python 项目为例,只需在 Jenkins 界面中填写 Git 仓库地址、选择构建触发方式(如定时触发或代码提交触发)、添加执行 Python 脚本的构建步骤,即可完成配置,启动自动化构建流程。

三、安装 Jenkins

3.1 安装前准备

Jenkins 是基于 Java 开发的,所以在安装 Jenkins 之前,需要确保系统已经安装了 Java 环境 。可以通过以下命令检查系统是否安装了 Java:

 

java -version

如果系统已经安装了 Java,执行上述命令后会显示 Java 的版本信息;如果未安装,则会提示 “command not found: java”(Linux 系统)或 “'java' 不是内部或外部命令,也不是可运行的程序或批处理文件”(Windows 系统) 。若系统未安装 Java,需要先安装 Java 环境。对于 Linux 系统,可以使用包管理器(如 apt、yum 等)安装 OpenJDK;对于 Windows 系统,可以从 Oracle 官方网站下载 JDK 安装包进行安装 。

3.2 在 Linux 系统上安装(以 Ubuntu 为例)

  1. 添加软件源
    • 导入 Jenkins 官方的 GPG 密钥,确保软件源的安全性:
 

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null

  • 将 Jenkins 软件源添加到系统的源列表中:
 

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

  1. 更新软件包列表:添加软件源后,需要更新系统的软件包列表,以便获取 Jenkins 的安装信息:
 

sudo apt update

  1. 安装 Jenkins:执行安装命令,安装 Jenkins 及其依赖项:
 

sudo apt install jenkins

安装完成后,Jenkins 服务会自动启动 。可以使用以下命令检查 Jenkins 服务的运行状态:

 

sudo systemctl status jenkins

如果服务正常运行,会显示 “active (running)” 。默认情况下,Jenkins 监听在 8080 端口,可以通过浏览器访问 “http:// 你的服务器 IP:8080” 来访问 Jenkins 的 Web 界面。首次访问时,需要输入初始管理员密码,密码存储在 “/var/lib/jenkins/secrets/initialAdminPassword” 文件中,可以使用以下命令查看:

 

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

3.3 在 Windows 系统上安装

  1. 下载安装包:从 Jenkins 官方网站(https://www.jenkins.io/download/ )下载 Windows 版的 Jenkins 安装包,有.msi 和.war 两种格式,建议下载.msi 格式的安装包,这种方式安装更为简单方便,会自动注册为系统服务。
  1. 安装过程
    • 双击下载的.msi 安装包,进入安装向导,点击 “Next”。
    • 选择安装路径,建议使用默认路径,也可以根据需求自定义路径,然后点击 “Next”。
    • 选择 Jenkins 的运行方式,可以选择 “Install as a service” 将 Jenkins 安装为系统服务,这样系统启动时 Jenkins 会自动启动;也可以选择 “Run in a console window” 在控制台窗口中运行,这里推荐选择安装为系统服务,然后点击 “Next”。
    • 设置 Jenkins 的访问端口,默认端口为 8080,如果该端口被占用,可以修改为其他可用端口,点击 “Test Port” 测试端口是否可用,测试通过后点击 “Next”。
    • 选择系统中已安装的 JDK 路径,Jenkins 会自动检测系统中的 JDK,若检测不到,手动指定 JDK 的安装目录,然后点击 “Next”。
    • 确认安装信息无误后,点击 “Install” 开始安装,安装过程可能需要一些时间,请耐心等待。
    • 安装完成后,点击 “Finish” 完成安装。
  1. 初始配置
    • 打开浏览器,访问 “http://localhost:8080”(如果安装时修改了端口,使用修改后的端口),进入 Jenkins 的初始化页面。
    • 输入初始管理员密码,密码存储在 Jenkins 安装目录下的 “secrets\initialAdminPassword” 文件中,找到并复制该文件中的密码,粘贴到输入框中,点击 “Continue”。
    • 选择安装插件的方式,可以选择 “Install suggested plugins” 安装 Jenkins 推荐的插件,也可以选择 “Select plugins to install” 自定义安装插件,这里选择安装推荐的插件,然后等待插件安装完成。
    • 插件安装完成后,创建管理员账号,输入用户名、密码、邮箱等信息,点击 “Save and Finish” 完成设置。
    • 配置完成后,即可进入 Jenkins 的主界面,开始使用 Jenkins。

四、Jenkins 使用教程

4.1 初始配置

首次访问 Jenkins 的 Web 界面时,会看到一个解锁页面 。按照页面提示,在服务器上执行相应命令获取初始管理员密码,例如在 Linux 系统中,通过 “sudo cat /var/lib/jenkins/secrets/initialAdminPassword” 命令获取密码,将其输入到解锁页面的输入框中,点击 “Continue”。

接下来进入插件安装页面 ,这里提供了两种安装方式:选择 “Install suggested plugins”,Jenkins 会自动安装一系列常用插件,这些插件涵盖了版本控制、构建工具集成、测试报告生成等多个方面,能满足大部分项目的基本需求;若对插件有特定要求,也可以选择 “Select plugins to install” 来自定义安装插件,在插件列表中勾选需要的插件,然后点击 “Install” 开始安装。

插件安装完成后,需要创建管理员账号 。填写用户名、密码、全名和电子邮件地址等信息,点击 “Save and Finish”,完成管理员账号的创建。至此,Jenkins 的初始配置完成,即可开始使用 Jenkins 创建和管理项目。

4.2 创建任务

以自由风格项目为例,介绍在 Jenkins 中创建任务的详细步骤。在 Jenkins 主界面,点击左上角的 “新建 Item”,在弹出的对话框中输入任务名称,例如 “my - project”,然后选择 “Freestyle project”,点击 “OK”。

4.2.1 源码管理

如果项目使用 Git 进行版本控制,在 “源码管理” 部分选择 “Git” 。在 “Repository URL” 中填写项目的 Git 仓库地址,如 “https://github.com/yourusername/yourproject.git”。如果仓库是私有的,需要添加凭证。点击 “Add”,选择 “Username with password”,输入 Git 仓库的用户名和密码,点击 “Add” 完成添加。在 “Branches to build” 中指定要构建的分支,例如 “*/master” 表示构建 master 分支。

4.2.2 构建触发器

常见的构建触发方式有以下几种:

  • 定时触发:勾选 “Build periodically”,在输入框中使用 Cron 表达式设置定时构建的时间 。例如,“H 8 * * *” 表示每天早上 8 点触发构建;“H/15 * * * *” 表示每 15 分钟触发一次构建。
  • 代码提交触发:对于 Git 项目,可以勾选 “GitHub hook trigger for GITScm polling” ,Jenkins 会监听 Git 仓库的 Webhook,当有代码提交时自动触发构建。需要在 GitHub 的项目设置中配置 Webhook,将 Webhook 地址指向 Jenkins 的相应 URL。
  • 远程触发:勾选 “Trigger builds remotely”,输入一个自定义的认证令牌(Token) ,通过发送 HTTP 请求到 Jenkins 的特定 URL 并带上这个 Token,即可远程触发构建。例如,使用 curl 命令:curl -X POST http://your - jenkins - url:8080/job/your - job/build?token=your - token。
4.2.3 构建环境

构建环境配置部分有一些常用的选项 。例如,勾选 “Delete workspace before build starts”,在每次构建前会清空工作空间,确保构建是基于最新的代码,避免因残留文件导致的构建问题;若项目需要特定的环境变量,可以点击 “Add environment variable” 添加环境变量,如配置 Java 环境变量 “JAVA_HOME” 等。

4.2.4 构建步骤

以 Java 项目为例,通常使用 Maven 进行项目构建 。点击 “Add build step”,选择 “Invoke top - level Maven targets”。在 “Goals” 输入框中输入 Maven 命令,如 “clean install”,表示先清理项目,然后进行编译、测试和打包;如果项目有自定义的构建脚本,也可以选择 “Execute shell”(Linux 系统)或 “Execute Windows batch command”(Windows 系统),在输入框中输入脚本命令来执行构建操作。

4.2.5 构建后操作

构建完成后,可以进行一些后续操作 。比如,如果构建生成了可执行文件或部署包,需要将其部署到服务器上,可以使用 “Publish over SSH” 插件(需提前安装),配置远程服务器的 SSH 信息,包括服务器地址、用户名、密码或私钥,然后在 “Transfers” 部分配置要传输的文件路径和目标路径,将构建产物部署到远程服务器;还可以添加 “Editable Email Notification” 插件配置邮件通知,在构建失败或成功时向指定的邮箱发送通知邮件,告知项目成员构建结果。

4.3 运行任务

完成任务配置后,在任务的主页面点击 “立即构建” 按钮 ,即可启动构建任务。在任务页面的 “Build History” 区域,可以看到构建的进度条和状态,绿色表示构建成功,红色表示构建失败。点击构建历史中的某个构建记录,可以查看详细的构建日志,日志中会记录构建过程中执行的每一步操作,包括代码拉取、编译、测试等步骤的输出信息,通过查看日志可以快速定位和解决构建过程中出现的问题。

五、使用案例展示

5.1 项目背景

假设我们有一个名为 “OnlineShop” 的 Java 电商项目,采用 Spring Boot 框架进行开发 ,并使用 MyBatis 作为持久层框架,数据库选用 MySQL。项目的功能包括用户管理、商品管理、订单管理、购物车等模块,前后端分离架构,前端通过 RESTful API 与后端进行交互。在开发过程中,团队成员使用 Git 进行版本控制,代码仓库托管在 GitHub 上。随着项目的不断迭代,开发人员频繁提交代码,传统的手动构建和部署方式效率低下,容易出错,无法满足项目快速迭代的需求,因此引入 Jenkins 实现自动化构建和部署。

5.2 Jenkins 配置过程

  1. 创建任务:在 Jenkins 主界面点击 “新建 Item”,输入任务名称 “OnlineShop - CI”,选择 “Freestyle project”,点击 “OK”。
  1. 源码管理:在 “源码管理” 部分选择 “Git” ,在 “Repository URL” 中填写项目的 GitHub 仓库地址 “https://github.com/yourusername/OnlineShop.git”。因为仓库是私有的,点击 “Add” 添加凭证,选择 “Username with password”,输入 GitHub 的用户名和密码,点击 “Add”。在 “Branches to build” 中指定构建 master 分支,即输入 “*/master”。
  1. 构建触发器:勾选 “GitHub hook trigger for GITScm polling” ,这样当 GitHub 仓库有代码提交时,会自动触发 Jenkins 构建。同时,为了防止 Webhook 触发失败,也设置定时触发,勾选 “Build periodically”,输入 Cron 表达式 “H/15 * * * *”,表示每 15 分钟检查一次代码更新并触发构建。
  1. 构建环境:勾选 “Delete workspace before build starts” ,确保每次构建都是基于最新的代码,避免因残留文件导致的构建问题。
  1. 构建步骤:点击 “Add build step”,选择 “Invoke top - level Maven targets” 。在 “Goals” 输入框中输入 “clean install -DskipTests”,“clean” 表示清理项目,删除之前的编译结果;“install” 表示编译、测试和打包项目;“-DskipTests” 表示跳过测试阶段,因为项目的单元测试和集成测试耗时较长,在构建时先跳过,后续在专门的测试环境中进行测试,以加快构建速度。如果项目需要特定的环境变量,也可以在 “Build Environment” 中添加,例如设置数据库连接字符串等。
  1. 构建后操作:添加 “Publish over SSH” 插件配置远程部署 。在 “SSH Servers” 部分配置远程服务器的信息,包括服务器 IP 地址、用户名、密码或私钥。配置完成后,在 “Transfers” 部分设置源文件路径为项目打包后的目标文件路径,如 “target/OnlineShop - 1.0.0.jar”,目标文件路径为远程服务器上的部署目录,如 “/usr/local/tomcat/webapps/”。这样构建完成后,Jenkins 会将项目的 jar 包通过 SSH 传输到远程服务器的指定目录下。同时,添加 “Editable Email Notification” 插件配置邮件通知 ,在 “Recipients” 中填写接收邮件的邮箱地址,在 “Default Subject” 中设置邮件主题为 “OnlineShop 构建结果通知”,在 “Default Content” 中设置邮件内容,包含构建状态、构建日志链接等信息,以便项目成员及时了解构建结果。

5.3 实施效果

通过 Jenkins 实现自动化构建和部署后,项目的开发效率和质量得到了显著提升。在效率方面,开发人员提交代码后,Jenkins 自动触发构建和部署,整个过程只需几分钟,相比之前手动构建和部署需要半小时甚至更长时间,大大缩短了软件交付周期,使新功能能够更快地发布到生产环境。在质量方面,每次代码提交都能及时进行构建和测试,及时发现代码中的语法错误、依赖冲突等问题 ,避免了问题在后续开发中积累,降低了修复成本。同时,通过邮件通知,项目成员能够及时了解构建结果,便于快速响应和解决问题,提高了团队协作效率,保障了项目的稳定运行和持续迭代。

六、总结与展望

Jenkins 作为一款强大的开源持续集成工具,在软件开发流程中扮演着关键角色,极大地提升了开发效率和软件质量。它丰富的插件生态、自动化构建与测试、分布式构建以及易于配置使用等特性,使其成为众多开发团队的首选 。通过本文的介绍,相信大家对 Jenkins 的安装、配置和使用有了较为全面的了解。

在实际项目中,建议大家积极引入 Jenkins,根据项目的特点和需求,灵活配置和使用 Jenkins 的各项功能。同时,随着技术的不断发展,持续集成和持续交付的理念也在不断演进,未来 Jenkins 也将持续更新和完善,为软件开发带来更多的便利和价值。希望大家能够持续关注 Jenkins 的发展,不断探索和实践,充分发挥 Jenkins 在软件开发中的优势 ,助力项目的成功交付。

相关文章:

Jenkins:开启高效软件开发的魔法之门

一、Jenkins 是什么 Jenkins 是一款基于 Java 开发的开源持续集成工具,在软件开发流程中占据着举足轻重的地位。它的前身是 Hudson ,于 2004 年由 Sun 公司的 Kohsuke Kawaguchi 开发,2011 年因商标纠纷更名为 Jenkins。发展至今,…...

正则表达式学习指南

正则表达式学习指南 在编程的世界里,正则表达式(Regular Expressions,简称regex)是一门不可或缺的艺术,它赋予了开发者强大的文本处理能力,让看似复杂的字符串匹配和替换任务变得简单而高效。本文旨在为初…...

React-组件通信

1、父子组件通信 &#xff08;1&#xff09;父传子&#xff08;props 传值&#xff09; // 父组件 function App() {const name 张三return (<div className"App"><Son name{name} /></div>); }// 子组件 function Son(props) {return (<div…...

MuJoCo 机械臂 PPO 强化学习逆向运动学(IK)

视频讲解&#xff1a; MuJoCo 机械臂 PPO 强化学习逆向运动学&#xff08;IK&#xff09; 代码仓库&#xff1a;https://github.com/LitchiCheng/mujoco-learning 结合上期视频&#xff0c;我们安装了stable_baselines3和gym&#xff0c;今天用PPO尝试强化学习得到关节空间到达…...

代码随想录算法训练营第一天:数组part1

今日学习的文章链接和视频链接 ● 自己看到题目的第一想法 ● 看完代码随想录之后的想法 ● 自己实现过程中遇到哪些困难 ● 今日收获&#xff0c;记录一下自己的学习时长 状态 思路理解完成 30% 代码debug完成 60% 代码模板总结并抽象出来 100% 题目 704 二分查找 题目链接…...

C++学习:六个月从基础到就业——STL算法(二)排序与变序算法

C学习&#xff1a;六个月从基础到就业——STL算法&#xff08;二&#xff09;排序与变序算法 本文是我C学习之旅系列的第二十六篇技术文章&#xff0c;也是第二阶段"C进阶特性"的第四篇&#xff0c;主要介绍C STL算法库中的排序和变序算法。查看完整系列目录了解更多…...

JVM性能优化之年轻代参数设置

一、引言 在Java应用开发中&#xff0c;性能问题往往是最难预测却又最影响用户体验的关键因素。即便代码逻辑完美&#xff0c;若JVM&#xff08;Java虚拟机&#xff09;配置不当&#xff0c;也可能导致频繁GC停顿、内存泄漏&#xff0c;甚至引发系统崩溃。JVM性能优化并非简单…...

A*迷宫寻路

二、实验内容 以寻路问题为例实现A*算法的求解程序&#xff0c;设计两种不同的估价函数&#xff1a; 1.设置两种地图&#xff1a; 根据题意&#xff0c;用矩阵设置两个地图。 地图1&#xff1a;设置5行5列的迷宫&#xff0c;代码如下&#xff1a; 地图2&#xff1a;设置20行…...

秒出PPT推出更强版本,AI PPT工具进入新纪元!

在现代职场中&#xff0c;PPT是我们沟通和展示信息的重要工具。无论是做产品演示&#xff0c;还是准备工作汇报&#xff0c;一份精美的PPT能大大提升演示效果。然而&#xff0c;传统的PPT制作往往需要消耗大量时间&#xff0c;尤其是在排版、设计和内容调整上。如今&#xff0c…...

electron-updater实现自动更新

electron-updater 是一个专为 Electron 应用设计的自动更新工具&#xff0c;能够帮助开发者轻松实现跨平台的自动更新功能。它支持 Windows、macOS 和 Linux 系统&#xff0c;通过简单的配置即可集成到 Electron 应用中&#xff0c;自动检查应用的最新版本并在后台完成更新。el…...

Ubuntu22学习记录

Ubuntu22学习记录 虚拟机挂载共享文件夹离线安装.net core3.1离线安装mysql离线安装supervisor离线安装nginx开机自启 虚拟机挂载共享文件夹 sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 挂载路径&#xff1a;/mnt/hgfs/离线安装.net core3.1 离线安装mysql 离线安装…...

【MinerU】:一款将PDF转化为机器可读格式的工具——RAG加强(Docker版本)

目录 创建容器 安装miniconda 安装mineru CPU运行 GPU加速 多卡问题 创建容器 构建Dockerfile文件 开启ssh服务&#xff0c;设置密码为1234等操作 # 使用官方 Ubuntu 24.04 镜像 FROM ubuntu:24.04# 安装基础工具和SSH服务 RUN apt-get update && \apt-get ins…...

leetcode 69和367

69. Sqrt(x) 代码&#xff1a; class Solution { public:int mySqrt(int x) {int left 0;int right x;long long mid 0;int res 0;long long temp 0;while(left < right){mid left ((right - left)>>1);temp mid*mid;if(temp x){res mid;break;}else if(te…...

# 代码随想录算法训练营Day37 | Leetcode300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组

代码随想录算法训练营Day37 | Leetcode300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组 一、最长递增子序列 相关题目&#xff1a;Leetcode300 文档讲解&#xff1a;Leetcode300 视频讲解&#xff1a;Leetcode300 1. Leetcode300.最长递增子序列 给你一个整数数…...

中小企业技术跃迁:云原生后端如何实现高效低成本系统建设

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:技术变革的“门槛”能否被跨越? 过去十年,云计算与容器化技术飞速发展,互联网巨头纷纷构建自己的云原生基础设施,实现系统模块化、弹性伸缩、自动化运维。然而,中小企业在这股浪潮中…...

系统架构师2025年论文《系统架构风格2》

论软件系统架构风格 摘要: 某市医院预约挂号系统建设推广应用项目是我市卫生健康委员会 2019 年发起的一项医疗卫生行业信息化项目,目的是实现辖区内患者在辖区各公立医疗机构就诊时,可以通过多种线上渠道进行预约挂号。我作为系统架构师参与此项目。本文围绕软件系统架构…...

Java面试实战:电商场景下的Spring Cloud微服务架构与缓存技术剖析

第一轮提问 面试官: 谢飞机&#xff0c;我们先从基础问题开始。请问你知道Spring Boot和Spring Cloud的区别吗&#xff1f; 谢飞机: 当然知道&#xff01;Spring Boot主要用于快速构建独立运行的Spring应用&#xff0c;而Spring Cloud则是在Spring Boot的基础上实现分布式系统…...

快速配置linux远程开发-go语言

1.go安装包安装 2.go env 配置 go env -w GO111MODULEon go env -w GOPROXYxx go env -w GOSUMDBoff go env -w GOPRIVATExx 3.复制linux公钥到gitlab中&#xff0c;用于通过ssh免密拉取gitlab项目 ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 4.设置…...

C++23文本编码革新:迈向更现代的字符处理

文章目录 一、字符集与编码&#xff08;P2314R4&#xff09;二、统一的字符字面量编码&#xff08;P2316R2&#xff09;三、具名通用字符转义&#xff08;P2071R2&#xff09;四、带分隔的转义序列&#xff08;P2290R3&#xff09;五、支持UTF-8作为可移植源文件编码&#xff0…...

CentOS系统中MySQL安装步骤分享

在 CentOS 系统上安装 MySQL&#xff0c;需要依次进行环境检查、软件源配置、安装 MySQL、启动服务等操作。我将按照规范流程&#xff0c;为你详细分享完整且具体的安装步骤。 在 CentOS 系统中安装 MySQL 数据库&#xff0c;能够为各类应用提供高效稳定的数据存储和管理服务。…...

【产品经理从0到1】Axure介绍

01. 上期内容回顾 创建元件库的时候&#xff0c;在添加原件时不知道怎么操作。讲解很耐心&#xff0c;希望课上分解步骤多带着练习下&#xff1b;PC 端的原型&#xff0c;相对于移动端&#xff0c;非常自由&#xff0c;没有任何的设计规范&#xff1b;但是&#xff0c;要求 PC…...

30天通过软考高项-第二天

30天通过软考高项-第二天 任务&#xff1a;项目立项管理、项目整合管理 思维导图阅读 知识点记忆 章节习题练习 知识点练习 手写回忆ITTO 立项管理-背 1. 项目可研的5个方面 基金社运法 技术可行性、经济可行性、社会效益可行性、运行环境可行性、其他&#xff08;法律、政…...

yt-dlp 下载时需要 cookie

下载 b 站 歌曲 yt-dlp -x --proxy http://127.0.0.1:1080 --audio-format mp3 https://www.bilibili.com/video/BV1Zn4y1X75b解决方案&#xff0c;使用 firefox 登录相关网站 yt-dlp -o "downloads/%(title)s.%(ext)s" -f "bestvideo[height<1080]bestaud…...

快速上手GO的net/http包,个人学习笔记

更多个人笔记&#xff1a;&#xff08;仅供参考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note 针对GO中net/http包的学习笔记 基础快速了解 创建简单的GOHTTP服务 func …...

Flask + ajax上传文件(二)--多文件上传

Flask多文件上传完整教程 本教程将详细介绍如何使用Flask实现多文件上传功能,并使用时间戳为上传文件自动命名,避免文件名冲突。 一、环境准备 确保已安装Python和Flask pip install flask项目结构 flask_upload/ ├── app.py ├── upload/ # 上传文…...

sysstat介绍以及交叉编译

文章目录 1. 工具集介绍2. 指令使用参考3. 交叉编译3.1 源码下载3.2 编译步骤 4. 工具验证4.1 将相关工具导入到设备4.2 功能验证 1. 工具集介绍 Sysstat 是一个功能强大的 Linux 系统性能监控工具包&#xff0c;提供实时监控和历史数据分析功能&#xff0c;帮助管理员优化系统…...

常见正则表达式整理与Java使用正则表达式的例子

一、常见正则表达式整理 1. 基础验证类 邮箱地址 ^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\\.[a-zA-Z]{2,}$ &#xff08;匹配如 userexample.com&#xff09;手机号 ^1[3-9]\\\\d{9}$ &#xff08;匹配国内11位手机号&#xff0c;如 13812345678&#xff09;中文字符 ^[\u4e00-\u9fa5…...

UE5 Assimp 自用

记录一下配assimp库到ue中的过程。因为想在ue里面实现一些几何处理(虽然ue好像有相关的geo的代码&#xff09;&#xff0c;遂配置了一下assimp。 1. 编译整理生成自己所需要的文件。cmake编译&#xff0c;下载github 的官方的assimp-master&#xff0c;然后cmake都是默认的就行…...

java—12 kafka

目录 一、消息队列的优缺点 二、常用MQ 1. Kafka 2. RocketMQ 3. RabbitMQ 4. ActiveMQ 5. ZeroMQ 6. MQ选型对比 适用场景——从公司基础建设力量角度出发 适用场景——从业务场景角度出发 四、基本概念和操作 1. kafka常用术语 2. kafka常用指令 3. 单播消息&a…...

VS Code 智能代理模式:重塑开发体验

在编程领域&#xff0c;效率与精准度无疑是开发者们永恒的追求。而如今&#xff0c;VS Code 推出的智能代理模式&#xff08;Agent Mode&#xff09;&#xff0c;正以前所未有的方式&#xff0c;彻底颠覆了传统开发流程&#xff0c;为程序员们带来了一场前所未有的效率革命。本…...

基于深度学习和单目测距的前车防撞及车道偏离预警系统

随着人工智能与计算机视觉技术的飞速发展,高级驾驶辅助系统(ADAS)已成为现代汽车智能化的关键标志。它不仅能有效提升行车安全,还能为自动驾驶时代的全面到来奠定坚实基础。本文深入剖析一套功能完备、基于深度学习模型的 ADAS 系统的架构与核心实现,带您领略智能驾驶背后…...

第二篇:Django配置及ORM操作

第二篇&#xff1a;Django配置及ORM操作 文章目录 第二篇&#xff1a;Django配置及ORM操作一、静态文件配置1、为什么要配置静态文件&#xff1f;2、如何配置静态文件&#xff1f;3、静态文件动态解析4、form表单默认是get请求数据 二、request对象方法初识三、pycharm链接数据…...

亚马逊英国站FBA费用重构:轻小商品迎红利期,跨境卖家如何抢占先机?

一、政策背景&#xff1a;成本优化成平台与卖家共同诉求 2024年4月&#xff0c;亚马逊英国站&#xff08;Amazon.co.uk&#xff09;发布近三年来力度最大的FBA费用调整方案&#xff0c;标志着英国电商市场正式进入精细化成本管理时代。这一决策背后&#xff0c;是多重因素的叠…...

算法时代的“摩西十诫”:AI治理平台重构数字戒律

一、引言 数字时代的狂飙突进中&#xff0c;人工智能&#xff08;AI&#xff09;正以颠覆性的力量重塑人类社会。从医疗诊断到金融决策&#xff0c;从智能制造到舆论传播&#xff0c;AI的触角已延伸至每个角落。 然而&#xff0c;斯坦福大学《2024年人工智能指数报告》揭示的…...

Kafka的ISR机制是什么?如何保证数据一致性?

一、Kafka ISR机制深度解析 1. ISR机制定义 ISR&#xff08;In-Sync Replicas&#xff09;是Kafka保证数据一致性的核心机制&#xff0c;由Leader副本&#xff08;复杂读写&#xff09;和Follower副本(负责备份)组成。当Follower副本的延迟超过replica.lag.time.max.ms&#…...

Flink 消费 Kafka 数据流的最佳实践

一、前言&#xff1a;Kafka 只是开始&#xff0c;消费才是关键 Kafka 提供了优雅的 Topic 管理与消息缓冲机制&#xff0c;但只有当 Flink 能稳定、有序、无数据丢失地消费并处理这些数据流&#xff0c;实时数仓系统才真正发挥作用。 本篇将围绕 Flink 如何“吃好” Kafka 数据…...

UEC++第10天|UEC++获取对象、RTTI是C++

最近在写UEC项目&#xff0c;这里写几个案例里的问题&#xff0c;还在学习阶段 1. 如何获取小鸟对象&#xff1f; void AFlappyBirdGameModeBase::BeginGame() { // 让管道动起来PipeActor->SetMoveSpeed();// 让小鸟开始飞行// 如何获取到小鸟对象APawn* Pawn UGameplayS…...

原生微信小程序,canvas生成凭证,保存到手机

原生微信小程序通过canvas可以将表单( 文本、图片 )转化成图片&#xff0c;同时添加水印&#xff0c;生成凭证&#xff0c;这里只是基本功能实现。可以继续完善和扩展。 <view class"container"><!-- Canvas 组件 --><canvas type"2d" id&…...

如何轻松将 Python 英文版切换至中文界面

Python 是一种广泛使用的编程语言&#xff0c;尤其在数据科学、人工智能和网络开发等领域。在最近的 Python 版本中&#xff0c;用户可以方便地使用多种语言&#xff0c;这也包括将 Python 界面语言从英文切换至中文。这不仅是出于用户体验的考虑&#xff0c;也能帮助初学者更快…...

2025.04.24【3D】3D绘图入门指南

Nifty graph A contribution by Matt Asher. 3D animation A 3D animated scatterplot made with R and rgl. 文章目录 Nifty graph3D animation 2025.04.24【3D】| 3D绘图入门指南什么是3D绘图&#xff1f;为什么使用3D绘图&#xff1f;如何在R中进行3D绘图&#xff1f;安装…...

R-CNN,Fast-R-CNN-Faster-R-CNN个人笔记

注&#xff1a;此博客主要为了方便笔者快速复习&#xff0c;只讲大致框架&#xff0c;只讲推理&#xff0c;不讲训练&#xff0c;因此内容不会很详实。 1.R-CNN R-CNN系列的开山之作。 本文将该框架划分为3个模块&#xff1a; 1.region proposal generator 2.CNN&#xff08…...

【深度学习核心技术解析】从理论到实践的全链路指南

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;MNIST分类&#xff09;运行结果验证 三、性能对比测试方法论量化数据对比结果分析 四…...

【QT网络】构建简单Udp回显服务器

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

浅谈国产数据库多租户方案:提升云计算与SaaS的资源管理效率

近年来&#xff0c;“数据库多租户”这一概念在技术圈内频频出现&#xff0c;成为云计算和SaaS&#xff08;软件即服务&#xff09;架构中的重要组成部分。多租户架构不仅为企业提供了高效的资源隔离与共享解决方案&#xff0c;还能大幅降低成本&#xff0c;提高系统的可扩展性…...

【霍夫变换】图像处理(OpenCV)-part11

20 霍夫变换 20.1 理解霍夫变换 霍夫变换的基本思想是将图像空间中的几何元素&#xff08;如直线、圆等&#xff09;通过参数方程转换到参数空间中&#xff0c;形成一个参数空间的累加器数组。图像空间中的每个点在参数空间中对应一个曲线或曲面&#xff0c;而几何形状在图像…...

Flink 源码编译

打包命令 打包整个项目 mvn clean package -DskipTests -Drat.skiptrue打包单个模块 mvn clean package -DskipTests -Drat.skiptrue -pl flink-dist如果该模块依赖其他模块&#xff0c;可能需要先将其他模块 install 到本地&#xff0c;如果依赖的模块的源代码有修改&#…...

React19源码阅读之commitRoot

commitRoot入口 在finishConcurrentRender函数&#xff0c;commitRootWhenReady函数&#xff0c;commitRoot函数。 commitRoot流程图 commitRoot函数 commitRoot 函数是 React 渲染流程中用于提交根节点的关键函数。它的主要作用是设置相关的优先级和状态&#xff0c;然后调…...

单 例 模 式

设计模式&#xff08;Design Pattern&#xff09;说白了就是一套方法论&#xff0c;是我们的前辈们不断试错总结出来的。一般意义上的设计模式有23种&#xff0c;分为创建型、结构型、行为型三大类。今天先拿最简单的单例模式开刀吧。 六大原则 在正式进入设计模式的学习之前&…...

如何在 Postman 中,自动获取 Token 并将其赋值到环境变量

在 Postman 中&#xff0c;你可以通过 预请求脚本&#xff08;Pre-request Script&#xff09; 和 测试脚本&#xff08;Tests&#xff09; 实现自动获取 Token 并将其赋值到环境变量&#xff0c;下面是完整的操作步骤&#xff1a; ✅ 一、创建获取 Token 的请求 通常这个请求…...

CentOS 7 基于 Nginx 的 HTML 部署全流程指南

一、Nginx 安装&#xff08;两种主流方式&#xff09; 1. YUM 安装&#xff08;推荐新手&#xff09; # 安装 EPEL 扩展源&#xff08;部分系统需要&#xff09; yum install epel-release -y# 安装 Nginx yum install nginx -y# 启动并设置开机自启 systemctl start nginx s…...