【CI/CD】基于 Jenkins+Docker+Git 的簡單 CI 流程實踐(上)

基于 Jenkins+Docker+Git 的簡單 CI 流程實踐(上)

在如今的互聯網時代,隨著軟件開發復雜度的不斷提高,軟件開發和發布管理也越來越重要。目前已經形成一套標準的流程,最重要的組成部分就是 持續集成持續交付、部署。在此,我們在京東云上以一個案例簡單實踐下 CI 流程。

1.相關概念及工具介紹

1.1 CI/CD

持續集成(Continuous Integration,CI),它屬于開發人員的自動化流程。成功的 CI 意味著應用代碼的新更改會定期構建、測試并合并到共享存儲庫中。該解決方案可以解決在一次開發中有太多應用分支,從而導致相互沖突的問題。

持續交付(Continuous Delivery,CD),通常是指開發人員對應用的更改會自動進行錯誤測試并上傳到存儲庫(如 GitHub 或容器注冊表),然后 由運維團隊將其部署到實時生產環境中。這旨在解決開發和運維團隊之間可見性及溝通較差的問題。因此,持續交付的目的就是確保盡可能減少部署新代碼時所需的工作量。

持續部署(Continuous Deployment,CD),這是另一種 “CD”,指的是 自動將開發人員的更改從存儲庫發布到生產環境,以供客戶使用。它主要為了解決因手動流程降低應用交付速度,從而使運維團隊超負荷的問題。

1.2 Jenkins

Jenkins 是一個開源軟件項目,是基于 Java 開發的一種 持續集成 工具,用于監控持續重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。

1.3 Docker

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

1.4 Git

Git 是一個開源的分布式版本控制系統,提供代碼倉庫,可以有效、高速地處理從很小到非常大的項目版本管理。 Git 是 L i n u s T o r v a l d s Linus\ Torvalds Linus?Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。

2.前期準備

2.1 CI 流程設計圖

在這里插入圖片描述

2.2 工作流程

  • 開發人員提交代碼到 Git 版本倉庫。
  • Jenkins 人工/定時觸發項目構建。
  • Jenkins 拉取代碼、代碼編譯、打包鏡像、推送到鏡像倉庫。
  • Jenkins 在 Docker 主機創建容器并發布。

在這里插入圖片描述

2.3 主機環境規劃

主機名稱介紹公網內網
docker-jenkins項目構建;拉取代碼、代碼編譯、打包鏡像、推送鏡像到鏡像倉庫116.196.85.17410.0.0.20
docker-git代碼倉庫116.196.86.20710.0.0.22
docker-harbor私有鏡像倉庫116.196.88.9110.0.0.21
buildimagebuild docker 鏡像116.196.89.13910.0.0.4

3.主機創建

在京東云控制臺創建4臺云主機,地址:https://console.jdcloud.com/

配置如下,購買時數量直接選擇 4 4 4,購買完成后再修改名稱,分別為:docker-jenkinsdocker-gitdocker-harborbuildimage

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
創建、修改名稱后如下:

在這里插入圖片描述

4.環境配置

4.1 云主機 docker-git

(1)修改主機名為:docker-git

[root@112 ~]# hostnamectl set-hostname docker-git
[root@112 ~]# hostname  docker-git
[root@112 ~]# logout
[root@docker-git ~]#

Ctrl+D 退出后重新登陸生效。

(2)部署 Git 代碼版本倉庫

安裝:

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

配置 git 用戶:

[root@docker-git ~]# useradd git
[root@docker-git ~]# passwd git

在這里插入圖片描述

創建庫:

[root@docker-git ~]# su git
[git@docker-git root]$ cd
[git@docker-git ~]$ mkdir tomcat-java-demo.git
[git@docker-git ~]$ cd tomcat-java-demo.git/
[git@docker-git tomcat-java-demo.git]$ git --bare init
Initialized empty Git repository in /home/git/tomcat-java-demo.git/
[git@docker-git tomcat-java-demo.git]$ ls
branches  config  description  HEAD  hooks  info  objects  refs
[git@docker-git tomcat-java-demo.git]$ 

在這里插入圖片描述

4.2 云主機 docker-jenkins

(1)修改主機名為:docker-jenkins

[root@113 ~]# hostnamectl set-hostname docker-jenkins
[root@113 ~]# hostname  docker-jenkins
[root@113 ~]# logout
[root@docker-jenkins ~]#

Ctrl+D 退出后重新登陸生效。

(2)jenkins 環境部署

部署 jdk 環境及 maven

[root@docker-jenkins tomcat-java-demo]# cd
[root@docker-jenkins ~]# mkdir tools
[root@docker-jenkins ~]# cd tools
[root@docker-jenkins tools]# wget https://pocenv-hcc.oss.cn-north-1.jcloudcs.com/jdk-8u191-linux-x64.tar.gz;tar zxf jdk-8u191-linux-x64.tar.gz;mv jdk1.8.0_191/ /usr/local/;ln -s /usr/local/jdk1.8.0_191/ /usr/local/jdk;
[root@docker-jenkins tools]# vim /etc/profile
######## JDK #######
JAVA_HOME=/usr/local/jdk1.8.0_191
JAVA_BIN=/usr/local/jdk1.8.0_191/bin
PATH=$PATH:$JAVA_BIN
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
[root@docker-jenkins tools]# source /etc/profile
[root@docker-jenkins tools]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) 
[root@docker-jenkins tools]# wget https://pocenv-hcc.oss.cn-north-1.jcloudcs.com/apache-maven-3.5.0-bin.tar.gz;tar zxf apache-maven-3.5.0-bin.tar.gz;mv apache-maven-3.5.0 /usr/local/maven
[root@docker-jenkins tools]# 

安裝 Jenkins,下載 Tomcat 二進制包,將 war 包移動到 webapps 下即可。

[root@docker-jenkins tools]# wget https://pocenv-hcc.oss.cn-north-1.jcloudcs.com/jenkins.war
[root@docker-jenkins tools]# wget https://pocenv-hcc.oss.cn-north-1.jcloudcs.com/apache-tomcat-8.5.38.tar.gz
[root@docker-jenkins tools]# tar zxf apache-tomcat-8.5.38.tar.gz
[root@docker-jenkins tools]# ls
apache-maven-3.5.0-bin.tar.gz  apache-tomcat-8.5.38  apache-tomcat-8.5.38.tar.gz  jdk-8u191-linux-x64.tar.gz  jenkins.war
[root@docker-jenkins tools]# mv apache-tomcat-8.5.38 /usr/local/tomcat-jenkins
[root@docker-jenkins tools]# ls /usr/local/tomcat-jenkins/webapps/
docs  examples  host-manager  manager  ROOT
[root@docker-jenkins tools]# rm -rf /usr/local/tomcat-jenkins/webapps/*
[root@docker-jenkins tools]# mv jenkins.war /usr/local/tomcat-jenkins/webapps/ROOT.war
[root@docker-jenkins tools]# ll /usr/local/tomcat-jenkins/webapps/
total 75520
-rw-r--r--. 1 root root 77330344 Mar 15 00:55 ROOT.war
[root@docker-jenkins tools]# cd /usr/local/tomcat-jenkins/bin/
[root@docker-jenkins bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat-jenkins
Using CATALINA_HOME:   /usr/local/tomcat-jenkins
Using CATALINA_TMPDIR: /usr/local/tomcat-jenkins/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat-jenkins/bin/bootstrap.jar:/usr/local/tomcat-jenkins/bin/tomcat-juli.jar
Tomcat started.
[root@docker-jenkins bin]#

啟動后,瀏覽器訪問(docker-jenkins):http://Jenkins主機公網IP:8080/,按提示輸入密碼,登錄即可。

/root/.jenkins/secrets/initialAdminPassword 文件里,查看密碼后填入即可。

在這里插入圖片描述
按照你自己的需求安裝插件。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
設置管理員。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
開始使用 Jenkins

在這里插入圖片描述
(3)安裝 DOCKER CE(Docker 的社區版)

安裝所需包:

yum install -y yum-utils device-mapper-persistent-data lvm2 -y

設置穩定存儲庫:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo -y

安裝 DOCKER CE(這一步比較慢,耐心等會兒!):

yum install docker-ce docker-ce-cli containerd.io -y

啟動 Docker

systemctl start docker

4.3 云主機 docker-harbor

(1)修改主機名為:docker-harbor

[root@c-dfjgjesgqe ~]# hostnamectl set-hostname docker-harbor
[root@c-dfjgjesgqe ~]# hostname  docker-harbor

Ctrl+D 退出后重新登陸生效。

(2)企業級 Harbor 鏡像倉庫部署

Habor 是由 VMWare 公司開源的容器鏡像倉庫。事實上,Habor 是在 Docker Registry 上進行了相應的企業級擴展,從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理用戶界面基于角色的訪問控制AD/LDAP 集成 以及 審計日志 等,足以滿足基本企業需求。

Harbor 各組件介紹:

組件功能
harbor-adminserver配置管理中心
harbor-dbMySQL 數據庫
harbor-jobservice負責鏡像復制
harbor-log記錄操作日志
harbor-uiWeb 管理頁面和 API
nginx前端代理,負責前端頁面和鏡像上傳 / 下載轉發
redis會話
registry鏡像存儲

Harbor 安裝有 3 3 3 種方式

  • 在線安裝:從 Docker Hub 下載 Harbor 相關鏡像,因此安裝軟件包非常小。
  • 離線安裝:安裝包包含部署的相關鏡像,因此安裝包比較大。
  • OVA 安裝程序:當用戶具有 vCenter 環境時,使用此安裝程序,在部署 OVA 后啟動 Harb。

在此我們使用第二種離線安裝方式來搭建基于 https 訪問的 harbor 鏡像倉庫。

1)下載并解壓離線安裝包

harbor 離線包下載地址:https://github.com/goharbor/harbor/releases

為方便下載,我在京東云對象存儲上也存了一份,可直接 wgethttps://pocenv-hcc.oss.cn-north-1.jcloudcs.com/harbor-offline-installer-v1.7.4.tgz

[root@docker-harbor ~]# yum install vim wget openssl -y
[root@docker-harbor ~]# wget https://pocenv-hcc.oss.cn-north-1.jcloudcs.com/harbor-offline-installer-v1.7.4.tgz
[root@docker-harbor ~]# tar zxf harbor-offline-installer-v1.7.4.tgz
[root@docker-harbor ~]# cd harbor
[root@docker-harbor harbor]# ll
total 570744
drwxr-xr-x 3 root root        23 Apr  1 15:05 common
-rw-r--r-- 1 root root       939 Mar  4 15:33 docker-compose.chartmuseum.yml
-rw-r--r-- 1 root root       975 Mar  4 15:33 docker-compose.clair.yml
-rw-r--r-- 1 root root      1434 Mar  4 15:33 docker-compose.notary.yml
-rw-r--r-- 1 root root      5608 Mar  4 15:33 docker-compose.yml
-rw-r--r-- 1 root root      8033 Mar  4 15:33 harbor.cfg
-rw-r--r-- 1 root root 583086399 Mar  4 15:33 harbor.v1.7.4.tar.gz
-rwxr-xr-x 1 root root      5739 Mar  4 15:33 install.sh
-rw-r--r-- 1 root root     11347 Mar  4 15:33 LICENSE
-rw-r--r-- 1 root root   1263409 Mar  4 15:33 open_source_license
-rwxr-xr-x 1 root root     36337 Mar  4 15:33 prepare

2)自簽 http 證書

獲取權威認證證書。

[root@docker-harbor harbor]# mkdir ssl
[root@docker-harbor harbor]# cd ssl
[root@docker-harbor ssl]# openssl genrsa -out ca.key 4096
Generating RSA private key, 4096 bit long modulus
...................................++
.....................................................................................................................................++
e is 65537 (0x10001)
[root@docker-harbor ssl]# openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=ZH/ST=ShangHai/L=ShangHai/O=example/OU=Personal/CN=reg.marin.com" -key ca.key -out ca.crt
[root@docker-harbor ssl]# ll
total 8
-rw-r--r-- 1 root root 2037 Apr  4 18:41 ca.crt
-rw-r--r-- 1 root root 3243 Apr  4 18:41 ca.key

獲取服務端證書。

1.Create your own Private Key:
[root@docker-harbor ssl]# openssl genrsa -out reg.marin.com.key 4096
Generating RSA private key, 4096 bit long modulus
.............................................++
............................................................................................................................................................................................................................++
e is 65537 (0x10001)
[root@docker-harbor ssl]# openssl req -sha512 -new -subj "/C=ZH/ST=ShangHai/L=ShangHai/O=example/OU=Personal/CN=reg.marin.com" -key reg.marin.com.key -out reg.marin.com.csr
[root@docker-harbor ssl]# ll
total 16
-rw-r--r-- 1 root root 2037 Apr  4 18:41 ca.crt
-rw-r--r-- 1 root root 3243 Apr  4 18:41 ca.key
-rw-r--r-- 1 root root 1708 Apr  4 18:42 reg.marin.com.csr
-rw-r--r-- 1 root root 3243 Apr  4 18:42 reg.marin.com.key
[root@docker-harbor ssl]# cat > v3.ext <<-EOF
> authorityKeyIdentifier=keyid,issuer
> basicConstraints=CA:FALSE
> keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
> extendedKeyUsage = serverAuth
> subjectAltName = @alt_names
> 
> [alt_names]
> DNS.1=reg.marin.com
> DNS.2=reg.marin
> DNS.3=marin
> EOF
[root@docker-harbor ssl]# openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in reg.marin.com.csr -out reg.marin.com.crt
Signature ok
subject=/C=ZH/ST=ShangHai/L=ShangHai/O=example/OU=Personal/CN=reg.marin.com
Getting CA Private Key
[root@docker-harbor ssl]# ll
total 28
-rw-r--r-- 1 root root 2037 Apr  4 18:41 ca.crt
-rw-r--r-- 1 root root 3243 Apr  4 18:41 ca.key
-rw-r--r-- 1 root root   17 Apr  4 18:44 ca.srl
-rw-r--r-- 1 root root 2098 Apr  4 18:44 reg.marin.com.crt
-rw-r--r-- 1 root root 1708 Apr  4 18:42 reg.marin.com.csr
-rw-r--r-- 1 root root 3243 Apr  4 18:42 reg.marin.com.key
-rw-r--r-- 1 root root  260 Apr  4 18:43 v3.ext

修改 harbor 配置,以及為 Docker 配置服務端證書,keyCA

[root@docker-harbor ssl]# cd ..
[root@docker-harbor harbor]# vim harbor.cfg
......
hostname = reg.marin.com
ui_url_protocol = https
ssl_cert = ./ssl/reg.marin.com.crt
ssl_cert_key = ./ssl/reg.marin.com.key
harbor_admin_password = 123456
......

密碼也可以不修改,默認登錄用戶:admin,密碼:Harbor12345

Docker 守護進程會將 .crt 文件解釋為 CA 證書,將 .cert 文件解釋為客戶機證書,先將 .crt 文件轉換一份 .cert 文件。

[root@docker-harbor harbor]# cd ssl/
[root@docker-harbor ssl]# mkdir -p /etc/docker/certs.d/reg.marin.com
[root@docker-harbor ssl]# openssl x509 -inform PEM -in reg.marin.com.crt -out reg.marin.com.cert
[root@docker-harbor ssl]# cp reg.marin.com.cert reg.marin.com.key ca.crt /etc/docker/certs.d/reg.marin.com/

到此自簽成功!

3)安裝 DOCKER CE

安裝所需包:

yum install -y yum-utils device-mapper-persistent-data lvm2 -y

設置穩定存儲庫:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo -y

在這里插入圖片描述

安裝 DOCKER CE(這一步比較慢,耐心等會兒!):

yum install docker-ce docker-ce-cli containerd.io -y

在這里插入圖片描述

啟動 Docker

systemctl start docker

通過運行 hello-world 鏡像驗證是否正確安裝了 Docker CE

docker run hello-world

在這里插入圖片描述
4)初始化及安裝驗證

初始化安裝:

[root@docker-harbor ssl]# 
[root@docker-harbor ssl]# cd ..
[root@docker-harbor harbor]# ./prepare
Generated and saved secret to file: /data/secretkey
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/adminserver/env
Generated configuration file: ./common/config/core/env
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/config.yml
Generated configuration file: ./common/config/log/logrotate.conf
Generated configuration file: ./common/config/registryctl/env
Generated configuration file: ./common/config/core/app.conf
Generated certificate, key file: ./common/config/core/private_key.pem, cert file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.

執行 install.sh 腳本,安裝 harbor 倉庫。

注意:在執行 install.sh 腳本之前,先檢查兩個問題:

  • docker-compose 是否安裝,否則在運行 install.sh 時會失敗,報錯 “? Need to install docker-compose(1.7.1+) by yourself first and run this script again.”
  • docker 服務是否正常運行,否則在運行 install.sh 會失敗,報錯 “Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”

安裝 Compose

運行此命令以下載 Docker Compose 的當前穩定版本:

curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

對二進制文件應用可執行權限:

chmod +x /usr/local/bin/docker-compose

執行 install.sh 腳本,安裝 harbor 倉庫:

[root@docker-harbor harbor]# ./install.sh[Step 0]: checking installation environment ...Note: docker version: 18.09.4Note: docker-compose version: 1.24.0[Step 1]: loading Harbor images ...
bffe2a0fec66: Loading layer [==================================================>]  33.22MB/33.22MB
38e174bed467: Loading layer [==================================================>]  8.964MB/8.964MB
427e4936ae66: Loading layer [==================================================>]  35.77MB/35.77MB
3bfd5214250a: Loading layer [==================================================>]  2.048kB/2.048kB
f30df776629d: Loading layer [==================================================>]  3.072kB/3.072kB
f87afad43f43: Loading layer [==================================================>]   22.8MB/22.8MB
......
953717aa0afc: Loading layer [==================================================>]   22.8MB/22.8MB
Loaded image: goharbor/registry-photon:v2.6.2-v1.7.4[Step 2]: preparing environment ...
Clearing the configuration file: ./common/config/adminserver/env
Clearing the configuration file: ./common/config/core/env
Clearing the configuration file: ./common/config/core/app.conf
Clearing the configuration file: ./common/config/core/private_key.pem
Clearing the configuration file: ./common/config/db/env
......
Generated certificate, key file: ./common/config/core/private_key.pem, cert file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.[Step 3]: checking existing instance of Harbor ...[Step 4]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating redis              ... done
Creating registryctl        ... done
Creating harbor-db          ... done
Creating harbor-adminserver ... done
Creating registry           ... done
Creating harbor-core        ... done
Creating harbor-jobservice  ... done
Creating harbor-portal      ... done
Creating nginx              ... done? ----Harbor has been installed and started successfully.----Now you should be able to visit the admin portal at https://reg.marin.com. 
For more details, please visit https://github.com/goharbor/harbor .

在這里插入圖片描述
瀏覽器訪問驗證。

瀏覽器訪問要做域名解析,在本地 hostsC:\Windows\System32\drivers\etc\hosts)文件中加入:116.196.88.91 reg.marin.com

在這里插入圖片描述
訪問:https://reg.marin.com,并登錄。

在這里插入圖片描述
登錄后界面基本操作:

  • 新建項目 test

在這里插入圖片描述

  • 新建用戶 marin

在這里插入圖片描述

  • 將用戶 marin 設置為 test 項目管理員。

在這里插入圖片描述

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

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

相關文章

GPU編程基礎-CUDA實現圖像處理

GPU編程基礎-CUDA實現圖像處理 1. 相關基礎概念1.1 Host和Device程序1.2 Kernel程序1.3 SIMT和SIMD1.4 GPU計算的 Occupancy指標1.5 GPU計算的基本流程2. GPU計算框架與過程說明3. 一個基于CUDA的圖像處理例子4. 一些報錯解決1. 相關基礎概念 1.1 Host和Device程序 在CPU上運行…

Effective C++學習筆記(7)

目錄 條款41&#xff1a;了解隱式接口和編譯多態條款42&#xff1a;了解typename的雙重意義條款43&#xff1a;學習處理模板化基類內的名稱條款44&#xff1a;將與參數無關的代碼抽離templates條款45&#xff1a;運用成員函數模板接受所有兼容類型條款46&#xff1a;需要類型轉…

opencv,opengl,osg,vulkan,webgL,opencL,cuda,osg,vtk,ogre的區別

OpenCV OpenCV是一個基于BSD許可&#xff08;開源&#xff09;發行的跨平臺計算機視覺和機器學習軟件庫&#xff0c;可以運行在Linux、Windows、Android和Mac OS操作系統上。 它輕量級而且高效——由一系列 C 函數和少量 C 類構成&#xff0c;同時提供了Python、Ruby、MATLAB等…

avue多選列表根據后端返回的某個值去判斷是否選中;avue-curd多選回顯

效果如上&#xff1a; getSiteList().then(res > {//列表數據this.siteData res.data.datathis.$nextTick(()>{this.siteData.forEach(item>{//業務條件if(item.configid&&item.configid!0&&item.configid>0){//符合條件時調用選中的方法this.$…

JAVASE---數組的定義與使用

數組的基本概念 什么是數組 數組是具有相同類型元素的集合&#xff0c;在內存中連續存儲。 1. 數組中存放的元素其類型相同 2. 數組的空間是連在一起的 3. 每個空間有自己的編號&#xff0c;起始位置的編號為0&#xff0c;即數組的下標 數組的創建及初始化 數組的創建 T[…

mybatis高級特性

文章目錄 數據庫事務管理批處理插件擴展持久化和ORM緩存機制 數據庫事務管理 通過注解方式&#xff1a; 在需要進行事務管理的方法上添加Transactional注解&#xff0c;該注解可以用于類或方法上。在配置文件中開啟事務管理器&#xff0c;并指定事務管理器的類型和連接池等相關…

Java SpringBoot Vue智能停車系統

基礎環境 JDK1.8、Maven、Mysql、IntelliJ IDEA 內置功能 系統管理&#xff1a;角色管理、接口管理、系統菜單、全局配置 賬號管理&#xff1a;用戶管理、合作單位 系統監控&#xff1a;監控大屏、日志監控 財務管理&#xff1a;訂單列表 停車記錄&#xff1a;停車記錄 車輛管…

Labview選項卡之實現被選擇選項卡工作

文章目錄 前言一、使用選項卡二、實現被選擇選項卡工作1、需求2、分析3、實現①、前面板②、程序框圖 三、效果展示四、源碼自取 前言 有些時候&#xff0c;我們做界面&#xff0c;需要好多個界面切換。如果是同一個 VI 里界面切換&#xff0c;一般都是選項卡了。切換不同選項…

使用phpstorm開發調試thinkphp

1.環境準備 1.開發工具下載&#xff1a;PhpStorm: PHP IDE and Code Editor from JetBrains 2.PHP下載&#xff1a;PHP: Downloads 3. PHP擴展&#xff1a;PECL :: Package search 4.用與調試的xdebug模塊&#xff1a; Xdebug: Downloads xdebug模塊&#xff0c;如果是php8以…

23.8.16日總結

原先寫的評論是每級評論用縮進來區分&#xff0c;所以最多設置的是九級評論&#xff0c;修改了排版和格式&#xff1a; 還有管理員頁面&#xff0c;查看文章時可以進行點贊&#xff0c;收藏的操作&#xff0c;現在進行了修改&#xff0c;將相關操作隱藏。 還有點擊查看未發布…

js如何獲取字符串大小是幾M

js如何獲取字符串大小是幾M 在JavaScript中&#xff0c;可以使用以下方法來獲取字符串的大小&#xff08;以字節為單位&#xff09;&#xff1a; function getStringSizeInBytes(str) {// 使用UTF-8編碼計算字符串的字節長度let totalBytes new Blob([str]).size;// 將字節長…

14-矩陣相乘及其運算法則

矩陣與向量的乘法 在這一篇文章中我們就將基于上一篇重新審視矩陣的這個視點來理解矩陣的乘法&#xff0c;那么在這一篇&#xff0c;我們主要來看一下矩陣和向量的乘法。這里這個線性方程組是上一小節給大家舉的模擬的一個非常簡單的小型經濟系統的例子&#xff0c;我們可以把…

文件的導入與導出

文章目錄 一、需求二、分析1. Excel 表格數據導出2. Excel 表格數據導入一、需求 在我們日常開發中,會有文件的導入導出的需求,如何在 vue 項目中寫導入導出功能呢 二、分析 以 Excel 表格數據導出為例 1. Excel 表格數據導出 調用接口將返回的數據進行 Blob 轉換,附: 接…

logstash日志換行處理小解

logstash主用于日志實時數據收集、解析&#xff0c;并將數據轉發的工具&#xff0c;內置的功能也相當強大。但&#xff0c;同時意味著&#xff0c;他可能接收到各種情況的數據。 此處&#xff0c;我們主要講解我實際使用中&#xff0c;碰到的一個小問題&#xff0c;換行(\n)。…

redis 和 mongodb 比較

Redis和MongoDB是兩種不同類型的數據庫&#xff0c;它們在數據存儲和查詢方式、數據模型以及適用場景等方面有一些明顯的區別。下面是Redis和MongoDB之間的一些比較&#xff1a; 數據模型&#xff1a; Redis&#xff1a;Redis是一個鍵值存儲系統&#xff0c;支持多種數據結構如…

FPGA應用學習筆記--時鐘域的控制 亞穩態的解決

時鐘域就是同一個時鐘的區域&#xff0c;體現在laways語句邊緣觸發語句中&#xff0c;設計規模增大就會導致時鐘不同步&#xff0c;有時差&#xff0c;就要設計多時鐘域。 會經過與門的延時產生的新時鐘域&#xff0c;這種其實不推薦使用&#xff0c;但在ascl里面很常見 在處理…

八大排序超詳解(動圖+源碼)

&#x1f493;博主個人主頁:不是笨小孩&#x1f440; ?專欄分類:數據結構與算法&#x1f440; 刷題專欄&#x1f440; C語言&#x1f440; &#x1f69a;代碼倉庫:笨小孩的代碼庫&#x1f440; ?社區&#xff1a;不是笨小孩&#x1f440; &#x1f339;歡迎大家三連關注&…

虛幻5中Lumen提供哪些功能以及如何工作的

虛幻引擎 5 中的 Lumen 是一個完全動態的全局照明和反射系統。它可以在虛幻引擎 5 中使用&#xff0c;因此創作者無需自行設置。它是為下一代控制臺和建筑可視化等高端可視化而設計的。那么它提供了哪些功能以及如何工作&#xff1f; 全局照明 當光離開光源時&#xff0c;它會…

負載均衡搭建

LVS-DR部署 [客戶端] node1 192.168.157.148 [lvs] node2 192.168.157.142 [web服務器] node3 192.168.157.145 node4 192.168.157.146&#xff08;1&#xff09;[lvs] yum install -y ipvsadm.x86_64 配置LVS負載均衡服務 &#xff08;1&#xff09;手動添加LVS轉發1&#xff…

系統架構設計專業技能 · 軟件工程之軟件測試與維護(六)【系統架構設計師】

系列文章目錄 系統架構設計專業技能 網絡規劃與設計&#xff08;三&#xff09;【系統架構設計師】 系統架構設計專業技能 系統安全分析與設計&#xff08;四&#xff09;【系統架構設計師】 系統架構設計高級技能 軟件架構設計&#xff08;一&#xff09;【系統架構設計師…