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

第6讲、全面拆解Encoder、Decoder内部模块

全面拆解 Transformer 架构:Encoder、Decoder 内部模块解析(附流程图小测验)

关键词:Transformer、Encoder、Decoder、Self-Attention、Masked Attention、位置编码、残差连接、多头注意力机制

Transformer 自 2017 年诞生以来,已经成为深度学习中最具影响力的模型架构之一。无论是 GPT、BERT,还是今天的大模型 GPT-4、Claude、Gemini,它们的底层都离不开 Transformer 的基本框架。

今天我们就来全面拆解 Transformer 的 Encoder 与 Decoder 内部模块结构,并附上一个动手小测验:画出 Transformer 的完整流程图,帮助大家真正掌握这个强大的架构。


一、Transformer 总览

Transformer 的核心是:自注意力机制(Self-Attention)+ 前馈神经网络(Feed Forward Network),通过堆叠多层 Encoder 和 Decoder 实现序列建模。

整个模型可以分为两个部分:

  • Encoder:理解输入序列
  • Decoder:逐步生成输出序列

每个部分都由多个重复的模块(Layer)组成,每个 Layer 内部结构非常规范。


二、Encoder 模块拆解

一个 Encoder Layer 通常包括以下结构:

输入 Embedding → 位置编码 → 多头自注意力(Multi-Head Self-Attention)→ 残差连接 + LayerNorm → 前馈全连接层(FFN)→ 残差连接 + LayerNorm

1. 输入 Embedding + 位置编码

  • 词嵌入:将离散词 token 转化为连续向量
  • 位置编码(Positional Encoding):添加序列中 token 的位置信息,常用 sin/cos 形式

2. 多头自注意力(Multi-Head Self-Attention)

  • 每个位置都对所有位置的 token 做注意力计算
  • 多头机制可以并行学习不同语义空间的信息

3. 残差连接 + LayerNorm

  • 避免深层网络梯度消失
  • 加快收敛速度,提高训练稳定性

4. 前馈神经网络(FFN)

  • 两层全连接层,中间使用激活函数 ReLU 或 GELU
  • 提高模型非线性表达能力

三、Decoder 模块拆解

Decoder Layer 在结构上和 Encoder 类似,但多了一个关键模块:Encoder-Decoder Attention,同时引入了Mask 机制来保证自回归生成。

输入 Embedding → 位置编码 → Masked Multi-Head Self-Attention → 残差连接 + LayerNorm
→ Encoder-Decoder Attention → 残差连接 + LayerNorm
→ FFN → 残差连接 + LayerNorm

1. Masked Multi-Head Self-Attention

  • 为了防止"看见未来",只允许当前 token 看到它左边的 token(即因果 Mask)

2. Encoder-Decoder Attention

  • 允许 Decoder 访问 Encoder 的输出表示,用于对输入序列进行上下文感知
  • 本质也是注意力机制,只不过 Query 来自 Decoder,Key 和 Value 来自 Encoder 输出

四、整体结构图

建议自己画一遍 Transformer 的流程图,从输入 token 到输出结果,包括 Encoder 和 Decoder 各层之间的连接方式。

小提示可以参考以下流程(动手练习!):

[Input Embedding + Pos Encoding] → [N个Encoder Layer 堆叠] → Encoder输出
↓
[Shifted Output Embedding + Pos Encoding] → [N个Decoder Layer 堆叠(含 Mask + Encoder-Decoder Attention)]
↓
[线性层 + Softmax] → 最终预测输出

小测验:请尝试画出这个结构图,并标注出每个模块的主要作用。


五、总结:你需要掌握的关键点

模块作用说明
Self-Attention获取上下文依赖
Multi-Head Mechanism学习多种注意力表示
Positional Encoding注入位置信息
FFN增强模型表达能力
Residual + LayerNorm稳定训练、加快收敛
Masking(Decoder)保证生成的因果性
Encoder-Decoder Attention对输入序列做条件建模

六、后续推荐阅读

  • 《Attention is All You Need》原论文
  • BERT、GPT、T5 架构演化对比
  • Transformer 变体(如:Linformer、Performer、Longformer)

希望这篇文章能帮助你真正"看懂" Transformer 的结构与逻辑。建议动手画一画,理解每一个模块的输入输出关系,构建自己的知识图谱。

你是否已经掌握 Transformer 的全部细节了?不妨挑战一下自己,不看图,能不能完整说出 Encoder 和 Decoder 每一层的结构?


需要我生成一张配套的 Transformer 流程图吗?


七、核心公式与直观解释

1. 自注意力机制(Self-Attention)

  • 公式

  • 直观理解:每个 token 通过 Query 与所有 token 的 Key 计算相关性分数,Softmax 后加权 Value,动态聚合全局信息。

2. 前馈神经网络(FFN)

  • 结构:两层全连接,常用激活函数 ReLU/GELU
  • 作用:提升模型的非线性表达能力

3. Mask 机制

  • Decoder Masked Attention:用上三角 Mask 保证自回归生成,防止信息泄露

4. Encoder-Decoder Attention

  • 作用:让 Decoder 能"读"到 Encoder 的输出,做条件生成
  • 本质:Query 来自 Decoder,Key/Value 来自 Encoder

八、配套流程图与交互式可视化代码(Streamlit Demo)

1. 结构流程图建议

建议动手画一遍 Transformer 的流程图,帮助理解各模块的输入输出关系。参考流程如下:

[Input Embedding + Pos Encoding] → [N个Encoder Layer 堆叠] → Encoder输出
↓
[Shifted Output Embedding + Pos Encoding] → [N个Decoder Layer 堆叠(含 Mask + Encoder-Decoder Attention)]
↓
[线性层 + Softmax] → 最终预测输出

你可以用 draw.io、ProcessOn、Visio 等工具绘制,也可以参考下方 Streamlit Demo 的可视化。

2. Streamlit 交互式可视化 Demo 代码

将以下代码保存为 streamlit_transformer_demo.py,在命令行运行 streamlit run streamlit_transformer_demo.py 即可体验:

import streamlit as st
import numpy as np
import matplotlib.pyplot as pltst.set_page_config(page_title="Transformer Encoder/Decoder 可视化拆解", layout="wide")st.title("Transformer Encoder/Decoder 结构交互式拆解")
st.markdown("""
> 结合自注意力、前馈网络、Mask 机制等核心模块,交互式理解 Transformer 架构。
""")tab1, tab2, tab3 = st.tabs(["结构流程图", "模块细节", "自注意力演示"])with tab1:st.header("Transformer 总体结构流程图")st.markdown("""- **左侧:Encoder 堆叠层**,每层包含多头自注意力、前馈网络、残差连接和 LayerNorm。- **右侧:Decoder 堆叠层**,每层包含 Masked Multi-Head Self-Attention、Encoder-Decoder Attention、前馈网络等。- **输入/输出**:输入序列 Embedding + 位置编码,输出经过线性层和 Softmax 得到预测。""")fig, ax = plt.subplots(figsize=(7, 7))ax.axis('off')# Encoder部分ax.text(0.5, 0.95, "Input Embedding\n+ Pos Encoding", ha='center', va='center', bbox=dict(boxstyle="round", fc="lightblue"))ax.arrow(0.5, 0.92, 0, -0.08, head_width=0.02, head_length=0.02, fc='k', ec='k')ax.text(0.5, 0.82, "N x Encoder Layer", ha='center', va='center', bbox=dict(boxstyle="round", fc="lightgreen"))ax.arrow(0.5, 0.79, 0, -0.08, head_width=0.02, head_length=0.02, fc='k', ec='k')ax.text(0.5, 0.69, "Encoder Output", ha='center', va='center', bbox=dict(boxstyle="round", fc="wheat"))# Decoder部分ax.text(0.8, 0.82, "Shifted Output Embedding\n+ Pos Encoding", ha='center', va='center', bbox=dict(boxstyle="round", fc="lightblue"))ax.arrow(0.8, 0.79, 0, -0.08, head_width=0.02, head_length=0.02, fc='k', ec='k')ax.text(0.8, 0.69, "N x Decoder Layer\n(Masked + Enc-Dec Attn)", ha='center', va='center', bbox=dict(boxstyle="round", fc="lightcoral"))ax.arrow(0.8, 0.66, 0, -0.08, head_width=0.02, head_length=0.02, fc='k', ec='k')ax.text(0.8, 0.56, "Linear + Softmax", ha='center', va='center', bbox=dict(boxstyle="round", fc="plum"))ax.arrow(0.8, 0.53, 0, -0.08, head_width=0.02, head_length=0.02, fc='k', ec='k')ax.text(0.8, 0.43, "Output", ha='center', va='center', bbox=dict(boxstyle="round", fc="lightyellow"))# Encoder Output 到 Decoder Layer 的横向箭头ax.arrow(0.55, 0.69, 0.18, 0, head_width=0.02, head_length=0.02, fc='k', ec='k', length_includes_head=True)ax.text(0.67, 0.71, "Context", ha='center', va='bottom', fontsize=10, color='gray')st.pyplot(fig)with tab2:st.header("模块细节与原理")st.markdown("""### Encoder Layer- **多头自注意力(Multi-Head Self-Attention)**:每个 token 能关注全局,捕捉长距离依赖。- **残差连接 + LayerNorm**:防止梯度消失,加快收敛。- **前馈神经网络(FFN)**:提升非线性表达能力。### Decoder Layer- **Masked Multi-Head Self-Attention**:保证生成时不"偷看"未来 token。- **Encoder-Decoder Attention**:让 Decoder 能访问 Encoder 输出,实现条件生成。- **残差连接 + LayerNorm、FFN**:同 Encoder。### 位置编码(Positional Encoding)- 注入序列顺序信息,常用 sin/cos 公式。### Mask 机制- Decoder 中用上三角 Mask,防止信息泄露。---**自注意力公式**:
![](https://i-blog.csdnimg.cn/img_convert/ec53b1b37ab5d4293d8f8d25230dcff7.png)with tab3:st.header("自注意力分数计算演示")st.markdown("""下面你可以输入一组简单的 token 向量,体验自注意力分数的计算过程。""")st.markdown("**假设有3个token,每个维度为2**")tokens = st.text_area("输入token向量(每行一个token,用逗号分隔)", "1,0\n0,1\n1,1")try:X = np.array([list(map(float, line.split(','))) for line in tokens.strip().split('\n')])d_k = X.shape[1]Q = XK = XV = Xattn_scores = Q @ K.T / np.sqrt(d_k)attn_weights = np.exp(attn_scores) / np.exp(attn_scores).sum(axis=1, keepdims=True)output = attn_weights @ Vst.write("**Attention 分数矩阵**")st.dataframe(attn_scores)st.write("**Softmax 后的权重**")st.dataframe(attn_weights)st.write("**输出向量(加权和)**")st.dataframe(output)except Exception as e:st.error(f"输入格式有误: {e}")st.sidebar.title("学习建议")
st.sidebar.markdown("""
- 建议动手画一画结构图,加深理解
- 推荐阅读原论文和 BERT/GPT 相关资料
- 多做自注意力、Mask 机制的推导练习
""")---![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/76416e86d5804140b3c9af088ac365ba.png)

相关文章:

第6讲、全面拆解Encoder、Decoder内部模块

全面拆解 Transformer 架构:Encoder、Decoder 内部模块解析(附流程图小测验) 关键词:Transformer、Encoder、Decoder、Self-Attention、Masked Attention、位置编码、残差连接、多头注意力机制 Transformer 自 2017 年诞生以来&am…...

Linux电脑本机使用小皮面板集成环境开发调试WEB项目

开发调试WEB项目,有时开发环境配置繁琐,可以使用小皮面板集成环境。 小皮面板官网: https://www.xp.cn/1.可以使用小皮面板安装脚本一键安装。登陆小皮面板管理后台 2.在“软件商店”使用LNMP一键部署集成环境。 3.添加网站,本…...

数据仓库Hive

1.数据仓库 1.1数据仓库的概念 数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 面向主题。操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据按照一定的…...

嵌入式学习笔记 - STM32 ADC,多重转换,内部参考电压,

一 多个ADC器件,多重转换速率 每个型号MCU通常由多个ADC器件,比如STM32F4有三个ADC器件,每个ADC器件有一个最大转换速率,一般为25Mhz,即一个ADC器件每秒最多转换25M次,两次转换之间需要有时间间隔&#xf…...

精读计算机体系结构基础 第三章 特权指令系统

3. 1 特权指令系统简介 想象一下,计算机就像一个大楼,而这个大楼有很多不同的楼层。每个楼层都有不同的功能和使用者。最上面的楼层是应用层,那里住着各种各样的应用程序,比如你用来写作的文字处理软件、用来浏览网页的浏览器等等…...

库室多功能控制器

应急供电保障​ 内置智能备电系统,市电中断时即刻无缝切换,为设备持续稳定供电,确保关键场景用电无忧。​ 超高性价比​ 集门禁、报警、环控等专业功能于一体,相比同类产品,以更优的价格提供更全面、更强大的解决方…...

使用FastAPI和React以及MongoDB构建全栈Web应用07 FastAPI实现经典三层架构

一、单文件简单实现 1.1 开发用户增删改查接口 main.py from fastapi import FastAPI, Request, Query, HTTPException from fastapi.responses import JSONResponse from motor.motor_asyncio import AsyncIOMotorClient from pydantic import BaseModel from bson import …...

《设计模式之禅》笔记

:::info 💡 根据 遗忘曲线:如果没有记录和回顾,6天后便会忘记75%的内容 读书笔记正是帮助你记录和回顾的工具,不必拘泥于形式,其核心是:记录、翻看、思考::: 书名设计模式之禅作者秦小波状态已读完简介深刻…...

JavaScript 循环语句全解析:选择最适合的遍历方式

循环是编程中处理重复任务的核心工具。JavaScript 提供了多种循环语句,每种都有其适用场景和独特优势。本文将深入解析 JavaScript 的 6 种核心循环语句,通过实际示例帮助你精准选择合适的循环方案。 一、基础循环三剑客 1. for 循环 经典索引控制 ja…...

远程服务器pycharm运行tensorboard显示训练轮次图

本文仅针对远程服务器的情况 首先在远程服务器端 首先打开xshell,然后激活自己的虚拟环境 baekee这是我的! conda activate baekee然后cd进去你运行的文件所在的目录 cd /tmp/pycharm_project_732这个项目也是我的! 然后一个很重要的事情…...

Nginx 使用 Keepalived 搭建 nginx 高可用

一、环境准备 两台装有 nginx 的 CentOS 虚拟机。 [rootnginx1 ~]# echo "192.168.40.81 say Hello" > /usr/local/nginx/html/index.html [rootnginx2 ~]# echo "192.168.40.82 say Hello" > /usr/local/nginx/html/index.html 二、原理 Keepaliv…...

A1062 PAT甲级JAVA题解 Talent and Virtue

About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about peoples talent and virtue. According to his theory, a man being outstanding in both talent and virtue must be a "sage(圣人)"…...

数据指标和数据标签

数据指标和数据标签是数据管理与分析中的两个重要概念,它们在用途、形式和应用场景上有显著区别。以下是两者的详细对比: 1. 核心定义 维度数据指标(Data Metrics)数据标签(Data Tags/Labels)定义量化衡量…...

常见的排序算法(Java版)简单易懂好上手!!

排序 “排序”顾名思义就是把乱序的变成有序的,就像我们玩斗地主这种牌类游戏时,我们拿到牌都会将牌给排序一下,更好的在对局中方便思考和观察,我们排序算法也亦是如此。 文章目录 排序一、冒泡排序二、选择排序三、插入排序四、…...

用统计零花钱的例子解释:Shuffle 是啥?

举个栗子 🌰:统计全班同学的零花钱总和 假设你是班长,全班有 4个小组,每个小组记录了自己的零花钱情况: 第1组:张三(5元)、李四(3元)、张三(2元) 第2组:王五(4元)、张三(1元)、李四(2元) …...

Kafka topic 中的 partition 数据倾斜问题

在 Kafka 中,如果一个 Topic 有多个 Partition,但这些 Partition 中的消息数量或流量分布不均衡,就会出现 数据倾斜(Data Skew) 的问题。 ✅ 什么是数据倾斜? 数据倾斜指的是: 某些 Partitio…...

Python基础总结(十)之函数

Python函数 函数是Python中也是非常重要的,函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。 一、函数的定义 函数的定义要使用def关键字,def后面紧跟函数名,缩进的为函数的代码…...

macOS 15 (Sequoia) 解除Gatekeeper限制

macOS 15 (Sequoia) 解除Gatekeeper限制指南 问题描述 在macOS 15中执行sudo spctl --global-disable命令后,系统提示: Globally disabling the assessment system needs to be confirmed in System Settings 但隐私与安全性界面未显示"任何来源&…...

【Flask开发踩坑实录】pip 安装报错:“No matching distribution found” 的根本原因及解决方案!

关键词:pip 报错、镜像源问题、flask-socketio、Python开发环境、安装失败 作者:未名编程 | 更新时间:2025.05.11 📌 引言:一场莫名其妙的 pip 安装失败 最近在开发一个基于 Flask 的图像检索网站时&#…...

50.辐射抗扰RS和传导抗扰CS测试环境和干扰特征分析

辐射抗扰RS和传到抗扰CS测试环境和干扰特征分析 1. 辐射抗扰RS2. 传导抗扰CS 1. 辐射抗扰RS 辐射抗扰RS考察对外界电磁场干扰得抗扰能力,测试频段为80MHz~2000MHz,用1KHz得正弦波进行调幅,在电波暗室内进行。测试标准:IEC 61000-…...

零基础玩转sqlmap - 从入门到摸清数据库

sqlmap 包下载链接:https://pan.quark.cn/s/a6ab2586f77e 基本操作 最简单的用法:sqlmap -u "网址" - 直接测试这个网址有没有SQL注入漏洞 带参数的测试:如果网址后面有参数,比如 id1,sqlmap会自动检测 指…...

AI面经总结-试读

写在前面 该面经于2022年秋招上岸后耗时一个半月整理完毕,目前涵盖Python、基础理论、分类与聚类、降维、支持向量机SVM、贝叶斯|决策树、KNN、Boosting&Bagging、回归、代价函数与损失函数、激活函数、优化函数、正则优化、初始化与归一化、卷积、池化、传统图…...

python打卡day22@浙大疏锦行

复习日 仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 一、数据预处理 import pandas as pd import numpy as np import matplo…...

网络安全设备配置与管理-实验5-p150虚拟防火墙配置

实验5-p150虚拟防火墙配置 做不出来可以把项目删掉再新建。 实验六多加几步配置静态路由表就行。 文章目录 实验5-p150虚拟防火墙配置1. 实验目的2. 实验任务3. 实验设备4. 实验拓扑图和设备接口5. 实验命令与步骤1. 连线与配置2. 实验验证 思考题 1. 实验目的 通过该实验掌握…...

数值运算的误差估计

数值运算的误差估计 设两个近似数 x 1 ∗ x_1^* x1∗​与 x 2 ∗ x_2^* x2∗​的误差限分别为 ε ( x 1 ∗ ) \varepsilon(x_{1}^{*}) ε(x1∗​)和 ε ( x 2 ∗ ) \varepsilon(x_{2}^{*}) ε(x2∗​) 误差限满足一下运算法则: 和差运算的误差限: 设 y …...

HCIP-BGP实验一

一:拓扑图 二:需求分析: 保证R1-R5的环回地址相互能够通讯。 分析; 1.IP的配置 2.R2-R4完成IGP配置,配置OSPF 3.完成BGP配置。 4.优化配置,包括下一跳的选择,IBGP对等体建邻的IP地址。 三…...

linux内核pinctrl/gpio子系统驱动笔记

目录 一、简单介绍二、主要源码文件和目录gpio子系统pinctrl子系统两个子系统之间的关系设备树例子 三、主要的数据结构gpio子系统pinctrl子系统 四、驱动初始化流程五、难点说明 一、简单介绍 GPIO子系统: Linux GPIO子系统是Linux内核中负责处理GPIO(通用输入输出…...

Qt—多线程基础

一、QThread 1.为什么使用多线程 在默认情况下,Qt使用的是单线程,当你启动一个 Qt 应用程序时,它会运行在一个单一的主线程(也被称为 GUI 线程)中。这个主线程负责处理所有的 GUI 事件和界面渲染。 但在一些其他情况下…...

HTML5表格语法格式详解

HTML5 表格的基本结构 HTML5 表格由 <table> 标签定义&#xff0c;表格中的每一行由 <tr> 标签定义&#xff0c;表头单元格由 <th> 标签定义&#xff0c;数据单元格由 <td> 标签定义。表格的基本结构如下&#xff1a; <table><tr><th…...

《Go小技巧易错点100例》第三十三篇

​ Validator自定义校验规则 Go语言中广泛使用的validator库支持通过结构体标签定义校验规则。当内置规则无法满足需求时&#xff0c;我们可以轻松扩展自定义校验逻辑。 示例场景&#xff1a;验证用户年龄是否成年&#xff08;≥18岁&#xff09; type User struct {Age in…...

Spring AI(3)——Chat Memory

Chat Memory介绍 大型语言模型&#xff08;LLM&#xff09;是无状态的&#xff0c;这意味着它们不保留关于以前互动的信息。为了解决这个问题&#xff0c;Spring AI提供了Chat Memory&#xff08;聊天记忆&#xff09;功能。通过Chat Memory&#xff0c;用户可以实现在与LLM的…...

双向循环神经网络(Bi-RNN)详解

双向循环神经网络(Bidirectional Recurrent Neural Network, Bi-RNN)是一种能够同时利用序列数据过去和未来信息的循环神经网络架构&#xff0c;在许多序列建模任务中表现出色。 1. Bi-RNN基本概念 1.1 核心思想 Bi-RNN通过组合两个独立的RNN层来工作&#xff1a; 前向RNN&…...

【Bluedroid】HID DEVICE 连接的源码分析

本文分析Android Bluetooth协议栈中HID device设备连接流程的完整实现,从应用层接口到协议栈底层的交互细节。通过关键函数(如connect()、BTA_HdConnect()、HID_DevConnect()等)的代码解析,重点关注btif、bta、HID协议栈三层的协同机制,揭示BTA_HD_CONN_STATE_EVT事件传递…...

第二十一周:项目开发中遇到的相关问题(二)

本周接着介绍本次新闻项目中遇到的一些问题。首先谈谈Controller层中的请求路径问题&#xff08;RequestMapping&#xff09;,RequestMapping注解是Spring框架中用于处理HTTP请求映射的核心注解&#xff0c;它可以将HTTP请求映射到具体的控制器方法上。 1.关于它的基本作用&…...

深度解析大模型学习率:优化策略与挑战

大模型超参数Learning Rate的深度学习 学习率(Learning Rate)是机器学习和深度学习中最核心的超参数之一,尤其在训练大规模语言模型(LLMs)时,其设置直接影响模型的收敛速度、训练稳定性及最终性能。以下从多维度详细解析学习率的定义、作用、挑战及优化策略。 一、学习率…...

云计算-容器云-KubeVirt 运维

KubeVirt 运维&#xff1a;创建 VM 使用提供的镜像在 kubevirt 命名空间下创建一台 VM&#xff0c;名称为 exam&#xff0c;指定 VM 的内存、CPU、网卡和磁盘等配置。 [rootk8s-master-node1 ~]# kubectl explain kubevirt.spec. --recursive |grep useuseEmulation <boo…...

C++内存管理详解

目录 1.C/C中的内存 2.C内存管理 2.1C语言内存管理 2.2new和delete 2.2.1概念及定义 2.2.2自定义类型内存管理 2.2.3 delete与delete[ ] 1.C/C中的内存 在C/C中编译器会对不同的代码进行内存分配&#xff0c;给代码的内存区主要分为栈区、堆区、数据段(静态区)、代码段(…...

二叉搜索树讲解

1. 二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一颗空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 1. 若它的左子树不为空&#xff0c;则左子树上的所有结点的值都小于等于根节点的值。 2. 若它的右子树不为空&#xff0c;则右子树上的所有结…...

MySQL 索引设计宝典:原理、原则与实战案例深度解析

目录 前言第一章&#xff1a;索引设计的基础原则 (知其然&#xff0c;更要知其所以然)第二章&#xff1a;实战案例&#xff1a;电商订单系统的索引设计第三章&#xff1a;索引设计的实践流程总结结语 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜…...

如何租用服务器并通过ssh连接远程服务器终端

这里我使用的是智算云扉 没有打广告 但确实很便宜 还有二十小时免费额度 链接如下 注册之后 租用新实例 选择操作系统 选择显卡型号 点击租用 选择计费方式 选择镜像 如果跑深度学习的话 就选项目对应的torch版本 没有的话 就创建纯净的cuda 自己安装 点击创建实例 创建之后 …...

TikTok 账号运营干货:AI 驱动优化

TikTok 账号运营是一项需要全方位精心雕琢的工作。首先&#xff0c;账号资料的打造至关重要&#xff0c;务必保证完整且富有吸引力。头像要清晰醒目&#xff0c;能够直观传达账号的核心特色&#xff1b;昵称需简洁易记&#xff0c;方便用户快速识别与记忆&#xff1b;简介则要精…...

Redis 分布式锁

什么是分布式锁 在一个分布式的系统中, 也会涉及到多个节点访问同一个公共资源的情况. 此时就需要通过 锁 来做互斥控制, 避免出现类似于 "线程安全" 的问题 而 java 的 synchronized 或者 C 的 std::mutex, 这样的锁都是只能在当前进程中生效, 在分布式的这种多个进…...

Redis爆肝总结

一、基础 1.介绍 本质上是一个Key-Value类型的内存数据库&#xff0c;数据的加载在内存当中进行操作&#xff0c;定期通过异步操作把数据库数据flush到硬盘上进行保存。 速度快的根本原因 纯内存操作&#xff0c;性能非常出色&#xff0c;每秒可以处理超过10万次读写操作&a…...

Qt模块化架构设计教程 -- 轻松上手插件开发

概述 在软件开发领域,随着项目的增长和需求的变化,保持代码的可维护性和扩展性变得尤为重要。一个有效的解决方案是采用模块化架构,尤其是利用插件系统来增强应用的功能性和灵活性。Qt框架提供了一套强大的插件机制,可以帮助开发者轻松实现这种架构。 模块化与插件系统 模…...

[项目总结] 抽奖系统项目技术应用总结

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

【运维】基于Python打造分布式系统日志聚合与分析利器

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在分布式系统中,日志数据分散在多个节点,管理和分析变得复杂。本文详细介绍如何基于Python开发一个日志聚合与分析工具,结合Logstash和F…...

MySql(基础)

表名建议用 反引号 包裹&#xff08;尤其是表名包含特殊字符或保留字时&#xff09;&#xff0c;但如果表名是普通字符串&#xff08;如 user&#xff09;&#xff0c;可以省略。 注释&#xff08;COMMENT 姓名&#xff09; 数据库 1.查看数据库&#xff1a;show databases…...

怎样选择成长股 读书笔记(一)

文章目录 第一章 成长型投资的困惑一、市场不可预测性的本质困惑二、成长股的筛选悖论三、管理层评估的认知盲区四、长期持有与估值波动的博弈五、实践中的认知升级路径总结&#xff1a;破解困惑的行动框架 第二章 如何阅读应计制利润表一、应计制利润表的本质与核心原则1. 权责…...

系统思考:个人与团队成长

四年前&#xff0c;我交付的系统思考项目&#xff0c;今天学员的反馈依然深深触动了我。 我常常感叹&#xff0c;系统思考不仅仅是一场培训&#xff0c;更像是一场持续的“修炼”。在这条修炼之路上&#xff0c;最珍贵的&#xff0c;便是有志同道合的伙伴们一路同行&#xff0…...

并行发起http请求

1. 使用 axios Promise.all <template><input type"file" multiple change"handleFileUpload" /> </template><script> import axios from axios;export default {methods: {async handleFileUpload(event) {const files event…...