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

Three.js 快速入门教程【十】常见的纹理类型

请添加图片描述

系列文章目录

Three.js 快速入门教程【一】开启你的 3D Web 开发之旅
Three.js 快速入门教程【二】透视投影相机
Three.js 快速入门教程【三】渲染器
Three.js 快速入门教程【四】三维坐标系
Three.js 快速入门教程【五】动画渲染循环
Three.js 快速入门教程【六】相机控件 OrbitControls
Three.js 快速入门教程【七】常见几何体类型
Three.js 快速入门教程【八】常见材质类型
Three.js 快速入门教程【九】光源类型
Three.js 快速入门教程【十】常见的纹理类型


文章目录

  • 系列文章目录
  • 一、前言
  • 二、纹理基础概念
  • 二、常见纹理类型
    • 1. 普通纹理(Texture)
      • 1.1 使用的加载器
      • 1.2 示例
        • (1) 示例1——立方体6面贴图
        • (2) 示例2——地球
    • 2. 法线纹理(NormalTexture)
      • 2.1 使用的加载器
      • 2.2 核心代码
    • 3. 凹凸纹理(BumpTexture)
      • 3.1 使用的加载器
      • 3.2 核心代码
      • 3.3 与法向纹理区别
    • 4. 立方体纹理(CubeTexture)
      • 4.1 使用的加载器
      • 4.2 示例
        • 示例1——实现一个天空盒
          • CubeTexture 的映射方式
        • 示例2——反射周围的环境
    • 5.视频纹理(VideoTexture )
      • 使用的加载器
    • 示例
  • 五、免费纹理资源
  • 六、总结


一、前言

      在 Three.js 中,纹理是为 3D 模型添加细节和真实感的重要元素。通过纹理,我们可以为模型表面赋予各种材质和图案,如木纹、石纹、金属光泽等。本文将介绍 Three.js 中一些常见的纹理类型和使用讲解。


二、纹理基础概念

      在 Three.js 里,Texture(纹理) 可以理解为是一种数据(大部分是图片),它被映射到 3D 模型的表面上,用来模拟各种材质的外观,比如木材的纹理、金属的光泽、石头的表面等等。通过合理地应用纹理,我们能够让 3D 模型看起来更加逼真和生动

在 Three.js 中,纹理是通过 Texture 类及其子类来表示的。Texture 类是所有纹理的基类,它定义了纹理的一些通用属性和方法。常见的纹理子类包括 TextureLoader、CubeTextureLoader 等,用于加载不同类型的纹理。


二、常见纹理类型

1. 普通纹理(Texture)

普通纹理是最基本的纹理类型,也是所有纹理的基类,它直接使用一张图片作为纹理。在 Three.js 中,通常使用 TextureLoader 来加载纹理图片。

1.1 使用的加载器

TextureLoader

1.2 示例

(1) 示例1——立方体6面贴图
// 创建纹理
const textureLoader = new THREE.TextureLoader();
//加载纹理图片
const texture = textureLoader.load('texture.jpg');
// 创建材质并应用纹理
const material = new THREE.MeshBasicMaterial({ map: texture });
// 创建一个立方体
const geometry = new THREE.BoxGeometry(5,5,5);
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

请添加图片描述

(2) 示例2——地球
// 创建纹理
const textureLoader = new THREE.TextureLoader();
//加载纹理图片
const texture = textureLoader.load('earth.jpg');
// 创建材质并应用纹理
const materials =new THREE.MeshLambertMaterial({ map: texture })
// 创建一个球体
const geometry = new THREE.SphereGeometry(1, 32, 32);
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

请添加图片描述

ps:材质构造函数有个map属性可设置普通纹理


2. 法线纹理(NormalTexture)

在这里插入图片描述

法线纹理用于模拟表面的凹凸效果,通过改变表面的法线方向来产生光影变化,所以虚拟场景中至少有一个光源,如点光源(PointLight)、平行光(DirectionalLight)或聚光灯(SpotLight)等。法线纹理通常是一张 RGB 格式的彩色图片,每个像素的颜色值表示法线的方向。

2.1 使用的加载器

TextureLoader

2.2 核心代码

//加载普通纹理
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load("texture.png");// 加载法线纹理
const normalTextureLoader = new THREE.TextureLoader();
const normalTexture = normalTextureLoader.load('normal_texture.jpg');// 创建一个材质并应用法线纹理
const material = new THREE.MeshStandardMaterial({map: texture,//普通纹理normalMap: normalTexture,//法线纹理normalScale: new THREE.Vector2(1, 1) // 控制法线纹理的强度
});
//创建一个长方体
const geometry= new THREE.BoxGeometry(100, 50,10);
const mesh= new THREE.Mesh(geometry, material );
scene.add(mesh);

在这里插入图片描述

  • 物理、标准或高光材质构造函数有个normalMap属性设置法线纹理
  • normalScale属性 是一个 Vector2 对象,用于控制法线贴图的强度,值越大表面凹凸感越强

3. 凹凸纹理(BumpTexture)

在这里插入图片描述

凹凸纹理是一张灰度图像,图像中的每个像素值代表该位置表面的相对高度。较亮的像素代表凸起,较暗的像素代表凹陷。在光照计算时,Three.js 会根据凹凸纹理的像素值来调整表面法线的方向,从而模拟出凹凸的视觉效果,实际上几何形状并未被改变,所以虚拟场景中和法线纹理一样要求至少有一个光源。

3.1 使用的加载器

TextureLoader

3.2 核心代码

//加载普通纹理
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load("texture.png");// 加载凹凸纹理
const bumpTextureLoader= new THREE.TextureLoader();
const bumpTexture= bumpTextureLoader.load('bump_texture.png');// 创建一个材质并应用凹凸纹理
const material = new THREE.MeshStandardMaterial({map: texture,//普通纹理bumpMap: normalTexture, //凹凸纹理bumpScale:1, // 调整凹凸效果的强度
});
//创建一个矩形平面
const geometry= new THREE.PlaneGeometry(100, 100);
const mesh = new THREE.Mesh(geometry, material );
scene.add(mesh );

在这里插入图片描述

  • 物理、标准或高光材质构造函数有个bumpMap属性设置凹凸纹理
  • bumpScale属性 用于控制凹凸效果的强度,值越大表面凹凸感越强

3.3 与法向纹理区别

1、 原理不同

凹凸纹理通过灰度值区别呈现凹凸效果,而法向纹理通过每个像素的 RGB 值偏移量设置实现

2、效果表现

      凹凸纹理效果相对较为柔和、简单。在表现小尺度的细节和高光反射时不够真实,通常用于表现一些相对平滑、低细节的表面凹凸,如轻微的波纹、粗糙的石头表面等。

     法向纹理能够呈现出非常精细、真实的表面细节和凹凸效果。高光和阴影的过渡更加自然,即使在近距离观察或物体表面角度变化较大时,也能保持良好的视觉效果,适用于表现具有丰富细节的表面,如砖块的缝隙、皮革的纹理、金属的划痕等。


4. 立方体纹理(CubeTexture)

立方体纹理是由六个单独的纹理面(通常是正方形图片)组成,这些面分别对应一个虚拟立方体的六个面:正面、背面、顶面、底面、左面和右面。在 Three.js 场景中,它常被用于模拟环境,比如天空盒,让场景中的物体仿佛处于一个真实的环境当中,也可以用于反射效果,使物体能够反射周围的环境。

4.1 使用的加载器

CubeTextureLoader

4.2 示例

示例1——实现一个天空盒
// 创建 CubeTextureLoader
const cubeTextureLoader = new THREE.CubeTextureLoader();
// 加载立方体纹理的六张图片
// 这里的路径示例请根据实际情况修改
cubeTextureLoader.setPath('textures/');
cubeTextureLoader.load(['px.jpg', // 右面'nx.jpg', // 左 面'py.jpg', // 上 面'ny.jpg', // 下 面'pz.jpg', // 前 面'nz.jpg'  // 后 面],(cubeTexture)=> {// 设置纹理的映射方式cubeTexture.mapping = THREE.CubeReflectionMapping;// 创建一个用于天空盒的材质const skyboxMaterial = new THREE.MeshBasicMaterial({envMap: cubeTexture,//环境贴图side: THREE.BackSide //渲染背面});// 创建一个大的立方体作为天空盒const skyboxGeometry = new THREE.BoxGeometry(1000, 1000, 1000);const skybox = new THREE.Mesh(skyboxGeometry, skyboxMaterial);scene.add(skybox);}
);

在上述代码中,我们首先创建了 CubeTextureLoader 实例,通过 setPath 方法设置图片的路径前缀,然后使用 load 方法加载六张分别对应立方体六个面的图片。当加载完成后,我们设置了纹理的映射方式为 THREE.CubeReflectionMapping(用于反射效果),并创建了一个 MeshBasicMaterial 材质,将立方体纹理应用到该材质上,最后创建一个大的立方体作为天空盒添加到场景中。

运行效果:

天空盒示例

CubeTexture 的映射方式

纹理mapping属性控制着纹理在模型表面的映射方式

CubeTexture 有不同的映射方式,常见的有:

  • THREE.CubeReflectionMapping:这种映射方式常用于模拟物体的反射效果,让物体能够反射周围的环境。例如在创建一个金属质感的物体时,使用这种映射方式可以让物体看起来像是反射了周围的场景。
  • THREE.CubeRefractionMapping:用于模拟折射效果,比如创建一个透明的玻璃物体时,通过这种映射方式可以让物体产生折射的视觉效果,仿佛光线穿过了物体。

ps:立方体纹理要求用于六个面的图片是正方形,也就是长宽一样

示例2——反射周围的环境

在示例1基础上我们新建一个光滑的球体使其表面反射周围环境

// 创建 CubeTextureLoader
const cubeTextureLoader = new THREE.CubeTextureLoader();
// 加载立方体纹理的六张图片
// 这里的路径示例请根据实际情况修改
cubeTextureLoader.setPath('textures/');
cubeTextureLoader.load(['px.jpg', // 正 X 面'nx.jpg', // 负 X 面'py.jpg', // 正 Y 面'ny.jpg', // 负 Y 面'pz.jpg', // 正 Z 面'nz.jpg'  // 负 Z 面],(cubeTexture)=> {// 设置纹理的映射方式cubeTexture.mapping = THREE.CubeReflectionMapping;// 创建一个用于天空盒的材质const skyboxMaterial = new THREE.MeshBasicMaterial({envMap: cubeTexture,side: THREE.BackSide //渲染背面});// 创建一个大的立方体作为天空盒const skyboxGeometry = new THREE.BoxGeometry(1000, 1000, 1000);const skybox = new THREE.Mesh(skyboxGeometry, skyboxMaterial);scene.add(skybox);// 创建一个球体几何体const geometry = new THREE.SphereGeometry(1, 32, 32);// 创建一个标准材质const material = new THREE.MeshStandardMaterial({metalness: 1,//金属性roughness: 0.05, //粗糙度envMap:cubeTexture//环境贴图});// 创建球体网格const sphere = new THREE.Mesh(geometry, material);scene.add(sphere);}
);

在这里插入图片描述


5.视频纹理(VideoTexture )

VideoTexture 本质上是 Three.js 对 HTML5 元素的一种封装,它能够实时地将视频内容映射到 3D 模型上,使得模型表面呈现出动态的画面。与普通的静态纹理(如图片纹理)不同,VideoTexture 会随着视频的播放而不断更新,创造出诸如动态广告屏幕、虚拟视频墙等有趣的效果

使用的加载器

VideoTexture

示例

html

<video id="myVideo" autoplay loop muted><source src="your_video_file.mp4" type="video/mp4">
</video>

html文件中创建一个 元素,并设置好视频的源文件、自动播放等属性

js

import * as THREE from 'three';// 获取 HTML 中的视频元素
const video = document.getElementById('myVideo');
// 创建 VideoTexture
const videoTexture = new THREE.VideoTexture(video);
// 创建一个长方体几何体
const geometry= new THREE.BoxGeometry(10, 5,1);
// 创建材质并应用视频纹理
const material = new THREE.MeshBasicMaterial({ map: videoTexture });
const mesh = new THREE.Mesh(geometry, material);const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);scene.add(mesh);
camera.position.z = 10;function animate() {requestAnimationFrame(animate);// 更新视频纹理videoTexture.needsUpdate = true;renderer.render(scene, camera);
}
animate();

请添加图片描述


五、免费纹理资源

免费的纹理资源可以访问Poly Haven网站,该网站不仅有免费纹理资源还有3d模型和全景图片提供下载调试


六、总结

       通过本文的介绍,我们了解了 Three.js 中一些常见的纹理类型及其使用方法,对纹理在 3D 场景构建中的作用有了较为全面的认识。从基础的 Texture 加载和应用,到 CubeTexture 为场景带来的环境映射效果,每一种纹理都有着独特的功能和应用场景。在实际开发中,可以根据具体需求灵活运用这些纹理和属性,打造出独特的 3D 效果。

更多three.js入门知识点请关注该系列教程后续的更新。

相关文章:

Three.js 快速入门教程【十】常见的纹理类型

系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六】相机控件 Or…...

文档识别-C#中英文文档识别接口-PDF文件内容识别API

文档识别接口可满足用户在数字化转型过程中对文档处理的高效、准确需求。翔云文档识别接口以成熟的文字识别技术、自然语言处理技术、图像识别技术为核心&#xff0c;能够将文档上的非可编辑文本转化为可编辑的数据&#xff0c;从而提升信息处理的速度与实现文档数字化管理的准…...

gRPG协议

gRPG协议是一种用于游戏开发的网络通信协议&#xff0c;全称为Game Real-time Protocol。它主要用于实现实时多人游戏中的数据传输和同步。gRPG协议的设计目标是提供低延迟、高可靠性的数据传输&#xff0c;以支持游戏中的实时互动和状态同步。 gRPG协议的特点 低延迟&#x…...

【maven打包错误】 无效的目标发行版:16

maven打包错误 错误截图 About 故事在一个风和日丽的下午&#xff0c;我一如往常的摸鱼&#xff0c;突如其来的事情打乱我的摸鱼节奏&#xff0c;“为什么测试不能用了” &#xff0c;随着前端帅哥一声轻咦&#xff0c;故事便开始了&#xff0c;我检查发现是是磁盘满了&#x…...

Oracle 查询表空间使用情况及收缩数据文件

本文介绍Oracle收缩数据文件的相关操作&#xff0c;运维工作中有时会需要通过收缩数据文件来释放磁盘空间。 数据文件初始化方式&#xff1a; 1.我们创建表空间一般有两种方式初始化其数据文件&#xff0c;即指定初始大小为32G&#xff08;很大的值&#xff09;或指定初始大小为…...

Transformer 代码剖析1 - 数据处理 (pytorch实现)

引言 Transformer 架构自《Attention Is All You Need》论文发表以来&#xff0c;在自然语言处理领域引起了巨大的变革。它摒弃了传统的循环结构&#xff0c;完全基于注意力机制&#xff0c;显著提高了处理序列数据的效率和性能。本文将通过对一个具体的项目代码结构进行详细分…...

Python异常处理面试题及参考答案

目录 什么是 Python 中的异常?程序为什么需要异常处理机制? 解释 BaseException 和 Exception 的区别 Python 的异常处理与传统的错误代码返回机制相比有哪些优势? 列出至少 5 个 Python 内置异常类型并说明触发场景 语法错误 (SyntaxError) 与运行时异常 (Runtime Erro…...

Python多线程知多少

目录 目标 Python版本 官方文档 概述 线程 守护线程 线程同步 事件对象&#xff08;Event Object&#xff09; 实战 创建线程的基本语法 阻塞线程 守护线程 线程同步的方法 互斥锁&#xff08;排他锁&#xff09; 信号量&#xff08;Semaphore&#xff09; 事件…...

C++ Qt常见面试题(8):C++ Qt中的线程同步与互斥

在C++ Qt中,线程同步和互斥通常通过 QMutex 和 QMutexLocker 来实现。线程同步确保多个线程不会同时访问共享资源,而互斥机制通过锁定一个资源,确保在任何给定时刻只有一个线程能够访问它。 以下是一个使用 QMutex 来同步和互斥访问共享资源的详细示例代码: 1. 使用 QMut…...

数字内容个性化推荐的关键是什么?

智能算法交互体系构建 构建数字内容体验的智能推荐系统&#xff0c;本质上是实现数据驱动与算法响应的动态协同。其核心在于建立多维度用户数据与机器学习模型的深度交互链路——通过实时采集用户点击、停留时长、交互路径等行为特征&#xff0c;结合设备属性、场景状态等上下…...

DeepSeek-OpenSourceWeek-第三天-Release of DeepGEMM

DeepGEMM:这是一款专为高效的 FP8(8 位浮点)通用矩阵乘法(GEMMs)而开发的尖端库。GEMMs 是许多 AI 工作负载(尤其是深度学习)中的基本操作。 特点: 支持稠密和 MoE GEMMs:它可以处理标准的稠密矩阵乘法以及混合专家(MoE)模型中使用的矩阵乘法。MoE 是一种神经网络架…...

LeetCode 1472.设计浏览器历史记录:一个数组完成模拟,单次操作均O(1)

【LetMeFly】1472.设计浏览器历史记录&#xff1a;一个数组完成模拟&#xff0c;单次操作均O(1) 力扣题目链接&#xff1a;https://leetcode.cn/problems/design-browser-history/ 你有一个只支持单个标签页的 浏览器 &#xff0c;最开始你浏览的网页是 homepage &#xff0c…...

AI+游戏,正在进行时!

2月&#xff0c;DeepSeek引领的AI浪潮对游戏行业造成了巨大冲击。 2月17日马斯克在社交平台宣布&#xff0c;xAI将成立一家AI游戏工作室&#xff0c;高调宣布两大核心理念&#xff0c;打破大公司的垄断&#xff0c;利用AI重构游戏体验。随后的新闻中还表示&#xff0c;团队计划…...

贪心算法精品题

1.找钱问题 本题的贪心策略在于我们希望就可能的保留作用大的5元 class Solution { public:bool lemonadeChange(vector<int>& bills) {std::map<int ,int> _map;for(auto ch:bills){if(ch 5) _map[ch];else if(ch 10){if(_map[5] 0) return false;else{_m…...

sql server 复制从备份初始化数据

参考 &#xff1a; 从备份初始化订阅&#xff08;事务&#xff09; - SQL Server | Microsoft Learn sql server 复制默认是用快照初始化数据的&#xff0c;也支持从备份初始化数据&#xff0c;参考如上...

【蓝桥杯】1.k倍区间

前缀和 #include <iostream> using namespace std; const int N100010; long long a[N]; int cnt[N]; int main(){int n, m;cnt[0] 1;cin >> n >> m;long long res 0;for(int i 1; i < n; i){scanf("%d", &a[i]);a[i] a[i-1];res cnt…...

Qt互斥锁(QMutex)的使用、QMutexLocker的使用

Qt互斥锁【QMutex】的使用、QMutexLocker的使用 Chapter1 Qt互斥锁(QMutex)的使用、QMutexLocker的使用一、QMutexLocker和QMutex实现示例图二、QMutex和QMutexLocker的关系&#xff08;个人理解&#xff09;三、QMutex使用和QMutexLocker使用1.QMutex的使用2.QMutexLocker的使…...

具身智能(Embodied AI)的物理交互基准测试:构建真实世界的智能体评估体系

文章目录 引言:从虚拟到物理的智能跃迁一、具身智能测试体系设计1.1 评估维度矩阵1.2 测试平台技术栈二、核心测试场景构建2.1 基础运动能力测试集2.2 复杂操作任务设计三、物理仿真引擎关键技术3.1 高精度接触力学模型3.2 传感器噪声模拟四、评估指标体系4.1 量化指标公式4.2…...

Javaweb后端数据库多表关系一对多,外键,一对一

多表关系 一对多 多的表里&#xff0c;要有一表里的主键 外键 多的表上&#xff0c;添加外键 一对一 多对多 案例...

鸿蒙 ArkUI 实现敲木鱼小游戏

敲木鱼是一款具有禅意的趣味小游戏&#xff0c;本文将通过鸿蒙 ArkUI 框架的实现代码&#xff0c;逐步解析其核心技术点&#xff0c;包括动画驱动、状态管理、音效震动反馈等。 一、架构设计与工程搭建 1.1 项目结构解析 完整项目包含以下核心模块&#xff1a; ├── entry…...

【AI大模型】RKNN神经网络计算框架从入门到部署

目录 一、RKNN核心基础认知&#xff08;必学&#xff09; 1.1 什么是RKNN 1.2 RKNN核心工具链组成 1.3 学习前提&#xff08;必备基础&#xff09; 二、环境搭建&#xff08;分步实操&#xff0c;零踩坑&#xff09; 2.1 PC端环境搭建&#xff08;Ubuntu 20.04&#xff09…...

沃虎电子:音频变压器在信号隔离与音频接口中的选型与应用解析

音频变压器作为一种传统的磁性元件&#xff0c;在现代电子设计中依然扮演着不可替代的角色。无论是在广播级音频设备、高端音响、电话接口&#xff0c;还是在工业现场的信号隔离中&#xff0c;音频变压器都能提供出色的共模抑制、地环路隔离和阻抗匹配功能。本文从工程实践出发…...

如何快速解决Windows快捷键冲突:完整实用指南

如何快速解决Windows快捷键冲突&#xff1a;完整实用指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否遇到过精心…...

Chord视频理解工具开源可部署:支持国产昇腾/寒武纪平台适配路线

Chord视频理解工具开源可部署&#xff1a;支持国产昇腾/寒武纪平台适配路线 1. 引言&#xff1a;让AI看懂视频&#xff0c;本地部署更安心 你有没有遇到过这样的场景&#xff1f;手头有一段视频&#xff0c;想快速知道里面发生了什么&#xff0c;或者想精准找出某个特定的人或…...

linux内核 - request_irq 介绍

一&#xff1a;概述GPU在执行任务时&#xff0c;本质上是一个异步设备&#xff0c;由CPU提交任务&#xff0c;GPU执行&#xff0c;那么GPU完成任务后&#xff0c;CPU怎么知道&#xff1f;答案是GPU触发 IRQ&#xff0c;让CPU收到中端信号。 另外有一个核心问题是&#xff0c;硬…...

Bypass Paywalls Clean技术实现:浏览器扩展的付费内容访问完整方案

Bypass Paywalls Clean技术实现&#xff1a;浏览器扩展的付费内容访问完整方案 Bypass Paywalls Clean是一款基于Chrome扩展架构的智能内容访问工具&#xff0c;通过请求头优化、脚本注入和动态解析技术&#xff0c;为技术爱好者和进阶用户提供突破网站付费限制的深度解决方案&…...

两步验证与OAuth 2.0:http-api-guide安全认证深度解析

两步验证与OAuth 2.0&#xff1a;http-api-guide安全认证深度解析 【免费下载链接】http-api-guide 项目地址: https://gitcode.com/gh_mirrors/ht/http-api-guide 在当今数字化时代&#xff0c;API安全认证是保护用户数据和系统资源的关键环节。http-api-guide作为一份…...

MsServer 2000-2016 客户端对应驱动文件

连接ms server&#xff0c;需要安装ms数据库驱动文件&#xff0c;下面是对应关系 早期版本是Nativ client包 微软OLE DB包 微软ODBC包 &#xff08;包括v11 13 17 18 x86和x64合集&#xff09; 他奶奶的csdn&#xff0c;上传的资源自动强制设置成vip付费的&#xff0c;真不要…...

开源组件审计:OpenClaw+SecGPT-14B自动生成SBOM报告

开源组件审计&#xff1a;OpenClawSecGPT-14B自动生成SBOM报告 1. 为什么需要自动化SBOM生成 作为一名长期在开源生态中摸爬滚打的开发者&#xff0c;我经历过太多次"依赖地狱"——某个深夜部署时突然发现项目引用的老旧库存在高危漏洞&#xff0c;或是收到法务部门…...

Serverless 架构设计与实践:构建高效的无服务器应用

Serverless 架构设计与实践&#xff1a;构建高效的无服务器应用 前言 作为一个在数据深渊里捞了十几年 Bug 的女码农&#xff0c;我深知 Serverless 架构在现代云原生应用中的重要性。随着云计算的发展&#xff0c;Serverless 架构以其按需付费、自动扩缩容等特性&#xff0c…...