Appearance
WebGPU Shading Language(WGSL)是 WebGPU 图形 API 的标准着色语言,专为 Web 平台设计。WGSL 语法类似 Rust,采用显式类型系统和严格的数据流分析,保证了着色器的安全性和可预测性。作为 WebGL 时代的 GLSL 继任者,WGSL 为 Web 应用提供接近原生的图形性能。
WGSL 的设计反映了 Web 平台的特殊需求。着色器以文本形式嵌入 JavaScript,浏览器在运行时编译为后端格式(NVIDIA/AMD 使用 SPIR-V,Intel 使用 DXIL),再转换为 GPU 机器码。这种"二次编译"模式确保了跨平台兼容性,但编译时间成为瓶颈。WGSL 通过显式阶段标注(@vertex、@fragment、@compute)简化了编译器分析,减少验证开销。安全性是另一个核心考虑,WGSL 的类型系统和内存模型防止了数据竞争和非法访问,避免了 GPU 崩溃导致的浏览器沙箱逃逸。
@vertex
@fragment
@compute
WGSL 的语法与 Rust 类似,但针对图形编程做了简化。变量声明使用 let(不可变)或 var(可变),类型必须显式标注。基本类型包括 f32(32 位浮点)、i32(32 位整数)、u32(32 位无符号整数)、bool(布尔)。向量类型使用 vec2<f32>、vec3<f32>、vec4<f32> 语法,矩阵使用 mat2x2<f32>、mat4x4<f32> 语法(注意行列顺序)。
let
var
f32
i32
u32
bool
vec2<f32>
vec3<f32>
vec4<f32>
mat2x2<f32>
mat4x4<f32>
// 顶点着色器 struct VertexInput { @location(0) position: vec3<f32>, @location(1) normal: vec3<f32>, @location(2) uv: vec2<f32>, } struct VertexOutput { @builtin(position) clip_position: vec4<f32>, @location(0) normal: vec3<f32>, @location(1) uv: vec2<f32>, } struct Uniforms { model_matrix: mat4x4<f32>, view_matrix: mat4x4<f32>, projection_matrix: mat4x4<f32>, } @group(0) @binding(0) var<uniform> uniforms: Uniforms; @vertex fn vs_main(input: VertexInput) -> VertexOutput { var output: VertexOutput; let world_pos = uniforms.model_matrix * vec4<f32>(input.position, 1.0); output.clip_position = uniforms.projection_matrix * uniforms.view_matrix * world_pos; output.normal = (uniforms.model_matrix * vec4<f32>(input.normal, 0.0)).xyz; output.uv = input.uv; return output; }
WGSL 使用属性(attributes)将变量连接到管线阶段。@location(N) 绑定顶点输入或片段输出,@builtin(position) 输出裁剪空间坐标,@group(N) @binding(M) 绑定资源(纹理、采样器、缓冲区)。@vertex、@fragment、@compute 标注着色器阶段,编译器据此验证输入输出类型。这种显式标注比 GLSL 的全局变量更清晰,也方便工具链分析。
@location(N)
@builtin(position)
@group(N) @binding(M)
WGSL 提供与 GLSL/HLSL 类似的内置函数,覆盖三角函数、指数对数、几何计算、向量运算等类别。三角函数(sin、cos、tan)接受弧度输入,radians() 和 degrees() 转换角度单位。几何函数包括 dot(点积)、cross(叉积)、reflect(反射)、refract(折射)、distance(距离)、length(长度)、normalize(归一化)。这些函数在 GPU 硬件上实现,通常比手写实现更快。
radians()
degrees()
// Blinn-Phong 光照模型 fn compute_lighting(normal: vec3<f32>, light_dir: vec3<f32>, view_dir: vec3<f32>) -> vec3<f32> { let ambient = material.ambient * light.ambient; let diff = max(dot(normal, light_dir), 0.0); let diffuse = diff * material.diffuse * light.diffuse; let half_dir = normalize(light_dir + view_dir); let spec = pow(max(dot(normal, half_dir), 0.0), material.shininess); let specular = spec * material.specular * light.specular; return ambient + diffuse + specular; }
纹理采样函数需要纹理和采样器两个对象。textureSample(texture, sampler, uv) 对 2D 纹理标准采样,textureSampleLevel(texture, sampler, uv, level) 显式指定 mipmap 层级,textureSampleGrad(texture, sampler, uv, ddx, ddy) 显式指定导数。textureLoad(texture, coords, level) 直接读取纹素,无滤波。WGSL 的纹理采样设计比 GLSL 更明确,纹理和采样器分离,避免了隐式状态。
textureSample(texture, sampler, uv)
textureSampleLevel(texture, sampler, uv, level)
textureSampleGrad(texture, sampler, uv, ddx, ddy)
textureLoad(texture, coords, level)
WGSL 的数据对齐规则严格,确保 CPU 和 GPU 对数据布局的理解一致。标量(f32、i32、u32、bool)对齐到 4 字节。向量的对齐等于其元素大小的 2 倍(vec2 是 8 字节,vec3 和 vec4 是 16 字节)。矩阵的对齐等于其列的对齐,mat4x4<f32> 是 16 字节对齐(每列 16 字节)。数组元素的对齐等于其元素类型的对齐,数组大小必须常量表达式(运行时大小需要存储缓冲区)。
struct Material { ambient: vec3<f32>, // offset 0, size 16 shininess: f32, // offset 16, size 4 diffuse: vec3<f32>, // offset 32, size 16 roughness: f32, // offset 48, size 4 specular: vec3<f32>, // offset 64, size 16 metallic: f32, // offset 80, size 4 } // 总大小 96 字节,对齐 16 字节
WGSL 的 struct 内存布局默认为 std430(与 GLSL 的 std430 类似),成员按对齐规则排列,可能有填充(padding)。使用 @size(N) 和@align(N) 属性可手动控制布局,确保与 JavaScript 的 DataView 或 Float32Array 对齐。存储缓冲区(storage buffer)和对齐更严格,需要显式 @align 避免 validation error。
struct
std430
@size(N)
@align(N)
DataView
Float32Array
@align
WGSL 的计算着色器使用 @compute 标注,通过 @workgroup_size(x, y, z) 指定工作组大小。全局调用 ID(@builtin(global_invocation_id))是工作组 ID 和本地 ID 的组合,可用于索引数组。工作组内共享内存使用 var<workgroup> 声明,需要在 workgroupBarrier() 前同步所有线程。
@workgroup_size(x, y, z)
@builtin(global_invocation_id)
var<workgroup>
workgroupBarrier()
struct Particle { pos: vec3<f32>, vel: vec3<f32>, life: f32, } @group(0) @binding(0) var<storage, read> input: array<Particle>; @group(0) @binding(1) var<storage, read_write> output: array<Particle>; struct Uniforms { delta_time: f32, } @group(0) @binding(2) var<uniform> uniforms: Uniforms; @compute @workgroup_size(64) fn cs_main(@builtin(global_invocation_id) global_id: vec3<u32>) { let index = global_id.x; var p = input[index]; p.pos = p.pos + p.vel * uniforms.delta_time; p.life = p.life - uniforms.delta_time; output[index] = p; }
计算着色器的常见应用包括粒子模拟、物理计算、图像处理、后处理。WGSL 的计算着色器与 WebGPU 的计算管线集成,可与图形管线共享资源(纹理、缓冲区)。textureStore() 可直接写入纹理,无需通过渲染通道,适合计算着色器生成纹理数据(如阴影贴图、环境贴图)。
textureStore()
WGSL 着色器通过 JavaScript 的 WebGPU API 加载。device.createShaderModule({ code: wgslCode }) 编译着色器字符串为着色器模块。编译错误可通过 module.getCompilationInfo() 获取,包括错误位置和消息。着色器模块不会立即编译为 GPU 机器码,而是在创建管线(device.createRenderPipeline() 或 device.createComputePipeline())时编译,这是"二次编译"的第二步。
device.createShaderModule({ code: wgslCode })
module.getCompilationInfo()
device.createRenderPipeline()
device.createComputePipeline()
// JavaScript 加载 WGSL 着色器 const shaderCode = ` @vertex fn vs_main(@location(0) pos: vec3<f32>) -> @builtin(position) vec4<f32> { return vec4<f32>(pos, 1.0); } `; const shaderModule = device.createShaderModule({ code: shaderCode }); const compilationInfo = await shaderModule.getCompilationInfo(); if (compilationInfo.messages.length > 0) { for (const message of compilationInfo.messages) { console.error(`${message.lineNum}:${message.linePos}: ${message.message}`); } }
WebGPU 的绑定组(BindGroup)机制将资源绑定到着色器。@group(N) @binding(M) 对应 device.createBindGroupLayout() 和 device.createBindGroup()。绑定组在创建管线时指定,允许在运行时动态切换资源(如不同的纹理、缓冲区)。这种设计比 OpenGL 的全局绑定更灵活,也更容易优化(驱动可提前验证资源类型)。
device.createBindGroupLayout()
device.createBindGroup()
WGSL 的性能优化原则与其他着色语言类似,但有一些 WebGPU 特定的考虑。减少分支是关键,WebGPU 的实现可能在 GPU 上将 WGSL 转换为 SPIR-V 或 DXIL,分支发散仍会导致性能损失。使用 select()(三元运算符)代替简单的 if-else,编译器可将其编译为条件移动(无分支)。纹理采样是昂贵的操作,尽量减少采样次数,或使用 mipmap 减少内存访问。
select()
WebGPU 的 timestamp-query 可测量着色器执行时间。device.createQuerySet({ type: "timestamp", count: 2 }) 创建查询集,在编码命令时插入 writeTimestamp,渲染后读取查询结果。这种性能分析比 WebGL 的 EXT_disjoint_timer_query 更精确,也更容易使用。
timestamp-query
device.createQuerySet({ type: "timestamp", count: 2 })
writeTimestamp
EXT_disjoint_timer_query
计算着色器的优化关注内存访问模式。合并访问(coalescing)可减少内存事务,工作组内线程应访问连续的内存地址。workgroupBarrier() 同步工作组内线程,但不应过度使用(同步有开销)。使用 var<workgroup> 共享内存减少全局内存访问,但要注意同步正确性(避免数据竞争)。
WGSL 与 GLSL/HLSL 的语法类似,但有一些重要差异。WGSL 使用 vec3<f32> 类型标注语法,GLSL 使用 vec3(隐式 float),HLSL 使用 float3。WGSL 的矩阵是列主序(column-major),与 GLSL 一致,但语法是 mat4x4<f32>(注意行列顺序)。WGSL 的 textureSample() 需要纹理和采样器两个参数,GLSL 的 texture() 只需纹理(采样器隐式绑定)。
vec3
float3
textureSample()
texture()
WGSL 的属性系统更明确,@location、@builtin、@group、@binding 是显式标注,GLSL 使用全局变量和 layout 限定符。WGSL 的结构体成员访问用点(struct.member),GLSL 也用点,HLSL 也用点(基本一致)。WGSL 的函数调用参数类型必须匹配,不支持隐式转换,GLSL/HLSL 有一些隐式转换(如 float 到 vec3)。
@location
@builtin
@group
@binding
struct.member
工具链方面,naga(Rust 编写的库)可将 WGSL 转换为 SPIR-V、GLSL、MSL,实现跨平台着色器。wgpu(Rust 实现的 WebGPU)使用 naga 作为着色器后端,支持 Windows、macOS、Linux、Android。WebGPU 的 polyfill(webgpu.hxx)可将 WebGPU 调用转换为 WebGL,在不支持 WebGPU 的浏览器中运行,但性能会降低。
naga
wgpu
webgpu.hxx
WGSL 的调试比 GLSL/HLSL 更困难,因为 WebGPU 仍处于快速发展阶段。Chrome DevTools 的 WebGPU Inspector 可查看管线状态、资源绑定、着色器代码。RenderDoc 支持 WebGPU 捕获,可分析着色器输入输出。wgsl-analyzer(VSCode 插件)提供语法高亮、类型检查、错误提示。
wgsl-analyzer
WGSL 的编译错误信息通常包含行号和列号,错误描述比 GLSL 更详细。常见的错误包括:类型不匹配(cannot add vec3<f32> and vec3<i32>)、对齐错误(struct member has misaligned offset)、资源绑定冲突(@binding(0) already used)。这些错误在着色器编译时检测,不会导致 GPU 崩溃,体现了 WGSL 的安全设计。
cannot add vec3<f32> and vec3<i32>
struct member has misaligned offset
@binding(0) already used
未来的 WGSL 发展包括更好的 IDE 支持、更多内置函数、更高效的编译器。WebGPU 也将新增特性(间接绘制、射线追踪、网格着色器),WGSL 会相应扩展。WGSL 有望成为 Web 图形编程的标准语言,取代 WebGL 时代的 GLSL,为 Web 应用提供接近原生的图形性能。
/abstract - 目录 /ai - 人工智能 /ai/app - 大模型应用 /ai/app/api/openai-rpc - OpenAI_API /ai/app/arch - 应用架构 /ai/app/arch/api - API 设计 /ai/app/arch/caching - Prompt Caching /ai/app/arch/gateway - 网关与缓存 /ai/app/arch/routing - 模型路由 /ai/app/auto - 自动化 /ai/app/auto/impl - 实现原理 /ai/app/auto/traditional - 传统自动化 /ai/app/engine - 推理引擎 /ai/app/engine/llama/cpp /ai/app/engine/llama_cpp - llama.cpp /ai/app/engine/mistral/rs /ai/app/engine/mistral_rs - mistral.rs /ai/app/engine/rust/infer /ai/app/engine/rust_infer - Rust 推理引擎 /ai/app/engine/vllm - vLLM /ai/app/finetune - 微调 /ai/app/lib - 框架库 /ai/app/lib/langchain - LangChain /ai/app/lib/langchain/langgraph - LangGraph /ai/app/lib/langchain/runnable - LCEL 与 Runnable /ai/app/lib/packages - 常用包 /ai/app/multimodal - 多模态 /ai/app/multimodal/audio - 语音交互 /ai/app/multimodal/generation - 媒体生成 /ai/app/multimodal/vision - 视觉理解 /ai/app/overlay - Overlay /ai/app/overlay/agent - 智能体 /ai/app/overlay/agent/a2a - A2A 协议 /ai/app/overlay/agent/case - 应用实战 /ai/app/overlay/agent/case/claude/code /ai/app/overlay/agent/case/claude_code - Claude Code /ai/app/overlay/agent/case/cline - Cline /ai/app/overlay/agent/cua - Computer Use Agent /ai/app/overlay/agent/deep/agent /ai/app/overlay/agent/deep_agent - Deep Agent /ai/app/overlay/agent/loop - Agent 循环 /ai/app/overlay/agent/mcp - MCP Server /ai/app/overlay/agent/safety - 安全防护 /ai/app/overlay/agent/safety/content - 内容安全 /ai/app/overlay/agent/safety/guardrails - Guardrails /ai/app/overlay/agent/safety/injection - Prompt 注入 /ai/app/overlay/agent/skills - Skills /ai/app/overlay/agent/tools - 工具调用 /ai/app/overlay/ops - LLMOps /ai/app/overlay/ops/eval - 评估框架 /ai/app/overlay/ops/monitor - 可观测性 /ai/app/overlay/ops/test - 测试策略 /ai/app/overlay/rag - RAG /ai/app/overlay/rag/agentic/rag /ai/app/overlay/rag/agentic_rag - Agentic RAG /ai/app/overlay/rag/data - 数据工程 /ai/app/overlay/rag/data/parsing - 文档解析 /ai/app/overlay/rag/data/processing - 数据处理 /ai/app/overlay/rag/embedding - Embedding /ai/app/overlay/rag/graphrag - GraphRAG /ai/app/overlay/rag/retrieval - 检索质量 /ai/app/overlay/rag/vector/db /ai/app/overlay/rag/vector_db - 向量数据库 /ai/app/overlay/session - 会话管理 /ai/app/overlay/session/compression - 上下文压缩 /ai/app/overlay/session/context - Context Engineering /ai/app/overlay/session/prompt - 提示词 /ai/app/overlay/ui - AI UI /ai/compute - AI 引擎 /ai/compute/api - 标准接口 /ai/compute/api/cpu - SIMD /ai/compute/api/cuda - CUDA /ai/compute/api/opencl - OpenCL /ai/compute/api/simt - SIMT /ai/compute/api/triton - Triton /ai/compute/deploy - 部署 /ai/compute/deploy/eco - 部署工具 /ai/compute/deploy/hardware - 硬件 /ai/compute/deploy/llmops - LLMOps /ai/compute/deploy/multi-gpu - 多卡推理 /ai/compute/deploy/onnx-deploy - ONNX 部署 /ai/compute/deploy/optimization - 推理优化 /ai/compute/deploy/quantization - 模型量化 /ai/compute/deploy/serving - 服务部署 /ai/compute/distributed - 集群 /ai/compute/distributed/comm - 集合通信 /ai/compute/distributed/parallel - 模型拆分 /ai/compute/engine - 主流引擎 /ai/compute/engine/deepspeed - DeepSpeed /ai/compute/engine/other - 其他 /ai/compute/engine/pytorch - PyTorch /ai/compute/engine/vllm - vLLM /ai/compute/impl - 设计实现 /ai/compute/impl/kvcache - KV Cache /ai/compute/impl/moe - 混合专家 /ai/compute/impl/speculative - 投机解码 /ai/compute/kernel - 算子 /ai/compute/kernel/concepts - 概念索引 /ai/compute/kernel/flashattention - FlashAttention /ai/compute/kernel/format - 模型格式 /ai/compute/kernel/fusion - 算子融合 /ai/compute/kernel/gguf - GGUF /ai/compute/kernel/marlin - Marlin /ai/compute/kernel/onnx - ONNX /ai/compute/kernel/optimization - 算子优化 /ai/compute/kernel/quant/matrix /ai/compute/kernel/quant_matrix - 量化选型 /ai/compute/kernel/quantization - 量化算法 /ai/compute/stack - 计算栈 /ai/cpp - C++ /ai/neural - 神经网络 /ai/neural/dl - 深度学习 /ai/neural/dl/audio - 听觉 /ai/neural/dl/backforward - 反向传播 /ai/neural/dl/cnn - CNN /ai/neural/dl/diffusion - Diffusion /ai/neural/dl/multimodal - 多模态 /ai/neural/dl/nlp - NLP /ai/neural/dl/recommend - 推荐 /ai/neural/dl/rnn - RNN /ai/neural/dl/transformer - Transformer /ai/neural/dl/vision - 视觉 /ai/neural/dl/vit - ViT /ai/neural/llm - LLM /ai/neural/llm/arch - 架构 /ai/neural/llm/finetune - 微调 /ai/neural/llm/memo - 记忆 /ai/neural/llm/pretraind - 基座模型 /ai/neural/math - 数学基础 /ai/neural/ml - 机器学习 /ai/neural/ml/bf - 梯度下降法 /ai/neural/ml/loss - 损失函数 /ai/neural/ml/reinforce - 强化学习 /ai/neural/ml/supervised - 监督学习 /ai/neural/ml/unsupervised - 无监督学习 /ai/neural/numpy - Numpy /ai/neural/pytorch - PyTorch /ai/neural/sklearn - sklearn /ai/python - Python /ai/python/basic - 语言基础 /ai/python/basic/module - 模块系统 /ai/python/fastapi - FastAPI /ai/python/jupyter - jupyter /ai/python/uv - uv /ai/symbol - 符号逻辑 /ai/symbol/expert-system - 专家系统 /ai/symbol/logic - 数理逻辑基础 /ai/symbol/neuralify - 神经符号融合 /ai/symbol/outline - 学习路线 /ai/symbol/prolog - Prolog /ai/symbol/reasoning - 推理引擎与搜索 /ai/symbol/representation - 知识表示 /basic - 理论基础 /basic/algo - 算法 /basic/algo/compress - 压缩 /basic/algo/crypto - 加密和解密 /basic/algo/model - 算法模型 /basic/algo/model/bit - 位运算 /basic/algo/model/dp - 动态规划 /basic/algo/model/leetcode - leetcode 题型 /basic/algo/model/recrusion - 递归 /basic/algo/model/struct - 数据结构辅助 /basic/algo/sort - 排序算法 /basic/algo/string - 字符串算法 /basic/algo/struct - 数据结构 /basic/algo/struct/graph - 图 /basic/algo/struct/traversal - 图遍历 /basic/algo/struct/tree - 树 /basic/compile - 编译原理 /basic/compile/advance - 高级语言 /basic/compile/dsl - DSL /basic/compile/dsl/glob - glob /basic/compile/dsl/regex - 正则表达式 /basic/compile/lang - 编程语言概览 /basic/db - 数据库 /basic/db/cmp - SQL /basic/db/nf - 范式 /basic/graphic - 图形学 /basic/graphic/2d - 2D 图形 /basic/graphic/3d - 3D 场景渲染 /basic/hardware - 硬件组成 /basic/hardware/coding - 编码 /basic/hardware/cpu - CPU /basic/hardware/gpu - GPU /basic/hardware/interrupt - 中断 /basic/hardware/motherboard - 主板 /basic/hardware/storage - 存储 /basic/hardware/topo - CPU 拓扑 /basic/network - 网络协议 /basic/network/ether - 以太网 /basic/network/http - HTTP /basic/network/ip - IP /basic/network/protocol - 网络协议 /basic/network/tcp - TCP /basic/network/udp - UDP /basic/os - 操作系统 /basic/os/mm - 内存管理 /basic/os/schd - 调度 /client - 客户端 /client/art - 美术设计
/client/art/mime - 媒体文件 /client/art/render - 渲染 /client/art/toolchain - 工具链 /client/csharp - C# /client/csharp/async - 异步编程 /client/csharp/basic - 语言基础 /client/csharp/dotnet - .NET /client/csharp/msbuild - MSBuild /client/csharp/nuget - NuGet /client/csharp/unity - Unity /client/game - 游戏引擎 /client/game/cocos - Cocos /client/game/godot - Godot /client/game/unity - Unity /client/game/unreal - Unreal /client/gui - 图形应用 /client/gui/arch - 架构 /client/gui/arch/observe - 可观测性 /client/gui/ergonomic - 人机关系 /client/gui/ergonomic/interact - 人机交互 /client/gui/ergonomic/screen - 屏幕 /client/gui/framework - UI 框架 /client/gui/framework/cross - 跨平台 /client/gui/framework/electron - Electron /client/gui/framework/flutter - Flutter /client/gui/framework/flutter/dart - Dart /client/gui/framework/reactnative - ReactNative /client/gui/platform - UI 平台 /client/gui/platform/android - Android /client/gui/platform/gnome - Gnome /client/gui/platform/ios - Apple /client/gui/platform/web-env - Web 宿主 /client/gui/platform/windows - Windows /client/gui/security - 安全 /client/gui/security/access - 应用权限 /client/gui/security/antiattack - 网络攻击 /client/gui/security/auth - 登录鉴权 /client/gui/security/privacy - 隐私保护 /client/gui/security/sandbox - 沙箱 /client/render - 渲染引擎 /client/render/api - 标准接口 /client/render/api/directx - DirectX /client/render/api/opengl - OpenGL /client/render/api/sdl - SDL /client/render/api/vulkan - Vulkan /client/render/api/vulkan/icd - ICD /client/render/api/vulkan/spirv - SPIR-V /client/render/api/webgl /client/render/api/webgpu - WebGPU /client/render/basic - 渲染基础 /client/render/basic/mapping - 贴图 /client/render/basic/scene - 3D 场景 /client/render/engine - 主流引擎 /client/render/engine/cycles - Cycles /client/render/engine/godot - Godot /client/render/engine/skia - Skia /client/render/raster - 光栅化管线 /client/render/raster/ae - 后处理 /client/render/raster/illumination - 光照模型 /client/render/raster/rast - 光栅化算法 /client/render/raytrace - 光线追踪管线 /client/render/raytrace/bvh - 加速算法 /client/render/raytrace/denoise - 降噪 /client/render/raytrace/integrate - 混合渲染管线 /client/render/shader - 着色器 /client/render/shader/optimization - 着色器优化 /client/render/shader/patterns - 常见模式 /client/render/stack - 计算栈 /client/render/vec/compose /client/render/vec_compose - 矢量合成管线 /client/rust - Rust /client/rust/basic - 语言基础 /client/rust/basic/assets - 静态资源管理 /client/rust/basic/closure - 闭包 /client/rust/basic/ld - 链接库 /client/rust/basic/macro - 宏 /client/rust/basic/mod - 模块系统 /client/rust/basic/ref - 智能指针 /client/rust/basic/trait - 特性 /client/rust/cargo - Cargo /client/rust/cli - CLi /client/rust/framework - UI 框架 /client/rust/framework/iced - iced /client/rust/framework/slint - Slint /client/rust/framework/tauri - Tauri /client/rust/wasm - WASM /client/web - Web /client/web/api - Web API /client/web/api/wasm - WASM /client/web/browser - 浏览器 /client/web/browser/arch - 架构 /client/web/browser/devtools - DevTools 性能分析 /client/web/browser/eventloop - 事件循环 /client/web/browser/http - HTTP 协议 /client/web/browser/memleak - 内存泄漏 /client/web/browser/optimize - 性能优化 /client/web/browser/render - 渲染周期 /client/web/browser/render copy - 渲染周期 /client/web/browser/security - 浏览器安全 /client/web/browser/security copy - 安全 /client/web/browser/storage - 存储 /client/web/browser/v8 - V8 /client/web/css - CSS /client/web/css/basic - 语言基础 /client/web/css/sass - Sass /client/web/css/tailwind - Tailwindcss /client/web/css/trick - CSS trick /client/web/css/trick/animation - CSS 动画 /client/web/css/trick/bfc - 块级格式上下文 /client/web/css/trick/layout - 布局 /client/web/css/trick/layout/box-sizing - CSS盒模型 /client/web/css/trick/layout/containing-block - 包含块 /client/web/css/trick/layout/grid - grid布局 /client/web/css/trick/relative - 主题定制 /client/web/css/trick/sort - css 属性的分类 /client/web/css/trick/z-index - 层叠上下文与 z-index /client/web/eng - 工程化 /client/web/eng/bootstrap - 项目搭建 /client/web/eng/build - 构建优化 /client/web/eng/engineering - 工程化搭建 /client/web/eng/migration - 迁移 /client/web/eng/svg - svg /client/web/eng/vite - Vite /client/web/eng/vite-plugin - Vite 插件 /client/web/eng/webpack - Webpack /client/web/html - HTML /client/web/html/basic - 语言基础 /client/web/html/mathml - MathML /client/web/html/md - Markdown /client/web/html/seo - SEO /client/web/html/svg - SVG /client/web/html/trick - HTML trick /client/web/html/trick/drag - HTML 拖放 API /client/web/html/trick/event - 事件与尺寸获取 /client/web/html/trick/wc - Web Component /client/web/js - JavaScript /client/web/js/basic - 语言基础 /client/web/js/basic/async - 异步编程 /client/web/js/basic/class - 面向对象 /client/web/js/basic/iterable - 迭代器 /client/web/js/basic/obj-base-ops - js 对象基本操作 /client/web/js/basic/own-property - 属性的可枚举性和所有者 /client/web/js/basic/proto - 原型链 /client/web/js/basic/stream - Stream API /client/web/js/basic/type-transform - 隐式类型转换 /client/web/js/npm - npm /client/web/js/typescript - TypeScript /client/web/js/typescript/basic - 语法基础 /client/web/nodejs - Nodejs /client/web/nodejs/express - Express.js /client/web/nodejs/nestjs - Nestjs /client/web/nodejs/performance - Node.js 性能调优 /client/web/react - React /client/web/react/fiber - Fiber 与调和 /client/web/react/rsc - 服务端组件 /client/web/solid - Solid /client/web/ssr - SSR /client/web/ssr/nextjs - Nextjs /client/web/ssr/nuxtjs - Nuxtjs /client/web/ssr/seo - SEO /client/web/ssr/ssg - SSG /client/web/ssr/vike - Vike /client/web/typical - 典型业务 /client/web/vue - Vue /client/web/vue/cpc - 组件通信 /client/web/vue/nuxt-server - 服务端组件 /client/web/vue/vdom - 虚拟 DOM 与 Diff 算法 /design - 软件设计 /design/async - 异步 /design/async/async-await - await /design/async/reactive - 响应式 /design/async/schedule - 用户态调度 /design/concurrent - 并发 /design/concurrent/atom - 原子操作 /design/concurrent/barrier - 内存屏障 /design/concurrent/lock - 同步原语 /design/concurrent/lock/free /design/concurrent/lock_free - 无锁并发 /design/concurrent/thread - 多线程 /design/fp - 函数式 /design/fp/composition - 组合 /design/fp/functor - 函子 /design/fp/hint - hint /design/fp/immutable - 不可变 /design/fp/io - IO /design/fp/state - 状态管理 /design/oop - 面向对象 /design/oop/aop - AOP /design/oop/interface - 接口与抽象 /design/oop/ioc - IOC /design/oop/lifetime - 对象生命周期 /design/oop/om - 对象模型 /design/oop/pattern - 设计模式 /design/oop/relationship - 类间关系 /design/oop/solid - SOLID /design/spacetime - 面向时空 /design/spacetime/domain - 主机域 /design/spacetime/general - 通用域 /design/spacetime/general/architecture - 架构演进 /design/spacetime/general/container - 容器
/design/spacetime/general/corruption - 腐化 /design/spacetime/general/dependency - 依赖管理 /design/spacetime/general/tradeoff - 权衡 /design/spacetime/network - 网络域 /design/spacetime/process - 进程域 /design/spacetime/process/coupling - 组件耦合 /design/spacetime/process/scope - 作用域 /design/spacetime/process/single - 单进程 /design/spacetime/space - 体系建构 /design/typical - 经典范式 /design/typical/ability - 质量属性 /design/typical/ddd - DDD /design/typical/duty - 职责分配 /design/typical/macro - 宏观指导 /design/typical/maintainability - 可读性与可维护性 /design/typical/refactor - 重构 /design/typical/reliability - 可靠性与可用性 /design/typical/requirements - 需求分析 /design/typical/simplify - 简化原则 /design/typical/swift - 敏捷开发 /examples - 随便看看 /index /kernel - 系统层 /kernel/asm - 汇编 /kernel/asm/arm - ARM 指令集 /kernel/c - C /kernel/c/basic - 语言基础 /kernel/c/basic/io - io 操作 /kernel/c/basic/string - 字符串操作 /kernel/c/build - 构建系统 /kernel/c/concurrent - 并发编程 /kernel/c/debug - 调试 /kernel/c/lib - 库函数 /kernel/embed - 嵌入式 /kernel/embed/bios - BIOS /kernel/embed/device - 外设 /kernel/embed/device/bus - 总线设备 /kernel/embed/device/bus/i2c - I2C /kernel/embed/device/bus/pci - PCI /kernel/embed/device/bus/usb - USB /kernel/embed/device/comm - 数据面 /kernel/embed/device/platform - 平台设备 /kernel/embed/device/sub - 集成子设备 /kernel/embed/device/wwan - 蜂窝模块 /kernel/embed/elel - 硬件基础 /kernel/embed/elel/design - 打板 /kernel/embed/elel/fpga - FPGA /kernel/embed/elel/pcb - PCB /kernel/embed/elel/soc - SoC /kernel/embed/freertos - FreeRTOS /kernel/embed/iot - 物联网 /kernel/embed/sbc - 开发板 /kernel/embed/sbc/raspberry - 树莓派 /kernel/embed/sbc/stm32 - STM32 /kernel/embed/uboot - U-Boot /kernel/equip - 装机 /kernel/equip/bmc - BMC /kernel/equip/gpu - GPU /kernel/equip/laptop/brand /kernel/equip/laptop_brand - 笔记本 /kernel/equip/lte - LTE /kernel/equip/motherboard - 主板 /kernel/equip/motherboard/bmc - BMC 详解 /kernel/equip/motherboard/consumer - 消费级 /kernel/equip/motherboard/epyc - EPYC 装机 /kernel/equip/motherboard/ram - 内存适配 /kernel/equip/motherboard/server - 服务器 /kernel/equip/motherboard/threadripper - Threadripper 装机 /kernel/equip/motherboard/workstation - 工作站 /kernel/equip/motherboard/xeon - Xeon 装机 /kernel/equip/ram - 内存 /kernel/equip/sbc - SBC /kernel/equip/screen - 屏幕 /kernel/equip/server/room /kernel/equip/server_room - 机房 /kernel/equip/slot - 接口 /kernel/equip/support - 支撑设备 /kernel/linux - Linux /kernel/linux/develop - 系统开发 /kernel/linux/develop/ctx - 内核上下文 /kernel/linux/develop/io/uring /kernel/linux/develop/io_uring - io_uring /kernel/linux/develop/ip/cli /kernel/linux/develop/ip_cli - ip 命令 /kernel/linux/develop/kbuild - linux 内核构建系统 /kernel/linux/develop/lock - 同步原语 /kernel/linux/develop/service - 系统服务 /kernel/linux/develop/socket - 套接字 /kernel/linux/develop/stream-block - 流式与块式存取 /kernel/linux/develop/struct - 数据结构 /kernel/linux/develop/struct/iov - 聚簇读写 /kernel/linux/develop/struct/linked - 链表 /kernel/linux/develop/systemd - systemd /kernel/linux/develop/zero-copy - sendfile 零拷贝 /kernel/linux/device - 设备管理 /kernel/linux/device/dma - DMA /kernel/linux/device/driver - 驱动接口 /kernel/linux/device/driver/can - CAN /kernel/linux/device/driver/pci - PCIe 驱动 /kernel/linux/device/driver/usb - USB 驱动 /kernel/linux/device/driver/virtio /kernel/linux/device/iommu - IOMMU /kernel/linux/device/lifecycle - 生命周期 /kernel/linux/device/udev - udev /kernel/linux/file - 文件管理 /kernel/linux/file/block - 块设备子系统 /kernel/linux/file/pfs - 伪文件系统 /kernel/linux/file/vfs - 虚拟文件系统 /kernel/linux/irq - 中断管理 /kernel/linux/irq/clock - 时钟中断 /kernel/linux/irq/controller - 中断控制器 /kernel/linux/irq/handler - 中断处理 /kernel/linux/irq/sync - 内核并发机制 /kernel/linux/mm - 内存管理 /kernel/linux/mm/mmap - 虚拟内存映射 /kernel/linux/mm/pmm - 物理内存管理 /kernel/linux/mm/reclaim - 内存回收 /kernel/linux/mm/swap - 内存交换 /kernel/linux/net - 网络实现 /kernel/linux/net/stack - 协议栈 /kernel/linux/power - 电源管理 /kernel/linux/power/boot - 开机上电 /kernel/linux/power/tpm - 安全启动 /kernel/linux/process - 进程管理 /kernel/linux/process/cgroup - Cgroup /kernel/linux/process/ipc - IPC /kernel/linux/process/namespace - 命名空间 /kernel/linux/process/schd - 调度 /kernel/linux/process/security - 权限管理 /kernel/linux/syscall - 系统调用 /kernel/linux/syscall/file - 文件管理 /kernel/linux/syscall/mm - 内存管理 /kernel/linux/syscall/process - 进程管理 /kernel/linux/video - 视图系统 /kernel/linux/video/terminal - 终端系统 /kernel/netlink - 通信 /kernel/netlink/hardware - 硬件通信 /kernel/netlink/protocol - 协议分层 /kernel/vm - 虚拟化 /kernel/vm/basic - 基本原理 /kernel/vm/basic/bios - BIOS /kernel/vm/basic/cpu - CPU /kernel/vm/basic/device - 设备 /kernel/vm/basic/memory - 内存 /kernel/vm/debug - 虚拟机调试增强 /kernel/vm/qemu - QEMU 内核调试 /kernel/vm/spdk-dpdk - SPDK 与 DPDK /kernel/vm/vfio - VFIO /kernel/vm/virtio - VirtIO /sde - 工程化 /sde/container - 容器 /sde/container/docker - Docker /sde/container/principle - 实现原理 /sde/git - Git /sde/git/advanced - Git 高阶用法 /sde/git/github - Github /sde/git/gitlab - Gitlab /sde/k8s - K8s /sde/k8s/k3s - k3s /sde/k8s/network - 网络模型 /sde/shell - Shell /sde/shell/basic - 语言基础 /sde/shell/cli - 常见命令行 /sde/sre - 运维 /sde/sre/elk - 可观测性 /sde/sre/jenkins - Jenkins /sde/sre/openstack - OpenStack /sde/sre/tuning - Linux 性能调优 /sde/test - 测试 /sde/test/basic - 测试原理 /sde/test/framework - 测试工具与框架 /sde/test/tdd - 测试驱动开发 /sde/workflow - 工作流 /sde/workflow/devops - DevOps /sde/workflow/devops/cicd - CI/CD /sde/workflow/quality - 质量控制 /sde/workflow/quality/docs - 文档工程 /sde/workflow/quality/review - Code Review /sde/workflow/version - 版本管理 /server - 服务端 /server/db - 数据库 /server/db/architecture - 数据库架构分层 /server/db/distributed - 集群 /server/db/distributed/comparison - 数据库对比与选型 /server/db/distributed/newsql - NewSQL 数据库 /server/db/distributed/sharding - 分库分表 /server/db/distributed/transaction - 分布式事务 /server/db/engine - 存储引擎 /server/db/engine/fulltext - 全文检索 /server/db/engine/graph - 图 /server/db/engine/innodb - innodb /server/db/engine/vector - 向量 /server/db/nosql - NoSQL /server/db/nosql/es - ElasticSearch /server/db/nosql/milvus - Milvus /server/db/nosql/milvus/idx - 向量索引 /server/db/nosql/milvus/storage - 分布式能力 /server/db/nosql/milvus/usage - 使用实践 /server/db/nosql/minio - MinIO /server/db/nosql/mongo - MongoDB
/server/db/nosql/neo4j - Neo4j /server/db/nosql/redis - Redis /server/db/practice - 工程实践 /server/db/practice/backup - 备份与恢复 /server/db/practice/capacity - 容量规划 /server/db/practice/cloud - 云数据库服务 /server/db/practice/monitoring - 监控与运维 /server/db/practice/standards - 数据库规范 /server/db/practice/tuning - 性能调优实践 /server/db/sql - SQL /server/db/sql/basic - sql 基础 /server/db/sql/basic/design - 数据库设计 /server/db/sql/basic/integrity - 数据完整性 /server/db/sql/basic/transaction - 事务与并发控制 /server/db/sql/mysql - MySQL /server/db/sql/mysql/acid - ACID /server/db/sql/mysql/id - 索引 /server/db/sql/mysql/impl - 存储引擎 /server/db/sql/mysql/optimize - 查询优化 /server/db/sql/pg - PostgreSQL /server/db/sql/sqlite - SQLite /server/distribute - 分布式 /server/distribute/arch - 集群架构 /server/distribute/basic - 分布式基础 /server/distribute/basic/cap - CAP /server/distribute/basic/concurrency - 并发模型 /server/distribute/basic/concurrency/coroutine - 协程原理 /server/distribute/basic/concurrency/event-loop - 事件驱动架构 /server/distribute/basic/consensus - 共识算法 /server/distribute/basic/consensus/paxos - Paxos 算法 /server/distribute/basic/consensus/raft - Raft 算法 /server/distribute/basic/consensus/zab - ZAB 协议 /server/distribute/basic/id - 分布式 ID /server/distribute/basic/lock - 分布式锁 /server/distribute/basic/transaction - 分布式事务 /server/distribute/cloud - 云原生 /server/distribute/cloud/arch - 架构 /server/distribute/cloud/cicd - CI/CD /server/distribute/cloud/container - 容器技术 /server/distribute/cloud/mesh - Service Mesh /server/distribute/cloud/orchestration - Kubernetes /server/distribute/cloud/pkg - 包管理与镜像 /server/distribute/micro - 微服务 /server/distribute/micro/cache - 缓存 /server/distribute/micro/cache/consistency - 缓存一致性 /server/distribute/micro/config - 配置中心 /server/distribute/micro/discovery - 服务发现 /server/distribute/micro/gateway - API 网关 /server/distribute/micro/lb - 负载均衡 /server/distribute/micro/observability - 可观测性 /server/distribute/micro/observability/monitoring - 监控告警 /server/distribute/micro/observability/tracing - 链路追踪 /server/distribute/micro/qos - QoS /server/distribute/micro/qos/chaos - 混沌工程 /server/distribute/micro/qos/fuse - 熔断限流 /server/distribute/micro/qos/ha - 高可用与容错 /server/distribute/micro/qos/ha/load-balance - 负载均衡 /server/distribute/micro/qos/highes - 三高 /server/distribute/micro/qos/monitor - 监控 /server/distribute/micro/qos/observability - 可观测性 /server/distribute/micro/qos/observability/monitoring - 监控指标设计 /server/distribute/micro/qos/performance - 性能优化 /server/distribute/micro/qos/performance/profiling - 性能分析工具 /server/distribute/micro/qos/reliability/disaster-recovery - 容灾 /server/distribute/micro/qos/reliability/failover - 故障转移 /server/distribute/micro/qos/slashing - 限流降级 /server/distribute/micro/reliability - 健壮性 /server/distribute/micro/reliability/fusing - 熔断降级 /server/distribute/micro/reliability/ratelimit - 限流 /server/go - Go /server/go/gmp - GMP 调度器 /server/java - Java /server/java/basic - 语言基础 /server/java/jvm - JVM 内存与 GC /server/java/mod - 模块系统 /server/java/mod/gradle - gradle /server/java/mod/maven - Maven /server/java/spring - Spring /server/middleware - 中间件 /server/middleware/mq - 消息队列 /server/middleware/mq/kafka - Kafka /server/middleware/mq/rabbitmq - RabbitMQ /server/middleware/mq/rocketmq - RocketMQ /server/middleware/mycat - MyCat /server/middleware/proxy - 代理 /server/middleware/proxy/gateway - API 网关 /server/middleware/proxy/haproxy - haproxy /server/middleware/proxy/lvs - LVS /server/middleware/proxy/nginx - Nginx /server/middleware/srs - SRS /server/network - 网络编程 /server/network/io-model - I/O 模型 /server/network/proto - 网络协议 /server/network/proto/http - HTTP /server/network/proto/quic - QUIC /server/network/proto/rpc - RPC 框架 /server/network/proto/tcp - TCP /server/network/proto/udp - UDP /server/network/proto/websocket - WebSocket /server/network/security - 网络安全 /server/network/tcp-tuning - TCP 调优 /server/network/zero-copy - 零拷贝 /server/typical - 典型业务 /server/typical/auth - 登录鉴权 /server/typical/flash/sale /server/typical/flash_sale - 秒杀活动 /server/typical/image - 图片上传 /server/typical/order - 订单管理 /server/typical/search - 内容搜索 /server/typical/setup - 快速建站 /web3 - 去中心化 /web3/blockchain - 区块链 /web3/blockchain/consensus - 共识机制 /web3/blockchain/crypto - 密码学支持 /web3/blockchain/ethereum - 以太坊 /web3/blockchain/zk-proof - 零知识证明 /web3/dapp - DApp /web3/dapp/defi - DeFi /web3/dapp/tokens - 代币标准 /web3/dapp/wallets - 账户与钱包 /web3/solidity - Solidity /web3/solidity/smart-contracts - 智能合约