从One-Hot到TF-IDF:NLP词向量演进解析与业务实战指南
从One-Hot到TF-IDF:词向量演进之路
开场白:
想象一下,你试图用Excel表格分析《红楼梦》的情感倾向——每个字词都是孤立的单元格,计算机看到的只有冰冷的0和1,而“黛玉葬花”的凄美意境却消失得无影无踪。这就是NLP工程师每天面对的根本难题:如何让机器理解那些藏在文字背后的故事?
词向量技术如同一位“语言炼金术师”,它把“我”、“北京”、“开心”这些符号,熔炼成带有密码的数字向量。从最原始的One-Hot编码(像给每个词发唯一身份证)到TF-IDF(像给词语贴重要性标签),再到Word2Vec、GloVe等模型带来的语义深度捕捉,最后是现在最先进的编码器和解码器模型,这些技术已经极大地推动了自然语言处理的发展。
尽管技术越来越新,但是业务中总会有各种各样的问题,遇到这种情景你该怎么办呢?
-
当老板要求明天上线一个文本分类系统时,你是花3天调BERT模型,还是用2小时写TF-IDF+XGBoost?
-
明明ChatGPT已经能写诗,为什么电商大厂还在用20年前的技术检测刷单评论?
本文将撕开算法黑箱,带你亲历NLP史上最隐秘的生存法则——用80分的算法解决90分的业务问题,才是工程师的顶级智慧。
一、One-Hot编码
1.1 缘起
由于计算机只能读懂二进制,所以直接喂给计算机自然语言计算机是不能工作的。
一个很简单的思路就是用0和1等二进制信息来表示自然语言,于是便有了one-hot编码表示自然语言的形式。
举个例子,假如全世界的词突然减少到了只剩下7个词,即["我", "要", "去", "北京", "想想", "就", "开心"],那么全世界的词表也就是["我", "要", "去", "北京", "想想", "就", "开心"],那么每个词的one-hot编码为:
-
"我" → [1, 0, 0, 0, 0, 0, 0]
-
"要" → [0, 1, 0, 0, 0, 0, 0]
-
"北京" → [0, 0, 0, 1, 0, 0, 0]
-
“我要去北京” → [1, 1, 1, 1, 0, 0, 0]
代码案例:(使用sklearn进行onehot编码)
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
vectors = encoder.fit_transform([["我"], ["要"], ["去"], ["北京"], ["想想"], ["就"], ["开心"]])
1.2 核心优势解析
-
数学可解释性:每个词对应唯一正交向量,保证词间独立性
-
零计算成本:无需训练即可生成特征表示
1.3 缺陷
-
维度灾难:词表规模(N)决定向量维度(N维),若词汇量达3万,每个词需3万维稀疏向量,存储和计算效率极低。
-
语义鸿沟:Onehot编码无法捕捉词汇之间的语义关系,例如“猫”和“狗”在语义上更为接近,但通过onehot编码后,从向量角度来看,不同的词向量是正交的,所以相似度为零。
-
特征稀疏:实际文本中99.9%的维度值为0
二、词袋模型(Bag of Words):从存在性到重要性的进化
有了one-hot的基础之后,就引出词袋模型了。
1.1 核心思想
词袋模型在One-Hot的"存在性判断"基础上,引入词频统计这一重要性维度。其核心假设是:词语在文档中出现的次数与其语义重要性正相关。这种从布尔逻辑到整数统计的转变,使得模型能够区分"重要关键词"与"普通修饰词"。
举个例子,假设我们有以下三句话:
- "我要去北京"
- "想想就开心"
- "我要去北京想想就开心"
基于之前的词表 ["我", "要", "去", "北京", "想想", "就", "开心"]
,我们可以构建一个词袋模型,表示如下:
文档编号 | 我 | 要 | 去 | 北京 | 想想 | 就 | 开心 |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
可以看到,每一行表示一个文档,每一列表示一个词,值表示该词在文档中出现的次数。
代码案例:(使用sklearn实现词袋模型)
from sklearn.feature_extraction.text import CountVectorizer# 构建语料库
corpus = ["我要去北京","想想就开心","我要去北京想想就开心"
]# 初始化词袋模型
vectorizer = CountVectorizer()# 训练并转换语料库
X = vectorizer.fit_transform(corpus)# 输出词表和对应的词袋矩阵
print("词表:", vectorizer.get_feature_names_out())
print("词袋矩阵:\n", X.toarray())
输出结果:
词表: ['北京' '就' '开心' '想想' '去' '要' '我']
词袋矩阵:[[1 0 0 0 1 1 1][0 1 1 1 0 0 0][1 1 1 1 1 1 1]]
1.2 核心优势解析
- 简单易用:词袋模型实现简单,易于理解和使用。
- 高效性:对于小规模数据集,词袋模型能够快速生成特征向量。
- 兼容性强:生成的稀疏矩阵可以直接用于机器学习算法,如逻辑回归、支持向量机等。
- 无序性:忽略词序后,模型对短文本的处理表现较好。
1.3 缺陷
- 忽略语义信息:词袋模型完全忽略了词语之间的顺序关系,可能会丢失上下文信息。例如,“我喜欢你”和“你不喜欢我”会被视为相同的向量。
- 高维稀疏性:当词表很大时,生成的特征向量会非常稀疏,导致计算效率低下。
- 无法捕捉相似性:不同词之间没有相似性度量,例如“开心”和“快乐”会被视为完全不同的词。
1.4 业务价值
有人说,词袋模型太古老了,现在业务中已经没有价值了。
非也非也。即便是这么古老的技术也是有意义的。
比如从直播中检测是否有人用录播冒充直播的情况:
输入是一段超长文本(重复录播可以做到24/7的不间断直播),输出是是否存在录播重复True/False。
录播检测场景的技术选型逻辑:
1. 编辑距离:O(n²)时间复杂度,对10分钟直播流(约5000字)需计算2500万次对比
2. 词袋模型:滑动窗口内词频统计 → 向量化 → 余弦相似度计算,时间复杂度降为O(n)
技术对比
方案 | 时间复杂度 | 准确率 | 适用场景 |
---|---|---|---|
编辑距离 | O(n²) | 98% | 短文本精准匹配 |
词袋模型+余弦相似度 | O(n) | 92% | 实时流媒体检测 |
所以说,即便是最古老的技术也是有价值的
三、TF-IDF
1.1 核心思想
TF-IDF 是一种统计方法,用于评估一个词在文档或语料库中的重要性。
其核心思想是:如果某个词在一个文档中频繁出现,但在整个语料库中很少出现,则该词可能对这个文档来说是非常重要的。
-
TF(Term Frequency, 词频):衡量一个词在文档中出现的频率。可以通过简单计数、归一化等方式计算。
-
TF(词) = (该词在文档中出现的次数) / (文档中所有词的数量)
-
举个例子,如果一个词在一篇有100个词的文档里出现了5次,那么这个词的词频就是 5/100=0.055/100=0.05。
-
-
IDF(Inverse Document Frequency, 逆文档频率):衡量一个词的普遍重要性。如果一个词在很多文档中都出现过,那么它可能不是一个好的区分者。
-
IDF(词) = log(总文档数 / 包含该词的文档数量)
-
这里的 log 是以 e 为底的对数函数。例如,如果有1000篇文档,其中10篇包含某个词,则 IDF = log(1000/10)=log(100)log(1000/10)=log(100)。
-
-
TF-IDF:结合了上述两种指标,旨在通过降低在所有文档中都很常见的词汇的重要性来突出那些有助于区分文档的词汇。
- TF-IDF = TF × IDF
-
这意味着,一个词在一个特定文档中的重要性不仅取决于它在这个文档中出现的频率,还取决于它在整个文档集合中的普遍程度。
代码案例:(使用sklearn实现TF-IDF)
from sklearn.feature_extraction.text import TfidfVectorizer# 构建语料库
corpus = ["我要去北京","想想就开心","我要去北京想想就开心"
]# 初始化TF-IDF模型
vectorizer = TfidfVectorizer()# 训练并转换语料库
X = vectorizer.fit_transform(corpus)# 输出词表和对应的TF-IDF矩阵
print("词表:", vectorizer.get_feature_names_out())
print("TF-IDF矩阵:\n", X.toarray())
1.2 核心优势解析
- 强调关键信息:相比于简单的词袋模型,TF-IDF 更加关注那些能够区分不同文档的关键词汇。
- 减少常见词影响:通过 IDF 部分,减少了像“的”、“是”这样的高频但无实际意义的词汇的影响。
- 适应性强:可以应用于各种类型的文本数据,并且不需要复杂的参数调整。
1.3 缺陷
- 忽略上下文:尽管TF-IDF能有效识别关键词,但它仍然忽略了词语之间的顺序和上下文关系。
- 维度灾难:对于非常大的语料库,生成的特征向量维度非常高,可能导致计算效率问题。
- 无法捕捉同义词:不同的词即使具有相似的含义,也会被视为完全不同的实体。
1.4 业务价值
TF-IDF 在如今仍然很常用,如低成本策略大多采用TF-IDF做特征工程,然后接一个分类器做文本分类,这种业务实际中太多了。
较常用的,TF-IDF (特征) + XGBoost/SVM(分类器)= 分类模型
虽然效果上限低于GPU类模型(RNN和预训练模型),但是成本超低,响应超快,仍然有不少企业采用这种解决方案。
四、技术演进全景图与业务选型建议
4.1 技术对比矩阵
评估维度 | One-Hot | 词袋模型 | TF-IDF |
---|---|---|---|
语义区分能力 | ❌ | 词频差异 | 跨文档重要性 |
空间复杂度 | O(V) | O(V) | O(V) |
实时计算性能 | O(1) | O(n) | O(n log n) |
上下文感知 | ❌ | ❌ | ❌ |
最佳适用场景 | 小规模枚举特征 | 短文本聚类 | 信息检索 |
五、结语
今天就是本专栏的第一篇干货,简单介绍了一下 tf-idf 的由来和实现。
由于本专栏的策略是实践中学习,所以我这期将原理,下期就要讲代码了,欢迎订阅,谢谢大家~
思考题🤔
- 对于TF-IDF考虑这样一种情况,有若干篇文档,但一种一篇文章是单独讨论狗的,所以狗这个词的权重就会变的很高。你觉得这样合理么?有什么解决方案吗?
- TF-IDF出来50000维特征,领导却说‘反正现在内存便宜直接跑模型呗’——你们会乖乖照做,还是偷偷降维?如果降,怎么和老板解释‘降维不丢信息’
下期预告:使用 tfidf 进行常见业务的文本分类(代码实现)🚀
相关文章:
从One-Hot到TF-IDF:NLP词向量演进解析与业务实战指南
从One-Hot到TF-IDF:词向量演进之路 开场白: 想象一下,你试图用Excel表格分析《红楼梦》的情感倾向——每个字词都是孤立的单元格,计算机看到的只有冰冷的0和1,而“黛玉葬花”的凄美意境却消失得无影无踪。这就是NLP工…...
Ubuntu下载火狐浏览器
在 Ubuntu 中卸载 Firefox 浏览器的方法取决于其安装方式(通过 APT 包管理器 或 Snap)。以下是详细的步骤: 1. 确认 Firefox 的安装方式 首先检查 Firefox 是通过哪种方式安装的: # 检查 Snap 版本 snap list | grep firefox# 检…...
C++ - 数据容器之 unordered_map(声明与初始化、插入元素、访问元素、遍历元素、删除元素、查找元素)
一、unordered_map unordered_map 是 C STL 中的一个关联容器,它有如下特点 unordered_map 存储键值对,使用哈希表实现 unordered_map 的每个键在容器中只能出现一次 unordered_map 的存储的键值对是无序的 平均情况下,查找、插入、删除都…...
什么是具身智能?其发展五大趋势预测
3月29-30日,由中国人工智能学会主办的第二届中国具身智能大会(CEAI 2025)在北京海淀成功召开。中国科学院院士、南京大学党委书记谭铁牛在大会作题为“具身智能:学科交叉的新前站”的主题演讲。他表示,具身智能是发展人…...
智能指针的使用及其原理(C++)
1. 智能指针的使用场景分析 通过下面的例子来分析: double Divide(int a, int b) {// 当b 0时抛出异常if (b 0){throw "Divide by zero condition!";}else{return (double)a / (double)b;} }void Func() {int* array1 new int[10];int* array2 new …...
使用 react-three-fiber 快速重构 Three.js 场景⚛️
不明白的知识先放在一边,激发兴趣是第一步,所以不必纠结代码的细节,相信我你很快就会爱上这种感觉!!! 今天,我们将更进一步,将上一篇中vite npm传统 Three.js 原生代码完整 重构为 …...
索尼相机视频文件格式规格
XAVC,作为Sony所独有的一种视频编码格式,具有其独特的压缩技术。其中,L代表的是Long GOP压缩方式,这种方式在视频编码中,侧重于实现帧间的高效压缩,以提升整体的编码效率。而I则对应着Intra压缩方式&#x…...
Audacity命令:“文件”菜单相关命令
1 Audacity命令:“文件”菜单相关命令 文件菜单提供用于创建、打开和保存 Audacity 项目以及导入和导出音频文件的命令。 1.1 文件菜单命令列表 文件菜单一级菜单的命令列表 Scripting IdActionParameters描述New:New无创建一个新的空白项目窗口,用于处…...
chrome提示https不安全, 不能记住账号密码怎么办? 可以利用js输入账号
背景: 在内网搭建的服务, 由于https证书问题, 可能会被chrome浏览器提示不安全 此时, 默认的记住账号密码功能就无法使用, 那么此时只能手动输入了吗? 想到了几种方案 1.利用外置软件, 模拟按键输入(比如按键精灵, 缺点是依赖外部软件, 运行速度也慢, 且执行时占用了输入焦…...
ubuntu18.04安装miniforge3
1.下载安装文件 略(注:从同事哪里拖来的安装包) 2.修改安装文件权限 chmod x Miniforge3-Linux-x86_64.sh 3.将它安装到指定位置 micromamba activate /home/xxx/fxp/fromDukto/miniforge3 4.激活 /home/xxx/fxp/fromDukto/miniforge3…...
Flutter容器组件深度解析
引言 在 Flutter 开发中,容器组件是构建用户界面的基石。它们为开发者提供了强大而灵活的方式来组织和布局界面元素。通过使用容器组件,开发者可以轻松地控制子组件的大小、位置、边距、背景等属性,从而创建出美观、易用且响应式的界面。本文…...
Java 实现 List<String> 与 String 互转
在 Java 开发过程中,有时需要将 List<String> 转为 String 存储,后续使用时再还原回去。此时就需要 Java 实现 List<String> 与 String 互转。以下是一种互转方式。 采用如下工具包实现。 <dependency><groupId>org.apache.com…...
无人设备遥控器之数据分析与处理篇
无人设备遥控器的数据分析与处理是提升设备智能化水平和操作效率的关键环节。以下从数据采集、预处理、分析方法、处理技术、应用场景五个方面展开分析: 一、数据采集 无人设备遥控器通过多种方式采集数据,主要包括: 控制信号数据…...
【Django】教程-14-验证码+登录页
【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 【Django】教程-5-ModelForm增删改查规则校验【正则钩子函数】 【Django】教程-6-搜索框-条件查询前后端 【Django】教程…...
flask实现上传文件与下载文件
以下是一个使用Python Flask实现的文件上传和下载服务的完整步骤及代码示例:供参 功能说明: 上传文件: POST请求到/upload端点 需要包含一个名为file的文件参数 支持的文件类型包括:txt, pdf, png, jpg, jpeg, gif, doc, docx, xlsx, zip 返回上传成功信息和下载链接 下载…...
用Java写一个MVCC例子
MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于数据库管理系统中处理并发访问数据的技术。它允许事务在查询时看到数据的一个快照版本,而不是直接查看最新的提交数据。这种方法不仅提高了并发性能,…...
【遥感科普】卫星影像产品处理等级有哪些?
遥感数据等级划分是指将卫星遥感原始数据按处理深度分为不同等级,用户可快速匹配需求:初级数据适合算法开发,高级产品可直接用于分析。分级体系促进数据标准化,降低使用门槛,提升跨机构协作效率;同时便于质…...
第十二天 - Flask/Django基础 - REST API开发 - 练习:运维管理后台API
从零开始用Flask/Django构建运维管理后台API(实战指南) 前言:为什么选择Python Web框架? 在运维自动化领域,构建管理后台是每个运维工程师的必修课。本文将通过Flask和Django两个主流框架,手把手教你构建…...
计算机视觉与深度学习 | 视觉里程计(Visual Odometry, VO)学习思路总结
视觉里程计(Visual Odometry, VO)学习思路总结 视觉里程计(VO)是通过摄像头捕获的图像序列估计相机运动轨迹的技术,广泛应用于机器人、自动驾驶和增强现实等领域。以下是一个系统的学习路径,涵盖基础理论、核心算法、工具及实践建议:一、基础理论与数学准备 核心数学工具…...
解决vite.config.ts 引入scss 预处理报错
版本号: "sass": "^1.86.3","sass-loader": "^16.0.5","vite": "^6.2.0" 报错图片: vite.config.ts 一开始文件错误 修改之后:完美解决报错(不过我还没搞懂为什么…...
Design Compiler:中断命令/脚本的执行
相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 中断命令的执行 如果在使用命令时输入了错误的选项或输入了错误的命令,可以使用CtrlC手动中断命令的执行并返回到dc_shell中,此时终端…...
图灵逆向——题十七-字体加密
十七题是一个很经典的字体加密案例,很适合新手入门~ 目录列表 过程分析代码实现 过程分析 打开开发者工具直接看请求,发现它请求的没有加密参数,以为万事大吉的你迫不及待的点击了响应,然后就会发现依托。。。 返回的数据中字体…...
uniapp微信小程序图片生成水印
整体思路: 用户通过uni.chooseImage选择图片后,获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息,也就是图片宽高。图片宽高等比缩放至指定大小,不然手机处理起来非常久,因为手机随便拍拍就很大。…...
【MySQL】001.MySQL安装
文章目录 一. MySQL在Ubuntu 20.04 环境安装1.1 更新软件包列表1.2 安装MySQL服务器1.3 配置安全设置1.4 检查mysql server是否正在运行1.5 进行连接1.6 查询自带的数据库 二. 配置文件的修改三. MySQL连接TCP/IP时的登陆问题四. MySQL中的命令 一. MySQL在Ubuntu 20.04 环境安…...
《深度剖析 Linux 权限管理:从基础到进阶,解锁系统安全密钥》
一、权限管理 1.1 普通权限(普通文件和目录) [rootmd ~]# ll total 124 drwxr-xr-x. 2 root root 28 Feb 16 15:48 : drwxr-xr-x. 3 root root 64 Mar 9 00:22 111 -rw-r--r--. 1 root root 43 Feb 17 22:44 1.txt 1 2 …...
2025年4月9日-华为暑期实习-第一题-100分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 软件依赖链分析系统 问题描述 LYA 是某软件公司的工程师,负责管理公司的软件依赖关系。每个软件组件都有可能依赖于其他组件,形成一个依赖链。为了确保系统的稳定性,LYA 需要…...
leetcode 377. Combination Sum IV
这道题也是完全背包问题。这道题和第518题几乎一摸一样,所不同的是,第518题要求的是组合数,而第377题要求的是排列数。虽然本题题目描述中说求的是组合数,但从例子1中(1,1,2)和&…...
【TS学习】(22)什么是混入
在 TypeScript 中,混入(Mixins) 是一种设计模式,用于将多个类的功能组合到一个类中。它是一种实现代码复用的方式,尤其适用于需要从多个来源继承功能的场景。TypeScript 不直接支持多继承,但可以通过混入模…...
Firebase Studio,谷歌推出的云端AI 开发环境
Firebase Studio 是谷歌推出的一款基于云的全栈应用开发环境,旨在帮助开发者高效构建和交付集成 AI 功能的高质量应用。该平台结合了 Project IDX 和专用的 Firebase AI 代理,提供从后端到前端、移动应用等多维度的开发支持。 Firebase Studio是什么 F…...
电能质量在线监测分析装置支持实时监测、数据存储及远程传输,适用于电网、工业等场景
电能质量在线监测分析装置主要技术指标 2.1工作电源 交流:220V10% ;50Hz0.5Hz;谐波畸变率不大于15% 直流:220V10%,纹波系数不大于5% 2.2电流信号输入 输入方式:电流互感器输入; …...
线代[13]|线性代数题37道以及数学分析题3道(多图预警)
博主首次发布于CSDN,禁止转载!(CSDN:汉密士2025) 文章目录 一、缘起|《俗说矩阵》课程目录照片存档|线性代数学习脉络|线代习题集封面存档|未来——我与线性代数的纠缠 二…...
gitlab内置pgsql数据库迁移
gitlab内置pgsql数据库迁移 创建gitlab备份方法一,使用pg_dump备份方法二 使用gitlab工具 gitlab-backup 备份 运行sql文件注意事项ERROR: extension "btree_gist" has no installation script nor update path for version "1.7"btree_gist 找…...
IDEA、Webstorm使用账号密码登录Gitlab
在开发过程中,为了保证代码安全,更改了gitlab司库的密码,当更新项目时,发现更新失败了。让填入access_token,gitlab网页设置中虽然generate了token,也填入了它,但是还是报错401unauthorized&…...
水利水电安全员ABC适合哪些人考?
水利水电安全员证是水利工程建设领域的重要职业资格证书,主要涉及水利水电工程施工安全管理、风险防控和应急处理等工作。那么,哪些人适合考取? 哪些人适合考水利水电安全员? 1. 水利水电工程从业人员 ✅ 施工管理人员…...
Service Mesh 深度解析与 Istio+Envoy 实现方案
Service Mesh 深度解析与 IstioEnvoy 实现方案 一、Service Mesh 技术全景 核心架构演进 第一代架构:以库形式集成(如 Netflix OSS)第二代架构:Sidecar 代理模式(如 Linkerd)第三代架构:全功…...
使用uv管理python项目环境
安装uv 使用默认python环境安装uv(把uv安装到默认python环境):pip install uv 创建python项目虚拟环境 如果是已有项目并且项目中有uv.lock文件,直接运行 uv run main.py,这会默认使用uv.lock文件创建虚拟环境如果是新…...
【Code】《代码整洁之道》笔记-Chapter9-单元测试
第9章 单元测试 过去十年以来,编程专业领域进步很大。1997年时,没人听说过测试驱动开发。对于我们之中的大多数人来说,单元测试是那种用来确保程序“可运行”的用过即扔的短代码。我们辛勤地编写类和方法,再弄出一些特殊代码来测…...
数据结构-顺序表
目录 基本概念 什么是数据结构? 数据 结构 线性结构 树形结构 网状结构 第一章绪论 了解概念 几个概念 数据存储方式: 算法的五个重要特性: 算法设计的要求: 总结 线性表 线性表的定义: 顺序表的设计思想 定长顺序表 不定…...
端到端语音识别服务重构方案
以下是重构ASR服务架构,集成Whisper V3Conformer混合模型的端到端实现方案,经过技术增强与流程优化: 端到端语音识别服务重构方案 基于Whisper V3Conformer混合架构 系统架构设计 采用四层微服务架构,支持水平扩展与模块化部署…...
耳根圆通与禅定的交融与分野
引言 在浩瀚的修行体系中,耳根圆通与禅定的关系犹如月映千江——本质同一而显相各异。本文以《楞严经》为经教依据,结合禅宗心法与现代实证视角,系统解析二者在修行原理、实践路径与终极旨归中的深刻关联与微妙差异,揭示这一古老智…...
python基础语法:缩进规则
Python 的缩进规则是其语法的重要组成部分,它通过缩进来表示代码块的层次结构,而不是像其他语言(如 C 或 Java)那样使用大括号 {}。以下是 Python 缩进规则的详细说明: 1. 缩进的基本规则 代码块的标识:Pyt…...
从0到1的Python接口自动化学习路线
Python 是一门非常适合初学者且功能强大的编程语言,它在接口自动化测试领域具有广泛应用。 以下是一份针对 Python 与接口自动化测试的详细学习路线,帮助你从零开始学习并逐步掌握相关知识。 第一阶段:Python基础 目标:掌握 Python 基本语法和编程能力。 一、学习内容 1.…...
大数据(7.3)Kafka量子安全加密实践指南:构建抗量子计算攻击的消息系统
目录 一、量子计算带来的加密革命1.1 量子计算机的威胁时间表1.2 Kafka现有加密机制脆弱性分析 二、后量子加密算法选型2.1 NIST标准化算法矩阵2.2 混合加密最佳实践 三、Kafka量子安全改造方案3.1 Bouncy Castle量子安全Provider3.2 Kafka服务端配置 四、实战案例:…...
【11408学习记录】英语语法精讲:主从复合句之状语从句全解析——以时间状语从句为例
时间 英语语法总结—— 主从复合句状语从句从句位置从句的分类 每日一句词汇第一步:找谓语第二步:断开第三步:简化第一句第二句第三句第四句 英语 语法总结—— 主从复合句 状语从句 状语从句指的是一个句子作状语,表达“描述性…...
深度分页及优化建议
深度分页的定义 深度分页是指在分页查询中,当用户请求非常靠后的页面时,数据库需要处理大量数据,导致查询性能显著下降的情况。例如,一个查询结果有 100 万条记录,而用户要查询第 999 页(每页 10 条记录&a…...
阿里云kafka集成boot在docker启动找不到kafka.client.truststore.jks文件问题
此问题困扰了我好久,看阿里云官方文档,建议配置绝对路径,但项目部署在docker没有绝对路径,开始以为配置在docker的/root下即可,但报找不到文件,后来改相对路径 ./kafka.client.truststore.jks,…/…/还是找…...
kafka 集群搭建,开启sasl认证
Kafka提供了多种认证方式来保护集群的安全性,包括以下几种常见的认证方式: SSL/TLS认证:Kafka支持使用SSL/TLS协议对网络通信进行加密和认证。通过使用SSL/TLS证书对客户端和服务器进行身份验证,可以确保通信的机密性和完整性。SASL/PLAIN认证:SASL/PLAIN是一种基于用户名…...
在 iOS 项目中,Info.plist文件用于配置应用的基本信息和权限
在 iOS 项目中,Info.plist 文件用于配置应用的基本信息和权限。以下是常见的需要添加的权限及其说明: 常见权限及说明 NSCameraUsageDescription 说明: 说明应用为何需要访问相机。示例: “我们需要访问您的相机以便您可以拍摄照片。”NSPhotoLibraryUsageDescription 说明:…...
【完整可用】使用openhtmltopdf生成PDF(带SVG)
文章目录 前言OpenHTMLToPDF 简介maven配置依赖字体文件demo代码其他资源放置截图防止maven编译字体文件 前言 AI和网上都是跑不起来或者版本过低的,还有各种BUG的。本文都是查阅官方文档得出的。如果你能跑起来请给个大大的赞! OpenHTMLToPDF 简介 Ope…...
仿照管理系统布局配置
1.vue仿照snowy 配置,如下图: 2.代码实现 <template><div class"theme-settings"><!-- 导航栏 --><div class"nav-bar"><el-breadcrumb separator"/"><el-breadcrumb-item>导航设置…...