ModernBERT 为我们带来了哪些启示?
当谷歌在 2018 年推出 BERT 模型时,恐怕没有料到这个 3.4 亿参数的模型会成为自然语言处理领域的奠基之作。
六年后的今天,面对动辄千亿参数的大语言模型浪潮,Answer.AI、LightOn与 HuggingFace 联手打造的 ModernBERT 却选择了一条返璞归真的道路:通过架构创新,将大语言模型的先进经验移植到小型模型中,让 4 亿参数的小模型迸发出超越预期的性能。
为了深入了解 ModernBERT 的独特之处,本文将对其与两个经典模型:jina-XLM-RoBERTa
(jina-embeddings-v3 背后的多语言基础模型) 和 RoBERTa-large
进行全面的对比分析。
三大模型概览
ModernBERT(2024 年 12 月)
由 Answer.AI、LightOn 与 HuggingFace 联合研发,这个新生代小模型融合了多项前沿技术:采用 RoPE 旋转位置编码,支持 8,192 token 的长上下文窗口;集成 GeGLU 激活层,在保持计算效率的同时提升模型表现。
jina-XLM-RoBERTa(2024 年 9 月)
基于 Meta 的 XLM-RoBERTa
改进的多语言文本向量模型。原始 XLM-RoBERTa
使用 XLM 大型多语言数据集增强了 RoBERTa
,而 jina-XLM-RoBERTa
引入了长上下文训练,整合 RoPE 编码和支持 FlashAttention-2 加速。这个模型是 jina-embeddings-v3
的基础。
RoBERTa-large(2019 年 7 月)
由 Meta 开发的 BERT 增强版本,3.55 亿参数。采用了动态掩码技术,训练数据量级显著提升,在 GLUE、SQuAD、RACE 等权威榜单保持优势,胜任文本分类、问答系统等 NLP 核心任务。
本文将从架构设计、效率优化和应用场景这三个维度,深入对比分析这三个模型,希望能帮助开发者们更好地理解 ModernBERT 的成功之道,并为 BERT 系列模型的未来发展提供一些启发。
我们还将分享 jina-embeddings-v3
的开发经验,并展望下一代 jina-embeddings-v4
和 jina-reranker-v3
的优化方向。
ModernBERT 的参数效率
作为首个成功借鉴大模型技术经验的小型架构,ModernBERT 在参数利用效率上展现了 3 大创新策略:
策略一:深而窄的架构
虽然 ModernBERT 的模型层数有所增加,达到 28 层,但其参数量(约 4 亿)与 RoBERTa-large(约 3.55 亿)基本持平,而 jina-XLM-RoBERTa 由于需要支持 89 种语言,其参数量达到了 5.5 亿。

这里暗藏着一个反直觉的设计策略:对于中小规模模型,深度(层数)比宽度(隐藏层维度)更能有效提升性能。深而窄的模型架构能在保持总参数量稳定的情况下,获得更强的抽象特征提取能力。
通过下表对比可以看到设计巧思,transformer 的大部分参数来自注意力层和全连接层。而 ModernBERT 将单层宽度从 4,096 压缩至 2,624,再通过增加 4 层深度补偿性能。
这种设计思路与 Meta 的 MobileLLM 研究结论高度一致:当模型尺寸较小时,深度带来的信息处理增益显著优于宽度扩展。 本质上,通过更多 transformer 层处理信息的能力比拥有更宽的层进行并行处理更有价值。
让我们看看这种深而窄架构的性能数据。

实测数据显示,在保持参数量级相近的前提下,深而窄架构的 ModernBERT 在检索任务(MRR@10)和语义相似度计算(STS)等核心场景中,性能优于传统浅而宽架构的竞品模型。
以 jina-XLM-RoBERTa
为例,它在 RoBERTa-large
浅而宽的架构基础上,将词汇表从 5 万扩大到了 25 万个 token,并使用了更多的数据进行训练。尽管如此,ModernBERT 在性能上仍然略胜一筹,这有力地表明了架构上的改变确实能在效率方面带来显著的提升。
策略二:精准控制词汇表规模
在 Transformer 架构中,词表参数量由公式决定:词汇表参数量 = 词元数量 × 隐藏层维度
,以 jina-XLM-RoBERTa
为例:25 万词元 × 1,024 维度 = 2.56 亿参数。光是词汇表编码就得用掉 2.56 亿个参数,这还没开始处理任何实际的语言任务呢!

如上图所示,Transformer 模型的第一层,通过一个权重矩阵(即词汇权重)把词元映射为隐藏状态。如果直接使用全部 UTF-8 码点, 共 1112064 个,再乘上 1024 维的隐藏层,光是词元转换就得耗费 11.4 亿个参数。
虽说对于那种参数量上千亿的大型语言模型(LLM)来说,这点开销还能接受,但对于参数规模小于 100 亿的模型来说,相当于直接浪费了 90% 的算力资源。这也是 BPE(字节对编码)等分词算法成为行业标配的根本原因,它们能把常见的 UTF-8 码点合并成一个词元,节省不少参数。
但关键是:词汇表权重不参与注意力计算,本质上只是一个静态的查找表。对于参数量受限的小模型(SLM),过大的词表会严重挤占核心模块的资源。
测评结果也印证了这一点,只支持英语的 ModernBERT-large 模型规模虽小,却在性能上超越了支持多语言的 jina-XLM-RoBERTa
。因为 jina-XLM-RoBERTa
为了支持 89 种语言,把 47% 的参数都分配到词汇表编码上了。而 ModernBERT 通过精简词汇表,在保证性能优势的同时,实现了更快的推理速度,特别适合那些资源敏感的场景。
因此,如果我们只考虑核心模型参数,不包括词汇权重,你会发现 ModernBERT 的实际计算能力远超它的竞争对手!在真正的语言建模上,ModernBERT 比 jina-XLM-RoBERTa
多了 19% 的参数,比 RoBERTa-large
也多了 15%。
策略三:渐进式参数空间扩展
在构建 jina-BERT-v2
过程时,我们发现从头训练小语言模型(SLM)代价实在太高了,随着模型参数增多,训练需要的计算资源快速增加。在计算资源有限的情况下,导致训练周期延长和试错迭代速度变慢。
ModernBERT 的解决方案很巧妙,提出了一种基于参数空间扩展(Weight Tiling)的渐进式初始化方案,利用已经训练好的模型权重来初始化更大规模的模型,目的是让未训练的模型参数保留部分理解能力。
这个思路借鉴了 DeepMind 的 Gopher 和微软的 Phi-2,但这是首次将其系统应用于 SLM 训练优化,并取得了显著效果。
深度维度扩展(层数扩展):
以 22 层的 ModernBERT-base 作为基座模型。
借鉴 Gopher 的深度初始化策略,将模型扩展到 28 层。
新增的 6 层 (23-28 层) 直接继承了基座模型对应层的权重,实现深度的快速扩展。
宽度维度扩展(参数量扩展)
每层的权重矩阵采用 Phi-2 的中心平铺方法。
将基座模型的权重矩阵放置在 ModernBERT-large 权重矩阵的中心位置。
边缘区域则通过循环填充基座模型的参数进行初始化。
这种初始化策略策略的核心优势在于:ModernBERT-large 无需从零训练,而是通过利用小版本模型已学习到的知识,从而实现模型的热启动(Warm Start)。实践证明,这种方法在扩展较大规模的语言模型时非常有效。
我们观察到,热启动模型能快速从参数激增导致的高初始损失中恢复,迅速逼近基座模型的损失水平。通过该方法,能够将 4.17 亿参数的模型扩展超 3 倍,且性能始终优于同规模的从头训练的模型。并且,这种优势不仅体现在训练初期,而是贯穿整个训练周期。
——《Scaling Language Models: Methods, Analysis & Insights from Training Gopher》
循环权重封装不仅是为了方便,更因为它完美契合了注意力矩阵天然具备的周期性特征。Gopher 团队的研究发现,对于参数在 90 亿以下的小型语言模型(SLMs),这种方案能真正发挥威力。但随着模型规模增大,其优势会逐渐减弱。
ModernBERT 的代码建模
ModernBERT 基于其代码优化的分词器和训练数据,在代码理解方面取得了显著进展。这种针对代码处理的微调,在理解和检索任务中均取得了显著性能提升。
我们基于 CodeSearchNet 数据集进行了对比实验,评估模型根据自然语言描述检索对应代码片段的能力。实验中,我们依然是选取了 3 个模型:ModernBERT
、jina-XLM-RoBERTa
和 RoBERTa-large
。结果表明,ModernBERT 在绝大多数子任务中均处于领先地位。

从技术角度分析,jina-XLM-RoBERTa
和 RoBERTa-large
在预训练阶段均未接触编程语言数据,而 ModernBERT-large 则训练了 2 万亿个 token,其中包含了大量代码。这种对编程语法和模式的接触,使其在代码相关任务中拥有明显优势。
而 jina-XLM-RoBERTa
相对 RoBERTa-large
的微弱优势,可能源于其多语言数据带来的隐式模式泛化能力。
分词器的优势
ModernBERT 在代码处理方面表现优秀,原因在于它采用了专门针对代码训练的 OLMo Tokenizer,而不是传统 BERT/RoBERTa Tokenizer。
作为模型处理文本的核心组件,分词器承担着将原始文本转化为向量表示的关键任务。其工作原理是通过学习常见字符组合模式,将文本切分为具有语义价值的词元(token),再映射成向量表示,这些词元向量才是模型实际处理的基本单元。
相较于传统分词器可能将代码标识符(如 init
)错误切分为 in+it,导致语义完整性受损,ModernBERT 的分词器能完整保留编程语义单元,形成符合代码逻辑的词元切分边界。
在处理代码结构特征方面,ModernBERT 也表现出色,以空格处理为例:
对于 Python 等依赖缩进的语言,它可以把前导空格编码为独立 token,能区分 4 空格与 8 空格的缩进层级。相比之下,jina-XLM-RoBERTa
会将连续空格压缩为 _ 符号,而 RoBERTa-large
每个空格都视为独立的 token。
这种差异直接影响了模型输入质量:ModernBERT 获得的是精准连贯的代码表征,而其他模型处理的则是碎片化、语义模糊的词元序列,最终导致代码理解效果存在显著差异。
ModernBERT 的长文本处理能力
ModernBERT 在长文本建模领域实现技术突破,其核心优势源于:① 基于 3000 亿 token 超大规模语料构建的长文档训练体系(8192 token 长样本占比超四成)② 融合全局-局部感知的混合注意力架构。
为验证模型性能,我们在 MLDR 多语言长文本建模基准测试集(涵盖 13 种语言)开展对比实验。受限于当前版本的语言支持,我们只选取英语子集,此外实验对象限定为同属 8K 长上下文处理能力的 ModernBERT 与 jina-XLM-RoBERTa
(RoBERTa-large 因 512 token 长度限制未纳入对比)。

ModernBERT 的性能优势不仅源于大量的长文本训练数据,杀手锏在于其独创的注意力双轨机制。和 jina-XLM-RoBERTa
在每层都铺满计算成本高昂的全局注意力不同,ModernBERT 采用了更高效的交替策略:每 3 层部署全局注意力,RoPE 旋转基数 θ = 16 万,其余层则采用 128 token 滑动窗口的局部注意力,θ = 10 万。
这种混合交替的注意力架构在维持模型性能的同时,显著降低了计算复杂度。实验数据显示,其训练时间较全局注意力方案减少约 40%,为长文本模型的实用化提供了新范式。
完整实现参见论文:https://arxiv.org/pdf/2412.13663
苦涩的教训?
传统认知里,AI 的发展范式始终被「Scaling Law」和「Bitter Lesson」所主导 —— 人们坚信,模型性能的突破必须依赖参数规模与训练数据的同步扩张。
这一理念也深刻影响了我们的技术路径选择,从语料库的持续拓展到采用 LoRA 进行任务适配的策略,处处彰显着"大力出奇迹"的研发惯性。
但 ModernBERT 的横空出世打破了这一迷思,它证明了 SLM 可以凭借创新的架构设计实现卓越的结果,而不一定要扩大参数规模。
最新发布的 Stella Embeddings 技术报告进一步印证:通过提升数据利用效率,现有规模的嵌入模型仍有巨大优化空间,根本无需盲目扩张语料库或堆砌参数。
🔗: https://arxiv.org/pdf/2408.11868
图中展示了英语任务中 MTEB 评测指标与向量模型参数量的关系。每个点代表一个向量模型,其中多语言模型以青色标注。值得注意的是,jina-embeddings-v3
在同等规模模型中表现突出,相较于前代v2版本实现了超线性提升。
展望未来,随着数据使用效率的提升和 ModernBERT 技术的成熟,模型的计算成本和体积都有望继续降低。短期来看,我们可以直接引入论文中提到的轻量级改进方案:比如增加代码训练数据的比例,使用更适合编程语言的分词器。中期,考虑重构转向深而窄的架构,探索较小模型引导大模型的蒸馏技术。
当多模态嵌入模型逐渐成为基础设施之际,如何构建更智能、更快速、且具备多模态处理能力的搜索基座模型,已成为我们面临的长期挑战。这类应用不仅要求模型具备跨模态理解能力,还需要突破超长上下文窗口的效率瓶颈,这仍是亟待解决的技术难点。
结论
在本文中,我们探讨了 ModernBERT 推动 BERT 模型发展的 3 个关键创新:深而窄的架构设计、分词器的优化以及权重平铺的扩展策略。
该模型在仅 1.4 亿参数规模下,性能全面超越参数量达 3.55 亿的 RoBERTa-large
和跨语言标杆 jina-XLM-RoBERTa
,揭示了模型架构优化可能比单纯扩大参数规模更具价值。
特别值得一提的是权重平铺技术的成功实践,这种渐进式扩展策略在降低 40% 训练成本的同时,竟还能提升模型性能。加之其紧凑型词汇表和精准优化的组合拳,为资源受限场景下的专用小型语言模型(SLMs)打开了新天地,当硬件红利期逐渐消退时,算法层面的创新正在成为新的破局点。
相关文章:
ModernBERT 为我们带来了哪些启示?
当谷歌在 2018 年推出 BERT 模型时,恐怕没有料到这个 3.4 亿参数的模型会成为自然语言处理领域的奠基之作。 六年后的今天,面对动辄千亿参数的大语言模型浪潮,Answer.AI、LightOn与 HuggingFace 联手打造的 ModernBERT 却选择了一条返璞归真的…...
【MySQL】--- 复合查询 内外连接
Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: MySQL 🏠 基本查询回顾 假设有以下表结构: 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为…...
Android Studio打包APK
1.导出APK安装包 如果是首次打包,Create new 单击蓝色对话框右边文件夹📂图标 ,选择密钥保存路径,然后在下方File name对话框中填写您想要名称,再点击OK回到密钥创建对话框。 在此对话框中填写密码(Passwo…...
RKNN_C++版本-YOLOV5
1.背景 为了实现低延时,所以开始看看C版本的rknn的使用,确实有不足的地方,请指正(代码借鉴了rk官方的仓库文件)。 2.基本的操作流程 1.读取模型初始化 // 设置基本信息 // 在postprocess.h文件中定义,详见…...
Git常用命令集合
见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看...... git init <directory》初始化本地仓库 git add <file> 添加文件到暂存区 git …...
【deepseek】deepseek-r1本地部署-第一步:下载LM Studio
要下载LM Studio,可以按照以下步骤进行: 一、访问LM Studio官方网站 打开必应(注意!百度无法打开官网),输入LM Studio的官方网址:LM Studio - Discover, download, and run local LLMs。进入L…...
【数据结构】_链表经典算法OJ:合并两个有序数组
目录 1. 题目描述及链接 2. 解题思路 3. 程序 3.1 第一版 3.2 第二版 1. 题目描述及链接 题目链接:21. 合并两个有序链表 - 力扣(LeetCode) 题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给…...
mybatis(78/134)
前天学了很多,关于java的反射机制,其实跳过了new对象,然后底层生成了字节码,创建了对应的编码。手搓了一遍源码,还是比较复杂的。 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE …...
【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR、流水线及伪指令
文章目录 指令格式(重点)1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…...
Mybatis配置文件详解
MyBatis通过XML或注解的方式将Java对象与数据库中的记录进行映射,极大地简化了数据访问层的开发。而在MyBatis的核心组成部分中,配置文件扮演着举足轻重的角色。它不仅定义了MyBatis的运行环境,还配置了数据源、事务管理、映射器等关键元素&a…...
一组开源、免费、Metro风格的 WPF UI 控件库
前言 今天大姚给大家分享一个开源、免费、Metro风格的 WPF UI 控件库:MahApps.Metro。 项目介绍 MahApps.Metro 是一个开源、免费、Metro风格的 WPF UI 控件库,提供了现代化、平滑和美观的控件和样式,帮助开发人员轻松创建具有现代感的 Win…...
.NET MAUI 入门学习指南
引言 在当今移动应用和跨平台开发的热潮中,.NET MAUI(Multi - platform App UI)应运而生,为开发者提供了一种高效、统一的方式来构建跨多个平台(如 iOS、Android、Windows 等)的原生应用。它整合了 Xamarin.Forms 的优点,并在此基础上进行了诸多改进和创新,使得开发者…...
【超详细】ELK实现日志采集(日志文件、springboot服务项目)进行实时日志采集上报
本文章介绍,Logstash进行自动采集服务器日志文件,并手把手教你如何在springboot项目中配置logstash进行日志自动上报与日志自定义格式输出给logstash。kibana如何进行配置索引模式,可以在kibana中看到采集到的日志 日志流程 logfile-> l…...
本地大模型编程实战(04)给文本自动打标签
文章目录 准备实例化本地大模型情感分析更精细的控制总结代码 使用本地大模型可以根据需要给文本打标签,本文介绍了如何基于 langchain 和本地部署的大模型给文本打标签。 本文使用 llama3.1 作为本地大模型,它的性能比非开源大模型要查一下,…...
JavaScript反爬技术解析与应对
JavaScript 反爬技术解析与应对 前言 在当今 Web 爬虫与数据抓取的生态环境中,网站运营方日益关注数据安全与隐私保护,因此逐步采用多种反爬技术来限制非授权访问。本文从 JavaScript 角度出发,深入剖析主流反爬策略的技术原理,…...
【C++动态规划 状态压缩】2741. 特别的排列|2020
本文涉及知识点 C动态规划 状态压缩 LeetCode2741. 特别的排列 给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数。如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列: 对于 0 < i < n - 1 的下标 i…...
省级数字经济发展水平数据(2011-2022年)-社科数据
省级数字经济发展水平数据(2011-2022年)-社科数据https://download.csdn.net/download/paofuluolijiang/90028602 https://download.csdn.net/download/paofuluolijiang/90028602 数字经济是指以数据资源为关键要素、以现代信息网络为主要载体、以信息…...
【问题解决】el-upload数据上传成功后不显示成功icon
el-upload数据上传成功后不显示成功icon 原因 由于后端返回数据与要求形式不符,使用el-upload默认方法调用onSuccess钩子失败,上传文件的状态并未发生改变,因此数据上传成功后并未显示成功的icon标志。 解决方法 点击按钮,调用…...
新站如何快速获得搜索引擎收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/8.html 新站想要快速获得搜索引擎收录,需要采取一系列有针对性的策略。以下是一些具体的建议: 一、网站内容优化 高质量原创内容: 确保网站内容原创、…...
判断子序列
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function isSubsequence(s, t) {// 初始化两个指针,分别指向字符串 s 和 t 的起始位置let i 0; let j 0; // 当两个指针都未超出对应字符串的长…...
【Leetcode 热题 100】416. 分割等和子集
问题背景 给你一个 只包含正整数 的 非空 数组 n u m s nums nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 数据约束 1 ≤ n u m s . l e n g t h ≤ 200 1 \le nums.length \le 200 1≤nums.length≤200 1 ≤ n u m s [ i ] ≤ …...
Kotlin开发(六):Kotlin 数据类,密封类与枚举类
引言 想象一下,你是个 Kotlin 开发者,敲着代码忽然发现业务代码中需要一堆冗长的 POJO 类来传递数据。烦得很?别急,Kotlin 贴心的 数据类 能帮你自动生成 equals、hashCode,直接省时省力!再想想需要多种状…...
关于2024年
关于2024年 十分钟前我从床上爬起来,坐在电脑面前先后听了《黄金时代》——声音碎片和《Song F》——达达两首歌,我觉得躺着有些无聊,又或者除夕夜的晚上躺着让我觉得有些不适,我觉得自己应该爬起来,爬起来记录一下我…...
运算符(C#)
运算符(C#) 算数运算符 - * / % //算数运算符// - * / %//这跟我们初中的运算符一样// 加号Console.WriteLine(12);//3int a 5 6;Console.WriteLine(a);//11// - 减号Console.WriteLine(6-3);//3int b 10 - 6;Console.WriteLine(b);//4// * 乘号Console.WriteL…...
【AI论文】扩散对抗后训练用于一步视频生成总结
摘要:扩散模型被广泛应用于图像和视频生成,但其迭代生成过程缓慢且资源消耗大。尽管现有的蒸馏方法已显示出在图像领域实现一步生成的潜力,但它们仍存在显著的质量退化问题。在本研究中,我们提出了一种在扩散预训练后针对真实数据…...
Spring--SpringMVC使用(接收和响应数据、RESTFul风格设计、其他扩展)
SpringMVC使用 二.SpringMVC接收数据2.1访问路径设置2.2接收参数1.param和json2.param接收数据3 路径 参数接收4.json参数接收 2.3接收cookie数据2.4接收请求头数据2.5原生api获取2.6共享域对象 三.SringMVC响应数据3.1返回json数据ResponseBodyRestController 3.2返回静态资源…...
计算机毕业设计Django+Tensorflow音乐推荐系统 机器学习 深度学习 音乐可视化 音乐爬虫 知识图谱 混合神经网络推荐算法 大数据毕设
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
用HTML、CSS和JavaScript实现庆祝2025蛇年大吉(附源码)
用HTML、CSS和JavaScript庆祝2025蛇年大吉 在这个数字化时代,网页设计不仅仅是为了展示信息,更是传达情感和文化的一种方式。2025年将是蛇年,许多人希望通过各种方式庆祝这一重要的时刻。在这篇文章中,我们将一起学习如何使用HTM…...
Golang :用Redis构建高效灵活的应用程序
在当前的应用程序开发中,高效的数据存储和检索的必要性已经变得至关重要。Redis是一个快速的、开源的、内存中的数据结构存储,为各种应用场景提供了可靠的解决方案。在这个完整的指南中,我们将学习什么是Redis,通过Docker Compose…...
分布式微服务系统架构第88集:kafka集群
使用集 群最大的好处是可以跨服务器进行负载均衡,再则就是可以使用复制功能来避免因单点故 障造成的数据丢失。在维护 Kafka 或底层系统时,使用集群可以确保为客户端提供高可用 性。 需要多少个broker 一个 Kafka 集群需要多少个 broker 取决于以下几个因…...
【信息系统项目管理师-选择真题】2008下半年综合知识答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2~3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10~12题】【第13题】【第14~15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】【第22题】【第23题】【第…...
Ubuntu 20.04安装Protocol Buffers 2.5.0
个人博客地址:Ubuntu 20.04安装Protocol Buffers 2.5.0 | 一张假钞的真实世界 安装过程 Protocol Buffers 2.5.0源码下载:https://github.com/protocolbuffers/protobuf/tree/v2.5.0。下载并解压。 将autogen.sh文件中以下内容: curl htt…...
MySQL知识点总结(十四)
mysqldump和mysqlpump实用程序在功能上有哪些相同和不同的地方? 二者都能用来执行逻辑备份,将所有数据库,特定数据库或特定表转储到文本文件,可移植,独立于存储引擎,是很好的复制/移动策略,适合…...
人工智能在教育中的创新应用:打造未来的智慧课堂
人工智能在教育中的创新应用:打造未来的智慧课堂 在快速发展的科技时代,人工智能(AI)正悄无声息地改变着教育的面貌。从个性化学习到智能课堂管理,AI技术为教育带来了前所未有的创新与效率提升。今天,我想从实际应用的角度,聊聊人工智能如何帮助我们构建更智慧的教育生…...
最初公共前缀
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function longestCommonPrefix(strs) {// 如果输入的字符串数组为空,直接返回空字符串if (strs.length 0) {return "";}// 假设数组中…...
每日一题-判断是否是平衡二叉树
判断是否是平衡二叉树 题目描述数据范围题解解题思路递归算法代码实现代码解析时间和空间复杂度分析示例示例 1示例 2 总结 ) 题目描述 输入一棵节点数为 n 的二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树定义为: 它是一棵空树。或者它的左右子树…...
Go反射指南
概念: 官方对此有个非常简明的介绍,两句话耐人寻味: 反射提供一种让程序检查自身结构的能力反射是困惑的源泉 第1条,再精确点的描述是“反射是一种检查interface变量的底层类型和值的机制”。 第2条,很有喜感的自嘲…...
【除夕】特别篇
除夕,是一个辞旧迎新的时刻。我们挥别了过去一年的风雨兼程,迎来了新一年的无限可能。在过去的一年里,我们或许经历了挑战,或许收获了成长。从年初到今天,我们一定克服了种种困难与挑战,这足以说明我们每个…...
Java内存区域详解
Java内存区域详解——章节结构 Java 内存模型是 JVM 的重要组成部分,深入理解内存区域的划分和用途是掌握 JVM 调优和诊断问题的关键。我们将通过以下章节逐步学习: 目录 概述:Java 内存区域与线程的关系程序计数器Java 虚拟机栈本地方法栈…...
DataWhale组队学习 fun-transformer task5
1. 词向量:单词的“身份证” 首先,我们定义了四个单词的词向量,每个向量维度为3。你可以把这些词向量想象成每个单词的“身份证”。每个身份证上有3个特征,用来描述这个单词的“性格”或“特点”。 word_1 np.array([1, 0, 0])…...
实现网站内容快速被搜索引擎收录的方法
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/6.html 实现网站内容快速被搜索引擎收录,是网站运营和推广的重要目标之一。以下是一些有效的方法,可以帮助网站内容更快地被搜索引擎发现和收录: 一、确…...
什么是循环神经网络?
一、概念 循环神经网络(Recurrent Neural Network, RNN)是一类用于处理序列数据的神经网络。与传统的前馈神经网络不同,RNN具有循环连接,可以利用序列数据的时间依赖性。正因如此,RNN在自然语言处理、时间序列预测、语…...
python 判断复杂包含
目录 python 判断复杂包含 a和b都是拍好序的: python 判断复杂包含 a[10,13,15] b[[9,11],[11,13],[13,16]] b的子项是区间,返回b中子区间包含a其中元素的子项 if __name__ __main__:a [10, 11, 15]b [[9, 11], [11, 13], [13, 16]]# 筛选出包含…...
基于SpringBoot的阳光幼儿园管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
【PySide6快速入门】QDialog对话框的使用
文章目录 PySide6快速入门:QDialog对话框的使用前言QDialog的基本用法创建和显示对话框 QDialog的常用函数1. exec()2. accept()3. reject()4. setWindowTitle()5. setModal()6. setFixedSize()7. resize()8. reject()9. setLayout()10. open() 总结 PySide6快速入门…...
LiteFlow Spring boot使用方式
文章目录 概述LiteFlow框架的优势规则调用逻辑规则组件定义组件内数据获取通过 DefaultContext自定义上下文 通过 组件规则定义数据通过预先传入数据 liteflow 使用 概述 在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻…...
【ESP32】ESP-IDF开发 | WiFi开发 | TCP传输控制协议 + TCP服务器和客户端例程
1. 简介 TCP(Transmission Control Protocol),全称传输控制协议。它的特点有以下几点:面向连接,每一个TCP连接只能是点对点的(一对一);提供可靠交付服务;提供全双工通信&…...
用WinForm如何制作简易计算器
首先我们要自己搭好页面 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace _7_简易计算…...
指针的介绍2前
1.数组名的理解 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {int arr[] { 1,2,3,4,5,6,7,8,9 };printf("&arr[0] %p\n", &arr[0]);printf("arr %p\n", arr);return 0; } 观察得到,数组名就是数组首…...
EasyExcel写入和读取多个sheet
最近在工作中,作者频频接触到Excel处理,因此也对EasyExcel进行了一定的研究和学习,也曾困扰过如何处理多个sheet,因此此处分享给大家,希望能有所帮助 目录 1.依赖 2. Excel类 3.处理Excel读取和写入多个sheet 4. 执…...