Qwen3 Embedding 结构-加载-训练 看透模型设计哲学
看透一个顶级AI句向量模型的设计秘密,从文件结构到加载原理,再到其背后的训练哲学。
1 Qwen3-Embedding模型结构拆解
说明:目录包含了运行一个基于 Transformer 的句向量模型所需的所有组件
文件类别 | 核心文件 | 作用 |
---|---|---|
核心模型 | model.safetensors , config.json | model.safetensors存储了模型所有训练好的权重 |
分词器 | tokenizer.json , vocab.json | 将文本语言翻译成模型语言 |
S-T封装 | modules.json , 1_Pooling/ config_sentence_transformers.json | 将语言模型改装成句向量模型 |
说明:Qwen3-Embedding 的每个文件都有其明确分工。我把它们归为三大类:核心模型、分词器和 Sentence-Transformers (S-T) 封装。这些文件共同组成了一个分层、解耦的系统。
"Qwen_Qwen3-Embedding-0.6B/config.json"{"architectures": ["Qwen3ForCausalLM"],"attention_bias": false,"attention_dropout": 0.0,"bos_token_id": 151643,"eos_token_id": 151643,"head_dim": 128,"hidden_act": "silu","hidden_size": 1024,"initializer_range": 0.02,"intermediate_size": 3072,"max_position_embeddings": 32768,"max_window_layers": 28,"model_type": "qwen3","num_attention_heads": 16,"num_hidden_layers": 28,"num_key_value_heads": 8,"rms_norm_eps": 1e-06,"rope_scaling": null,"rope_theta": 1000000,"sliding_window": null,"tie_word_embeddings": true,"torch_dtype": "bfloat16","transformers_version": "4.51.3","use_cache": true,"use_sliding_window": false,"vocab_size": 151669
}
说明:config.json定义 Qwen3 模型的具体架构。定义了 Transformer 模型的架构。它包含了诸如隐藏层维度、注意力头数量、层数、激活函数等超参数。Hugging Face 的 transformers
库在加载模型时,会首先读取这个文件来构建一个“空”的模型结构,然后再用model.safetensors中的权重来填充这个结构。
参数 | 值 | 核心作用 |
---|---|---|
architectures | Qwen3ForCausalLM | 定义为单向因果语言模型 |
hidden_size | 1024 | 每个token向量的维度 |
num_hidden_layers | 28 | 模型深度,共28层 |
eos_token_id | 151643 | 句末符ID,标识序列结束 |
model_type | qwen3 | 指定模型为Qwen3系列 |
说明: 这份配置是整个模型的基石。Qwen3ForCausalLM
这个架构是关键,因为它决定了模型是“从左到右”处理文本的,这使得最后一个token的输出天然地包含了对前面所有内容的总结,为后续的 Last Token Pooling 策略奠定了理论基础。28层的深度和1024的隐藏维度,表明它在保持相对轻量(0.6B参数)的同时,依然具备了强大的语义理解和编码能力。
"Qwen_Qwen3-Embedding-0.6B/tokenizer_config.json"{"add_bos_token": false,"add_prefix_space": false,"added_tokens_decoder": {"151643": {"content": "<|endoftext|>","lstrip": false,"normalized": false,"rstrip": false,"single_word": false,"special": true},"151644": {"content": "<|im_start|>","lstrip": false,"normalized": false,"rstrip": false,"single_word": false,"special": true},
说明:tokenizer_config.json 是一个高层次的配置文件,它告诉 transformers 库在加载和使用 Tokenizer 时应该遵循哪些 行为和设置。当 AutoTokenizer 加载模型时(尤其是在没有 tokenizer.json 的旧模式下),它会读取这个 json 文件,并将其中的键值对作为 参数 传递给相应的 Tokenizer Python 类的构造函数 (init)。
配置项 | 作用 | 示例 |
---|---|---|
add_bos_token | 控制是否自动加起始符 | false ,不自动添加 |
added_tokens_decoder | 解码特殊token | ID 151643 对应 `< |
tokenizer_class (隐含) | 指定分词器Python类 | 通常是 “Qwen2Tokenizer” |
说明: 表格展示了分词器的“行为设定”,告诉代码库如何去“使用”这个分词器。
可以把这个文件看作是分词器的“使用说明书”或“用户偏好设置”。它本身不定义分词规则,而是告诉 transformers
库在调用分词器时的一些默认行为。例如,"add_bos_token": false
就是一个明确的指令,防止在处理文本时画蛇添足地加上起始符,保证了输入到模型的序列是我们想要的样子。
"Qwen_Qwen3-Embedding-0.6B/tokenizer.json"{"version": "1.0","truncation": null,"padding": null,"added_tokens": [{"id": 151643,"content": "<|endoftext|>","single_word": false,"lstrip": false,"rstrip": false,"normalized": false,"special": true},{"id": 151644,"content": "<|im_start|>","single_word": false,"lstrip": false,"rstrip": false,"normalized": false,"special": true},
说明:tokenizer.json 是一个 完全自包含的、序列化 的分词器状态文件。它不仅仅是配置,它包含了分词所需的一切核心资产。
组成部分 | 核心功能 |
---|---|
词汇表 (vocab) | 存储 token 到 ID 的完整映射 |
分词规则 (merges) | 定义BPE等算法的合并规则 |
归一化/预分词 | 规定文本清理和初步切分方式 |
后处理器 | 添加特殊token(如CLS)的模板 |
说明: 这张表揭示了分词器内部的“知识库”和“工作流程”。这个文件是分词器的“大脑和词典”合体!🧠。它与 tokenizer_config.json
的关系是:tokenizer.json
定义了分词器是什么以及如何工作(内在机制),而 tokenizer_config.json
定义了如何调用它(外在行为)。tokenizer.json
的存在使得分词过程高度可移植且速度快,因为它包含了所有必要的规则,无需依赖原始的Python训练代码。
"Qwen_Qwen3-Embedding-0.6B/config_sentence_transformers.json""{"prompts": {"query": "Instruct: 给一个代码的具体描述,找出最相关的用例\nQuery:","document": ""},"default_prompt_name": null,"similarity_fn_name": "cosine"
}
说明:config_sentence_transformers.json为模型赋予了特定任务(如搜索)的上下文,并定义了如何比较向量。配置任务特定的prompt和相似度计算方式,实现非对称搜索。
配置项 | 值 | 目的 |
---|---|---|
prompts.query | “Instruct: … Query:” | 为查询添加特定指令前缀 |
prompts.document | “” (空字符串) | 文档保持原样,不加前缀 |
similarity_fn_name | “cosine” | 指定用余弦相似度比较向量 |
说明: 表格展示了如何为模型“定制任务”,让它从一个通用模型变身为专业的搜索引擎。这个文件是实现非对称搜索的魔法所在!它告诉模型:“当你看到一个前面带着‘Instruct:’的句子时,你要把它理解成一个‘问题’;当你看到一个普通句子时,你要把它当成‘答案’。” 这种在训练和推理时对 query 和 document 的差别处理,能显著提升搜索和匹配任务的精度,因为模型学会了在不同的“语境”下生成最合适的向量。
"Qwen_Qwen3-Embedding-0.6B/modules.json"[{"idx": 0,"name": "0","path": "","type": "sentence_transformers.models.Transformer"},{"idx": 1,"name": "1","path": "1_Pooling","type": "sentence_transformers.models.Pooling"},{"idx": 2,"name": "2","path": "2_Normalize","type": "sentence_transformers.models.Normalize"}
]
说明: modules.json规定了数据处理的顺序:Transformer -> Pooling -> Normalize。当 SentenceTransformer 加载时,它会按这个列表的顺序,实例化每个type指定的类,并使用path指定的目录下的配置文件来配置它们。这创建了一个 torch.nn.Sequential 风格的模型链。
步骤 (idx) | 模块类型 | 功能 |
---|---|---|
0 | Transformer | 生成token的隐藏状态向量 |
1 | Pooling | 从token向量池化成句子向量 |
2 | Normalize | 对最终向量进行L2归一化 |
说明: 这个表格清晰地展示了从文本到最终向量的“三步走”处理流水线。sentence-transformers
库会严格按照这个列表来构建模型。Transformer 负责深度理解,Pooling 负责信息汇总,Normalize 负责“美容”,确保所有输出的向量都在同一个尺度上,方便用余弦相似度进行公平比较。
"Qwen_Qwen3-Embedding-0.6B/1_Pooling/config.json"{"word_embedding_dimension": 1024,"pooling_mode_cls_token": false,"pooling_mode_mean_tokens": false,"pooling_mode_max_tokens": false,"pooling_mode_mean_sqrt_len_tokens": false,"pooling_mode_weightedmean_tokens": false,"pooling_mode_lasttoken": true,"include_prompt": true
}
说明:1_Pooling/config.json是从Transformer输出的一系列token向量中,提取出代表整个句子的单个向量。
参数 | 值 | 说明 |
---|---|---|
word_embedding_dimension | 1024 | 输入向量维度,与模型匹配 |
pooling_mode_lasttoken | true | 核心策略:使用最后一个token |
其他 pooling_mode | false | 禁用了平均、CLS等池化方法 |
include_prompt | true | 计算时包含指令前缀 |
说明: 表格的核心是告诉我们,模型选择了“Last Token Pooling”这种高效的池化策略。只取最后一个token的向量作为整个句子的代表。对于因果语言模型(Causal LM)来说,这非常合理,因为模型在预测最后一个token时,其隐藏状态已经编码了前面所有文本的精华信息。这就像读完一整篇文章后,脑子里形成的那个最终总结,信息量最大!🚀
说明: 流程图揭示了一个设计精良的嵌入系统的内在逻辑。通过 config_sentence_transformers.json
的指令(Prompt)注入,模型在处理Query时就被“告知”了它的任务是搜索,config.json
定义了因果语言模型架构,而 1_Pooling/config.json
则选择了最适合这种架构的 Last Token Pooling 策略。modules.json
将 Transformer -> Pooling -> Normalize 这三大模块串联起来,形成一个高效、自动化的处理链。最终,经过归一化的向量非常适合进行余弦相似度计算,完成了整个嵌入和检索的闭环。
2 Qwen3-Embedding模型加载过程
步骤 | 核心动作 | 关键“图纸”/文件 |
---|---|---|
1. 定位模型 | 执行SentenceTransformer()时 会检查本地缓存或从Hub下载 | Qwen/Qwen3-Embedding |
2. 读取总配方 | 确定模型由哪些模块组成 | config_sentence_transformers.json |
3. 读取模块清单 | 获取各模块具体类型和路径 | modules.json |
4. 构建核心 | 加载Transformer网络和权重 | config.json , model.safetensors |
5. 准备分词器 | 实例化Tokenizer | tokenizer.json |
6. 构建池化层 | 根据配置创建Pooling模块 | 1_Pooling/config.json |
7. 最终组装 | 按顺序串联所有模块 | 内存中的处理流水线 |
8. 礼成! 😂 | 返回可直接使用的model 对象 | SentenceTransformer 实例 |
说明:这张表格清晰地展示了 SentenceTransformer
从一个简单的模型ID,到构建出一个完整、可用的句向量模型实例的全过程。config_sentence_transformers.json
和 modules.json
就是搭建模型的 “说明书”,告诉程序先拿哪个积木(Transformer),再拿哪个积木(Pooling),最后怎么拼起来。这种设计使得 sentence-transformers
库极为灵活,可以轻松组合不同的组件,创造出各种用途的句向量模型。
graph TDsubgraph "用户侧"A("用户调用SentenceTransformer")endsubgraph "Sentence-Transformers 内部"B("**1. 定位与下载**<br>在Hugging Face Hub<br>或本地缓存中找到模型文件") --> C("**2. 读取“配方”**<br/>解析 <br>config_sentence_transformers.json<br>modules.json")C --> D{按“配方”逐一构建模块}D --> E("**模块0: Transformer**<br>通过 AutoModel加载网络与权重<br>通过AutoTokenizer加载分词器")D --> F("**模块1: Pooling**<br/>读取 1_Pooling/config.json<br>实例化Pooling层")E & F --> G("**3. 组装流水线**<br/>将所有模块按顺序串联起来")endsubgraph "最终成果"H("**返回 model 实例**<br/>一个完整的句向量模型 😂")endA --> BB --> G --> H
说明: 这个流程图揭示了 SentenceTransformer
优雅的 “总管” 角色,它如何将底层的 transformers
库和自定义模块无缝地粘合在一起。它先找到 “蓝图”(各种json
配置文件),然后命令 transformers
库这个 “施工队” 去搭建最核心的 Transformer 结构 (AutoModel
),同时让另一个小弟准备好 “原料” (AutoTokenizer
)。接着,它自己再根据蓝图把 Pooling 等收尾工作做好,最后把所有环节 串联 起来,交付一个功能完整的成品。
3 Qwen3-Embedding模型训练之路
训练阶段 | 核心策略 | 价值 |
---|---|---|
阶段一 | 弱监督预训练 (合成1.5亿数据) | 广撒网,建立广泛的语义理解力 |
阶段二 | 高质量监督微调 (筛选1200万) | 精雕琢,提升在核心任务上的精度 |
阶段三 | 模型合并 (slerp插值) | 融会贯通,增强泛化能力,避免偏科 |
说明:这“三步走”策略,就像是培养一位顶尖专家。第一阶段是通识教育,让他博览群书;第二阶段是专业深造,让他专攻一个领域;第三阶段,也是最绝的,是通过 slerp
模型合并技术,融合多个“偏科”专家的优点,最终得到一个既博学又专精的全能冠军。这比单一阶段的训练要稳健和强大得多。
说明:这张图揭示了Qwen3-Embedding最核心的创新:用大模型合成数据。传统方法依赖网络爬虫,数据质量和领域都不可控。而Qwen团队则像开了一家“数据工厂”,使用一个更强大的“教师模型”(Qwen3-32B),按需生产出海量、高质量、多样化的训练数据。这种从“数据采集”到“数据制造”的范式转变,从根本上解决了小模型训练的数据瓶颈,是其能够取得SOTA(State-of-the-Art)性能的关键所在。
相关文章:
Qwen3 Embedding 结构-加载-训练 看透模型设计哲学
看透一个顶级AI句向量模型的设计秘密,从文件结构到加载原理,再到其背后的训练哲学。 1 Qwen3-Embedding模型结构拆解 说明:目录包含了运行一个基于 Transformer 的句向量模型所需的所有组件 文件类别核心文件作用核心模型model.safetensors…...
AT8548双通道 H 桥电机驱动芯片
AT8548 是一种双通道低饱和电压的正、反向电机驱动芯片,为玩具、打印机和其它电机一体化应用提供一种双通道电机驱动方案。 特点: 双通道H桥电机驱动器; 驱动两个直流有刷电机或者一个步进电机; 低RDS(ON)电阻,1.06Ω(…...
kubeadm worker节点加入master失败
文章目录 1、操作2、问题现象3、问题原因4、问题解决4.1、重新生成token4.2、重新生成hash值 5、验证 1、操作 执行以下命令,让worker节点加入到master节点 kubeadm join 103.123.222.241:6443 --token vxe3v1.wzpnks8v1vbbtsu0 --discovery-token-ca-cert-hash s…...
Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理
目录 1. 🧩Maven插件 2. 🏗️构建Maven工程 3. 📄 pom文件配置 3.1. ⚙️ 中定义一些配置信息 3.2. 📦 中定义依赖的jar包坐标 3.3. 🔌 中定义第三方插件 4. ✍️编写代码 5. 🔗依赖范…...
分布式系统中的 Kafka:流量削峰与异步解耦(二)
Kafka 在分布式系统中的应用案例 电商订单系统 在电商领域,订单系统是核心业务模块之一,涉及多个复杂的业务环节和系统组件之间的交互。以常见的电商购物流程为例,当用户在电商平台上下单后,订单创建服务会首先接收到用户的订单…...
从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页
如果php.ini已经加入了如下的内容还是报错 : upload_max_filesize 1024M post_max_size 1024M 那就是因为阿帕奇导致:...
FramePack 安装指南(中文)
FramePack 安装指南(中文) -Windows FramePack 是最前沿的 AI 视频生成框架,以极小的硬件需求颠覆视频创作!它能在仅 6GB 笔记本 GPU 内存上,驱动 13B 模型以 30 FPS 生成超长 120 秒视频,几乎无内容限制&…...
【NLP入门系列三】NLP文本嵌入(以Embedding和EmbeddingBag为例)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 博主简介:努力学习的22级本科生一枚 🌟;探索AI算法,C,go语言的世界;在迷茫中寻找光芒…...
电子电气架构 --- 软件供应商如何进入OEM体系
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
检索增强生成(RAG)领域关键数据集综述:分类、挑战与展望
检索增强生成(RAG)领域关键数据集综述:分类、挑战与展望 摘要 检索增强生成(RAG)通过融合外部知识库与大型语言模型,已成为解决知识密集型自然语言处理(NLP)任务的关键范式。高质量…...
CFD仿真计算革命:基于GPU的格子玻尔兹曼方法(LBM)算子优化——利用Tensor Core加速碰撞核计算(性能提升3倍实测)
点击 “AladdinEdu,同学们用得起的【H卡】算力平台,注册即送H800算力”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 在计算流体动力学领域,格子玻尔兹曼方法正以介观模…...
【蓝牙】Qt4中向已配对的手机发送PDF文件
在Qt 4中实现通过蓝牙向已配对的设备发送文件(例如PDF文件),你可以使用Qt Bluetooth模块。Qt 4的蓝牙模块提供了基本的蓝牙功能,包括设备发现、配对管理和数据传输。下面是一些步骤和示例代码,帮助你通过蓝牙发送PDF文…...
Vue + AbortController 请求取消弹窗 hook 封装
背景 实际业务开发场景中,往往存在有些大数据请求的需求,一旦请求发起加载遮罩后用户就无法操作了,直接尬住,所以提供一个支持取消查询的功能还是很有必要的,为了在全业务接口都能使用封装一个hook。 ✋为什么要用 A…...
在小程序中实现上下左右拖动表格
在小程序的开发中,不可避免会出现上下左右拖动表格的类似需求,下面将把这个简单实现一下 其中主要使用到了overflow: scroll;来使得横向和纵向可以滚动,并且使用负边距 父容器截断的方法来同时隐藏横向和纵向滚动条,从而实现该效…...
Spark 以及 spark streaming 核心原理及实践
导语 spark 已经成为广告、报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到大家的青睐,我自己最近半年在接触spark以及spark streaming之后,对spark技术的使用有一些自己的经验积累以及心得体会&…...
数据融合平台是什么?如何搭建数据融合平台?
目录 一、数据融合是什么 1. 定义 2. 作用 二、数据融合平台的功能是什么 1. 数据抽取 2. 数据清洗 3. 数据转换 4. 数据关联 5. 数据存储 三、如何让搭建数据融合平台 1. 需求分析 2. 选择合适的技术和工具 3. 设计平台架构 4. 开发和部署平台 5. 数据迁移和融…...
Linux之线程同步与互斥
目录 一、线程互斥 1.1、进程线程间的互斥相关背景概念 1.2、互斥量mutex 1.2.1、互斥量的接⼝ 1.3、互斥量实现原理探究 1.4、互斥量的封装 二、线程同步 2.1、条件变量 2.2、同步概念与竞态条件 2.3、条件变量函数 2.4、⽣产者消费者模型 2.4.1、为何要使⽤⽣产者…...
uniapp开发小程序,导出文件打开并保存,实现过程downloadFile下载,openDocument打开
uniapp开发小程序,导出文件打开并保存 实现思路 1、调用请求获取到后端接口返回的下载文件的url路径 (注意必须是https的路径,域名需要配置在微信小程序后台的合法域名里面) 2、使用 uni.downloadFile 方法 (下载文件…...
腾讯云COS“私有桶”下,App如何安全获得音频调用流程
流程图 #mermaid-svg-Phy4VCltBRZ90UH8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-icon{fill:#552222;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-text{fill:#552222;stroke:#552222;}#me…...
简单的 Flask 后端应用
from flask import Flask, request, jsonify, session import os app Flask(__name__) app.secret_key os.urandom(24) users { 123: admin, admin: admin } # 登录接口 app.route(/login, methods[POST]) def login(): data request.get_json() username data.get(usern…...
Android 中 解析 XML 字符串的几种方式
在 Android 开发中,解析 XML 文件有多种方式,每种方式都有其特点和适用场景。常见的 XML 解析方式有 DOM 解析、SAX 解析 和 XmlPullParser 解析。 1、DOM 解析 DOM(Document Object Model)解析是一种基于树结构的解析方式&#…...
git commit
git commit 是版本控制的核心操作之一,用于将暂存区的修改记录为新的版本提交。以下是关键步骤和最佳实践: 基础操作 提交单个文件: bash Copy Code git commit -m “提交信息” 提交多个文件: bash Copy Code …...
【新手向】GitHub Desktop 的使用说明(含 GitHub Desktop 和 Git 的功能对比)
GitHub Desktop 是 GitHub 公司推出的一款桌面应用程序,旨在帮助开发人员更轻松地使用 GitHub,以下是其简单的使用说明: 安装与登录 下载 GitHub Desktop |GitHub 桌面 访问GitHub Desktop 官方网站,根据自己的操作系统下载对应的…...
Tomcat项目本地部署(Servlet为例)
在Windows上部署 在idea中打开项目 首先我们需要准备一个Servlet项目,我之前的Servlet项目是用eclipse写的,这种情况下如果用idea直接打开的话会出现左侧目录无法显示的情况,这个时候我们就需要用别的方法打开 打开项目管理 如下图&#…...
Linux——linux的基本命令
目录 一、linux的目录结构 二、绝对路径和相对路径 三、文件类型(linux下所有东西都可看作文件) 四、文件的权限 五、文件权限的修改(chmod) 六、linux常用的命令 七、文件查看命令 八、文件编辑命令 九、文件压缩与解压…...
wireshark过滤显示rtmp协议
wireshark中抓包显示的数据报文中,明明可以看到有 rtmp 协议的报文,但是过滤的时候却显示一条都没有 查看选项中的配置,已经没有 RTMP 这个协议了,已经被 RTMPT 替换了,过滤框中输入 rtmpt 过滤即可...
Fiddler抓包工具使用技巧:如何结合Charles和Wireshark提升开发调试效率
在开发过程中,网络调试工具是每个程序员的必备利器,特别是当涉及到Web应用和移动应用的调试时,抓包工具的作用尤为突出。无论是处理复杂的API调用、分析性能瓶颈,还是排查网络通信问题,抓包工具都能够帮助开发者精准地…...
LVS负载均衡群集
这里写目录标题 案例:部署Tomcat案例分析案例概述案例前置知识点Tomcat 简介应用场景 案例环境 案例实施实施准备关闭 firewalld 防火墙在安装Tomcat之前必须先安装JDK 查看JDK是否安装安装配置 TomcatTomcat 的安装和配置步骤如下:解压后生成 apache-tomcat-9.0.8文件夹&#…...
【unitrix】 3.5 类型级别的比较系统(cmp.rs)
一、源码 这段代码定义了一个类型级别的比较系统,主要用于在编译时比较类型并得出比较结果。它使用了 Rust 的类型系统和标记特征(trait)来实现这一功能。 use crate::sealed::Sealed; use crate::number::{Z0, P1, N1}; use core::cmp::Ordering;// 比较结果类型…...
防御式编程:防止 XSS 攻击
对用户输入进行编码和过滤是防止 XSS 攻击的关键。以下是改进后的代码示例: from flask import Flask, request, escape from markupsafe import Markup app Flask(__name__) app.route(/comment, methods[POST]) def comment(): user_comment escape(re…...
【Java项目设计】基于Springboot+Vue的OA办公自动化系统
介绍: 基于Springboot为后端,vue为前端的企业综合性OA办公自动化平台,涵盖九大核心模块,全方位解决企业日常办公需求,提升工作效率和管理水平。系统采用模块化设计,功能全面且易于扩展,从基础登…...
WebServer实现:muduo库的主丛Reactor架构
前言 作为服务器,核心自然是高效的处理来自client的多个连接啦,那问题在于,如何高效的处理client的连接呢?这里就介绍两种架构:单Reactor架构和主丛Reactor架构。 单Reactor架构 单Reactor架构的核心为,由一个主线程监…...
每天一个前端小知识 Day 7 - 现代前端工程化与构建工具体系
现代前端工程化与构建工具体系 1. 为什么要工程化?(面试高频问题) 问题痛点: 模块太多、无法组织;代码冗长、性能差;浏览器兼容性差;团队协作混乱,缺少规范与自动化。 工程化目标…...
nginx的下载与安装 mac
1. 下载 方法一:本地下载 链接:https://nginx.org/en/download.html(可直接搜官网) 下载到本地后,上传到linux的某个文件夹中 方法二:直接linux上下载(推荐) wget -c http://ngi…...
[持续集成]
学习目标 能够使用 Git 代码托管平台管理代码能够实现 jenkinspostman 的持续集成能够实现 jenkins代码 的持续集成 持续集成 概念 : 将自己工作成果持续不断地把代码聚集在一起,成员可以每天集成一次或多次相关工具 : git : 代码管理工具,自带本地仓库gitee : 远程代码管理…...
Spring Aop @AfterThrowing (异常通知): 使用场景
核心定义 AfterThrowing 是 Spring AOP 中专门用于处理异常场景的**通知(Advice)**类型。它的核心作用是: 仅在目标方法(连接点)的执行过程中抛出异常时,执行一段特定的逻辑。如果目标方法成功执行并正常…...
【赵渝强老师】Kubernetes的安全框架
Kubernetes集群的安全框架主要由以下认证、鉴权和准入控制三个阶段组成。这三个阶段的关系如下图所示。 视频讲解如下 【赵渝强老师】Kubernetes的安全框架 认证(Authentication) 当客户端与Kubernetes集群建立HTTP通信时,首先HTTP请求会进…...
【Python小练习】3D散点图
资产风险收益三维分析 背景 王老师是一名金融工程研究员,需要对多个资产的预期收益、风险(波动率)和与市场的相关性进行综合分析,以便为投资组合优化提供决策依据。 代码实现 import matplotlib.pyplot as plt from mpl_toolk…...
腾讯混元3D制作简单模型教程-2
以下是腾讯混元3D制作简单模型的详细教程,整合最新版本特性(截至2025年6月),操作门槛低且无需专业基础: 🖥 一、在线生成(最快30秒完成) 访问平台 打开 腾讯混元3D创作引擎官网…...
NVIDIA开源Fast-dLLM!解析分块KV缓存与置信度感知并行解码技术
Talk主页:http://qingkeai.online/ 文章原文:https://mp.weixin.qq.com/s/P0PIAMo1GVYH4mdWdIde_Q Fast-dLLM 是NVIDIA联合香港大学、MIT等机构推出的扩散大语言模型推理加速方案。 论文:Fast-dLLM: Training-free Acceleration of Diffusion…...
大白话说目标检测中的IOU(Intersection over Union)
很多同学在学习目标检测时都会遇到IoU这个概念,但总觉得理解不透彻。这其实很正常,因为IoU就像个"多面手",在目标检测的各个阶段都要"打工",而且每个阶段的"工作内容"还不太一样。 今天我就让IoU自…...
CentOS 8解决ssh连接github时sign_and_send_pubkey失败问题
我在一台centos8机器上安装git环境以连接到github,首先第一步需配置好ssh环境,因为我已经有一台Ubuntu机器已经配置好ssh环境,所以我ftp Ubuntu机器取得id_rsa id_rsa.pub known_hosts三个文件,然后执行命令: $ git …...
回答 如何通过inode client的SSLVPN登录之后,访问需要通过域名才能打开的服务
需要dns代理 1 配置需求或说明 1.1 适用的产品系列 本案例适用于软件平台为Comware V7系列防火墙:本案例适用于如F5080、F5060、F5030、F5000-M等F5000、F5000-X系列的防火墙。 注:本案例是在F100-C-G2的Version 7.1.064, Release 9510P08版本上进行…...
OpenCV实现二值图细化(骨架提取)
对二值图进行细化(骨架提取),也就是把每根线条细化到一个像素的宽度。有两个比较成熟的算法实现此功能,分别是Zhang-Suen算法和Guo-Hall算法。 我们下面使用OpenCVSharp,使用C#实现上述两个算法: private…...
Excel常用公式大全
资源宝整理分享:https://www.httple.net Excel常用公式大全可以帮助用户提高工作效率,掌握常用的Excel公式,让数据处理和计算工作更加便捷高效。了解公式学习方法、用途,不再死记硬背,拒绝漫无目的。 命令用途注释说…...
在 Windows 上使用 Docker Desktop 快速搭建本地 Kubernetes 环境(附详细部署教程)
言简意赅的讲解Docker Desktop for Windows搭建Kubernetes解决的痛点 目标读者: 对 Docker Desktop 有一定了解,能在 Windows 上成功安装和使用 Docker Desktop。想要在本地快速搭建一套 Kubernetes 环境进行测试或学习的开发者。 一、准备工作 安装 Doc…...
Python设计模式终极指南:18种模式详解+正反案例对比+框架源码剖析
下面我将全面解析18种Python设计模式,每种模式都包含实际应用场景、优缺点分析、框架引用案例、可运行代码示例以及正反案例对比,帮助您深入理解设计模式的价值。 一、创建型模式(5种) 1. 单例模式(Singleton&#x…...
第1章: 伯努利模型的极大似然估计与贝叶斯估计
伯努利模型的极大似然估计与贝叶斯估计 import numpy as np import matplotlib.pyplot as plt from scipy.stats import beta, bernoulli from scipy.optimize import minimize_scalar# 设置中文字体 plt.rcParams[font.sans-serif] [SimHei] # 使用黑体 plt.rcParams[axes.…...
IPv4编址及IPv4路由基础
一、实验目的 掌握接口 IPv4 地址的配置方法理解 LoopBack 接口的作用与含义理解直连路由的产生原则掌握静态路由的配置方法并理解其生效的条件掌握通过 PING 工具测试网络层连通性掌握并理解特殊静态路由的配置方法与应用场景 二、实验环境 安装有eNSP模拟器的PC一台&#…...
基于Python的机动车辆推荐及预测分析系统
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言࿰…...