K8S学习笔记-------1.安装部署K8S集群环境
1.修改为root权限
#sudo su
2.修改主机名
#hostnamectl set-hostname k8s-master01
3.查看网络地址
sudo nano /etc/netplan/01-netcfg.yaml

4.使网络配置修改生效
sudo netplan apply
5.修改UUID(某些虚拟机系统,需要设置才能生成UUID)#
- 查看UUID:dmidecode -s system-uuid

- 查看UUID:ls -l /sys/class/dmi/id/product_uuid

在这里插入图片描述

6.修改machine-id
root@k8s-master01:/home/zgq# hostnamectl statusStatic hostname: k8s-master01Icon name: computer-vmChassis: vm 🖴Machine ID: 6e06b8a62f094742915c390eab08c802Boot ID: 2f2ee93655c148ab8d5a231444047515Virtualization: kvm
Operating System: Ubuntu 24.04.1 LTS Kernel: Linux 6.8.0-51-genericArchitecture: x86-64Hardware Vendor: sangforHardware Model: _acloud_
Firmware Version: rel-1.7.5.1-20190822_073655Firmware Date: Tue 2014-04-01Firmware Age: 10y 8month 3w 2d
root@k8s-master01:/home/zgq# ls -l /etc/machine-id
-r--r--r-- 1 root root 33 Dec 4 13:42 /etc/machine-id
root@k8s-master01:/home/zgq# cat /etc/machine-id
6e06b8a62f094742915c390eab08c802
root@k8s-master01:/home/zgq# rm -f /etc/machine-id
root@k8s-master01:/home/zgq# systemd-machine-id-setup
Initializing machine ID from VM UUID.
root@k8s-master01:/home/zgq# cat /etc/machine-id
bad4f9616ef844369a8b351e8752d5c6

7.关闭SWAP分区
kubelet 的默认行为是在节点上检测到交换内存时无法启动。 这意味着要么禁用交换(swap)功能,要么让 kubelet 容忍交换。
- 若需允许交换分区(swap),请在 kubelet 配置文件中添加 failSwapOn: falsels -,或通过命令行参数指定。 注意:即使设置了 failSwapOn: false,工作负载默认情况下仍无法访问交换空间。 可以通过在 kubelet 配置文件中设置 swapBehavior 来修改此设置。若要使用交换空间, 请设置 swapBehavior 的值,这个值不能是默认的 NoSwap。 更多细节参阅交换内存管理。
- 要禁用交换分区(swap),可以使用命令 sudo swapoff -a 暂时关闭交换分区功能。 要使此更改在重启后仍然生效,请确保在系统的配置文件(如 /etc/fstab 或 systemd.swap)中禁用交换功能, 具体取决于你的系统配置方式。
swapoff -a && sysctl -w vm.swappiness=0 # 临时关闭
sed -ri ‘/[#]*swap/s@^@#@’ /etc/fstab # 基于配置文件关闭

8.时区和时间同步配置
- 设置东8区
root@k8s-master01:/home/zgq# timedatectl set-timezone Asia/Shanghai

- 同步阿里云
root@k8s-master01:/home/zgq# ntpdate ntp.aliyun.com

- 自动同步:通过计划任务实现时间同步。
root@k8s-master01:/home/zgq# crontab -e
`0 */1 * * * ntpdate time1.aliyun.com
root@k8s-master01:/home/zgq# crontab -l
# m h dom mon dow command
0 0 * * * ntpdate ntp.aliyun.com

9.配置内核转发及网桥过滤
|||所有主机均需要操作
- 配置containerd需要的模块,本次执行,手动加载此模块
modprobe -- overlay
modprobe -- br_netfilter
2.开机自动加载所需的内核模块
root@k8s-master01:/home/zgq# cat << EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
```ap3.查看已加载的模块
```bash
root@k8s-node2:/home/zgq# lsmod | grep "overlay"
root@k8s-node2:/home/zgq# lsmod | grep "br_netfilter"

4.添加网桥过滤及内核转发配置文件
# 以下3个参数是containerd所依赖的内核参数
root@k8s-master01:/home/zgq# cat << EOF | tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

5.加载内核参数,使生效
root@k8s-master01:/home/zgq# sysctl --system

6.安装ipset及ipvsadm
|||||所有主机均需操作
当涉及到网络和流量管理时,ipset 和 ipvsadm 是两个常用的工具。下面是对它们的介绍:
- ipset:
ipset 是一个用于管理 IP 地址集合的工具。
它允许您创建、修改和删除包含 IP 地址、网络子网和端口号的集合。
ipset 提供了高效的数据结构和算法,可以快速进行 IP 地址的匹配和查找。
它经常与防火墙软件(如 iptables)一起使用,用于实现更高级的网络规则和过滤策略。
iptables是Linux服务器上进行网络隔离的核心技术,内核在处理网络请求时会对iptables中的策略进行逐条解析,因此当策略较多时效率较低;而是用IPSet技术可以将策略中的五元组(协议,源地址,源端口,目的地址,目的端口)合并到有限的集合中,可以大大减少iptables策略条目从而提高效率。测试结果显示IPSet方式效率将比iptables提高100倍 - ipvsadm:
ipvsadm 是一个用于配置 Linux 内核 IP 虚拟服务器(IPVS)的工具。
IPVS 是一个实现负载均衡的内核模块,可以将传入的网络流量分发到多个后端服务器上。
ipvsadm 可以用于创建、修改和删除 IPVS 规则和服务。
它允许您定义负载均衡算法、设置后端服务器列表、配置健康检查和会话持久性等功能。
通过 ipvsadm,您可以实现基于网络层或传输层的负载均衡,并优化网络流量的分发和处理。
为什么要使用IPVS,从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能。
ipvs依赖于nf_conntrack_ipv4内核模块,4.19包括之后内核里改名为nf_conntrack,1.13.1之前的kube-proxy的代码里没有加判断一直用的nf_conntrack_ipv4,好像是1.13.1后的kube-proxy代码里增加了判断,我测试了是会去load nf_conntrack使用ipvs正常
这两个工具在 Linux 系统中被广泛用于网络管理和负载均衡场景。它们提供了强大的功能和灵活性,用于管理和控制网络流量、配置防火墙规则以及实现高可用和高性能的网络服务。
- 安装ipset及ipvsadm
root@docker01:/home/zgq# apt install ipset ipvsadm
还可以准备:
sysstat 是一个用于监控系统性能的工具集,包括 iostat、mpstat、pidstat 和 sar 等工具。要在不同的操作系统上安装
conntrack是Linux内核中的一个重要组件,主要用于跟踪和记录网络连接的状态信息。它基于Netfilter框架实现,是防火墙、网络地址转换(NAT)等功能的基础。
libseccomp是一个用于Linux操作系统的安全计算模式(seccomp)的用户空间库.
-
libseccomp支持seccomp安全计算模式,该模式是Linux内核的一种特性,允许限制进程可以执行的系统调用,以增加应用程序的安全性。
libseccomp提供了用于创建、加载和管理seccomp过滤器的API。这些过滤器可以定义一组允许的系统调用规则,从而限制应用程序的系统调用集合,阻止对潜在危险的系统调用的调用。 -
所有节点创建要开机自动加载的模块配置文件
cat > /etc/modules-load.d/ipvs.conf << 'EOF'
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
3.创建加载模块脚本文件
cat << EOF | tee ipvs.sh
#!/bin/sh
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
- 执行ipvs.sh
root@k8s-node2:/home/zgq# sh ipvs.sh
10.关闭防火墙
- 查看ufw状态
root@k8s-master01:/home/zgq# systemctl status ufw

- ufw disable
启动时关闭
root@k8s-node2:/home/zgq# ufw disable

立即关闭
root@docker01:/home/zgq# systemctl disable ufw
11.安装containerd
- 安装和配置
apt update && apt install -y containerd
看下版本
root@k8s-node2:/home/zgq# containerd -v
生成配置文件
mkdir -p /etc/containerd && \
containerd config default > /etc/containerd/config.toml
修改/etc/containerd/config.toml 文件中:
直接搜索SystemdCgroup
SystemdCgroup 为 true:

- 重载SANDBOX
正常情况下,国内你是拉取不到registry.k8s.io/pause:3.8镜像的,这个镜像是一切的pod的基础,要么自己手动导入进来,要么改成国内的镜像,通过设置以下配置来覆盖默认的沙盒镜像:
在你的 containerd 配置中, 你可以通过设置以下选项重载沙箱镜像:
[plugins."io.containerd.grpc.v1.cri"]sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
可以直接用命令
sudo sed -i 's/sandbox_image = ".*"/sandbox_image = "registry.aliyuncs.com\/google_containers\/pause:3.9"/' /etc/containerd/config.toml
12. 安装 kube三件套
更新源sudo apt update && \sudo apt upgrade -y安装工具apt install -y apt-transport-https ca-certificates curl gpg创建目录,有的版本有,看情况创建mkdir -p -m 755 /etc/apt/keyrings下载秘钥curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg && \
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
添加软件源1.32
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新,安装软件,防止更新
apt update && \
apt install -y kubelet kubectl kubeadm && \
apt-mark hold kubelet kubeadm kubectl
设置开机自启
systemctl enable --now kubelet
查看版本
kubeadm version
13.初始化MASTER
- 先下载镜像,有科学的不用阿里
sudo kubeadm config images pull \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.32.0 \
--cri-socket=unix:///run/containerd/containerd.sock

- 初始化
kubeadm init \
--image-repository=registry.aliyuncs.com/google_containers \
--apiserver-advertise-address=192.168.95.211 \ //修改IP
--control-plane-endpoint=k8s-master01 \ //修改HOSTNAME
--kubernetes-version=v1.32.0 \
--service-cidr=10.50.0.0/16 \
--pod-network-cidr=10.60.0.0/16 \
--cri-socket=unix:///run/containerd/containerd.sock
- 完成初始化,规范化用户修改设置
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6 \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6
-
不包括安装网络插件的,.Kubeadm 通过初始化安装是不包括网络插件的,也就是说初始化之后是不具备相关网络功能的,比如 k8s-master 节点上查看节点信息都是“Not Ready”状态、Pod 的 CoreDNS无法提供服务等。
-
规范化修改用户设置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
- 查看pods执行情况
kubectl get pods -A
14.加入集群
- 加入control panel 节点
kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6 \--control-plane
- 加入worker 节点
kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6
如果忘记了token,可以采取以下方式重新获取token和sha256
root@k8s-master01:/home/zgq#kubeadm token create
qchluu.2qsq44a9rxttzv1qroot@k8s-master01:/home/zgq#openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null \
| sha256sum | awk '{print $1}'
9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6
14.安装calico
这里安装的目前最新版,这种方式安装不了的自行下载后执行
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/tigera-operator.yaml
下载配置文件
curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/custom-resources.yaml
修改自己的cidr,然后执行
kubectl apply -f custom-resources.yaml
root@k8s-master01:/home/zgq# kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/tigera-operator.yaml
namespace/tigera-operator created
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgpfilters.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/caliconodestatuses.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipreservations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/tiers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/adminnetworkpolicies.policy.networking.k8s.io created
customresourcedefinition.apiextensions.k8s.io/apiservers.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/imagesets.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/installations.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/tigerastatuses.operator.tigera.io created
serviceaccount/tigera-operator created
clusterrole.rbac.authorization.k8s.io/tigera-operator created
clusterrolebinding.rbac.authorization.k8s.io/tigera-operator created
deployment.apps/tigera-operator created

root@k8s-master01:/home/zgq# kubectl apply -f custom-resources.yaml
installation.operator.tigera.io/default created
apiserver.operator.tigera.io/default created
root@k8s-master01:/home/zgq# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
calico-apiserver calico-apiserver-58548dbdb-jw49q 0/1 Pending 0 95s
calico-apiserver calico-apiserver-58548dbdb-tpvqw 0/1 Pending 0 95s
calico-system calico-kube-controllers-85d9cd79b5-8kqgk 0/1 Pending 0 94s
calico-system calico-node-c9j2n 0/1 Init:0/2 0 94s
calico-system calico-typha-654c5b4475-7rbsx 0/1 ContainerCreating 0 95s
calico-system csi-node-driver-dlw4n 0/2 ContainerCreating 0 94s
kube-system coredns-6766b7b6bb-87ndz 0/1 Pending 0 3h45m
kube-system coredns-6766b7b6bb-tbjxs 0/1 Pending 0 3h45m
kube-system etcd-k8s-master01 1/1 Running 1 3h45m
kube-system kube-apiserver-k8s-master01 1/1 Running 1 3h45m
kube-system kube-controller-manager-k8s-master01 1/1 Running 1 3h45m
kube-system kube-proxy-gp5nr 1/1 Running 0 3h45m
kube-system kube-scheduler-k8s-master01 1/1 Running 1 3h45m
tigera-operator tigera-operator-7d68577dc5-5bm95 1/1 Running 0 10m
15.查看PODS状态
root@k8s-master01:/home/zgq# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
calico-apiserver calico-apiserver-58548dbdb-jw49q 1/1 Running 0 10h
calico-apiserver calico-apiserver-58548dbdb-tpvqw 1/1 Running 0 10h
calico-system calico-kube-controllers-85d9cd79b5-8kqgk 1/1 Running 0 10h
calico-system calico-node-c9j2n 1/1 Running 0 10h
calico-system calico-typha-654c5b4475-7rbsx 1/1 Running 0 10h
calico-system csi-node-driver-dlw4n 2/2 Running 0 10h
kube-system coredns-6766b7b6bb-87ndz 1/1 Running 0 14h
kube-system coredns-6766b7b6bb-tbjxs 1/1 Running 0 14h
kube-system etcd-k8s-master01 1/1 Running 1 14h
kube-system kube-apiserver-k8s-master01 1/1 Running 1 14h
kube-system kube-controller-manager-k8s-master01 1/1 Running 1 14h
kube-system kube-proxy-gp5nr 1/1 Running 0 14h
kube-system kube-scheduler-k8s-master01 1/1 Running 1 14h
tigera-operator tigera-operator-7d68577dc5-5bm95 1/1 Running 0 10h
root@k8s-master01:/home/zgq# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy ok
root@k8s-master01:/home/zgq# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready control-plane 14h v1.32.0
root@k8s-master01:/home/zgq# kubectl get ns
NAME STATUS AGE
calico-apiserver Active 10h
calico-system Active 10h
default Active 14h
kube-node-lease Active 14h
kube-public Active 14h
kube-system Active 14h
tigera-operator Active 11h
其他参考站点
- 阿里开源镜像站
相关文章:
K8S学习笔记-------1.安装部署K8S集群环境
1.修改为root权限 #sudo su 2.修改主机名 #hostnamectl set-hostname k8s-master01 3.查看网络地址 sudo nano /etc/netplan/01-netcfg.yaml4.使网络配置修改生效 sudo netplan apply5.修改UUID(某些虚拟机系统,需要设置才能生成UUID)#…...
云原生周刊:K8s引领潮流
开源项目推荐 KWOK KWOK(Kubernetes WithOut Kubelet)是一个开源项目,旨在提供一个轻量级的 K8s 集群模拟环境,允许用户在不依赖真实节点的情况下,本地模拟整个 K8s 集群。它通过模拟 Kubelet 和其他集群组件的行为&…...
C_位运算符及其在单片机寄存器的操作
C语言的位运算符用于直接操作二进制位,本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。 一、位运算符的简单说明 1、按位与运算符(&) 功能:按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制…...
【算法篇】贪心算法
目录 贪心算法 贪心算法实际应用 一,零钱找回问题 二,活动选择问题 三,分数背包问题 将数组和减半的最小操作次数 最大数 贪心算法 贪心算法,是一种在每一步选择中都采取当前状态下的最优策略,期望得到全局最优…...
Selenium 浏览器操作与使用技巧——详细解析(Java版)
目录 一、浏览器及窗口操作 二、键盘与鼠标操作 三、勾选复选框 四、多层框架/窗口定位 五、操作下拉框 六、上传文件操作 七、处理弹窗与 alert 八、处理动态元素 九、使用 Selenium 进行网站监控 前言 Selenium 是一款非常强大的 Web 自动化测试工具,能够…...
ioDraw桌面版 v3.4.0发布!AI文生图,AI图生图,手绘风格一键转换!
流程图功能升级 AI 文生图: 用户现在能输入文字描述,让软件自动生成对应的流程图画面,减少了手动绘图的工作量,提高创作效率,比如输入 “项目开发流程”,软件可能就会生成包含需求分析、设计、开发、测试…...
深入理解Node.js_架构与最佳实践
1. 引言 1.1 什么是Node.js Node.js简介:Node.js是一个基于Chrome V8引擎的JavaScript运行时,用于构建快速、可扩展的网络应用。Node.js的历史背景和发展:Node.js最初由Ryan Dahl在2009年发布,旨在解决I/O密集型应用的性能问题。随着时间的推移,Node.js社区不断壮大,提供…...
安装和卸载RabbitMQ
我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/SUWXdDb0UoCV86xP6b3c7qtMn6b 使用Ubuntu环境进行安装 一、安装Erlang 在安装RabbitMQ之前,我们需要先安装Erlang,RabbitMQ需要Erlang的语言支持 #安装Erlang sudo apt-get install erlang 在安装的过程中,会弹出一段信息,此…...
第27节课:安全审计与防御—构建坚固的网络安全防线
目录 安全审计工具与流程安全审计工具NessusNmapBurp Suite 安全审计流程规划与准备信息收集漏洞扫描分析与评估报告与建议 安全防御策略网络层防御应用层防御数据层防御安全管理 结语 在当今数字化时代,网络安全已成为企业和个人不可忽视的重要议题。随着网络攻击手…...
【蓝桥杯】日志统计
日志统计(编程题)https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53 题目 日志统计(编程题) 讲解 这个讲解感觉比较通俗易懂。 蓝桥杯2018年省赛B组08(c/c)日…...
23.Word:小王-制作公司战略规划文档❗【5】
目录 NO1.2.3.4 NO5.6 NO7.8.9 NO10.11 NO12 NO13.14 NO1.2.3.4 布局→页面设置对话框→纸张:纸张大小:宽度/高度→页边距:上下左右→版式:页眉页脚→文档网格:勾选只指定行网格✔→ 每页:…...
基于单片机的智能安全插座(论文+源码)
1 系统整体方案设计 本课题基于单片机的智能安全插座设计,以STM32嵌入式单片机为主体,将计算机技术和检测技术有机结合,设计一款电量参数采集装置,实现电压、电流信号的数据采集任务,电压、电流和功率在上位机的显示任…...
2025年人工智能技术:Prompt与Agent的发展趋势与机遇
文章目录 一、Prompt与Agent的定义与区别(一)定义(二)区别二、2025年Prompt与Agent的应用场景(一)Prompt的应用场景(二)Agent的应用场景三、2025年Prompt与Agent的适合群体(一)Prompt适合的群体(二)Agent适合的群体四、2025年Prompt与Agent的发展机遇(一)Prompt的…...
vue2-v-if和v-for的优先级
vue2-v-if和v-for的优先级 1.v-if和v-for的作用 v-if是条件渲染,只有条件表达式true的情况下,才会渲染v-for是基于一个数组来渲染一个列表,在v-for的时候,保证给每个元素添加独一无二的key值,便于diff算法进行优化 …...
C++六大默认成员函数
C六大默认成员函数 默认构造函数默认析构函数RAII技术RAII的核心思想优点示例应用场景 默认拷贝构造深拷贝和浅拷贝 默认拷贝赋值运算符移动构造函数(C11起)默认移动赋值运算符(C11起)取地址及const取地址操作符重载取地址操作符重…...
基于springboot校园点歌系统
基于Spring Boot的校园点歌系统是一种专为校园场景设计的音乐点播平台,它能够丰富学生的校园生活,提升学生的娱乐体验。以下是对该系统的详细介绍: 一、系统背景与意义 在校园环境中,学生们对于音乐有着浓厚的兴趣,传…...
pycharm 中的 Mark Directory As 的作用是什么?
文章目录 Mark Directory As 的作用PYTHONPATH 是什么PYTHONPATH 作用注意事项 Mark Directory As 的作用 可以查看官网:https://www.jetbrains.com/help/pycharm/project-structure-dialog.html#-9p9rve_3 我们这里以 Mark Directory As Sources 为例进行介绍。 这…...
【Elasticsearch】文本分类聚合Categorize Text Aggregation
响应参数讲解: key (字符串)由 categorization_analyzer 提取的标记组成,这些标记是类别中所有输入字段值的共同部分。 doc_count (整数)与类别匹配的文档数量。 max_matching_length (整数)从…...
算法随笔_40: 爬楼梯
上一篇:算法随笔_39: 最多能完成排序的块_方法2-CSDN博客 题目描述如下: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释&am…...
【Linux探索学习】第二十七弹——信号(一):Linux 信号基础详解
Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 前面我们已经将进程通信部分讲完了,现在我们来讲一个进程部分也非常重要的知识点——信号,信号也是进程间通信的一…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
