Transformer数学推导——Q33 分析正弦编码的频率衰减对长程依赖建模的影响
该问题归类到Transformer架构问题集——位置编码——绝对位置编码。请参考LLM数学推导——Transformer架构问题集。
1. 背景知识:Transformer 与长程依赖
在自然语言处理和其他序列数据处理任务中,Transformer 模型凭借其强大的性能脱颖而出。与传统的循环神经网络(RNN)不同,Transformer 通过多头注意力机制并行处理序列数据,大大提高了计算效率和训练速度。
在处理文本、语音等序列时,捕捉序列中不同位置之间的长程依赖关系至关重要。例如,在一个长句 “那个在公园里放风筝的小男孩,最后把风筝线缠在了那棵有着百年历史的老树上,因为当时的风实在太大了,而且风筝飞得又高又远” 中,“小男孩” 和 “风筝线”“老树”“风”“风筝” 之间存在着复杂的语义关联,准确捕捉这些跨越多个词的长程依赖关系,才能真正理解句子的含义。而 Transformer 模型的目标之一,就是要在这些复杂的序列数据中,有效地建模长程依赖关系 。
位置编码作为 Transformer 的重要组成部分,为模型提供了序列中元素的位置信息。正弦位置编码是一种常用的位置编码方式,其公式为:
,
其中,pos表示位置,i是维度索引,d是位置编码的维度。从公式中可以看出,随着维度i的增加,正弦函数的频率会逐渐衰减,这一特性对长程依赖建模有着深远的影响。
2. 正弦编码的频率衰减特性
正弦编码中频率衰减是如何产生的呢?我们仔细观察公式 ,分母中的
随着i的增大而增大。在三角函数中,当自变量的系数(这里可以理解为频率相关的部分)变小时,函数的频率就会降低。
举个简单的例子,如果把位置编码想象成一组不同频率的 “波纹”,低维度的正弦编码就像是频率较高的波纹,在短距离内波动频繁;而随着维度增加,频率逐渐衰减,就如同波纹变得越来越平缓,在更长的距离上才会完成一次完整的波动。这种频率衰减特性,使得正弦编码在不同维度上能够捕捉到不同尺度的位置信息。低维度聚焦于局部的位置细节,高维度则能反映更宏观、更长远的位置关系 。
3. 频率衰减对长程依赖建模的积极影响
3.1 多尺度位置信息融合
由于正弦编码的频率衰减,不同维度的位置编码可以捕捉到不同尺度的位置信息。在处理长序列时,这一特性为模型提供了多尺度的视角。例如在处理一篇长文章时,低维度的位置编码可以帮助模型关注句子内部词语之间的紧密联系,比如 “苹果” 和 “吃” 在一个句子中的先后顺序关系;而高维度的位置编码,由于其频率较低,能够跨越多个句子,捕捉到文章中前后段落之间的逻辑关联,比如前文提出观点,后文进行论证时,不同段落关键信息之间的长程依赖。通过将这些不同尺度的位置信息融合在一起,Transformer 模型能够更全面地理解序列的结构和语义,从而更好地建模长程依赖关系。
3.2 稳定的位置表示
频率衰减使得正弦编码具有一定的周期性和规律性,即使在长序列中,位置编码也不会因为序列长度的增加而失去意义。这为模型提供了稳定的位置表示,避免了随着序列变长,位置信息变得混乱或难以区分的问题。就像在一个超长的马拉松比赛中,每个选手都有一个固定的编号(类似位置编码),无论比赛队伍有多长,这个编号都能稳定地标识选手的位置,而且编号的设计(频率衰减特性)还能让裁判在宏观上把握选手们的分组和大致顺序关系。在 Transformer 处理长文本时,正弦编码的频率衰减特性确保了模型始终能够准确地识别每个位置的相对关系,有助于长程依赖的建模。
4. 频率衰减对长程依赖建模的潜在问题
4.1 信息分辨率降低
虽然频率衰减能让模型捕捉到宏观的长程依赖,但也导致了高维度位置编码的信息分辨率降低。当频率变得过低时,在一定范围内的位置差异可能无法被准确区分。例如在一个非常长的文档中,高维度的位置编码可能会将相隔较远但具有重要语义差异的两个部分视为相似的位置,因为它们在高频率衰减的正弦编码下,编码值差异较小。这就好比用一个低像素的相机拍摄远处的风景,虽然能看到大致的轮廓,但细节部分会变得模糊不清,从而影响模型对长程依赖中精细语义关系的捕捉。
4.2 训练难度增加
频率衰减特性使得位置编码在不同维度上的变化规律不同,这增加了模型训练的复杂性。在训练过程中,模型需要学习如何合理地利用这些不同频率的位置编码信息来建模长程依赖。由于高维度和低维度位置编码的特性差异较大,模型可能需要更多的训练数据和更复杂的优化策略才能找到最佳的参数组合,以充分发挥正弦编码在长程依赖建模中的优势。这就像是让一个孩子同时学习两种差异很大的技能,比如绘画和钢琴,孩子需要花费更多的时间和精力去适应和掌握,对于 Transformer 模型来说,处理频率衰减带来的训练难度也是一个不小的挑战。
5. 在 LLM 中的使用
5.1 对话场景的长上下文理解
在聊天机器人等 LLM 应用中,用户与模型的对话往往是多轮且具有长上下文的。比如,用户先描述自己近期的旅行计划:“我打算去云南旅游,听说大理的洱海很美,还有丽江古城也不错。” 过了几轮对话后,用户又说:“对了,之前提到的云南旅行,我想知道那边有什么特色美食?” 正弦编码的频率衰减特性帮助模型理解前后跨度较大的对话内容,高维度的低频编码能跨越多轮对话,关联起用户最初提到的旅行计划和后续关于美食的询问,让模型给出贴合长上下文的回答,如 “云南美食丰富,在大理可以尝尝酸辣鱼,丽江的腊排骨也很有特色,都很值得一试” 。
5.2 长文档生成与摘要
在进行长篇小说创作或学术论文撰写时,LLM 需要处理大量文本内容。以创作奇幻小说为例,作者先设定了世界观和主要角色,随着故事推进,新角色、新情节不断出现。正弦编码的多尺度位置信息融合能力,使模型在生成后续章节时,能利用低维度编码把握当前章节内的情节逻辑,利用高维度编码关联前文的世界观设定和角色关系,确保故事整体连贯。在生成文档摘要时,虽然高维度编码存在信息分辨率低的问题,但模型可结合低频编码提供的宏观信息,快速定位关键内容,如在处理上万字的研究报告时,提炼出核心结论和重要发现 。
5.3 代码补全与编程辅助
在编程领域,LLM 用于代码补全和编程问题解答。当用户输入一段较长的代码片段,并提出修改需求时,如 “我写了个 Python 爬虫代码,之前获取网页数据部分没问题,但现在想把数据存入数据库,该怎么修改?” 模型借助正弦编码的频率衰减特性,理解代码中不同模块的位置关系,低频编码帮助模型从整体上把握代码结构,高频编码关注具体函数和变量的细节,从而给出准确的代码修改建议和补充代码 。
6. 代码实例(Python 实现正弦位置编码)
import numpy as npdef sinusoidal_position_encoding(max_len, d_model):position = np.arange(max_len)[:, np.newaxis]div_term = np.exp(np.arange(0, d_model, 2) * (-np.log(10000.0) / d_model))pe = np.zeros((max_len, d_model))pe[:, 0::2] = np.sin(position * div_term)pe[:, 1::2] = np.cos(position * div_term)return pe# 示例使用
max_sequence_length = 100
embedding_dimension = 512
position_encodings = sinusoidal_position_encoding(max_sequence_length, embedding_dimension)
print(position_encodings.shape)
代码解释
- position = np.arange(max_len)[:, np.newaxis]:创建一个形状为(max_len, 1)的数组,表示位置序列,从 0 到max_len - 1 。
- div_term = np.exp(np.arange(0, d_model, 2) * (-np.log(10000.0) / d_model)):根据正弦位置编码公式计算分母部分,控制频率衰减。这里利用指数和对数运算实现
的计算 。
- pe = np.zeros((max_len, d_model)):初始化一个形状为(max_len, d_model)的全零数组,用于存储位置编码。
- pe[:, 0::2] = np.sin(position * div_term)和pe[:, 1::2] = np.cos(position * div_term):分别根据公式为偶数维度和奇数维度赋值正弦和余弦值,生成完整的正弦位置编码矩阵 。
7. 总结
正弦编码的频率衰减特性在 Transformer 对长程依赖建模中扮演着重要角色。它带来了多尺度位置信息融合和稳定位置表示等积极影响,帮助模型在处理长序列数据时更好地理解结构和语义;但同时也引发了信息分辨率降低和训练难度增加等潜在问题。在 LLM 的实际应用中,从对话理解到文档处理、编程辅助,该特性都发挥着关键作用,我们可以通过合理的代码实现将其运用到模型中。随着研究的不断深入,未来有望出现更优的策略,进一步提升利用正弦编码频率衰减特性建模长程依赖的能力,推动自然语言处理等领域的发展。
相关文章:
Transformer数学推导——Q33 分析正弦编码的频率衰减对长程依赖建模的影响
该问题归类到Transformer架构问题集——位置编码——绝对位置编码。请参考LLM数学推导——Transformer架构问题集。 1. 背景知识:Transformer 与长程依赖 在自然语言处理和其他序列数据处理任务中,Transformer 模型凭借其强大的性能脱颖而出。与传统的…...
微服务架构下的熔断与降级:原理、实践与主流框架深度解析
微服务架构下的熔断与降级:原理、实践与主流框架深度解析 在现代分布式系统中,熔断 (Circuit Breaker) 和 降级 (Degrade) 是保障系统弹性与高可用性的核心机制。本文将系统解析两者的原理、区别与协同方式,并结合主流框架 (Resilience4j、S…...
大脑、机器人与贝叶斯信念及AI推理
在机器不再局限于重复性任务的世界里,机器人技术已经大胆地迈入了感知、学习和决策的领域。这篇文章探讨了智能机器人系统是如何构建的——从理解它们嘈杂的传感器和不确定的环境,到使它们能够做出明智的选择并随着时间的推移调整自己的行为。 AI推理 …...
stm32wb55rg (4) 启用usart串口
code repo: 访问gitee 上节课成功点亮了LED,这次来把usart 用起来,毕竟有交互才是系统。 技术准备 首先查看手册,发现mcu有1个usart和1个 lpuart。 usart 的使用需要两个pin,一个接收一个发送。继续查看pin and ball definition…...
LSTM预测模型
LSTM预测模型 时间序列预测通常需要捕获时间依赖性,而 L S T M LSTM LSTM(长短时记忆网络)是处理时间序列数据的经典深度学习方法之一。结合长短时注意力机制( L o n g − S h o r t A t t e n t i o n M e c h a n i s m Long-S…...
[计算机网络]物理层
文章目录 物理层的概述与功能传输介质双绞线:分类:应用领域: 同轴电缆:分类: 光纤:分类: 无线传输介质:无线电波微波:红外线:激光: 物理层设备中继器:放大器:集线器(Hub):…...
Day16(贪心算法)——LeetCode45.跳跃游戏II763.划分字母区间
1 LeetCode45.跳跃游戏II 1.1 题目描述 与跳跃游戏类似,跳跃游戏II给定长为n的从0开始索引的整数数组nums,nums[i]是你在i处能向右跳跃的最大步数,求到达数组最后一个索引处需要跳跃的最少次数。 一个示例:nums[2,3,1,1,4]&a…...
【MySQL】表的内外连接
表的内外连接 一. 内连接二. 外连接1. 左外连接2. 右外连接 三. 简单案例四. SQL 实战 表的连接分为内连接和外连接 一. 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,之前博客中的查询都是内连接,也是在开发过程中使用的最多…...
Prometheus使用Recoding Rules优化性能
通过PromQL可以实时对Prometheus中采集到的样本数据进行查询,聚合以及其它各种运算操作。而在某些PromQL较为复杂且计算量较大时,直接使用PromQL可能会导致Prometheus响应超时的情况。这时需要一种能够类似于后台批处理的机制能够在后台完成这些复杂运算…...
Linux 怎么安装 Oracle Java 8
在 Linux 系统上安装 Oracle Java 8 的步骤如下: 1. 下载 Oracle Java 8 访问 Oracle 官方网站的 Java 下载页面: 下载链接:Oracle Java 8 下载页面选择适合 Linux x64 的安装包(通常是 .tar.gz 格式)。需要登录 Or…...
项目三 - 任务2:创建笔记本电脑类(一爹多叔)
在本次实战中,我们通过Java的单根继承和多接口实现特性,设计了一个笔记本电脑类。首先创建了Computer抽象类,提供计算的抽象方法,模拟电脑的基本功能。接着定义了NetCard和USB两个接口,分别包含连接网络和USB设备的抽象…...
基于蓝耘MaaS平台进行api调用创建本地智能ai
关于MaaS平台 MaaS 平台即 “模型即服务”(Model as a Service)平台,是一种依托云计算的人工智能服务模式。 模型即服务(MaaS)平台面向企业开发者、创业者及非技术背景用户,提供开箱即用的热门AI模型服务&…...
【Luogu】动态规划七
P1566 加等式 - 洛谷 思路: 其实这道题就是一个纸老虎,说这么多,其实最后就是问所有 a[i] 的组成方法之和有多少种 那么显然的一个dp就是 dp[j] dp[j - a[i]] 然后这题就结束了,就是这么简单,最后记得减去 n&…...
Kotlin 常见问题
以下从基础、中级、高级三个难度等级为你提供 Kotlin 面试题及参考答案: 基础难度 1. Kotlin 中 val 和 var 的区别是什么? 答案要点:val 用于声明不可变变量,类似于 Java 中的 final 变量,一旦赋值后就不能再重新赋…...
应急演练考试排查-DC01
DC01:攻击者最早通过哪种方式获取了机器权限?( ) A、远程登录(RDP登录) B、主机系统漏洞 C、软件服务漏洞 D、钓鱼 E、物理访问 F、内网横向手段 G、低权限账户提权 H、未获取到主机权限 DC01&…...
Spring MVC 中解决中文乱码问题
在 Spring MVC 中解决中文乱码问题,需要从 请求参数编码 和 响应内容编码 两方面入手。以下是完整的解决方案: 一、解决请求参数中文乱码 1. POST 请求编码(表单提交) 配置 CharacterEncodingFilter 在 web.xml 中添加 Spring 提…...
排序算法详解笔记(二)
归并排序 #include <vector> #include <iostream> #include <algorithm> // For std::inplace_merge in optimization// Helper function to merge two sorted subarrays void merge(std::vector<int>& arr, int left, int mid, int right) {int …...
Spark GraphX 机器学习:图计算
引言 在数字化时代,图数据(Graph Data)的价值日益凸显:社交网络中的用户关系、电商平台的商品关联、知识图谱的实体链接……这些以“节点(Vertex)”和“边(Edge)”为核心的非结构化…...
claude 3.7,极为均衡的“全能型战士”大模型,国内直接使用
文章目录 零、前言一、操作指南操作指导 二、小球弹跳三、生成 Mandelbrot set 集四、文本总结能力五、智力推理题六、感受 零、前言 Claude 3.7 Sonnet(下面简称 Claude 3.7)由 Anthropic 发布,“全球首个混合推理模型”的 AI 大模型&#x…...
机器学习-入门-决策树(1)
机器学习-入门-决策树(1) 4.1决策树的基本流程 决策树基于“树”结构进行决策 每个“内部结点”对应于某个属性上的“测试”(test)每个分支对应于该测试的一种可能结果(即该属性的某个取值)每个“叶结点”对应于一个“预测结果” 学习过程࿱…...
机器学习实操 第一部分 机器学习基础 第6章 决策树
机器学习实操 第一部分 机器学习基础 第6章 决策树 内容概要 第6章深入介绍了决策树,这是一种功能强大的机器学习算法,能够处理分类、回归以及多输出任务。决策树通过递归地分割数据集来构建模型,具有易于解释和可视化的特点。本章详细讲解…...
Python实例题:ebay在线拍卖数据分析
目录 Python实例题 题目 实现思路 代码实现 代码解释 read_auction_data 函数: clean_auction_data 函数: exploratory_analysis 函数: visualize_auction_data 函数: 主程序: 运行思路 注意事项 Python实…...
算法题(137):丢手绢
审题: 本题需要我们找到距离最远的两个孩子之间的距离,并打印 思路: 方法一:暴力枚举 我们可以找到每个孩子的距离其他孩子的最远距离,然后维护一个maxdis变量得到所有孩子距离其他孩子最远距离的最大值。 而距离分为顺…...
2025年具身智能科技研报
引言 本报告系统梳理了2025年具身智能领域的最新进展,基于国内外权威新闻源与行业研究报告,通过数据可视化与深度分析相结合的方式,呈现该领域多维发展态势。从技术突破层面看,多模态大模型的突破性进展为具身智能注入新动能&…...
TCL科技2025一季度归母净利润10.1亿,半导体显示业务业绩创新高
4月29日,TCL科技(000100)披露2024年年报及2025年一季报。2024全年,TCL科技实现营业收入1648亿元,归母净利润15.6亿元;实现经营现金流净额295亿元,同比增长16.6%。2025年一季度,TCL科…...
阿里云 CentOS YUM 源配置指南
阿里云 CentOS YUM 源配置指南 在使用 CentOS 7 时,由于 CentOS 官方源停止维护等原因,yum install 命令可能会报错 “Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64”。以下是通过更换阿里云源解决该问题的详细步骤。 一、备份原有配…...
阿里云 OpenManus 实战:高效AI协作体系
阿里云 OpenManus 实战:高效AI协作体系 写在最前面初体验:快速部署,开箱即用 真实案例分享:从单体开发到智能良好提示词过程展示第一步:为亚马逊美国站生成商品描述第二步:为eBay全球站生成商品描述结果分析…...
阿里云服务迁移实战: 05-OSS迁移
概述 Bucket 复制分为两种,同区域复制和跨区域复制 同账号复制比较简单,根据提示填写信息即可,本文主要介绍跨账号复制。 同区域复制 授权角色选择 “AliyunOSSRole”, 创建方法见 “跨区域复制”。然后点击确定即可。 跨区域复制 假设我…...
Vue高级特性实战:自定义指令、插槽与路由全解析
一、自定义指令 1.如何自定义指令 ⑴.全局注册语法 通过 Vue.directive 方法注册,语法格式为: Vue.directive(指令名, {// 钩子函数,元素插入父节点时触发(仅保证父节点存在,不一定已插入文档)inserted(…...
Python入门:流程控制练习
本文将介绍Python中流程控制的基础知识,包括条件判断和循环结构,并提供多个实用示例帮助初学者快速掌握这些概念。所有代码都使用基础语法,非常适合Python新手学习。 1. 简单条件判断: 编写一个程序,要求用户输入一个…...
Unity PBR基础知识
PBR原理 基于物理的渲染(Physically Based Rendering,PBR)是指使用基于物理原理和微平面理论建模的着色/光照模型,以及使用从现实中测量的表面参数来准确表示真实世界材质的渲染理念。 PBR基础理念 微平面理论(Micr…...
智慧交警系统架构设计方案
一、引言:智慧交警为何成为城市治理的刚需? 当前,中国城市化进程加速,汽车保有量激增,交通拥堵、事故频发、执法效率不足等问题日益突出。传统交通管理依赖人力巡查与分散系统,已难以应对复杂需求。智慧交…...
NOC科普一
拓扑结构 NoC里Router之间的link链路连接可以定义成不同的结构以改变通信测量和简化片上通信结构。 (a)Ring:环形,每个router都有2个相邻节点,虽然部署和故障排除相对容易,但主要缺点是其通信的距离也即环…...
Linux CentOS 7 安装Apache 部署html页面
*、使用yum包管理器安装Apache。运行以下命令: sudo yum install httpd *、启动Apache服务 sudo systemctl start httpd *、设置Apache服务开机自启 sudo systemctl enable httpd *、验证Apache是否运行 sudo systemctl status httpd 或者,通过浏…...
人工智能在医疗行业的应用和发展前景
人工智能在医疗行业的应用和发展前景 引言 在科技日新月异的今天,人工智能(Artificial Intelligence,AI)已然成为全球最具潜力与影响力的技术之一。医疗行业,作为关乎人类健康与生命的关键领域,正迅速成为人工智能应用的热门阵地。人工智能在医疗领域的应用,不仅为解决…...
vue3+Nest.js项目 部署阿里云
可以先参考之前的vue3express部署的文章 vue3viteexpressmongoDB上线(新手向)_vue3 vite express-CSDN博客 区别在于express和数据库 前端前往上面文章查看 1.nest.js部署 首先,把nest.js中相关的文件打包 除去依赖(node_modules)上传到服…...
phpstudy修改Apache端口号
1. 修改Listen.conf文件 本地phpstudy安装目录: 2.其他问题 ① 修改httpd.conf不起作用 ② 直接通过控制面板配置好像有延迟缓存...
JSON-RPC 2.0 规范中文版——无状态轻量级远程过程调用协议
前言 JSON-RPC是一种简单、轻量且无状态的远程过程调用(RPC)协议,它允许不同系统通过标准化的数据格式进行通信。自2010年由JSON-RPC工作组发布以来,已成为众多应用中实现远程交互的基础协议之一。本规范主要表达了JSON-RPC 2.0版…...
DeepSeek+Dify之七借助API和Trae完成demo
DeepSeek+Dify之六通过API调用工作流 文章目录 背景准备资料1、借助Trae来创建demo2、前后端主要代码3、测试demo4、完整项目背景 在软件开发与项目实践领域,常常需要借助各种工具与技术来快速搭建可运行的示例项目,以验证思路、展示功能或进行技术探索。本文聚焦于借助 Tra…...
C++ 红黑树
上一节我介绍了二叉搜索树家族的AVL树,这里我们来介绍二叉搜索树家族的另一个成员,也是使用最广泛的成员。 1.AVL树与红黑树的区别 平衡性质 AVL 树:是严格的平衡二叉树,要求任意节点的左右子树高度差的绝对值不超过 1ÿ…...
学习海康VisionMaster之线圆测量
一:进一步学习了 今天学习下VisionMaster中的线圆测量:核心就是坐标点到直线的距离量测 1:什么是线圆测量? 工业自动化中很常见的应用尺寸测量,需要量测一个零件的外形尺寸,其中一项如果是需要测量圆心到直…...
Uniapp:置顶
目录 一、出现场景二、效果展示三、具体使用一、出现场景 在项目的开发过程中,我们经常会用到置顶的功能,比如说从页面的最下方滑动到最上面太慢了,这个时候我们就可以使用置顶功能。 二、效果展示 三、具体使用 参数名类型必填说明scrollTopNumber否滚动到页面的目标位置…...
UDP数据报和TCP流套接字编程
文章目录 UDP数据报套接字编程1.DatagramSocket类2.DatagramPacket类3. InetSocketAddress类构建服务端和客户端 TCP流套接字编程1. ServerSocket类2.Socket类构建服务端和客户端 扩展对话形式简易的字典多线程实现线程池实现 UDP数据报套接字编程 1.DatagramSocket类 Datagr…...
某建筑石料用灰岩矿自动化监测
1. 项目简介 某建材有限公司成立于2012年,是一家集矿山开采、石料生产及销售为一体的建筑材料生产企业,拥有两条年产500万吨的环保型精品骨料生产线,各类工程机械 30 多台套,运输车辆50多辆。公司坚持生态优先,以高质…...
C++11 的编译器支持
C11 主要功能特性一览 特性描述提案GCCClangMSVCApple ClangEDG eccpIntel CNvidia HPC C (ex PGI)*Nvidia nvccCrayEmbarcadero C BuilderIBM Open XL C for AIXIBM Open XL C for z/OSIBM XL CSun/Oracle CHP aCCDigital Mars C核心功能右值引用 (T&&)支持移动语义和…...
20250429 垂直地表发射激光测量偏转可以验证相对性原理吗
垂直地表发射激光测量偏转可以验证相对性原理吗 垂直地表发射激光测量偏转可以在一定条件下用于检验广义相对论中的等效原理和引力对光传播的影响,但要说直接验证整个相对性原理(狭义广义)是不准确的。我们可以逐步分析这个问题:…...
Makefile 在 ARM MCU 开发中的编译与链接参数详解与实践
内容大纲 引言 一、预处理与宏定义 头文件搜索路径:-I 宏定义:-D 二、编译器选项(CFLAGS) 架构与指令集:-mcpu、-mthumb 优化与调试:-Os、-O2、-g 警告与错误:-Wall、-Werror 代码剥离:-ffunction-sections、-fdata-sections 其他常用选项 三、链接器选项(LDFLAGS) 链…...
AimRT 从零到一:官方示例精讲 —— 四、logger示例.md
logger示例 官方仓库:logger 配置文件(configuration_logger.yaml) 依据官方示例项目结构自行编写YAML配置文件: # 基础信息 base_info:project_name: Logger # 项目名称build_mode_tags: ["EXAMPLE", "SIMULATION", "TE…...
mybatis传递多个不同类型的参数到mapper xml文件
在业务中查询某张表时需要设置多个查询条件,并且还要根据id列表进行权限过滤,这时推荐采用Map<String, Object>作为参数进行查询,因为:Object可以设置成不同的类型,比如:List<Integer> ids&…...
信创开发中的数据库详解:国产替代背景下的技术生态与实践指南
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...