初识Jenkins持续集成系统

news2024/9/27 9:27:12

        随着软件开发复杂度的不断提高,团队成员之间如何更好地协同工作以确保软件开发的质量,已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而可以更早的进入测试阶段;并且能够更早的发现问题,这样解决问题的成本就会显著下降。
        持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也缩短了中间出现的等待时间。持续集成也意味着开发、集成、测试、部署得以持续。所以,当配置完 Jenkins 持续集成持续交付环境后,就可以把发布的任务交给集成服务器去处理了。本章将使用Maven(Ant)等来实现 Java 项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。

一、什么是 Jenkins

        Jenkins 是一个功能强大的应用程序,允许持续集成和持续交付项目(持续部署),无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成 Jenkins 可以用于一些测试和部署技术。
        Jenkins 原名 Hudson,2011 年改为现在的名字,它是一个开源的实现持续集成的软件工具。官方网站网址:https://jenkins.io/。Jenkins 能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能通过图表的形式,形象地展示项目构建的趋势和稳定性。
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
        jenkins 提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 enkins 能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

       Jenkins 可以构建一个自动化的持续集成环境可以使用它来“自动化”编译、打包、分发部署应用,它兼容 ant、maven、gradle 等多种第三方构建工具,同时与 svn、git 能无缝集成,也支持直接与知名源代码托管网站,如 github、bitbucket 直接集成。

1.为什么要用 Jenkins

        目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的开发团队应对如下挑战:

(1)软件构建自动化

配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。

(2)构建可持续的自动化检查

        CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。

(3)构建可持续的自动化测试

        构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Emai1,Rss 等等)给相关的当事人。

(4)生成后后续过程的自动化

        当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。

2.Jenkins 的特点

Jenkins 包含以下几个特点:

  • 易安装:从官网仅需要下载一个 jenkins.war 文件后,直接运行,无需额外的安装,更无需安装数据库;
  • 易配置:提供友好的 GUI 配置界面;
  • 变更支持:Jenkins 能从代码仓库(SVN /Git)中获取并产生代码更新列表,并显示到编译输出信息中:
  • 支持永久链接:用户是通过 web 来访问 Jenkins 的,而这些 web 页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;
  • 集成 E-Mai1/RSS/IM:当完成一次集成后,可通过这些工具实时收取集成结果(构建一次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
  • JUnit/TestNG 测试报告:是以图表等形式提供详细的测试报表功能;
  • 支持分布式构建:Jenkins 可以把集成构建等工作分发到多台计算机中完成:
  • 文件指纹信息:Jenkins 会保存构建集成所产生的 jars 文件、集成构建使用了哪个版本的jars 文件等构建记录;
  • 支持第三方插件:Jenkins 支持第三方插件,这使得enkins 功能变得越来越强大

3.什么是 CI/CD

        持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
        持续部署(continuous deployment)是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让 engineering productivity 最大化。
        持续交付(Continuous delivery),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。

4.持续集成的特点

        持续集成是一个自动化的、周期性的集成测试过程,检出代码、编译构建、运行测试、结果记录、测试统计等过程都是自动完成的,无需人工干预。持续集成需要有专门的集成服务器来执行集成构建操作,同时需要有代码托管工具的支持。

5.持续集成的工作原理

        Jenkins 的工作原理是先将源代码从 SVN/Git 版本控制系统中拷贝一份到本地,然后根据设置的脚本进行 build(构建)。整个系统的关键就是 build 脚本,build 脚本告诉 Jenkins 在一次集成中需要执行的任务。如下图所示。

二、Jenkins的部署

1.设备列表

2.案列拓扑

三、Jenkins 基本环境的安装与设置

1.安装docker

        Jenkins 持续集成环境可以和 Harbor 镜像仓库、docker 主机、kubernetes 等共同建立一个流水线环境,在这种环境下,Jenkins 可以将 maven 项目打包为镜像,并将镜像推送至 Harbor,考虑到如果需要在 Jenkins 主机上生成镜像并推送至 Harbor,Jenkins 主机就需要有一个 docker 环境。

        具体安装步骤,参考 docker 相关课程。如果已有 docker 环境,此步骤可以略过。

2.操作系统设置

[root@localhost ~]# hostnamectl set-hostname jenkins
[root@localhost ~]# bash
systemctl stop firewalld && systemctl disable firewalld 
systemctl stop NetworkManager && systemctl disable NetworkManager 
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config 
setenforce 0

3.安装git 

为了让 Jenkins 支持从 Gitlab 拉取源码,需要安装 Git 插件以及在 centos7 上安装 Git 工具。

[root@jenkins ~]# yum -y install git

4. 安装 java 环境

(1)安装java
[root@jenkins ~]# yum -y install fontconfig
[root@jenkins ~]# tar zxvf jdk-11.0.23_linux-x64_bin.tar.gz
[root@jenkins ~]# mv jdk-11.0.23 /usr/local/java

 注意:
        Fontconfig 是一款字体配置工具,它允许用户在 Linux、macOs 和 windows 等操作系统上配置字体。Fontconfig,的设计目标是提供一个易于使用的命令行工具,用于管理字体文件和配置字体。这个包是Jenkins 的依赖包,必须安装,否则,Jenkins 无法启动。

(2)设置 java 的环境变量
[root@jenkins ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
[root@jenkins ~]# source /etc/profile

(3)查看java版本 

[root@jenkins ~]# java -version
java version "11.0.23" 2024-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.23+7-LTS-222)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.23+7-LTS-222, mixed mode)

5.安装tomcat 

[root@jenkins ~]# tar zxvf apache-tomcat-9.0.8.tar.gz
[root@jenkins ~]# mv apache-tomcat-9.0.8 /usr/local/tomcat

6. 为 Jenkins 安装 maven 环境

(1)安装maven
[root@jenkins ~]# tar zxvf apache-maven-3.8.6-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.8.6 /usr/local/tomcat
 (2)设置 java 和 maven 的环境变量
[root@jenkins ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
[root@jenkins ~]# source /etc/profile
 (3)查看maven 版本
[root@jenkins ~]# mvn -version
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /usr/local/maven
Java version: 11.0.23, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "6.8.7-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"
 (4)修改 maven 更新源
[root@jenkins ~]# vim /usr/local/maven/conf/settings.xml
#修改maven的仓库
 <mirrors>
<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
  <mirrors>

 备注:
阿里提供了 maven 更新源,可访问阿里官方网站査看详细信息。

https://maven.aliyun.com

7.为jenkins 安装 NodeJs

        在对 Nodes 项目进行构建的时候,需要 g++的编译环境,不同的项目 Node]s 的版本也不一样,在进行部署的时候要根据项目的依赖版本进行选择。

[root@jenkins ~]# yum -y install gcc automake autoconf libtool make
[root@jenkins ~]# yum -y install gcc*
[root@jenkins ~]# tar zxvf node-v14.18.0-linux-x64.tar.gz
[root@jenkins ~]# mv node-v14.18.0-linux-x64 /usr/local/nodejs14
[root@jenkins ~]# ln -s /usr/local/nodejs14/bin/* /usr/local/bin/

四、Jenkins的安装与初始化设置

 1.安装Jenkins

[root@jenkins ~]# cp jenkins.war /usr/local/tomcat/webapps
[root@jenkins ~]# cd /usr/local/tomcat/bin/
[root@jenkins bin]# sh startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@jenkins bin]# netstat -anpt | grep java
tcp6       0      0 :::8009                 :::*                    LISTEN      6286/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      6286/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      6286/java

        将 jenkins.war 文件保存到Tomcat 服务的 /usr/local/tomcat/webapps 目录下。启动 Tomcat就会自动部署 Jenkins。 

2.设置 jenkins 插件更新源

cd /root/.jenkins/updates
[root@jenkins updates]# sed -i 's/https:\/\/www.jenkins.io/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json 
[root@jenkins updates]# sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

注意:
        default.json 文件需要 jenkins 初始化结束才能出来。此处需要稍等片刻。 

[root@jenkins updates]# cat /root/.jenkins/secrets/initialAdminPassword

3. Jenkins 初始化

(1)登录Jenkins

访问网址:http://192.168.10.104:8080/jenkins

查看初始密码:
        cat /root/.jenkins/secrets/initialAdminPassword

(2)选择插件安装方式

注意:
        此处是在安装 Jenkins 过程中添加插件,也可以使用“选择插件安装”选项,跳过插件安装过程,等待 Jenkins 安装好后,登录到 Jenkins 再安装插件。

(3)创建管理员账号

本案例将初始的管理员账号和密码都设置为 admin

 (4)结束安装

五、Jenkins 插件管理

1.修改 Jenkins 插件安装为国内源地址

        在安装 Jenkins 时,选择默认安装插件会很慢,甚至会失败,因此安装时可以取消所有插件安装,跳过这一步,待 Jenkins 启动后,修改插件安装地址,安装插件。

(1)设置国内插件源

        进入 Manage Jenkins->Plugins->Advanced settings 最下面有 Update site(升级站点),设置为如下链接,并点“提交”按钮。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

(2)重启 Jenkins 服务
[root@jenkins ~]# /usr/local/tomcat/bin/shutdown.sh
[root@jenkins ~]# /usr/local/tomcat/bin/startup.sh

2.安装插件

        点击“Manage jenkins”-->“Plugins”-->“Avalable plugins”,输入要安装的插件,并勾选列出来的插件,然后点安装。

在本课程内,可能会用的插件如下所示:

Git Parameter
Git Pipeline for Blue Ocean
GitLab
Blue Ocean
Blue Ocean Pipeline Editor

Blue Ocean core Js
Pipeline SCM API for Blue ocean
Dashboard for Blue Ocean
Build with Parameters
extended Choice ParameterKubernetes
Kubernetes CLI
Kubernetes credentials
Image Tag Parameter
Active choices
SSH
ansible
Maven IntegrationPublish over ssH
Role-based Authorization strategy

Nodejs

Git
Credentials
Credentials Binding
Dynamic Extended Choice Parameter Plug-InDynamic Parameter Plug-In
Pipeline
Pipeline:Declarative
Localization:Chinese(simplified)

注意:
        红色的在初始化过程中已经安装上去的,此处可以不用再安装,如果在初始过程中没有安装,或安装不完全,此处可以都安装上去,为其他项目的实施提供可用功能。

提示:可以在此处做一个快照,方便后续实验

六、Jenkins 角色与权限管理

        我们可以利用 Role-based Authorization strategy 插件来管理 Jenkins 用户权限,在前面的插件安装中已经安装过此插件。

1.开启权限全局安全配置

“Dashboard”-->“Manage Jenkins”-->“Security”-->“Authentication"

将授权策略修改为“Role-Based strategy”,并保存设置。

 2.创建角色

        为了更方便的为用户授权,jenkins 中使用角色作为一类权限的容器。角色是一组相关权限的集合。可以为用户指定角色,而不是直接指定权限。

(1)角色种类

Global roles:Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Item roles:针对某个或者某些项目的角色
Agent roles:节点相关的权限

(2)设置角色

“Dashboard”-->“Manage Jenkins”-->“Manage and Assing Roles”。点击“Manage Roles"

本案例中我们添加三个角色:

  • baseRole:该角色为全局角色。这个角色需要绑定0verall 下面的 Read 权限,是为了给所有用户绑定最基本的 Jenkins 访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名ismissing the overall/Read permission
  • role1:该角色为项目角色。使用正则表达式绑定"my-item01.*",意思是只能操作名称为“my-item01”开头的项目。
  • role2:该角色也为项目角色。绑定"my-item02.*",意思是只能操作“my-item02”开头的项目。
(3)添加 baseRole 角色到 Global roles

 (4)添加role1和role2 角色到 Item roles

在“Role to add”中填写角色名称“role1”;“Pattern”中填写“my-item01.*”,表示 role1 的角色只能管理“my-item01.*”开头的项目添加好后点 Save 保存。

 3.创建用户

(1)添加新用户

“Dashboard”-->“Manage Jenkins”-->“Users”,在右上角点击“create User”,创建用户。

(2)填写账号信息
 (3)创建好后的效果

 4.给用户分配角色

        “Dashboard”-->“Manage Jenkins”-->“Manage and Assign Roles”,然后点击“Assign Roles”进入到分配角色的界面。

(1)为zhangsan用户绑定 baseRole 和role1 角色

在“Global roles”中点击“Add User”按钮,在弹框中输入用户 zhangsan,确定后勾选角色 baseRole:在“Item roles”中点击“Add User”按钮,在弹框中输入用户 zhangsan,确定后勾选角色 role1。

 (2)为lisi 用户绑定 baseRole 和 role2 角色

用同样的方法为 1isi 设置角色。
在“Global roles”中点击“Add user”按钮,在弹框中输入用户 1isi,确定后勾选角色 baseRole:在“Item roles”中点击“Add user”按钮,在弹框中输入用户 lisi,确定后勾选角色 role2.设置好后,点击 save 保存。

5.创建项目测试权限

(1)创建项目

用管理员的权限创建两个项目,名字分别是 my-item01-zhangsan 和 my-item02-lisi

(2)分别用 zhangsan 和 lisi 的身份登录系统

        可以发现,每个用户只能管理属于自己角色范围内的项目。

七、Jenkins 凭证管理

        有许多第三方网站和应用程序可以与 Jenkins 进行交互,例如程序代码仓库,云存储系统和服务等

        此类应用程序的系统管理员可以在应用程序中配置凭据以专供 Jenkins 使用。通常通过将访问控制应用于这些凭据来完成这项工作,以“锁定”Jenkins 可用的应用程序功能区域。一旦 Jenkins 管理员(即管理 Jenkins 站点的 Jenkins 用户)在 Jenkins 中添加/配置这些凭据,Pipeline 项目就可以使用凭据与这些第三方应用程序进行交互。
        用管理员登录到 jenkins。
        要在 Jenkins 使用凭证管理功能,需要安装 Credentials Binding插件,前面已经安装过此插件,这里不再安装。
        凭据可以用来存储需要密文保护的数据库密码、Gitlab 密码信息、Docker 私有仓库密码等,以便Jenkins 可以和这些第三方的应用进行交互。

1.凭据的种类

jenkins 提供了多种类型的凭据,适应与不同的业务需求,具体类型如下:

  • Username with password:用户名和密码
  • GitHub App: GitHub 应用进行身份验证
  • GitLab API token: 存储 Gitlab 的用户 API token
  • OpenShift Username and password:存储 0penshift 的用户名和密码
  • SSH Username with private key:使用 SSH 用户和密钥
  • Secret file:需要保密的文本文件,使用时 Jenkins 会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file 就会被删除。
  • Secret text:需要保存的一个加密的文本串,如钉钉机器人或 Github 的 api token
  • Certificate:通过上传证书文件的方式

        其中,常用的凭证类型有:Username with password(用户密码)和SSH Username with privatekey(SSH 密钥)。接下来以使用 Git 工具到 Gitlab 拉取项目源码为例,演示 Jenkins 的如何管理 Gitlab的凭证。
        注意: 为了让 Jenkins 支持从 Gitlab 拉取源码,需要安装 Git 插件以及在 Centos7 系统上安装 Git工具。

2.凭据的作用范围

        凭证具有与它们相关联的范围。这是一种表示它们如何才能被暴露的方式。Jenkins 使用的主要范围有如下 2种。

(1)system(系统)

        顾名思义,这个范围与根上下文,也就是 enkins 系统相关联。此范围中的凭证只被暴露给系统和后台任务,并且一般被用于连接到构建节点或代理节点等。

 (2)全局

        全局范围是默认选项,通常用来确保 Jenkins 中的任务可以使用凭证。

3.添加用户密码类型的凭据

(1)添加凭据

“Manage jenkins”-->“credentials”,打开如下页面,并点击“System”,进入全局凭据管理界面,如下图所示。

在如下界面中,点击右上角的“Add credentials”按钮,添加凭据

 (2)填写凭据参数

这里主要的内容有:
凭据类型:Username with password
范围:Global
用户名:root(该账号是 gitlab 中添加的账号)密码:gitlab 中为root 用户设置的密码(本案例此处为 pwd12345,注意不是系统的 root 密码)ID:选填(设置凭据的唯一标识,不设置会自行分配一个唯一标识)描述:选填(凭据名称,此处最好填写一下,使用凭据的时候便于识别,不设置就使用用户名)

 点击 create 创建此凭据,添加结果如下:

(3)测试凭据
1)到 gitlab 中添加一个项目

登录到 gitlab,导入项目(本案例使用root 用户登录)。导入gitee 上的项目,访问级别使用私有类
型,链接如下:
https://gitee.com/kgc-wjq/league.git

2)复制出HTTP的仓库URL
http://192.168.10.105/root/league.giticon-default.png?t=O83Ahttp://192.168.10.105/root/league.git
3)创建测试项目 test01

创建一个 Freestyle 项目:新建 Item->Freestyle Project->确定

 
 4)源码管理中设置仓库 URL 和凭据

在源码管理中点“Git”,代码仓库的 URL为 http://192.168.10.105/root/league.git

并选择 Gitlab 中 root 的凭据。最后保存设置。

5)测试代码拉取

点击 Build Now,立即构建此项目。可以在控制台输出査看构建日志。

 

 6)查看拉取到 jenkins 主机中的代码

在 jenkins 主机的工作空间目录下,已经能够看到代码拉取到了 jenkins 主机本地。

[root@jenkins ~]# ls .jenkins/workspace/
test01  test01@tmp 

4. 添加 SSH 类型的凭据

        SSH类型的凭据可以使 Jenkins 在拉取 gitlab 中的代码时使用秘钥对的方式,不仅实现了免密连接。同时也会对数据进行加密,是一种安全可靠的凭据方式。

(1)在jenkins 主机上以 root 身份生成密钥对 

 (2)复制公钥
[root@jenkins ~]# cd .ssh/
[root@jenkins .ssh]# ls
id rsa id rsa.pub

         其中 id rsa 为私钥文件,id rsa.pub 为公钥文件。

(3)将公钥存放到 gitlab

        用 root 用户登录 gitlab,点击右上角的头像,在下拉菜单中点“preferences”,然后在左侧列表点击“SSH Keys”。

 添加成功后的效果如下如图所示:

 (4)在 jenkins 中添加 SSH 凭据

“Manage jenkins”-->“Credentials”,打开如下页面,并点击“System”,进入全局凭据管理界

 (5)填写 SSH 凭据参数

这里主要的参数有:
类型:SSH
范围:Global
ID:可选
描述:可选
Username:root(这个秘钥对是用root 的身份生成的)Private Key:填写 root 生成的私钥。

(6)添加好的状态如下 

 (7)测试凭据
1)到 gitlab 中查看 SSH 的仓库链接,并复制下来

以 root 的身份登录到 gitlab,并复制出 SSH 的仓库 URL。

git@192.168.10.105:root/league.git

2)创建测试项目test02
3)在源码管理中设置 git 参数 

将仓库的 ssh 链接粘贴到仓库 URL 处,并在下面选择 ssh 凭据。 

 

 4)构建项目测试

点击“Build New”,查看构建结果。

5)查看工作区域 
[root@jenkins ~]# ls .jenkins/workspace/
test01  test01@tmp  test02  test02@tmp

此处已经将 gitlab 中的项目拉取到了 Jenkins 本地。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理3-应用层(HTTP/HTTPS)

目录 DNSHTTP/HTTPSHTTP协议报文HTTP的方法请求报头、响应报头(header)状态码构造HTTP请求HTTPS 应用层是我们日常开发中最常用的一层&#xff0c;因为其他层&#xff1a;传输层、网络层、数据链路层、物理层这些都是操作系统和硬件、驱动已经实现好的&#xff0c;我们只能使用…

【Python】的语言基础学习方法 快速掌握! 源码可分享!

python语言基础 第一章 你好python 1.1安装python https://www.python.org/downloads/release/python-3104/ 自定义安装&#xff0c;全选 配置python的安装路径 验证&#xff1a;cmd输入python 1.2python解释器 解释器主要做了两件事&#xff1a; 翻译代码提交给计算机去运…

Linux 下安装mysql

1.检查之前是否安装过mysql rpm -qa | grep mysql 如果之前安装过&#xff0c;删除之前的安装包 rpm -e 安装包 如果没有&#xff0c;进行后续安装 2. 下载 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ 3…

plt常用函数介绍二

目录 fig.add_subplot()ax.set()plt.legend()plt.subplots_adjust()plt.suptitle()plt.grid() fig.add_subplot() fig.add_subplot() 是 Matplotlib 中 Figure 对象的方法&#xff0c;用于在图形中添加子图&#xff08;subplot&#xff09;。 其语法为&#xff1a; subplot(…

同声传译用什么软件最方便?推荐五款易用的同声传译软件

在国际贸易、国际会议及跨国合作项目中&#xff0c;语言障碍往往是沟通效率的一大挑战。 为了解决这个问题&#xff0c;同声传译免费软件应运而生&#xff0c;它们通过先进的技术实现了即时准确的语言转换&#xff0c;极大地促进了不同语言使用者间的交流与协作。 下面&#…

2025考研倒计时 考研时间公布了 你准备好复习冲刺了吗?

2025考研倒计时 考研时间公布了 你准备好复习冲刺了吗&#xff1f;今年的考研时间终于公布了&#xff1a; 正式报名时间2024.10.15-2024.10.28&#xff0c;初试时间12月21日&#xff0c;相信很多学子们已经做好冲刺的准备了。 在这关键的90天的时间内&#xff0c;如何做到时刻…

各种编程语言中有哪些共性?超详细+通俗易懂版!!!

各种编程语言中存在着一些共性&#xff0c;这些共性构成了编程语言的基础框架和设计原则。以下是这些共性的主要方面&#xff1a; 1. 遵循基本的编程原则 模块化&#xff1a;将程序划分为多个独立、可复用的模块&#xff0c;有助于降低程序的复杂度并提高可维护性。封装&#…

【计网】从零开始学习http协议 --- http的请求与应答

如果你不能飞&#xff0c;那就跑&#xff1b; 如果跑不动&#xff0c;那就走&#xff1b; 实在走不了&#xff0c;那就爬。 无论做什么&#xff0c;你都要勇往直前。 --- 马丁路德金 --- 从零开始学习http协议 1 什么是http协议2 认识URL3 http的请求和应答3.1 服务端设计…

Stack Overflow 如何提升其单元测试水平

在 Stack Overflow 成立之初&#xff0c;我们只是一个快速、精简运行的网站。Stackoverflow.com 是由开发人员为开发人员创建的小型初创公司。像所有初创公司一样&#xff0c;我们优先考虑对我们来说最重要的质量属性&#xff0c;而忽视了许多其他属性&#xff0c;包括根据最佳…

功耗或600W,RTX 5090、5080集体降级国内特供版

早在一个多月前&#xff0c;国外知名硬件泄密者 kopite7kimi 就曾透露 NVIDIA RTX 50 系显卡或推迟到明年初 CES 大会上发布。 来源&#xff1a;X 结合前几天爆出的台积电 4NP 工艺产能告急、NVIDIA 为提升下代显卡良率重新流片等。 如果不出意外&#xff0c;这原定在今年第四…

Π-系上的最小 d-系等于 Π-系上的最小集代数

称空间 Ω \Omega Ω 中满足下述条件的集系为 d d d-系: Ω ∈ D \Omega \in \mathscr{D} Ω∈D若 A , B ∈ D A, B \in \mathscr{D} A,B∈D 且 A ∩ B ϕ A \cap B\phi A∩Bϕ, 则 A B ∈ D AB \in \mathscr{D} AB∈D;若 A ⊂ B , A , B ∈ D A \subset B, A, B \in \…

visio 2021入门直通车(一天全搞定)

安装Visio 2021 (64bit)安装教程 1.1. 模板类型 1.2. 界面布局 1.3. 插入对象 1.4. 添加页面 1.5. 全屏演示|页面自适应|visio文件切换 1.6. 快捷键 快捷键说明 Shift 鼠标滚轮 按下shift&#xff0c;点击鼠标滚轮水平页面滚动 鼠标滚轮 垂直页面滚动 Ctrl 鼠标滚轮 按…

每天分享一个FPGA开源代码(6)- 浮点数运算

FPGA&#xff08;现场可编程门阵列&#xff09;是一种高度可配置的集成电路&#xff0c;它可以用于实现各种数字信号处理任务&#xff0c;包括浮点数运算。 在FPGA上进行浮点数运算通常涉及以下几个步骤&#xff1a; 1. 选择浮点数格式 浮点数运算首先要确定使用哪种浮点数格…

百度amis框架经验分享

百度amis框架经验分享 官方文档 amis - 低代码前端框架 这篇文章讲了amis的设计 为什么说百度AMIS框架是一个优秀的设计_百度前端框架-CSDN博客 学习方法&#xff1a; 最好的学习方法就是GPT官方文档 不要去很大力气通读官方文档&#xff0c;大概浏览一遍就行&#xff0c; 以你…

docker中搭建nacos并将springboot项目的配置文件转移到nacos中

前言 网上搜索docker中搭建nacos发现文章不是很好理解&#xff0c;正好最近在搭建nacos练手。记录一下整个搭建过程。 docker中搭建nacos并将springboot项目的配置文件转移到nacos中 前言1 docker中下拉nacos镜像2 配置nacos信息1. 创建docker的挂载目录&#xff0c;实现数据的…

SpringBoot之登录校验关于JWT、Filter、interceptor、异常处理的使用

什么是登录校验&#xff1f; 所谓登录校验&#xff0c;指的是我们在服务器端接收到浏览器发送过来的请求之后&#xff0c;首先我们要对请求进行校验。先要校验一下用户登录了没有&#xff0c;如果用户已经登录了&#xff0c;就直接执行对应的业务操作就可以了&#xff1b;如果用…

机器学习西瓜书笔记(十一) 第十一章特征选择与稀疏学习+代码

第十一章 特征选择与稀疏学习11.1 子集搜索与评价小结 11.2 过滤式选择小结 11.3 包裹式选择小结 11.4 嵌入式选择与L1正则化小结 11.5 稀疏表示与字典学习小结 11.6 压缩感知小结 11.7 代码单变量特征选择 11.8 章末小结 特征选择与稀疏学习 11.1 子集搜索与评价 小结 子集搜…

Facebook Marketplace无法使用的原因及解决方案

Facebook Marketplace是一项广受欢迎的买卖平台&#xff0c;然而&#xff0c;有时候用户可能会遇到无法访问或使用该功能的问题。通常&#xff0c;这些问题可以归结为以下几类原因&#xff1a; 地理位置限制&#xff1a; Facebook Marketplace并非在全球每个地区都可用。在某些…

【C++笔试强训】如何成为算法糕手Day2

学习编程就得循环渐进&#xff0c;扎实基础&#xff0c;勿在浮沙筑高台 循环渐进Forward-CSDN博客 目录 循环渐进Forward-CSDN博客 第一题&#xff1a;牛牛的快递 第二题&#xff1a;最小花费爬楼梯 第三题&#xff1a;数组中两个字符串的最小距离 补充0x3f3f3f3f 第一题…

OpenWrt学习(二)

OpenWrt是基于Linux系统进行开发需要学习Linux系统基本知识。下面介绍一下OpenWrt系统下常用的指令。 时间命令 查看当前时间 date查看当前日历 cal关机和重启 立即安全关闭系统 shutdown -h now 嵌入式设备不会关机&#xff0c;只会停止运行系统。 重新启动系统 reb…