云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)
目录
一、理论
1.K8S集群升级
2.环境
3.升级策略
4.master1节点迁移容器运行时(docker → containerd)
5.master2节点迁移容器运行时(docker → containerd)
6.node1节点容器运行时迁移(docker → containerd)
7.升级集群计划(v1.23.14 → v1.24.1)
8.升级master1节点版本(v1.24.1)
9.升级master2节点版本(v1.24.1)
10.升级node1节点版本(v1.24.1)
11.验证集群(v1.24.1)
二、实验
1. 环境
2.master1节点迁移容器运行时(docker → containerd)
3.master2节点迁移容器运行时(docker → containerd)
4.node1节点迁移容器运行时(docker → containerd)
5.升级集群计划(v1.23.14 → v1.24.1)
6.升级master1节点版本(v1.24.1)
7.升级 master2节点版本(v1.24.1)
8.升级 node1节点版本(v1.24.1)
9.验证集群(v1.24.1)
一、理论
1.K8S集群升级
(1)概念
搭建K8S集群的方式有很多种,比如二进制,kubeadm,RKE(Rancher)等,K8S集群升级方式也各有千秋,目前准备使用kubeadm方式搭建的k8s集群升级方法。
需要注意的是,升级集群版本建议逐步升级,比如v1.21.1–>v1.22.1–>v1.23.1–>v1.24.1,不能跨度过大,否则会报错。
2.环境
(1)主机(容器运行时)
表1 主机(容器运行时)
| 主机 | 架构 | 当前容器运行时 | 目标容器运行时 | IP |
|---|---|---|---|---|
| master1 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.180 |
| master2 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.181 |
| node1 | K8S node节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.182 |
(2)主机 (集群版本)
表2 主机(集群版本)
| 主机 | 架构 | 当前版本 | 目标版本 | IP |
|---|---|---|---|---|
| master1 | K8S master节点 | v1.23.14 | v1.24.1 | 192.168.204.180 |
| master2 | K8S master节点 | v1.23.14 | v1.24.1 | 192.168.204.181 |
| node1 | K8S node节点 | v1.23.14 | v1.24.1 | 192.168.204.182 |
3.升级策略
(1)升级策略1
先迁移容器运行时为containerd:
docker → containerd
(2)升级策略2
然后升级集群版本到v1.24.1:
v1.23.14 → v1.24.1
4.master1节点迁移容器运行时(docker → containerd)
(1)确定迁移容器运行时
可以看到目前的容器运行时是docker 20.10.6。
kubectl get nodes -owide #查看容器运行时
(2)迁移master1
kubectl drain master1 --delete-emptydir-data --force --ignore-daemonsets #对k8s控制节点xianchaomaster1进行drain
(3)关闭并卸载Docker
systemctl disable docker --now #先启动dockeryum remove docker-ce docker-ce-cli -y #卸载
(4)安装并配置containerd
yum install containerd.io cri-tools -y # 安装crictl config runtime-endpoint unix:///var/run/containerd/containerd.sockcontainerd config default > /etc/containerd/config.toml #生成配置文件vim /etc/containerd/config.toml #使用vim编辑器打开,分别搜素mirrors、sandbox、SystemdCgroup并修改
(5)重启containerd服务
systemctl enable containerd ; systemctl restart containerd # 重启systemctl status containerd # 查看服务状态
(6)配置并启动kubelet
vim /etc/sysconfig/kubelet #设置kubelet启动参数systemctl restart kubelet #重启kubelet服务
(7)对master节点进行uncordon
kubectl uncordon master1 #解除维护
(8)验证
kubectl get nodes -owide #验证是否把容器运行时由docker迁移到containerd
5.master2节点迁移容器运行时(docker → containerd)
(1)确定迁移容器运行时
可以看到目前的容器运行时是docker 20.10.6。
kubectl get nodes -owide #查看容器运行时
(2)迁移master2
kubectl drain master2 --delete-emptydir-data --force --ignore-daemonsets #对k8s控制节点xianchaomaster1进行drain
(3)关闭并卸载Docker
systemctl disable docker --now #先启动dockeryum remove docker-ce docker-ce-cli -y #卸载
(4)安装并配置containerd
yum install containerd.io cri-tools -y # 安装crictl config runtime-endpoint unix:///var/run/containerd/containerd.sockcontainerd config default > /etc/containerd/config.toml #生成配置文件vim /etc/containerd/config.toml #使用vim编辑器打开,分别搜素mirrors、sandbox、SystemdCgroup并修改
(5)重启containerd服务
systemctl enable containerd ; systemctl restart containerd # 重启systemctl status containerd # 查看服务状态
(6)配置并启动kubelet
vim /etc/sysconfig/kubelet #设置kubelet启动参数systemctl restart kubelet #重启kubelet服务
(7)对master2节点进行uncordon
kubectl uncordon master2 #解除维护
(8)验证
kubectl get nodes -owide #验证是否把容器运行时由docker迁移到containerd
6.node1节点容器运行时迁移(docker → containerd)
(1) 迁移node1节点
kubectl drain node1 --delete-emptydir-data --force --ignore-daemonsets #对k8s工作节点xianchaonode1进行drain
(2)关闭并卸载Docker
systemctl disable docker --now # 关闭yum remove docker-ce docker-ce-cli -y # 卸载
(3)安装并配置containerd
yum install containerd.io cri-tools -y #安装crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock # 配置containerd config default > /etc/containerd/config.toml #生成配置文件vim /etc/containerd/config.toml #使用vim编辑器打开,分别搜素mirrors、sandbox、SystemdCgroup并修改
(4)重启containerd服务
systemctl enable containerd ; systemctl restart containerd # 重启
(5)配置并启动kubelet
vim /etc/sysconfig/kubelet #设置kubelet启动参数systemctl restart kubelet #重启kubelet服务kubectl get nodes -owide #查看pod
(6)对node1节点进行uncordon
kubectl uncordon node1 #解除维护
(7)验证
kubectl get nodes -owide #验证是否把容器运行时由docker迁移到containerd
(8)查看
kubectl get pods -n kube-system #查看集群
7.升级集群计划(v1.23.14 → v1.24.1)
(1)查看集群
kubectl get nodes -owide # 查看集群版本
(2)修改master1节点kubelet参数
kubectl edit nodes master1 #修改systemctl restart kubelet #重启
(3)修改master2节点kubelet参数
kubectl edit nodes master2 #修改systemctl restart kubelet #重启
(4)修改node1节点kubelet参数
kubectl edit nodes node1 #修改systemctl restart kubelet #重启
(5)确定升级版本
# 执行如下命令确定升级版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes
我的目标版本是1.24.1-0。
8.升级master1节点版本(v1.24.1)
(1)在k8s控制节点master1安装kubeadm1.24.1
yum install -y kubeadm-1.24.1-0 --disableexcludes=kubernetes
(2)腾空控制节点master1
kubectl drain master1 --delete-emptydir-data --force --ignore-daemonsets
(3)升级控制节点master1各个组件
kubeadm upgrade apply v1.24.1
(4)升级kubectl和kubelet到1.24.1
yum install -y kubelet-1.24.1-0 kubectl-1.24.1-0 --disableexcludes=kubernetes
(5)修改kubelet参数
vim /var/lib/kubelet/kubeadm-flags.env
(6)重启kubelet
systemctl daemon-reload; systemctl restart kubelet
(7)解除master1的节点维护
kubectl uncordon master1
(8)查看节点状态
kubectl get nodes
9.升级master2节点版本(v1.24.1)
(1)在k8s控制节点master1安装kubeadm1.24.1
yum install -y kubeadm-1.24.1-0 --disableexcludes=kubernetes
(2)腾空控制节点master1
kubectl drain master2 --delete-emptydir-data --force --ignore-daemonsets
(3)升级控制节点master1各个组件
kubeadm upgrade apply v1.24.1
(4)升级kubectl和kubelet到1.24.1
yum install -y kubelet-1.24.1-0 kubectl-1.24.1-0 --disableexcludes=kubernetes
(5)修改kubelet参数
vim /var/lib/kubelet/kubeadm-flags.env
(6)重启kubelet
systemctl daemon-reload; systemctl restart kubelet
(7)解除master1的节点维护
kubectl uncordon master2
(8)查看节点状态
kubectl get nodes
10.升级node1节点版本(v1.24.1)
(1)在k8s工作节点node1安装kubeadm1.24.1
yum install -y kubeadm-1.24.1-0 --disableexcludes=kubernetes
(2)腾空控制节点master1
kubectl drain node1 --delete-emptydir-data --force --ignore-daemonsets
(3)升级node1上的kubelet
kubeadm upgrade node
(4)修改kubelet参数
vim /var/lib/kubelet/kubeadm-flags.env
(5)升级kubelet和kubectl
yum install -y kubelet-1.24.1-0 kubectl-1.24.1-0 --disableexcludes=kubernetes
(6)重启kubelet
systemctl daemon-reload; systemctl restart kubelet
(7)解除node11的节点维护
kubectl uncordon node1
11.验证集群(v1.24.1)
(1)验证集群状态是否正常
kubectl get nodes# 结果如下:
[root@master1 ~]# kubectl get nodes
版本均已升级到 v1.24.1。
(2) 查看集群服务状态
kubectl get pods -n kube-system
二、实验
1. 环境
(1)主机(容器运行时)
表1 主机(容器运行时)
| 主机 | 架构 | 当前容器运行时 | 目标容器运行时 | IP |
|---|---|---|---|---|
| master1 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.180 |
| master2 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.181 |
| node1 | K8S node节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.182 |
(2)主机 (集群版本)
表2 主机(集群版本)
| 主机 | 架构 | 当前版本 | 目标版本 | IP |
|---|---|---|---|---|
| master1 | K8S master节点 | v1.23.14 | v1.24.14 | 192.168.204.180 |
| master2 | K8S master节点 | v1.24.14 | v1.24.14 | 192.168.204.181 |
| node1 | K8S node节点 | v1.24.14 | v1.24.14 | 192.168.204.182 |
2.master1节点迁移容器运行时(docker → containerd)
(1)确定迁移容器运行时
可以看到目前的容器运行时是docker 20.10.6。
(2)迁移master1
(3)关闭并卸载Docker
先启动docker,再卸载

(4)安装并配置containerd
① 安装

② 生成配置文件

③ 使用vim编辑器打开

④第一步:搜素mirrors,并修改(原来一行变三行)
修改前:

修改后:

⑤ 第二步:搜索sandbox,并修改。
修改前:
![]()
修改后:
⑥ 第三步:搜索SystemdCgroup,并修改。
修改前:

修改后:
![]()
(5)重启containerd服务
① 重启

②查看服务

(6)配置并启动kubelet
① 设置

②修改
③ 重启kubelet服务

④这时查看pod,master1为SchedulingDisabled,容器运行时还未更新

(7)对master1节点进行uncordon
(8)验证(此时master1可以调度)
3.master2节点迁移容器运行时(docker → containerd)
(1)迁移master2
(2)关闭并卸载Docker
先启动

卸载

(4)安装并配置containerd
① 安装

② ⑩配置

③ 生成配置文件

④ 使用vim编辑器打开
![]()
⑤第一步:搜素mirrors,并修改(原来一行变三行)

⑥第二步:搜索sandbox,并修改。

⑦ 第三步:搜索SystemdCgroup,并修改。

(5)重启containerd服务
① 重启

② 查看服务

(6)配置并启动kubelet
①设置

② 修改

③ 重启

④ 这时查看pod,master2为SchedulingDisabled,容器运行时已更新

(7)对master2节点进行uncordon
(8)验证(此时master2可以调度)
4.node1节点迁移容器运行时(docker → containerd)
(1) 迁移node1节点
(2)关闭并卸载Docker
关闭并卸载

(3)安装并配置containerd
① 安装

② 配置

③生成配置文件

④ 使用vim编辑器打开

⑤ 第一步:搜素mirrors,并修改(原来一行变三行)。

⑥第二步:搜索sandbox,并修改。

⑦ 第三步:搜索SystemdCgroup,并修改。

(4)重启containerd服务
① 重启
② 查看服务

(5)配置并启动kubelet
① 设置

② 这时查看pod,node1为SchedulingDisabled,容器运行时已更新

(6)对node节点进行uncordon
(7)验证 (此时node1可以调度)
(8)查看
5.升级集群计划(v1.23.14 → v1.24.1)
(1)确定升级版本
可以看到目前的版本是v1.23.14。
(2)修改节点kubelet参数(在runtime由docker迁移到containerd之后做)
①修改master1节点

修改前:

修改后:

②重启

③修改master2节点

修改前:

修改后:

④重启

⑤修改node1节点

修改前:

修改后:

④重启

(3)确定升级计划
执行如下命令确定升级版本

我的目标版本是1.24.1-0。
6.升级master1节点版本(v1.24.1)
(1)在k8s控制节点master1安装kubeadm1.24.1

(2)腾空控制节点master1

(3)升级控制节点master1各个组件

成功

(4)升级kubectl和kubelet到1.24.1
![]()
(5)修改kubelet参数

修改前:

修改后:

(6)重启kubelet
![]()
(7)解除master1的节点维护

(8)查看节点状态(master1已升级为v1.24.1)


7.升级 master2节点版本(v1.24.1)
(1)在k8s控制节点master2安装kubeadm1.24.1

(2)腾空控制节点master2

(3)升级master2节点

成功:

(4)升级kubectl和kubelet到1.24.1

(5)修改kubelet参数
![]()
修改前:

修改后:

(6)重启kubelet
(7)查看节点状态(master1和master2都已升级为v1.24.1)

8.升级 node1节点版本(v1.24.1)
(1)在node1节点上安装kubeadm 1.24.1

(2)腾空节点node1(驱逐node1的pod)

(3)升级node1上的kubelet

(4)修改kubelet变量
![]()
修改前:

修改后:

(5)升级kubelet和kubectl

(6)解除对node1的保护

9.验证集群(v1.24.1)
(1)验证集群状态是否正常

版本均已升级到 v1.24.1。
(2) 查看集群服务状态

相关文章:
云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)
目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd) 5.master2节点迁移容器运行时(docker → containerd) 6.node1节点容器运行时迁移(docker → containerd) 7.升级集群计划(v1.23.14 → v1.24.1&#…...
Redis 数据结构和常用命令
* 代表多个,?代表一个 (不用全部敲出来,按住tab可以自动补全) -2是无效,-1是永久有效 ;贴心小提示:内存非常宝贵,对于一些数据,我们应当给他一些过期时间&a…...
Docker 容器命令总汇
目录 1、创建Docker容器(不启动) 2、创建Docker容器(启动) 3、列出正在运行的容器 4、停止和启动容器 5、重启容器 6、进入容器 7、查看容器信息 8、查看容器日志 9、删除容器和镜像 10、重命名容器 11、从旧容器复制数…...
react + redux 之 美团案例
1.案例展示 2.环境搭建 克隆项目到本地(内置了基础静态组件和模版) git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务(内置了json-server) npm run serve 启动前端服务 npm…...
【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(2)
本文将详细讲解《形式语言与自动机》(研究生课程)或《编译原理》(本科生课程)中的上下文无关文法(CFG)转换成Greibach范式,再转成下推自动机(NPDA)识别语言是否可以被接受…...
14.用户管理
目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户: 1.使用CREATE USER语创建…...
【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)
就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中创建一个目录,例如/usr/local/arm,然后…...
感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?
导言: 近期,[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法,将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…...
[Linux开发工具]——vim使用
Linux编辑器——vim的使用 一、什么是集成开发环境?二、什么是vim?三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift;进入末行模式。…...
【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)
背景需求: 1、以前做单元格填充,都是制作N个分开的单元格 (表格8) 2、这次做五宫格数独的Word模板,我图方便,就只用了一个大表格,第六行第六列隐藏框线,看上去就是分开的ÿ…...
Spring Boot日志:从Logger到@Slf4j的探秘
写在前面 Hello大家好,今日是2024年的第一天,祝大家元旦快乐🎉 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用?三、日志怎么用?四、自定义日志打印💬 常见日志框架说明4.1 在程序…...
英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置
英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置 1 GTM与ADC的接口2 GTM与VADC的连接2.1 VADC 到 GTM 的连接2.1.1 简要介绍2.1.2 应用举例2.2 EVADC到 GTM的连接2.2.1 应用举例3 总结本文介绍实现GTM与VADC的连接性的相关寄存器配置。 1 GTM与ADC的接口 由英…...
【基础】【Python网络爬虫】【6.数据持久化】Excel、Json、Csv 数据保存(附大量案例代码)(建议收藏)
Python网络爬虫基础 数据持久化(数据保存)1. Excel创建数据表批量数据写入读取表格数据案例 - 豆瓣保存 Excel案例 - 网易新闻Excel保存 2. Json数据序列化和反序列化中文指定案例 - 豆瓣保存Json案例 - Json保存 3. Csv写入csv列表数据案例 - 豆瓣列表保…...
王道考研计算机网络——应用层
如何为用户提供服务? CS/P2P 提高域名解析的速度:local name server高速缓存:直接地址映射/低级的域名服务器的地址 本机也有告诉缓存:本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库,放到本地的高…...
Android MVVM 写法
前言 Model:负责数据逻辑 View:负责视图逻辑 ViewModel:负责业务逻辑 持有关系: 1、ViewModel 持有 View 2、ViewModel 持有 Model 3、Model 持有 ViewModel 辅助工具:DataBinding 执行流程:View &g…...
LeetCode 热题 100——283. 移动零
283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…...
neovim调试xv6-riscv过程中索引不到对应头文件问题
大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 和这篇文章neovim调试linux内核过程中索…...
轻量应用服务器与云服务器CVM对比——腾讯云
腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…...
骑砍战团MOD开发(31)-游戏AI控制
一.骑砍单机模式下AI控制 骑砍战团中野外战斗,训练场中小兵和地方小兵的行为统称为场景AI. 骑砍大地图中敌军追踪和遭遇追击统称为大地图AI. 二.骑砍场景AI 骑砍引擎通过header_mission_templates,py定制AI常量控制小兵位置,动作和朝向.可实现自定义阵型和攻击动作。 # Agen…...
flutter学习-day21-使用permission_handler进行系统权限的申请和操作
文章目录 1. 介绍2. 环境准备2-1. Android2-2. iOS 3. 使用 1. 介绍 在大多数操作系统上,权限不是在安装时才授予应用程序的。相反,开发人员必须在应用程序运行时请求用户的许可。在 flutter 开发中,则需要一个跨平台(iOS, Android)的 API 来…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
Vue 实例的数据对象详解
Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...
论文笔记:Large Language Models for Next Point-of-Interest Recommendation
SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...
