K8s CoreDNS 核心知识点总结
文章目录
- 一、章节介绍
- 背景与主旨
- 核心知识点及面试频率
- 二、知识点详解
- 1. CoreDNS 概述
- 2. 工作原理(高频考点)
- 服务发现流程
- 3. 配置与插件系统(高频考点)
- 核心配置文件:Corefile
- 常用插件
- 4. Pod DNS策略(中频考点)
- 三、章节总结
- 四、知识点补充
- 1. 相关扩展知识点
- 2. 最佳实践:生产环境CoreDNS配置优化
- 高可用性部署
- 监控与日志
- 外部域名解析优化
- 3. 编程思想指导
- 五、程序员面试题
- 1. 简单题
- 2. 中等难度题
- 3. 高难度题
一、章节介绍
背景与主旨
Kubernetes(K8s)集群中,服务间通信依赖高效的DNS服务实现服务发现。CoreDNS作为K8s 1.11+版本的默认DNS解决方案,取代了早期的kube-dns,提供高性能、可扩展的集群内DNS解析能力。本章节围绕CoreDNS的核心概念、工作原理、配置方法及实际应用展开,帮助开发者掌握其在服务发现、负载均衡中的关键作用,满足生产环境部署和面试准备需求。
核心知识点及面试频率
知识点 | 面试频率 | 核心内容概括 |
---|---|---|
CoreDNS 概述 | 中 | 开源DNS服务器,Go语言开发,插件化架构,K8s默认DNS方案 |
工作原理 | 高 | 服务发现流程、查询处理逻辑、负载均衡实现 |
配置与插件系统 | 高 | Corefile配置语法、常用插件功能(如kubernetes、forward) |
Pod DNS策略 | 中 | Default/ClusterFirst/ClusterFirstWithHostNet/None策略对比 |
服务发现与负载均衡 | 高 | 通过DNS名称解析后端Pod IP,支持轮询等负载均衡策略 |
二、知识点详解
1. CoreDNS 概述
- 定位:K8s集群内置DNS服务,负责处理集群内域名解析,实现服务发现和流量调度。
- 技术特性:
- 高性能:Go语言编写,轻量高效,资源占用低。
- 插件化架构:通过插件扩展功能,支持灵活定制DNS行为(如缓存、转发、健康检查)。
- 兼容性:1.11+版本默认集成,替代kube-dns,无缝对接K8s API。
2. 工作原理(高频考点)
服务发现流程
- 请求发起:Pod通过服务域名(如
my-service.default.svc.cluster.local
)发起DNS查询。 - 查询处理:
- CoreDNS解析域名中的服务名(
my-service
)、命名空间(default
)和集群域(svc.cluster.local
)。 - 通过K8s API获取对应Service的Endpoint列表(包含后端Pod IP)。
- CoreDNS解析域名中的服务名(
- 响应构造:
- 返回包含Service的Cluster IP(集群内虚拟IP)或Pod IP的DNS记录。
- 支持A记录(IP地址)、SRV记录(服务端口)等类型。
- 负载均衡:
- 内置
loadbalance
插件,默认采用轮询策略分配流量到后端Pod。 - 支持基于权重、优先级的高级负载均衡策略(需配置插件)。
- 内置
3. 配置与插件系统(高频考点)
核心配置文件:Corefile
.:53 { # 监听所有接口的53端口kubernetes cluster.local in-addr.arpa ip6.arpa { # kubernetes插件,解析集群内域名fallthrough in-addr.arpa ip6.arpa # 未匹配的请求透传ttl 30 # DNS记录缓存时间}forward . /etc/resolv.conf # forward插件,转发外部域名查询到宿主机DNScache 30 # cache插件,启用查询缓存,有效期30秒prometheus :9153 # prometheus插件,暴露监控指标health # health插件,提供健康检查端点
}
常用插件
插件名 | 功能描述 | 应用场景 |
---|---|---|
kubernetes | 从K8s API获取服务和Pod信息 | 集群内服务发现核心插件 |
forward | 转发外部域名查询到上游DNS服务器 | 解析集群外域名(如公网域名) |
cache | 缓存DNS查询结果 | 减少API调用,提升解析性能 |
loadbalance | 实现DNS层负载均衡 | 流量均匀分配到后端Pod |
prometheus | 导出性能指标(如QPS、延迟) | 配合Prometheus监控CoreDNS运行状态 |
4. Pod DNS策略(中频考点)
策略 | 解析逻辑 | 适用场景 |
---|---|---|
Default | 继承宿主机/etc/resolv.conf 配置 | 需复用宿主机DNS配置的传统应用容器 |
ClusterFirst | 优先使用CoreDNS解析集群内域名,外部域名转发到宿主机DNS | 大多数K8s原生应用(默认策略) |
ClusterFirstWithHostNet | 与ClusterFirst相同,但适用于hostNetwork 模式Pod | Pod使用宿主机网络命名空间时 |
None | 完全禁用K8s DNS配置,通过spec.dnsConfig 自定义 | 需严格控制DNS解析的特殊场景 |
配置示例:
spec:dnsPolicy: ClusterFirstdnsConfig: # 自定义DNS配置(仅None策略生效)nameservers: ["192.168.1.1"]searches: ["my-domain.local"]
三、章节总结
CoreDNS是K8s服务发现的核心组件,通过插件化设计实现灵活扩展,支持集群内域名解析、负载均衡和外部域名转发。关键知识点包括:
- 核心作用:替代kube-dns,提供高性能DNS解析和服务发现。
- 工作流程:基于K8s API获取服务端点,构造DNS响应并支持负载均衡。
- 配置核心:通过Corefile定义插件行为,常用插件包括kubernetes、forward、cache。
- 策略选择:根据Pod网络模式和需求选择合适的DNS策略(如ClusterFirst为默认最佳实践)。
四、知识点补充
1. 相关扩展知识点
- K8s服务发现机制:除DNS外,还支持环境变量(如
SERVICE_HOST
),但DNS方式更灵活通用。 - DNS解析优先级:集群内域名遵循固定格式(
服务名.命名空间.svc.cluster.local
),解析优先级高于外部域名。 - 插件开发:CoreDNS支持自定义插件,开发者可基于Go语言扩展功能(如自定义负载均衡算法)。
- 性能优化:通过
cache
插件减少API调用,结合health
插件实现端点健康检查,避免转发请求到故障Pod。 - 与其他DNS对比:相比kube-dns,CoreDNS内存占用降低50%+,支持热更新配置,无需重启服务。
2. 最佳实践:生产环境CoreDNS配置优化
高可用性部署
- 部署多个CoreDNS副本,通过K8s Deployment管理,避免单点故障。
- 配合
kube-dns
服务的Cluster IP(默认10.96.0.10
)实现客户端负载均衡。
监控与日志
- 启用
prometheus
插件,采集coredns_requests_total
(请求总数)、coredns_cache_hits
(缓存命中率)等指标。 - 通过K8s日志系统(如EFK栈)收集CoreDNS日志,监控解析失败率(
response_code != 0
)。
外部域名解析优化
.:53 {kubernetes cluster.local {fallthrough # 未匹配的集群内域名透传}forward . 114.114.114.114 8.8.8.8 { # 转发外部域名到公共DNSpolicy sequential # 按顺序尝试上游DNS,提高解析成功率}cache 60 # 延长外部域名缓存时间,减少公网请求log # 记录详细查询日志(生产环境建议分级开启)
}
3. 编程思想指导
- 模块化设计:CoreDNS的插件架构体现"单一职责原则",每个插件专注特定功能(如解析、转发、监控),可独立扩展。
- 接口抽象:通过定义统一的
Plugin
接口,支持不同插件无缝集成,降低系统耦合度(类似K8s控制器模式)。 - 性能优先:Go语言的并发模型(Goroutine)和零拷贝技术优化I/O性能,启示在分布式系统中需关注资源效率。
- 可观测性:内置Prometheus监控和日志系统,实践中需为核心组件设计完善的指标体系,便于故障排查和容量规划。
五、程序员面试题
1. 简单题
问题:CoreDNS在K8s中的主要作用是什么?
答案:
CoreDNS是K8s集群的默认DNS服务,主要作用包括:
- 提供服务发现能力,通过域名解析获取Service对应的Pod IP。
- 实现负载均衡,将流量分发到后端多个Pod。
- 支持灵活配置和扩展,通过插件系统集成K8s API、缓存、监控等功能。
2. 中等难度题
问题1:简述CoreDNS的工作流程,当Pod访问my-service.default
时,解析过程如何进行?
答案:
- Pod发送DNS查询到CoreDNS(默认IP
10.96.0.10
)。 - CoreDNS解析域名为
my-service.default.svc.cluster.local
(补充默认后缀)。 - 通过K8s API查询
default
命名空间下的my-service
服务,获取其Endpoint对应的Pod IP列表。 - 构造包含Pod IP的DNS响应,返回给Pod,Pod通过IP访问目标服务。
问题2:CoreDNS的Corefile中,kubernetes
插件和forward
插件的作用分别是什么?
答案:
kubernetes
插件:连接K8s API,解析集群内服务域名(以cluster.local
结尾),返回Service或Pod的IP。forward
插件:将无法解析的外部域名转发到指定的上游DNS服务器(如宿主机/etc/resolv.conf
或公共DNS)。
3. 高难度题
问题1:如何通过CoreDNS实现对后端Pod的健康检查?若某个Pod故障,流量如何处理?
答案:
- 启用
health
插件,配置对Endpoint的健康检查:kubernetes cluster.local {health # 自动检查Pod的就绪状态(Readiness Probe) }
- 当Pod故障时,K8s API会更新Endpoint列表,CoreDNS从API获取最新状态,自动剔除未就绪的Pod IP,避免流量转发到故障实例。
问题2:在微服务架构中,如何利用CoreDNS的负载均衡插件实现加权轮询策略?
答案:
- 确保
loadbalance
插件已启用(默认包含在CoreDNS镜像中)。 - 在Corefile中为服务配置权重:
my-service.default.svc.cluster.local {loadbalance {policy round_robin_weighted # 启用加权轮询endpoint 10.0.0.1 weight 2 # 权重为2endpoint 10.0.0.2 weight 1 # 权重为1} }
- CoreDNS根据权重比例分配流量(如上述配置中,10.0.0.1获得2/3流量,10.0.0.2获得1/3流量)。
相关文章:
K8s CoreDNS 核心知识点总结
文章目录 一、章节介绍背景与主旨核心知识点及面试频率 二、知识点详解1. CoreDNS 概述2. 工作原理(高频考点)服务发现流程 3. 配置与插件系统(高频考点)核心配置文件:Corefile常用插件 4. Pod DNS策略(中频…...
Java视频流RTMP/RTSP协议解析与实战代码
在Java中实现视频直播的输入流处理,通常需要结合网络编程、多媒体处理库以及流媒体协议(如RTMP、HLS、RTSP等)。以下是实现视频直播输入流的关键步骤和技术要点: 1. 视频直播输入流的核心组件 网络输入流:通过Socket或…...
卓力达电铸镍网:精密制造与跨领域应用的创新典范
目录 引言 一、电铸镍网的技术原理与核心特性 二、电铸镍网的跨领域应用 三、南通卓力达电铸镍网的核心优势 四、未来技术展望 引言 电铸镍网作为一种兼具高精度与高性能的金属网状材料,通过电化学沉积工艺实现复杂结构的精密成型,已成为航空航天、电…...
label-studio功能常用英文翻译
Projects 项目 Settings 设置 Labeling Interface 标注界面 1、Computer Vision 计算机视觉 Semantic Segmentation with Polygons 多边形语义分割 Semantic Segmentation with Masks 掩码语义分割 Object Detection with Bounding Boxes 边界框目标检测 Keypoint Label…...
2025年PMP 学习十六 第11章 项目风险管理 (总章)
2025年PMP 学习十六 第11章 项目风险管理 (总章) 第11章 项目风险管理 序号过程过程组1规划风险管理规划2识别风险规划3实施定性风险分析规划4实施定量风险分析规划5规划风险应对执行6实施风险应对执行7监控风险监控 目标: 提高项目中积极事件的概率和…...
Jenkins 执行器(Executor)如何调整限制?
目录 现象原因解决 现象 Jenkins 构建时,提示如下: 此刻的心情正如上图中的小老头,火冒三丈,但是不要急,因为每一次错误,都是系统中某个环节在说‘我撑不住了’。 原因 其实是上图的提示表示 Jenkins 当…...
Jenkins 安装与配置指南
Jenkins 安装与配置指南(MD 示例) markdown Jenkins 安装与配置指南 ## 一、环境准备 1. **系统要求** - 操作系统:Linux/macOS/Windows - Java 版本:JDK 8 或更高(建议 JDK 11)2. **安装方式** - **L…...
使用unsloth对Qwen3在本地进行微调
Fine-tune Qwen3(100% locally) 使用unsloth进行微调,使用huggingface在本地运行model。 load model from unsloth import FastLanguageModel import torchMODEL = "unsloth/Qwen3-14B" model,tokenizer = FastLanguageModel.from_pretrained(model_name=MODE…...
GpuGeek 实操指南:So-VITS-SVC 语音合成与 Stable Diffusion 文生图双模型搭建,融合即梦 AI 的深度实践
GpuGeek 实操指南:So-VITS-SVC 语音合成与 Stable Diffusion 文生图双模型搭建,融合即梦 AI 的深度实践 前言 本文将详细讲解 So-VITS-SVC 语音合成与 Stable Diffusion 文生图的搭建方法,以及二者与即梦 AI 融合的实践技巧,无论你…...
CSS- 3.1 盒子模型-块级元素、行内元素、行内块级元素和display属性
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
使用exceljs将excel文件转化为html预览最佳实践(完整源码)
前言 在企业应用中,我们时常会遇到需要上传并展示 Excel 文件的需求,以实现文件内容的在线预览。经过一番探索与尝试,笔者最终借助 exceljs 这一库成功实现了该功能。本文将以 Vue 3 为例,演示如何实现该功能,代码示例…...
7. 进程控制-进程替换
目录 1. 进程替换 1.1 单进程版: 1.2 进程替换的原理 1.3 多进程版-验证各种程序替换接口 2. 进程替换的各种接口 2.1 execl 2.2 execlp 2.3 execv 2.4 execvp 2.5 execle 1. 进程替换 上图为程序替换的接口,之后会详细介绍。 1.1 单进程版&am…...
关于计算机系统和数据原子性的联系
目录 1、计算机架构 1.1、处理器架构 1.2、内存寻址能力 1.3、性能差异 1.4、软件兼容性 1.5、指令集 1.6、开发和维护 2.、基本数据类型 3、原子类型 3.1、基本概念 3.2、基本数据类型的原子性 3.3、原子操作的解释 3.4、不保证原子性 3.5、解决方案 4、原子性…...
Armijo rule
非精线搜索步长规则Armijo规则&Goldstein规则&Wolfe规则_armijo rule-CSDN博客 [原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则 – 编码无悔 / Intent & Focused...
从数据包到可靠性:UDP/TCP协议的工作原理分析
之前我们已经使用udp/tcp的相关接口写了一些简单的客户端与服务端代码。也了解了协议是什么,包括自定义协议和知名协议比如http/https和ssh等。现在我们再回到传输层,对udp和tcp这两传输层巨头协议做更深一步的分析。 一.UDP UDP相关内容很简单…...
Prometheus实战教程:k8s平台-Mysql监控案例
配置文件优化后的 Prometheus 自动发现 MySQL 实例的完整 YAML 文件。该配置包括: MySQL Exporter 部署:使用 ConfigMap 提供 MySQL 连接信息。Prometheus 自动发现:通过 Kubernetes 服务发现自动抓取 MySQL 实例。 1、mysql 配置文件 &…...
执行apt-get update 报错ModuleNotFoundError: No module named ‘apt_pkg‘的解决方案汇总
Ubuntu版本ubuntu18.04 报错内容: //执行apt-get upgrade报错: Traceback :File “/usr/lib/cnf-update-db”, line 8, in <module>from CommandNotFound.db.creator import DbcreatorFile “/usr/lib/python3/dist-packages/CommandNotFound/db…...
QT6 源(101)篇一:阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试
(1) (2) (3)属性学习与测试 : (4) (5) 谢谢...
Redis(2):Redis + Lua为什么可以实现原子性
Redis 作为一款高性能的键值对存储数据库,与 Lua 脚本相结合,为实现原子性操作提供了强大的解决方案,本文将深入探讨 Redis Lua 实现原子性的相关知识 原子性概念的厘清 在探讨 Redis Lua 的原子性之前,我们需要明确原子性的概念…...
ios打包ipa获取证书和打包创建经验分享
在云打包或本地打包ios应用,打包成ipa格式的app文件的过程中,私钥证书和profile文件是必须的。 其实打包的过程并不难,因为像hbuilderx这些打包工具,只要你输入的是正确的证书,打包就肯定会成功。因此,证书…...
Python生成器:高效处理大数据的秘密武器
生成器概述 生成器是 Python 中的一种特殊迭代器,通过普通函数的语法实现,但使用 yield 语句返回数据。生成器自动实现了 __iter__() 和 __next__() 方法,因此可以直接用于迭代。生成器的核心特点是延迟计算(lazy evaluation&…...
C++11(2)
文章目录 右值引用和移动语义在传参中的提效list容器push_back & insert右值版本的模拟实现类型分类 (了解即可)引用折叠万能引用 完美转发(跟引用折叠有关) 简介:这篇文章是继续介绍C11的一些新语法知识点,也是对…...
unity terrain 在生成草,树,石头等地形障碍的时候,无法触发碰撞导致人物穿过模型
1.terrain地形的草,石头之类要选择模型预制体 2.在人物身上挂碰撞器和刚体,或者单挂一个character controller组件也行 3.在预制体上挂碰撞盒就好了,挂载meshcollider会导致碰撞无效...
以项目的方式学QT开发C++(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
API 描述 函数原型 参数说明 push_back() 在 list 尾部 添加一个元素 void push_back(const T& value); value :要添 加到尾部的元 素 这个示例演示了如何创建 std::list 容器,并对其进行插入、删除和迭代操作。在实际应用中&am…...
养生:健康生活的极简攻略
在追求高效生活的当下,养生也能化繁为简。通过饮食、运动、睡眠与心态的精准调节,就能轻松为健康续航。 饮食上,遵循 “均衡、节制” 原则。早餐用一杯热豆浆搭配水煮蛋和半个苹果,唤醒肠胃活力;午餐以糙米饭为主食&am…...
C语言-8.数组
8.1数组 8.1.1初试数组 如何写一个程序计算用户输入的数字的平均数? #include<stdio.h> int main() {int digit;//输入要求平均数的数字double sum=0;//记录输入数字的和int count=0;//记录输入数字的个数printf("请输入一组数字,用来求平均数,以-1结束\n&quo…...
代码随想录算法训练营第四十一天
LeetCode题目: 739. 每日温度496. 下一个更大元素 I503. 下一个更大元素 II 其他: 今日总结 往期打卡 739. 每日温度 跳转: 739. 每日温度 学习: 代码随想录公开讲解 问题: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer &…...
c++,windows,多线程编程详细介绍
目录 一、C11 标准库 <thread> 实现多线程编程1. 基本线程创建2. 线程管理3. 线程传参4. 同步机制5. 异步编程 二、Windows API 实现多线程编程1. 基本线程创建2. 线程管理3. 线程传参 三、两种方法的对比 在 Windows 平台上使用 C 进行多线程编程,可以通过 C…...
Python多线程
Python多线程 作为一名Python开发者,你是否遇到过这样的场景:程序需要同时处理多个任务,但单线程执行效率太低?这时候,多线程技术就能派上用场了。本文将带你深入浅出地理解Python多线程,并通过丰富的示例…...
VisionPro斑点寻找工具Blob
斑点寻找工具Blob 斑点概述 斑点分析 探测并且分析图像中的二维形状Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。斑点报告多种属性: 面积质心周长主轴…….. 应用场景 Blob分析非常适合以下场合的应用: 对…...
【Python】【面试凉经】Fastapi为什么Fast
核心的关键词:ASGI、原生异步、协程、uvloop、异步生态、Pydantic编译时生成校验代码、DI system预计算依赖树 interviewer 00:32:49 FastAPI 它优越于其他一些主流web框架像 django或 flask 的这个点在哪里? 我 00:33:00fastapi 就是说它的 fast 性能高…...
LocalDateTime类型的时间在前端页面不显示或者修改数据时因为LocalDateTime导致无法修改,解决方案
1.数据库中的时间数据,在控制台可以正常返回,在前端无法返回,即显示空白,如下图所示: 2.这种问题一般时由于数据库和我们实体类的名称不一致引起的,我们数据库一般采用_的方式命名,但是在Java中我们一般采用…...
【Linux】gcc从源码编译安装,修改源码,验证修改的源码
前阵子电脑使用的win10,win10过几天就让升级,烦得不行。 然后把操作系统切换到ubuntu24的样子,然后也是让升级,又烦的不行,然后切换到ubuntu server版本,感觉用起来要舒服些了,至少不会天天让升级。 回到标…...
牛客网NC22157:牛牛学数列2
牛客网NC22157:牛牛学数列2 📝 题目描述 🔍 输入输出说明 输入描述: 输入一个整数 N,范围在 0 到 1000 输出描述: 输出一个保留6位小数的浮点数 示例: 输入:2输出:1.500000 …...
智能手表集成测试报告(Integration Test Report)
📄 智能手表集成测试报告(Integration Test Report) 项目名称:Aurora Watch S1 测试阶段:系统集成测试 测试周期:2025年xx月xx日 – 2025年xx月xx日 报告编号:AW-S1-ITR-2025-001 版本…...
1C:ENTERPRISE 8.3 实用开发者指南-示例和标准技术(Session1-Session3)
1C:ENTERPRISE 8.3(1课-3课) 本博客是全网首个关于1C:Enterprice的中文指南,支持快速吸收使用 1C:Enterprise 8.3 软件开发和调整应用程序的技术 在这篇博客中我会基于实际应用示例,演示各种系统对象的结构、功能和用法。使用内…...
AgenticSeek开源的完全本地的 Manus AI。无需 API,享受一个自主代理,它可以思考、浏览 Web 和编码,只需支付电费。
一、软件介绍 文末提供程序和源码下载 AgenticSeek开源的完全本地的 Manus AI。无需 API,享受一个自主代理,它可以思考、浏览 Web 和编码,只需支付电费。这款支持语音的 AI 助手是 Manus AI 的 100% 本地替代品 ,可自主浏览网页…...
Java类一文分解:JavaBean,工具类,测试类的深度剖析
解锁Java类的神秘面纱:从JavaBean到测试类的深度剖析 前言一、JavaBean 类:数据的守护者(一)JavaBean 类是什么(二)JavaBean 类的特征(三)JavaBean 类的使用场景(四&…...
2025认证杯数学建模第二阶段C题:化工厂生产流程的预测和控制,思路+模型+代码
2025认证杯数学建模第二阶段思路模型代码,详细内容见文末名片 一、探秘化工世界:问题背景大揭秘 在 2025 年 “认证杯”数学中国数学建模网络挑战赛第二阶段 C 题中,我们一头扎进了神秘又复杂的化工厂生产流程预测与控制领域。想象一下&…...
day 17 无监督学习之聚类算法
一、聚类流程 1. 利用聚类发现数据模式 无监督算法中的聚类,目的就是将数据点划分成不同的组或 “簇”,使得同一簇内的数据点相似度较高,而不同簇的数据点相似度较低,从而发现数据中隐藏的模式。 2. 对聚类后的类别特征进行可视…...
渗透测试流程-上篇
#作者:允砸儿 #日期:乙巳青蛇年 四月十八 本期就开始进入到网安的内容了笔者会和大家一起开始实操练习。在此之前笔者的老师和我说要知己知彼,胆大心细。笔者也把他的理念传出去,网安的知识比较复杂且使用的工具很多。笔者看过…...
Ubuntu离线安装Minio
MinIO 支持在 Linux 环境下离线安装,非常适合内网或无法联网的服务器环境。下面是详细的 Linux 离线安装 MinIO 服务端 的步骤: ✅ 一、准备工作 1. 创建安装目录(可选) mkdir -p /opt/minio cd /opt/minio2. 下载 MinIO 可执行…...
2025年山东省数学建模F题思路
2025年山东省数学建模F题思路 一、问题背景 在现代金融市场中,资产价格波动呈现出非线性、高噪声、强跨市场联动性等复杂动态特征。例如,2020年新冠疫情期间,美股数次熔断事件引发全球股市剧烈震荡;而2023年美元加息周期&#x…...
C++核心编程--3 函数提高
函数的一些高级用法。 3.1 函数形参默认值 C中,函数的形参可以有默认值,调用函数时,未进行赋值的形参会使用默认值 void func(int f_var1 10, int f_var2 20); // 声明 void func(int f_var1, int f_var2) // 定义 {std::cout <&l…...
AI Agent开发第67课-彻底消除RAG知识库幻觉(1)-文档分块全技巧
开篇 在上篇《AI Agent开发第66课-彻底消除RAG知识库幻觉-带推理的RAG》放出后,网友们反响很大。有得告诉我:原来还有Rewrite这么一招?早知道这一招很多之前的一些遗留问题都能解决了。不过在上一篇结尾我已经提到了,要真正解决一个AI Agent在响应时产生的幻觉我们用提示语…...
c++多态面试题之(析构函数与虚函数)
有以下问题展开 析构函数要不要定义成虚函数?基类的析构函数要不要定义成虚函数?如果不定义会有什么问题,定义了在什么场景下起作用。 1. 基类析构函数何时必须定义为虚函数? 当且仅当通过基类指针(或引用)…...
buildroot使用外部编译链编译bluez蓝牙工具
buildroot使用外部编译链编译bluez蓝牙工具 主要参见这个csdn buildroot使用外部编译链编译bluez蓝牙工具_bluez编译-CSDN博客 设置交叉编译工具路径时,设置到bin目录之前 如果menuconfig不能改路径,就去 .config下去改 这样才能编译过...
自定义类型:结构体
1.结构体类型的声明 1.1.1结构的声明 struct tag {member-list; }variable-list; 描述一个学生:只包含了学生的名字、年龄、性别、学号 struct Stu {char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号 }; 1.1.2 结构体变量的创建和初始…...
以项目的方式学QT开发C++(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
以项目的方式学QT开发 以项目的方式学QT开发 P1 QT介绍 1.1 QT简介 1.2 QT安装 1.2.1 Windows QT安装 1.2.2 QT Creator 使用基本介绍 P2 C基础 2.1 命名空间 2.1.1 命名空间作用 2.1.2 自定义命名空间 2.2 从C语言快速入门 2.2.1 输入输出 2.2.2 基…...
Spring框架的事务管理
引言 在企业级应用开发中,事务管理是一个至关重要的环节,它确保了数据的一致性和完整性。Spring 框架为我们提供了强大而灵活的事务管理功能,能够帮助开发者更轻松地处理复杂的事务场景。本文将深入探讨 Spring 框架的事务管理,包…...