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

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs)

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs)

GaLore和Q-GaLore的设计背景、工作原理及其优势

设计背景

随着大型语言模型(LLMs)的发展,模型的规模和复杂性不断增加。这些模型通常需要大量的计算资源和内存,在训练过程中对GPU的要求非常高,使得许多研究者和开发者无法在普通消费级硬件上进行相关实验。这一现状使得高效的模型训练方案成为领域内的一个紧迫需求。

在此背景下,出现了低秩适配(LoRA)等技术,通过只优化少数参数来降低内存要求。然而,LoRA并不能保持全参数训练的性能,且在梯度训练动态方面表现不佳。为了解决这一问题,GaLore应运而生,提供了一种新的低秩投影策略,旨在实现更高效的内存使用和模型训练。

工作原理
  1. GaLore的原理:

    • GaLore的核心思想是利用梯度矩阵的低秩特性,通过奇异值分解(SVD)将优化器状态和梯度投影到一个较低维的子空间。这种方法减少了模型训练中的内存消耗但仍允许全参数的学习。
    • GaLore保持了梯度G的小“核心”统计数据,而不是处理整个梯度矩阵,从而在内存占用方面实现了显著的优化。
    • 在训练过程中,GaLore可以灵活地在不同的低秩子空间之间切换,以捕捉完整的梯度轨迹,这使得模型能够在不显著增加内存负担的情况下进行较为复杂的训练。
  2. Q-GaLore的原理:

    • Q-GaLore在GaLore的基础上引入了量化技术,通过将模型参数和投影矩阵量化到较低的位数(如4位)来进一步减少内存使用。
    • 它通过监测不同层的收敛统计信息,自适应地更新梯度子空间,从而降低了SVD操作的频率,并节省训练时间。
    • 在保证训练质量的前提下,Q-GaLore可以将训练模型的权重从高精度降低到8位,同时将投影矩阵量化为4位,这有效地提高了内存效率。
优势
  1. 显著降低内存需求:

    • 通过引入低秩投影和量化技术,GaLore和Q-GaLore能够在较低的内存占用下训练大型模型,使得普通用户也能进行此类实验。
  2. 保持模型性能:

    • 尽管降低了内存需求,GaLore和Q-GaLore在性能上取得了较好的平衡,保持了模型在特定任务上的有效性和准确性。
  3. 灵活性和适应性:

    • GaLore与Q-GaLore允许在训练过程中动态调整参数,适应不同层的收敛特征。这种灵活性使得模型训练变得更加高效。
  4. 推动普通硬件的使用:

    • 通过这些方法,即使是在不具备昂贵硬件的环境下,研究人员也能对大型语言模型进行有效的训练和微调,这有助于促进更加广泛的研究与应用。
  5. 降低训练时间:

    • Q-GaLore通过减少不必要的计算(如SVD操作),显著缩短了训练时间,提供更高的生产效率。

综上所述,GaLore和Q-GaLore为大型语言模型的训练提供了创新的解决方案,通过优化内存使用而不牺牲模型性能,推动了这一领域的发展。

LoRA并不能保持全参数训练的性能,且在梯度训练动态方面表现不佳

LoRA的局限性分析

1. LoRA的基本原理:
低秩适配(LoRA)是一种在大型语言模型(LLMs)微调过程中使用的策略,它主要是通过引入低秩矩阵来优化模型的参数。这种方法的关键在于固定预训练模型的权重,仅通过学习低秩适配器的参数来完成任务微调。这可以减小训练所需的参数量,从而降低内存占用并加快训练速度。

2. LoRA的优势:

  • 降低计算资源需求: 由于只需微调少量的参数,LoRA可以在较低的硬件配置下进行训练。
  • 快速适应新任务: 通过低秩适配,用户可以快速使预训练模型适应新任务,而无需对所有参数进行重新训练。

3. LoRA的局限性:

  • 无法实现全参数学习: 在某些情况下,LoRA的低秩适配器可能无法捕捉到模型所需的全部信息,这意味着在特定任务上的表现可能不如全参数训练。全参数训练允许每个参数独立调整,以最小化损失,这种灵活性是LoRA无法提供的。因此,当任务复杂且数据量较大时,LoRA可能会表现出较低的效果。

  • 梯度训练动态的影响: 在训练过程中,LoRA固定了模型的预训练权重,同时仅对低秩适配器进行梯度更新。这一做法可能导致梯度传播的动态表现不佳,因为模型在训练时可能无法充分利用预训练权重的信息。具体来说,固定的权重可能在某些情况下限制了下游任务中对相关信息的适应能力,导致梯度更新的效率降低。

  • 扩展性问题: 当任务变得复杂或多样化时,LoRA的低秩适配策略可能无法满足需要进行全局优化的需求。在这种情况下,固化的模型层次结构可能会限制性能的进一步提升,而全参数训练能够灵活地适用上下文变化。

  • 损失的平衡: 在更新低秩适配器时,可能会产生通过低秩近似理论带来的反向传播中的信息丢失。特别是在进行反向传播时,如果低秩适配器无法精确捕捉眼前的学习目标,则可能导致不可避免的性能损失。

  • 模型迁移的局限性: 在面对新的领域或任务时,比起全参数模型,LoRA由于在任务特定领域内的适应能力相对较弱,可能在迁移学习中的表现受限。这可能会导致其在实际应用中难以维持预期的性能。

总体而言,LoRA作为一种有效的微调方案,在资源有限的情况下表现突出,但在全参数训练的灵活性和性能方面存在明显的局限性。因此,对于需要全面学习和动态适应的复杂任务,GaLore等新兴技术应运而生,以克服LoRA的不足,实现更高效的训练方法。

GaLore允许全参数学习,而不仅仅是低秩适配器的优化

1. 背景介绍

在大型语言模型(LLMs)的微调过程中,低秩适配(LoRA)等技术常用于降低内存占用和计算资源需求。然而,这些方法的局限性在于它们通常只优化低秩适配器的参数,而固定了模型的其他参数,这可能会影响模型在特定任务上的表现。为了解决这个问题,GaLore作为一种新兴的训练方法应运而生,提供了更灵活的全参数学习方案。

2. GaLore的设计原理

GaLore的核心思想是利用梯度低秩结构,以允许全参数学习的方式进行模型微调。以下是GaLore的设计原理及其在全参数学习中的应用:

  • 低秩投影: GaLore通过捕获梯度矩阵的低秩结构并对其进行优化,使得在训练过程中能够“动态地”利用和更新整个模型的参数,而不仅限于低秩适配器。具体而言,GaLore能够有效识别和利用梯度的核心信息,以提高训练效率。

  • 动态子空间切换: GaLore在训练过程中可以灵活地在不同的低秩子空间之间切换。这种机制使得模型能够更全面地探索参数空间,从而结合全参数学习的优点,适应复杂的任务需求。

3. 全参数学习的优势

GaLore允许全参数学习,这一特性带来了多方面的优势:

  • 性能提升: 全参数学习提供了对所有模型参数的全面优化能力。这意味着模型能够更好地调整自己的参数,以适应特定的下游任务,克服了低秩适配器可能造成的性能瓶颈。

  • 捕获复杂特征: 在复杂任务中,模型所需的适应能力常常超出了低秩适配器的表达能力。GaLore通过优化全参数,可以更全面地捕捉数据中的复杂特征和模式,从而提高模型的泛化能力和准确度。

  • 更强的迁移学习能力: 全参数学习使GaLore在处理多个任务和领域时更具灵活性。模型可以在一个任务上获得的知识有效地迁移到其他任务中,更好地应对新场景。

  • 避免信息丢失: 由于GaLore允许优化整个模型参数,因此可以有效避免在训练过程中因固定部分参数而造成的信息丢失。这种灵活性确保了模型能够更精细地调整各层的权重。

  • 资源利用优化: GaLore在利用全参数学习优势的同时,仍然保持对内存的高度优化。通过低秩矩阵的有效利用,GaLore能够在内存和计算等资源限制下进行高效训练。

4. 总结

GaLore作为一种融合了全参数学习与低秩适配策略的新方法,克服了传统低秩适配技术的局限性。它不仅允许对模型所有参数进行优化,还通过动态子空间切换、有效捕获复杂特征等机制,提升了模型在复杂任务中的适应能力和性能。这样,GaLore为研究人员和开发者提供了一个更强大而灵活的工具,以便在有限资源的情况下仍能获得高质量的模型训练结果。

相关文章:

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs)

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs) GaLore和Q-GaLore的设计背景、工作原理及其优势 设计背景 随着大型语言模型(LLMs)的发展,模型的规模和复杂性不断…...

免费开源了一个图床工具 github-spring-boot-starter

文章目录 第一步,新建一个SpringBoot项目第二步,在pom文件里面引入jar包第三步,配置你的github信息github.authorization1、进入github官网,登录账号,点击头像,选择setting2、选择[Developer Settings](htt…...

Android显示系统(13)- 向SurfaceFlinger提交Buffer

Android显示系统(01)- 架构分析 Android显示系统(02)- OpenGL ES - 概述 Android显示系统(03)- OpenGL ES - GLSurfaceView的使用 Android显示系统(04)- OpenGL ES - Shader绘制三角…...

python小课堂(一)

基础语法 1 常量和表达式2 变量和类型2.1 变量是什么2.2 变量语法 3 变量的类型3.1 动态类型特性 4 注释4.1注释是什么 5 输入输出5.1 print的介绍5.2 input 6 运算符6.1 算术运算符在这里插入图片描述6.2 关系运算符6.3 逻辑运算符6.4赋值运算符 1 常量和表达式 在print()中可…...

【原创教程】西门子1500TCP_UDP通信说明大全(下篇)

2.3.3 TRCV故障说明 通讯无法正常连接时,ERROR引脚和STATUS引脚得状态有助于我们判断错误得原因,根据下表得提示,快速排除问题。 2.3.4 TRCV使用 点击TRCV指令得右上角蓝色图标,打开开始组态画面,按照控制要求填写 EN_R:用于激活接收的控制参数,及何时使用TRCV的接收功…...

【报错记录】Ubuntu22.04解决开机卡在 /dev/sda5 : clean , *files , *blocks

一个愿意伫立在巨人肩膀上的农民...... 一、错误现象 本人的电脑安装Windows10和Ubuntu22.04双系统,一次训练中电脑死机无法开机,重启之后便出现如下错误,在网上寻找过很多方法均无效,在root下禁用了samba服务,也无济…...

JumpServer开源堡垒机搭建及使用

目录 一,产品介绍 二,功能介绍 三,系统架构 3.1 应用架构 3.2 组件说明 3.3 逻辑架构 3.3 逻辑架构 四,linux单机部署及方式选择 4.1 操作系统要求(JumpServer-v3系列版本) 4.1.1 数据库 4.1.3创建数据库参考 4.2 在线安装 4.2.1 环境访问 4.3 基于docker容…...

libilibi项目总结(17)Elasticsearch 的使用

这段代码定义了一个 EsSearchComponent 类,主要用于与 Elasticsearch 进行交互,执行一些基本的操作,如创建索引、保存、更新和删除文档,及搜索操作。以下是对每部分代码的详细解释: 1. 类的依赖注入 Resource privat…...

C++ 模版函数 函数模版 区别

C中,函数模板(Function Template)和模板函数(Template Function)是同一个概念,通常没有区分,但为了避免混淆,有时我们可以从不同的角度来看待它们。 1. 函数模板 (Function Templat…...

SpringBoot 3.4.x踩坑记录及解决方案(持续更新)

废话 最近使用JDK17Spring Boot3.4.0 做新项目遇到的一些坑&#xff0c;记录并且给出一些实际的解决方案 一、集成Mybatis Plus 3.5.9的问题 第一&#xff1a;不能只引入mybatis-plus-spring-boot3-starter依赖了&#xff0c;需要配合mybatis-plus-jsqlparser <dependenc…...

Linux文件属性 --- 七种文件类型---文件.目录、软硬链接、字符设备文件

目录 七种文件类型 1、普通文件和目录 2、链接文件 2.1硬链接 2.2软链接 3、字符设备文件 一、七种文件类型 Linux的文件属性中一共有以下七种类型 &#xff1a; 符号类型含义解释-普通文件纯文本文件&#xff08;ASCII&#xff09;和二进制文件&#xff08;binary&#xff…...

C# 读取EXCEL的数据批量插入单个PDF里的多个位置

C# 读取EXCEL的数据批量插入单个PDF里的多个位置 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; usin…...

ARM Linux 虚拟环境搭建

一、目标 在没有arm硬件的情况下&#xff0c;使用QEMU模拟器&#xff0c;在PC上模拟一块ARM开发板&#xff0c;对ARM Linux进行学习。 二、搭建步骤 首先先有一个Linux 开发环境&#xff0c;我目前使用的是Ubuntu20. 首先安装qemu&#xff0c;qemu的官网&#xff1a;https:…...

【功能安全】安全确认

目录 01 功能安全确认介绍 02 安全确认用例 03 安全确认模板 01 功能安全确认介绍 定义: 来源...

LruCache(本地cache)生产环境中遇到的问题及改进

问题&#xff1a;单机qps增加时请求摘要后端&#xff0c;耗时也会增加&#xff0c;因为超过了后端处理能力&#xff08;最大qps&#xff0c;存在任务堆积&#xff09;。 版本一 引入LruCache。为了避免数据失效&#xff0c;cache数据的时效性要小于摘要后端物料的更新时间&…...

【21天学习AI底层概念】day8 什么是类意识?

类意识&#xff08;Quasi-Consciousness&#xff09; 是一个用来描述人工智能或复杂系统表现出的类似意识的行为或特性的概念。虽然这种系统不具备真正的意识&#xff08;即主观体验、情感和自我觉知&#xff09;&#xff0c;但在外部表现上&#xff0c;它们可能表现出与有意识…...

PostgreSQL JSON/JSONB 查询与操作指南

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作&#xff0c;适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值&#xff0c;结果为 JSON 格式。 SELECT {"a": {"b": 1…...

SamOutV2 0.18B模型发布

项目地址 SamOutV2 0.18B模型 采取 em参数共享在参数量减半的情况下将维度从1024 拉升到了1536sft 单论对话 loss 保持1.8如果未来匹配state 推理代码性能不变的同时推理任意长度使用资源空间保持不变 模型代码 import torchclass MaxState(torch.nn.Module):def __init__(…...

〔 MySQL 〕事务管理

事务代码目录 1. 设置事务隔离级别 2. 开启事务 3. CRUD操作 3.1 创建&#xff08;Create&#xff09; 3.2 读取&#xff08;Read&#xff09; 3.3 更新&#xff08;Update&#xff09; 3.4 删除&#xff08;Delete&#xff09; 4. 提交或回滚事务 5. 示例&#xff1a…...

centOS定时任务-cron服务

最近在训练模型的过程中&#xff0c;经常会因为内存爆炸而停止模型训练过程&#xff0c;而且因为内存占满停止的训练进程甚至都没有任何的报错提示。 1、需要减少num_worker的数量&#xff0c;降低需要占用内存的数据数量 2、可以通过free -h监控内存的占用情况 3、可以通过lin…...

ubuntu22.04.5本地apt源部署

很多情况下&#xff0c;内网服务器无法连接互联网&#xff0c;这样如果原始系统只是最基本的下载安装包&#xff0c;因为存在依赖包不全的情况&#xff0c;难以对其进行更新及通过apt安装包 所以为解决不能联网的问题&#xff0c;首先先通过可以联网的机器制造好源&#xff0c;…...

CSS 实现带tooltip的slider

现代 CSS 强大的令人难以置信 这次我们来用 CSS 实现一个全功能的滑动输入器&#xff0c;也就是各大组件库都有的slider&#xff0c;效果如下 还可以改变一下样式&#xff0c;像这样 特别是在拖动时&#xff0c;tooltip还能跟随拖动的方向和速度呈现不同的倾斜角度&#xff0c…...

【LeetCode每日一题】——220.存在重复元素 III

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 困难 三【题目编号】 220.存在重复元素 III 四【题目描述】 给你一个…...

Git命令

目录 一、创建版本库 二、pwd 命令是用于显示当前的目录 三、通过命令 git init 把这个目录变成git可以管理的仓库 四、ll 五、添加文件和修改提交文件 1.创建文件test.txt --- 此刻文件在工作区&#xff08;WorkSpace&#xff09; 2.使用命令 git add test.txt添加到暂…...

2024第十六届蓝桥杯模拟赛(第二期)-Python

# 2024第十六届蓝桥杯模拟赛&#xff08;第二期&#xff09;-Python题解 # 自己改注释# -----------------------1------------------------ # def prime(x): # if x < 2: # return 0 # for i in range(2, int(x ** 0.5) 1): # if x % i 0: # …...

数据结构:Win32 API详解

目录 一.Win32 API的介绍 二.控制台程序(Console)与COORD 1..控制台程序(Console): 2.控制台窗口坐标COORD&#xff1a; 3.GetStdHandle函数&#xff1a; &#xff08;1&#xff09;语法&#xff1a; &#xff08;2&#xff09;参数&#xff1a; 4.GetConsoleCursorInf…...

Hive-4.0.1数据库搭建(可选配置用户名密码远程连接,涵盖切换为tez引擎)

一、hive搭建&#xff08;所依赖的Hadoop集群参照文章&#xff1a;最新版hadoop-3.4.0集群安装和配置&#xff08;目前论坛的都是老古董了&#xff0c;看我的准没错&#xff01;&#xff01;&#xff01;&#xff09;这里以三台服务器为例_hadoop 3.4安装-CSDN博客&#xff09;…...

【从零开始入门unity游戏开发之——C#篇13】命名规范——驼峰命名法和帕斯卡命名法,函数(方法)的使用介绍

文章目录 一、命名规范1、**驼峰命名法&#xff08;Camel Case&#xff09;**用途&#xff1a; 2、**帕斯卡命名法&#xff08;Pascal Case&#xff09;**用途&#xff1a; 3、**C# 中命名约定的最佳实践**3.1 **类、结构体、接口、枚举、委托**3.2 **方法、属性、事件**3.3 **…...

Android 写排行榜,顶部前三

activity_step_rank.xml <?xml version"1.0" encoding"UTF-8"?> <FrameLayout android:layout_height"match_parent" android:layout_width"match_parent" android:id"id/fragment_parent" android:orientation…...

sql server一些冷知识

1. Sql Server冷知识 &#xff08;1&#xff09; 删除表内容的方法 truncate table 表名 &#xff08;清除表记录&#xff0c;这个快&#xff09; &#xff08;2&#xff09; 列出所有数据库 sp_redatabases &#xff08;3&#xff09; 存储过程的参数命名 参数一定要以开头&am…...

【功能安全】随机硬件失效导致违背安全目标的评估(FMEDA)

目录 01 随机硬件失效介绍 02 FMEDA介绍 03 FMEDA模板 01 随机硬件失效介绍 GBT 34590 part5...

【Qt】信号、槽

目录 一、信号和槽的基本概念 二、connect函数&#xff1a;关联信号和槽 例子&#xff1a; 三、自定义信号和槽 1.自定义槽函数 2.自定义信号函数 例子&#xff1a; 四、带参的信号和槽 例子&#xff1a; 五、Q_OBJECT宏 六、断开信号和槽的连接 例子&#xff1a; …...

二叉树、平衡二叉树、红黑树、BTree、B+Tree的区别

一、二叉查找树 二叉树具有以下性质&#xff1a;左子树的键值小于根的键值&#xff0c;右子树的键值大于根的键值。 如下图所示就是一棵二叉查找树&#xff0c; 对该二叉树的节点进行查找发现深度为1的节点的查找次数为1&#xff0c;深度为2的查找次数为2&#xff0c;深度为n…...

【Rust自学】3.1. 变量与可变性

3.1.0. 写在正文之前 欢迎来到Rust自学的第三章&#xff0c;一共有6个小节&#xff0c;分别是: 变量与可变性&#xff08;本文&#xff09;数据类型&#xff1a;标量类型数据类型&#xff1a;复合类型函数和注释控制流&#xff1a;if else控制流&#xff1a;循环 通过第二章…...

如何使用生成式AI实现跨领域内容生成

文章目录 引言生成式AI的基本概念定义与分类技术发展现状 跨领域内容生成的技术实现数据准备模型选择与设计训练策略 应用案例分析教育培训新闻媒体文化创意产业 实践建议确定明确的目标构建合适的团队持续迭代改进遵守法律法规 结论 引言 在当今数字化时代&#xff0c;信息的…...

ubuntu无网络图标无法上网解决方案

1.打开/etc/resolv.conf&#xff0c;在其中添加需要配置的DNS地址&#xff0c;根据自己的电脑情况配置IP和网关 # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback#网卡2&#xff0c;双网卡的话eth0、eth1 auto eth1 iface eth1 inet stat…...

手写Redis分布式锁+RedisUtil二次封装

文章目录 1.手写Redis分布式锁1.RedisShareLockUtil2.使用方式 2.RedisUtil二次封装1.RedisUtil2.使用案例 1.手写Redis分布式锁 1.RedisShareLockUtil package com.sunxiansheng.redis.util;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springfra…...

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同 IOS采用的是沙盒运行机制&#xff0c;安卓采用的是虚拟机运行机制。 1、沙盒机制&#xff1a; 概念&#xff1a;沙盒是一种安全机制&#xff0c;用于防止不同应用之间互相访问 作用&#xff1a;就是存储数据&#xff0c;每个沙盒就相当于每个每个应用的系…...

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 &#xff08;1&#xff09;先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 &#xff08;2&#xff09;在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…...

Springboot中使用Retrofit

Retrofit官网 https://square.github.io/retrofit/ 配置gradle implementation("com.squareup.okhttp3:okhttp:4.12.0")implementation ("com.squareup.retrofit2:retrofit:2.11.0")implementation ("com.squareup.retrofit2:converter-gson:2.11.0…...

字体子集化实践探索

最近项目rust生成PDF组件printpdf需要内嵌完整字体导致生成的PDF很大&#xff0c;需要做压缩&#xff0c;但是rust的类库allsorts::subset::subset不支持windows&#xff0c;所以做了一些windows下字体子集化的尝试 方案一&#xff1a;node.js做子集化 fontmin 缺点是也需要集…...

统计一个目录下的文件及目录数量-linux010

要统计一个目录下的文件数量&#xff08;包括子目录中的文件&#xff09;&#xff0c;可以使用以下命令&#xff1a; 1. 统计所有文件数量&#xff08;包括子目录&#xff09; 在终端中运行以下命令&#xff1a; find /path/to/directory -type f | wc -l 解释&#xff1a;…...

【计算机网络】期末考试预习复习|上

作业讲解 物理层作业 共有4个用户进行CDMA通信。这4个用户的码片序列为&#xff1a; A: (–1 –1 –1 1 1 –1 1 1)&#xff1b;B: (–1 –1 1 –1 1 1 1 –1) C: (–1 1 –1 1 1 1 –1 –1)&#xff1b;D: (–1 1 –1 –1 –1 –1 1 –1) 现收到码片序列&#xff1a;(–1 1 –…...

构建一个rust生产应用读书笔记四(实战3)

从这一节开始&#xff0c;我们将继续完善邮件订阅生产级应用&#xff0c;根据作者的选型sqlx作为数据库操作的类库&#xff0c;它有如下优点&#xff1a; 它旨在提供高效、安全且易于使用的数据库交互体验。sqlx 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL 和 SQLite&…...

idea无法识别文件,如何把floder文件恢复成model

前景&#xff1a; 昨天&#xff0c;我在之前的A1214模块包下新增了一个demo类&#xff0c;然后又新建了一个A1216模块&#xff0c;写了算法题&#xff0c;后面打算用git提交&#xff0c;发现之前的A1214模块下的demo类和新建的模块源文件都已经被追踪了&#xff0c;都是绿色的&…...

更新数据时Redis的操作

一般做法是在数据库更新后删除Redis中对应的缓存数据&#xff0c;而非更新数据。那么为什么要这么做呢&#xff1f; 以下是一些拙见 场景使用 金融交易系统&#xff1a;在金融领域&#xff0c;数据的准确性至关重要。任何数据不一致都可能导致严重的财务损失。因此&#xff0…...

Flink CDC 读取oracle库数据性能优化

通过综合考虑Oracle数据库配置、Flink作业配置以及其他优化措施&#xff0c;可以显著提升Flink CDC读取Oracle库数据的性能和效率。可以从以下几个方面进行&#xff1a; 一、Oracle数据库配置优化 ‌开启归档日志‌&#xff1a; 通过执行sqlplus /assysdba或sqlplus/nolog命令…...

学习记录:js算法(一百二十三):不同路径 II

文章目录 不同路径 II思路一 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。 网格中的障碍物…...

mybatis 的动态sql 和缓存

动态SQL 可以根据具体的参数条件&#xff0c;来对SQL语句进行动态拼接。 比如在以前的开发中&#xff0c;由于不确定查询参数是否存在&#xff0c;许多人会使用类似于where 1 1 来作为前缀&#xff0c;然后后面用AND 拼接要查询的参数&#xff0c;这样&#xff0c;就算要查询…...

You need to call SQLitePCL.raw.SetProvider()

在.NET环境中使用Entity Framework Core&#xff08;EF Core&#xff09;连接SQLite数据库时&#xff0c;报错。 使用框架 .NET8 错误信息&#xff1a; Exception: You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling…...