Jenkins從放棄到入門:部署、配置與應用

目錄

Jenkins詳解

一、Jenkins介紹

1、Jenkins 功能

2、Jenkins 概念

3、Jenkins 目的

4、Jenkins 特性

5、產品發布流程

二、Jenkins CI/CD 流程

三、部署Jenkins

git

1、jenkins 安裝

yum 安裝 jenkins *jenkins 依賴 java 環境 #注意2.346之后的版本不再支持jdk8

2、配置文件

1、查詢 yum 下載 Jenkins 安裝的文件

2、修改配置文件

3、啟動 jenkins

3、驗證安裝

3、jenkins配置(web頁面)

1、管理員密碼獲取

2、安裝插件 (選擇在線安裝)

1、修改 /var/lib/jenkins/updates/default.json

2、 修改/var/lib/jenkins/hudson.model.UpdateCenter.xml

3、創建第一個管理員用戶

4、url 配置

5、安裝完成

6、配置 jdk、git、maven

7、jenkins 下載插件失敗處理辦法

四、使用Jenkins

1、Jenkins 用戶權限管理

1、 用戶管理背景

2、 安裝用戶管理插件

3、 開啟該插件功能

4、 驗證用戶管理

1、策略改回原來的(全局安全配置)

2、開啟允許用戶注冊(全局安全配置)

3、注冊一個新用戶

4、登錄之后,其默認就是管理員用戶,可以進行任何操作

5、開啟 Role-Based Strategy

6、重新登錄新創建 test1 用戶,顯示已經沒有任何權限了

5、 權限劃分

1、Manage Roles(管理角色)

1、Global roles

2、Item roles

2、Assigin roles(分配角色)

1、給予test用戶分配 user 角色

2、針對指定用戶分配項目角色(一般最常用的就是針對不同用戶進行項目角色分配)

2、Jenkins 參數化構建

1、 參數化構建背景

2、安裝插件

1、項目配置

2、構建選擇分支進行測試,添加branch參數 git配置中選$branch參數

3、參數化配置已經生效

3、Git 插件

1、安裝插件 Git Parameter

2、進行配置

3、Jenkins pipeline

1、概覽

2、安裝

3、實操

1、新建任務

2、編寫 pipeline 腳本

3、構建測試

4、Jenkins 構建郵件狀態通知

1、 前提

2、 基礎配置


Jenkins詳解

一、Jenkins介紹

簡單歷史

Jenkins 的前身是 Hudson,一個采用 Java 編寫的開源持續集成工具。Hudson 項目由 Sun 公司在 2004 年啟動,2005 年發布了第一個版本,并逐漸在持續集成工具領域占據主導地位。2008 年,Hudson 在 JavaOne 大會上獲得了杜克選擇大獎(Duke's Choice Award)。

2010 年 11 月,Oracle 收購 Sun 后,Hudson 的所有權問題引發了爭議。主要項目貢獻者和 Oracle 之間在“Hudson”商標名稱上存在分歧。2011 年 1 月,社區投票決定將項目名稱改為“Jenkins”,并于 1 月 29 日獲得批準,正式創建了 Jenkins 項目。

Oracle 繼續開發 Hudson,認為 Jenkins 只是一個分支。隨著時間的推移,Jenkins 社區迅速壯大,到 2013 年 12 月,GitHub 上的 Jenkins 項目成員遠超 Hudson。如今,Jenkins 已全面超越 Hudson,成為持續集成工具領域的領導者。

為什么 Jenkins 更受歡迎

由開發者主導、面向開發者

首先,曾經是Hudson開發人員中的99%都轉向了Jenkins的開發,其中包括最初的創建者川口清子(Kohsuke Kawaguchi)。他獨自寫了大部分代碼,并且他的經驗是Hudson各種高級特性的關鍵來源。Jenkins的開發社區更活躍。所以對很多人而言,從血統上看Hudson是后娘養的,Jenkins才是親生的!

治理和社區

  • Jenkins 開發社區管理開放,設有獨立董事會,定期舉行治理會議并征求公眾意見,所有代碼捐贈給公共利益軟件組織(SPI),確保社區持續開放。

穩定性

  • Jenkins 社區不斷貢獻新功能和改進,定期發布長期支持版本,確保穩定性和可靠性。

豐富的插件生態

  • Jenkins 支持超過 1000 個插件,覆蓋構建、部署、測試等各個環節,使其成為開發生命周期的核心工具。

1、Jenkins 功能

Jenkins 是一個開源的自動化服務器,可以通過插件支持構建、部署和自動化的各個方面。它的主要功能包括:

  • 持續集成/持續交付(CI/CD):自動化的軟件版本發布和測試項目,確保每次代碼變更都能快速且可靠地集成和交付。

  • 構建自動化:支持各種構建工具和語言,如 Maven、Gradle、Ant、以及 shell 腳本等。

  • 測試自動化:能夠集成各種測試工具和框架,如 JUnit、TestNG 等,自動化執行測試并生成報告。

  • 部署自動化:自動化應用程序的部署過程,可以集成 Docker、Kubernetes 等工具。

  • 監控和報告:監控外部調用的執行工作,生成詳細的構建和測試報告,幫助快速定位和處理問題。

2、Jenkins 概念

Jenkins是一個功能強大的應用程序,允許持續集成和持續交付項目,旨在實現持續集成和持續交付。通過豐富的插件生態系統,Jenkins 可以集成各種構建、測試和部署工具,滿足不同團隊的需求。其主要概念包括:

  • Pipeline(流水線):定義構建、測試和部署的過程,可以通過代碼(Jenkinsfile)配置。

  • Node(節點):執行構建任務的機器,可以是主節點(Master)或從節點(Agent)。

  • Job(任務):具體的構建任務,可以配置多個步驟和觸發條件。

  • Plugin(插件):擴展 Jenkins 功能的組件,支持多種第三方工具和平臺。

3、Jenkins 目的
  • 持續、自動地構建和測試軟件項目:每次代碼變更后,自動觸發構建和測試,確保代碼的持續集成和交付。

  • 監控軟件開發流程:通過監控構建和測試過程,快速定位和處理問題,提高開發效率。

4、Jenkins 特性
  • 開源的java語言開發持續集成工具,支持CI,CD。

  • 易于安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實現安裝部署,可方便web界面配置管理。

  • 消息通知及測試報告:集成RSS/E-mail通過RSS發布構建結果或當構建完成時通過e-mail通知,生成JUnit/TestNG測試報告。

  • 分布式構建:支持Jenkins能夠讓多臺計算機一起構建/測試。

  • 文件識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。

  • 豐富的插件支持:支持擴展插件,你可以開發適合自己團隊使用的工具,如git,svn,maven,docker等。

5、產品發布流程

產品設計成型 -> 開發人員開發代碼 -> 測試人員測試功能 -> 運維人員發布上線

  • 持續集成(Continuous integration,簡稱CI):每次代碼變更后,自動構建和測試。

  • 持續交付(Continuous delivery):在 CI 的基礎上,自動化部署到預生產環境,確保代碼隨時可發布。

  • 持續部署(continuous deployment):在 CD 的基礎上,進一步自動化部署到生產環境,實現無縫發布。

二、Jenkins CI/CD 流程

說明:這張圖稍微更形象一點,上線之前先把代碼git到版本倉庫,然后通過Jenkins將Java項目通過maven去構建,這是在非容器之前,典型的自動化的一個版本上線流程。那它有哪些問題呢?

如:它的測試環境,預生產環境,測試環境。會存在一定的兼容性問題 (環境之間會有一定的差異)

說明:阿里云鏡像倉庫,把環境打包為一個鏡像,通過鏡像的方式來部署。

三、部署Jenkins

IP主機名
10.1.0.25k8s-master-node1
git

linux(centos7.9)下載安裝git2.32.0_git下載 linux-CSDN博客

#拉取代碼
[root@k8s-master-node1 ~]# yum install -y git   #首先還是安裝git
[root@k8s-master-node1 ~]# mkdir -p test
[root@k8s-master-node1 ~]# cd test
[root@k8s-master-node1 ~]# git clone git@xxx.xx.xx.x:/xx/xx/xx/xx  ##測試clone倉庫#push 測試
[root@k8s-master-node1 ~]# touch index.html
[root@k8s-master-node1 ~]# git add .
[root@k8s-master-node1 ~]# git commit -m "test" 
#第一次有報錯警告,讓配置郵箱和姓名。配置一下即可,或者直接執行給出的命令執行。
[root@k8s-master-node1 ~]# git push origin master #提交到主分支(默認分支)
1、jenkins 安裝

官網: https://jenkins.io

插件:Index of /download/plugins

yum 安裝 jenkins *jenkins 依賴 java 環境 #注意2.346之后的版本不再支持jdk8
卸載舊jenkins
#查詢以前是否安裝jenkins
rpm -qa |grep jenkins
#卸載 jenkins
yum -y remove jenkins  
rpm -e jenkins
#徹底刪除jenkins殘留文件
find / -iname jenkins | xargs -n 1000 rm -rf# 導入jenkins源
wget -O /etc/yum.repos.d/jenkins.repo     https://pkg.jenkins.io/redhat/jenkins.repo
# 導入jenkins官方證書
rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
?
#安裝jdk11
yum install fontconfig java-17-openjdk -y
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
#有點慢,可以在Windows上提前下載導入。
sudo yum -y install ./jdk-17_linux-x64_bin.rpm
java -version
?
#安裝jenkins
yum install jenkins -y
#設置開機自啟動
systemctl enable jenkins #rpm安裝
wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.346.1-1.1.noarch.rpm 
#安裝
rpm -ivh jenkins-2.346.1-1.1.noarch.rpm  
2、配置文件
1、查詢 yum 下載 Jenkins 安裝的文件
[root@k8s-master-node1 ~]# rpm -ql jenkins
/usr/bin/jenkins    # Jenkins 服務二進制文件
/usr/lib/systemd/system/jenkins.service #systemd 服務單元文件,定義Jenkins啟動參數
/usr/share/java/jenkins.war # war 包 
/var/cache/jenkins  # war包解壓目錄 jenkins網頁代碼目錄
/var/lib/jenkins  # jenkins 工作目錄
 
2、修改配置文件

配置文件說明

[root@k8s-master-node1 ~]# grep -Ev "^(#|$)" /usr/lib/systemd/system/jenkins.service
[Unit]
Description=Jenkins Continuous Integration Server    # Jenkins 持續集成服務器的描述
Requires=network.target                              # 依賴于網絡服務,表示網絡必須先啟動
After=network.target                                 # 在網絡服務啟動后再啟動 Jenkins
[Service]
Type=notify                                          # 服務類型為 notify,表示服務啟動后會通知 
NotifyAccess=main                                    # 僅監聽主進程的通知
ExecStart=/usr/bin/jenkins                           # 啟動 Jenkins 的命令
Restart=on-failure                                   # 在服務失敗時自動重啟
SuccessExitStatus=143                                # 指定退出狀態碼 143 為正常退出
User=root                                            # 以 root 用戶身份運行 Jenkins
Group=root                                           # 以 root 用戶組身份運行 Jenkins
Environment="JENKINS_HOME=/var/lib/jenkins"          # 設置 Jenkins 主目錄的環境變量
WorkingDirectory=/var/lib/jenkins                    # 指定工作目錄為 /var/lib/jenkins
Environment="JENKINS_WEBROOT=%C/jenkins/war"         # 設置 Jenkins Web 根目錄的環境變量
Environment="JAVA_OPTS=-Djava.awt.headless=true"     # 設置 Java 選項為無頭模式
Environment="JENKINS_PORT=3333"                      # 設置 Jenkins 監聽的端口為 3333
[Install]
WantedBy=multi-user.target                           # 在多用戶目標(運行級別)下啟動 Jenkins
3、啟動 jenkins
  • 啟動之前修改以 root 用戶、群組身份運行 Jenkins, 確保后面 Jenkins 有權限使用 Docker 服務。

接下來啟動:

[root@k8s-master-node1 ~]# systemctl start jenkins
3、驗證安裝
[root@k8s-master-node1 /data]# ps -ef|grep jenkins
root      3523  7329  0 14:04 pts/0    00:00:00 grep --color=auto jenkins
jenkins  12697     1  7 14:01 ?        00:00:15 /usr/local/java/jdk1.8.0_121/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
 
3、jenkins配置(web頁面)
1、管理員密碼獲取

[root@k8s-master-node1 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
2、安裝插件 (選擇在線安裝)

如果采用最新版的 一般不一會出現這個情況

出現離線安裝解決方法:

1、修改 /var/lib/jenkins/updates/default.json

jenkins 在下載插件之前會先檢查網絡連接,其會讀取這個文件中的網址。默認是訪問谷歌,肯定監測失敗,所以將圖下的google改為www.baidu.com即可,更改完重啟服務。

2、 修改/var/lib/jenkins/hudson.model.UpdateCenter.xml

該文件為jenkins下載插件的源地址,默認為:https://updates.jenkins.io/update-center.json,就是因為https的問題,此處我們將其改為http即可,之后重啟jenkins服務即可。

其他國內備用地址(也可以選擇使用):

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

http://mirror.esuni.jp/jenkins/updates/update-center.json

在修復完之后,我們發現離線問題已經解決

選擇安裝推薦的插件:

3、創建第一個管理員用戶

4、url 配置

之前版本沒有這個選項,這里默認即可:

5、安裝完成

出現如下頁面時,表示安裝完成

6、配置 jdk、git、maven

系統管理->全局工具配置

jdk:可以自動安裝,但是選擇本地安裝的適合項目jdk版本,寫入我們jdk的路徑即可

git:

maven:

7、jenkins 下載插件失敗處理辦法

jenkins 下載插件失敗,提示:

java.io.IOException: Downloaded file /app/jenkins_home/plugins/jacoco.jpi.tmp does not match expected SHA-1, expected 'CtK02wHdFOxTutqhUQzmue6uvpg=', actual 'YGO05utKyaaFzpGCgCE95GS0WsU='at hudson.model.UpdateCenter.verifyChecksums(UpdateCenter.java:1783)at hudson.model.UpdateCenter.access$1100(UpdateCenter.java:147)at hudson.model.UpdateCenter$InstallationJob.replace(UpdateCenter.java:1934)at hudson.model.UpdateCenter$UpdateCenterConfiguration.install(UpdateCenter.java:1178)at hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1653)at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1848)at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1624)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)at java.lang.Thread.run(Thread.java:745)

中國源的問題。需要換個源就可,換源方法:

jenkins->系統管理->管理插件->高級 選擇升級站點

把:http://updates.jenkins-ci.org/update-center.json

換成:http://mirror.esuni.jp/jenkins/updates/update-center.json

鏡像地址查詢:

http://mirrors.jenkins-ci.org/status.html

四、使用Jenkins

1、Jenkins 用戶權限管理

1、 用戶管理背景

針對開發、運維、測試針對不同角色進行不同權限劃分,

基于插件: Role-based Authorization Strategy ,Authorize Project 來實現。

2、 安裝用戶管理插件

安裝該插件:

系統管理->管理插件-可選插件->搜索該插件選中直接安裝即可。

3、 開啟該插件功能

系統管理->全局安全設置-授權策略->選中該插件功能即可->保存

4、 驗證用戶管理

關閉用戶管理功能來進行實踐測試

1、策略改回原來的(全局安全配置)

2、開啟允許用戶注冊(全局安全配置)

3、注冊一個新用戶

4、登錄之后,其默認就是管理員用戶,可以進行任何操作

5、開啟 Role-Based Strategy
6、重新登錄新創建 test1 用戶,顯示已經沒有任何權限了

5、 權限劃分

安裝 Role-Based Strategy 插件后,系統管理 中多了如圖下所示的一個功能,用戶權限的劃分就是靠他來做的。

1、Manage Roles(管理角色)
  • Manage Roles:管理角色,相當于針對角色賦予不同權限,然后在將該角色分配給用戶。角色就相當于一個組。其里面又有Global roles(全局)、Project roles(項目)、Slave roles(),來進行不同劃分。

默認如圖下所示:

1、Global roles

默認是有一個admin用戶的,是所有權限都有的,所有權限都是勾選了的。

接下來我們來添加一個角色:user

給其一個讀的權限。

2、Item roles
  • roles to add:表示項目角色

  • Pattern:是用來做正則匹配的(匹配的內容是Job(項目名)),比如說根據正則匹配到的項目項目角色就都有權限;

接下來新建一個island 項目角色,改項目角色一般給其構建、取消、讀取、讀取空間權限,一般配置這4個即可

  • Agent roles (代理角色):節點相關的權限

  • roles to add:表示項目角色

  • Pattern:是用來做正則匹配的(匹配的內容是節點(Agent節點)),比如說根據正則匹配到的項目項目角色就都有權限;

2、Assigin roles(分配角色)
1、給予test用戶分配 user 角色

這樣其就有 manage roles 中剛才創建的user角色的權限了。

此時再去看 test1用戶,已有查看的權限了

2、針對指定用戶分配項目角色(一般最常用的就是針對不同用戶進行項目角色分配)

比如將test用戶分配有 island 項目角色,這樣其就可以有剛才我們創建的island 項目角色正則匹配到的項目的權限了。

2、Jenkins 參數化構建

1、 參數化構建背景

如果只是簡單的構建,jenkins自己默認的插件可以做,但是如果我們想要在構建過程中有更多功能,比如說:選擇性構建、傳參、項目指定變量等等其他功能,基礎的參數化構建可以實現一些簡單功能,但是要想使用更多功能這時候我們就需要借助參數化構建來實現交互的功能。此處我們來借助以下插件來進行實現:

  • Extended Choice Parameter(更豐富的參數化構建插件)

  • Git Parameter

2、安裝插件

首先還是安裝該插件,去管理插件里面進行安裝 Extended Choice Parameter

1、項目配置

2、構建選擇分支進行測試,添加branch參數 git配置中選$branch參數

3、參數化配置已經生效

3、Git 插件

再用 git 時使用該插件是非常方便的。

1、安裝插件 Git Parameter

2、進行配置

在配置之前有一個坑,當我們在配置git中寫了遠端地址后,會有報錯:

這個是和前面docker報錯是一樣的

這是因為 jenkins 我們 yum 裝的運行用戶是 jenkins 用戶,此處是 jenkins 用戶去 git 倉庫進行拉取,而 jenkins 用戶的話默認是 /bin/false 的,不但不能登錄,也沒有 git 命令權限,所以肯定是失敗的。

解決此問題兩種辦法:

  • 更改jenkins用戶為root用戶;

  • 更改jenkins用戶為正常的普通用戶/bin/bash,將其的公鑰加入到git服務器的git用戶中。

此處暫時先用第一種解決辦法,更改 jenkins 的運行用戶為 root 用戶,通過如下方式進行更改:

  • 將/usr/lib/systemd/system/docker.service;文件中user和group改為root

  • 然后再重啟即可。

3、Jenkins pipeline

1、概覽

2、安裝

在對 jenkins 進行初始化安裝時,默認已經安裝了 jenkins 的相關插件,如下圖所示:

3、實操
1、新建任務

2、編寫 pipeline 腳本

可以借助流水線語法去做。

roads流水線腳本:

pipeline { agent any // 參數化parameters {//  string defaultValue: '2.0.0', description: '選擇版本', name: 'version'gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'string(name: 'version', defaultValue: '2.0.0', description: '選擇版本')
}tools {jdk 'jdk1.8'   maven 'maven-3.9.6'}stages {stage('pull code') {steps {cleanWs() //清空workspaceecho 'pull start'git branch: "${params.BRANCH}",  credentialsId: 'xxxxxxxxxxxxxxxxxxxx', url: 'xxxxxxxxxxxxxxxxxxxxxxx'echo 'pull end'}}stage('mvn install xxxxxxxxxx') {steps {echo 'build xxxxxxxx'dir('xxxxxxxx') {sh "mvn -v"sh "mvn clean install -Dmaven.test.skip=true"} }}stage('mvn install xxxxxxxxxx') {steps {       echo 'build xxxxxxxx' dir('xxxxxxxxxxx') {sh "mvn clean install -Dmaven.test.skip=true"} }}stage('mvn install xxxxx') {steps {echo 'build xxxxxxxxx'dir('xxxxxxxx') {sh "mvn clean install -Dmaven.test.skip=true"}    }}stage('mvn install island-opple') {steps {echo 'build island-opple'sh "mvn clean install -Dmaven.test.skip=true"}}// stage('login docker') {//     steps {//         echo 'start login docker'//         sh "docker login --username=xxxxxxxxxxxx --password=xxxxxxxxx registry.cn-hangzhou.aliyuncs.com" //     }}stage('make image and push') {steps {echo 'start build image'script {def selectedProjects = "${project_name}".split(',')if(selectedProjects.size()>0){for(int i=0;i<selectedProjects.size();i++){aaa = selectedProjects[i].replace("\"", "")dir(aaa){sh "pwd"sh '''sed -i "1c FROM xxxxxxxxxxxxxxxxxx" Dockerfile '''sh "mvn -Ddocker.image.tag=${version} dockerfile:build"sh '''sleep 3image=$(docker images | sed -n '2p' | awk '{print $1":"$2}')echo $image'''// docker push $image
?}}}}}}}
}
3、構建測試

具體配置詳解請參考 Pipeline

4、Jenkins 構建郵件狀態通知

1、 前提

前提:服務器開啟郵箱服務

(如果啟動失敗修改/etc/postfix/main.cf,確保 inet_interfaces 參數正確設置。默認是inet_interfaces = localhost,

如果你的服務器只想監聽 IPv4 地址,可以將該參數設置為 inet_interfaces = 127.0.0.1

如果想監聽所有地址(包括 IPv4 和 IPv6),可以將其設置為 inet_interfaces = all

2、 基礎配置

需要安裝一個插件:

插件: Email Extension Plugin

進行配置:

系統管理->系統設置->相關配置如下圖:

可以在此處進行測試發送!檢驗配置是否正確

未完待續。。。。。。。。。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19705.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RabbitMQ-發布/訂閱模式

1、發布/訂閱模式介紹 在普通的生產者、消費者模式&#xff0c;rabbitmq會將消息依次傳遞給每一個消費者&#xff0c;一個worker一個&#xff0c;平均分配&#xff0c;這就是Round-robin調度方式&#xff0c;為了實現更加復雜的調度&#xff0c;我們就需要使用發布/訂閱的方式…

EXSI虛擬機新增磁盤并將空間擴充到已有分區

這里寫自定義目錄標題 1、在EXSI虛擬機中新增一塊磁盤配置大小2、確認新磁盤3、格式化新分區4、添加新分區到LVM5、將新增分區添加到已有分區里 1、在EXSI虛擬機中新增一塊磁盤配置大小 注意事項&#xff1a; (1)需確保虛擬機已關閉活處于維護模式&#xff0c;避免數據丟失 (2…

Spring Boot詳解:深入了解與實踐

文章目錄 1. Spring Boot簡介1.1 什么是Spring Boot&#xff1f;1.2 Spring Boot的歷史背景1.3 Spring Boot的核心特點 2. Spring Boot的核心概念2.1 自動配置2.1.1 自動配置原理2.1.2 自定義配置 2.2 Spring Boot Starter2.3 Spring Boot CLI 3. Spring Boot的主要功能模塊3.1…

網橋、路由器和網關有什么區別

在計算機網絡領域&#xff0c;網橋、路由器和網關都是常見的網絡設備&#xff0c;它們在網絡通信中扮演著不同的角色。雖然它們都有連接不同網絡的功能&#xff0c;但在實際應用中卻具有各自獨特的作用和特點。 1.網橋&#xff08;Bridge&#xff09; 定義&#xff1a;網橋是…

最佳 Mac 數據恢復:恢復 Mac 上已刪除的文件

嘗試過許多 Mac 數據恢復工具&#xff0c;但發現沒有一款能達到宣傳的效果&#xff1f;我們重點介紹最好的 Mac 數據恢復軟件 沒有 Mac 用戶愿意擔心數據丟失&#xff0c;但您永遠不知道什么時候會發生這種情況。無論是意外刪除 Mac 上的重要文件、不小心弄濕了 Mac、感染病毒…

CSS:list-style作用

list-style作用 介紹屬性1. list-style-type2.list-style-image3.list-style-position 常見用法1.設置列表項標記類型2.設置列表項標記圖像3.設置列表項標記位置4.組合使用5.為不同列表項設置不同的樣式6.重置列表樣式 示例 介紹 在Web開發中&#xff0c;list-style 是CSS的一…

ORACLE 查詢SQL優化

1 使用EXPLAIN PLAN 使用EXPLAIN PLAN查看查詢的執行計劃&#xff0c;這可以幫助你理解查詢是如何被Oracle執行的。基于執行計劃&#xff0c;你可以確定是否存在索引缺失、不必要的全表掃描等問題。 以下是幾種使用EXPLAIN PLAN的方法&#xff1a; 使用EXPLAIN PLAN FOR: 你可以…

【Epoch,Batch,Iteration】深度學習模型訓練相關基礎概念光速理解!

&#x1f525;模型訓練相關基礎概念&#xff01; Epoch: 一次 epoch 代表整個訓練數據集已經被完整地送入神經網絡進行了一輪訓練。通常&#xff0c;模型需要多次 epoch 才能充分學習數據集中的模式。Batch: 由于數據集可能過大&#xff0c;無法一次性全部加載到內存中進行訓練…

解決VSCode右鍵沒有Open In Default Browser問題

在VSCode進行Web小程序測試時&#xff0c;我們在新建的HTML文件中輸入 !會自動生成頁面代碼骨架&#xff0c;寫入內容后&#xff0c;我們想要右鍵在瀏覽器中預覽。發現右鍵沒有“Open In Default Browser”選項。原因是沒有安裝插件。 下面是解決方案&#xff1a;首先在VSCode找…

探索Lora:微調大型語言模型和擴散模型的低秩適配方法【原理解析,清晰簡潔易懂!附代碼】

探索Lora&#xff1a;微調大型語言模型和擴散模型的低秩適配方法 隨著深度學習技術的快速發展&#xff0c;大型語言模型&#xff08;LLMs&#xff09;和擴散模型&#xff08;Diffusion Models&#xff09;在自然語言處理和計算機視覺領域取得了顯著的成果。然而&#xff0c;這…

3d渲染的常用概念和技術,渲染100邀請碼1a12

之前我們介紹了3D渲染的基本原理和流程&#xff0c;這次說下幾個常用概念和技術。 3D渲染中涉及到很多專業的概念和技術&#xff0c;它們決定了渲染質量和效果&#xff0c;常用的有以下幾個。1、光線追蹤 光線追蹤是一些專業渲染器&#xff08;如V-Ray和Corona等&#xff09;…

Android UI控件詳細解析(四)

1.UI控件 1.1 TextView控件 常用屬性 屬性含義id給當前控件定義了一個唯 一標識符layout_width高度&#xff0c;單位&#xff1a;dp (wrap_content, match_parent)layout_height寬度&#xff0c;單位&#xff1a;dp (wrap_content, match_parent)background設置背景圖片text…

Django學習一:創建Django框架,介紹Django的項目結構和開發邏輯。創建應用,編寫主包和應用中的helloworld

文章目錄 前言一、Django環境配置1、python 環境2、Django環境3、mysql環境4、IDE&#xff1a;pycharm 二、第一次創建Django項目1、創建項目door_web_django_system2、運行啟動 三、Django項目介紹1、介紹Django項目結構2、第一個helloword4、django的項目邏輯&#xff08;和j…

React + Taro 項目 實際書寫 感受

之前我總結了部分react 基礎 根據官網的內容 以及Taro 框架的內容 今天我試著開始寫了一下頁面和開發 說一下我的感受 我之前寫的是vue3 今天是第一次真正根據需求做頁面開發 和邏輯功能 代碼的書寫 主體就是開發了這個頁面 雖說這個頁面 很簡單 但是如果你要是第一次寫 難說…

CATIA入門操作案例——壓縮彈簧繪制,螺旋線的使用,法則曲線應用

目錄 引出畫壓縮彈簧畫等距部分畫兩端的壓縮部分曲線縫合和掃掠封閉曲面得實體 總結異形彈簧新建幾何體草圖編輯&#xff0c;畫一條樣條線進行掃掠&#xff0c;圓心和半徑畫出曲面上的螺旋線再次選擇掃掠&#xff0c;圓心和半徑 其他自定義信號和槽1.自定義信號2.自定義槽3.建立…

Aigtek功率放大器的主要性能要求有哪些

功率放大器是電子系統中的重要組件&#xff0c;用于將低功率信號放大到高功率水平。功率放大器的性能直接影響到信號的放大質量和系統的整體性能。下面西安安泰將介紹功率放大器的主要性能要求。 增益&#xff1a;功率放大器應當具有足夠的增益&#xff0c;即將輸入信號的幅度放…

【仿真建模-anylogic】指定服務端口

Author&#xff1a;趙志乾 Date&#xff1a;2024-05-31 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 問題&#xff1a;anylogic動畫模型可以在瀏覽器中進行展示&#xff0c;且訪問端口在模型啟動時隨機生成&#xff1b;為了將其動畫頁面嵌…

讀取YUV數據到AVFrame并用多線程控制幀率

文件樹&#xff1a; 1.xvideo_view.h class XVideoView { public:// 像素格式枚舉enum Format { RGBA 0, ARGB, YUV420P };// 渲染類型枚舉enum RenderType { SDL 0 };// 創建渲染對象的靜態方法static XVideoView* Create(RenderType type SDL);// 繪制幀的方法bool DrawF…

影響生產RAG流水線5大瓶頸

檢索增強生成&#xff08;Retrieval Augmented Generation&#xff0c;RAG&#xff09;已成為基于大型語言模型的生成式人工智能應用的關鍵組成部分。其主要目標是通過將通用語言模型與外部信息檢索系統集成&#xff0c;增強通用語言模型的能力。這種混合方法旨在解決傳統語言模…

無法刪除dll文件

碰到xxxxxx.dll文件無法刪除不要慌&#xff01; 通過Tasklist /m dll文件名稱 去查看它和哪個系統文件綁定運行&#xff0c;發現是explorer.exe。 我們如果直接通過del命令【當然需要在該dll文件所在的路徑中】。發現拒絕訪問 我們需要在任務管理器中&#xff0c;將資源管理器…