当前位置: 首页 > news >正文

再读bert(Bidirectional Encoder Representations from Transformers)

再读 BERT,仿佛在数字丛林中邂逅一位古老而智慧的先知。初次相见时,惊叹于它以 Transformer 架构为罗盘,在预训练与微调的星河中精准导航,打破 NLP 领域长久以来的迷雾。而如今,书页间跃动的不再仅是 Attention 机制精妙的数学公式,更是一场关于语言本质的哲学思辨 —— 它让我看见,那些被编码的词向量,恰似人类思维的碎片,在双向语境的熔炉中不断重组、淬炼,将离散的文字升华为可被计算的意义。BERT 教会我们,语言从来不是孤立的字符堆砌,而是承载着文化、逻辑与情感的多维载体,每一次模型的迭代与优化,都是人类向理解语言本质更深处的一次虔诚叩问,在这过程中,我们既是技术的创造者,也是语言奥秘的永恒探索者。

论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

Github:https://github.com/google-research/bert?tab=readme-ov-file

1.引言与核心创新

  • 背景

现有预训练模型(如 ELMo、GPT)多基于单向语言模型,限制深层双向表征能力。

  • 创新点

(1)提出BERT,通过MLMNSP预训练任务,实现真正的深层双向 Transformer 表征。

(2)证明预训练模型可通过简单微调(仅添加输出层)适配多任务,无需复杂架构设计。

2.模型架构与输入表征

  • 模型结构:

BERT(Bidirectional Encoder Representations from Transformers)由Google 提出并基于 Transformer 架构进行开发的预训练语言模型。如图所示, BERT 模型是由多个 Transformer 的编码器逐层叠加而成。 BERT 模型包括两种标准配置,其中 Base 版本包含 12 层 Transformer 编码器,而 Large版本包含 24 层 Transformer 编码器,其参数总数分别为 110M 和 340M。

BERT 模型的关键特点是能够全方位地捕捉上下文信息。与传统的单向模型(GPT-1 等自回归模型)相比, BERT 能够从两个方向考虑上下文,涵盖了某个词元之前和之后的信息。传统的模型往往只从一个固定的方向考虑上下文,这在处理复杂的语义关系和多变的句子结构时可能会遇到困难。例如,在问答系统中,单一方向可能导致模型不能完全理解问题的上下文,从而影响其回答的准确性。此外,在情感分析、关系抽取、语义角色标注、文本蕴涵和共指解析等任务中,单向方法可能无法充分捕获复杂的语义关系和上下文依赖,限制了其性能。为了应对这些挑战, BERT 通过预测遮蔽的词元来全面理解句子中的上下文,从而在许多 NLP 任务中实现了显著的性能增强。

  • Transformer 配置

模型

层数 (L)

隐层大小 (H)

注意力头 (A)

参数总量

BERT BASE

12

768

12

110M

BERT LARGE

24

1024

16

340M

  • 输入表征

采用WordPiece 分词(30k 词汇表),添加特殊 token:

[CLS]:序列分类标识,对应隐层用于分类任务。

[SEP]:句子对分隔符,段嵌入(Sentence A/B)区分句子归属。

输入嵌入 = 词嵌入 + 段嵌入 + 位置嵌入。

3.训练任务设计

BERT 模型的训练过程通常分为预训练(Pre-training)与微调训练(Finetuning)等两部分。

3.1 预训练

在预训练阶段, BERT 模型在大量未标注的文本数据上进行训练,目标是学习文本之间的深层次关系和模式。具体来说,它使用了两种训练策略:

i)掩码语言模型 (Masked Language Model);

ii)预测下一句(Next Sentence Prediction)。

任务 1:掩码语言模型(MLM)

掩码策略:随机选择 15% tokens,其中:

80% 替换为[MASK](如my dog is [MASK]),

10% 替换为随机词(如my dog is apple),

10% 保留原词(如my dog is hairy)。

目标:通过双向注意力预测原词,缓解预训练与微调时[MASK]未出现的不匹配问题。

任务 2:下一句预测(NSP)

数据生成:50% 真实连续句对(标签 IsNext),50% 随机句对(标签 NotNext)。

目标:通过[CLS]隐层预测句对关系,提升句子级语义理解(如 QA、NLI 任务)。

3.2 微调

微调训练阶段是在预训练的 BERT 模型基础上,针对特定任务进行的训练。这一阶段使用具有标签的数据,如情感分析或命名实体识别数据。通过在预训练模型上加载特定任务的数据进行微调, BERT 能够在各种下游任务中达到令人满意的效果。

BERT 模型微调训练的目的是使其具备处理各种下游任务的能力,微调的任务包括:句子对分类任务、单句分类任务、问答任务和命名实体识别等。

微调训练中为了使 BERT 适应各种 NLP 任务,模型首先调整其输入和输出。例如,在基于句子对的分类任务中,假设要判断句子 A“这家餐厅的食物很美味。”和句子 B“菜品口味很棒,值得推荐。”之间的关系,模型的输入是这两个句子的组合,而输出可能是它们的关系分类,例如“相关”或“不相关”。而在命名实体识别任务中,如果输入句子为“任正非是华为的创始人”,输出则是每个词的实体类别,如“任正非”被标记为“PERSON”,“华为”被标记为“ORGANIZATION”。在针对不同的任务,如文本分类、实体识别或问答等,进行微调训练时,会在 BERT 模型上增添一个特定的输出层。这个输出层是根据特定任务的需求设计的。例如,如果是文本分类任务,输出层可能包含少量神经元,每个神经元对应一个类别。同时,通过反向传播对模型参数进行调整。微调的过程就像是对模型进行 “二次训练”。

4.实验结果与 SOTA 突破

  • GLUE 基准(11 任务)

任务

BERT LARGE 得分

前 SOTA

提升幅度

MNLI(自然语言推理)

86.7%

82.1%(GPT)

+4.6%

QNLI(问答推理)

92.7%

87.4%(GPT)

+5.3%

SST-2(情感分析)

94.9%

91.3%(GPT)

+3.6%

平均得分

82.1%

75.1%(GPT)

+7.0%

  • SQuAD 问答任务

v1.1(有答案):单模型 F1 值 93.2,ensemble 达 93.9,超过人类表现(91.2%)。

v2.0(无答案):F1 值 83.1,较前 SOTA 提升 5.1%,首次接近人类表现(89.5%)。

  • SWAG 常识推理:BERT LARGE 准确率 86.3%,远超 GPT(78.0%)和人类专家(85.0%)。

5.消融研究与关键发现

  • NSP 任务的重要性

移除 NSP 后,MNLI 准确率从 84.4% 降至 83.9%,QNLI 从 88.4% 降至 84.9%,证明句子级关系建模对 QA 和 NLI 至关重要。

  • 双向性 vs 单向性

单向模型(LTR,类似 GPT)在 SQuAD F1 值仅 77.8%,远低于 BERT BASE 的 88.5%;添加 BiLSTM 后提升至 84.9%,仍显著落后。

  • 模型规模的影响

增大参数(如从 110M 到 340M)持续提升性能,即使在小数据集任务(如 MRPC,3.5k 训练例)中,BERT LARGE 准确率 70.1%,较 BASE 的 66.4% 提升 3.7%。

6.对比现有方法

  • 与 GPT 对比

    • GPT 为单向 Transformer(仅左到右),BERT 通过 MLM 实现双向,且预训练数据多 3 倍(33 亿词 vs GPT 的 8 亿词)。
    • BERT 在 GLUE 平均得分比 GPT 高 7.0%,证明双向性和 NSP 的关键作用。
  • 与 ELMo 对比

    • ELMo 通过拼接单向 LSTM 输出实现双向,为特征基方法;BERT 为微调基,参数效率更高,且深层双向表征更优。

7.关键问题

问题 1:BERT 如何实现深层双向语义表征?

答案:BERT 通过 ** 掩码语言模型(MLM)下一句预测(NSP)** 任务实现双向表征。MLM 随机掩码 15% 的输入 tokens(80% 替换为 [MASK]、10% 随机词、10% 保留原词),迫使模型利用左右语境预测原词,避免单向模型的局限性;NSP 任务通过判断句对是否连续,学习句子级语义关系,增强模型对上下文依赖的建模能力。

问题 2:BERT 在预训练中如何处理 “掩码 token 未在微调时出现” 的不匹配问题?

答案:BERT 采用混合掩码策略:在 15% 被选中的 tokens 中,仅 80% 替换为 [MASK],10% 随机替换为其他词,10% 保留原词。这种策略减少了预训练与微调时的分布差异,使模型在微调时更适应未出现 [MASK] 的真实场景,同时通过随机替换和保留原词,增强模型对输入噪声的鲁棒性。

问题 3:模型规模对 BERT 性能有何影响?

答案:增大模型规模(如从 BERT BASE 的 110M 参数到 LARGE 的 340M 参数)显著提升性能,尤其在小数据集任务中优势明显。实验显示,更大的模型在 GLUE 基准的所有任务中均表现更优,MNLI 准确率从 84.6% 提升至 86.7%,MRPC(3.5k 训练例)准确率从 66.4% 提升至 70.1%。这表明,足够的预训练后,更大的模型能学习更丰富的语义表征,即使下游任务数据有限,也能通过微调有效迁移知识。

相关文章:

再读bert(Bidirectional Encoder Representations from Transformers)

再读 BERT,仿佛在数字丛林中邂逅一位古老而智慧的先知。初次相见时,惊叹于它以 Transformer 架构为罗盘,在预训练与微调的星河中精准导航,打破 NLP 领域长久以来的迷雾。而如今,书页间跃动的不再仅是 Attention 机制精…...

C# 单例模式

创建一个类 在类中定义方法 internal class Config {// 实现单利模式private static Config instance null;private Config() { }private static object Locker new object(); // 定义lock锁// 通过公有的方法 返回实力public static Config GetInstance(){// 空的自己构造…...

mainwidget.cpp:1741:21: error: use of undeclared identifier ‘mainTab‘

这个错误表明在你的代码中,mainTab 这个变量没有被正确声明或定义。这通常是因为以下原因之一: 变量未声明:mainTab 可能没有在类的成员变量中声明。 变量未初始化:mainTab 可能没有在构造函数中正确初始化。 作用域问题&#x…...

OpenCV day6

函数内容接上文:OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑(模糊) 25.cv2.blur(): 26.cv2.boxFilter(): 27.cv2.GaussianBlur(): 28.cv2.medianBlur(): 29.cv2.bilateralFilter(): 锐…...

MySQL:Join连接的原理

连接查询的执行过程: 确定第一个需要查询的表【驱动表】 选取代价最小的访问方法去执行单表查询语句 从驱动表每获取到一条记录,都需要到t2表中查找匹配的记录 两表连接查询需要查询一次t1表,两次t2表,在两表的连接查询中&…...

Linux MySQL版本升级(rpm安装方式)

一、背景 近期生产环境扫描发现MySQL的多个安全漏洞。目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:https://www.oracle.com/security-alerts/cpuoct2024.html 二、升级注意事项 备份数据:升级前务必备份数据库。检查兼容性&…...

数字图像处理(膨胀与腐蚀)

腐蚀 核心原理:结构元四肢运算结果全为1,则结构元中心为1,否则为0。 怎么计算是否为1还是为0 结构元的值与前景的值进行与运算,如果结构元四肢的与运算结果全为1,则结构元中心为1,否则为0。 假设下图为结构…...

J值即正义——Policy Gradient思想、REINFORCE算法,以及贪吃蛇小游戏(三)

文章目录 前情提要谁的J值大呢?那么 ∇ θ J ( θ ) \nabla_\theta J(\theta) ∇θ​J(θ)要怎么求呢?构建loss函数**代码实现示例**(PyTorch伪代码):前情提要 上回咱说道,对于强化学习而言,J值即正义。 比如,你当了老板,你手下的两个高管,分别都为公司的发展提出了…...

pdfjs库使用3

.App { text-align: center; height: 100vh; display: flex; flex-direction: column; background-color: #f5f5f5; } /* PDF 查看器容器样式 */ .pdf-viewer { flex: 1; padding: 20px; max-width: 100%; margin: 0 auto; box-sizing: border-box; background-color: white;…...

transformer-词嵌入和位置嵌入详解

文章目录 1、介绍一下位置嵌入Positional Encoding、什么是Positional Encoding呢?为什么Transformer需要Positional Enconding? Transformer 的 Positional Encoding 是如何表达相对位置关系的?2、我来简单举个例子2.1 词向量:每个token都会…...

大模型本地部署之ollama安装及deepseek、qwen等模型下载操作

大模型本地部署之----ollama安装指南 最新版--下载方式 Download Ollama on macOS 因github下载较慢,可以网上搜索github加速工具下载 ----download后加版本号 例如: https://github.com/ollama/ollama/releases/download/v0.6.5/OllamaSetup.exe 通过网盘分享…...

ffprobe 输出 HEVC 码流 Level:标准的 “错位” 与分析的 “归位”

问题描述 最近用ffprobe分析HEVC/H265的码流,发现了与理论知识不符合的现象,比如针对一个H265的码流,用ffprobe输入命令 ffprobe -show_streams 1.h265 时,输入如下;可以看到 H265 的码流 Level 显示等于 93,打印值与标准理论值不符合,用其他工具分析此时 Level 等于 3.…...

线程池七个参数的含义

Java中的线程池里七个参数的以及其各自的含义 面试题:说一下线程池七个参数的含义? 所谓的线程池的 7 大参数是指,在使用 ThreadPoolExecutor 创建线程池时所设置的 7 个参数,如以下源码所示: public ThreadPoolExe…...

EnlightenGAN:低照度图像增强

简介 简介:记录如何使用EnlightenGAN来做低照度图像增强。该论文主要是提供了一个高效无监督的生成对抗网络,通过全球局部歧视器结构,一种自我调节的感知损失融合,以及注意机制来得到无需匹配的图像增强效果。 论文题目:EnlightenGAN: Deep Light Enhancement Without P…...

内存函数和动态内存管理

目录 一、memcpy库函数介绍 1. memcpy的使用 2. memcpy的模拟 二、memmove库函数介绍 1. memmove的使用 2. memmove的模拟 三、memset库函数介绍 四、memcmp库函数介绍 五、动态内存中malloc和free 1. malloc 2. free 六、动态内存中calloc和realloc 1. calloc 2. realloc 七、…...

计算机网络 - 在浏览器中输入 URL 地址到显示主页的过程?

第一步,浏览器通过 DNS 来解析 URL,得到相应的 ip 地址(到哪里找) 和 方法(做什么) 第二步,浏览器于服务器建立 TCP 三次握手连接 第三步,建立好连接后,浏览器会组装 HTTP 请求报文…...

Android Studio 常见报错

错误提示: Your build is currently configured to use incompatible Java 21.0.3 and Gradle 6.7.1. Cannot sync the project. 原因: Java JDK和gradle 版本不匹配 两个角度修改: 1.修改gradle 版本 2.修改JDK版本 Gradle 下载 https:…...

RT-DETR源码学习bug记录

事情是这样的,我最近想学习RT-DETR的源码,那就开始吧! 1. 找到官网,找到pytorch版本。 https://github.com/lyuwenyu/RT-DETR/tree/main 2.只想下载一个子目录,方法: https://download-directory.githu…...

数据仓库分层架构解析:从理论到实战的完整指南​​

数据仓库分层是构建高效数据体系的核心方法论。本文系统阐述ODS、DWD、DWS、ADS四层架构的设计原理,结合电商用户行为分析场景,详解各层功能及协作流程,并给出分层设计的原则与避坑指南,帮助读者掌握分层架构的落地方法。 一、为什…...

基于ubuntu24.10安装NACOS2.5.1的简介

基于ubuntu24.10安装NACOS2.5.1的简介 官方网站地址: https://nacos.io 可访问nacos站点 https://nacos.io/zh-cn/ 2025年04月记录发布 V2.5.1 版本 一、环境预准备 64 bit JDK 1.8; sudo apt update sudo apt install openjdk-8-jdk sudo apt upda…...

【Triton 教程】triton_language.full

Triton 是一种用于并行编程的语言和编译器。它旨在提供一个基于 Python 的编程环境,以高效编写自定义 DNN 计算内核,并能够在现代 GPU 硬件上以最大吞吐量运行。 更多 Triton 中文文档可访问 →https://triton.hyper.ai/ triton.language.full(shape, …...

MARA/MARC表 PSTAT字段

最近要开发一个维护物料视图的功能。其中PSTAT字段是来记录已经维护的视图的。这里记录一下视图和其对应的字母。 MARA还有个VPSTA(完整状态)字段,不过在我试的时候每次PSTAT出现一个它就增加一个,不知道具体是为什么。 最近一直…...

目标检测中的混淆矩阵

一直很疑惑YOLO的这个目标检测 混淆矩阵 🎯 假设任务:检测三种动物(猫、狗、羊) 我们使用一个目标检测模型对图像进行了预测,并收集了如下结果: ✅ 模型预测结果(带类别和框) vs 🟩真实框: 编号真实类别是否被检测到IOU是否合格预测类别备注1猫是✅猫✔️ 正确(…...

前端如何构建跨平台可复用的业务逻辑层(Web、App、小程序)

目录 第一章:跨平台开发的现状与技术选型分析 跨平台技术生态的全景概览 跨平台开发中业务逻辑层的共性需求 不同技术栈对业务逻辑复用的支持程度比较 技术选型中的权衡与思考 第二章:业务逻辑层的核心设计原则与架构理念 设计原则:构建高效业务逻辑层的基础 架构理念…...

day1-小白学习JAVA---JDK安装和环境变量配置(mac版)

JDK安装和环境变量配置 我的电脑系统一、下载JDK1、oracle官网下载适合的JDK安装包,选择Mac OS对应的版本。 二、安装三、配置环境变量1、终端输入/usr/libexec/java_home -V查询所在的路径,复制备用2、输入ls -a3、检查文件目录中是否有.bash_profile文…...

使用VHD虚拟磁盘安装双系统,避免磁盘分区

前言 很多时候,我们对现在的操作系统不满意,就想要自己安装一个双系统 但是安装双系统又涉及到硬盘分区,非常复杂,容易造成数据问题 虚拟机的话有经常用的不爽,这里其实有一个介于虚拟机和双系统之间的解决方法,就是使用虚拟硬盘文件安装系统. 相当于系统在机上…...

数据结构之稀疏矩阵与三元组表示法

稀疏矩阵的概念 在实际应用中,我们经常会遇到一些矩阵,其中大部分元素都是零,只有少量的非零元素。这种矩阵被称为稀疏矩阵。例如,在图像处理、网络分析等领域,稀疏矩阵经常出现。如果使用传统的二维数组来存储稀疏矩…...

微前端框架QianKun

以下是关于 QianKun微前端框架 的系统知识梳理,涵盖核心概念、核心功能、应用间通信、性能优化等内容: 一、QianKun基础概念与核心功能 微前端概念 定义:将单体前端应用拆分为多个独立开发、部署的子应用,通过主应用统一集成。优势:技术栈无关、独立部署、团队自治、增量…...

记录学习的第二十九天

还是力扣每日一题。 本来想着像昨天一样两个循环搞定的,就下面👇🏻 不过,结果肯定是超时啦,中等题是吧。 正确答案是上面的。 之后就做了ls题单第一部分,首先是定长滑窗问题 这种题都是有套路的&#xff0…...

C语言复习笔记--字符函数和字符串函数(上)

在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,接下来我们就学习⼀下这些函数。 首先来看下字符函数. 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#xf…...

SQL:聚合函数(Aggregate Functions)

目录 第一性原理出发思考 ——我们为什么需要聚合函数? 什么是聚合函数? 常见聚合函数 实例讲解 🔸 1. COUNT() —— 计数 🔸 2. MAX() / MIN() —— 最大 / 最小值 🔸 3. SUM() —— 求和 🔸 4. …...

Linux工具学习之【gcc/g++】

📘前言 书接上文,我们已经学习了 Linux 中的编辑器 vim 的相关使用方法,现在已经能直接在 Linux 中编写C/C代码,有了代码之后就要尝试去编译并运行它,此时就可以学习一下 Linux 中的编译器 gcc/g 了,我们一…...

5.0.2 颜色16进制格式含义 控件template中path的使用

本例要实现的目标如下: 1.右上角的按钮是X的形式(使用path用两根直线绘制) 2.鼠标移动上去以及鼠标点击背景色都变化。(使用不同透明度的白色来区分表示) 一、关于颜色的表示 在C# WPF和WinForms中,Background 属性用于设置控件的背景颜色,可以使用16进制(HEX)格式来表…...

【sharding-jdbc配置以及例子】

一、一个数据库不同的表(分表) &#xff08;1&#xff09;POM <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId…...

OJ笔试强训_1至24天

OJ笔试强训 Day01 [NOIP2010]数字统计_牛客题霸_牛客网 点击消除_牛客题霸_牛客网 两个数组的交集_牛客题霸_牛客网 Day02 牛牛的快递_牛客题霸_牛客网 最小花费爬楼梯_牛客题霸_牛客网 数组中两个字符串的最小距离__牛客网 Day03 简写单词_牛客题霸_牛客网 dd爱框框_…...

多态:面向对象编程的重要特性

摘要&#xff1a;本文全面阐述了面向对象编程中多态这一关键特性&#xff0c;从多态的形式、使用场景、定义及前提条件出发&#xff0c;深入分析其运行特点、弊端&#xff0c;详细介绍引用类型转换相关知识&#xff0c;并通过综合练习强化对多态的理解与应用&#xff0c;为深入…...

使用 Vue 开发登录页面的完整指南

一、项目搭建与基础配置 环境准备 使用 Vue CLI 或 Vite 创建项目&#xff0c;推荐组合&#xff1a;Vue3 Element Plus Vue Router npm create vuelatest npm install element-plus element-plus/icons-vue vue-router 全局配置&#xff08;main.js&#xff09; import { c…...

【Pandas】pandas DataFrame isin

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签&#xff08;行标签和列标签&#…...

Linux 网络接口 /sys/class/net/eth0 文件详解

以下是对 /sys/class/net/eth0 目录下每个文件或目录的详细讲解。这些文件是 Linux 系统中 sysfs 文件系统的一部分&#xff0c;提供了与网络接口&#xff08;这里是 eth0&#xff09;相关的配置和状态信息。每个文件或目录的内容反映了网络接口的特定属性或状态&#xff0c;通…...

java+postgresql+swagger-多表关联insert操作(九)

入参为json&#xff0c;然后根据需要对多张表进行操作&#xff1a; 入参格式&#xff1a; {"username": "车主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…...

Jsp技术入门指南【六】jsp脚本原理及隐式对象

Jsp技术入门指南【六】jsp脚本原理及隐式对象 前言一、JSP 脚本元素1.1 声明1.2 表达式1.3 脚本标签 二、JSP 的隐式对象是什么三、隐式对象详解outrequestsessionapplicationconfigexception 前言 在之前的博客中&#xff0c;我们已经介绍了JSP的环境搭建、编译文件查找以及生…...

邮件自动回复助手(Rasa/SMTP)实现教程

在现代办公场景中&#xff0c;处理大量邮件是一项既耗时又容易出错的任务。为了提升工作效率&#xff0c;我们可以利用自然语言处理&#xff08;NLP&#xff09;和邮件传输协议&#xff08;SMTP&#xff09;技术&#xff0c;构建一个智能的邮件自动回复助手。本文将详细介绍如何…...

【vLLM 学习】Aqlm 示例

vLLM 是一款专为大语言模型推理加速而设计的框架&#xff0c;实现了 KV 缓存内存几乎零浪费&#xff0c;解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/ 源代码&#xff1a;vllm-project/vllm from vllm import LLM, SamplingParams fr…...

《数据结构之美--链表oj练习》

链表oj题分享 1. 移除链表元素 题目&#xff1a; 思路分析&#xff1a; 根据题目描述&#xff0c;可以看出该题是要将满足条件的链表元素删除&#xff0c;并且返回新的头结点. 首先我们想到的肯定是直接遍历该链表然后对满足条件的元素进行删除&#xff0c;但删除某个元素时…...

杂记-LeetCode中部分题思路详解与笔记-HOT100篇-其四

那今天我们就把Hot100的所有题都完结了吧&#xff0c;Hot100作为大多数人笔试题的入门之选&#xff0c;可以说是非常的经典了&#xff0c;但是俗话说得好&#xff0c;书读百遍&#xff0c;其意自现&#xff0c;我不支持反复地只刷部分算法题&#xff0c;但是我支持周期性地刷刷…...

SpringBoot私人西服系统开发与设计

概述 基于SpringBoot的私人西服系统项目&#xff0c;是一个实用的服装管理系统。该系统包含了西服选择、面料选择、预约管理等核心功能。 主要内容 1. 管理员功能模块 用户管理&#xff1a;管理注册用户信息服装款式管理&#xff1a;管理西服款式信息面料类别管理&#xff…...

2.2/Q2,Charls最新文章解读

文章题目&#xff1a;Association of uric acid to high-density lipoprotein cholesterol ratio with the presence or absence of hypertensive kidney function: results from the China Health and Retirement Longitudinal Study (CHARLS) DOI&#xff1a;10.1186/s12882-…...

云端免费训练 AI 大模型推荐(适用于个人学习)

学习 AI 大模型训练&#xff08;如LLM、扩散模型等&#xff09;&#xff0c;云端服务器是必不可少的&#xff0c;因为大模型对算力&#xff08;GPU/TPU&#xff09;和内存要求极高。以下是 适合不同学习阶段 的云端服务器推荐&#xff0c;涵盖 免费、低成本、高性能 选项&#…...

《操作系统真象还原》第九章(2)——线程

《操作系统真象还原》第九章&#xff08;2&#xff09;——线程 文章目录 《操作系统真象还原》第九章&#xff08;2&#xff09;——线程前言多线程调度简单优先级调度的基础任务调度器和任务切换注册时钟中断处理函数实现调度器schedule实现任务切换函数switch_to启用线程调度…...

Windows程序包管理器WinGet实战

概述 WinGet&#xff0c;Windows Package Manager&#xff0c;Windows软件包管理器&#xff0c;开源在GitHub&#xff0c;GitHub Releases可下载&#xff0c;官方文档。 WinGet由一个命令行工具和一组用于在Windows 10/11等版本上安装应用的服务组成&#xff0c;可帮助用户快…...