2024年k8s最新版本安装教程
k8s安装教程
- 1 k8s介绍
- 2 环境搭建
- 2.1 主机准备
- 2.2 主机初始化
- 2.2.1 安装wget
- 2.2.2 更换yum源
- 2.2.3 常用软件安装
- 2.2.4 关闭防火墙
- 2.2.5 关闭selinux
- 2.2.6 关闭 swap
- 2.2.7 同步时间
- 2.2.8 修改Linux内核参数
- 2.2.9 配置ipvs功能
- 2.3 容器安装
- 2.3.1 设置软件yum源
- 2.3.2 安装docker软件
- 2.3.3 配置加速器
- 2.4 cri环境搭建
- 2.4.1 软件下载
- 2.4.2 安装配置
- 2.5 k8s环境安装
- 2.5.1 指定k8s源
- 2.5.2 安装kubeadm kubelet kubectl
- 2.5.3 在master节点检查镜像文件列表
- 2.5.4 在master节点上获取镜像文件
- 2.5.5 在master节点初始化
- 2.5.6 在node节点加入master节点
- 2.5.7 网络插件安装
1 k8s介绍
kubernetes,k和s直接是8个字母,简称k8s。是采用Go语言开发的。于2014年9月发布第一个版本,2015年7月发布第一个正式版本。
官网:https://kubernetes.io
代码仓库:https://github.com/kubernetes/kubernetes

kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:
- 自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器
- 弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整
- 服务发现:服务可以通过自动发现的形式找到它所依赖的服务
- 负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡
- 版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本
- 存储编排:可以根据容器自身的需求自动创建存储卷

2 环境搭建
这里配一个一主两从的示意图
2.1 主机准备
| 序号 | 主机IP | 配置 | 备注 |
|---|---|---|---|
| 1 | 192.168.123.92 | CPU:4核,内存:4G,硬盘:40GB | k8s-master |
| 2 | 192.168.123.93 | CPU:2核,内存:4G,硬盘:40GB | k8s-node1 |
| 3 | 192.168.123.94 | CPU:2核,内存:4G,硬盘:40GB | k8s-node2 |
# 序号1主机终端操作,操作完毕断开重连
hostnamectl set-hostname k8s-master# 序号2主机终端操作,操作完毕断开重连
hostnamectl set-hostname k8s-node1# 序号3主机终端操作,操作完毕断开重连
hostnamectl set-hostname k8s-node2# 三台主机都需要操作:hosts解析
# vim /etc/hosts192.168.123.92 k8s-master
192.168.123.93 k8s-node1
192.168.123.94 k8s-node2
2.2 主机初始化
2.2.1 安装wget
yum -y install wget
2.2.2 更换yum源
这里是CentOS7操作系统,更换成阿里yum源
# 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak# 下载镜像源
wget -c http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo# 重新生成缓存
yum clean all && yum makecache
2.2.3 常用软件安装
yum -y install vim lrzsz tree
2.2.4 关闭防火墙
systemctl stop firewalldsystemctl disable firewalld
2.2.5 关闭selinux
# 临时生效
setenforce 0
# 永久生效
# vim /etc/selinux/config
# 将SELINUX=的值改成disabled,即:SELINUX=disabled
2.2.6 关闭 swap
# 临时关闭
swapoff -a
# 永久生效
# vim /etc/fstab
# 将 [/dev/mapper/centos-swap swap swap defaults 0 0] 这一行注释掉
2.2.7 同步时间
# 安装
yum -y install chrony# vim /etc/chrony.conf 注释下面内容
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst# 新增阿里时间服务器
server ntp.aliyun.com iburst# 保存退出后,设置开机自启,重新加载配置,重启服务
systemctl enable chronyd
systemctl daemon-reload
systemctl restart chronyd# 验证是否设置成功
# 方式一
chronyc sources
# 方式二
date
2.2.8 修改Linux内核参数
cat >> /etc/sysctl.d/k8s.conf << EOF
# 内核参数调整
vm.swappiness=0
# 配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF# 配置生效,加载网桥过滤模块
modprobe br_netfilter
modprobe overlay# 重新加载
sysctl -p /etc/sysctl.d/k8s.conf
# 终端输出如下
# vm.swappiness = 0
# net.bridge.bridge-nf-call-ip6tables = 1
# net.bridge.bridge-nf-call-iptables = 1
# net.ipv4.ip_forward = 1
2.2.9 配置ipvs功能
# 安装ipset和ipvsadm
yum install ipset ipvsadm -y# 添加需要加载的模块写入脚本文件
cat >> /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF# 为脚本文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules# 执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules# 查看对应的模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
# 终端输出如下
# ip_vs_sh 12688 0
# ip_vs_wrr 12697 0
# ip_vs_rr 12600 0
# ip_vs 145458 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
# nf_conntrack 139264 1 ip_vs
# libcrc32c 12644 3 xfs,ip_vs,nf_conntrack
2.3 容器安装
2.3.1 设置软件yum源
# yum-config-manager命令能用,需要安装的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2# 新增docker阿里镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3.2 安装docker软件
# 这里不指定版本,安装的是最新版docker
yum install -y docker-ce
2.3.3 配置加速器
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://afnsj47q.mirror.aliyuncs.com"], # 私有仓配置# "insecure-registries": ["域名或ip"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF[root@k8s-master ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": [# 个人阿里云加速器配置"https://afnsj47q.mirror.aliyuncs.com"], # 私有仓配置# "insecure-registries": ["域名或ip"],"exec-opts": ["native.cgroupdriver=systemd"]
}
# 重启加载配置,设置开机自启并开启docker服务
systemctl daemon-reload
systemctl enable docker
systemctl start docker
2.4 cri环境搭建
2.4.1 软件下载
软件地址:https://github.com/Mirantis/cri-dockerd/releases
# 这里下载的是cri最新版本
wget -c https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.8/cri-dockerd-0.3.8.amd64.tgz
2.4.2 安装配置
# 解压下载文件
tar -xvf cri-dockerd-0.3.8.amd64.tgz -C /usr/local
mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin
cri-dockerd --version
# cri-dockerd交给systemd管理的配置文件
cat > /etc/systemd/system/cri-dockerd.service<<-EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --
cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOFcat > /etc/systemd/system/cri-dockerd.socket <<-EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
# 加载配置,设置开启自启并启动服务
systemctl daemon-reload
systemctl enable cri-dockerd
systemctl start cri-dockerd
2.5 k8s环境安装
2.5.1 指定k8s源
这里使用阿里的yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
2.5.2 安装kubeadm kubelet kubectl
# 安装kubeadm kubelet kubectl
yum -y install kubeadm kubelet kubectl# 设置kubelet开机自启和启动
systemctl enable kubelet && systemctl restart kubelet
2.5.3 在master节点检查镜像文件列表
[root@k8s-master ~]# kubeadm config images list
I1220 18:09:30.152344 26378 version.go:256] remote version is much newer: v1.29.0; falling back to: stable-1.28
registry.k8s.io/kube-apiserver:v1.28.4
registry.k8s.io/kube-controller-manager:v1.28.4
registry.k8s.io/kube-scheduler:v1.28.4
registry.k8s.io/kube-proxy:v1.28.4
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.9-0
registry.k8s.io/coredns/coredns:v1.10.1
2.5.4 在master节点上获取镜像文件
# cat images.sh
#!/usr/bin/env bash
images=$(kubeadm config images list --kubernetes-version=1.28.4 | awk -F'/' '{print $NF}')
for i in ${images}
dodocker pull registry.aliyuncs.com/google_containers/$idocker tag registry.aliyuncs.com/google_containers/$i registry.k8s.io/$idocker rmi registry.aliyuncs.com/google_containers/$i
done
下载后一个不满足,需要再手动修改下
docker tag registry.k8s.io/coredns:v1.10.1 registry.k8s.io/coredns/coredns:v1.10.1
docker rmi registry.k8s.io/coredns:v1.10.1# kubeadm config images list 和 docker images保持一致了
[root@centos ~]# kubeadm config images list
I1215 08:55:02.856427 14692 version.go:256] remote version is much newer: v1.29.0; falling back to: stable-1.28
registry.k8s.io/kube-apiserver:v1.28.4
registry.k8s.io/kube-controller-manager:v1.28.4
registry.k8s.io/kube-scheduler:v1.28.4
registry.k8s.io/kube-proxy:v1.28.4
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.9-0
registry.k8s.io/coredns/coredns:v1.10.1
[root@centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.k8s.io/kube-apiserver v1.28.4 7fe0e6f37db3 4 weeks ago 126MB
registry.k8s.io/kube-controller-manager v1.28.4 d058aa5ab969 4 weeks ago 122MB
registry.k8s.io/kube-scheduler v1.28.4 e3db313c6dbc 4 weeks ago 60.1MB
registry.k8s.io/kube-proxy v1.28.4 83f6cc407eed 4 weeks ago 73.2MB
registry.k8s.io/etcd 3.5.9-0 73deb9a3f702 7 months ago 294MB
registry.k8s.io/coredns/coredns v1.10.1 ead0a4a53df8 10 months ago 53.6MB
registry.k8s.io/pause 3.9 e6f181688397 14 months ago 744kB
2.5.5 在master节点初始化
# 直接初始化
kubeadm init --kubernetes-version=1.28.4 \
--node-name=k8s-master \
--apiserver-advertise-address=192.168.123.92 \
--image-repository registry.k8s.io \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///var/run/cri-dockerd.sock
# 重置并初始化
kubeadm reset -f --cri-socket=unix:///var/run/cri-dockerd.sock && kubeadm init --kubernetes-version=1.28.4 \
--node-name=k8s-master \
--apiserver-advertise-address=192.168.123.92 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///var/run/cri-dockerd.sock
master节点初始化成功,终端显示
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/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.123.92:6443 --token jy6fvz.3zf24v9sb5f4dto2 \--discovery-token-ca-cert-hash sha256:d0d61ece9c05b8ffcc4b246dfedf139dab7a701618e11621934575844216aee4
跟进终端提示,主节点操作
mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && chown $(id -u):$(id -g) $HOME/.kube/config
2.5.6 在node节点加入master节点
node节点加入主节点,在其node节点运行
# 直接加入
kubeadm join 192.168.123.92:6443 --token jy6fvz.3zf24v9sb5f4dto2 \--discovery-token-ca-cert-hash sha256:d0d61ece9c05b8ffcc4b246dfedf139dab7a701618e11621934575844216aee4 \--cri-socket=unix:///var/run/cri-dockerd.sock
# 重置并加入
kubeadm reset -f --cri-socket=unix:///var/run/cri-dockerd.sock && kubeadm join 192.168.123.92:6443 --token jy6fvz.3zf24v9sb5f4dto2 \--discovery-token-ca-cert-hash sha256:d0d61ece9c05b8ffcc4b246dfedf139dab7a701618e11621934575844216aee4 \--cri-socket=unix:///var/run/cri-dockerd.sock
重新生成加入节点token
kubeadm token create --print-join-command
设置kubectl命令可以在node节点操作
scp -r $HOME/.kube 192.168.123.93:$HOME/
至此kubeadm命令工作完成,kubectl命令开始工作
2.5.7 网络插件安装
只在master节点操作即可
安装网络插件kube-flannel
# 打开https://site.ip138.com/网站查询raw.githubusercontent.com网址的域名解析,然后配置到/etc/hosts
# 521github.com# 用wget命令下载kube-flannel.yml文件
wget --no-check-certificat https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 主节点执行
kubectl apply -f kube-flannel.yml
安装网络插件calico
官方网址:https://docs.tigera.io/
# 打开https://site.ip138.com/网站查询raw.githubusercontent.com网址的域名解析,然后配置到/etc/hosts
# 下载calico.yaml
# https://docs.tigera.io/calico/latest/getting-started/kubernetes/self-managed-onprem/onpremises
wget --no-check-certificat https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml# 官方提供的yaml文件中,ip识别策略(IPDETECTMETHOD)没有配置,即默认为first-found,这会导致一个网络异常的ip作为nodeIP被注册,从而影响node-to-nodemesh。# 解决方法
vim calico.yaml:/CLUSTER_TYPE# 在下添加:- name: IP_AUTODETECTION_METHODvalue: "interface=ens192" # 192为Linux执行ip a或ifconfig的名称# 验证
kubectl get po -n kube-system
至此,k8s最新版集群环境搭建完毕
相关文章:
2024年k8s最新版本安装教程
k8s安装教程 1 k8s介绍2 环境搭建2.1 主机准备2.2 主机初始化2.2.1 安装wget2.2.2 更换yum源2.2.3 常用软件安装2.2.4 关闭防火墙2.2.5 关闭selinux2.2.6 关闭 swap2.2.7 同步时间2.2.8 修改Linux内核参数2.2.9 配置ipvs功能 2.3 容器安装2.3.1 设置软件yum源2.3.2 安装docker软…...
Gin 获取请求参数
POST 请求参数 Gin 获取Post请求URL参数有三种方式 func (c *Context) PostForm(key string) string func (c *Context) DefaultPostForm(key, defaultValue string) string func (c *Context) GetPostForm(key string) (string, bool)大多数情况下使用的是application/x-www…...
安卓 Kotlin 面试题 31-40
🔥 31、简述Kotlin 中的内联类,我们什么时候需要?🔥 有时,业务逻辑需要围绕某种类型创建包装器。 但是,由于额外的堆分配,它会引入运行时开销。 此外,如果包装的类型是原始类型&…...
【洛谷千题详解】P1613 跑路
目录 题目总览 题目描述 输入格式 输出格式 思路分析 AC代码 题目总览 题目描述 小 A 的工作不仅繁琐,更有苛刻的规定,要求小 A 每天早上在 6:00 之前到达公司,否则这个月工资清零。可是小 A 偏偏又有赖床的坏毛病。于是为了保住自己的…...
如何定义resultType和resultMap,它们之间的区别是什么?解释一下<parameterType>的作用和用法。
在MyBatis中,resultType和resultMap都用于将数据库查询结果映射到Java对象,但它们在使用方式和灵活性上有一些区别。 resultType resultType是一个简单的类型别名,它用于指定查询结果应该映射到的Java类型。当数据库表中的列名和Java对象的属…...
Docker:部署微服务集群
1. 部署微服务集群 实现思路: ① 查看课前资料提供的cloud-demo文件夹,里面已经编写好了docker-compose文件 ② 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名 ③ 使用maven打包工具,将项目…...
傅里叶变换pytorch使用
参考视频:1 傅里叶变换原理_哔哩哔哩_bilibili 傅里叶变换是干嘛的: 傅里叶得到低频、高频信息,针对低频、高频处理能够实现不同的目的。 傅里叶过程是可逆的,图像经过傅里叶变换、逆傅里叶变换后,能够恢复到原始图像…...
LeetCode104 二叉树的最大深度
题目 给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,…...
使用Spring的AOP
使用Spring的AOP 一、AOP 的常用注解1.切面类Aspect2.Pointcut3.前置通知Before4.后置通知AfterReturning5.环绕通知Around6.异常通知AfterThrowing7.最终通知After8.切面顺序Order9.启用自动代理EnableAspectJAutoProxy 二、AOP注解方式开发三、AOP 全注解开发四、基于XML配置…...
爬虫之矛---JavaScript基石篇3<JavaScript构造函数的内部机制和应用(2)>
前言: 继续上一篇https://blog.csdn.net/m0_56758840/article/details/136592611 正文: 1.ES6中的类和构造函数的对应关系 A. 介绍ES6引入的类的概念和语法糖 类的概念: ES6引入了类(class)的概念,类是一种抽象的数据类型&…...
_note_05
1.说一说什么是函数重载? 函数签名相同除了 形参不同数据类型 函数签名相同除了 形参不同个数 2.void关键字的作用?返回值是void ,可以写return 吗? 函数无返回,使用void修饰; 可以只使用return使函数结束; 3.按要…...
将格蠹GDK8的cmake3.10升级为cmake3.15
#升级过程# 1、wget https://cmake.org/files/v3.15/cmake-3.15.0-rc1.tar.gz 2、tar -zxvf cmake-3.15.0-rc1.tar.gz 3 、cd cmake-3.15.0-rc1 4、./configure 5、sudo make install 6、reboot 7、查看cmake版本: geduergdk8:~$ cmake --version cmake ve…...
b树(一篇文章带你 理解 )
目录 一、引言 二、B树的基本定义 三、B树的性质与操作 1 查找操作 2 插入操作 3 删除操作 四、B树的应用场景 1 数据库索引 2 文件系统 3 网络路由表 五、哪些数据库系统不使用B树进行索引 1 列式数据库 2 图形数据库 3 内存数据库 4 NoSQL数据库 5 分布式数据…...
OD_2024_C卷_200分_7、5G网络建设【JAVA】【最小生成树】
package odjava;import java.util.Scanner;public class 七_5G网络建设 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 基站数量(节点数)int m sc.nextInt(); // 基站对数量(边数&…...
面试题:分布式锁用了 Redis 的什么数据结构
在使用 Redis 实现分布式锁时,通常使用 Redis 的字符串(String)。Redis 的字符串是最基本的数据类型,一个键对应一个值,它能够存储任何形式的字符串,包括二进制数据。字符串类型的值最多可以是 512MB。 Re…...
【学习心得】websocket协议简介并与http协议对比
一、轮询和长轮询 在websocket协议出现之前,要想实现服务器和客户端的双向持久通信采取的是Ajax轮询。它的原理是每隔一段时间客户端就给服务器发送请求找服务器要数据。 让我们通过一个生活化的比喻来解释轮询和长轮询假设你正在与一位不怎么主动说话的老大爷&…...
基于Token的身份验证:安全与效率的结合
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
Electron程序如何在MacOS下获取相册访问权限
1.通过entitiment.plist,在electron-builder签名打包时,给app包打上签名。最后可以通过codesign命令进行验证。 TestPhotos.plist electron-builder配置文件中加上刚刚的plist文件。 通过codesign命令验证,若出现这个,则说明成…...
uniapp让输入框保持聚焦状态,不会失去焦点
使用场景:当输入框还有发送按钮的时候,点击发送希望软键盘不消失,还可以继续输入,或者避免因输入图片标签造成的屏闪问题 多次尝试后发现一个很实用的方法,适用input输入框和editor输入框 解决办法:把cli…...
面试中如何介绍mysql的B+树
B树是B树的变体,也是一颗多路搜索树。在MySQL中,B树是为磁盘或者其他直接辅助存储设备所设计的一种平衡的查找树结构。其具有以下特点: 每个节点最多有m个子女,m阶的B树深度最多为m。非根节点关键值个数范围是⌈m/2⌉-1<k<m…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
