三维数据可视化与表面重建:Marching Cubes算法的原理与应用
1. 引言
随着现代医学影像技术的飞速发展,三维数据的可视化与重建已成为医学研究、临床诊断和手术规划的重要工具。在众多三维重建算法中,Marching Cubes算法因其高效、稳定的特性成为从离散数据场中提取等值面的经典方法。本报告将深入探讨Marching Cubes算法的原理、实现步骤及其在医学影像领域的广泛应用。
2. 背景知识
Marching Cubes算法由William E. Lorensen和Harvey E. Cline于1987年提出,是计算机图形学领域的里程碑式创新。该算法专门用于从三维离散数据场中提取等值面,已广泛应用于医学可视化领域,特别是在CT扫描、MRI扫描等三维重建中发挥着不可替代的作用。
算法的主要贡献在于其将复杂的体数据转化为清晰可见的三维表面模型,为医生和研究人员提供了直观理解复杂解剖结构的途径。例如,在脑部研究中,通过Marching Cubes算法可以从脑磁图数据生成精确的大脑皮层模型,进一步支持源定位和电磁场仿真等高级分析。
具体来说,在脑磁图源定位研究中,通常需要基于分割结果生成网格模型,再通过这些网格生成有限元模型,实现从几何建模到物理仿真的转化。这一过程对于理解大脑的电生理活动具有重要意义。
3. 等值面的数学表达
在开始探讨算法之前,首先需要理解等值面的概念。等值面是三维空间中函数值相同的点的集合,可以通过以下数学表达式定义:
{ ( x , y , z ) ∣ f ( x , y , z ) = c } \{(x,y,z) \mid f(x,y,z) = c\} {(x,y,z)∣f(x,y,z)=c}
其中, f ( x , y , z ) f(x,y,z) f(x,y,z)表示三维空间中任一点 ( x , y , z ) (x,y,z) (x,y,z)处的标量场值(如密度、温度或CT值), c c c为给定的常数,称为等值。这一概念可类比于地形图中的等高线,只不过等值面是三维的表面而非二维的曲线。
在医学影像中,等值面通常用于区分不同的组织类型。例如,在CT扫描中,骨骼与软组织具有不同的CT值,通过选择适当的等值可以提取出骨骼结构的三维表面。
4. Marching Cubes算法原理
4.1 基本思想
Marching Cubes算法的基本思想是将三维数据场划分为一系列小立方体(体素),然后逐个处理每个体素,确定等值面如何与该体素相交。该算法基于一个关键假设:沿体素各边的数据场是连续变化的。在这一假设下,如果体素某条边的两个端点一个大于等值面值,另一个小于等值面值,则这条边必然与等值面相交,且只有一个交点。
从直观上理解,Marching Cubes算法的过程就是用无数小立方体对空间进行离散化采样,通过这些小立方体内生成的三角面片来近似重建等值面。立方体越小(采样密度越高),重建的表面就越精确,但计算成本也相应增加。
4.2 体素与等值面的交互模式
每个体素有8个顶点,每个顶点相对于等值面有两种状态:高于等值(标记为1)或低于等值(标记为0)。因此,一个体素与等值面的交互理论上有 2 8 = 256 2^8=256 28=256种可能的配置。然而,考虑到旋转和对称性,这256种配置可以简化为15种基本拓扑模式(加上一种全在等值面内或全在等值面外的情况)。
对于每种配置,算法预定义了相应的三角面片生成方案,通过查表的方式快速确定应该如何连接交点以形成三角形网格。
5. Marching Cubes算法实现步骤
5.1 数据预处理与初始化
实现Marching Cubes算法的第一步是对原始三维数据进行预处理。这包括数据去噪、归一化以及将数据加载到适当的数据结构中。预处理的质量直接影响到最终重建表面的准确性和平滑度。
5.2 体素提取与状态判断
算法从预处理后的三维数据中逐一提取体素,每个体素包含8个顶点。对于每个体素,需要记录:
- 顶点的坐标位置
- 顶点的标量场值
- 顶点相对于等值面的状态(高于或低于)
基于8个顶点的状态,可以构建一个8位二进制数(称为体素状态码),用于索引预计算的查找表。
5.3 查找表设计
Marching Cubes算法使用两个关键的查找表:
- 边表(edgeTable):指示哪些边与等值面相交
- 三角表(triTable):指示如何连接交点形成三角形
这些表格是预先计算好的,大大提高了算法的执行效率。通过体素状态码,可以直接查询应当在哪些边上计算交点,以及如何将这些交点连接成三角形。
5.4 交点计算与插值
对于与等值面相交的每条边,算法需要计算交点的精确位置。这是通过线性插值实现的:
P = P 1 + ( P 2 − P 1 ) × ( i s o v a l u e − V 1 ) ( V 2 − V 1 ) P = P_1 + (P_2 - P_1) \times \frac{(isovalue - V_1)}{(V_2 - V_1)} P=P1+(P2−P1)×(V2−V1)(isovalue−V1)
其中, P 1 P_1 P1和 P 2 P_2 P2是边的两个端点, V 1 V_1 V1和 V 2 V_2 V2是对应的标量场值, i s o v a l u e isovalue isovalue是等值面的值。这种插值确保了生成的表面具有高精度。
5.5 法向量计算
为了实现光照渲染和视觉增强,需要计算表面的法向量。法向量通常通过中心差分法计算体素顶点处的梯度,然后对交点位置的法向量进行插值:
∇ f ( x , y , z ) = ( ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z ) \nabla f(x,y,z) = \left( \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z} \right) ∇f(x,y,z)=(∂x∂f,∂y∂f,∂z∂f)
精确的法向量计算对于实现逼真的表面渲染至关重要,特别是在医学可视化中,精确的光照和阴影可以增强细节的可见性。
5.6 三角面片生成与优化
最后一步是根据计算的交点和法向量生成三角面片。对于每个体素,根据其配置可能生成0到5个三角形。将所有体素生成的三角形合并,就形成了完整的等值面网格模型。
生成的初始网格通常需要进一步优化,包括:
- 网格简化:减少三角形数量同时保持几何精度
- 平滑处理:消除阶梯状伪影
- 网格修复:处理可能的拓扑错误
6. 算法优化与变种
经典的Marching Cubes算法存在一些固有的限制,例如可能产生拓扑歧义和孔洞。为了解决这些问题,研究者提出了多种改进算法:
- Asymptotic Decider:解决了原始算法中的拓扑歧义问题
- Dual Contouring:能够更好地保持特征边和角
- Marching Tetrahedra:通过将立方体细分为四面体来消除拓扑问题
这些变种算法在特定应用场景中各有优势,可根据具体需要选择合适的实现方式。
7. 应用案例
7.1 医学影像可视化
Marching Cubes算法在医学影像可视化中应用广泛:
- CT扫描数据重建:用于骨骼、血管等硬组织的精确重建
- MRI数据可视化:用于脑部结构、软组织的三维重建
- 超声数据处理:胎儿成像和心脏功能研究
在神经外科手术规划中,通过Marching Cubes算法从术前影像数据重建患者的颅骨、脑部结构和病变区域,为医生提供直观的三维参考。
7.2 脑磁图源定位研究
在脑磁图(MEG)和脑电图(EEG)源定位研究中,Marching Cubes算法扮演着重要角色:
- 首先基于MRI数据分割出大脑皮层、颅骨等组织
- 使用Marching Cubes算法从分割结果生成精确的三维网格模型
- 基于网格模型构建有限元模型用于电磁场仿真
- 进行源定位计算,确定神经活动的精确位置
这一过程实现了从解剖结构到功能定位的完整工作流,为理解大脑工作机制提供了重要工具。
8. 总结与展望
Marching Cubes算法作为三维数据可视化的经典方法,在过去三十多年中经受住了时间的考验。它将复杂的体数据转化为直观的表面表示,极大地促进了医学影像领域的发展。随着计算机硬件性能的提升,该算法已经能够实现实时重建和渲染,为临床应用提供了更大的可能性。
未来的研究方向将可能集中在以下几个方面:
- 结合深度学习技术实现更智能的等值面提取
- 发展多尺度Marching Cubes算法以处理超大数据集
- 针对特定组织类型的专用优化算法
- 增强实时交互式可视化能力
随着计算技术的不断进步和医学影像设备分辨率的提高,Marching Cubes算法及其变种将继续在医学可视化领域发挥关键作用,为医学研究和临床诊疗提供更强大的技术支持。
相关文章:
三维数据可视化与表面重建:Marching Cubes算法的原理与应用
1. 引言 随着现代医学影像技术的飞速发展,三维数据的可视化与重建已成为医学研究、临床诊断和手术规划的重要工具。在众多三维重建算法中,Marching Cubes算法因其高效、稳定的特性成为从离散数据场中提取等值面的经典方法。本报告将深入探讨Marching Cu…...
网络变压器的主要电性参数与测试方法(2)
Hqst盈盛(华强盛)电子导读:网络变压器的主要电性参数与测试方法(2).. 今天我们继续来看看网络变压器的2个主要电性参数与它的测试方法: 1. 线圈间分布电容Cp:线圈间杂散静电容 测试条件:100KHz/0.1…...
端到端自动驾驶——cnn网络搭建
论文参考:https://arxiv.org/abs/1604.07316 demo 今天主要来看一个如何通过图像直接到控制的自动驾驶端到端的项目,首先需要配置好我的仿真环境,下载软件udacity: https://d17h27t6h515a5.cloudfront.net/topher/2016/November…...
# 【Unity】【游戏开发】赛车游戏中碰撞加速的实现方法
背景 在赛车类游戏开发中,常常需要实现赛车在碰撞某些道具或对象后加速的功能。例如,当赛车经过加速带或碰撞加速道具时,速度会瞬间增加,使游戏更具动态性和可玩性。本文将介绍一种通用的实现方式,并分析其逻辑。 分析 加速的核心逻辑如下: 判断碰撞条件:检测赛车是否…...
Dubbo本地服务调试
本地服务之间调试 参考这个文档: Dubbo本地调试 注意事项 本地主服务调用本地另外一个子服务,dubbo端口号与子服务的WEB端口号不一致。要查看子服务dubbo的配置文件,设置的rpc端口号是多少主服务中,最好在dubbo的配置文件&…...
SqlSugar 语法糖推荐方式
//方式1:var dd _repository._Db.Queryable<ConfigAggregateRoot, UserRoleEntity>((o, p) > o.Id p.Id).Select((o, p) > new{o.Id,o.Remark,p.RoleId,});//方式2:不推荐使用,建议优先使用 Lambda 表达式,因为它更…...
爬虫逆向实战小记——解决captcha滑动验证码
注意!!!!某XX网站实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! IGh0dHBzOi8vY2FwdGNoYS5ydWlqaWUuY29tLmNuLw 第一步: 分析请求网址和响应内容 (1)通过观察,滑…...
printf 与前置++、后置++、前置--、后置-- 的关系
# 前置和前置-- 先看一段代码 大家是不是认为printf输出的是 2 3 3 2 1 1 但是实际输出的是 3 3 3 1 1 1 在这两行printf函数代码里,编译器会先计算 a 和 --a 的值,然后再 从右向左 开始输出。 printf函数中,如果有多个…...
【Web前端开发】---HTML标签及标签属性
1、单标签与双标签 HTML标签分为:双标签、单标签。 例如: <marquee>你好</marquee> 示例: 双标签:<标签名>标签体</标签名> 单标签:<标签名/>(注意:/可以省…...
【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析
DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…...
【赵渝强老师】监控Redis
对运行状态的Redis实例进行监控是运维管理中非常重要的内容,包括:监控Redis的内存、监控Redis的吞吐量、监控Redis的运行时信息和监控Redis的延时。通过Redis提供的监控命令便能非常方便地实现对各项指标的监控。 一、监控Redis的内存 视频讲解如下 【…...
RocketMQ顺序消费机制
RocketMQ的顺序消费机制通过生产端和消费端的协同设计实现,其核心在于局部顺序性,即保证同一队列(MessageQueue)内的消息严格按发送顺序消费。以下是详细机制解析及关键源码实现: 一、顺序消费的核心机制 1. 生产端路…...
新装的conda 以及pycharm未能正确初始化,或conda环境变量配置错误问题解决!!!
Windows PowerShell 版权所有(C) Microsoft Corporation。保留所有权利。 安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows PS E:\Dev_project\MyProjects> conda cativate py12 usage: conda-script.py [-h…...
通往 AI 之路:Python 机器学习入门-线性代数
2.1 线性代数(机器学习的核心) 线性代数是机器学习的基础之一,许多核心算法都依赖矩阵运算。本章将介绍线性代数中的基本概念,包括标量、向量、矩阵、矩阵运算、特征值与特征向量,以及奇异值分解(SVD&…...
2025国家护网HVV高频面试题总结来了03(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 0x1 高频面试题第一套 0x2 高频面试题第二套 0x3 高频面试题第三套 0x4高频面试题第四套 0x1 高频面试题…...
内容中台与企业内容管理架构解析
内容中台技术架构解析 内容中台的技术架构以数据资产化和服务API化为核心,通过解耦内容生产与消费环节构建数字化基础设施。其架构通常包含统一内容池、智能处理引擎和开放接口层三大模块:统一内容池通过标准化元数据模型对多源异构内容进行结构化存储&…...
希音(Shein)前端开发面试题集锦和参考答案
用 Node 写过什么工具或 npm 包 在实际开发中,使用 Node 编写过多种实用工具和 npm 包。 自动化构建工具 开发了一个简单的自动化构建工具,用于处理前端项目的资源压缩和合并。在前端项目中,为了优化性能,需要对 CSS 和 JavaScript 文件进行压缩,减少文件体积,同时将多个…...
《一个端粒到端粒的参考基因组为木瓜中五环三萜类化合物生物合成提供了遗传学见解》
A telomere-to-telomere reference genome provides genetic insight into the pentacyclic triterpenoid biosynthesis in Chaenomeles speciosa Amplification of transposable elements 转座元件的扩增 Sequence mining disclosed that TEs were one main event in the ex…...
使用easyocr、PyPDF2对图像及PDF文档进行识别
一、概述 本 Python 脚本的主要功能是对当前目录及其子目录下的图片和 PDF 文件进行光学字符识别(OCR)处理。它使用 easyocr 库处理图片中的文字,使用 PyPDF2 库提取 PDF 文件中的文本,并将处理结果保存为文本文件。同时ÿ…...
用AI学安卓游戏开发1——控制小球上下左右移动2
业务逻辑:初始化小球随机自有移动,遇到屏幕边缘反弹,摇杆介入后小球停止自有移动,按照摇杆控制方向移动。 https://download.csdn.net/download/AnalogElectronic/90453667 https://download.csdn.net/download/AnalogElectronic…...
计算机毕业设计SpringBoot+Vue.js医院挂号就诊系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
说一下redis事务底层原理
Redis事务 1. 事务的基本流程 Redis 事务通过 MULTI、EXEC、WATCH 等命令实现,底层原理可以分为以下几个步骤: (1) MULTI 命令 当客户端发送 MULTI 命令时,Redis 会将客户端标记为“事务模式”。在事务模式下,客户端发送的所有…...
eNSP中AR2220、AR201、AR1220、AR2240、AR3260、Router、NE40E、NE5000E、NE9000、CX路由器学习笔记
eNSP中常见华为路由器型号的接口特性详解及横向对比,重点关注接口类型、扩展能力和适用场景: 缩写解释: LPU:Line Processing Unit(线路处理单元) SPU:Service Processing Unit(业务…...
FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)
文章目录 FastGPT 引申:借鉴 FastGPT 基于MySQL ES 实现知识库(含表结构以及核心代码)一、整体思路二、存储结构2.1 MySQL 表结构(1) knowledge_base_dataset(2) knowledge_base_data(3) knowledge_base_index(4) ai_kb_relation 2.2 Elasti…...
WPF+WebView 基础
1、基于.NET8,通过NuGet添加Microsoft.Web.WebView2。 2、MainWindow.xaml代码如下。 <Window x:Class"Demo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/win…...
skia的学习与研究
最近再研究skia,特地发一篇文章来记录一下。Skia版本更新非常频繁,大概每四周就会创建一个新版本,此版本持续维护六周左右就会被标记为稳定分支; skia三套渲染: 无gpu硬件如嵌入式设备,使用CPU渲染,使用…...
Linux--基础命令3
大家好,今天我们继续学习Linux的基础命令 mv命令 mv命令是move的缩写,可以用来移动文件或者将文件改名 move(rename) files,经常⽤来备份⽂件或者目录 语法: mv [ 选项 ] 源⽂件或目录 目标⽂件或目录 mv src[文件、目录] dst[路径、文…...
[LeetCode]day33 150.逆波兰式求表达值 + 239.滑动窗口最大值
逆波兰式求表达值 题目链接 题目描述 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 ‘’、‘-’、‘*’ 和 ‘/’ 。 每个操作数(运…...
记一次误禁用USB导致键盘鼠标失灵的修复过程
背景说明 在电脑上插入了一个USB hub,然后弹窗提示:“集线器端口上出现电涌”,点开让选择“重置”或者“关闭”,不小心点了关闭,结果这个usb口就被关了,再插任何东西都没反应,找了很多办法都恢…...
node项目前后端密码加密传输及存储方案
前端:使用crypto-js库的SHA256算法,包含用户注册时使用的邮箱加上自定义的secret key生成盐值,接着使用PBKDF2算法进行加密。最后将加密后的密码传给后端。 import CryptoJS from "crypto-js";export const encryptPassword (ema…...
GIt分支合并
分支 1: C0 → C1 → C2 → C3(最新) 分支 2: C0 → C4 → C5 → C6(最新)1. 找到共同父节点 C0 Git 会先找出 branch1 和 branch2 的共同祖先节点 C0。这通常借助 git merge-base 命令达成,虽然在日常使用 git merge…...
Python 入门教程(2)搭建环境 | 2.3、VSCode配置Python开发环境
文章目录 一、VSCode配置Python开发环境1、软件安装2、安装Python插件3、配置Python环境4、包管理5、调试程序 前言 Visual Studio Code(简称VSCode)以其强大的功能和灵活的扩展性,成为了许多开发者的首选。本文将详细介绍如何在VSCode中配置…...
linux一些使用技巧
linux一些使用技巧 文件名称和路径的提取切换用户执行当前脚本一行演示单引号与双引号的使用curl命令仅输出响应头信息,不输出body体文件名称和路径的提取 文件路径为 /tmp/tkgup/test.sh 方式获取文件名获取文件路径获取文件全路径方式一basename ${file}dirname ${file}real…...
GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)
目录 文章目录 目录1960s~1999:GPU 的诞生:光栅化(Rasterization)3D 渲染算法的硬件化实现之路学术界算法研究历程工业界产品研发历程光栅化技术原理光栅化技术的软件实现:OpenGL 3D 渲染管线设计1. 顶点处理ÿ…...
chrome Vue.js devtools 提示不支持该扩展组件,移除
可能是版本不兼容,可以重新安装,推荐网址极简插件官网_Chrome插件下载_Chrome浏览器应用商店 直接搜索vue,下载旧版,vue2、vue3都支持,上面那个最新版本试了下,vue2的肯定是不能用...
大模型工程师学习日记(十):基于 LangChain 构建向量存储和查询 Qdrant
Qdrant介绍 Qdrant(读作:quadrant /kwɑdrənt/ n. 象限;象限仪;四分之一圆)是一个向量相似度搜索引擎。它提供了一个生产就绪的服务,具有方便的 API 来存储、搜索和管理点 - 带有附加载荷的向量。Qdrant专…...
Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程
Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程 目录 概述 什么是拦截器(Interceptor)?什么是过滤器(Filter)?两者的核心区别 使用场景 拦截器的典…...
ffmpeg源码编译支持cuda
1.安装cuda CUDA Toolkit 11.3 Downloads | NVIDIA Developer 在选择组件的时候,将CUDA中的Nsight VSE和Visual Studio Integration取消勾选 不然会安装失败 2.编译ffmpeg 把cuda编译宏定义开启,再编译avcodec 3.编译livavutil报错struct "Cuda…...
【Linux 系统层面应急响应并分析日志溯源的流程】
Linux 层面响应安全事件并分析日志溯源的流程 一、事件响应核心流程1. 初步隔离与现场保护2. 关键日志收集与备份 二、日志分析工具链与溯源步骤1. 基础日志分析工具2. 高级日志分析框架3. 恶意行为深度检测4. 时间线重构工具 三、关键注意事项1. 日志可信度验证2. 攻击者反取证…...
【笔记ing】python
1 Python基础概念及环境搭建 1.1 python简介及发展史 之父Guido van Rossum。ABC语言的替代品。Python提供了高效的数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释性语言的本质,使之成为多数平台上写脚本和快速开发应…...
QT 作业 day4
作业 代码 Widget.h class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:// 槽函数void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui; }; #endif Widget.cpp Widget::Widget(QW…...
flink和yarn和mpp架构区别
为了全面理解 Flink 架构、YARN 架构和 MPP 架构的区别,我们从多个维度进行分析。以下是详细的对比: 1. 设计目标 架构设计目标Flink实时数据流处理和批处理,支持低延迟、高吞吐量的实时分析。YARN作为 Hadoop 的资源管理框架,负…...
DeepSeek崛起:如何在云端快速部署你的专属AI助手
在2025年春节的科技盛宴上,DeepSeek因其在AI领域的卓越表现成为焦点,其开源的推理模型DeepSeek-R1擅长处理多种复杂任务,支持多语言处理,并通过搜索引擎获取实时信息。DeepSeek因其先进的自然语言处理技术、广泛的知识库和高性价比…...
高频 SQL 50 题(基础版)_1141. 查询近30天活跃用户数
1141. 查询近30天活跃用户数 select activity_date day,count(distinct user_id) active_users from Activity where (activity_date<2019-07-27 and activity_date>DATE_sub(2019-07-27,INTERVAL 30 DAY)) group by(activity_date)...
DRMPlaneType里有VIG, DMA,和RGB三种类型,这是不是说明DRMPlane就是代表DPU里的Pipeline
DRMPlane 代表了 DPU(Display Processing Unit) 里的 Pipeline(数据通路),不同的 DRMPlaneType 对应 DPU 内部的不同 渲染/合成管线。 📌 DRMPlaneType 与 DPU Pipeline 的关系 在 高通(Qualco…...
not support ClassForName
com.alibaba.fastjson2.JSONException: not support ClassForName : java.lang.String, you can config JSONReader.Feature.SupportClassForName 官方说明中提到默认关闭, 可通过配置开启 JSON.config(JSONReader.Feature.SupportClassForName);...
为什么要学习数据结构与算法
今天,我向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。 1、为什么要学习数据结构与算法 总的来说,数据结构与算法是: 求职的“敲门砖”…...
从浏览器输入网址,到页面展示都发生了什么?
查询缓存 其实从填写上url按下回车后,我们就进入了第一步就是 DNS 解析过程,首先需要找到这个 url 域名的服务器 ip,为了寻找这个 ip,浏览器首先会寻找缓存,查看缓存中是否有记录缓存的查找记录为:浏览器缓存>系统…...
Octave3D 关卡设计插件
课程参考链接 这位大佬有在视频合集中有详细的讲解,个人体验过,感觉功能很强大 https://www.bilibili.com/video/BV1Kq4y1C72P/?share_sourcecopy_web&vd_source0a41d8122353e3e841ae0a39908c2181 Prefab资源管理 第一步 在场景中创建一个空物体…...
JavaWeb后端基础(4)
这一篇就开始是做一个项目了,在项目里学习,我主要记录在学习过程中遇到的问题,以及一些知识点 Restful风格 一种软件架构风格 在REST风格的URL中,通过四种请求方式,来操作数据的增删改查。 GET : 查询 …...