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.配置内核转发及网桥过滤

|||所有主机均需要操作

  1. 配置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 是两个常用的工具。下面是对它们的介绍:

  1. ipset:
    ipset 是一个用于管理 IP 地址集合的工具。
    它允许您创建、修改和删除包含 IP 地址、网络子网和端口号的集合。
    ipset 提供了高效的数据结构和算法,可以快速进行 IP 地址的匹配和查找。
    它经常与防火墙软件(如 iptables)一起使用,用于实现更高级的网络规则和过滤策略。
    iptables是Linux服务器上进行网络隔离的核心技术,内核在处理网络请求时会对iptables中的策略进行逐条解析,因此当策略较多时效率较低;而是用IPSet技术可以将策略中的五元组(协议,源地址,源端口,目的地址,目的端口)合并到有限的集合中,可以大大减少iptables策略条目从而提高效率。测试结果显示IPSet方式效率将比iptables提高100倍
  2. 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 系统中被广泛用于网络管理和负载均衡场景。它们提供了强大的功能和灵活性,用于管理和控制网络流量、配置防火墙规则以及实现高可用和高性能的网络服务。

  1. 安装ipset及ipvsadm
root@docker01:/home/zgq# apt install ipset ipvsadm

还可以准备:
sysstat 是一个用于监控系统性能的工具集,包括 iostat、mpstat、pidstat 和 sar 等工具。要在不同的操作系统上安装
‌conntrack‌是Linux内核中的一个重要组件,主要用于跟踪和记录网络连接的状态信息。它基于Netfilter框架实现,是防火墙、网络地址转换(NAT)等功能的基础。
libseccomp是一个用于Linux操作系统的安全计算模式(seccomp)的用户空间库.

  1. libseccomp支持seccomp安全计算模式,该模式是Linux内核的一种特性,允许限制进程可以执行的系统调用,以增加应用程序的安全性。
    libseccomp提供了用于创建、加载和管理seccomp过滤器的API。这些过滤器可以定义一组允许的系统调用规则,从而限制应用程序的系统调用集合,阻止对潜在危险的系统调用的调用。

  2. 所有节点创建要开机自动加载的模块配置文件

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
  1. 执行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

  1. 安装和配置
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:

在这里插入图片描述

  1. 重载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

  1. 先下载镜像,有科学的不用阿里
sudo kubeadm config images pull \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.32.0 \
--cri-socket=unix:///run/containerd/containerd.sock 

在这里插入图片描述

  1. 初始化
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
  1. 完成初始化,规范化用户修改设置
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.加入集群

  1. 加入control panel 节点
kubeadm join k8s-master01:6443 --token fzhopw.bh01wzs2z4j7mfdd \--discovery-token-ca-cert-hash sha256:9b65ee08ea9d0c50fe1f847cb58b4172f4b305a57e090acb8915322f50ecc7d6 \--control-plane 
  1. 加入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

其他参考站点

  1. 阿里开源镜像站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go运算符

内置运算符 算术运算符关系运算符逻辑运算符位运算符赋值运算符 算术运算符 注意&#xff1a; &#xff08;自增&#xff09;和–&#xff08;自减&#xff09;在 Go 语言中是单独的语句&#xff0c;并不是运算符 package mainimport "fmt"func main() {fmt.Printl…

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(一)

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;贪心算法篇–CSDN博客 文章目录 一.贪心算法1.什么是贪心算法2.贪心算法的特点 二.例题1.柠…

一款wordpress AI免费插件自动内容生成+前端AI交互+文章批量采集

一款wordpressAI自动内容生成前端AI会话窗口交互文章批量采集免费插件 1. SEO优化文章生成 关键词驱动的内容生成&#xff1a;用户可以输入关键词或长尾关键词&#xff0c;插件会根据这些关键词生成高质量的SEO优化文章。文章结构清晰&#xff0c;语言自然流畅&#xff0c;符合…

Linux03——常见的操作命令

root用户以及权限 Linux系统的超级管理员用户是&#xff1a;root用户 su命令 可以切换用户&#xff0c;语法&#xff1a;su [-] [用户名]- 表示切换后加载环境变量&#xff0c;建议带上用户可以省略&#xff0c;省略默认切换到root su命令是用于账户切换的系统命令&#xff…

使用 Ollama 在 Windows 环境部署 DeepSeek 大模型实战指南

文章目录 前言Ollama核心特性 实战步骤安装 Ollama验证安装结果部署 DeepSeek 模型拉取模型启动模型 交互体验命令行对话调用 REST API 总结个人简介 前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的应用逐渐成为技术热点&#xff0c;而 DeepSeek 作为国产开…

关于大数据

在大数据背景下存在的问题&#xff1a; 非结构化、半结构化数据&#xff1a;NoSQL数据库只负责存储&#xff1b;程序处理时涉及到数据移动&#xff0c;速度慢 是否存在一套整体解决方案&#xff1f; 可以存储并处理海量结构化、半结构化、非结构化数据 处理海量数据的速…

通过docker安装部署deepseek以及python实现

前提条件 Docker 安装:确保你的系统已经安装并正确配置了 Docker。可以通过运行 docker --version 来验证 Docker 是否安装成功。 网络环境:保证设备有稳定的网络连接,以便拉取 Docker 镜像和模型文件。 步骤一:拉取 Ollama Docker 镜像 Ollama 可以帮助我们更方便地管理…

企业四要素如何用PHP进行调用

一、什么是企业四要素&#xff1f; 企业四要素接口是在企业三要素&#xff08;企业名称、统一社会信用代码、法定代表人姓名&#xff09;的基础上&#xff0c;增加了一个关键要素&#xff0c;通常是企业注册号或企业银行账户信息。这种接口主要用于更全面的企业信息验证&#x…

Android性能优化系列——卡顿优化

卡顿&#xff0c;就是用户体感界面不流畅。我们知道手机的屏幕画面是按照一定频率来刷新的&#xff0c;理论上讲&#xff0c;24 帧的画面更新就能让人眼感觉是连贯的。但是实际上&#xff0c;这个只是针对普通的视频而言。对于一些强交互或者较为敏感的场景来说&#xff0c;比如…

激光工控机在自动化领域中有哪些作用?

首先是对于高精度加工控制方面&#xff1a;激光工控机能够精确控制激光光束的运动轨迹和输出功率&#xff0c;实现对各种材料的精细切割、雕刻和焊接&#xff0c;保证加工质量和效率。 其次还能实时监控与远程控制激光工控机凭借其强大的网络通信功能&#xff0c;可以实时监控…

陷入闭包:理解 React 状态管理中的怪癖

TLDR 闭包就像函数随身携带的背包&#xff0c;包含它们创建时的数据React 组件使用闭包来记住它们的状态和属性过时的闭包可能导致状态更新不如预期时的错误函数式更新提供了一个可靠的方式来处理最新状态 简介 你是否曾经疑惑过&#xff0c;为什么有时你的 React 状态更新不…

基于STM32的智能加湿器设计(新版本)

目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 &#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是加湿器。设备的详细功能见网盘中的文章《12、基于…

21.2.2 保存

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 如果打开某个Excel文件修改后&#xff0c;需要保存到原文件或者用新的文件名保存&#xff0c;在 Excel.Application.Quit() 前使用W…

Deepseek v3R1 学习笔记

o1 o1 模型在训练过程中混合了多种奖励函数的设计方法&#xff0c;并且尝试从结果监督转向过程监督&#xff0c;在中间过程进行打分 使用的搜索策略&#xff1a;基于树的搜索和基于顺序修改的搜索 R1 R1-Zero 是从基础模型开始&#xff0c;完全由强化学习驱动&#xff0c;不…

mybatisgenerator接入

1、引入plugin <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.mybatis.generator</groupId>&l…

NacosRce到docker逃逸实战

NacosRce到docker逃逸实战 1、Nacos Derby Rce打入内存马 这个漏洞的原理大家应该都知道&#xff0c; 2.3.2 < Nacos < 2.4.0版本默认derby接口未授权访问&#xff0c;攻击者可利用未授权访问执行SQL语句加载构造恶意的JAR包导致出现远程代码执行漏洞。 在日常的漏洞挖…

mini-lsm通关笔记Week2Day6

项目地址&#xff1a;https://github.com/skyzh/mini-lsm 个人实现地址&#xff1a;https://gitee.com/cnyuyang/mini-lsm Summary 在本章中&#xff0c;您将&#xff1a; 实现WAL日志文件的编解码 系统重启时使用WAL日志恢复memtable 要将测试用例复制到启动器代码中并运行…

【DeepSeek背后的技术】系列三:强化学习(Reinforcement Learning, RL)

目录 1 简介1.1 强化学习&#xff08;RL&#xff09;简介1.2 基于人类反馈的强化学习 (RLHF) 简介1.2.1 四个重要角色1.2.2 三个步骤 2 强化算法2.1 PPO&#xff08;Proximal Policy Optimization&#xff09;2.1.1 核心思想2.1.2 算法步骤2.1.3 优点2.1.4 缺点2.1.5 应用场景 …

LabVIEW的智能电源远程监控系统开发

在工业自动化与测试领域&#xff0c;电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作&#xff0c;存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网&#xff08;IIoT&#xff09;技术&#xff0c;实现电源设备…

SpringBoot开发(四)SpringBoot配置文件

1. SpringBoot配置文件 1.1. 配置端口号和路径 &#xff08;1&#xff09;在application.properties文件下配置端口号和路径。 server.port: 8081 server.servlet.context-path/demo&#xff08;2&#xff09;运行访问。 1.2. 自定义配置 1.2.1. 方式一 &#xff08;1&…