Docker Swarm總結(1/3)

目錄

1、swarm 理論基礎

1.1 簡介

1.2?節點架構

1.3 服務架構

1.4 服務部署模式

2、swarm 集群搭建

2.1 需求

?2.2 克隆主機

2.3 啟動5個docker宿主機

2.4?查看 swarm 激活狀態

?2.5?關閉防火墻

2.6?swarm 初始化

2.7?添加 worker 節點

2.8?添加 manager 節點

3、swarm 集群維護

3.1 退出 swarm 集群

3.2 swarm 自動鎖定

3.3?注意事項(重點)

4、 swarm 節點維護

4.1 角色轉換

4.2 節點標簽

4.3 節點刪除

5、 swarm 安全(PKI)

5.1 TLS 安全保障

5.2 CA 數字證書輪換

6 、manager 集群容災

6.1 熱備容災

6.2 容災能力

6.3 容災模擬

7 、service 創建

7.1 創建 service

7.2 查看服務列表

7.3 查看服務詳情

7.4 用戶訪問服務

7.5 查看 task 節點

7.6 查看節點 task

7.7 查看服務日志

7.8 查看節點容器

7.9 負載均衡


1、swarm 理論基礎

1.1 簡介

Docker Swarm 是由 Docker 公司推出的 Docker 的原生集群管理系統,它將一個 Docker
主機池變成了一個單獨的虛擬主機,用戶只需通過簡單的 API 即可實現與 Docker 集群的通
信。Docker Swarm 使用 GO 語言開發。從 Docker 1.12.0 版本開始,Docker Swarm 已經內置于Docker 引擎中,無需再專門的進行安裝配置。


Docker Swarm 在 Docker 官網的地址為:https://docs.docker.com/engine/swarm/

需要注意的是:docker swarm與docker classic swarm是不同的。

1.2?節點架構

(1) 架構圖

官網鏈接地址:How nodes work | Docker Docs

docker主機 、虛擬機、節點之間的關系:docker主機可以認為與虛擬機是等同的,但是docker主機與節點之間是一對多的關系。

(2) swarm node

從物理上講,一個 Swarm 是由若干安裝了 Docker Engine 的物理機或者虛擬機組成,這
些主機上的 Docker Engine 都采用 Swarm 模式運行。


從邏輯上講,一個 Swarm 由若干節點 node 構成,每個 node 最終會落實在一個物理Docker 主機上,但一個物理 Docker 主機并不一定就是一個 node。即 swarm node 與 Docker主機并不是一對一的關系。


swarm node 共有兩種類型:manager 與 worker。

(3) Manager


Manager 節點用于維護 swarm 集群狀態、調試 servcie、處理 swarm 集群管理任務。為
了防止單點故障問題,一個 Swarm 集群一般都會包含多個 manager。這些 manager 間通過
Raft 算法維護著一致性。

(4) Worker

Worker 節點用于在其 Contiainer 中運行 task 任務,即對外提供 service 服務。默認情況
下,manager 節點同時也充當著 worker 角色,可以運行 task 任務。

(5) 角色轉換

manager 節點與 worker 節點角色并不是一成不變的,它們之間是可以相互轉換的。

  • manager 轉變為 worker 稱為節點降級
  • worker 轉變為 manager 稱為節點升級

1.3 服務架構


(1) 架構圖

(2) service

搭建 docker swarm 集群的目的是為了能夠在 swarm 集群中運行應用,為用戶提供具備
更強抗壓能力的服務。docker swarm 中的服務 service 就是一個邏輯概念,表示 swarm 集群對外提供的服務。

(3) task

一個 service 最終是通過任務 task 的形式出現在 swarm 的各個節點中,而每個節點中的
task 又都是通過具體的運行著應用進程的容器對外提供的服務。

(4) 編排器

在 swarm manager 中具有一個編排器,用于管理副本 task 任務的創建與停止。例如,
當在 swarm manager 中定義一個具有 3 個 task 副本任務的 service 時,編排器首先會創建 3個 task,為每個 task 分配一個 taskID,并通過分配器為每個 task 分配一個虛擬 IP,即 VIP。然后再將該 task 注冊到內置的 DNS 中。當 service 的某 task 不可用時,編排器會在 DNS 中注銷該 task。

(5) 分發器

在 swarm manager 中具有一個分發器,用于完成對副本 task 任務的監聽、調度等操作。
在前面的例子中,當編排器創建了 3 個 task 副本任務后,會調用分發器為每個 task 分配節
點。分發器首先會在 swarm 集群的所有節點中找到 3 個 available node 可用節點,每個節點
上分配一個 task。而每個 task 就像是一個“插槽”,分發器會在每個“插槽”中放入一個應
用容器。每個應用容器其實就是一個具體的 task 實例。一旦應用容器運行起來,分發器就
可以監測到其運行狀態,即 task 的運行狀態。


如果容器不可用或被終止,task 也將被終止。此時編排器會立即在內置 DNS 中注銷該
task,然后編排器會再生成一個新的 task,并在 DNS 中進行注冊,然后再調用分發器為之分
配一個新的 available node,然后再該節點上再運行應用容器。編排器始終維護著 3 個 task
副本任務。


分發器除了為 task 分配節點外,還實現了對訪問請求的負載均衡。當有客戶端來訪問
swarm 提供的 service 服務時,該請求會被 manager 處理:根據其內置 DNS,實現訪問的負載均衡。


1.4 服務部署模式

(1) 官方圖

service 以副本任務 task 的形式部署在 swarm 集群節點上。根據 task 數量與節點數量的
關系,常見的 service 部署模式有兩種:replicated 模式與 global 模式。


(2) replicated 模式

replicated 模式,即副本模式,service 的默認部署模式。需要指定 task 的數量。當需要
的副本任務 task 數量不等于 swarm 集群的節點數量時,就需要使用 replicated 模式。manager中的分發器會找到指定 task 個數的 available node 可用節點,然后為這些節點中的每個節點分配一個或若干個 task。

(3) global 模式

global 模式,即全局模式。分發器會為每個 swarm 集群節點分配一個 task,不能指定 task
的數量。swarm 集群每增加一個節點,編排器就會創建一個 task,并通過分發器分配到新的
節點上。


2、swarm 集群搭建


2.1 需求


現要搭建一個 docker swarm 集群,包含 5 個 swarm 節點。這 5 個 swarm 節點的 IP 與暫
時的角色分配如下(注意,是暫時的):

hostnameIProle
docker01192.168.162.201manager
docker02192.168.162.202manager
docker03192.168.162.203manager
docker04192.168.162.204worker
docker05192.168.162.205worker

2.2 克隆主機

克隆兩臺前面 docker 主機,這兩臺主機名分別為 docker2、docker3、docker4 與 docker5。
克隆完畢后修改如下配置文件:

  • 修改主機名:/etc/hostname
  • 修改網絡配置:/etc/sysconfig/network-scripts/ifcfg-ens33
vi?/etc/hostname #修改主機名vi?/etc/sysconfig/network-scripts/ifcfg-ens33  修改網絡配置

2.3 啟動5個docker宿主機

systemctl start docker

2.4?查看 swarm 激活狀態

在任意 docker 主機上通過 docker info 命令可以查看到當前 docker 引擎 Server 端對于
swarm 的激活狀態。由于尚未初始化 swarm 集群,所以這些 docker 主機間沒有任何關系,

docker info

?2.5?關閉防火墻


# 查看防火墻狀態
systemctl status firewalld# 停止防火墻
systemctl stop firewalld# 永久關閉
systemctl disable firewalld

2.6?swarm 初始化

在主機名為“docker01”的主機上運行 docker swarm init 命令,創建并初始化一個 swarm。

 docker swarm init


?

2.7?添加 worker 節點

復制 docker swarm init 命令的響應結果中添加 worker 節點的命令在 docker4 與 docker5
節點上運行,將這兩個節點添加為 worker 節點。(docker04和docker05)

2.8?添加 manager 節點


(1) 獲取添加命令
若要為 swarm 集群添加 manager 節點,需要首先在 namager 節點獲取添加命令。

docker swarm join-token manager

(2) 添加節點
復制 docker swarm join-token 命令生成的 manager 添加命令,然后在 docker2 與 docker3
節點上運行,將這兩個節點添加為 manager 節點。(docker02和docker03)

(3) 查看 swarm 節點
在 manager 節點 docker、docker2、docker3 上通過 docker node ls 命令可以查看到當前
集群所包含的節點狀態數據。

 docker node ls

但在 worker 節點上是不能運行 docker node ls 命令的。

3、swarm 集群維護


3.1 退出 swarm 集群

當一個節點想從 swarm 集群中退出時,可以通過 docker swarm leave 命令。不過 worker
節點與 manager 節點的退群方式是不同的。
(1) worker 退群
對于 worker 節點退群,直接運行 docker swarm leave 命令即可。(docker05)

docker swarm leave 

此時在 manager 節點中查看節點情況,可以看到 docker5 已經 Down 了。
?

(2) worker 重新加入
首先在 manager 節點上運行 docker swarm join-token worker 命令,生成加入 worker 節點
的命令。

docker swarm join-token worker

復制生成的命令,在 docker05 節點上運行,將此節點添加到 swarm 集群。

(3) 查看節點情況 (docker01)
此時在 manager 節點中查看節點情況,可以看到原來的 docker5 依然是 Down,但又新
增了一個新的 docker5 節點,其狀態為 Ready。

docker node ls

此時在 manager 節點通過 docker info 命令可以查看到節點數量變為了 6 個,這增加的
一個就是兩種狀態的 docker5。

(4) 刪除 Down 狀態節點
對于Down狀態的節點是完全可以將其刪除的。通過在manager節點運行docker node rm
命令完成。

docker node rm ID

(5) manager 退群
對于 manager 節點,原則上是不推薦直接退群的,這樣會導致 swarm 集群的一致性受
到損壞。如果 manager 執意要退群,可在 docker swarm leave 命令后添加-f 或--force 選項進
行強制退群。

3.2 swarm 自動鎖定


(1) swarm 集群自動鎖定原理

在 manager 集群中,swarm 通過 Raft 日志方式維護了 manager 集群中數據的一致性。
即在 manager 集群中每個節點通過 manager 間通信方式維護著自己的 Raft 日志。
但在通信過程中存在有一種風險:Raft 日志攻擊者會通過 Raft 日志數據的傳遞來訪問、
篡改 manager 節點中的配置或數據。為了防止被攻擊,swarm 開啟了一種集群自動鎖定功能,為 manager 間的通信啟用了 TLS 加密。用于加密和解密的公鑰與私鑰,全部都維護在各個節點的 Docker 內存中。一旦節點的 Docker 重啟,則密鑰丟失


swarm 中通過 autolock 標志來設置集群的自動鎖定功能:為 true 則開啟自動鎖定,為
false 則關閉自動鎖定。

docker info


(2) 設置自動鎖定

在 manager 節點通過 docker swarm update –autolock=true 命令可以開啟當前 swarm 集群
的自動鎖定功能。

docker swarm update --autolock=true

此時查看 manager 的 docker info 可以看到,autolock 已經為 true 了。

docker info

(3) 查看解鎖密鑰

如果沒有保存 docker swarm update --autolock=true 命令中生成的密鑰,也可通過在
manager 中運行 docker swarm unlock-key 命令查看。

 docker swarm unlock-key 

(4) 關閉一個 manager

直接關閉 docker3 的 docker 引擎,模擬一個 manager 宕機的情況。

systemctl stop docker

(5) 加入 manager

啟動 docker3 的 docker 引擎。

systemctl start docker

此時再查看該節點的 docker info,可以看到 Swarm 值為 locked,即當前節點看到的 Swarm
集群的狀態為鎖定狀態,其若要加入,必須先解鎖。

docker info

在 docker3 中運行 docker swarm unlock 命令,解鎖 swarm。

docker swarm unlock

此時再查看節點信息,該 manager 已經加入。

3.3?注意事項(重點)

swarm自動鎖定,一般鎖定的是mananger節點;manager節點一旦設置開啟了自動鎖定功能,manager節點中的至少保證一臺主機啟動狀態,否則,如果所有manager節點主機都宕機了,那么這個swarm集群也就不復存在了!!!

4、 swarm 節點維護


4.1 角色轉換

Swarm 集群中節點的角色只有 manager 與 worker,所以其角色也只是在 manager 與worker 間的轉換。即 worker 升級為 manager,或 manager 降級為 worker。

(1) worker 升級為 manager

通過 docker node promote 命令可以將 worker 升級為 manager。例如,下面的命令是將
docker4 與 docker5 兩個節點升級為了 manager,即當前集群中全部為 manager。

docker node promote wmq8o6m1mes2c6xknzfhgr8yb

(2) manager 降級為 worker

通過 docker node demote 命令可以將 manager 降級為 worker。例如,下面的命令是將
docker2 與 docker3 兩個節點降級為了 worker

docker node demote 8dtmsmtpg1dlwcn43dj1sk92qdocker node demote x8yitf9zuad9r0g7kmxp6i74g

(3) docker node update 變更角色

除了通過 docker node demote|promote 可以變更節點角色外,通過 docker node update?
--role [manager|worker] [node]也可變更指定節點的角色。

以下命令將 docker2 與 docker3 兩個節點又變為了 manager。
?

docker node update --role manager docker02docker node update --role manager docker03

以下命令將 docker4 與 docker5 兩個節點又變為了 worker。

docker node update --role worker docker04docker node update --role worker docker05

4.2 節點標簽

swarm 可以通過命令為其節點添加描述性標簽,以方便管理員去了解該節點的更多信息。

(1) 添加/修改節點標簽

通過 docker node update --label-add 命令可以為指定 node 添加指定的 key=value 的標簽。
若該標簽的 key 已經存在,則會使用新的 value 替換掉該 key 的原 value。不過需要注意的是,若要添加或修改多個標簽,則需要通過多個--label-add 選項指定。

 docker node update --label-add auth=tiger --label-add email=tigerhhzz@163.com docker02

通過 docker node inspect 在查看該節點詳情時可看到添加的標簽。

docker node inspect docker02

docker node inspect --pretty 可以 key:value 的形式顯示信息。

docker node inspect --pretty docker02

(2) 刪除節點標簽

通過 docker node update --label-rm 命令可以為指定的 node 刪除指定 key 的標簽。同樣,
若要刪除多個標簽,則需要通過多個--label-rm 選項指定要刪除 key 的標簽。

docker node update --label-rm auth --label-rm email docker02

查看節點詳情,發現這兩個標簽已經消失。

4.3 節點刪除

manager 節點通過 docker node rm 命令可以刪除一個 Down 狀態的、指定的 worker 節點。
注意,該命令只能刪除 worker 節點,不能刪除 manager 節點。


(1) 有問題的刪除


對于 Ready 狀態的 worker 節點是無法直接刪除的。

docker node rm rq3ea29miho50jf0wxc9nmdo9

對于 manager 節點也是無法刪除的。

(2) 正確的刪除


若要刪除一個 worker 節點,首先要將該節點的 Docker 關閉,使該節點變為 Down 狀態,
然后再進行刪除。
關閉 docker2 節點的 Docker 引擎:

刪除節點:

(3) 強制刪除
前面的刪除方式有些麻煩,其實也可以通過添加-f 選項來實現強制刪除。

但對于 manager 節點,強制刪除也不能刪除。

docker node rm –f 命令會使一個節點強制退群,而 docker swarm leave 命令是使當前的
docker 主機關閉 swarm 模式。

5、 swarm 安全(PKI)

Docker 內置了 PKI(public key infrastructure,公鑰基礎設施),使得保障發布容器化的業
務流程系統的安全性變得很簡單。


5.1 TLS 安全保障

Swarm 節點之間采用 TLS 來鑒權、授權和加密通信。

具體來說是,當運行 docker swarm init 命令時,Docker 指定當前節點為一個 manager
節點。默認情況下,manager 節點會生成一個新的 swarm 的 CA 根證書以及一對密鑰。同時,manager 節點還會生成兩個 token,一個用于添加 worker 節點,一個用于添加 manager 節點。每個 token 包含上了 CA 根證書的 digest 和一個隨機密鑰。CA 根證書、一對密鑰和隨機密鑰都將會被用在節點之間的通信上。


當有節點加入 Swarm 時,需要復制 manager 中相應的 docker swarm join 加入命令,并
在該節點中運行。而這個過程主要是通過隨機密鑰這種對稱驗證方式保障通信安全的。

一旦節點加入了 Swarm 集群,那么它們間的通信全部都是通過 TLS 加密方式進行的。
首先是通過 CA 證書對通信對方的身份進行驗證,在驗證通過后再進行數據通信。而通信的
數據則是通過隨機密鑰加密過的。


5.2 CA 數字證書輪換


(1) 輪換周期

Swarm 的 CA 數字證書也是有可能被攻擊、篡改的。為了保證 swarm 的數字證書的安全
性,Swarm 提供了 CA 數字證書輪換機制,定期更換 CA 數字證書。默認 swarm 的 CA 數字
證書 90 天輪換一次。


(2) 指定證書

那么,用于輪換的新的 CA 數字證書來自于哪里呢?通過 docker swarm ca 命令可以指定外部 CA 數字證書,或生成新的 CA 數字證書。無論哪種數字證書變更方式,都需要 CA 根證
書的加密/解密。而根證書也是會發生變化的,具體見“輪轉過程”。


(3) 輪轉過程

當 manager 運行了 docker swarm ca --rotate 命令后,會按順序發生下面的事情:

  • Docker 會生成一個交叉簽名(cross-signed)根證書,即新根證書是由舊的根證書簽署

生成的,這個交叉簽名根證書將作為一個過渡性的根證書。這是為了確保節點仍然能夠
信任舊的根證書,也能使用新的根證書驗證簽名。

  • 在 Docker 17.06 或者更高版本中,Docker 會通知所有節點立即更新根證書。根據 swarm

中節點數量多少,這個過程可能會花費幾分鐘時間。

  • 在所有的節點都更新了新 CA 根證書后,manager 會通知所有節點僅信任新的根證書,

不再信任舊根證書及交叉簽名根證書。

  • 所有節點使用新根證書簽發自己的數字證書。

如果直接使用外部的 CA 根證書,那么就不存在交叉簽名根證書的生成過程,直接由運
行docker swarm ca命令的節點通知所有節點立即更新根證書。后續過程與前面的就相同了。


6 、manager 集群容災


6.1 熱備容災

Swarm 的 manager 節點集群采用的是熱備方式來提升集群的容災能力。即在 manager集群中只有一個處于 leader 狀態,用于完成 swarm 節點的管理,其余 manager 處于熱備狀
態。當 manager leader 宕機,其余 manager 就會自動發起 leader 選舉,重新選舉產生一個新的 manager leader。


6.2 容災能力

manager 集群的 leader 選舉采用的是 Raft 算法。Raft 算法是一種比較復雜的一致性算法,
具體見后面“Raft 算法”。其選舉 leader 的簡單思路是,所有可用的 manager 全部具有選舉
權與被選舉權。最終獲得過半選票的 manager 當選新的 leader。為了保證一次性可以選舉出
新的leader,官方推薦使用奇數個manager。但并不是說偶數個manager就無法選舉出leader。

6.3 容災模擬

目前是 docker01、docker02、docker03 三個 manager,其中 docker01 為 leader。

現在關閉 docker 主機的 docker daemon,模擬其宕機。

然后在 docker2 或 docker3 主機上查看當前的節點情況,可以看到 docker2 或 docker3
已經成為了新的 leader。

此時如果再使某個 manager 宕機,例如使 docker2 的 docker daemon 關閉,那么整個
swarm 就會癱瘓。因為剩下的 manager 已經無法達成過半的選票,無法選舉出新的 leader。

7 、service 創建

注意,service 只能依附于 docker swarm 集群,所以 service 的創建前提是,swarm 集群
搭建完畢。


7.1 創建 service

docker service create 命令用于創建 service,需要在 manager 中運行。其與創建容器的命
令 docker run 非常類似,具有類似的選項。
目前的節點狀態如下:

現在要在 swarm 中創建一個運行 tomcat:8.5.49 鏡像的 service,服務名稱為 toms,包含
3 個副本 task,對外映射端口號為 9000。

docker service create --name tomcats --replicas 3 -p 9000:8080 tomcat:8.5.49

7.2 查看服務列表

docker service ls 命令用于查看當前 swarm 集群中正在運行的 service 列表信息。一個
swarm 中可以運行多個 service。

docker service ls 

7.3 查看服務詳情

通過 docker service inspect [service name|service ID]命令可以查看指定 service 的詳情。

docker service inspect tomcates

7.4 用戶訪問服務

當服務創建完畢后,該服務也就運行了起來。此時用戶就可通過瀏覽器進行訪問了。用
戶可以訪問 swarm 集群中任意主機。

訪問 manager:

訪問 worker:

7.5 查看 task 節點

docker service ps [service name|service ID]命令可以查看指定服務的各個 task 所分配的節
點信息。

docker service ps tomcates

可以看到,toms 服務的 3 個 task 被分配到了 docker01、docker04、docker05 三個主機。其中 ID 為 task ID,NAME 為 task 的 name。task name 是 service name 后添加從 1 開始的流水號形成的。


7.6 查看節點 task

通過 docker node ps [node]可以查看指定節點中運行的 task 的信息。默認查看的是當前
節點的 task 信息。

 docker node ps docker05

7.7 查看服務日志

通過 docker service logs 命令可以查看指定 service 或 task 的日志。通過 docker service logs?–f 命令可動態監聽指定 service 或 task 的日志。


(1) 查看 service 日志

通過 docker service logs [service name|service ID]命令可以查看指定 service 的日志。這些
日志實際是所有 task 在節點容器中的運行日志。

docker service logs tomcates

(2) 查看 task 日志

通過 docker service logs [task ID]命令可以查看指定 task 的日志。注意,這里只能指定
taskID,不能指定 task name。這些日志實際是指定 task 在節點容器中的運行日志。

docker service logs ID

7.8 查看節點容器

在 docker01、docker04、docker05 三個主機中查看正在運行的容器列表,可以看到相應的
tomcat 容器。

容器的 NAME 是由 task name 后添加 task ID 形成的。
不過,在 docker02、docker03 主機中是沒有該服務的 task 容器的。

7.9 負載均衡

當一個 service 包含多個 task 時,用戶對 service 的訪問最終會通過負載均衡方式轉發給
各個 task 處理。這個負載均衡為輪詢策略,且無法通過修改 service 的屬性方式進行變更。

但由于該負載均衡為三層負載均衡,所以其可以通過第三方實現負載均衡策略的變更,例如
通過 Nginx、HAProxy 等。

(1) 創建 service

為了能夠展示出 service 對訪問請求負載均衡的處理方式,這里使用一個鏡像tomocate。該鏡像中應用端口號為9001,通過瀏覽器訪問,返回結果中包含很多信息,其中最重要的是處理該請求的容器 ID。為了提高 service 的創建效率,可以先將該鏡像
下載到所有節點主機。

下面的命令用于創建該鏡像的一個 service,包含 5個副本 task。

docker service create --name web --replicas 5 -p 8181:80 containous/whoami

(2) 記錄容器 ID
可以看到,每個節點上都分配了一個 task,即每個節點上都運行了一個該 task 的容器。

docker service lsdocker service ps web

訪問其中一個主機:

為了體現負載均衡的效果,這里需要將各個節點主機中該 service 的 task 容器的 ID 查詢
并記錄下來。

(3) 訪問

在任意主機上使用curl命令訪問swarm集群中的任意節點,無論是manager還是worker,
快速訪問后,在返回結果中的 Hostname 值就是處理該請求的容器的 ID,第 2 個 IP 為該節點在 Swarm 集群局域網中的 IP。


從結果可以看出,這些請求被輪詢分配給了各個 task 容器進行的處理,實現了 service
對訪問請求的負載均衡。

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

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

相關文章

Mybatis-Plus3.0默認主鍵策略導致自動生成19位長度主鍵id的坑

碼字不易,如果對您有用,求各位看官點贊關注~ 原創/朱季謙 目前的Mybatis-Plus版本是3.0,至于最新版本是否已經沒有這個問題,后續再考慮研究。 某天檢查一位離職同事寫的代碼,發現其對應表雖然設置了AUTO_INCREMENT自…

7.1 Windows驅動開發:內核監控進程與線程回調

在前面的文章中LyShark一直在重復的實現對系統底層模塊的枚舉,今天我們將展開一個新的話題,內核監控,我們以監控進程線程創建為例,在Win10系統中監控進程與線程可以使用微軟提供給我們的兩個新函數來實現,此類函數的原…

H3C路由器基本配置命令

1、system-view 進入系統視圖 2、sysname R1 配置路由器名字為R1 3、display clock 查看當前系統時間 4、clock datetime 00:00:00 2/26/2023 用戶模式下修改系統時間 配置控制臺密碼 Console: 1、user-interface aux0 在系統模式下進入圖接口 2、authentication-mo…

2023亞太賽c題完整思路數據 數學建模亞太

Question 1: Analyze the main factors that affect the development of new energy electric vehicles in China, establish a mathematical model, and describe the impact of these factors on the development of new energy electric vehicles in China. 問題1:分析影響…

office 365企業版安裝教程

1.下載所需工具(防火墻和防毒軟件記得關閉) 下載鏈接:所需文件 2.安裝激活office 1.安裝 office tool plus 2.已安裝過office 先進行office的移除,再進行未安裝office的步驟進行 3.未安裝過office 1.設置部署 按照以下來進行安…

Linux命令(130)之hwclock

linux命令之hwclock 1.hwclock介紹 linux命令hwclock是用來顯示硬件時鐘 2.hwclock用法 hwclock [參數] hwclock參數 參數說明-s讓系統時間同步硬件時間-w讓硬件時間同步系統時間 3.實例 3.1.同步服務器時鐘時間 命令: ntpdate pool.ntp.org [rootrhel77 ~…

【vin 國標正則校驗】

規則一 var checkVINfunction(VIN){if(typeof(VIN)!string) return false;if(VIN.length!17) return false;VINVIN.toUpperCase();RE/^[A-HJ-NPR-Z\d]{8}[X\d][A-HJ-NPR-Z\d]{3}\d{5}$/if(!RE.test(VIN)) return false;let cOT{0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:1,B…

360:流氓or保家衛國的勇士?

你曾用過360嗎,這個在國內名聲不好的殺毒軟件,卻是令國外黑客聞風喪膽的存在。 首先,在電腦病毒剛興起的年代,殺毒軟件是要收費的,當時盛行的瑞星和金山就是采用的付費模式,而就在2006年,奇虎…

C/C++通過位操作實現2個uint32_t合并為uint64_t

#include <iostream> using namespace std;int main() {uint32_t a 10;uint32_t b 600;//先將uint32_t的a轉為uint64_t&#xff0c;此時a前面32位都是0&#xff0c;然后左移32位&#xff0c;此時右32位為0&#xff0c;最后加上uint32_t類型的b&#xff0c;填充右32位的…

解決Activiti5.22流程圖部署在Windows上正常,但在linux上部署后出現中文變方塊的問題

總結/朱季謙 樓主最近在做公司的工作流平臺&#xff0c;發現一個很無語的事情&#xff0c;Activiti5.22的流程圖在Windows環境上部署&#xff0c;是可以正常查看的&#xff0c;但發布到公司的Linux服務器上后&#xff0c;在上面進行流程圖在線部署時&#xff0c;發現中文都變成…

2023亞太杯數學建模C題思路代碼 - 我國新能源電動汽車的發展趨勢

1 賽題 問題C 我國新能源電動汽車的發展趨勢 新能源汽車是指以先進技術原理、新技術、新結構的非常規汽車燃料為動力來源( 非常規汽車燃料指汽油、柴油以外的燃料&#xff09;&#xff0c;將先進技術進行汽車動力控制和驅動相結 合的汽車。新能源汽車主要包括四種類型&#x…

一套開源、強大且美觀的WPF UI控件庫 - HandyControl

前言 今天給大家推薦一套開源、強大且美觀的WPF UI控件庫&#xff1a;HandyControl。 WPF介紹 WPF 是一個強大的桌面應用程序框架&#xff0c;用于構建具有豐富用戶界面的 Windows 應用。它提供了靈活的布局、數據綁定、樣式和模板、動畫效果等功能&#xff0c;讓開發者可以創…

關于Redis底層的兩個問題

1. 為什么Redis不共享包含字符串的對象&#xff1f; 當服務器考慮將一個共享對象設置為鍵的值對象時&#xff0c;程序首先需要檢查給定的共享對象和鍵想要創建的目標對象是否完全相同&#xff0c;只有在共享對象和目標對象完全相同的情況下&#xff0c;程序才會將共享對象用作…

SOEM主站開發篇(3):為APP程序添加命令

0 工具準備 1.SOEM-1.4.0源碼(官網:http://openethercatsociety.github.io/) 2.Linux開發板(本文為正點原子I.MX6U ALPHA開發板) 3.交叉編譯工具(arm-linux-gnueabihf-gcc) 4.cmake(版本不得低于3.9,本文為3.9.2) 5.Ubuntu 16.04(用于編譯生成Linux開發板的可執行文…

【追求卓越06】算法--遞歸

引導 遞歸算法算是我們比較常用的一種算法。但是想用好并不簡單。本章我不再介紹簡單的概念&#xff0c;主要講解遞歸算法的優缺點和如何用遞歸寫代碼。 個人愛好 其實相對于使用while循環&#xff0c;我更喜歡使用遞歸算法。為什么呢&#xff1f; 使用遞歸算法代碼往往會變…

Java語言中的控制流程

控制流程是編程中的重要概念之一&#xff0c;它允許程序根據條件執行不同的代碼塊或重復執行特定的代碼塊。在Java中&#xff0c;控制流程由條件語句和循環語句組成。本文將詳細介紹Java中的條件語句&#xff08;if語句和switch語句&#xff09;和循環語句&#xff08;for循環、…

MySQL用戶與權限管理

快捷查看指令 ctrlf 進行搜索會直接定位到需要的知識點和命令講解&#xff08;如有不正確的地方歡迎各位小伙伴在評論區提意見&#xff0c;博主會及時修改&#xff09; MySQL用戶與權限管理 登錄 #本地登錄 mysql -uroot -p123456#遠程登錄 #客戶端語法&#xff1a;mysql -…

聚觀早報 |快手Q3營收;拼多多殺入大模型;Redmi K70E開啟預約

【聚觀365】11月23日消息 快手Q3營收 拼多多殺入大模型 Redmi K70E開啟預約 華為nova 12系列或下周發布 亞馬遜啟動“AI就緒”新計劃 快手Q3營收 財報顯示&#xff0c;快手第三季度營收279億元&#xff0c;同比增長20.8%&#xff1b;期內盈利21.8億元&#xff0c;去年同期…

貓罐頭多久喂一次?好用的貓罐頭牌子推薦

貓愛吃貓罐頭&#xff0c;包含各種美味&#xff0c;提供營養和口感。但喂貓吃罐頭需技巧和耐心&#xff0c;以確保貓健康快樂成長。 作為一個從業寵物營養師7年的人&#xff0c;可以說對于貓咪的食物很有研究和貓罐頭品牌選購上&#xff0c;我有自己的見解。 一、貓罐頭多久喂…

shell之wc命令

shell之wc命令 Linux中的wc命令是一個用于統計給定文件中的字節數、字數和行數的工具。它也可以從標準輸入讀取數據并統計。 wc命令的語法為&#xff1a; wc [選項] 文件... 如果沒有給出文件名&#xff0c;則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。wc命令的選…