Jenkins 持續集成部署

Jenkins的安裝與部署

前言

當我們在實施一個項目時,從新代碼中獲得反饋的速度越快,問題越早得到解決,獲得反饋的一種常見方法是在新代碼之后運行測試,但這就導致了當代碼正在編譯并且正在運行測試時,開發人員無法在測試完成之前繼續工作,從而使生產效率大大降低。Jenkins通過提供持續集成功能解決了問題。合并新代碼后。Jenkins可以自動進行構建,運行測試和部署應用程序。這篇文章會向大家介紹jenkins的安裝方式和使用方法。

單元一 Jenkins安裝

學習目標

本單元主要完成學習目標;

(1)學會安裝jdk1.8

(2)學會安裝jenkins

(3)了解jenkins的初始化過程

任務1.1 安裝jdk 1.8

任務描述

安裝jdk1.8并為其配置yum源。

知識學習

Jenkins是基于java8編寫的軟件,所以在安裝之前需要在主機上安裝Java8的運行環境,及安裝jdk?1.8

務實施

[root@localhost ~]# wget https://download.oracle.com/java/17/archive/jdk-17.0.6_linux-x64_bin.rpm

[root@localhost ~]# yum install -y jdk-17.0.6_linux-x64_bin.rpm??

#配置yum源

[root@localhost ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo??

#安裝依賴

[root@localhost ~]# yum install fontconfig java-17-openjdk

#探索密鑰

[root@localhost ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

任務1.2 安裝jenkins

任務描述

安裝并成功登錄jenkins

知識學習

jenkins是什么?

Jenkins是一個獨立的開源軟件項目,是基于java開發的一種可擴展的持續集成(CI)工具,用于監控持續重復的工作,自動的構建和測試軟件項目,旨在提供一個開發易用的軟件平臺,使軟件的持續集成變成可能。

持續集成(CI)是什么?

持續集成(CI)是在源代碼變更后自動檢測、拉取、構建和(在大多數情況下)進行單元測試的過程。

任務實施

[root@localhost ~]# yum -y install epel-release

[root@localhost ~]# yum -y install daemonize

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

#啟動服務

[root@localhost ~]# systemctl start jenkins

#關閉防火墻

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

#查看密碼

[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

f1a21e8118d342fab2515af0999368a2

?任務1.3自定義jenkins

任務描述

本任務主要實現以下兩個內容

(1)安裝基礎插件

(2)創建第一個管理員用戶

任務實施

1.安裝插件

登錄后,會出現如下界面,這里涉及到jenkins的插件安裝,建議選擇“安裝推薦的插件”,

點擊“安裝推薦的插件”后,今日“新手入門”頁面,等待全部插件安裝成功即可。

2.創建第一個管理員用戶

插件安裝完成后,會出現“創建第一個管理員用戶”頁面,填寫正確信息后,點擊“保存并完成”,這樣第一個管理員用戶就創建完畢了,如下圖:

?

單元二jenkins相關配置及代碼發布

學習目標

詳細了解jenkins各配置及插件的作用,學會發布代碼

任務2.1jenkins 發布php代碼

任務描述

(1)了解如何安裝插件。

(2)了解如何配置Publish Over SSH、添加公鑰、增加SSH Server

(3)了解構建一個新的任務的流程

任務實施
1.安裝插件

先進入“系統管理”,在進入“管理插件”,在“已安裝”中檢查是否有“Git plugin”和“Publish Over SSH” 兩個插件,如果沒有則需要安裝,到“可選插件”中搜索并安裝。

插件完成后,點擊“返回首頁”回到服務器中重啟jenkins后。登錄。

[root@localhost ~]# systemctl restart jenkins??#重啟

2.配置Publish Over SSH?

首先需要在服務器上./.目錄下生成一對密鑰,命令如下:

[root@localhost ~]# cd ~/.ssh

[root@localhost .ssh]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:9kEjor318PCZg3Tj1bJDAAjlNfa2pc6PROcFZSGSe6I root@localhost.localdomain

The key's randomart image is:

+---[RSA 2048]----+

| ???.o..= ... +. |

| ????..o +.. + ??|

| ?????o . *.o ???|

| ????o . +o*.o ??|

| ???. . S.Bo= o ?|

| ??????=E# X + ??|

| ?????. . & + ???|

| ????????. + . ??|

| ?????????. . ???|

+----[SHA256]-----+

檢查是否生成成功。命令如下:

[root@localhost .ssh]# ls -al

總用量 8

drwxr-xr-x. 2 root root ??38 12月 16 15:45 .

dr-xr-x---. 4 root root ?195 12月 16 15:43 ..

-rw-------. 1 root root 1679 12月 16 15:45 id_rsa

-rw-r--r--. 1 root root ?408 12月 16 15:45 id_rsa.pub

?密鑰生成成功后,登錄Jenkins。點擊“系統管理”然后點擊“系統設置”,下拉找到“Publish Over SSH”將剛才生成的服務器的私鑰填入“Publish over SSH”中的“key”,如下圖:

?

如果提示.ssh目錄不存在,則創建~/.ssh目錄,并把目錄權限設置為700

[root@localhost ~]# mkdir ~/.ssh

[root@localhost ~]# chmod 700 ?~/.ssh

3.增加SSH Server

?Publish over SSH”配置完成后,為了實現代碼的成功發布,我們需要先查看并復制服務器的公鑰,命令如下:

?然后將復制的服務器公鑰,添加到需要添加“SSH Servers”的遠程機器的.ssh/authorized_keys目錄下,若要增加服務器的“SSH Servers”,則需要將服務器的公鑰添加到服務器的.ssh/authorized_keys目錄下。命令如下:

[root@client ~]# cat ~/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlOvCstNk3LLiFGQ2InNsWQgHx15nWjgt2UqKzd3JNG2jHvKgeoO6H6iMg4DKjI0fzpBxrfRaR4gJI2jf04mKfRUhhNn9yCm5Bpbx00pA2m0iuxDMbZSd3MBso7gNWnGqpTyZtCe7q9p1Ml8iJYItleDDJOlFq6yU3W5yTliOBtOKlcBahQ1alpzW5QlATTluHv9TaE/yrvW3M3D+WljIRD8OtVwT+UeqpgNQPNGa1yZWSnSsLROysieNUVFKCTqsQ66Px7UGy3GRRNjw3FoZPr7saKx8WiYU6vphdYeJOAmuGh8//8GFjCiTP/wR10RUmZYFkmVCAuBQVm7/76qqx root@localhost.localdomain

??????

在服務器上嘗試登錄遠程機器,如下圖所示:

嘗試登錄成功后,登錄jenkins進入“Manage Jenkins”,點擊“Configure System”,下滑找到“SSH Server”,填寫所需要連接機器的各項設置,然后點擊“Test Configuration”,顯示“success”,即成功。如下圖所示:

4.構建新的任務

點擊新建ltem,如下圖:

輸入任務名稱,并選擇構建軟件項目的風格,應實驗要求這里選擇自由風格,如下圖:

填寫“描述”如下圖:

配置“源碼管理”,選擇管理源碼的方式(這里選擇git),將代碼倉庫的地址填入“Repositories

URL”中,若代碼倉庫是私有倉庫,還需要點擊“添加”來添加憑證,其他保持默認即可,如下圖:

配置“構建觸發器”“構建環境”,應實驗要求此處保持默認即可,如下圖:

配置“構建”,此處用到了我們之前安裝的“publish over ssh”插件,首先增加名為“Send files or exeute commands over SSH”的構建步驟,如下圖

然后在“Name”下選擇機器名稱(此處SSH Server個數由第3步中添加的數量決定);“Source files”表示要發布那些代碼,在其下填寫“**/**”(表示全部);

“Remote directory”表示把代碼發送到遠程機器的位置,填寫“/tmp/Jenkins_test”(此處可自定義);“Exec command”下填寫想要執行的命令,此處自定義可以為空,如下圖:

點擊“高級”,出現如下頁面,其中“Pattern separator” 設置模式分隔符,“Exec timeout(ms)”?設置超時時間,此處保持默認即可,如下圖:

通常情況下我們需要添加多個機器來進行任務,點擊左下角“Add Server”來添加多個機器,如下圖:

完成以上設置后,應用保存即可

5.將代碼發布到對方機器

首先進入任務,然后點擊“立即構建”,查看“控制臺輸出”,最后登錄各機器查看代碼發布是否成功,如下圖:

任務2.2 jenkins 郵件配置

任務描述

配置“郵件通知”,對郵件進行配置,這樣當項目構建失敗時,我們能第一時間收到通知。

項目實施

首先進入“Manage Jenkins”,然后進入“Configure System”,填寫“Jenkins location”, 設置系統管理員郵件地址,這里的郵件地址需要和后續要設置的發郵件地址一致,如下圖:

找到“郵件通知”,“SMTP服務器”中填寫“smtp.163.com”,接著勾選“使用SMTP認證”,填寫所使用郵箱的用戶名及密碼,“SMTP端口”使用25端口,接著勾選“通過發送測試郵件測試配置”,向其中填寫用于發送測試郵件的郵箱地址后,點擊“Test configuration”進行測試,發送成功后,保存。如下圖:

?完成以上郵件配置后,我們還需要進入已經構建過的job里去配置接收郵件的地址。在已經構建過的項目test1中,點擊“配置”,然后在“增加構建后操作步驟”中,選擇“E-mail Notification”,最后在“Recipients”中填寫郵箱地址并勾選“每次不穩定的構建都發送郵件通知”,保存,如下圖:

最后在“Recipients”中填寫郵箱地址并勾選“每次不穩定的構建都發送郵件通知”,應用保存,如下圖:

任務2.3 插件 email-ext

任務描述

安裝并配置插件“Email Extension Plugin”

任務實施
1.安裝插件

進入“Manage Jenkins”,然后進入 “Manage Plugins”,找到并安裝插件“Email Extension Plugin”,插件安裝成功后,重啟jenkins。

2.配置Extended E-mail Notification

我們要使用 Extended E-mail Notification(email-ext) 去代替 “郵件通知”,所以我們需要先把“郵件通知”里設置的內容刪掉,如下圖:

刪除郵件通知的配置后,配置Extended E-mail Notification,“SMTP server”中填入“smtp.qq.com”;“SMTP Port”中填入端口號為“465”;“SMTP Username”和“SMTP Password”中分別填入郵箱用戶名與密碼。如下圖:

然后下滑找到”Default Tiggers”,勾選”Always”,其他保持默認,保存。如下圖:

3.配置對應任務

進入任務2.1所創建的項目test1,下拉找到“構建后操作”,然后點擊“增加構建后操作步驟”,選擇“Editable ?Email Notification”,其中Project Recipient List為接收郵件的收件人,可以在默認內容后面增加額外的收件人郵箱,用英文逗號分隔。如下圖:

如下圖,點擊右下角的“Advanced settings”,找到“Triggers”(觸發器,設置在什么情況下發送郵件),然后點擊下方的“Add Trigger”,增加發郵件的條件,保存。如下圖:

4.發送郵件測試

首先點擊“立即構建”,然后查看“控制器輸出”,如下圖所示,可以看到發郵件的動作,最后收到郵件即為成功。

任務2.4jenkins破解管理員密碼

任務描述

(1)學會在服務端破解管理員密碼

(2)可以手動設置隨機字符串

任務實施
1.破解管理員密碼

[root@localhost ~]# cd /var/lib/jenkins/users/

[root@localhost users]# ls -la

總用量 12

drwxr-xr-x. ?3 jenkins jenkins ??58 12月 16 14:39 .

drwxr-xr-x. 16 jenkins jenkins 4096 12月 17 19:32 ..

-rw-r--r--. ?1 jenkins jenkins ?304 12月 16 14:39 users.xml

drwx------. ?2 jenkins jenkins ??24 12月 16 15:50 yansong_4245125874000227710

[root@localhost users]# cd yansong_4245125874000227710/

[root@localhost yansong_4245125874000227710]# vi config.xml

[root@localhost yansong_4245125874000227710]# systemctl restart jenkins

[root@localhost yansong_4245125874000227710]#

新密碼為000000

2.手動設置字符串

若不想使用上述的密碼,我們也可以自己定義一個隨機字符串,進入jenkins界面,點擊右上角admin,點擊設置,下拉找到“密碼”,自己定義一個隨機字符串,將自己定義的隨機字符串保存下來,位置自由,若以后忘記了密碼,可在?/var/lib/jenkins/users/admin?文件中,將字符串修改成自己定義的字符串,這樣密碼就修改成功了。

任務2.5jenkins 部署java項目

任務描述

本任務是完整的創建一個java項目

任務實施
1.準備工作

自己申請一個私有git倉庫,生成密鑰對,將公鑰添加到git服務端

2.連接代碼倉庫

[root@localhost ~]# cd /home

[root@localhost home]# git config --global user.name "門同學"

[root@localhost home]# git config --global user.email "445517363@qq.com"

[root@localhost home]# mkdir test2

[root@localhost home]# cd test2

[root@localhost test2]# git init

初始化空的 Git 版本庫于 /home/test2/.git/

[root@localhost test2]# touch README.md

[root@localhost test2]# git add README.md

[root@localhost test2]# git commit -m "first commit"

[master(根提交) 14bd0b7] first commit

?1 file changed, 0 insertions(+), 0 deletions(-)

?create mode 100644 README.md

[root@localhost test2]# git remote add origin menyansong/test2

[root@localhost test2]# git push -u origin master

Username for 'https://gitee.com': menyansong

Password for 'https://menyansong@gitee.com':

Counting objects: 3, done.

Writing objects: 100% (3/3), 216 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

remote: Powered by GITEE.COM [1.1.5]

remote: Set trace flag a4410b94

To https://gitee.com/menyansong/test2.git

?* [new branch] ?????master -> master

分支 master 設置為跟蹤來自 origin 的遠程分支 master。

?

3.下載zrlog

為了讓我們的實驗更加接近生產環境,我們需要一段java的源代碼,所以此處我們下載由java編寫的博客——zrlog

[root@localhost home]# wget https://codeload.github.com/94fzb/zrlog/zip/master

[root@localhost home]# unzip master

[root@localhost home]# mv zrlog-master/* test2/

4.提交代碼

[root@localhost home]# cd test2/

[root@localhost test2]# git add .?????#添加所有更改

[root@localhost test2]# git commit -m "add zrlog"????#提交更改

[root@localhost test2]# git push??????????????????#推送更改到遠程倉庫

?若我們可以在代碼中看到我們剛才提交的文件,說明提交成功。如下圖:

5.安裝jdk(在遠程機器上)
(1)下載

下載jdk-8u221-linux-x64.tar.gz ?并存放至/usr/local下

(2) 解壓

[root@localhost ~]# cd /usr/local/

[root@localhost local]# mkdir java

[root@localhost local]# mv jdk-8u271-linux-x64.tar.gz ?/usr/local/java/

[root@localhost local]# cd java

[root@localhost java]# tar -zxvf jdk-8u271-linux-x64.tar.gz

(3)配置java的環境變量

[root@localhost java]# vi /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_271

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

[root@localhost java]# source /etc/profile????????#重啟配置生效

?(4)驗證

[root@localhost java]# java -version

java version "1.8.0_271"

Java(TM) SE Runtime Environment (build 1.8.0_271-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)

6.安裝tomcat(在遠程機器上)
(1)作用

tomcat是用來運行zrlog的容器

(2)下載

下載apache-tomcat-9.0.0.54.tar.gz ?#并存放至/usr/local下

(3)解壓

[root@client ~]# cd /usr/local/

[root@client local]# tar -zxf apache-tomcat-9.0.94.tar.gz

(4)配置

[root@client local]# mkdir tomcat

[root@client local]# mv /usr/local/apache-tomcat-9.0.94 /usr/local/tomcat

[root@client local]# cd tomcat/

[root@client tomcat]# vi /usr/local/tomcat/apache-tomcat-9.0.94/conf/tomcat-users.xml

#配置管理員用戶

-->

<role rolename="admin"/>

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<role rolename="manager"/>

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user name="admin" password="jenkins.com" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />

<tomcat-users>

[root@client apache-tomcat-9.0.94]# vi webapps/manager/META-INF/context.xml

找到 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

向其中加入我們要使用的網段,修改如下:

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.213.*" />

配置完成后啟動:

[root@client bin]# ./startup.sh?????#開啟Tomcat

傳一個jdk的包

解壓完成后移動到這個目錄下

[root@client tomcat]# mv jdk1.8.0_271 /usr/local/tomcat/apache-tomcat-9.0.94/

[root@client apache-tomcat-9.0.94]# cd /usr/local/tomcat/apache-tomcat-9.0.94/jdk1.8.0_271/

[root@client jdk1.8.0_271]# vi /etc/profile

#在最后添加這兩行

export JAVA_HOME=/usr/local/tomcat/apache-tomcat-9.0.94/jdk1.8.0_271/??#注意路徑

export PATH=$JAVA_HOME/bin:$PATH

[root@client jdk1.8.0_271]# source /etc/profile???#重啟配置文件

[root@client jdk1.8.0_271]# java -version

java version "1.8.0_271"

[root@client jdk1.8.0_271]# cd ..

[root@client apache-tomcat-9.0.94]# ls

bin ??????????conf ????????????jdk1.8.0_271 ?LICENSE ?NOTICE ????RELEASE-NOTES ?temp ????work

BUILDING.txt ?CONTRIBUTING.md ?lib ??????????logs ????README.md ?RUNNING.txt ???webapps

[root@client apache-tomcat-9.0.94]# cd bin

[root@client bin]# ./startup.sh

Using CATALINA_BASE: ??/usr/local/tomcat/apache-tomcat-9.0.94

Using CATALINA_HOME: ??/usr/local/tomcat/apache-tomcat-9.0.94

Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.94/temp

Using JRE_HOME: ???????/usr/local/tomcat/apache-tomcat-9.0.94/jdk1.8.0_271/

Using CLASSPATH: ??????/usr/local/tomcat/apache-tomcat-9.0.94/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.94/bin/tomcat-juli.jar

Using CATALINA_OPTS: ??

Tomcat started.

(5)驗證

首先找到“Managing Tomcat”,點擊“manager webapp”,如下圖所示:

然后輸入tomcat的用戶名與密碼完成驗證,如下圖所示:

7.安裝maven(在服務器端安裝)
(1)作用

maven編譯java的源碼并打包

(2)下載

下載apache-maven-3.8.3-bin.tar.gz ????到/usr/local/下

(3)解壓

[root@localhost local]# tar -zxf apache-maven-3.8.8-bin.tar.gz

?(4)驗證

[root@localhost local]# /usr/local/apache-maven-3.8.8/bin/mvn --version

Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)

Maven home: /usr/local/apache-maven-3.8.8

Java version: 1.8.0_271, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_271/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

(5)配置maven

點擊“Manage Jenkins”,點擊“Global Tool Configuration”,找到“Maven配置”,

填寫Maven相關的文件路徑。如下圖:

下滑找到 Maven ,點擊“新增Maven”,按照安裝的Maven版本號來填寫 Name,此處建議不要自動安裝,所以不要勾選“自動安裝”,然后在 服務器端獲取Maven的路徑填入MAVEN_HOME ,應用保存即可。如下圖:

8.安裝插件
(1)安裝

Maven Integration plugin ???//用來創建一個maven的項目

Deploy to container Plugin ??//用來將war包,發布到遠程去

(2)重啟jenkins

[root@localhost ~]# systemctl restart jenkins

(3)驗證

?

出現“構建一個maven項目”,說明安裝成功!

9.創建maven項目

將任務名稱填入“輸入一個任務名稱”下,并選擇想要構建的項目類型,這里我們選擇“構建一個maven項目”,如下圖:

配置“源碼管理”:選擇“git”來進行源碼管理;將私有的代碼倉庫的地址填入“Repository URL”;此時會出現錯誤提醒,這是因為我們添加的代碼倉庫是私有的,想要使用它必須為其添加憑證,點擊“添加”。如下圖:

點擊“添加”后出現下圖頁面,“類型”選擇“SSH Username with private key”; “Username“為“git”(以代碼倉庫的地址為參考,可知此處使用的用戶名應為git);勾選“Enter directly”,并將服務器的私鑰添加到出現的“key”中,從而使得jenkins可以成功訪問git;最后點擊“添加”。如下圖:

私鑰

[root@localhost ~]# cat ~/.ssh/id_rsa

如下圖所示,“憑證”添加完成之后,在“Credentials”下選擇“git”,此時可以看到剛才出現的錯誤提示已經消失了。如下圖:

下滑找到“Build”(其功能實質就是使用maven去編譯我們的源碼并生成包),“Root POM”為“pom.xml”;“Goals and options”下填寫maven在編譯時用到的選項,可留空,但在這里我們填寫“clean install –D maven.test.skip=true”這條命令表示在編譯之前先清理,跳過測試。如下圖:

下滑點擊“增加構建后操作步驟”選擇“Editable Email Notification”,在“Project Recipient List”下添加一個額外的郵箱,注意前后需要使用英文逗號隔開,如下圖所示,應用,保存。如下圖:

點擊“立即構建”后,查看“控制臺輸出”,如下圖:

?

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

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

相關文章

跨站請求偽造之基本介紹

一.基本概念 1.定義 跨站請求偽造&#xff08;Cross - Site Request Forgery&#xff0c;縮寫為 CSRF&#xff09;漏洞是一種網絡安全漏洞。它是指攻擊者通過誘導用戶訪問一個惡意網站&#xff0c;利用用戶在被信任網站&#xff08;如銀行網站、社交網站等&#xff09;的登錄狀…

Pytorch | 利用BIM/I-FGSM針對CIFAR10上的ResNet分類器進行對抗攻擊

Pytorch | 利用BIM/I-FGSM針對CIFAR10上的ResNet分類器進行對抗攻擊 CIFAR數據集BIM介紹基本原理算法流程 BIM代碼實現BIM算法實現攻擊效果 代碼匯總bim.pytrain.pyadvtest.py 之前已經針對CIFAR10訓練了多種分類器&#xff1a; Pytorch | 從零構建AlexNet對CIFAR10進行分類 Py…

如何更好的進行時間管理

先想一下我們想要做的事情&#xff0c;然后拿出Excel表格將這些事情記錄下來&#xff0c;我們把它叫做任務對這些任務按照重要性&#xff0c;緊急程度進行排序&#xff0c;拿出表格中的前六個任務&#xff0c;就是今天要做的任務新建另一張excel表格&#xff0c;表格的一列為時…

OpenGL —— 2.6.1、繪制一個正方體并貼圖渲染顏色(附源碼,glfw+glad)

源碼效果 C++源碼 紋理圖片 需下載stb_image.h這個解碼圖片的庫,該庫只有一個頭文件。 具體代碼: vertexShader.glsl #version

ubuntu開機進入initramfs狀態

虛擬機卡死成功起后進入了initramfs狀態&#xff0c;可能是跟文件系統有問題或者檢索不到根文件系統&#xff0c;或者是配置錯誤&#xff0c;系統磁盤等硬件問題導致 開機后進入如下圖的界面&#xff0c; 文中有一條提示 要手動fsck 命令修復 /dev/sda1 命令如下 fsck /de…

java根據Word模板實現動態填充導出

最近項目中需要導出Word&#xff0c;根據不同的信息導出不同的內容&#xff0c;包含文本、列表、圖片等&#xff0c;本文使用poi-tl實現在次做以記錄。 添加依賴 <!-- word導出 --> <dependency><groupId>com.deepoove</groupId><artifactId>po…

mindie推理大語言模型問題及解決方法匯總

問題說明 使用功能mindie 1.0 RC2推理大語言模型&#xff0c;遇到不少問題&#xff0c;記錄下解決思路。 我的硬件是910B4。 問題及解決 問題1 在docker內啟動mindie時終端報錯 Fatal Python error: PyThreadState_Get: the function must be called with the GIL held, …

Selenium 全面指南

Selenium 是一個強大的 Web 自動化工具&#xff0c;支持多種瀏覽器和語言綁定。 1. Selenium 的基本概念 WebDriver&#xff1a;Selenium 提供的核心接口&#xff0c;用于控制瀏覽器操作。顯式等待&#xff1a;等待特定條件滿足后再執行操作。隱式等待&#xff1a;全局設置一個…

Go框架比較:goframe、beego、iris和gin

由于工作需要&#xff0c;這些年來也接觸了不少的開發框架&#xff0c;Golang的開發框架比較多&#xff0c;不過基本都是Web"框架"為主。這里稍微打了個引號&#xff0c;因為大部分"框架"從設計和功能定位上來講&#xff0c;充其量都只能算是一個組件&…

【華為OD-E卷-木板 100分(python、java、c++、js、c)】

【華為OD-E卷-木板 100分&#xff08;python、java、c、js、c&#xff09;】 題目 小明有 n 塊木板&#xff0c;第 i ( 1 ≤ i ≤ n ) 塊木板長度為 ai。 小明買了一塊長度為 m 的木料&#xff0c;這塊木料可以切割成任意塊&#xff0c;拼接到已有的木板上&#xff0c;用來加…

sqlserver臨時表來做表聯查復雜查詢

使用臨時表&#xff0c;先查詢出結果&#xff0c;在用于后面表的子查詢或者聯查 -- 刪除表1if EXISTS ( SELECT 1 FROM tempdb.sys.objects where name like #temp_PublishRecord% ) beginDROP TABLE #temp_PublishRecordprint 已刪除臨時表 #temp_PublishRecordend--創…

OMG DDS 規范漫談:分布式數據交互的演進之路

一、由來與起源脈絡 OMG DDS&#xff08;Object Management Group Data Distribution Service&#xff09;的發展是計算機科學和技術進步的一個縮影&#xff0c;它反映了對高效、可靠的數據共享需求的響應。DDS 的概念萌生于20世紀90年代末&#xff0c;當時分布式計算已經從理…

1.使用 Couchbase 數倉和 Temporal(一個分布式任務調度和編排框架)實現每 5 分鐘的增量任務

在使用 Couchbase 數倉和 Temporal&#xff08;一個分布式任務調度和編排框架&#xff09;實現每 5 分鐘的增量任務時&#xff0c;可以按照以下步驟實現&#xff0c;同時需要注意關鍵點。 實現方案 1. 數據層設計&#xff08;Couchbase 增量存儲與標記&#xff09; 在 Couchb…

Spring源碼分析之AOP-@EnableAspectJAutoProxy

前言 這篇文章之前我們說了Springboot的啟動流程,Bean對象怎么實現從無到有的一個過程還有一些接口的拓展的實現等等那么從這一篇文章開始的話我們就會開始說一說我們的常用的AOP它的底層實現原理所以大家一起加油加油&#xff01;&#xff01;&#xff01; AOP: 1.簡介: AOP的…

Linux(Centos 7.6)基本信息查看

1.服務器硬件信息查看 1.1.服務器廠商、產品名稱查看 dmidecode -s system-manufacturer&#xff1a;查看服務器廠商信息 dmidecode -s system-product-name&#xff1a;查看服務器產品名稱信息 1.Windows使用VMware安裝的Linux(Centos 7.6)后&#xff0c;服務器廠商、產品名…

多個圖片轉換為PDF文件

將多個圖片轉換為PDF文件在Python中可以通過多個庫來實現&#xff0c;其中最常用的庫之一是Pillow&#xff08;用于圖像處理&#xff09;和reportlab&#xff08;用于生成PDF&#xff09;。不過&#xff0c;對于直接圖片轉PDF的操作&#xff0c;更推薦使用Pillow配合PyMuPDF&am…

小程序app封裝公用頂部篩選區uv-drop-down

參考ui:DropDown 下拉篩選 | 我的資料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生態框架 樣式示例&#xff1a; 封裝公用文件代碼 dropDownTemplete <template><!-- 頂部下拉篩選區封裝公用組件 --><view><uv-drop-down ref&…

LeetCode:101. 對稱二叉樹

跟著carl學算法&#xff0c;本系列博客僅做個人記錄&#xff0c;建議大家都去看carl本人的博客&#xff0c;寫的真的很好的&#xff01; 代碼隨想錄 LeetCode&#xff1a;101. 對稱二叉樹 給你一個二叉樹的根節點 root &#xff0c; 檢查它是否軸對稱。 示例 1&#xff1a; 輸…

Docker-如何啟動docker

作者介紹&#xff1a;簡歷上沒有一個精通的運維工程師。希望大家多多關注作者&#xff0c;下面的思維導圖也是預計更新的內容和當前進度(不定時更新)。 我們在上一章&#xff0c;講了虛擬化&#xff0c;虛擬化是把硬件虛擬化&#xff0c;然后創建出來的虛擬機完全隔離&#xff…

COMSOL with Matlab

文章目錄 基本介紹COMSOL with MatlabCOMSOL主Matlab輔Matlab為主Comsol為輔 操作步驟常用指令mphopenmphgeommghmeshmphmeshstatsmphnavigatormphplot常用指令mphsavemphlaunchModelUtil.clear 實例教學自動另存新檔**把語法套用到邊界條件**把語法套用到另存新檔 函數及其微分…