Docker 高級管理筆記

前言:Docker 高級管理概述

隨著 Docker 技術的廣泛應用,容器化已成為現代軟件開發與部署的核心方式。本筆記聚焦 Docker 高級管理中的兩大關鍵技術 —— 容器通信與數據持久化,深入解析 Docker 網絡模式、端口映射、容器互聯機制及數據卷管理等核心內容,為構建高效、安全的容器化應用提供全面指南。

Docker 高級管理的核心目標是解決容器化應用在大規模部署時面臨的通信效率、數據安全及服務可靠性問題。容器通信技術確保不同容器間、容器與外部網絡間的高效通信,而數據持久化機制則保障關鍵數據在容器生命周期內的安全性與可恢復性。

第一節:容器通信技術

一、Docker 容器網絡模式詳解

Docker 提供了豐富的網絡模式,每種模式針對不同的應用場景設計,理解這些模式是實現高效容器通信的基礎。

1. Bridge 模式:默認網絡解決方案

Bridge 模式是 Docker 的默認網絡模式,當 Docker 安裝完成后,會自動創建一個名為?docker0?的虛擬網橋。新創建的容器通過虛擬以太網設備對(veth pair)連接到該網橋上,Docker 守護進程從預定義子網中為每個容器分配唯一 IP 地址,容器間通過?docker0?網橋通信,訪問外部網絡時通過宿主機 NAT 轉換實現。

配置示例

# 創建自定義 bridge 網絡
docker network create -d bridge my-net
# 查看網絡列表
docker network ls
# 運行容器并連接到自定義網絡
docker run -itd --rm --name busybox1 --network my-net busybox sh -c 'while true;do echo hello;done'
# 驗證容器互聯
docker run -it --rm --name busybox2 --network my-net busybox sh -c 'ping busybox1'

Bridge 模式的優勢在于配置簡單、隔離性好,適用于大多數單主機容器部署場景。但在跨主機通信時需要配合其他技術。

2. Host 模式:高性能網絡共享

Host 模式下,容器直接使用宿主機的網絡棧,與宿主機共享 IP 地址和端口資源。容器沒有獨立的網絡命名空間,網絡性能極高,但隔離性較差,可能出現端口沖突。

適用場景

對網絡性能要求極高的應用

容器服務需要直接使用宿主機端口的場景

配置示例

docker run -tid --net=host --name docker_host1 busybox
# 驗證網絡共享
docker exec -it docker_host1 sh ifconfig
3. Container 模式:容器間網絡共享

Container 模式允許新容器共享已有容器的網絡命名空間,兩個容器使用相同的 IP 地址和端口配置,適用于緊密耦合的容器組合,如應用與日志收集器。

配置示例

# 創建源容器
docker run -tid --name host1 busybox
# 創建共享網絡的容器
docker run -itd --net=container:host1 --name host2 busybox
# 驗證網絡配置一致性
docker exec -it host1 ifconfig
docker exec -it host2 ifconfig
4. None 模式:高度安全的網絡隔離

None 模式下,容器僅有回環接口,無外部網絡連接,適用于對網絡安全性要求極高或需手動配置網絡的場景。

配置示例

docker run -itd --net=none --name none1 busybox sh
# 驗證網絡配置
docker exec -it none01 sh ifconfig
5. Overlay 模式:跨主機容器通信

Overlay 模式基于 VXLAN 技術,用于 Docker Swarm 集群,創建跨主機的虛擬覆蓋網絡,實現不同宿主機上容器間的直接通信。

配置示例

# 在 Swarm 集群中創建 Overlay 網絡
docker network create -d overlay my_overlay_network
# 部署服務到 Overlay 網絡
docker service create --name my_service --network my_overlay_network nginx
6. Macvlan 模式:高性能網絡直通

Macvlan 模式為容器分配唯一 MAC 地址,使其像獨立物理設備一樣直接連接宿主機物理網絡接口,繞過網橋,提高網絡性能。

配置示例

# 創建 Macvlan 網絡
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=ethe my_macvlan_network
# 運行容器使用 Macvlan 網絡
docker run -d --name my_macvlan_container --network my_macvlan_network nginx
7. 自定義網絡模式:靈活配置網絡參數

用戶可通過?docker network create?結合子網、網關、IP 范圍等參數創建符合特定需求的網絡。

配置示例

# 創建自定義網絡
docker network create --subnet=172.21.0.0/16 --gateway=172.21.0.1 my_custom_network
# 運行容器加入自定義網絡
docker run -d --name my_container --network my_custom_network nginx

二、端口映射:容器與外部的通信橋梁

端口映射是 Docker 實現容器與宿主機、外部網絡通信的關鍵機制,通過?-p?或?--publish?選項實現。

1. 端口映射類型
  • -P(大寫):自動隨機映射容器所有對外端口到宿主機可用端口,適用于臨時環境,避免手動配置端口沖突。

    docker run --rm -d -P nginx
    # 查看映射端口
    docker ps -a
    
  • -p(小寫):指定宿主機端口到容器端口的映射,支持多種格式:

    • 宿主機端口:容器端口:固定端口映射
    • :容器端口:宿主機隨機端口映射
    # 固定端口映射
    docker run --rm -d -p 8080:80 nginx
    # 宿主機隨機端口映射
    docker run --rm -d -p 80 nginx
    
2. 端口映射原理

Docker 通過 iptables 的 DNAT 規則實現端口轉發,可通過?iptables -t nat -vnL?查看具體規則。當外部請求到達宿主機映射端口時,請求會被轉發到容器內部指定端口。

三、容器互聯:打破容器網絡隔離

容器互聯允許不同容器識別并通信,早期通過?--link?選項實現,但已逐漸被自定義網絡替代。

1. --link 選項(已棄用)

實現步驟

# 創建源容器
docker run -dit --name web01 centos:7
# 創建互聯容器
docker run -dit --name web02 --link web01:myweb01 centos:7
# 測試互聯
docker exec -it web02/bin/bash ping myweb01
2. 自定義網絡實現容器互聯

推薦使用自定義網絡實現容器互聯,容器加入同一網絡后可直接通過容器名通信。

實現步驟

# 創建自定義網絡
docker network create my_net
# 創建不在網絡中的容器
docker run -dit -name web03 centos:7
# 創建加入網絡的容器
docker run -dit --name pc01 --net=my_net centos:7
docker run -dit -name pc02 --net=my_net centos:7
# 測試通信
docker exec -it pc01 /bin/bash ping pc02  # 通
docker exec -it pc01 /bin/bash ping web03  # 不通

第二節:數據持久化技術

一、Docker 數據卷管理

數據卷是 Docker 實現數據持久化的核心機制,繞過容器文件系統,實現宿主機與容器間的數據共享。

1. 數據卷的核心作用
  • 數據持久化:容器刪除后數據不丟失
  • 數據共享:多個容器可掛載同一數據卷
  • 數據備份與恢復:基于宿主機存儲便于備份
  • 分離數據與應用:鏡像更輕量,提升可移植性
2. 數據卷類型與創建方法
(1)匿名數據卷

在創建容器時直接通過?-v?選項指定容器內目錄創建,Docker 自動在宿主機?var/lib/docker/volumes?下分配存儲。

docker run -dit -v /data1 -v /data2 --name web04 centos:7
# 驗證數據持久化
docker exec -it web04 /bin/bash touch /data1/test.txt
docker rm -f web04
# 數據仍存在于宿主機
(2)具名數據卷

具名數據卷便于管理和共享,先創建后掛載。

# 創建具名數據卷
docker volume create my_volume
# 掛載具名數據卷
docker run -d -v my_volume:/data --name my_container nginx
(3)共享容器數據卷

通過?--volumes-from?選項實現容器間數據卷共享。

# 從已有容器掛載數據卷
docker run -dit --volumes-from web04 --name web5 centos:7 /bin/bash
(4)掛載主機目錄作為數據卷

將宿主機指定目錄直接掛載到容器內,實現高效數據交互。

# 案例1:掛載目錄到 Web 容器
docker run -dit -p 8080:80 -v /data1:/usr/local/apache2/htdocs --name web06 httpd
# 創建測試文件
echo "ni hao" > /data1/index.html
# 訪問服務
curl 192.168.10.101:8080
# 案例2:多目錄掛載與配置文件掛載
# 創建宿主機目錄
mkdir -p /www/{conf,html}
# 準備配置文件與代碼
cp nginx.conf /www/conf
cp -r html_code /www/html
# 創建容器并掛載
docker run -d -p 9090:80 \
-v /www/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /www/html:/www/html \
-v /www/nginx/log:/var/log/nginx \
--name web07 nginx /bin/bash -c "nginx"

二、數據管理最佳實踐

1. 數據卷類型選擇策略
  • 匿名數據卷:適合臨時存儲中間數據,如編譯文件
  • 具名數據卷:適用于持久化存儲,如數據庫數據
  • 掛載主機目錄:適合與主機共享配置文件或數據
2. 數據卷使用注意事項
  • 掛載主機目錄必須使用絕對路徑
  • 定期清理無用數據卷:docker volume prune
  • 關鍵數據(如數據庫)必須使用數據卷存儲
  • 多容器共享數據卷時注意并發訪問問題
3. 容器數據持久化策略

容器文件系統數據在容器刪除時丟失,因此:

  • 數據庫數據:掛載?/var/lib/mysql?到數據卷
  • 日志文件:掛載?/var/log?到數據卷
  • 配置文件:掛載宿主機配置到容器內

本章總結

本筆記系統梳理了 Docker 高級管理中的容器通信與數據持久化技術:

在容器通信方面,Docker 提供了七種網絡模式:

  • Bridge 模式:單主機默認網絡,容器間通過網橋通信
  • Host 模式:共享宿主機網絡棧,高性能但隔離性差
  • Container 模式:容器間共享網絡命名空間
  • None 模式:高度安全的網絡隔離
  • Overlay 模式:跨主機容器通信,適用于 Swarm 集群
  • Macvlan 模式:高性能網絡直通,模擬物理設備
  • 自定義網絡:靈活配置網絡參數滿足特定需求

端口映射與容器互聯是實現容器通信的關鍵手段,推薦使用自定義網絡替代已棄用的?--link?選項,提升通信效率與可維護性。

Docker 高級管理進階:實戰案例與最佳實踐

第三節:容器通信高級實戰

一、跨主機容器通信方案

在實際生產環境中,容器往往分布在多個主機上,實現跨主機通信是關鍵需求。以下介紹幾種主流解決方案。

1. Overlay 網絡與 Docker Swarm 集成

Overlay 網絡是 Docker Swarm 集群的核心網絡技術,通過 VXLAN 實現跨主機容器通信,支持服務發現和負載均衡。

部署步驟

# 初始化 Swarm 集群
docker swarm init --advertise-addr 192.168.1.100
# 添加工作節點
docker swarm join --token <token> 192.168.1.100:2377
# 創建 Overlay 網絡
docker network create -d overlay my_swarm_network
# 部署服務到 Overlay 網絡
docker service create --name web_service --network my_swarm_network --replicas 3 nginx
# 查看服務網絡
docker service inspect web_service
2. 使用 Macvlan 實現直接路由

Macvlan 模式為容器分配獨立 MAC 地址,使其直接接入物理網絡,適合對網絡性能要求極高的場景。

配置示例

# 創建 Macvlan 網絡(假設宿主機物理網卡為 ens33)
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=ens33 \
my_direct_network
# 運行容器獲取獨立 IP
docker run -d --name app_container --network my_direct_network \
--ip 192.168.1.100 nginx
3. 自定義網絡與 VPN 結合

對于混合云或多數據中心環境,可結合自定義網絡與 VPN 技術實現跨地域容器通信。

方案架構

在各數據中心部署 Docker 集群

通過 IPsec VPN 或 WireGuard 建立數據中心間加密通道

創建跨數據中心的 Overlay 網絡或自定義網絡

容器通過 VPN 通道實現跨地域通信

二、微服務架構下的容器通信優化

1. 服務發現與注冊中心

在微服務架構中,服務發現是容器通信的基礎,常用方案包括:

  • Docker Swarm 內置服務發現:通過服務名直接訪問,Swarm 自動負載均衡

    # 部署服務
    docker service create --name mysql --network my_net -p 3306:3306 mysql
    # 其他服務通過服務名訪問
    docker service create --name app --network my_net app_image
    
  • 第三方服務發現工具:如 Consul、Etcd、Zookeeper

    # 運行 Consul 服務
    docker run -d --name consul -p 8500:8500 consul
    # 服務注冊示例(使用 Consul API)
    curl -X PUT -d '{"id": "web-service", "name": "web", "address": "172.18.0.2", "port": 80}' http://localhost:8500/v1/agent/service/register
    
2. 容器通信性能優化
  • 使用 host 網絡模式:消除網絡地址轉換開銷,適用于性能敏感服務

  • 優化 iptables 規則:減少 DNAT 規則數量,提高轉發效率

  • 啟用 IPVS 負載均衡:相比 iptables,IPVS 提供更高性能的負載均衡

    # 啟用 IPVS
    modprobe ip_vs
    # 查看 IPVS 模塊
    lsmod | grep ip_vs
    
  • 調整網絡參數:優化內核網絡參數,如增大 TCP 緩沖區

    # 添加內核參數
    echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf
    echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf
    # 生效參數
    sysctl -p
    

三、容器通信安全實踐

1. 網絡隔離策略
  • 分層網絡設計:按業務功能劃分不同網絡,如前端網絡、后端網絡、數據庫網絡

    # 創建前端網絡
    docker network create -d bridge frontend_net
    # 創建后端網絡
    docker network create -d bridge backend_net
    # 創建數據庫網絡
    docker network create -d bridge db_net
    
  • 使用 internal 網絡:限制容器訪問外部網絡,提高安全性

    docker network create --internal secure_net
    
2. 防火墻與訪問控制
  • Docker 內置網絡策略:通過自定義網絡和 iptables 規則實現訪問控制

  • 第三方網絡安全工具:如 Calico、Weave Net 提供更精細的網絡策略

    # 安裝 Calico
    docker run -d --name=calico-node --net=host \
    -v /etc/kubernetes:/etc/kubernetes \
    -v /lib/modules:/lib/modules \
    calico/node
    
  • TLS 加密通信:為容器間通信添加 TLS 證書,確保數據傳輸安全

    # 生成證書
    openssl genrsa -out ca.key 2048
    openssl req -x509 -new -nodes -key ca.key -subj "/CN=Docker CA" -days 3650 -out ca.crt
    # 服務端證書
    openssl genrsa -out server.key 2048
    openssl req -new -key server.key -subj "/CN=web-service" -out server.csr
    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
    # 客戶端證書
    openssl genrsa -out client.key 2048
    openssl req -new -key client.key -subj "/CN=client" -out client.csr
    openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365
    

第四節:數據持久化高級應用

一、數據卷備份與恢復策略

1. 數據卷備份方法
  • 手動備份:使用?docker volume inspect?獲取數據卷路徑,直接復制宿主機文件

    # 查看數據卷路徑
    docker volume inspect my_volume
    # 備份數據卷
    tar -czvf my_volume_backup.tar.gz /var/lib/docker/volumes/my_volume/_data
    
  • 自動化備份腳本:定時備份關鍵數據卷

    # backup_script.sh
    #!/bin/bash
    DATE=$(date +%Y%m%d)
    VOLUME_PATH="/var/lib/docker/volumes/my_volume/_data"
    BACKUP_DIR="/backup/docker"
    mkdir -p $BACKUP_DIR
    tar -czvf $BACKUP_DIR/my_volume_$DATE.tar.gz $VOLUME_PATH
    # 添加到 cron 定時任務
    0 2 * * * /bin/bash /scripts/backup_script.sh
    
2. 數據卷恢復流程
# 停止相關容器
docker stop $(docker ps -a -q --filter "name=my_app")
# 移除舊數據卷
docker volume rm my_volume
# 創建新數據卷
docker volume create my_volume
# 恢復數據
tar -xzvf my_volume_backup.tar.gz -C /var/lib/docker/volumes/my_volume/_data
# 啟動容器
docker start my_app

二、數據庫容器數據持久化最佳實踐

1. MySQL 容器數據持久化
# 創建具名數據卷
docker volume create mysql_data
# 運行 MySQL 容器并掛載數據卷
docker run -d --name mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=password \
-v mysql_data:/var/lib/mysql \
mysql:latest
# 驗證數據持久化
docker exec mysql sh -c "echo 'CREATE DATABASE test;' | mysql -u root -p$MYSQL_ROOT_PASSWORD"
# 刪除容器后重新創建
docker rm -f mysql
docker run -d --name mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=password \
-v mysql_data:/var/lib/mysql \
mysql:latest
# 驗證數據存在
docker exec mysql sh -c "mysql -u root -p$MYSQL_ROOT_PASSWORD -e 'SHOW DATABASES;'"
2. PostgreSQL 容器數據管理
# 創建數據卷
docker volume create postgres_data
# 運行 PostgreSQL 容器
docker run -d --name postgres -p 5432:5432 \
-e POSTGRES_PASSWORD=password \
-v postgres_data:/var/lib/postgresql/data \
postgres:latest
# 導入數據
docker exec postgres psql -U postgres -c "CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50));"
# 備份數據庫
docker exec postgres pg_dumpall -U postgres > /backup/postgres_dump.sql

三、數據卷與 CI/CD 集成

1. 持續集成中的數據管理

在 CI 流程中,常需臨時存儲構建數據,可使用匿名數據卷:

# Jenkins Pipeline 示例
pipeline {agent { docker 'maven:3.8-openjdk-11' }stages {stage('Build') {steps {sh 'mvn clean package'# 使用匿名數據卷存儲構建結果sh 'mkdir -p /app/target'sh 'cp target/*.jar /app/target/app.jar'}# 掛載數據卷到宿主機post {success {archiveArtifacts artifacts: 'target/app.jar', fingerprint: truesh 'docker run -v $(pwd)/target:/app/target maven:3.8-openjdk-11 cp /app/target/app.jar /app/target/app_$(date +%Y%m%d).jar'}}}}
}
2. 持續部署中的數據遷移

在 CD 流程中,需處理容器升級時的數據遷移:

# 滾動升級時保留數據
docker service update --detach --image my_app:v2 --replicas 5 \
--update-parallelism 1 --update-delay 30s \
--mount source=app_data,target=/data my_service

四、數據持久化性能優化

1. 數據卷存儲驅動優化

Docker 支持多種存儲驅動,根據宿主機系統選擇最優驅動:

AUFS:適用于 Ubuntu,多層鏡像支持好

Overlay2:推薦用于 Linux,性能優于 AUFS

Btrfs:支持快照和寫時復制

ZFS:適用于需要數據冗余的場景

# 查看當前存儲驅動
docker info | grep Storage
# 修改存儲驅動(需重啟 Docker)
vi /etc/docker/daemon.json
{"storage-driver": "overlay2"
}
systemctl restart docker
2. 磁盤 I/O 優化
  • 使用 SSD 存儲數據卷:顯著提升 I/O 性能

  • 調整 I/O 調度算法:針對 SSD 使用 noop 算法,HDD 使用 deadline 算法

    # 查看當前調度算法
    cat /sys/block/sda/queue/scheduler
    # 修改調度算法
    echo noop > /sys/block/sda/queue/scheduler
    
  • 啟用緩存機制:利用 Linux 頁緩存提升讀取性能

    # 調整臟頁寫入參數
    echo "vm.dirty_ratio = 30" >> /etc/sysctl.conf
    echo "vm.dirty_background_ratio = 10" >> /etc/sysctl.conf
    sysctl -p
    

第五節:Docker 高級管理工具與生態

一、容器網絡管理工具

1. Calico:高性能網絡與安全

Calico 是一個開源的容器網絡接口(CNI)插件,提供高性能網絡和網絡安全功能,支持 BGP 路由和網絡策略。

# 在 Kubernetes 中安裝 Calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# 創建網絡策略
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-web-to-db
spec:podSelector:matchLabels:app: dbpolicyTypes:- Ingressingress:- from:- podSelector:matchLabels:app: webports:- protocol: TCPport: 3306
2. Weave Net:簡單易用的跨主機網絡

Weave Net 提供簡單的跨主機容器網絡,自動加密通信,支持服務發現。

# 安裝 Weave Net
docker run --rm -it --name weave \
--volume /var/run/docker.sock:/var/run/docker.sock \
weaveworks/weave:latest launch
# 在 Swarm 中使用 Weave
docker network create -d weave my_weave_network

二、數據管理與備份工具

1. Portainer:可視化 Docker 管理

Portainer 提供直觀的 Web 界面,簡化 Docker 數據卷管理。

# 運行 Portainer
docker run -d -p 9000:9000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer
2. Velero:Kubernetes 數據備份與恢復

Velero(原 Heptio Ark)用于 Kubernetes 集群的備份與恢復,支持數據卷快照。

# 安裝 Velero
velero install --provider aws \
--bucket my-backup-bucket \
--secret-file cloud-credentials \
--use-volume-snapshots=true
# 備份集群
velero backup create my-backup --include-namespaces my-app
# 恢復備份
velero restore create --from-backup my-backup

三、監控與性能分析工具

1. Prometheus + Grafana:容器監控
# 運行 Prometheus
docker run -d --name prometheus -p 9090:9090 \
-v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
# 運行 Grafana
docker run -d --name grafana -p 3000:3000 \
-v /var/lib/grafana:/var/lib/grafana \
grafana/grafana
2. Docker Scout:容器性能分析
# 安裝 Docker Scout
docker scout install
# 分析容器性能
docker scout analyze my_container

實戰案例:電商平臺容器化部署

一、案例架構設計

某電商平臺采用微服務架構,容器化部署方案包括:

前端服務:Nginx 集群,使用 host 網絡模式提升性能

后端服務:Spring Boot 微服務,運行在自定義 bridge 網絡

數據庫:MySQL 主從集群,使用具名數據卷持久化

緩存:Redis 集群,數據卷掛載主機 SSD

消息隊列:RabbitMQ,數據卷備份策略

二、網絡配置實踐

# 創建前端網絡
docker network create -d host frontend_net
# 創建后端服務網絡
docker network create -d bridge --subnet=172.20.0.0/16 backend_net
# 創建數據庫網絡
docker network create -d bridge --subnet=172.21.0.0/16 db_net
# 前端容器(host 網絡)
docker run -d --name frontend --network frontend_net -v /data/nginx/html:/usr/share/nginx/html nginx
# 后端服務容器
docker run -d --name user-service --network backend_net -p 8081:8081 user-service:v1
# 數據庫容器
docker run -d --name mysql-master --network db_net -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:8.0

三、數據持久化方案

# 創建數據庫備份腳本
#!/bin/bash
DATE=$(date +%Y%m%d%H%M)
VOLUME_PATH="/var/lib/docker/volumes/mysql_data/_data"
BACKUP_DIR="/backup/mysql"
mkdir -p $BACKUP_DIR
# 物理備份
tar -czvf $BACKUP_DIR/mysql_physical_$DATE.tar.gz $VOLUME_PATH
# 邏輯備份
docker exec mysql-master mysqldump -u root -p$MYSQL_ROOT_PASSWORD --all-databases > $BACKUP_DIR/mysql_logical_$DATE.sql
# 同步到遠程存儲
rsync -avz $BACKUP_DIR user@remote:/backup/docker/mysql

總結與展望

Docker 高級管理技術是容器化應用在生產環境中穩定運行的關鍵,通過深入理解容器通信機制和數據持久化策略,

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

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

相關文章

Spring Boot 項目初始化

一、什么是 CommandLineRunner CommandLineRunner 是 Spring Boot 提供的一個 函數式接口&#xff0c;聲明如下&#xff1a; 該接口只有一個 run(String... args) 方法&#xff0c;會在 Spring Boot 容器啟動完成后被自動調用。 你可以將它理解為一種“鉤子函數”&#xff0c;…

C# winform教程(二)----ComboBox

一、作用 一個可以輸入也可以下拉的列表框。 二、屬性 一般我們都是使用下拉列表&#xff0c;不使用在線編輯&#xff08;本人沒用過&#xff09; 屬性 名稱內容含義items組合框中項可以定義下拉列表的值DropDownStyle外觀和功能是否可以填寫&#xff0c;一般選擇dropdownli…

FFmpeg裁剪視頻在Android上的實現

添加依賴&#xff1a; implementation com.arthenica:mobile-ffmpeg-full:4.4.LTS 代碼實現&#xff1a; fun cropMiddleThird(inputPath: String, outputPath: String) {val cmd arrayOf("-y", // 覆蓋輸出文件"-i", inputPath,"-filter:v&quo…

openEuler 22.03 sp1 更新openssh 10.0p2 —— 筑夢之路

華為歐拉openEuler制作openssh 9.1/9.2/9.3 p1 rpm——筑夢之路_歐拉構建openssh-CSDN博客 上面是需要修改的sshd_config配置&#xff0c;將這3行注釋掉。 附上22.03 sp1的yum源文件 # cat openEuler.repo #generic-repos is licensed under the Mulan PSL v2. #You can use t…

AGI(4)大模型的推理綜述

本文源自基于基礎模型的推理綜述《A Survey of Reasoning with Foundation Models》&#xff0c;因為原文有點難于理解&#xff0c;在這個論文的基礎上增加了自己的解釋和理解&#xff0c;重新整理成此文。大家可以通過查看原文閱讀原始論文。 1、推理的概念 推理是解決復雜問題…

Rust 中的宏與函數

在 Rust 編程中&#xff0c;宏&#xff08;Macro&#xff09;和函數&#xff08;Function&#xff09;是兩種非常重要的編程工具。雖然它們都可以用來組織代碼和實現復用&#xff0c;但它們在定義方式、作用原理、性能、靈活性以及適用場景等方面存在諸多不同。本文將詳細介紹 …

c++中左值與右值

在 C++ 中,左值(lvalue) 和 右值(rvalue) 是表達式的基本屬性,它們決定了表達式能否被賦值、取地址等操作。 1. 核心定義 左值(lvalue) 特點:表示一個具名的、持久的對象,可位于賦值語句左側。示例: int x = 42; // x是左值 x = 100; // 合法:左值可…

DeepSeek14-open-webui 常用概念區分

I、“Tools & Functions” 與 Pipelines&#xff08;工作流系統&#xff09;區別 以下是“Tool & Functions”與“Pipelines”的區別、適用場景及作用的詳細分析&#xff0c;內容基于參考文檔提取與總結&#xff1a; 一、本質區別 維度Tool & FunctionsPipeline…

PaddleOCR + Flask 構建 Web OCR 服務實戰

1、前言 隨著圖像識別技術的發展,OCR(光學字符識別)已經成為很多應用場景中的基礎能力。PaddleOCR 是百度開源的一個高性能 OCR 工具庫,支持中英文、多語言、輕量級部署等特性。 而 Flask 是一個輕量級的 Python Web 框架,非常適合快速構建 RESTful API 或小型 Web 應用…

C++結構體初始化與成員函數實現語法詳解

C結構體初始化與成員函數實現語法詳解 一、結構體靜態成員初始化語法 在C中&#xff0c;靜態成員變量需要在類外部進行定義和初始化。提供的代碼展示了如何為MAIN_PROPULSION_CAN類的靜態成員變量進行初始化&#xff1a; MAIN_PROPULSION_CAN::VoltageThresholds MAIN_PROPU…

買了新內存條插上bios識別,進入系統不可用,b450主板,內存插槽A1A2 可以點亮,B1B2不可以,A2B2不可以,B1B2還是不可以

提示&#xff1a;買了新內存條插上bios識別&#xff0c;進入系統不可用&#xff0c;b450主板&#xff0c;內存插槽A1A2 可以點亮&#xff0c;B1B2不可以&#xff0c;A2B2不可以 文章目錄 前言——環境一、第一種情況&#xff0c;開機不能點亮二、第二種情況, 總內存&#xff0c…

7.4.1_2B樹的插入刪除

B樹插入&#xff1a; 假如是m階B樹&#xff0c;插入關鍵字時都要滿足每個節點上的關鍵字個數最少為m/2向上取整-1關鍵字&#xff0c;最多有m-1個關鍵字&#xff0c;且每次插入的新元素一定是放在最底層的終端節點(因為如果不是放在終端節點&#xff0c;會導致該節點上可能有葉子…

Linux系統基本操作指令

Linux系統基本操作指令 文章目錄 Linux系統基本操作指令一、介紹二、基礎設置2.1 設置ubuntu與window的共享目錄2.2 ubuntu系統簡單介紹 三、Linux命令及工具介紹3.1 目錄管理命令(功能&#xff0c;格式&#xff0c;參數&#xff0c;系統參數)3.2 文件操作命令 四、網絡命令4.1…

系統思考VS心智模式

在這張圖片中&#xff0c;我們看到的是兩杯相同價格的咖啡&#xff0c;它們的價格顯示方式不同。一杯咖啡的原價和現價都寫得很大&#xff0c;而另一杯的價格則以較小的字體呈現。這種微妙的設計差異揭示了一個有趣的心理現象——心智模式。 人們在面對同樣的價格時&#xff0…

all()函數和any()函數

參考文獻 在if上使用.all和.any # 中心點未改變&#xff0c;說明達到穩態&#xff0c;結束遞歸if (self.points new_center).all():sum self.__sumdis(result)return result, self.points, sum

Maven:依賴管理就像樂高拼裝的藝術

目錄 &#x1f3d7;? 第一章&#xff1a;Maven是高級樂高玩家&#x1f50d; 依賴管理的基本單元 &#x1f9e9; 第二章&#xff1a;多模塊項目——樂高巨艦組裝術&#x1f31f; 為什么要拆分模塊&#xff1f;&#x1f6e0;? 父子POM配置示范 ?? 第三章&#xff1a;依賴沖突…

空間數據挖掘 期末復習

前言&#xff1a;此篇復習筆記結合了課程ppt和deepseek回答進行總結&#xff0c;如有謬誤懇請指正。 期末考例題 &#xff08;名詞解釋*10、簡答*6、論述*6&#xff09; 一、名詞解釋 數據挖掘 過擬合&#xff08;Overfitting&#xff09; Apriori算法 決策樹&#xff08;…

跳跳桿、彈跳桿、Poto stick:百年彈跳玩具的健康與使用分享(大模型改寫)

跳跳桿&#xff1a;百年彈跳神器的健康爭議與安全指南 &#xff08;用DeepSeek改寫前一篇文章&#xff0c;可惜沒有接廣告&#xff0c;否則植入一些鏈接多好&#xff09; &#x1f50d; 一、健康功效&#xff1a;驚喜與風險并存 爭議性健康主張 坊間流傳跳跳桿可能具備&…

WHAT - React Native 開發 App 從 0 到上線全流程周期

文章目錄 一、React Native App 開發流程總覽二、各階段詳細說明需求分析 & 產品規劃技術選型 & 方案確定項目初始化A. 使用 Expo&#xff08;推薦新手&#xff09;B. 使用 React Native CLI&#xff08;自由度更高&#xff09; UI 開發 功能開發&#xff08;主開發階…

Windows11 無法發現局域網內設備解決方法

臨時解決 發生問題絕大多數Windows11 24H2版本&#xff0c;該版本目前來看沒有永久解決方案 初步問題可以定位在FDResPub服務問題&#xff0c;重啟該服務可以短暫恢復&#xff0c;臨時解決方案就是重啟該服務&#xff0c;然后把網絡設備右鍵創建快捷方式 做成批處理文件 創建…