k8s中PAUSE容器与init容器比较 local卷与hostpath卷比较
目录
一、PAUSE容器与INIT容器比较
1. Pause 容器
作用
特点
示例
2. Init 容器
作用
特点
示例
3. Pause 容器 vs Init 容器
4. 总结
这两个哪个先启动呢?
详细启动顺序
为什么 Pause 容器最先启动?
示例
总结
二、local卷与hostpath卷
1. local 卷
定义
特点
配置示例
2. hostPath 卷
定义
特点
配置示例
3. local 卷 vs hostPath 卷
4. 选择建议
一、PAUSE容器与INIT容器比较
在 Kubernetes 中,Pause 容器 和 Init 容器 是两种特殊类型的容器,它们在 Pod 的生命周期中扮演不同的角色。以下是它们的详细说明和区别:
1. Pause 容器
作用
-
基础设施容器: Pause 容器是 Kubernetes 为每个 Pod 创建的一个基础设施容器,也称为 "sandbox 容器"。
-
共享网络和存储命名空间: Pause 容器的主要作用是持有 Pod 的网络命名空间(Network Namespace)和存储命名空间(Volume Namespace),其他容器(用户容器)会共享这些命名空间。
-
生命周期管理: Pause 容器的生命周期与 Pod 绑定,当 Pod 启动时,Pause 容器首先启动;当 Pod 删除时,Pause 容器最后退出。
特点
-
轻量级: Pause 容器通常是一个非常小的镜像(如
k8s.gcr.io/pause
),只包含一个简单的进程,几乎不占用资源。 -
不可见: 用户通常不会直接与 Pause 容器交互,它由 Kubernetes 自动管理。
-
稳定性: Pause 容器为 Pod 提供了稳定的网络和存储环境,确保用户容器的正常运行。
示例
假设有一个 Pod 包含两个容器(Container A 和 Container B),它们的结构如下:
-
Pause 容器首先启动,创建网络和存储命名空间。
-
Container A 和 Container B 启动,共享 Pause 容器的网络和存储命名空间。
2. Init 容器
作用
-
初始化任务: Init 容器用于在 Pod 的主容器(Main Containers)启动之前执行一些初始化任务,例如:
-
下载配置文件。
-
等待依赖服务启动。
-
初始化数据库或存储。
-
-
顺序执行: Init 容器按照定义的顺序依次执行,前一个 Init 容器成功完成后,才会启动下一个 Init 容器。
-
与主容器隔离: Init 容器和主容器是隔离的,它们的镜像、命令和环境变量可以完全不同。
特点
-
任务导向: Init 容器专注于完成特定的初始化任务,任务完成后容器会退出。
-
生命周期短: Init 容器在完成任务后就会退出,不会被重启。
-
失败处理: 如果 Init 容器失败,Pod 会根据
restartPolicy
决定是否重启 Init 容器。
示例
以下是一个包含 Init 容器的 Pod 配置示例:
apiVersion: v1
kind: Pod
metadata:name: example-init-pod
spec:containers:- name: main-containerimage: busyboxcommand: ["sh", "-c", "echo Main container is running && sleep 3600"]initContainers:- name: init-container-1image: busyboxcommand: ["sh", "-c", "echo Initializing... && sleep 5"]- name: init-container-2image: busyboxcommand: ["sh", "-c", "echo Setting up... && sleep 5"]
在这个例子中:
-
init-container-1
首先启动并运行 5 秒。 -
init-container-1
完成后,init-container-2
启动并运行 5 秒。 -
两个 Init 容器都完成后,
main-container
启动。
3. Pause 容器 vs Init 容器
特性 | Pause 容器 | Init 容器 |
---|---|---|
作用 | 提供 Pod 的网络和存储命名空间 | 执行初始化任务 |
生命周期 | 与 Pod 生命周期一致 | 在 Pod 启动前运行,完成后退出 |
可见性 | 对用户透明,不可见 | 用户可定义和配置 |
运行顺序 | 最先启动,最后退出 | 在主容器之前按顺序运行 |
镜像 | 通常是 k8s.gcr.io/pause | 用户自定义 |
资源占用 | 非常轻量,几乎不占用资源 | 根据任务需求占用资源 |
4. 总结
-
Pause 容器 是 Kubernetes 为 Pod 提供的基础设施容器,负责管理网络和存储命名空间,用户通常不需要直接操作它。
-
Init 容器 是用户定义的容器,用于在主容器启动前执行初始化任务,确保 Pod 启动时环境已经准备就绪。
这两个哪个先启动呢?
在 Kubernetes 中,Pause 容器 和 Init 容器 的启动顺序是明确的:
-
Pause 容器 最先启动。
-
Init 容器 在 Pause 容器启动后运行。
-
主容器 在 Init 容器完成后启动。
详细启动顺序
-
Pause 容器启动:
-
当 Kubernetes 创建一个 Pod 时,首先会启动 Pause 容器。
-
Pause 容器负责创建并持有 Pod 的网络命名空间(Network Namespace)和存储命名空间(Volume Namespace)。
-
Pause 容器的生命周期与 Pod 绑定,它会一直运行,直到 Pod 被删除。
-
-
Init 容器启动:
-
在 Pause 容器启动后,Kubernetes 会按照顺序启动 Init 容器。
-
Init 容器用于执行初始化任务(如下载配置文件、等待依赖服务等)。
-
每个 Init 容器必须成功完成后,才会启动下一个 Init 容器。如果某个 Init 容器失败,Pod 会根据
restartPolicy
决定是否重试。
-
-
主容器启动:
-
当所有 Init 容器成功完成后,Kubernetes 会启动 Pod 的主容器(Main Containers)。
-
主容器是 Pod 中运行实际业务逻辑的容器。
-
为什么 Pause 容器最先启动?
-
Pause 容器的作用是为 Pod 提供稳定的网络和存储命名空间。
-
在 Init 容器和主容器启动之前,必须确保这些命名空间已经创建并准备好。
-
因此,Pause 容器必须最先启动。
示例
以下是一个 Pod 的启动顺序示例:
-
Pause 容器启动:
-
创建网络和存储命名空间。
-
-
Init 容器启动:
-
init-container-1
启动并完成任务。 -
init-container-2
启动并完成任务。
-
-
主容器启动:
-
main-container
启动并运行业务逻辑。
-
对应的 YAML 配置:
apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:containers:- name: main-containerimage: busyboxcommand: ["sh", "-c", "echo Main container is running && sleep 3600"]initContainers:- name: init-container-1image: busyboxcommand: ["sh", "-c", "echo Initializing... && sleep 5"]- name: init-container-2image: busyboxcommand: ["sh", "-c", "echo Setting up... && sleep 5"]
总结
-
Pause 容器 最先启动,为 Pod 提供网络和存储命名空间。
-
Init 容器 在 Pause 容器之后启动,用于执行初始化任务。
-
主容器 在 Init 容器完成后启动。
二、local卷与hostpath卷
在 Kubernetes 中,local
卷和 hostPath
卷是两种用于将节点(Node)上的存储资源挂载到 Pod 中的卷类型。它们都使用节点上的本地存储,但在设计、用途和管理方式上有显著区别。以下是对它们的详细介绍和比较:
1. local 卷
定义
local
卷是一种持久化存储卷(PersistentVolume, PV),它将节点上的本地存储路径挂载到 Pod 中。local
卷通常用于需要高性能和低延迟的场景。
特点
-
持久化存储:
-
数据在 Pod 删除后仍然保留,适合需要持久化存储的场景。
-
-
节点绑定:
-
local
卷与特定节点绑定,Pod 必须调度到该节点才能使用该卷。
-
-
静态配置:
-
需要管理员预先在节点上创建存储路径,并在 Kubernetes 中定义
PersistentVolume
(PV)。
-
-
高性能:
-
由于使用本地存储,访问速度快,延迟低。
-
-
适用场景:
-
高性能数据库(如 MySQL、PostgreSQL)。
-
需要持久化存储的应用(如日志存储、缓存)。
-
配置示例
apiVersion: v1
kind: PersistentVolume
metadata:name: example-local-pv
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /mnt/disks/ssd1 # 节点上的本地路径nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node-1 # 绑定到特定节点
2. hostPath 卷
定义
hostPath
卷将节点上的文件系统路径直接挂载到 Pod 中。它通常用于临时存储或访问节点上的特定文件。
特点
-
非持久化存储:
-
数据与节点绑定,节点故障时数据可能丢失。
-
-
节点绑定:
-
hostPath
卷与特定节点绑定,Pod 必须调度到该节点才能使用该卷。
-
-
动态配置:
-
不需要预先定义 PV,直接在 Pod 中指定节点路径即可。
-
-
高性能:
-
由于使用本地存储,访问速度快,延迟低。
-
-
适用场景:
-
访问节点上的日志文件或配置文件。
-
开发和测试环境中的临时存储。
-
配置示例
apiVersion: v1
kind: Pod
metadata:name: test-hostpath
spec:containers:- name: test-containerimage: busyboxvolumeMounts:- mountPath: /mnt/dataname: test-volumevolumes:- name: test-volumehostPath:path: /data # 节点上的路径type: Directory # 路径类型(可以是文件、目录等)
3. local 卷 vs hostPath 卷
特性 | local 卷 | hostPath 卷 |
---|---|---|
持久性 | 数据持久,Pod 删除后保留 | 数据非持久,节点故障时可能丢失 |
节点绑定 | 绑定特定节点,Pod 需调度到该节点 | 绑定特定节点,Pod 需调度到该节点 |
配置方式 | 静态配置,需预先定义 PV | 动态配置,直接在 Pod 中指定路径 |
性能 | 高性能,低延迟 | 高性能,低延迟 |
适用场景 | 高性能、持久化存储需求 | 临时存储、访问节点文件 |
管理复杂度 | 较高,需管理员预先配置 | 较低,直接在 Pod 中配置 |
数据安全性 | 较高,数据持久化 | 较低,数据与节点绑定 |
示例场景 | 数据库、日志存储 | 日志收集、配置文件访问 |
4. 选择建议
-
local 卷:
-
适合需要持久化存储和高性能的场景。
-
适用于生产环境中的数据库、缓存等应用。
-
需要管理员预先配置和管理。
-
-
hostPath 卷:
-
适合临时存储或访问节点文件的场景。
-
适用于开发、测试环境或日志收集等任务。
-
配置简单,但数据安全性较低。
-
相关文章:
k8s中PAUSE容器与init容器比较 local卷与hostpath卷比较
目录 一、PAUSE容器与INIT容器比较 1. Pause 容器 作用 特点 示例 2. Init 容器 作用 特点 示例 3. Pause 容器 vs Init 容器 4. 总结 这两个哪个先启动呢? 详细启动顺序 为什么 Pause 容器最先启动? 示例 总结 二、local卷与hostpath卷…...
施耐德PLC仿真软件Modbus tcp通讯测试
安装仿真软件:EcoStruxure™ Control Expert - PLC 仿真器 下载地址:https://www.schneider-electric.cn/zh/download/document/EIO0000001719/ 配置CPU: 切换至仿真模式,系统托盘中出现仿真器图标 新建变量test,地址…...
TCP、UDP协议的应用、ServerSocket和Socket、DatagramSocket和DatagramPacket
DAY13.1 Java核心基础 TCP协议 TCP 协议是面向连接的运算层协议,比较复杂,应用程序在使用TCP协议之前必须建立连接,才能传输数据,数据传输完毕之后需要释放连接 就好比现实生活中的打电话,首先确保电话打通了才能进…...
【HarmonyOS Next】常见的字节转换
【HarmonyOS Next】常见的字节转换 字节转换、位运算在实际开发中具有广泛的应用价值,特别是在处理字节级数据时发挥着重要作用。例如,在网络通信中用于大小端序转换,在数据解析时进行位提取操作。这些特性使得位运算在USB通信、蓝牙&#x…...
Redis-锁-商品秒杀防止超卖
一、秒杀(Seckill) 1. 定义 秒杀:短时间内(如1秒内)大量用户同时抢购 限量低价商品 的营销活动。典型场景:双11热门商品抢购、小米手机首发、演唱会门票开售。 2. 技术挑战 挑战点说明后果…...
RHCE(RHCSA复习:npm、dnf、源码安装实验)
七、软件管理 7.1 rpm 安装 7.1.1 挂载 [rootlocalhost ~]# ll /mnt total 0 drwxr-xr-x. 2 root root 6 Oct 27 21:32 hgfs[rootlocalhost ~]# mount /dev/sr0 /mnt #挂载 mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# [rootlo…...
KNN算法性能优化技巧与实战案例
KNN算法性能优化技巧与实战案例 K最近邻(KNN)在分类和回归任务中表现稳健,但其计算复杂度高、内存消耗大成为IT项目中的主要瓶颈。以下从 算法优化、数据结构、工程实践 三方面深入解析性能提升策略,并附典型应用案例。 一、核心性…...
安装并使用anaconda(宏观版)
conda安装 windows 安装 1 官网下载-下载地址 2 配置环境 - 安装目录 bin,script 三个填入环境变量(windows “系统属性” -> “高级系统设置” -> “环境变量” ) 这些值可以被运行在操作系统上的程序使用。它是一个通用的概念,在不同的操作系统和应用程序…...
Qwen2.5-VL 开源视觉大模型,模型体验、下载、推理、微调、部署实战
一、Qwen2.5-VL 简介 Qwen2.5-VL,Qwen 模型家族的旗舰视觉语言模型,比 Qwen2-VL 实现了巨大的飞跃。 欢迎访问 Qwen Chat (Qwen Chat)并选择 Qwen2.5-VL-72B-Instruct 进行体验。 1. 主要增强功能 1)直观地理解事物&…...
【sql靶场】第18-22关-htpp头部注入保姆级教程
目录 【sql靶场】第18-22关-htpp头部注入保姆级教程 1.回顾知识 1.http头部 2.报错注入 2.第十八关 1.尝试 2.爆出数据库名 3.爆出表名 4.爆出字段 5.爆出账号密码 3.第十九关 4.第二十关 5.第二十一关 6.第二十二关 【sql靶场】第18-22关-htpp头部注入保姆级教程…...
SpringBoot实现发邮件功能+邮件内容带模版
发送简单邮件模版邮件 1.pom引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.5.13</version></dependency><dependency><groupId&…...
C# NX二次开发:矩形阵列和线性阵列等多种方法讲解
大家好,今天讲一些关于阵列相关的UFUN函数。 UF_MODL_create_linear_iset (view source):这个函数为创建矩形阵列。 intmethodInputMethod: 0 General 1 Simple 2 Identicalchar *number_in_xInputNumber in XC direction.char *distance_xInputSpac…...
OpenBMC:BmcWeb添加路由1 getParameterTag
BmcWeb对于路由的设计其实是参考了Crow BMCWEB_ROUTE(app, "/upload/image/<str>").privileges({{"ConfigureComponents", "ConfigureManager"}}).methods(boost::beast::http::verb::post, boost::beast::http::verb::put)([](const cro…...
【Android性能】Systrace分析
1,分析工具 1,Systrace新UI网站 Perfetto UI 2,Systrace抓取 可通过android sdk中自带的systrace抓取,路径一般如下,..\AppData\Local\Android\Sdk\platform-tools, 另外需要安装python2.7,…...
多种语言请求API接口方法
在当今的互联网世界中,应用程序编程接口(API)扮演着至关重要的角色,它们允许不同的服务和应用程序之间进行数据交换和功能共享。无论是获取天气预报、社交媒体数据还是进行支付操作,API都是背后的关键。不同的编程语言…...
【css酷炫效果】纯CSS实现瀑布流加载动画
【css酷炫效果】纯CSS实现瀑布流加载动画 缘创作背景html结构css样式完整代码基础版进阶版(无限往复加载) 效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492012 缘 创作随缘,不定时更新。 创作…...
【第15届蓝桥杯】软件赛CB组省赛
个人主页:Guiat 归属专栏:算法竞赛真题题解 文章目录 A. 握手问题(填空题)B. 小球反弹(填空题)C. 好数D. R格式E. 宝石组合F. 数字接龙G. 爬山H. 拔河 正文 总共8道题。 A. 握手问题(填空题&…...
20242817李臻《Linux⾼级编程实践》第四周
20242817李臻《Linux⾼级编程实践》第4周 一、AI对学习内容的总结 第5章 Linux进程管理 5.1 进程基本概念 进程与程序的区别 程序:静态的二进制文件(如/bin/ls),存储在磁盘中,不占用运行资源。进程:程…...
【AI大模型】提示词(Prompt)工程完全指南:从理论到产业级实践
【AI大模型】提示词(Prompt)工程完全指南:从理论到产业级实践 一、Prompt 提示词介绍:AI的“密码本” 1. Prompt的底层定义与价值 本质:Prompt是人与AI模型的“协议语言”,通过文本指令激活模型的特定推理…...
HTML中required与aria required区别
在HTML中,required和aria-required"true"都用于标识表单字段为必填项,但它们的作用和适用场景有所不同: 1. required 属性 • 功能属性:属于HTML5原生属性,直接控制表单验证逻辑。 • 作用: • …...
MySQL 锁
MySQL中最常见的锁有全局锁、表锁、行锁。 全局锁 全局锁用于锁住当前库中的所有实例,也就是说会将所有的表都锁住。一般用于做数据库备份的时候就需要添加全局锁,数据库备份的时候是一个表一个表备份,如果没有加锁的话在备份的时候会有其他的…...
halcon几何测量(一)3d_position_of_rectangle
目录 一、提取目标区域,选择不和边缘相交的目标二、计算矩形工件的姿态三、显示矩形的立体结构 一、提取目标区域,选择不和边缘相交的目标 1、提取目标区域:mean_image 、dyn_threshold 、fill_up 、connection 、select_shape 2、选择不和边…...
docker可视化之dpanel
1. 使用镜像加速 vim /etc/docker/daemon.json{ "registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https…...
Swagger 从 .NET 9 中删除:有哪些替代方案
微软已经放弃了对 .NET 9 中 Swagger UI 包 Swashbuckle 的支持。他们声称该项目“不再由社区所有者积极维护”并且“问题尚未得到解决”。 这意味着当您使用 .NET 9 模板创建 Web API 时,您将不再拥有 UI 来测试您的 API 端点。 我们将调查是否可以在 .NET 9 中使用…...
Qt 绘图
一、基础概念 Qt 绘图基于 QPainter(画家类)、QPaintDevice(绘图设备)和 QPaintEngine(绘图引擎)的协作实现。其中: QPainter 提供绘制图形、文本和图像的接口(如 drawLine()、d…...
用 Vue 3.5 TypeScript 重新开发3年前甘特图的核心组件
回顾 3年前曾经用 Vue 2.0 开发了一个甘特图组件,如今3年过去了,计划使用Vue 3.5 TypeScript 把组件重新开发,有机会的话再开发一个React版本。 关于之前的组件以前文章 Vue 2.0 甘特图组件 下面录屏是是 用 Vue 3.5 TypeScript 开发的目前…...
Python使用总结之Flask构建文件服务器,通过网络地址访问本地文件
Python使用总结之Flask构建文件服务器,通过网络地址访问本地文件 在 Web 开发中,静态文件(如图片、CSS、JavaScript)的管理是基础且重要的环节。Flask 提供的 send_from_directory 函数为开发者提供了灵活的文件服务解决方案。本文将详细解析其原理、用法及最佳实践。 一…...
从Excel到搭贝的转变过程
从Excel到搭贝 1. 简介 1.1 Excel简介 Excel 作为元老级的数据管理工具,功能强大且被广泛使用,但在现代工作场景中仍存在一些局限性,例如: 数据量处理有限:处理大规模数据时,Excel可能运行缓慢或崩溃。…...
C语言经典代码练习题
1.输入一个4位数:输出这个输的个位 十位 百位 千位 #include <stdio.h> int main(int argc, char const *argv[]) {int a;printf("输入一个4位数:");scanf("%d",&a);printf("个位:%d\n"…...
Compose 的产生和原理
引言 compose 出现的目的: 重新定义android 上ui 的编写方式。为了提高android 原生ui开发效率。让android 的UI开发方式跟上时代。 正文 compose 是什么? 就是一套ui框架 和flutter 一样是一套ui框架 Flutter:跨平台开发趋势与企业应用的…...
JS做贪吃蛇小游戏(源码)
一、HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel…...
c语言笔记 结构体内嵌套结构体的表示方式
目录 结构体内嵌套结构体 问:我们都该如何去访问该结构体里面的结构体的成员呢?怎么去给里面的成员赋值呢? 说明: 运行上述代码后,输出结果如下: 结构体内嵌套结构体 背景:如果我们在结构体中放结构体࿰…...
Vue3一个组件绑定多个 v-model,自定义 prop 和 event 名称
Vue3一个组件绑定多个 v-model,自定义 prop 和 event 名称 Vue3中v-model默认使用modelValue作为prop,update:modelValue作为事件,而Vue2使用的是value和input。此外,Vue3允许通过参数的方式为组件添加多个v-model绑定࿰…...
STM32---FreeRTOS事件标志组
一、简介 事件标志位:用一个位,来表示事件是否发生 事件标志组:一组事件标志位的集合,可以简单的理解时间标志组,就是一个整体。 事件标志租的特点: 它的每一个位表示一个时间(高8位不算&…...
分享一个项目中遇到的一个算法题
需求背景: 需求是用户要创建一个任务计划在未来执行,要求在创建任务计划的时候判断选择的时间是否符合要求,否则不允许创建,创建的任务类型有两种,一种是单次,任务只执行一次;另一种是周期&…...
入门 Sui Move 开发:9. 一个 Sui dApp 前端项目
内容概览 接下来一起通过 PTB 和 Navi SDK 实现一个一键存入借出的简单 DApp。 本节分为两部分: 创建一个 DApp 前端项目以及 Sui dApp Kit 的使用;了解 Navi SDK,主要包含的功能以及如何实现存入和借出功能; 最终完成我们的项…...
如何打造安全稳定的亚马逊采购测评自养号下单系统?
在当今的电商领域,亚马逊作为全球领先的在线购物平台,其商品种类繁多,用户基数庞大,成为了众多商家和消费者的首选。而对于一些需要进行商品测评或市场调研的用户来说,拥有一个稳定、安全的亚马逊账号体系显得尤为重要…...
c语言笔记 结构体基础
目录 基础知识 结构体定义 基础知识 在c语言中变量是有类型的,比如整型,char型,浮点型等,这些都是单一的类型,那么如果说我要定义一个学生的信息,那么这些单一的类型是不足以表达一个学生的全部信息&#…...
添加 ChatGPT/Grok/Gemini 到浏览器搜索引擎
文章目录 添加 ChatGPT/Grok/Gemini 到浏览器搜索引擎如何添加步骤 1: 打开浏览器设置步骤 2: 添加新搜索引擎步骤 3: 保存设置 注意事项 添加 ChatGPT/Grok/Gemini 到浏览器搜索引擎 在使用 ChatGPT/Grok/Gemini 进行对话时,每次都需要先打开对应的网页࿰…...
golang-struct结构体
struct结构体 概述 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 结构体是 Golang 中一种复合类型,它是由一组具有相同或不同类型的数据字段组成的数据结构。 结构体是一种用户自定义类型,它可…...
矫平机:工业制造的“误差归零者”,如何重塑智造新生态?
在新能源汽车电池托盘的生产线上,一块2米长的铝合金板材因焊接应力产生了0.5毫米的隐形翘曲。这个看似微不足道的变形,却导致激光焊接工序的良率暴跌至65%。当工程师们尝试传统矫正方案时,发现高强度铝合金既不能加热校形,又无法承…...
Springboot中的@ConditionalOnBean注解:使用指南与最佳实践
在使用Spring Boot进行开发时,大家应该都听说过条件注解(Conditional Annotations)。其中的ConditionalOnBean注解就很有趣,它帮助开发者在特定条件下创建和注入Bean,让你的应用更加灵活。今天就来聊聊这个注解的使用场…...
Spring 中 BeanFactoryPostProcessor 的作用和示例
一、概览 1. 核心定位 BeanFactoryPostProcessor 是 Spring 容器级别的扩展接口,在 Bean 实例化之前,对 Bean 的配置元数据(即 BeanDefinition)进行动态修改或扩展。其核心功能围绕以下两点: 修改现有 Bean 的定义&…...
PDFMathTranslate 安装、使用及接入deepseek
PDFMathTranslate 安装、使用及接入deepseek 介绍安装及使用接入deepseek注意 介绍 PDFMathTranslate 是非常好用的科学 PDF 文档翻译及双语对照工具,可以将论文按照其原本的排版结构执行多种语言翻译,并且可以接入如:谷歌翻译、deepl、deep…...
Docker生存手册:安装到服务一本通
文章目录 一. Docker 容器介绍1.1 什么是Docker容器?1.2 为什么需要Docker容器?1.3 Docker架构1.4 Docker 相关概念1.5 Docker特点 二. Docker 安装2.1 查看Linux内核版本2.2 卸载老版本docker,避免产生影响2.3 升级yum 和配置源2.4 安装Dock…...
JAVA中关于图形化界面的学习(GUI)动作监听,鼠标监听,键盘监听
动作监听: 先创建一个图形化界面,接着创建一个按钮对象,设置按钮的大小。 添加一个addActionListener(); addActionListener() 方法定义在 java.awt.event.ActionListener 接口相关的上下文中,许多支持用户交互产生…...
wepy微信小程序自定义底部弹出框功能,显示与隐藏效果(淡入淡出,滑入滑出)
视图html部分 <view class"salePz"><view class"btnSelPz" tap"pzModelClick">去选择</view><!-- modal --><view class"modal modal-bottom-dialog" hidden"{{hideFlag}}"><view class&q…...
Api架构设计--- HTTP + RESTful
Api架构设计--- HTTP RESTful 什么是RESTfulRESTful 设计原则RESTful 接口类型RESTful 状态码RESTful Uri设计原则Api传参:QueryString 和 UriPath RESTful和HTTP的区别注意事项 什么是RESTful RESTful(Representational State Transfer)是一…...
设计模式-适配器模式
适配器模式是一种结构型设计模式,用于将一个类的接口转换为客户端期望的另一个接口,使得原本不兼容的类可以协同工作。它的核心思想是通过中间层(适配器)解决接口不匹配的问题,类似于电源插头转换器。 核心思想 适配…...
MacBook部署达梦V8手记
背景 使用Java SpringBootDM开发Web应用,框架有License,OSX加载dll失败,安装了Windows 11,只有一个C盘,达梦安装后因为C盘权限问题,创建数据库失败,遂采用Docker容器方式部署。 下载介质 官网在…...