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

window 显示驱动开发-报告图形内存(四)

检索图形内存数字

创建图形应用程序的软件开发人员可以使用从 Windows Vista 开始的 Microsoft DirectX 版本 10 API 在运行 Windows 显示驱动程序模型 (WDDM) 显示驱动程序的计算机上检索准确的图形内存数集。 以下步骤演示如何检索图形内存编号:

由于新的图形内存报告仅在运行 Windows 显示驱动程序模型 (WDDM) 显示驱动程序的计算机上可用,因此应用程序必须首先调用以下函数以确认驱动程序模型

HasWDDMDriver()
{LPDIRECT3DCREATE9EX pD3D9Create9Ex = NULL;HMODULE             hD3D9          = NULL;hD3D9 = LoadLibrary( L"d3d9.dll" );if ( NULL == hD3D9 ) {return false;}////  Try to create a IDirect3D9Ex interface (also known as a DX9L //  interface).//  This interface can only be created if the driver is written //  according to the Windows Display Driver Model (WDDM).//pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress (hD3D9, "Direct3DCreate9Ex" );return pD3D9Create9Ex != NULL;
}

 检索图形内存信息的 DirectX 应用程序开发指南

在 Windows Vista 及更高版本中,使用 WDDM 显示驱动程序的计算机可以通过 DirectX API 检索准确的图形内存信息。以下是开发图形应用程序时获取这些数据的完整方法:

1. 验证 WDDM 驱动程序模型

在尝试检索图形内存信息前,必须确认系统正在使用 WDDM 驱动程序:

#include <windows.h>
#include <dxgi.h>
#include <d3d11.h>bool IsWDDMDriver()
{IDXGIFactory* pFactory = nullptr;if (FAILED(CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&pFactory))){return false;}IDXGIAdapter* pAdapter = nullptr;if (FAILED(pFactory->EnumAdapters(0, &pAdapter))){pFactory->Release();return false;}DXGI_ADAPTER_DESC desc;if (FAILED(pAdapter->GetDesc(&desc))){pAdapter->Release();pFactory->Release();return false;}pAdapter->Release();pFactory->Release();// WDDM 1.0+ 驱动程序会在描述中包含特定信息return true;
}

  2. 使用 DirectX 10/11 API 获取内存信息

 基本内存信息 (DXGI_ADAPTER_DESC)

void GetBasicVideoMemoryInfo()
{IDXGIFactory* pFactory = nullptr;CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&pFactory);IDXGIAdapter* pAdapter = nullptr;pFactory->EnumAdapters(0, &pAdapter);DXGI_ADAPTER_DESC adapterDesc;pAdapter->GetDesc(&adapterDesc);printf("显卡描述: %S\n", adapterDesc.Description);printf("专用显存: %.2f GB\n", adapterDesc.DedicatedVideoMemory / 1024.0 / 1024.0 / 1024.0);printf("专用系统内存: %.2f GB\n", adapterDesc.DedicatedSystemMemory / 1024.0 / 1024.0 / 1024.0);printf("共享系统内存: %.2f GB\n", adapterDesc.SharedSystemMemory / 1024.0 / 1024.0 / 1024.0);pAdapter->Release();pFactory->Release();
}

高级内存信息 (Windows 10+ 使用 IDXGIAdapter3)

对于 Windows 10 及更高版本,可以使用更详细的查询方法:

void GetAdvancedVideoMemoryInfo()
{IDXGIFactory1* pFactory = nullptr;CreateDXGIFactory1(__uuidof(IDXGIFactory1), (void**)&pFactory);IDXGIAdapter1* pAdapter = nullptr;pFactory->EnumAdapters1(0, &pAdapter);IDXGIAdapter3* pAdapter3 = nullptr;if (SUCCEEDED(pAdapter->QueryInterface(__uuidof(IDXGIAdapter3), (void**)&pAdapter3)){DXGI_QUERY_VIDEO_MEMORY_INFO localMemoryInfo;pAdapter3->QueryVideoMemoryInfo(0, DXGI_MEMORY_SEGMENT_GROUP_LOCAL, &localMemoryInfo);DXGI_QUERY_VIDEO_MEMORY_INFO nonLocalMemoryInfo;pAdapter3->QueryVideoMemoryInfo(0, DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL, &nonLocalMemoryInfo);printf("本地内存段(显存):\n");printf("  当前使用量: %.2f MB\n", localMemoryInfo.CurrentUsage / 1024.0 / 1024.0);printf("  当前预算: %.2f MB\n", localMemoryInfo.Budget / 1024.0 / 1024.0);printf("  可用保留: %.2f MB\n", localMemoryInfo.AvailableForReservation / 1024.0 / 1024.0);printf("  当前保留: %.2f MB\n", localMemoryInfo.CurrentReservation / 1024.0 / 1024.0);printf("非本地内存段(系统共享内存):\n");printf("  当前使用量: %.2f MB\n", nonLocalMemoryInfo.CurrentUsage / 1024.0 / 1024.0);printf("  当前预算: %.2f MB\n", nonLocalMemoryInfo.Budget / 1024.0 / 1024.0);pAdapter3->Release();}pAdapter->Release();pFactory->Release();
}

 3. 处理不同 Windows 版本的兼容性

void GetVideoMemoryInfoCompatible()
{if (IsWindows10OrGreater()){// Windows 10+ 使用更详细的查询GetAdvancedVideoMemoryInfo();}else{// Windows Vista/7/8 使用基本查询GetBasicVideoMemoryInfo();}
}

 4. 应用程序内存管理建议

  1. 基于预算分配

    // 检查是否有足够内存预算
    DXGI_QUERY_VIDEO_MEMORY_INFO memoryInfo;
    pAdapter3->QueryVideoMemoryInfo(0, DXGI_MEMORY_SEGMENT_GROUP_LOCAL, &memoryInfo);if (requiredMemory > memoryInfo.Budget - memoryInfo.CurrentUsage)
    {// 内存不足,需要调整资源或显示警告
    }

    2.内存压力事件处理

    // 注册内存事件通知 (Windows 10+)
    pAdapter3->RegisterVideoMemoryBudgetChangeNotificationEvent(hEvent, &pdwCookie);

    3.多GPU系统处理

    // 枚举所有适配器
    IDXGIAdapter* pAdapter = nullptr;
    for (UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i)
    {// 获取每个适配器的信息
    }

    5. 错误处理和回退机制

    try 
    {GetVideoMemoryInfoCompatible();
    }
    catch (const std::exception& e)
    {// 记录错误并使用保守的默认值printf("获取图形内存信息失败: %s\n", e.what());printf("使用保守内存估计...\n");// 设置默认值或禁用高级图形功能
    }

    应用程序确定显示驱动程序模型为 WDDM 后,应用程序可以使用新的 DirectX 版本 10 API 获取图形内存编号。 应用程序从以下 DXGI_ADAPTER_DESC 数据结构中获取图形内存数字,该结构存在于 Dxgi.h 中,并包含在 DirectX 软件开发工具包 (SDK) 中。

typedef struct DXGI_ADAPTER_DESC {WCHAR Description[ 128 ];UINT VendorId;UINT DeviceId;UINT SubSysId;UINT Revision;SIZE_T DedicatedVideoMemory;SIZE_T DedicatedSystemMemory;SIZE_T SharedSystemMemory;LUID AdapterLuid;} DXGI_ADAPTER_DESC;

由于在 Windows Vista 和更高版本的桌面和 DirectX 游戏中广泛使用图形,因此在 Windows Vista 及更高版本上运行的软件应能够准确确定可用图形内存量。 WDDM 管理图形内存本身的虚拟化,并确保准确报告图形内存的各个方面。 应用程序开发人员和软件供应商应利用 DirectX 版本 10 API 在具有 Windows Vista 显示驱动程序的计算机上检索准确的图形内存值集。

相关文章:

window 显示驱动开发-报告图形内存(四)

检索图形内存数字 创建图形应用程序的软件开发人员可以使用从 Windows Vista 开始的 Microsoft DirectX 版本 10 API 在运行 Windows 显示驱动程序模型 (WDDM) 显示驱动程序的计算机上检索准确的图形内存数集。 以下步骤演示如何检索图形内存编号&#xff1a; 由于新的图形内…...

精益数据分析(60/126):移情阶段的终极追问——如何用结构化访谈挖掘真实需求

精益数据分析&#xff08;60/126&#xff09;&#xff1a;移情阶段的终极追问——如何用结构化访谈挖掘真实需求 在创业的移情阶段&#xff0c;客户访谈的深度决定了需求洞察的准确度。今天&#xff0c;我们结合《精益数据分析》的方法论&#xff0c;探讨如何通过“追问技巧”…...

主流快递查询API横向对比:快递100快递鸟菜鸟物流接口差异解析

主流快递查询API横向对比&#xff1a;快递100/快递鸟/菜鸟物流接口差异解析 一、核心功能与适用范围 菜鸟API 核心功能&#xff1a;物流信息查询、电子面单打印、智能仓储管理、跨境物流服务&#xff0c;整合阿里生态资源&#xff08;如淘宝、天猫订单直接对接&#xff09;。…...

c++从入门到精通(四)--动态内存,模板与泛型编程

文章目录 动态内存直接管理内存Shared_ptr类Unique_ptrWeak_ptr动态数组allocator类文本查询程序 模板与泛型编程定义模板函数模板类模板模板参数成员模板控制实例化 模板实参推断重载与模板可变参数模板模板特例化 动态内存 c中动态内存的管理是通过new和delete运算符来实现的…...

反病毒反垃圾U-Mail邮件系统从容应对

在数字化时代&#xff0c;电子邮件依然是企业沟通的核心工具。然而&#xff0c;垃圾邮件、病毒邮件和钓鱼邮件等安全威胁&#xff0c;如同潜伏在暗处的幽灵&#xff0c;随时可能侵蚀企业的信息安全。因此&#xff0c;企业需要构建一套严密的邮件安全防御体系&#xff0c;才能有…...

第一天的尝试

目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 可能我们会失败&#xff0c;但是人生容错率挺高的&#xff0c;你没必要活成万众瞩目的样子&#xff0c;我们也想要这样的生活&#xff0c;但是我们要付出努力和时间&#xff0c;所以当情绪来…...

GUI图形化演示

概述 Swing组件通常被称为“轻量级组件”,他完全由Java编写&#xff0c;不依赖操作系统语言&#xff0c;他的类继承关系如下&#xff1a; Java.lang.Object->Java.awt.Component->Java.awt.Container->Javax.swing.JCompoment JCompoent是swing组件存放的位置&…...

Day118 | 灵神 | 二叉树 | 删点成林

Day118 | 灵神 | 二叉树 | 删点成林 1110.删点成林 1110. 删点成林 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 最直接的思路就是看当前结点的值是不是在要删除的列表中&#xff0c;在的话删除当前结点并把左右孩子加入res中 很可惜这样是错的&#xff0c;…...

每周靶点:IL31、B7H3及文献分享

本期精选了《炎症中的“瘙痒”细胞因子IL31》《免疫检查点分子B7H3》《重组抗体&#xff1a;抗体测序和人工智能助力抗体设计》《文献分享&#xff1a;用于HER2特异性递送的单链Fab衍生药物偶联物》《文献分享&#xff1a;全长抗体、片段和双特异性格式的可开发性的比较研究》五…...

机器学习笔记——特征工程

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。 文章目录 特征工程&#xff08;Fzeature Engineering&#xff09;1. 特征提取&#xff…...

麒麟v10 部署 MySQL 5.6.10 完整步骤

需要包的私信我 一、安装依赖&#xff08;Perl环境&#xff09; # 在线安装依赖 yum -y install perl perl-devel# 离线安装&#xff08;需提前下载好rpm包&#xff09; mkdir /data/ybn/soft/pre yum install --downloadonly --downloaddir/data/ybn/soft/pre perl perl-dev…...

digitalworld.local: DEVELOPMENT靶场

digitalworld.local: DEVELOPMENT 来自 <https://www.vulnhub.com/entry/digitalworldlocal-development,280/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.18…...

高等数学基础(梯度下降法求函数的最小值)

梯度下降法, 一般是寻找函数极小值最常用的优化方法. 当目标函数时凸函数时, 梯度下降时全局解, 但是一般情况没办法保证是全局最优的. 通常在求最优解时, 首先会设定好步长大小进行调整, 按照上述方法对参数进行调整后就会逼近一个极小值 设函数 f ( x ) f(x) f(x)为一元连续函…...

【AI News | 20250515】每日AI进展

AI Repos 1、helix-db 专用于RAG以及AI应用的一款高性能图向量数据库&#xff1a;HelixDB&#xff0c;比Neo4j快1000倍&#xff0c;比TigerGraph快100倍&#xff0c;向量搜索性能和Qdrant相当。原生支持图形和矢量数据类型&#xff0c;比较适合RAG和AI应用&#xff0c;像知识图…...

大数据架构选型分析

选择依据 1.业务需求与技术要求 用户需要根据自己的业务需求来选择架构&#xff0c;如果业务对于Hadoop、Spark、Strom等关键技术有强制性依赖&#xff0c;选择Lambda架构可能较为合适&#xff1b;如果处理数据偏好于流式计算&#xff0c;又依赖Flink计算引擎&#xff0c;那么…...

C++中多重继承下的虚表结构

在 C 的多重继承 中&#xff0c;虚表&#xff08;vtable&#xff09;结构会变得更加复杂。 一、基础回顾&#xff1a;单继承下的虚表结构 类中含有虚函数 → 编译器生成虚表&#xff08;每类一张&#xff09;&#xff1b;每个对象有一个隐藏的虚表指针&#xff08;vptr&#x…...

安全巡检清单

安全巡检报告清单 引言 安全巡检是保障信息系统稳定运行和数据安全的关键环节。通过周期性的状态检查、安全扫描、日志分析和补丁管理&#xff0c;可以及时发现并修复潜在的安全隐患和漏洞&#xff0c;确保网络设备、服务器、操作系统及应用系统的高可用性和安全性。本清单旨…...

【redis】redis常见数据结构及其底层,redis单线程读写效率高于多线程的理解,

redis常用数据结构及底层 string字符串、list链表、set无序集合、zset有序集合、hash哈希 1.string 底层结构是SDS简单动态字符串 struct sdshdr {int len; // 已用长度&#xff08;字符串实际长度&#xff09;int free; // 剩余可用空间char buf[]; // 数组&#…...

Redis6为什么引入了多线程?

大家好&#xff0c;我是锋哥。今天分享关于【Redis6为什么引入了多线程&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis6为什么引入了多线程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 6 引入多线程的主要目的是提升性能&#xf…...

使用GmSSL v3.1.1实现SM2证书认证

1、首先使用gmssl命令生成根证书、客户端公私钥&#xff0c;然后使用根证书签发客户端证书&#xff1b; 2、然后编写代码完成认证功能&#xff0c;使用根证书验证客户端证书是否由自己签发&#xff0c;然后使用客户端证书验证客户端私钥对随机数的签名是否正确。 第一部分生成根…...

Spring MVC 接口的访问方法如何设置

RequestMapping 是 Spring 框架中用于映射 HTTP 请求到控制器方法的注解。它支持以下 HTTP 方法访问类型&#xff0c;通过 method 属性指定&#xff1a; GET&#xff1a;用于获取资源POST&#xff1a;用于提交数据PUT&#xff1a;用于更新资源DELETE&#xff1a;用于删除资源PA…...

虚拟网络编辑器

vmnet1 仅主机模式 hostonly 功能&#xff1a;虚拟机只能和宿主机通过vmnet1通信&#xff0c;不可连接其他网络&#xff08;包括互联网&#xff09; vmnet8 地址转换模式 NAT 功能&#xff1a;虚拟机可以和宿主通过vmnet8通信&#xff0c;并且可以连接其他网络&#xff0c;但是…...

【hadoop】Flume日志采集系统的安装部署

一、Flume安装与配置 步骤&#xff1a; 1、使用XFTP将Flume安装包apache-flume-1.9.0-bin.tar.gz发送到master机器的主目录。 2、解压安装包&#xff1a; tar -zxvf ~/apache-flume-1.9.0-bin.tar.gz 3、修改文件夹的名字&#xff0c;将其改为flume&#xff0c;或者创建软…...

Kafka快速安装与使用

引言 这篇文章是一篇Ubuntu(Linux)环境下的Kafka安装与使用教程&#xff0c;通过本文&#xff0c;你可以非常快速搭建一个kafka的小单元进行日常开发与调测。 安装步骤 下载与解压安装 首先我们需要下载一下Kafka&#xff0c;这里笔者采用wget指令&#xff1a; wget https:…...

C# 实现雪花算法(Snowflake Algorithm)详解与应用

在现代分布式系统中&#xff0c;生成全局唯一的标识符&#xff08;ID&#xff09;是一个非常重要的问题。随着微服务架构和分布式系统的普及&#xff0c;传统的单机数据库生成 ID 的方式已无法满足高并发和高可用的需求。为了解决这个问题&#xff0c;Twitter 提出了 雪花算法&…...

中间件-MQ常见问题

MQ常见问题 消息丢失消息会在哪些环节丢失应对机制 消息的顺序性消息幂等消息积压的处理 消息丢失 消息会在哪些环节丢失 网络传输环节&#xff1a;生产者发送消息到broker&#xff0c;broker中master同步消息给slave&#xff0c;consumer消费消息&#xff0c;这3个环节都是跨…...

Redis学习打卡-Day2-缓存更新策略、主动更新策略、缓存穿透、缓存雪崩、缓存击穿

缓存更新策略 对于低一致性需求&#xff1a;使用内存淘汰机制。例如店铺类型的查询缓存。对于高一致性需求&#xff1a;主动更新&#xff0c;并以超时剔除作为兜底方案。例如店铺详情查询的缓存。 主动更新策略&#xff08;缓存读写策略&#xff09; 1. Cache Aside Pattern&…...

Git - 1( 14000 字详解 )

一&#xff1a; Git 初识 1.1 提出问题 在工作或学习中&#xff0c;我们常常会面临文档管理的问题&#xff0c;尤其是在编写各种文档时。为了防止文档丢失或因更改失误而无法恢复&#xff0c;我们常常会创建多个版本的副本&#xff0c;例如&#xff1a;“报告-v1”、“报告-v…...

搭建Centos环境安装禅道

关于禅道&#xff1a; 禅道项目管理软件&#xff0c;将CMMI模型的要求有机融合到项目管理各个过程&#xff0c;支持Scrum、瀑布、看板和狭义IPD并支持融合使用。禅道项目管理软件功能强大&#xff0c;集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体&…...

语音识别——语音转文字

SenseVoiceSmall阿里开源大模型&#xff0c;SenseVoice 是具有音频理解能力的音频基础模型&#xff0c;包括语音识别&#xff08;ASR&#xff09;、语种识别&#xff08;LID&#xff09;、语音情感识别&#xff08;SER&#xff09;和声学事件分类&#xff08;AEC&#xff09;或…...

语音识别——声纹识别

通过将说话人的声音与数据库中的记录声音进行比对&#xff0c;判断说话人是否为数据库白名单中的同一人&#xff0c;从而完成语音验证。目前&#xff0c;3D-Speaker 声纹验证的效果较为出色。 3D-Speaker 是一个开源工具包&#xff0c;可用于单模态和多模态的说话人验证、说话…...

c++作业整理2

直接访问就是直接利用变量的地址直接进行访问。 答案&#xff1a;T 解析&#xff1a;直接访问通过变量名&#xff08;实际对应内存地址&#xff09;访问数据&#xff0c;与间接访问&#xff08;通过指针&#xff09;相对。 char *s"C Language"; 表示 s 是一个指向字…...

无人机屏蔽与滤波技术模块运行方式概述!

一、模块运行方式 1. 电磁屏蔽模块 动态频段干扰&#xff1a;通过发射与无人机通信频段&#xff08;如2.4GHz、5.8GHz、GPS频段等&#xff09;同频的强干扰信号&#xff0c;切断无人机与遥控器、图传设备间的通信链路&#xff0c;实现迫降或返航功能。例如便携式屏蔽器通过…...

兼顾长、短视频任务的无人机具身理解!AirVista-II:面向动态场景语义理解的无人机具身智能体系统

作者&#xff1a;Fei Lin 1 ^{1} 1, Yonglin Tian 2 ^{2} 2, Tengchao Zhang 1 ^{1} 1, Jun Huang 1 ^{1} 1, Sangtian Guan 1 ^{1} 1, and Fei-Yue Wang 2 , 1 ^{2,1} 2,1单位&#xff1a; 1 ^{1} 1澳门科技大学创新工程学院工程科学系&#xff0c; 2 ^{2} 2中科院自动化研究所…...

深入探索 OpenCV:从实时视频流到图像处理的实战指南

引言 在当今数字化时代&#xff0c;计算机视觉技术正逐渐成为推动科技发展的核心力量之一。从自动驾驶汽车到智能家居设备&#xff0c;从医疗影像诊断到工业自动化&#xff0c;计算机视觉的应用无处不在。而 OpenCV&#xff08;Open Source Computer Vision Library&#xff0…...

Linux线程控制

POSIX线程库 与线程有关的函数构成了一个完整的系列&#xff0c;绝大多数函数的名字都是以“pthread_”打头的要使用这些函数库&#xff0c;要通过引入头文 <pthread.h>链接这些线程函数库时要使用编译器命令的“-lpthread”选项 创建线程 功能&#xff1a;创建⼀个新…...

软件设计师考试《综合知识》设计模式之——工厂模式与抽象工厂模式考点分析

软件设计师考试《综合知识》工厂模式与抽象工厂模式考点分析 1. 分值占比与考察趋势&#xff08;75分制&#xff09; 年份题量分值占总分比例核心考点2023111.33%抽象工厂模式适用场景2022222.67%工厂方法 vs 抽象工厂区别2021111.33%工厂方法模式结构2020111.33%简单工厂模式…...

携程旅行 酒店详情 token1004 分析 phantom-token

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 部分python代码 这个网站有一个坑&am…...

QT——概述

<1>, Qt概述 Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 Qt ⽀持多种开发⼯具&#xff0c;其中⽐较常⽤的开发⼯具有&#xff1a;Qt Creator、Visual Studio、Eclipse. 一&#xff0c;Qt Creator 集成开发环境&#xff08;IDE&#xff09; Qt Creator 是⼀个轻量…...

uniapp-vue3项目中引入高德地图的天气展示

前言&#xff1a; uniapp-vue3项目中引入高德地图的天气展示 效果&#xff1a; 操作步骤&#xff1a; 1、页面上用定义我们的 当前天气信息&#xff1a;<view></view> 2、引入我们的map文件 <script setup>import amapFile from ../../libs/amap-wx.js …...

最新版VSCode通过SSH远程连接Ubuntu 16.04等旧版Linux的方法

根据官方文档Remote Development FAQ - Can I run VS Code Server on older Linux distributions?&#xff0c;自Visual Studio Code 1.99起&#xff0c;VSCode Remote - SSH Server由于运行库依赖更新&#xff0c;会无法连接到旧版Linux发行版上。但是好在官方在文档中还给了…...

Unity碰撞检测:射线与胶囊体投射/Layer(层)、LayerMask(遮罩层)

一、Physics碰撞检测 1.Physics.Raycast射线投射 Physics.Raycast 是 Unity 中用于执行射线检测&#xff08;Raycasting&#xff09;的方法。它允许你从一个点沿特定方向发射一条无形的“射线”&#xff0c;并检查这条射线是否与场景中的任何碰撞体相交。这个功能非常有用&am…...

浪潮云边协同:赋能云计算变革的强力引擎

在数字化浪潮以排山倒海之势席卷全球的当下&#xff0c;第五届数字中国建设峰会在福州盛大开幕。这场以“创新驱动新变革&#xff0c;数字引领新格局”为主题的行业盛会&#xff0c;宛如一座汇聚智慧与力量的灯塔&#xff0c;吸引了国内外众多行业精英齐聚一堂&#xff0c;共同…...

“傅里叶变换算法”来检测纸箱变形的简单示例

为了创建一个具有科技质感且能动态展示结果的纸箱变形检测傅里叶变换网页&#xff0c;下面将分别更新 HTML、CSS 和 JavaScript 文件。以下是更新后的代码&#xff1a; 1. HTML 文件 (index.html) <!DOCTYPE html> <html lang"zh-CN"> <head><…...

【SPIN】用Promela验证顺序程序:从断言到SPIN实战(SPIN学习系列--2)

你写了一段自认为“天衣无缝”的程序&#xff0c;但如何确保它真的没有bug&#xff1f;靠手动测试&#xff1f;可能漏掉边界情况&#xff1b;靠直觉&#xff1f;更不靠谱&#xff01;这时候&#xff0c;Promela SPIN组合就像程序的“显微镜”——用形式化验证技术&#xff0c;…...

如何卸载并重新安装 Mozilla Firefox 浏览器

如果你在 Windows 上遇到现有的 Mozilla FireFox 安装问题,以下是重新安装 FireFox 的步骤。这可以帮助用户解决由于某些扩展或设置问题,或者不小心下载了令人讨厌的广告软件而导致的问题。虽然现在使用 Firefox 浏览器的用户在渐渐沦为小众群体,但是 Firefox 浏览器依然是最…...

Linux 后台运行的方法

Linux 后台运行的两种方法&#xff1a;screen 和 nohup 使用指南 如有错误&#xff0c;敬请指正 方法一&#xff1a;使用 screen 管理后台任务&#xff08;推荐&#xff09; &#x1f539; 安装&#xff08;如未安装&#xff09; sudo apt install screen # Ubuntu/Debian …...

《无限暖暖》画质测评

《无限暖暖》作为一款采用虚幻5引擎打造的多平台畅玩、高自由度换装探索类RPG游戏&#xff0c;凭借其精美的画面、沉浸式操作和暖暖美丽坚毅的人设吸引了大量玩家。 在其中玩家可以通过做各样任务收集美好并感受到丰富的人生体验&#xff0c;暖暖所在的世界里有超多的NPC可以互…...

websocket简介与基本使用

websocket是什么 WebSocket 是一种基于 TCP 的全双工通信协议&#xff0c;允许客户端和服务器之间建立持久连接&#xff0c;实现实时、双向的数据传输。它是 HTTP 协议的补充&#xff0c;专为低延迟、高效率的实时通信设计。 核心特点 特性说明全双工通信客户端和服务器可以同时…...

面试题:请解释Java中的垃圾回收机制(Garbage Collection, GC),并讨论不同的垃圾回收算法及其优缺点

Java垃圾回收机制&#xff08;GC&#xff09; Java的垃圾回收机制负责自动管理内存&#xff0c;回收不再使用的对象以释放内存空间。GC通过以下步骤实现&#xff1a; 标记&#xff08;Marking&#xff09; &#xff1a;识别哪些对象是可达的&#xff0c;哪些是不可达的。清除…...