当前位置: 首页 > news >正文

k8s的部署

一、K8S简介

Kubernetes中文官网:Kubernetes

GitHub:github.com/kubernetes/kubernetes

Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。

Kubernetes集群组件逻辑图

k8s集群属于Master-Slave主从架构,Master节点负责集群管理和资源调度,用于运行控制平面组件(Control Plane Components),Slave节点就是工作负载节点,一般称为Node节点,也叫Worker节点,主要负责运行Pod,一个Pod里可以同时运行多个容器,而容器一般封装的就是基于Dokcer打包的应用,Pod英文叫豌豆荚,每个容器就像是一颗豌豆,简单来说Pod就是一组容器。

安装部署

二进制包
Github下载稳定版的二进制包,手动部署每个组件组成k8s集群。

kubeadm工具
使用Kubeadm工具可以快速搭建一个k8s集群,主要包括初始化控制平面节点和加入Worker节点,提供的主要功能如下:

kubeadm init:初始化一个Master节点
kubeadm join:将Worker节点加入集群
kubeadm upgrade:升级K8s版本
kubeadm token:管理 kubeadm join 使用的令牌
kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改
kubeadm version:打印 kubeadm 版本
kubeadm alpha:预览可用的新功能

 

二、准备工作

软硬件要求

  • Linux操作系统,Ubuntu 或 CentOS
  • 每台节点至少2G
  • Master节点至少2C
  • 集群节点网络互通

环境配置

修改hosts配置

配置所有节点的IP和域名映射

# vim /etc/hosts

172.25.254.100 k8s_master  

172.25.254.10 k8s_node1   

172.25.254.20 k8s_node2    

关闭Swap分区

kubelet要求必须禁用交换分区,所以kubeadm初始化时回检测swap是否关闭,如果没有关闭会报错,如果不想关闭安装时kubelet命令需要添加--fail-swap-on=false,关闭Swap分区必须在所有节点上执行如下命令:

# 临时关闭,重启恢复
[root@k8s_node1 ~]# swapoff -a
# 永久关闭,注释swap行
[root@k8s_node1 ~]# cat /etc/fstab
# /dev/mapper/centos-swap swap                    swap    defaults        0 0


禁用SELinux

所有节点执行如下命令:

[root@k8s_node1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

关闭防火墙

所有节点执行如下命令:

[root@k8s_node1 ~]# systemctl disable firewalld
[root@k8s_node1 ~]# systemctl stop firewalld

配置k8s的Yum源

[root@k8s_node1 ~]# cat  /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

三、下载并安装docker 


[root@k8smaster yum.repos.d]# dnf install docker-ce -y
 
正在更新 Subscription Management 软件仓库。
无法读取客户身份
 
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
 
上次元数据过期检查:0:02:44 前,执行于 2024年10月06日 星期日 16时57分04秒。
依赖关系解决。
========================================================================
 软件包                     架构    版本               仓库        大小
========================================================================
安装:
 docker-ce                  x86_64  3:27.3.1-1.el9     docker-ce   27 M
安装依赖关系:
 containerd.io              x86_64  1.7.22-3.1.el9     docker-ce   43 M
 docker-ce-cli              x86_64  1:27.3.1-1.el9     docker-ce  7.9 M
安装弱的依赖:
 docker-buildx-plugin       x86_64  0.17.1-1.el9       docker-ce   14 M
 docker-ce-rootless-extras  x86_64  27.3.1-1.el9       docker-ce  4.4 M
 docker-compose-plugin      x86_64  2.29.7-1.el9       docker-ce   13 M
 
事务概要
========================================================================
安装  6 软件包

配置认证 

[root@k8s_master ~]# mkdir -p /etc/docker/certs.d/reg.mqw.org/
 
 
[root@hub harbor]# scp /data/certs/mqw.org.crt root@172.25.254.100:/etc/docker/certs.d/reg.mqw.org/ca.crt
 
root@172.25.254.100's password: 
mqw.org.crt                           100% 2114     1.5MB/s   00:00   

指定docker默认的仓库 

[root@k8s_master ~]# cd /etc/docker/
[root@k8s_master docker]# vim daemon.json
{  "registry-mirrors": ["https://reg.mqw.org"]  }

[root@k8s_master docker]# systemctl enable --now docker

添加配置模块 

#开机时能自动激活
[root@k8s_master ~]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf 

[root@k8s_master ~]# modprobe br_netfilter
[root@k8s_master ~]# vim /etc/sysctl.d/docker.conf
 
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
 [root@k8s_master ~]# sysctl --system 

[root@k8s_master ~]# systemctl restart docker

 四、配置k8s

配置软件仓库

#都配置

[root@k8s-master ~]# cd /etc/yum.repos.d/
[root@k8s-master yum.repos.d]# vim k8s.repo

安装三大组件-kubeadm、kubelet、kubectl

  • kubeadm:用来初始化k8s集群的指令。
  • kubelet:在集群的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与k8s集群通信的命令行工具,查看、创建、更新和删除各种资源

# 所有节点都安装
[root@k8s-node1 ~]# yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9
# 所有节点设置开机启动
[root@k8s-node1 ~]# systemctl enable kubelet

 [root@k8s-master ~]# dnf install *.rpm -y

[root@k8s-master ~]# vim /lib/systemd/system/cri-docker.service 

启动 

[root@k8s-master ~]# systemctl enable --now cri-docker.service 
[root@k8s-master ~]# systemctl enable --now kubelet.service 

在master节点拉取k8s镜像

root@k8s-master ~]# kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock
 
上传镜像到harbor仓库
[root@k8s-master ~]# docker images | awk '/google/{ print $1":"$2}' \
| awk -F "/" '{system("docker tag "$0" reg.timinglee.org/k8s/"$3)}'
 
[root@k8s-master ~]# docker images  | awk '/k8s/{system("docker push "$1":"$2)}'

 

上传到hub仓库 

打上标签上传 

[root@k8s-master ~]# docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.30.0 reg.mqw.org/k8s/kube-apiserver:v1.30.0
 
[root@k8s-master ~]# docker push reg.mqw.org/k8s/kube-apiserver:v1.30.0
 
[root@k8s-master ~]# docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.30.0 reg.mqw.org/k8s/kube-controller-manager:v1.30.0
 
[root@k8s-master ~]# docker push reg.mqw.org/k8s/kube-controller-manager:v1.30.0
 
[root@k8s-master ~]# docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.30.0 reg.mqw.org/k8s/kube-scheduler:v1.30.0
 
[root@k8s-master ~]# docker push reg.mqw.org/k8s/kube-scheduler:v1.30.0
 
[root@k8s-master ~]# docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.30.0 reg.mqw.org/k8s/kube-proxy:v1.30.0
 
[root@k8s-master ~]# docker push reg.mqw.org/k8s/kube-proxy:v1.30.0
 
[root@k8s-master ~]# docker tag registry.aliyuncs.com/google_containers/coredns:v1.11.3 reg.mqw.org/k8s/coredns:v1.11.3
 
[root@k8s-master ~]# docker push reg.mqw.org/k8s/coredns:v1.11.3
 
[root@k8s-master ~]# docker tag registry.aliyuncs.com/google_containers/pause:3.9 reg.mqw.org/k8s/pause:3.9
 
[root@k8s-master ~]# docker push reg.mqw.org/k8s/pause:3.9
 
[root@k8s-master ~]# docker tag  registry.aliyuncs.com/google_containers/etcd:3.5.15-0 reg.mqw.org/k8s/etcd:3.5.15-0
 
[root@k8s-master ~]# docker push reg.mqw.org/k8s/etcd:3.5.15-0

 集群

初始化

[root@k8smaster ~]#  kubeadm init --pod-network-cidr=10.244.0.0/16 \
> --image-repository reg.mqw.org/k8s \
> --kubernetes-version v1.30.0 \
> --cri-socket=unix:///var/run/cri-dockerd.sock

#指定集群配置文件变量
[root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile 
[root@k8s-master ~]# source ~/.bash_profile 
#设置kubectl命令补齐功能
[root@k8s-master ~]#  echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@k8s-master ~]#  source  ~/.bashrc

 

安装网络插件

[root@k8s-master ~]# wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
[root@k8s-master ~]# docker pull docker.io/flannel/flannel:v0.25.5
[root@k8s-master ~]# docekr docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1
 
[root@k8s-master ~]# docker tag flannel/flannel:v0.25.5 \
reg.timinglee.org/flannel/flannel:v0.25.5
[root@k8s-master ~]# docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 \
reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel
 
[root@k8s-master ~]# docker push reg.timinglee.org/flannel/flannel:v0.25.5
[root@k8s-master ~]# docker push reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
 
#编辑kube-flannel.yml 修改镜像下载位置
[root@k8s-master ~]# vim kube-flannel.yml
 
146:        image: reg.timinglee.org/flannel/flannel:v0.25.5
173:        image: reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
184:        image: reg.timinglee.org/flannel/flannel:v0.25.5
 
#安装flannel网络插件
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml

 启用服务

[root@k8s-node1 ~]# systemctl start kubelet.serv

#复制令牌

[root@k8s-node1 ~]# kubeadm join 172.25.254.100:6443 --token n3u7gu.zzumlnbhevtohv9f --discovery-token-ca-cert-hash sha256:0c08e6ff75578e3b1778cf72c7e81c91397c4ec6de21ac5abde16c71a6df34d3 --cri-socket=unix:///var/run/cri-dockerd.sock 

五、K8s命令

基础命令 

1.显示集群版本
[root@k8s-master ~]# kubectl version
2.显示集群信息
[root@k8s-master ~]# kubectl cluster-info
3.给镜像打标签
[root@k8s-master ~]# docker tag busybox:latest reg.timinglee.org/mnwl/busybox:latest
4.上传本地镜像到镜像仓库
[root@k8s-master ~]# docker push reg.timinglee.org/mnwl/busybox:latest
5.创建一个名为webcluster的控制器,pod数量为2
[root@k8s-master ~]# kubectl create deployment webcluster --image reg.timinglee.org/mnwl/nginx:laest --replicas 2
6.查看控制器
[root@k8s-master ~]# kubectl get deployments.apps
7.查看资源帮助
[root@k8s-master ~]# kubectl explain deployment
8.查看控制器参数帮助
[root@k8s-master ~]# kubectl explain deployment.spec
9.编辑控制器
[root@k8s-master ~]# kubectl edit deployment.apps webcluster
10.利用补丁更改控制器数量
[root@k8s-master ~]# kubectl patch deployments.apps webcluster -p '{"spec":{"replicas":3}}'
11.删除控制器资源
[root@k8s-master ~]# kubectl delete deployments.apps webcluster

运行和调试命令 

1.运行pod
[root@k8s-master ~]# kubectl run testpod --image reg.timinglee.org/mnwl/nginx:latest
[root@k8s-master ~]# kubectl get pods
2.端口暴露
[root@k8s-master ~]# kubectl get services
[root@k8s-master ~]# kubectl expose pod testpod --port 80 --target-port 80
3.查看资源详细信息
[root@k8s-master ~]# kubectl describe pods testpod
4.快速删除资源信息
[root@k8s-master ~]# kubectl delete pods/testpod --force
5.查看资源日志
[root@k8s-master ~]# kubectl logs pods/testpod
6.进行交互pod
[root@k8s-master ~]# kubectl run -it testpod --image reg.timinglee.org/mnwl/busybox
[root@k8s-master ~]# kubectl attach pods/testpod -it
[root@k8s-master ~]# kubectl exec -it pods/testpod /bin/sh
7.本机和pod的文件交换
[root@k8s-master ~]# kubectl cp anaconda-ks.cfg testpod:/

高级命令 

1.利用命令生成yaml文件
[root@k8s-master ~]# kubectl create deployment --image reg.timinglee.org/mnwl/nginx webc  luster  --dry-run=client -o yaml > webcluster.yml
2.利用yaml文件生成资源
[root@k8s-master ~]# kubectl apply -f webcluster.yml
3.管理资源标签
[root@k8s-master ~]# kubectl run nginx --image reg.timinglee.org/mnwl/nginx:latest
[root@k8s-master ~]# kubectl get pods --show-labels
4.添加标签
[root@k8s-master ~]# kubectl label pods nginx app=mnwl
5.更改标签
[root@k8s-master ~]# kubectl label pods nginx app=cluster --overwrite
6.删除标签
[root@k8s-master ~]# kubectl label pods nginx app-
7.用控制器管理的pod,删除pod,会自动创建pod,除非删除控制器
[root@k8s-master network-scripts]# kubectl get pod
NAME                          READY   STATUS    RESTARTS   AGE
testpod                       1/1     Running   0          4h48m
webcluster-7697fbcd88-jmmcp   1/1     Running   0          3h49m
[root@k8s-master ~]# kubectl delete pod webcluster-7697fbcd88-jmmcp
pod "webcluster-7697fbcd88-jmmcp" deleted
[root@k8s-master ~]# kubectl get pod
NAME                          READY   STATUS    RESTARTS   AGE
testpod                       1/1     Running   0          4h50m
webcluster-7697fbcd88-9bk8t   1/1     Running   0          4s

相关文章:

k8s的部署

一、K8S简介 Kubernetes中文官网&#xff1a;Kubernetes GitHub&#xff1a;github.com/kubernetes/kubernetes Kubernetes简称为K8s&#xff0c;是用于自动部署、扩缩和管理容器化应用程序的开源系统&#xff0c;起源于Google 集群管理工具Borg。 Kubernetes集群组件逻辑图…...

C# 两个进程/exe通讯方式 两个应用程序通讯方式

C# 两个exe通讯方式 两个应用程序通讯方式 1. 命名管道&#xff08;Named Pipes&#xff09; 1.1. 概述 命名管道是一种用于在同一台机器或网络中不同进程之间进行双向通信的机制。它支持同步和异步通信&#xff0c;适用于需要高效数据传输的场景。 1.2. 特点 双向通信&am…...

ubuntu下打开摄像头

ubuntu下打开摄像头 在Ubuntu下,你可以使用cheese,这是一个开源的摄像头应用程序。如果你还没有安装它,可以通过以下命令安装: sudo apt-get updatesudo apt-get install cheese 安装完成后,你可以通过命令行启动它: cheese 或者,你也可以使用ffmpeg来打开摄像头并进…...

ABAP 表转JSON格式

FUNCTION ZRFC_FI_SEND_PAYPLAN2BPM. *"---------------------------------------------------------------------- *"*"本地接口&#xff1a; *" IMPORTING *" VALUE(INPUT) TYPE ZSRFC_FI_SEND_PAYBPM_IN *" EXPORTING *" VAL…...

oceanbase的日志量太大,撑爆磁盘,修改下日志级别

oceanbase的日志量太大&#xff0c;撑爆磁盘&#xff0c;修改下日志级别&#xff1a; [adminlnpg ~]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123 Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221561020 Server version: O…...

【C++11】lambda表达式

前言&#xff1a; 随着 C11 的发布&#xff0c;C 标准引入了许多新特性&#xff0c;使语言更加现代化&#xff0c;开发者编写的代码也变得更加简洁和易于维护。Lambda 表达式是其中一个重要的特性&#xff0c;它提供了一种方便的方式来定义匿名函数&#xff0c;这在函数式编程范…...

前端学习-css的背景(十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 背景颜色 语法格式 背景图片 语法格式 背景平铺 语法格式 背景图片位置 语法格式 参数代表的意思 参数是方位名词 参数是精确单位 参数是混合单位 背…...

使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…...

ssh连接慢的问题或远程连接服务超时

问题原因&#xff1a; 在SSH登录过程中&#xff0c;服务器会通过反向DNS查找客户端的主机名&#xff0c;然后与登录的IP地址进行匹配&#xff0c;以验证登录的合法性。如果客户端的IP没有域名或DNS服务器响应缓慢&#xff0c;这可能导致SSH登录过慢。为了解决这个问题&#xf…...

基于卷积神经网络的蔬菜识别系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于卷积神经网络的蔬菜识别系统&#xff0c;resnet50&#xff0c;mobilenet【pytorch框架&#xff0c;python&#xff0c;tkinter】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神…...

数据结构与算法:栈与队列的高级应用

目录 3.1 栈的高级用法 3.2 队列的深度应用 3.3 栈与队列的综合应用 总结 数据结构与算法&#xff1a;栈与队列的高级应用 栈和队列是两种重要的线性数据结构&#xff0c;它们在计算机科学和工程的许多领域都有广泛的应用。从函数调用到表达式求值&#xff0c;再到任务调度…...

macos php开发环境之macport安装的php扩展安装,php常用扩展安装,port中可用的所有php扩展列表

macos中&#xff0c;我们使用了port 安装了php后&#xff0c;默认只带有php基本的核心扩展的&#xff0c; 如果需要使用其他的扩展&#xff0c;如 redis, https&#xff0c; xdebug等扩展就需要我们手动来安装对应的扩展。 macos php开发环境 macport安装的php的方法见macos 中…...

使用Pytorch+Numpy+Matplotlib实现手写字体分类和图像显示

文章目录 1.引用2.内置图片数据集加载3.处理为batch类型4.设置运行设备5.查看数据6.绘图查看数据图片(1)不显示图片标签(2)打印图片标签(3)图片显示标签 7.定义卷积函数8.卷积实例化、损失函数、优化器9.训练和测试损失、正确率(1)训练(2)测试(3)循环(4)损失和正确率曲线(5)输出…...

kimi帮我解决ubuntu下软链接文件夹权限不够的问题

我的操作如下 ubuntuubuntu-QiTianM420-N000:~$ ln -s /media/ubuntu/4701aea3-f883-40a9-b12f-61e832117414 code ubuntuubuntu-QiTianM420-N000:~$ ls -l 总用量 636 drwxrwxr-x 2 ubuntu ubuntu 4096 5月 7 17:16 bin drwxrwxrwx 2 ubuntu ubuntu 4096 5月 8 13…...

如何去除背景音乐保留人声?保留人声,消除杂音

在日常生活和工作中&#xff0c;我们经常遇到需要处理音频的情况&#xff0c;尤其是当我们想要去除背景音乐&#xff0c;仅保留人声时。这种需求在处理电影片段、制作音乐MV、或者提取演讲内容等场景中尤为常见。本文将为您详细介绍如何去除背景音乐并保留人声&#xff0c;帮助…...

2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数

2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数 2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数 文章目录 2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数KfRaiseIrql 函数 KfRaiseIrql 函数 /*********************************************************************** NAME …...

【新书】使用 OpenAI API 构建 AI 应用:利用 ChatGPT等构建 10 个 AI 项目(第二版),404页pdf

通过构建 ChatGPT 克隆、代码错误修复器、测验生成器、翻译应用、自动回复邮件生成器、PowerPoint 生成器等项目&#xff0c;提升您的应用开发技能。 关键特性 通过掌握 ChatGPT 概念&#xff08;包括微调和集成&#xff09;&#xff0c;转变为 AI 开发专家 通过涵盖广泛 AI …...

修改PostgreSQL表中的字段排列顺序

二、通过修改系统表(pg_attribute)达到字段重新排序的目的有关系统表的概述及用途可以查看官网&#xff1a;http://www.pgsqldb.org/pgsqldoc-cvs/catalogs.html 表名字表用途pg_class表&#xff0c;索引&#xff0c;序列&#xff0c;视图&#xff08;”关系”&#xff09;pg_…...

canvas实现手写功能

1.从接口获取手写内容&#xff0c;处理成由单个字组成的数组&#xff08;包括符号&#xff09; 2.合成所有图的时候&#xff0c;会闪现outputCanvas合成的图&#xff0c;注意隐藏 3.可以进行多个手写内容切换 4.基于uniapp的 <template><view class"content&quo…...

Python知识点:基于Python技术,如何使用TensorFlow进行目标检测

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 使用TensorFlow进行目标检测的完整指南 目标检测是计算机视觉领域中的一项重要任…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...