Kubernetes 單節點集群搭建

Kubernetes 單節點集群搭建教程

本人嘗試基于Ubuntu搭建一個單節點K8S集群,其中遇到各種問題,最大的問題就是網絡,各種鏡像源下載不下來,特此記錄!注意:文中使用了幾個鏡像,將看來可能失效導致安裝失敗,但安裝的邏輯不變可以自行尋找可以用的鏡像。文末附上一個無腦腳本,保存為 xx.sh 直接bash 執行即可。

前置條件

  1. 操作系統:Ubuntu 20.04 或更高版本。
  2. 硬件要求
    • 至少 2 核 CPU 和 10GB 內存。
  3. 網絡環境:確保服務器可以訪問互聯網。
  4. 權限:以 root 用戶或使用 sudo 運行以下命令。

步驟 1:更新系統并安裝必要工具

# 更新系統包
apt-get update && apt-get upgrade -y# 安裝必要的工具
apt-get install -y curl apt-transport-https ca-certificates software-properties-common

步驟 2:安裝和配置 containerd

apt-get install -y containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd

步驟 3:安裝 crictl 工具

CRITCL_VERSION="v1.28.0"
curl -L https://github.moeyy.xyz/https://github.com/kubernetes-sigs/cri-tools/releases/download/$CRITCL_VERSION/crictl-${CRITCL_VERSION}-linux-amd64.tar.gz --output crictl-${CRITCL_VERSION}-linux-amd64.tar.gz
tar -xzvf crictl-${CRITCL_VERSION}-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-${CRITCL_VERSION}-linux-amd64.tar.gz
cat <<EOF | tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

步驟 4:配置 containerd 使用阿里云沙箱鏡像

if ! grep -q "sandbox_image = \"registry.aliyuncs.com/google_containers/pause:3.9\"" /etc/containerd/config.toml; thensed -i 's|sandbox_image = .*|sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"|' /etc/containerd/config.toml
fi
systemctl restart containerd

步驟 5:清理現有 Kubernetes 集群(如果存在)

systemctl stop kubelet || true
systemctl disable kubelet || true
kubeadm reset -f
rm -rf /etc/kubernetes/* /var/lib/kubelet/* /etc/cni/net.d/*
crictl ps -q | xargs -r crictl rm -f || true
crictl images -q | xargs -r crictl rmi -f || true

步驟 6:加載內核模塊并啟用 IP 轉發

modprobe br_netfilter
echo "br_netfilter" | tee -a /etc/modules-load.d/modules.conf
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conf
sysctl -p

步驟 7:添加 Kubernetes 國內鏡像源并安裝組件

cat <<EOF | tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
apt-get update
apt-get install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00
apt-mark hold kubelet kubeadm kubectl

步驟 8:關閉 swap 分區

swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

步驟 9:初始化 Kubernetes 集群

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

步驟 10:安裝 Flannel 網絡插件

MIRROR_SOURCE="ghcr.monlor.com"
crictl pull ${MIRROR_SOURCE}/flannel-io/flannel:v0.26.4
ctr -n k8s.io images tag ${MIRROR_SOURCE}/flannel-io/flannel:v0.26.4 ghcr.io/flannel-io/flannel:v0.26.4
crictl pull ${MIRROR_SOURCE}/flannel-io/flannel-cni-plugin:v1.6.2-flannel1
ctr -n k8s.io images tag ${MIRROR_SOURCE}/flannel-io/flannel-cni-plugin:v1.6.2-flannel1 ghcr.io/flannel-io/flannel-cni-plugin:v1.6.2-flannel1
FLANNEL_YAML="https://github.moeyy.xyz/https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml"
curl -L $FLANNEL_YAML | kubectl apply -f -

步驟 11:驗證集群狀態

kubectl get nodes
kubectl get pods --all-namespaces

大功告成!

單節點調度需去除污點

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

無腦腳本

#!/bin/bash# 設置腳本退出條件:任何命令失敗則退出
set -e# 定義顏色變量,方便輸出日志
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color# 打印信息函數
log_info() {echo -e "${GREEN}[INFO] $1${NC}"
}log_warn() {echo -e "${YELLOW}[WARN] $1${NC}"
}log_error() {echo -e "${RED}[ERROR] $1${NC}"exit 1
}# 檢查是否以 root 用戶運行
if [ "$EUID" -ne 0 ]; thenlog_error "請以 root 用戶或使用 sudo 運行此腳本。"
fi# 更新系統包(僅在未更新時執行)
if ! grep -q "Last update" /var/log/apt/history.log 2>/dev/null || [ $(($(date +%s) - $(stat -c %Y /var/log/apt/history.log))) -gt 86400 ]; thenlog_info "更新系統包..."apt-get update && apt-get upgrade -y
elselog_warn "系統包已更新,跳過此步驟。"
fi# 安裝必要的工具(僅在未安裝時執行)
if ! dpkg -l | grep -q "curl"; thenlog_info "安裝必要的工具(curl、apt-transport-https等)..."apt-get install -y curl apt-transport-https ca-certificates software-properties-common
elselog_warn "必要的工具已安裝,跳過此步驟。"
fi# 安裝 containerd(僅在未安裝時執行)
if ! dpkg -l | grep -q "containerd"; thenlog_info "安裝 containerd..."apt-get install -y containerd
elselog_warn "containerd 已安裝,跳過此步驟。"
fi# 配置 containerd(僅在未配置時執行)
if [ ! -f /etc/containerd/config.toml ]; thenlog_info "配置 containerd..."mkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.tomlsed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.tomlsystemctl restart containerd
elselog_warn "containerd 已配置,跳過此步驟。"
fi# 定義 crictl 下載 URL
CRITCL_VERSION="v1.28.0"
ACCELERATED_CRITCL_URL="https://github.moeyy.xyz/https://github.com/kubernetes-sigs/cri-tools/releases/download/$CRITCL_VERSION/crictl-${CRITCL_VERSION}-linux-amd64.tar.gz"# 安裝 crictl 工具(僅在未安裝時執行)
if ! command -v crictl &> /dev/null; thenlog_info "安裝 crictl 工具..."# 嘗試從加速鏡像源下載if ! curl -L $ACCELERATED_CRITCL_URL --output crictl-${CRITCL_VERSION}-linux-amd64.tar.gz; thenlog_error "無法從加速鏡像源下載 crictl,請檢查網絡或手動下載并安裝。"fi# 解壓并安裝 crictltar -xzvf crictl-${CRITCL_VERSION}-linux-amd64.tar.gz -C /usr/local/binrm -f crictl-${CRITCL_VERSION}-linux-amd64.tar.gz
elselog_warn "crictl 已安裝,跳過此步驟。"
fi# 配置 crictl(僅在未配置時執行)
if [ ! -f /etc/crictl.yaml ]; thenlog_info "配置 crictl..."cat <<EOF | tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
elselog_warn "crictl 已配置,跳過此步驟。"
fi# 配置 containerd 使用阿里云的沙箱鏡像
log_info "配置 containerd 使用阿里云的沙箱鏡像..."# 修改 containerd 配置文件
if ! grep -q "sandbox_image = \"registry.aliyuncs.com/google_containers/pause:3.9\"" /etc/containerd/config.toml; then# 備份原始配置文件cp /etc/containerd/config.toml /etc/containerd/config.toml.bak# 修改配置文件,設置 sandbox_imagesed -i 's|sandbox_image = .*|sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"|' /etc/containerd/config.toml# 如果配置文件中不存在 sandbox_image,則直接添加if ! grep -q "sandbox_image" /etc/containerd/config.toml; thenecho 'sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"' >> /etc/containerd/config.tomlfilog_info "已配置 containerd 使用阿里云的沙箱鏡像。"
elselog_warn "containerd 已配置為使用阿里云的沙箱鏡像,跳過此步驟。"
fi# 重啟 containerd 服務以應用更改
systemctl restart containerd## 檢測是否需要清理現有集群
if [ -f /etc/kubernetes/admin.conf ] || systemctl is-active --quiet kubelet; thenlog_info "檢測到已存在的 Kubernetes 集群,開始清理..."# 停止并禁用 kubelet 服務log_info "停止并禁用 kubelet 服務..."systemctl stop kubelet || truesystemctl disable kubelet || true# 重置 kubeadm 集群log_info "重置 kubeadm 集群..."kubeadm reset -f# 清理所有 Kubernetes 相關進程log_info "清理所有 Kubernetes 相關進程..."pkill -f kube-apiserver || truepkill -f kube-controller-manager || truepkill -f kube-scheduler || truepkill -f etcd || truepkill -f kubelet || true# 刪除 /etc/kubernetes 目錄log_info "刪除 /etc/kubernetes 目錄..."rm -rf /etc/kubernetes/*# 刪除 /var/lib/kubelet 目錄log_info "刪除 /var/lib/kubelet 目錄..."rm -rf /var/lib/kubelet/*# 清理 CNI 配置文件log_info "清理 CNI 配置文件..."rm -rf /etc/cni/net.d/*# 清理 containerd 中的殘留容器和鏡像log_info "清理所有容器..."crictl ps -q | xargs -r crictl rm -f || truelog_info "清理所有鏡像..."crictl images -q | xargs -r crictl rmi -f || truelog_info "Kubernetes 集群清理完成,準備重新初始化。"
elselog_warn "未檢測到已存在的 Kubernetes 集群,無需清理。"
fi# 加載 br_netfilter 內核模塊并啟用 IP 轉發
log_info "加載 br_netfilter 內核模塊并啟用 IP 轉發..."# 加載 br_netfilter 模塊
if ! lsmod | grep -q "br_netfilter"; thenmodprobe br_netfilterlog_info "已加載 br_netfilter 模塊。"
elselog_warn "br_netfilter 模塊已加載,跳過此步驟。"
fi# 確保 br_netfilter 模塊在系統啟動時自動加載
if ! grep -q "br_netfilter" /etc/modules-load.d/modules.conf; thenecho "br_netfilter" | tee -a /etc/modules-load.d/modules.conflog_info "已配置 br_netfilter 模塊開機自動加載。"
elselog_warn "br_netfilter 模塊已配置為開機自動加載,跳過此步驟。"
fi# 啟用 IPv4 轉發
if [ "$(cat /proc/sys/net/ipv4/ip_forward)" != "1" ]; thenecho "1" > /proc/sys/net/ipv4/ip_forwardlog_info "已啟用 IPv4 轉發。"
elselog_warn "IPv4 轉發已啟用,跳過此步驟。"
fi# 確保 IPv4 轉發配置在系統重啟后仍然生效
if ! grep -q "net.ipv4.ip_forward=1" /etc/sysctl.conf; thenecho "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conflog_info "已配置 IPv4 轉發開機生效。"
elselog_warn "IPv4 轉發已配置為開機生效,跳過此步驟。"
fi# 應用 sysctl 配置
sysctl -p# 添加 Kubernetes 國內鏡像源(僅在未添加時執行)
if [ ! -f /etc/apt/sources.list.d/kubernetes.list ]; thenlog_info "添加 Kubernetes 阿里云鏡像源..."cat <<EOF | tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOFcurl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -apt-get update
elselog_warn "Kubernetes 鏡像源已添加,跳過此步驟。"
fi# 安裝 kubeadm、kubelet 和 kubectl(僅在未安裝時執行)
if ! dpkg -l | grep -q "kubeadm"; thenlog_info "安裝 Kubernetes 1.28..."apt-get install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00apt-mark hold kubelet kubeadm kubectl
elselog_warn "Kubernetes 組件已安裝,跳過此步驟。"
fi# 關閉 swap 分區(僅在未關閉時執行)
if swapon --show | grep -q "/dev/"; thenlog_info "關閉 swap 分區..."swapoff -ased -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
elselog_warn "swap 分區已關閉,跳過此步驟。"
fi# 配置 kubelet 使用國內鏡像源(僅在未配置時執行)
if ! grep -q "registry.aliyuncs.com/google_containers" /etc/systemd/system/kubelet.service.d/20-aliyun.conf 2>/dev/null; thenlog_info "配置 kubelet 使用國內鏡像源..."cat <<EOF | tee /etc/systemd/system/kubelet.service.d/20-aliyun.conf
[Service]
Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9"
EOFsystemctl daemon-reloadsystemctl restart kubelet
elselog_warn "kubelet 已配置為使用國內鏡像源,跳過此步驟。"
fi# 初始化 Kubernetes 集群(僅在未初始化時執行)
if ! kubectl get nodes 2>/dev/null | grep -q "Ready"; thenlog_info "初始化 Kubernetes 集群..."# 清理現有集群log_info "清理現有 Kubernetes 集群..."kubeadm reset -frm -rf /etc/kubernetes/*rm -rf /var/lib/kubelet/*rm -rf /etc/cni/net.d/*crictl ps -q | xargs -r crictl rm -f || truecrictl images -q | xargs -r crictl rmi -f || true# 刪除用戶的 kubeconfig 文件if [ -f $HOME/.kube/config ]; thenlog_info "刪除用戶的 kubeconfig 文件..."rm -f $HOME/.kube/configfikubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers# 配置 kubectllog_info "配置 kubectl..."mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config
elselog_warn "Kubernetes 集群已初始化,跳過此步驟。"
fi# 設置鏡像源變量
MIRROR_SOURCE="ghcr.monlor.com"# 提前拉取并標記 Flannel 鏡像
log_info "提前拉取并標記 Flannel 鏡像..."# 拉取 Flannel 主鏡像
if ! crictl images | grep -q "${MIRROR_SOURCE}/flannel-io/flannel"; thenlog_info "拉取 Flannel 主鏡像..."crictl pull ${MIRROR_SOURCE}/flannel-io/flannel:v0.26.4
elselog_warn "Flannel 主鏡像已存在,跳過此步驟。"
fi# 重新標記 Flannel 主鏡像
if ! ctr -n k8s.io images list | grep -q "ghcr.io/flannel-io/flannel:v0.26.4"; thenlog_info "重新標記 Flannel 主鏡像..."ctr -n k8s.io images tag ${MIRROR_SOURCE}/flannel-io/flannel:v0.26.4 ghcr.io/flannel-io/flannel:v0.26.4
elselog_warn "Flannel 主鏡像已標記,跳過此步驟。"
fi# 拉取 Flannel CNI 插件鏡像
if ! crictl images | grep -q "${MIRROR_SOURCE}/flannel-io/flannel-cni-plugin"; thenlog_info "拉取 Flannel CNI 插件鏡像..."crictl pull ${MIRROR_SOURCE}/flannel-io/flannel-cni-plugin:v1.6.2-flannel1
elselog_warn "Flannel CNI 插件鏡像已存在,跳過此步驟。"
fi# 重新標記 Flannel CNI 插件鏡像
if ! ctr -n k8s.io images list | grep -q "ghcr.io/flannel-io/flannel-cni-plugin:v1.6.2-flannel1"; thenlog_info "重新標記 Flannel CNI 插件鏡像..."ctr -n k8s.io images tag ${MIRROR_SOURCE}/flannel-io/flannel-cni-plugin:v1.6.2-flannel1 ghcr.io/flannel-io/flannel-cni-plugin:v1.6.2-flannel1
elselog_warn "Flannel CNI 插件鏡像已標記,跳過此步驟。"
fi# 安裝 Flannel 網絡插件(僅在未安裝時執行)
if ! kubectl get pods -n kube-system | grep -q "kube-flannel"; thenlog_info "安裝 Flannel 網絡插件..."# 使用原始地址下載 Flannel 配置文件FLANNEL_YAML="https://github.moeyy.xyz/https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml"# 下載并應用配置文件curl -L $FLANNEL_YAML | kubectl apply -f -
elselog_warn "Flannel 網絡插件已安裝,跳過此步驟。"
fi# 等待所有系統 Pod 啟動
log_info "等待所有系統 Pod 啟動..."
sleep 10# 檢查節點狀態
log_info "檢查節點狀態..."
kubectl get nodes# 檢查 Pod 狀態
log_info "檢查 Pod 狀態..."
kubectl get pods --all-namespaceslog_info "Kubernetes 單節點集群已成功搭建!"

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

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

相關文章

【PTA題目解答】7-3 字符串的全排列(20分)next_permutation

1.題目 給定一個全由小寫字母構成的字符串&#xff0c;求它的全排列&#xff0c;按照字典序從小到大輸出。 輸入格式: 一行&#xff0c;一個字符串&#xff0c;長度不大于8。 輸出格式: 輸出所有全排列&#xff0c;每行一種排列形式&#xff0c;字典序從小到大。 輸入樣例…

專題三0~n-1中缺失的數字

1.題目 給一個數組&#xff0c;單調性是遞增的&#xff0c;需要找到缺失的數字&#xff0c;加上這個數字就變為等差數組了。 2.算法原理 這里用二分來解決&#xff0c;而二段性是根據下標區分&#xff0c;臨界值前的數字于下標相對應&#xff0c;臨界值后的于下標相差1&#x…

【圖像處理】ISP(Image Signal Processor) 圖像處理器的用途和工作原理?

ISP&#xff08;圖像信號處理器&#xff09;是數字影像設備的“視覺大腦”&#xff0c;負責將傳感器捕獲的原始電信號轉化為我們看到的高清圖像。以下從用途和工作原理兩方面通俗解析&#xff1a; 一、ISP的核心用途&#xff1a;讓照片“更像眼睛看到的” 提升畫質&#xff1a…

python學習筆記-mysql數據庫操作

現有一個需求&#xff0c;調用高德api獲取全國縣級以上行政區數據并保存為json文件&#xff0c;使用python獲取&#xff1a; import requests import json# 高德API Key api_key "your_api_key"# 調用行政區域查詢API def fetch_districts():url f"https://r…

Redisson 實現分布式鎖源碼淺析

大家好&#xff0c;我是此林。 今天來分享Redisson分布式鎖源碼。還是一樣&#xff0c;我們用 問題驅動 的方式展開講述。 1. redis 中如何使用 lua 腳本&#xff1f; Redis內置了lua解釋器&#xff0c;lua腳本有兩個好處&#xff1a; 1. 減少多次Redis命令的網絡傳輸開銷。…

【軟件】免費的PDF全文翻譯軟件,能保留公式圖表的樣式

轉載請注明出處&#xff1a;小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你&#xff0c;歡迎[點贊、收藏、關注]哦~ 很多PDF全文翻譯軟件都是收費的&#xff0c;而劃線翻譯看著又很累。這個開源的PDF全文翻譯軟件非常好用&#xff0c;并且能夠保留公式、圖表、目錄和注…

CentOS 7 系統上安裝 SQLite

1. 檢查系統更新 在安裝新軟件之前&#xff0c;建議先更新系統的軟件包列表&#xff0c;以確保使用的是最新的軟件源和補丁。打開終端&#xff0c;執行以下命令&#xff1a; sudo yum update -y -y 選項表示在更新過程中自動回答 “yes”&#xff0c;避免手動確認。 2. 安裝 …

Gin(后端)和 Vue3(前端)中實現 Server-Sent Events(SSE)推送

在 Gin&#xff08;后端&#xff09;和 Vue3&#xff08;前端&#xff09;中實現 Server-Sent Events&#xff08;SSE&#xff09;推送&#xff0c;主要分為以下幾個步驟&#xff1a; 后端&#xff08;Gin&#xff09;實現 SSE Gin 框架可以使用 c.SSEvent 方法來推送 SSE 事…

大模型微調中顯存占用和訓練時間的影響因素

BatchSize 顯存占用&#xff1a;與batch_size呈線性關系&#xff0c;可理解為 M t o t a l M f i x e d B a t c h S i z e ? M p e r ? s a m p l e M_{total}M_{fixed}BatchSize*M_{per-sample} Mtotal?Mfixed?BatchSize?Mper?sample?&#xff0c;其中 M f i x e d…

【排序算法對比】快速排序、歸并排序、堆排序

排序算法對比&#xff1a;快速排序、歸并排序、堆排序 1. 快速排序&#xff08;Quick Sort&#xff09; 原理 快速排序采用 分治法&#xff08;Divide and Conquer&#xff09;&#xff0c;通過選取基準值&#xff08;pivot&#xff09;&#xff0c;將數組劃分為 小于基準值…

PentestGPT 下載

PentestGPT 下載 PentestGPT 介紹 PentestGPT&#xff08;Penetration Testing GPT&#xff09;是一個基于大語言模型&#xff08;LLM&#xff09;的智能滲透測試助手。它結合了 ChatGPT&#xff08;或其他 GPT 模型&#xff09;與滲透測試工具&#xff0c;幫助安全研究人員自…

防火墻虛擬系統實驗

一實驗拓撲 二實驗過程 配置資源 創建虛擬系統 配置管理員 創建安全策略

代碼隨想錄算法訓練營第31天 | 56. 合并區間 738.單調遞增的數字 968.監控二叉樹

56. 合并區間 代碼隨想錄 56. 合并區間 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals,(a,b)->{if(a[0] b[0])return a[1] - b[1];return a[0] - b[0];});List<int[]> result new Arra…

Go語言對于MySQL的基本操作

一.下載依賴 終端中輸入&#xff1a; go get -u github.com/go-sql-driver/mysql 導入包 import ("database/sql"_ "github.com/go-sql-driver/mysql" ) 二.案例 package main//go get-u github.com/go-sql-driver/mysql 獲取驅動 import ("databa…

Linux與深入HTTP序列化和反序列化

深入HTTP序列化和反序列化 本篇介紹 在上一節已經完成了客戶端和服務端基本的HTTP通信&#xff0c;但是前面的傳遞并沒有完全體現出HTTP的序列化和反序列化&#xff0c;為了更好得理解其工作流程&#xff0c;在本節會以更加具體的方式分析到HTTP序列化和反序列化 本節會在介紹…

基于Python+SQLite實現(Web)驗室設備管理系統

實驗室設備管理系統 應用背景 為方便實驗室進行設備管理&#xff0c;某大學擬開發實驗室設備管理系統 來管理所有實驗室里的各種設備。系統可實現管理員登錄&#xff0c;查看現有的所有設備&#xff0c; 增加設備等功能。 開發環境 Mac OSPyCharm IDEPython3Flask&#xff…

深拷貝and淺拷貝!

一、什么是拷貝&#xff1f;什么是深拷貝和淺拷貝&#xff1f; &#xff08;1&#xff09;拷貝&#xff1a;拷貝就是為了復用原對象的部分or全部數據&#xff0c;在原對象的基礎上通過復制的方式創建一個新的對象。 拷貝對象可以分為三種類型&#xff1a;直接賦值、淺拷貝和深拷…

高頻面試題(含筆試高頻算法整理)基本總結回顧43

干貨分享&#xff0c;感謝您的閱讀&#xff01; &#xff08;暫存篇---后續會刪除&#xff0c;完整版和持續更新見高頻面試題基本總結回顧&#xff08;含筆試高頻算法整理&#xff09;&#xff09; 備注&#xff1a;引用請標注出處&#xff0c;同時存在的問題請在相關博客留言…

《靈珠覺醒:從零到算法金仙的C++修煉》卷三·天劫試煉(34)混元金斗裝萬物 - 0-1背包問題(二維DP)

《靈珠覺醒:從零到算法金仙的C++修煉》卷三天劫試煉(34)混元金斗裝萬物 - 0-1背包問題(二維DP) 哪吒在數據修仙界中繼續他的修煉之旅。這一次,他來到了一片神秘的混元谷,谷中有一座巨大的混元金斗,斗身閃爍著神秘的光芒。谷口有一塊巨大的石碑,上面刻著一行文字:“欲…

網絡爬蟲【簡介】

我叫補三補四&#xff0c;很高興見到大家&#xff0c;歡迎一起學習交流和進步 今天來講一講視圖 一、網絡爬蟲的定義 網絡爬蟲&#xff08;Web Crawler&#xff09;&#xff0c;又稱為網絡蜘蛛、網絡機器人等&#xff0c;是一種按照一定規則自動抓取互聯網信息的程序或腳本。它…