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

文本向量模型BGE与BGE-M3

BGE模型

BGE模型对应的技术报告为《C-Pack: Packaged Resources To Advance General Chinese Embedding》

训练数据

为了训练BGE向量模型,构建了C-MTP数据集,它包括了用来训练文本向量的文本对数据(问答对、两个同义句子、相同主题的两个文档等),为了保证文章向量的泛化性,数据集需要同时满足大规模和多样性,C-MTP包括两个部分:未标注数据C-MTP (unlabeled)和标注数据C-MTP (labeled)。

  • C-MTP (unlabeled):数据主要来源是开放网络语料库如Wudao corpus,对于每一篇文章抽取(title, passage)来构成一个文本对;也按同样的处理方式从知乎、百科等抽取了文本对。除了网络开放语料之外,还从以下公开中文数据集中抽取了文本对:
    • CSL (scientific literature)
    • Amazon-Review-Zh (reviews)
    • Wiki Atomic Edits (paraphrases)
    • CMRC (machine reading comprehension)
    • XLSUM-Zh (summarization)

​ 直接抽取的文本对可能质量不高,使用Text2VecChinese给文本对打分,只保留分数在0.43上的文本对,数据集最终文本对的大小为100M

  • C-MTP (labeled):标注文本对来自以下标注数据集,一共838465条:
    • T2-Ranking
    • DuReader
    • mMARCO
    • CMedQA-v2
    • multi-cpr
    • NLI-Zh3
    • cmnli
    • ocnli

训练流程

BGE模型基于BERT-like架构,使用最后一层的特殊token [CLS]作为文本向量,有三个不同规模的模型组成:

  • large (326M参数)
  • base (102M参数)
  • small (24M 参数)

BGE的训练分为三个部分:1)预训练,2)通用微调(用C-MTP (unlabeled)进行对比学习),3)任务相关微调(用C-MTP (labeled)进行多任务微调学习)。

  1. 预训练,使用Wudao语料来训练模型,使用RetroMAE中提出的自动编码方式(MAE-stype)来进行预训练。

  2. 通用微调,将预训练好的模型在C-MTP (unlabeled)数据集上通过对比学习微调。

  • m i n . ∑ ( p , q ) − log ⁡ e < e p , e q > / τ e < e p , e q > / τ + ∑ Q ′ e < e p , e q ′ > / τ min\ . \sum_{(p,q)} -\log\frac{e^{<e_p, e_q>}/\tau} {e^{<e_p, e_q>/\tau}+\sum_{Q^{\prime}}e^{<e_p, e_{q^{\prime}}>/\tau}} min .(p,q)loge<ep,eq>/τ+Qe<ep,eq>/τe<ep,eq>/τ,式中p和q是文本对, q ′ ∈ Q ′ q^{\prime} \in Q^{\prime} qQ是负样本, τ \tau τ是温度。
  • 负样本仅使用in-batch negative samples,batch size 高达19200。
  • 训练时使用gradient checkpointing 和 cross-device embedding sharing的组合策略来使得batch size可以很大
  1. 任务相关微调,将前一步训练好的向量模型在C-MTP (labeled)数据集上进一步微调。为了协调不同任务,采用如下两个策略:
  • 基于指令的微调,对于每一个文本对(p,q),将一个任务相关的指令 I t I_t It添加到query q上: q ′ ← q + I t q^{\prime} \leftarrow q + I_t qq+It,指令是一个用来描述任务的prompt,比如"search relevant passages for the query".
  • 对于每一个文本对(p,q),挖掘了一个hard negative sample q ′ q^{\prime} q,挖掘方法是基于ANN挖掘的。

消融实验表明训练的各个阶段对于模型效果提升都有帮助(w.o.Instruct是在第三阶段训练时不使用指令微调,BGE-i是指经过第二阶段通用微调的模型,BGE-i w.o. pre-train是不使用RetroMAE预训练的模型,BGE-f经过全部训练流程的模型)

在这里插入图片描述

也做了实验来说明大batch-size对于模型性能的影响,在大多数任务上大batch size对于embedding模型是有益处的,尤其是检索任务效果提升特别明显。
在这里插入图片描述

BGE-M3模型

BGE-M3对应的技术报告为《BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation》

BGE-M3的M3是Multi-Linguality,Multi-Functionality, and Multi-Granularity的简称,也就是模型支持多语言、多种能力(稠密检索、稀疏检索、多向量检索),多粒度(最高支持8192长度的输入文本)。

在这里插入图片描述

训练数据

BGE-M3的数据构造分为三个部分:从未标注语料得到的无监督数据、从标注语料得到的微调数据、合成微调数据。

  • 无监督数据共1.2 billion文本对,包括了194种语言和2655跨语言对。主要从不同的多语言语料库提取titlebody, title-abstract, instruction-output等,数据来源有:

    • 多语言语料库:Wikipedia、S2ORC、xP3、mC4、CC-News
    • MTP(BGE模型的数据集)
    • 翻译相关数据集:NLLB、CCMatrix
  • 从标注语料得到的微调数据,数据来源有:

    • 英文包括8个数据集:HotpotQA,TriviaQA,NQ,MS MARCO,COLIEE,PubMedQA, SQuAD, NLI。
    • 中文包括7个数据集:DuReader,mMARCO-ZH, T 2 T^2 T2-Ranking, LawGPT,CMedQAv2,NLI-zh,LeCaRDv2。
    • 其他语言:MIRACL, Mr.TyDi
  • 合成数据(MultiLongDoc),从Wiki和MC4数据集中采样了长文章,并从其中随机选择段落,由GPT-5基于这些段落生成问题。生成的问题和段落组成的文本对最终作为微调数据的一部分。

    • GPT 3.5使用的prompt为“You are a curious AI assistant, please generate one specific and valuable question based on the following text. The generated question should revolve around the core content of this text, and avoid using pronouns (e.g., “this”). Note that you should generate only one question, without including additional content:”

在这里插入图片描述

BGE-M3混合检索实现

BGE-M3的Multi-Functionality是指实现混合检索,具体如下:

  • 稠密检索(Dense retrieval),输入query q经过文本编码器的隐状态层 H q \mathbf{H}_q Hq得到,取"[CLS]"的归一化隐状态作为向量: e q = n o r m ( H q [ 0 ] ) e_q = norm(\mathbf{H}_q[0]) eq=norm(Hq[0]),类似地passage p的向量: e p = n o r m ( H p [ 0 ] ) e_p = norm(\mathbf{H}_p[0]) ep=norm(Hp[0])。 query和passage的相关分数由两个向量 e q e_q eq e p e_p ep的内积表示: s d e n s e ← ⟨ e p , e q ⟩ s_{dense} \leftarrow \langle e_p, e_q \rangle sdenseep,eq
  • 词性检索(Lexical Retrieval),输入query的每一元素term t(即 token),term权重为 w q t ← R e l u ( W l e x T H q [ i ] ) w_{q_t} \leftarrow Relu(\mathbf{W}^T_{lex} \mathbf{H}_q[i]) wqtRelu(WlexTHq[i]),式中的 W l e x ∈ R d × 1 \mathbf{W}_{lex} \in R^{d \times 1} WlexRd×1是映射隐状态到浮点数的矩阵(如果一个term t在query中出现多次,只保留其最大值)。按照同样的方式计算passage的term权重。query和passage的相关分数由两者共现项(记作 q ∩ p q \cap p qp)计算得到: s l e x ← ∑ t ∈ q ∩ p ( w q t ∗ w p t ) s_{lex} \leftarrow \sum_{t \in q \cap p} (w_{q_t} * w_{p_t}) slextqp(wqtwpt)
  • 多向量检索(Multi-Vector Retrieval),多向量检索使用query和passage的整个输出向量: E q = n o r m ( W m u l T H q ) E_q = norm(\mathbf{W^T_{mul}} \mathbf{H}_q) Eq=norm(WmulTHq) E p = n o r m ( W m u l T H p ) E_p = norm(\mathbf{W^T_{mul}} \mathbf{H}_p) Ep=norm(WmulTHp),式中的 W m u l ∈ R d × d \mathbf{W}_{mul} \in R^{d \times d} WmulRd×d是可学习映射矩阵。query和passage的相关分数为: s m u l ← 1 N ∑ i = 1 N m a x j = 1 M E q [ i ] ⋅ E p T [ j ] s_{mul} \leftarrow \frac{1}{N} \sum^N_{i=1} max^M_{j=1} E_q[i] \cdot E^T_p[j] smulN1i=1Nmaxj=1MEq[i]EpT[j], N和M分别是query和passage的长度。

因为向量模型的多功能能力,所以可以实现混合检索过程,首先候选结果由每种方法单独得到(多向量检索成本很高,可考虑省略),然后最后检索结果根据各相关分数之和来排序: s r a n k ← s d e n s e + s l e x + s m u l s_{rank} \leftarrow s_{dense} + s_{lex} + s_{mul} sranksdense+slex+smul

Self-Knowledge Distillation

向量模型训练是为了将正样本从负样本中区分开,损失函数为如下式所表示的InfoNCE损失函数,式中 p ∗ p^* p P ′ P^{\prime} P是query q对应的正样本及负样本。 s ( ⋅ ) s(\cdot) s() { s d e n s e ( ⋅ ) , s l e x ( ⋅ ) , s m u l ( ⋅ ) } \{s_{dense}(\cdot) , s_{lex}(\cdot) , s_{mul}(\cdot) \} {sdense(),slex(),smul()}中的任意一个。
L = − log ⁡ e x p ( s ( q , p ∗ ) / τ ) ∑ p ∈ { p ∗ , P ′ } e x p ( s ( q , p ) / τ ) \mathcal{L} = -\log \frac{exp(s(q, p^*)/\tau)}{\sum_{p \in \{p^*, P^{\prime}\}} exp(s(q,p)/\tau) } L=logp{p,P}exp(s(q,p)/τ)exp(s(q,p)/τ)
BGE-M3中的三种不同检索方法的目标函数可能会彼此冲突,解决办法是使用Self-Knowledge Distillation。

  1. 三种检索方法融合的最简单方法是直接求和: s i n t e r ← s d e n s e + s l e x + s m u l s_{inter} \leftarrow s_{dense} + s_{lex} + s_{mul} sintersdense+slex+smul

  2. 对于每一种检索方法可以使用融合分数 s i n t e r s_{inter} sinter作为teacher,因此其损失函数可修改成: L ∗ ′ ← − p ( s i n t e r ) ∗ log ⁡ p ( s ∗ ) \mathcal{L}^{\prime}_* \leftarrow -p(s_{inter}) * \log p(s_*) Lp(sinter)logp(s)。式中的 p ( ⋅ ) p(\cdot) p()是softmax激活函数, s ∗ s_* s { s d e n s e ( ⋅ ) , s l e x ( ⋅ ) , s m u l ( ⋅ ) } \{s_{dense}(\cdot) , s_{lex}(\cdot) , s_{mul}(\cdot) \} {sdense(),slex(),smul()}中的任意一个。

  3. 将前一步的损失函数进行融合与归一化: L ′ ← ( L d e n s e ′ + L l e x ′ + L m u l ′ ) / 3 \mathcal{L}^{\prime} \leftarrow (\mathcal{L}^{\prime}_{dense} + \mathcal{L}^{\prime}_{lex}+\mathcal{L}^{\prime}_{mul} )/3 L(Ldense+Llex+Lmul)/3

  4. Self-Knowledge Distillation最终的损失函数为 L \mathcal{L} L L ′ \mathcal{L}^{\prime} L的线性组合: L f i n a l ← L + L ′ \mathcal{L}_{final} \leftarrow \mathcal{L} + \mathcal{L}^{\prime} LfinalL+L

BGE-M3训练过程

像BGE一样,BGE-M3也是多阶段训练:

  1. 经过RetroMAE 方法继续预训练的XLM-RoBERTa作为文本编码器。扩充了XLM-RoBERTa的最大位置向量到8192。数据来源为PIle、Wudao、mC4数据集,从中采样了184M数据,覆盖了105种语言。

  2. 使用无监督数据用对比学习方式预训练,这一阶段只有稠密检索向量被训练。

  3. 应用Self-Knowledge Distillation技术对向量模型继续微调,标注语料和合成数据都在这个阶段使用,并使用ANN方法挖掘了难负例。

在这里插入图片描述

为了保证训练过程中的大batch size 和长本文序列训练,优化了训练过程:

  • 根据长度对文本数据进行分组,并从每组中采样数据,确保一个batch内文本长度相对相似,从而减少填充。同时,数据程序会首先从组内采样足够的数据,然后分配给各机器(random seed保持固定),保证不同机器的计算开销尽可能相近。
  • 为了减少文本建模时的显存消耗,将一批数据分成多个小批。对于每个小批,我们利用模型编码文本,收集输出的向量同时丢弃所有前向传播中的中间状态,最后汇总向量计算损失。这个方法可以显著增加batch size。
  • 不同GPU的embedding向量被广播,允许每台机器在分布式环境里获取到所有向量,可以扩展in-batch 负样本的规模

在这里插入图片描述

考虑到用户可能没有足够的资源或者数据来训练长文本模型,提出了一个MCLS策略使得无需训练就能增强模型的长文本能力。这个策略在推理时应用,使用多个CLS token来联合捕获长文本的语义。该策略为每个固定数量的令牌插入一个CLS token(论文使用的是256个token),每个CLS token可以从相邻的令牌获取语义信息。最后通过对所有CLS token的最后隐藏状态求平均值来获得最终的文本向量。

参考资料

  1. Xiao, Shitao, Zheng Liu, Peitian Zhang, and Niklas Muennighof. 2023. “C-Pack: Packaged Resources To Advance General Chinese Embedding,” September.

  2. Chen, Jianlv, Shitao Xiao, Peitian Zhang, Kun Luo, Defu Lian, and Zheng Liu. n.d. “BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation.”

  3. FlagEmbedding github

相关文章:

文本向量模型BGE与BGE-M3

BGE模型 BGE模型对应的技术报告为《C-Pack: Packaged Resources To Advance General Chinese Embedding》 训练数据 为了训练BGE向量模型&#xff0c;构建了C-MTP数据集&#xff0c;它包括了用来训练文本向量的文本对数据&#xff08;问答对、两个同义句子、相同主题的两个文…...

【黑马头条】-day04自媒体文章审核-阿里云接口-敏感词分析DFA-图像识别OCR-异步调用MQ

文章目录 day4学习内容自媒体文章自动审核今日内容 1 自媒体文章自动审核1.1 审核流程1.2 内容安全第三方接口1.3 引入阿里云内容安全接口1.3.1 添加依赖1.3.2 导入aliyun模块1.3.3 注入Bean测试 2 app端文章保存接口2.1 表结构说明2.2 分布式id2.2.1 分布式id-技术选型2.2.2 雪…...

新能源充电桩站场AI视频智能分析烟火检测方案及技术特点分析

新能源汽车充电起火的原因多种多样&#xff0c;涉及技术、设备、操作等多个方面。从技术层面来看&#xff0c;新能源汽车的电池管理系统可能存在缺陷&#xff0c;导致电池在充电过程中出现过热、短路等问题&#xff0c;从而引发火灾。在设备方面&#xff0c;充电桩的设计和生产…...

springboot集成logback-spring.xml文件

彩色日志日志分debug和error文件输出&#xff0c;方便开发人员运维日志限制最大保管天数日志限制总量大小占用量GB日志限制单个文件大小MB日志显示最大保留天数屏蔽没用的日志 <?xml version"1.0" encoding"UTF-8"?> <!--~ Copyright (c) 2020…...

centos7 安装 nginx

一、yum 方式安装 1.安装yum工具 sudo yum install yum-utils 2. 安装epel yum install epel-release 3.安装nginx&#xff1a; yum install nginx 4.查看版本 nginx -v 5.设置开机自启动 systemctl enable nginx nginx 常用命令&#xff1a; 1&#xff09;启动nginx …...

29. UE5 RPG应用GamplayAbility

前面几篇文章&#xff0c;总算把GE给更新完了&#xff0c;GE的基础应用也算讲清楚了。接下来&#xff0c;我们将更新GA的相应的课程了&#xff0c;首先&#xff0c;这一篇先对GA做一个简单的介绍&#xff0c;然后实现一下如何实现给角色应用一个GA。 简介 GamplayAbility 简称…...

http和https的区别!

HTTP 明文传输&#xff0c;数据都是未加密的&#xff0c;安全性较差&#xff0c;HTTPS&#xff08;SSLHTTP&#xff09; 数据传输过程是加密的&#xff0c;安全性较好。 使用 HTTPS 协议需要到 CA&#xff08;Certificate Authority&#xff0c;数字证书认证机构&#xff09; …...

使用AOP实现打印日志

首先创建annotation.SystemLog类&#xff1a; package com.gjh.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.METHOD…...

2024年新算法-冠豪猪优化算法(CPO),CPO-RF-Adaboost,CPO优化随机森林RF-Adaboost回归预测-附代码

冠豪猪优化算法&#xff08;CPO&#xff09;是一种基于自然界中猪群觅食行为启发的优化算法。该算法模拟了猪群在寻找食物时的集群行为&#xff0c;通过一系列的迭代过程来优化目标函数&#xff0c;以寻找最优解。在这个算法中&#xff0c;猪被分为几个群体&#xff0c;每个群体…...

浅谈高阶智能驾驶-NOA领航辅助的技术与发展

浅谈高阶智能驾驶-NOA领航辅助的技术与发展 附赠自动驾驶学习资料和量产经验&#xff1a;链接 2019年在国内首次试驾特斯拉NOA领航辅助驾驶的时候&#xff0c;当时兴奋的觉得未来已来;2020年在试驾蔚来NOP领航辅助驾驶的时候&#xff0c;顿时不敢小看国内新势力了;现在如果哪家…...

大模型 智能体 智能玩具 智能音箱 构建教程 wukong-robot

视频演示 10:27 一、背景 继上文《ChatGPT+小爱音响能擦出什么火花?》可以看出大伙对AI+硬件的结合十分感兴趣,但上文是针对市场智能音响的AI植入,底层是通过轮询拦截,算是hack兼容,虽然官方有提供开发者接口,也免不了有许多局限性(比如得通过特定指令唤醒),不利于我…...

Clickhouse-表引擎探索之MergeTree

引言 前文曾说过&#xff0c;Clickhouse是一个强大的数据库Clickhouse-一个潜力无限的大数据分析数据库系统 其中一个强大的点就在于支持各类表引擎以用于不同的业务场景。 MergeTree MergeTree系列的引擎被设计用于插入极大量的数据到一张表当中。数据可以以数据片段的形式一…...

网络电视盒子哪个好?小编分享电视盒子品牌排行榜

电视盒子使用频率高&#xff0c;功能丰富&#xff0c;价格划算&#xff0c;是我们日常不可或缺的部分&#xff0c;小编经常会被问到与电视盒子相关的问题&#xff0c;考虑到很多朋友并不了解网络电视盒子哪个好&#xff0c;这次我来分享业内权威电视盒子品牌排行榜&#xff0c;…...

开源模型应用落地-baichuan2模型小试-入门篇(三)

一、前言 相信您已经学会了如何在Windows环境下以最低成本、无需GPU的情况下运行baichuan2大模型。现在,让我们进一步探索如何在Linux环境下,并且拥有GPU的情况下运行baichuan2大模型,以提升性能和效率。 二、术语 2.1. CentOS CentOS是一种基于Linux的自由开源操作…...

景联文科技高质量大模型训练数据汇总!

3月25日&#xff0c;2024年中国发展高层论坛年会上&#xff0c;国家数据局局长刘烈宏在“释放数据要素价值&#xff0c;助力可持续发展”的演讲中表示&#xff0c;中国10亿参数规模以上的大模型数量已超100个。 当前&#xff0c;国内AI大模型发展仍面临诸多困境。其中&#xff…...

【python】正则表达式

文章目录 正则表达式对象re.RegexObjectre.MatchObject符号说明匹配基础匹配?=、?<=、?!、?<!字符类re模块编译正则表达式compile 函数匹配字符串re.matchre.searchre.findall...

学习vue3第十二节(组件的使用与类型)

1、组件的作用用途 目的&#xff1a; 提高代码的复用度&#xff0c;和便于维护&#xff0c;通过封装将复杂的功能代码拆分为更小的模块&#xff0c;方便管理&#xff0c; 当我们需要实现相同的功能时&#xff0c;我们只需要复用已经封装好的组件&#xff0c;而不需要重新编写相…...

flume配置文件后不能跟注释!!

先总结&#xff1a;Flume配置文件后面&#xff0c;不能跟注释&#xff0c;可以单起一行写注释 报错代码&#xff1a; [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:158)] Unable to deliver event. Exception follows. org.apache.flume.EventDel…...

【docker】Dockerfile自定义镜像

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 1.Dockerfile自定义镜像 常见的镜像在DockerHub就能找到&#xff0c;但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像&#xff0c;就…...

webpack项目打包console git分支、打包时间等信息 exec

相关链接 MDN toLocaleString child_process Node.js strftime 格式 代码 buildinfo.js const { execSync, exec } require("child_process"); // exec: 在 Windows 执行 bat 和 cmd 脚本// execSync 同步 // exec 异步// exec 使用方法 // exec(git show -s,…...

Linux centos7离线搭建FTP

1、下载、安装ftp 下载ftp安装包&#xff0c;可以从rpm下载站搜索合适的版本&#xff0c;使用wget命令下载。 wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm 安装&#xff1a; rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm 2…...

关于GPT-SoVITS语音合成的效果展示(西游之西天送葬团)

目录 使用效果总结合成效果展示 使用效果总结 使用的是2024年03月21日22点28分更新的版本。 使用起来很方便&#xff0c;从它“自带界面”这点就能看出&#xff0c;易于使用也是目的之一&#xff0c;而且从训练到推理的每个步骤都能在界面中完成。 集成了多个实用工具&#…...

如何安装OceanBase的OBD

选择一&#xff1a;借助 all-in-one 安装包安装 OBD&#xff08;推荐&#xff09; OceanBase 社区版的all-in-one安装包是一个集成了多种工具的一键式安装包。它包含了数据库软件本身&#xff0c;以及OBD、OBProxy、OBClient&#xff0c;自4.1版本起&#xff0c;还额外加入了O…...

Unity 读写Excel打包后无法运行可能的解决方案

读写Excel打包后无法运行可能的解决方案 &#x1f4a1;.适用于NPOI、EPPlus。 &#x1f4a1;.下载 资源包&#x1f448;,解压后把dll放到Assets目录中再重新打包即可。...

算法沉淀 —— 深度搜索(dfs)

算法沉淀 —— 深度搜索&#xff08;dfs&#xff09; 一、计算布尔二叉树的值二、求根节点到叶节点数字之和三、二叉树剪枝四、验证二叉搜索树五、二叉搜索树中第K小的元素 一、计算布尔二叉树的值 【题目链接】&#xff1a;2331. 计算布尔二叉树的值 【题目】&#xff1a; …...

#设计模式#3.1用做松鼠桂鱼来理解抽象工厂(对象创建型模式)

概念&#xff1a;xx工厂&#xff0c;xx产品 区分 工厂是动作&#xff0c;产品是结果&#xff08;菜品&#xff09; 概念&#xff1a;抽象xx&#xff0c;具体xx 区分 抽象产品&#xff1a;“中式菜品” 具体产品&#xff1a;“麻婆豆腐”、“宫保鸡丁” 抽象工厂&#xff1a;“…...

adb基本命令

下载安装 adb 概述: ADB 全称为 Android Debug Bridge&#xff0c;起到调试桥的作用&#xff0c;是一个客户端-服务器端程序。其中客户端是用来操作的电脑&#xff0c;服务端是 Android 设备。 下载地址: Windows版本&#xff1a;https://dl.google.com/android/repository/pl…...

小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密

小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密 学习建议字符串大小写转换实现思路部分代码 字符串统计实现思路部分代码&#xff1a; 字符串编解码实现思路部分代码 字符串MD5加密实现思路部分代码 小工具整体设计设计思路工具完整代码实现输…...

MySQL进阶-----索引的语法与SQL性能分析

目录 前言 一、索引语法 1.SQL语法 2.案例演示 二、SQL性能分析 三、慢查询日志 1.开启日志 2.测试样例 四、profile详情 1.开启profile 2.profile测试SQL语句 五、explain详情 1.语法结构 2.执行顺序示例&#xff08;id&#xff09; 3.执行性能示例(type) 前言 本…...

Ansible剧本playbooks详解

一、playbook简介 playbook是ansible用于配置&#xff0c;部署和管理托管主机剧本&#xff0c;通过playbook的详细描述&#xff0c;执行其中一系列tasks&#xff0c;playbook字面意思是剧本&#xff0c;现实中由演员按剧本表演&#xff0c;在ansible中由计算机进行安装&#x…...

中国建设银行网站 党费/app营销

01. 交互式“_”操作符 对于 _ &#xff0c;我想很多人都非常熟悉。 给变量取名好艰难&#xff0c;用 _&#xff1b; 懒得长长的变量名&#xff0c;用 _&#xff1b; 无用的垃圾变量&#xff0c;用 _&#xff1b; 以上&#xff0c;我们都很熟悉了&#xff0c;今天要介绍的是他…...

免费推广网站怎么做/网站快速上排名方法

元春战役已打响激励的市场大战中一线V顾问在奋力厮杀炽焰行动&#xff0c;全面爆发横刀立马&#xff0c;决胜巅峰&#xff01;第一轮元春双周冠军已出炉&#xff01;双周冠军元春销售心得&#xff1a;我所在的门店是商场店&#xff0c;门店客流量是较多的&#xff0c;我的销售方…...

做游戏直播什么游戏视频网站好/免费的网站域名查询

一、使用top命令查看占用高资源的java项目的进程ID(pid): top 二、查看该进程中的线程所占用资源的情况&#xff1a;top -Hp pid 三、查看该线程对应的16进制&#xff1a;printf %x 11129 打印并保存该进程中堆栈的使用信息日志&#xff1a;jstack -l 11095 >> jstack.lo…...

python网站开发的优势/seo网站推广什么意思

2013年Python社区诞生了很多实用的开发工具&#xff0c;这些工具在一定程度上可以帮助你节省更多的时间。本文为你汇总了这些工具&#xff0c;它们大部分都是开源的&#xff0c;你还可以通过源码来学习更多的Python开发知识。Radon是一个用于从源代码中计算出各种指标的Python工…...

做影视网站用的封面/济南seo优化公司助力排名

因为一个服务器做了2个bond 0&#xff08;em1&#xff0c;em2&#xff09; bond1&#xff08;em3&#xff0c;em4&#xff09; 但是默认路由只生成了bond1的默认网关。但是bond1是数据库的心跳线。不是来做数据库数据传输用得。所以导致数据库无法访问。在rc.local 手动添加默认…...

手机网站怎么做单页面/信息如何优化上百度首页公司

SQLLDR HSTA/HSTA CONTROLSQLLoader.ctl SKIP4 LOAD6(只导入四到九行的记录)数据文件默认是.dat结尾对时间类型数据的转换&#xff1a;D_REQUESTDATE POSITION(*)char(8)"to_date(:D_REQUESTDATE,YYYYMMDD)"D_REQUESTTIME POSITION(*)char(6)"to_date(:D_REQUES…...