Docker 使用基礎(3)—容器

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??🎬慕斯主頁修仙—別有洞天

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???今日夜電波:秒針を噛む—ずっと真夜中でいいのに。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 0:34━━━━━━?💟──────── 4:20
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 🔄 ? ?? ? ? ? ?? ? ????

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?💗關注👍點贊🙌收藏您的每一次鼓勵都是對我莫大的支持😍


目錄

首先理解幾個概念

Docker容器(Container )是什么?

為什么需要容器?

容器的生命周期

容器的命令詳解

1. docker create

2. docker logs

3. docker attach

4. docker exec

5. docker start

6. docker stop

7. docker restart

8. docker kill

9. docker top

10. docker stats

11. docker container inspect

12. docker port

13. docker cp

14. docker diff

15. docker commit

16. docker pause

17. docker unpause

18. docker rm

19. docker export

20. docker wait

21. docker rename

22. docker container prune

23. docker update

容器批量處理技巧

容器自動重啟

一些常見的問題

docker create、 docker start 和 docker run 有什么區別?

docker import 和 docker load 有什么區別?

docker rm & docker rmi & docker prune 的差異?


首先理解幾個概念

Docker容器(Container )是什么?

????????通俗地講,容器是鏡像的運行實體。鏡像是靜態的只讀文件,而容器帶有運行時需要的可寫文件層,并且容器中的進程屬于運行狀態。即容器運行著真正的應用進程。容器有初建、運行、停止、暫停和刪除五種狀態。

????????雖然容器的本質是主機上運行的一個進程,但是容器有自己獨立的命名空間隔離和資源限制。也就是說,在容器內部,無法看到主機上的進程、環境變量、網絡等信息,這是容器與直接運行在主機上進程的本質區別。

????????容器是基于鏡像創建的可運行實例,并且單獨存在,一個鏡像可以創建出多個容器。運行容器化環境時,實際上是在容器內部創建該文件系統的讀寫副本。 這將添加一個容器層,該層允許修改鏡像的整個副本。

????????我們可以理解鏡像為Java 或者 C++的基礎類,容器是實例化出來的一個個對象,沒有用戶需要的不一樣,里面的內容也就不一樣了。

?

下面看看官方給出的Docker 架構,可以結合此圖來理解容器的概念:

?

為什么需要容器?

????????鏡像是靜態的文件,并不能提供服務,就像我拿了個 Linux 或者 Windows 的光盤一樣,只有安裝到主機里面運行起來才能對外提供服務,我們才能使用。容器帶來哪些收益呢,參考我們之前講解的為什么要虛擬化、容器化。

容器的生命周期

容器的生命周期是容器可能處于的狀態。

  1. created:初建狀態
  2. running:運行狀態
  3. stopped:停止狀態
  4. paused: 暫停狀態
  5. deleted:刪除狀態

各生命周期之間的轉換關系如圖所示:

?

一些特別說明:

????????killed by out-of-memory(因內存不足被終止):宿主機內存被耗盡,也被稱為 OOM:非計劃終止 這時需要殺死最吃內存的容器

container process exitde(異常終止):出現容器被終止后,將進入 Should restart?

選擇操作:

? yes 需要重啟,容器執行 start 命令,轉為運行狀態。

? no 不需要重啟,容器轉為停止狀態。

????????容器 OOM :Docker 在處理 OOM 事件時分為三種情況(1)如果容器中的應用耗盡了主機系統分配給容器的內存限額,就會觸發 OOM 事件。例如,在容器當中,部署了一個 web 服務。假設主機分配給此容器的內存上限為 1G,當腳本申請的內存大于 1G 時,此容器就會觸發 OOM 事件。而在這種情況下,此容器將會被強制關閉。但需要注意的是,此時關閉容器的并非是 Docker Daemon,而是宿主機操作系統。因為一個容器其實就是一組運行在宿主機操作系統當中的進程,宿主機操作系統通過cgroups 對這組進程設定資源上限,當這些進程申請的資源到達上限時,觸發的是宿主機操作系統的內核 OOM 事件,因此最終是由宿主機內核來關閉這些進程.(2) 如果用戶不想關閉這個容器,那么可以選擇--oom-kill-disable 來禁用 OOM-Killer。使用此參數時,仍需要注意,如果使用-m 設置了此容器內存上限,那么當容器到達內存資源上限時,主機不會關閉容器,但也不會繼續向此容器繼續分配資源,此時容器將處于 hung 狀態。只需要將最壞的情況封閉在一定范圍之內,而不至于蔓延出去。(3)如果用戶使用了--oom-kill-disable,但也沒有使用-m 來設定上限,因而此時此容器將會盡可能多地使用主機內存資源。換言之,主機內存有多大,它就將用多大。

????????容器異常退出 :每個容器內部都存在一個 Init 進程,容器中其他所有進程都是此進程的子進程。運行的容器是因為 Init 進程在運行,如果一個子進程因為某種原因造成了退出,那么其父進程也會同步退出,直至 Init 進程也退出。當 Init 進程退出時,也就代表著此容器被關閉。 ocker 目前沒有辦法知道此時的進程退出屬于正常退出還是異常退出。當出現容器關閉情況時, Docker Daemon 會嘗試再次重新將此容器由 Stopped 狀態轉為 Running狀態。只有設置了--restart 參數的容器, Docker Daemon 才會去嘗試啟動,否則容器會保持停止狀態。
容器暫停 :Docker“剝奪”了此容器的 CPU 資源。而其他資源,如 Memory 資源、 Network 資源等還保留未動。如此一來,失去了 CPU 資源的進程,是不會被主機內核系統所調度的,所以此容器就處于“冰封”狀態。

?

容器的命令詳解

前面的文章已近對run、ps講述過了,這里不多介紹。

Docker 的一系列命令提供了對容器生命周期的全面控制,下面是對這些命令的詳細解析:

1. docker create

用途:創建一個容器但不立即啟動它。
語法

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

關鍵參數
○ -i: 以交互模式運行容器,通常與 -t 同時使用;
○ -P: 隨機端口映射,容器內部端口隨機映射到主機的端口
○ -p: 指定端口映射,格式為: 主機(宿主)端口:容器端口
○ -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
○ --name="nginx-lb": 為容器指定一個名稱;
○ -h "mars": 指定容器的 hostname;
○ -e username="ritchie": 設置環境變量;
○ --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 綁定容器到指定 CPU 運行;
○ -m :設置容器使用內存最大值;
○ --network="bridge": 指定容器的網絡連接類型;
○ --link=[]: 添加鏈接到另一個容器;
○ --volume , -v: 綁定一個卷
○ --rm :shell 退出的時候自動刪除容器

?

2. docker logs

用途:獲取容器的日志輸出。
語法

docker logs [OPTIONS] CONTAINER

關鍵參數

  • -f--follow:跟隨日志輸出。
  • --since:顯示自從某個時間點后的日志。
  • --until:顯示直到某個時間點的日志。
  • --tail -n:顯示最近 N 行日志。
  • -t,--timestamps :顯示時間戳 。

?

3. docker attach

用途:將標準輸入、輸出和錯誤流連接到一個正在運行的容器。
語法

docker attach [OPTIONS] CONTAINER

關鍵參數

  • --sig-proxy=true|false:是否代理信號。

?

如若不使用上述選項,attach后ctrl+c會導致容器退出,如下:

?

?

4. docker exec

用途:在運行中的容器中執行命令。
語法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

關鍵參數

  • -i :即使沒有附加也保持 STDIN 打開
  • -u--user:設置用戶 ID 或用戶名。
  • -w,--workdir:指定工作目錄
  • -e :設置環境變量
  • -t :分配一個偽終端
  • -d :分離模式: 在后臺運行

?

5. docker start

用途:啟動一個已創建但未運行的容器。
語法

docker start [OPTIONS] CONTAINER [CONTAINER...]

關鍵參數

  • --attach:連接到容器的標準輸入/輸出/錯誤

?

6. docker stop

用途:停止一個正在運行的容器。
語法

docker stop [OPTIONS] CONTAINER [CONTAINER...]

關鍵參數

  • --time-t:等待容器停止的秒數。

?

7. docker restart

用途:重啟容器。
語法

docker restart [OPTIONS] CONTAINER [CONTAINER...]

關鍵參數

  • --time-t:等待容器停止的秒數。

?

8. docker kill

用途:強制停止一個正在運行的容器。
語法

docker kill [OPTIONS] CONTAINER [CONTAINER...]

關鍵參數

  • SIGNAL:發送的信號,默認為 SIGKILL。

?

9. docker top

用途:顯示容器內運行的進程。
語法

docker top CONTAINER

無需參數。

?

10. docker stats

用途:顯示容器的資源使用情況。
語法

docker stats [OPTIONS] [CONTAINER...]

關鍵參數

  • -a--all:顯示所有容器的統計信息。
  • --format :指定返回值的模板文件。如 table,json
  • --no-stream :展示當前狀態就直接退出了,不再實時更新。
  • --no-trunc :不截斷輸出

返回報文

CONTAINER ID 與 NAME: 容器 ID 與名稱。

CPU % 與 MEM %: 容器使用的 CPU 和內存的百分比。

MEM USAGE / LIMIT: 容器正在使用的總內存,以及允許使用的內存總量。

NET I/O: 容器通過其網絡接口發送和接收的數據量。

BLOCK I/O: 容器從主機上的塊設備讀取和寫入的數據量。

PIDs: 容器創建的進程或線程數。

如下為:docker stats --format json

?

?

11. docker container inspect

用途:顯示容器的詳細信息。
語法

docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

關鍵參數

○ -f :指定返回值的模板文件。如 table、 json

○ -s :顯示總的文件大小

?

12. docker port

用途:顯示容器的端口映射。
語法

docker port CONTAINER PRIVATE_PORT[/PROTO]

無需參數。

?

13. docker cp

用途:在容器和本地文件系統之間復制文件或目錄。
語法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

關鍵參數

  • -L:保持符號鏈接。

樣例

#將主機/www/目錄拷貝到容器 mynginx 的/www 目錄下。
docker cp /www/ mynginx:/www/ 
#將容器/www/目錄拷貝到主機的/wwwbak 目錄下。
docker cp mynginx:/www/ /wwwbak/

14. docker diff

用途:顯示容器文件系統的更改。
語法

docker diff CONTAINER

無需參數。

?

15. docker commit

用途:將容器的更改提交為新的鏡像。
語法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

關鍵參數

  • -m--message:提交的信息。
  • -a--author:作者信息。
  • -c :使用 Dockerfile 指令來創建鏡像;可以修改啟動指令
  • -p :在 commit 時,將容器暫停。

?

?

16. docker pause

用途:暫停容器的所有進程。
語法

docker pause [OPTIONS] CONTAINER [CONTAINER...]

無需參數。

?

17. docker unpause

用途:恢復已暫停的容器。
語法

docker unpause [OPTIONS] CONTAINER [CONTAINER...]

無需參數。

?

18. docker rm

用途:刪除一個或多個容器。
語法

docker rm [OPTIONS] CONTAINER [CONTAINER...]

關鍵參數

  • -f--force:強制刪除運行中的容器。

?

19. docker export

用途:將容器的內容導出為 tar 歸檔。
語法

docker export CONTAINER > archive.tar

關鍵參數

  • -o:寫入到文件

?

20. docker wait

用途:阻塞直到容器停止,然后返回退出代碼。
語法

docker wait [OPTIONS] CONTAINER

無需參數。

?

21. docker rename

用途:重命名一個容器。
語法

docker rename CONTAINER NEW_NAME

無需參數。

?

22. docker container prune

用途:刪除所有已停止的容器。
語法

docker container prune [OPTIONS]

關鍵參數

  • -f, --force:不提示是否進行確認

?

23. docker update

用途:更新容器的資源限制。
語法

docker update [OPTIONS] CONTAINER [CONTAINER...]

關鍵參數

  • --memory:設置容器的內存限制。
  • --cpus:設置容器的 CPU 份額。
  • --cpuset-cpus :使用哪些 cpu。
  • --memory-swap:交換內存 。
  • --cpu-period :是用來指定容器對 CPU 的使用要在多長時間內做一次重新分配。
  • --cpu-quota: 是用來指定在這個周期內,最多可以有多少時間用來跑這個容器。
    docker update 命令用于調整一個或多個正在運行的容器的資源配置,如CPU份額、內存限制、重啟策略等。下面是幾個使用 docker update 的例子:

例子

更新容器的CPU份額:

假設你有一個容器,其ID是 abcd1234,你想增加它的CPU份額,可以使用以下命令:

docker update --cpu-shares 512 abcd1234

這會將容器的CPU份額設置為512。CPU份額是用來決定容器在與其他容器競爭CPU時間時的優先級。

更新容器的內存限制:

如果想限制容器使用的內存,可以使用 --memory-m 選項。例如,將容器 abcd1234 的最大可用內存限制為512MB,可以這樣操作:

docker update --memory 512M abcd1234

更新容器的重啟策略:

你可能希望容器在意外停止后自動重啟。為了設置容器 abcd1234 的重啟策略為總是重啟,可以使用以下命令:

docker update --restart always abcd1234

這將確保當容器意外終止時,Docker守護進程會嘗試自動重啟它。

更新多個容器的配置:

你也可以同時更新多個容器的配置。例如,更新兩個容器 abcd1234efgh5678 的CPU份額和內存限制:

docker update --cpu-shares 256 --memory 256M abcd1234 efgh5678

更新容器的Block IO權重:

對于磁盤I/O,你可以設置容器的Block IO權重,權重范圍在10到1000之間,0表示禁用。例如,將容器 abcd1234 的Block IO權重設置為500:

docker update --blkio-weight 500 abcd1234

請注意,不是所有的配置都可以在容器運行時更新。例如,你不能更新已經運行的容器的網絡配置或更改其基礎鏡像。此外,某些選項(如 --kernel-memory)在較新的Docker版本中可能已經被棄用。

在執行任何 docker update 命令之前,確保了解你正在更改的配置的具體含義,以及這些更改如何影響容器的性能和穩定性。

容器批量處理技巧

docker container ls 命令(通常簡寫為 docker ps)用于列出系統上當前運行的Docker容器。但是,docker container ls 是更現代且推薦使用的語法,因為它更清晰地表明了你正在操作的是容器。這兩個命令在功能上是相同的,只是語法略有不同,docker container ls 更符合Docker命令的一致性設計。

基本語法

docker container ls [OPTIONS]

選項說明

  • -a, --all: 顯示所有容器,包括未運行的。如果不加這個選項,默認只顯示正在運行的容器。
  • -f, --filter: 用于過濾輸出。例如,你可以通過名字、狀態或其他屬性過濾容器。
  • --format: 設置輸出格式,可以使用Go模板語言來定制輸出的樣式。
  • -l, --latest: 顯示最近創建的容器。
  • --no-trunc: 不截斷輸出,完整顯示所有信息。
  • --quiet, -q: 只顯示容器的ID。

輸出列說明

默認情況下,docker container lsdocker ps 的輸出包含以下列:

  • CONTAINER ID: 容器的唯一標識符。
  • IMAGE: 創建容器的鏡像名稱。
  • COMMAND: 啟動容器時運行的命令。
  • CREATED: 容器創建的時間。
  • STATUS: 容器的狀態,如運行中(Up)、已退出(Exited)等。
  • PORTS: 已映射的端口,如果有的話。
  • NAMES: 分配給容器的名稱。

示例

  • 列出所有容器(包括未運行的):
docker container ls -a
  • 只顯示容器的ID:
docker container ls -q
  • 根據名字過濾容器:
docker container ls --filter name=myapp
  • 自定義輸出格式:
docker container ls --format "table {{.Names}}\t{{.Status}}\t{{.RunningFor}}"

?

理解完前面的操作,那么我們再結合前面所提到的命令,可以做到如下的容器批處理:

docker stop `docker ps -q`
docker start `docker ps -aq`

?

容器自動重啟

容器重啟選項如下:

docker run --restart=no [容器名] :默認值不自動重啟

docker run --restart=on-failure:3 [容器名] : on-failure 若容器的退出狀態非 0,則docker 自動重啟容器,還可以指定重啟次數,若超過指定次數未能啟動容器則放棄

docker run --restart=always [容器名] :always 容器退出時總是重啟

docker run --restart=unless-stopped [容器名] unless-stopped 容器退出時總是重啟,但不考慮 Docker 守護進程啟動時就已經停止的容器

如果容器啟動時沒有設置–restart 參數,則通過下面命令進行更新:docker update --restart=always [容器名]

需要注意的是:

當一個Docker容器配置了自動重啟策略為always時,確實意味著容器會在任何情況下自動重啟,包括容器正常或異常退出之后。這意味著,一旦容器停止運行,Docker守護進程會自動檢測并重新啟動它。

然而,盡管always策略會讓容器在停止后立即重啟,你仍然可以通過以下幾種方式真正地阻止容器的自動重啟:

1、使用docker stop命令。

2、使用docker update命令來更改容器的重啟策略,例如:

docker update --restart=no <container-id-or-name>

3、刪除容器: 如果你不打算再使用這個容器,可以使用docker rm命令來刪除容器。這將徹底阻止容器的自動重啟,因為你已經刪除了容器本身。

刪除運行中的容器需要加上-f或--force選項:

docker rm -f <container-id-or-name>

一些常見的問題

docker create、 docker start 和 docker run 有什么區別?

docker create 命令從 Docker 映像創建一個全新的容器。但是,它不會立即運行它。

docker start 命令將啟動任何已停止的容器。如果使用 docker create 命令創建容器,則可以使用此命令啟動它。docker run 命令是創建和啟動的組合,因為它創建了一個新容器并立即啟動它。實際上,如果 docker run 命令在您的系統上找不到上述映像,它可以從 Docker Hub 中提取映像。

docker import 和 docker load 有什么區別?

想要了解 docker load 與 docker import 命令的區別,還必須知道 docker save與 docker export 命令:

? docker save images_name:將一個鏡像導出為文件,再使用 docker load 命令將文件導入為一個鏡像,會保存該鏡像的的所有歷史記錄。比 docker export 命令導出的文件大,很好理解,因為會保存鏡像的所有歷史記錄。

? docker export container_id:將一個容器導出為文件,再使用 dockerimport 命令將容器導入成為一個新的鏡像,但是相比 docker save 命令,容器文件會丟失所有元數據和歷史記錄,僅保存容器當時的狀態,相當于虛擬機快照。

既可以使用 docker load 命令來導入鏡像庫存儲文件到本地鏡像庫,也可以使用docker import 命令來導入一個容器快照到本地鏡像庫。兩者的區別在于容器快照將會丟棄所有的歷史記錄和元數據信息,而鏡像存儲文件將保存完整記錄,體積也會更大。

docker rm & docker rmi & docker prune 的差異?

docker rm : 刪除一個或多個容器

docker rmi : 刪除一個或多個鏡像

docker prune: 用來刪除不再使用的 docker 對象

?


????????????????????? 感謝你耐心的看到這里?( ′・?・` )比心,如有哪里有錯誤請踢一腳作者o(╥﹏╥)o!?

????????????????????????????????? ? ? ??

????????????????????????????????????????????????????????????????????????給個三連再走嘛~??

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

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

相關文章

let/const/var的區別及理解

在JavaScript中&#xff0c;let、const 和 var 是用來聲明變量的關鍵字&#xff0c;但它們之間在作用域、變量提升、重復聲明等方面存在區別&#xff0c;詳細情況如下: 1. let、const、var 的區別 (1) 塊級作用域 let 和 const&#xff1a;具有塊級作用域&#xff0c;由 {} 包…

百數教學秘籍:三步走,輕松規劃你的自動化計劃任務

通過設定任務計劃&#xff0c;用戶可以輕松安排指定的功能插件或數據助手在特定時間自動執行&#xff0c;有效提高工作效率&#xff0c;還確保了數據的及時更新和處理。任務計劃在應用啟動時自動啟動并在后臺運行&#xff0c;無需用戶持續監控&#xff0c;為用戶帶來極大的便利…

oracle哪些后臺進程不能殺?

oracle 有很多的后臺進程&#xff0c;在遇到特殊情況的時候如鎖表&#xff0c;如果等待的是一個后臺進程&#xff0c;那這時就需要考量是不是能殺掉這個后臺進程&#xff1f;殺掉這個后臺進程會不會引起實例崩潰&#xff1f;本著實踐出真知&#xff0c;本文針對oracle 11g&…

游戲開黑語音-使用云服務器部署teamspeak服務(系統Ubuntu 20.04 LTS)

目錄 前置物品服務器調整及部署1.重裝系統2.換源3.下載teamspeak服務端并部署 連接服務器參考 前置物品 一臺云服務器&#xff08;系統&#xff1a;Ubuntu 20.04 LTS) 服務器調整及部署 1.重裝系統 在騰訊云官網的主機控制臺內&#xff0c;選擇重裝系統 (由于之前為了快點和…

【刷題匯總 -- 最長回文子串、買賣股票的最好時機(一)、[NOIP2002 普及組] 過河卒】

C日常刷題積累 今日刷題匯總 - day0101、最長回文子串1.1、題目1.2、思路1.3、程序實現 2、買賣股票的最好時機(一)2.1、題目2.2、思路2.3、程序實現2.4、程序實現 -- 優化 3、[NOIP2002 普及組] 過河卒3.1、題目3.2、思路3.3、程序實現 -- dp 4、題目鏈接 今日刷題匯總 - day0…

Excel中用VBA實現Outlook發送當前工作簿

Excel中用VBA實現Outlook發送當前工作簿&#xff0c;首先按AltF11打開VBA編輯器&#xff0c;插入模塊&#xff0c;并在工具-引用中勾選 Microseft Outlook .0 Object Library(其中為你Microseft Outlook的版本號。 Sub 發送郵件() 保存當前excel ThisWorkbook.Save讓excel連接…

Linux 入門教程 by 程序員魚皮

本文作者&#xff1a;程序員魚皮 免費編程學習 - 編程導航網&#xff1a;https://www.code-nav.cn 大家好&#xff0c;我是魚皮。 前兩天我學編程的老弟小阿巴過生日&#xff0c;我問他想要什么禮物。 本來以為他會要什么游戲機、Q 幣卡、鼠標鍵盤啥的&#xff0c;結果小阿巴…

模擬防止重復提交

gitee地址&#xff08;需要自取&#xff09;AopProxy重復提交: 防止重復提交 (gitee.com) RestController public class SubmissionController {Autowiredprivate SubmissionService submissionService;private static Jedis jedis new Jedis("localhost",6379);pr…

短視頻矩陣:批量發布的秘密揭秘

在數字化時代&#xff0c;短視頻已經成為一種廣受歡迎的媒體形式。無論是用于品牌推廣、產品營銷還是個人創作&#xff0c;短視頻都提供了一種直觀、生動的方式來吸引觀眾的注意力。然而&#xff0c;有效地制作、管理和發布短視頻對于許多創作者和企業來說是一個挑戰。 為此&am…

什么是 C 語言中的宏定義?

&#x1f345;關注博主&#x1f397;? 帶你暢游技術世界&#xff0c;不錯過每一次成長機會&#xff01; &#x1f4d9;C 語言百萬年薪修煉課程 通俗易懂&#xff0c;深入淺出&#xff0c;匠心打磨&#xff0c;死磕細節&#xff0c;6年迭代&#xff0c;看過的人都說好。 文章目…

解決 Yarn 運行時的 Node.js 版本問題:一個詳盡的指南

引言 Yarn 是一個流行的 JavaScript 包管理器&#xff0c;它與 Node.js 緊密集成&#xff0c;用于管理項目依賴。然而&#xff0c;在開發過程中&#xff0c;開發者可能會遇到 Node.js 版本不兼容的問題&#xff0c;這會導致 Yarn 運行時出錯。本文將提供一個詳細的指南&#x…

動態規劃之數字三角形模型+最長上升子序列模型

首先&#xff0c;我們從集合角度重新看待DP&#xff1a; 直接看題&#xff1a;https://www.acwing.com/problem/content/1029/ 就是取紙條的原題&#xff0c;我們令f[i1,j1,i2,j2]表示從(1,1),(1,1)分別走到(i1,j1),(i2,j2)的路徑的max i1j1i2j2&#xff0c;于是我們可以把狀…

機器學習 | 對K-Means聚類假設的研究演示及實踐示例

我們在Scikit-learn對K-means假設的調查中探索了揭示算法優勢和局限性的場景。我們研究了K-means對不正確的聚類大小的敏感性&#xff0c;它在各向異性分布中面臨的困難&#xff0c;它在不同的聚類方差中面臨的困難&#xff0c;以及使用合成數據集的大小不均勻的聚類問題。我們…

準備工作+1、請求和響應+2、模型和管理站點

Django快速入門——創建一個基本的投票應用程序 準備工作1、創建虛擬環境2、安裝django 1、請求和響應&#xff08;1&#xff09;創建項目&#xff08;2&#xff09;用于開發的簡易服務器&#xff08;3&#xff09;創建投票應用&#xff08;4&#xff09;編寫第一個視圖1、編寫…

家用激光投影儀品牌排行榜:這幾個品牌口碑好產品好最適合家用

現在人們生活水平提升&#xff0c;對投影這類產品的認知接受度也提升&#xff0c;有條件的家庭都想在家里整一個家庭影院&#xff0c;對于這些消費者來說挑選一臺性價比高的家用投影至關重要&#xff0c;既省到錢又買對了產品&#xff1b;投影市場發展迅速目前市面上大大小小的…

華為機考真題 -- 多段線數據壓縮

題目描述: 下圖中,每個方塊代表一個像素,每個像素用其行號和列號表示,但可以發現,這種表示不是最簡的,其實只需要存儲 6 個藍色的關鍵點即可,它們是線段的起點、拐點、終點,而剩下 4 個點是冗余的。現在,請根據輸入的包含有冗余數據的多段線坐標列表,輸出其最簡化的…

mongo數據庫遷移

前言 mongo數據庫遷移的方式目前常見的有兩種&#xff1a; 1&#xff0c;mongodump與mongorestore 2&#xff0c;mongoimport與mongoexport 二者主要區別有&#xff1a; 1、mongoexport 可以導出json和csv格式&#xff0c; mongodump導出的是bson可讀性不如前者 2&#xff0c;…

在Windows 10上快速顯示桌面的幾種方法,總有一種適合你

序言 有時你需要在Windows 10中快速查看你的桌面,但你不想乏味地最小化每個打開的應用程序窗口,或者移動它們并丟失它們的布局。幸運的是,有幾種方法可以讓你快速查看桌面,然后從你停止的地方重新開始。 如何使用任務欄按鈕顯示桌面 假設你正在隨意瀏覽你最喜歡的網站,…

服了,jenkins找不到advanced

新手下載的最新版本&#xff0c;過新手入門的時候一直過不去&#xff0c;就跳過了。 想下載一個漢化&#xff0c;還下載不了。根據提示搜索&#xff0c;結果大家讓去advanced找url&#xff0c;也找不到。

nginx重啟命令linux步驟是什么?

1、驗證nginx配置文件是否正確 方法一&#xff1a;進入nginx安裝目錄sbin下&#xff0c;輸入命令./nginx -t 看到如下顯示nginx.conf syntax is ok nginx.conf test is successful 說明配置文件正確! 方法二&#xff1a;在啟動命令-c前加-t 2、重啟Nginx服務 方法一&#xff1a…