【Rust光年纪】从图形API到虚拟现实:Rust语言开发库全面解析

打造虚拟世界:Rust语言虚拟现实库全攻略

前言

随着虚拟现实技术的不断发展,越来越多的开发者开始关注使用Rust语言进行虚拟现实开发。本文将对几个用于Rust语言的虚拟现实开发库进行介绍和比较,帮助读者了解它们的核心功能、使用场景、安装与配置方法以及API概览,为开发者提供选择合适工具的参考。

吸引人的总结全文的标题

  • Rust语言的虚拟现实开发库综述
  • 选择最适合你的Rust语言虚拟现实开发库
  • 探索Rust语言虚拟现实开发库的世界

欢迎订阅专栏:Rust光年纪

文章目录

  • 打造虚拟世界:Rust语言虚拟现实库全攻略
    • 前言
      • 吸引人的总结全文的标题
    • 1. vr-rs:一个用于Rust语言的虚拟现实开发库
      • 1.1 简介
        • 1.1.1 核心功能
        • 1.1.2 使用场景
      • 1.2 安装与配置
        • 1.2.1 安装指南
        • 1.2.2 基本配置
      • 1.3 API 概览
        • 1.3.1 设备连接与管理
        • 1.3.2 交互界面开发
    • 2. vulkano:一个用于Rust语言的Vulkan图形API库
      • 2.1 简介
        • 2.1.1 核心功能
        • 2.1.2 使用场景
      • 2.2 安装与配置
        • 2.2.1 安装指南
        • 2.2.2 基本配置
      • 2.3 API 概览
        • 2.3.1 渲染管线创建
        • 2.3.2 缓冲区管理
    • 3. Three-rs:一个用于Rust语言的WebGL和WebGPU渲染引擎
      • 3.1 简介
        • 3.1.1 核心功能
        • 3.1.2 使用场景
      • 3.2 安装与配置
        • 3.2.1 安装指南
        • 3.2.2 基本配置
      • 3.3 API 概览
        • 3.3.1 场景构建
        • 3.3.2 光照效果
    • 4. OpenXR-rs:一个用于Rust语言的OpenXR API库
      • 4.1 简介
        • 4.1.1 核心功能
        • 4.1.2 使用场景
      • 4.2 安装与配置
        • 4.2.1 安装指南
        • 4.2.2 基本配置
      • 4.3 API 概览
        • 4.3.1 设备兼容性检测
        • 4.3.2 空间定位与追踪
    • 5. Alvr-rs:一个用于Rust语言的ALVR(Air Light VR)客户端
      • 5.1 简介
        • 5.1.1 核心功能
        • 5.1.2 使用场景
      • 5.2 安装与配置
        • 5.2.1 安装指南
        • 5.2.2 基本配置
      • 5.3 API 概览
        • 5.3.1 视频流传输
        • 5.3.2 延迟优化
    • 6. RustVR:一个用于Rust语言的虚拟现实软件开发框架
      • 6.1 简介
        • 6.1.1 核心功能
        • 6.1.2 使用场景
      • 6.2 安装与配置
        • 6.2.1 安装指南
        • 6.2.2 基本配置
      • 6.3 API 概览
        • 6.3.1 用户交互设计
        • 6.3.2 环境模拟技术
    • 总结

1. vr-rs:一个用于Rust语言的虚拟现实开发库

1.1 简介

vr-rs 是一个专为 Rust 语言设计的虚拟现实开发库,它提供了丰富的功能和强大的性能,使得开发者可以轻松地创建虚拟现实应用程序。

1.1.1 核心功能
  • 设备驱动: vr-rs 提供了对虚拟现实设备的支持,包括头显、手柄等,使开发者可以方便地与这些设备进行交互。
  • 图形渲染: 通过 vr-rs,开发者可以利用 Rust 的高性能特性进行虚拟现实场景的图形渲染,实现流畅的视觉效果。
  • 用户交互: vr-rs 提供了丰富的用户交互功能,包括手势识别、声音交互等,帮助开发者构建更加沉浸式的虚拟现实体验。
1.1.2 使用场景

vr-rs 可以被应用于游戏开发、虚拟培训、医学模拟等多个领域,为开发者提供了丰富的工具和功能来实现各种虚拟现实场景。

1.2 安装与配置

1.2.1 安装指南

你可以通过 Cargo 来安装 vr-rs:

$ cargo install vr-rs

详情请参考 vr-rs GitHub 页面。

1.2.2 基本配置

在你的 Rust 项目中,可以通过在 Cargo.toml 文件中添加以下内容来引入 vr-rs:

[dependencies]
vr = "0.1.0"

1.3 API 概览

1.3.1 设备连接与管理
use vr::device::{Headset, Controller};fn main() {// 连接头显设备let headset = Headset::connect();// 连接手柄let controller = Controller::connect();
}
1.3.2 交互界面开发
use vr::ui::{Button, Text, Panel};fn main() {// 创建一个按钮let button = Button::new("Start");// 创建一个文本框let text = Text::new("Hello, VR!");// 创建一个面板,并添加按钮和文本框let panel = Panel::new();panel.add(button);panel.add(text);
}

以上是 vr-rs 库的简要介绍和基本使用方法。如果需要更详细的信息,请参考 vr-rs 官方文档。

2. vulkano:一个用于Rust语言的Vulkan图形API库

Vulkano 是一个基于 Rust 语言的 Vulkan 图形 API 库。它提供了在 Rust 中使用 Vulkan API 的功能,使开发人员能够直接与 GPU 进行交互,并实现高性能图形渲染。

2.1 简介

2.1.1 核心功能

Vulkano 提供了以下核心功能:

  • 直接访问 Vulkan API
  • 自动管理资源生命周期和内存
  • 强类型的描述符和管线对象
  • 多线程安全

Vulkano 官方网站:https://vulkano.rs/

2.1.2 使用场景

Vulkano 适用于需要在 Rust 中进行图形渲染的项目,特别是对于需要直接操作 GPU 或者利用 Vulkan API 的项目来说,Vulkano 是一个强大的选择。

2.2 安装与配置

2.2.1 安装指南

你可以在 Cargo.toml 文件中添加 Vulkano 作为依赖项来安装 Vulkano:

[dependencies]
vulkano = "0.18"

更多详细的安装指南请参考:Vulkano 官方安装文档

2.2.2 基本配置

在使用 Vulkano 之前,你需要对 Vulkan 运行时进行配置。具体配置步骤请参考:Vulkano 官方配置文档

2.3 API 概览

2.3.1 渲染管线创建

以下是一个简单的 Rust 代码示例,演示如何使用 Vulkano 创建一个基本的渲染管线:

use vulkano::device::Device;
use vulkano::instance::Instance;
use vulkano::device::Features;fn main() {let instance = Instance::new(None, &Features::none(), None).expect("Failed to create Vulkan instance");let physical = vulkano::instance::PhysicalDevice::enumerate(&instance).next().expect("No device available");for family in physical.queue_families() {println!("Found a queue family with {:?} queue(s)", family.queues_count());}
}

更多渲染管线创建相关内容请参考:Vulkano 渲染管线创建文档

2.3.2 缓冲区管理

以下是一个简单的 Rust 代码示例,演示如何使用 Vulkano 进行缓冲区管理:

use vulkano::buffer::{BufferUsage, CpuAccessibleBuffer};
use vulkano::command_buffer::AutoCommandBufferBuilder;
use vulkano::sync::GpuFuture;fn main() {// 创建一个可访问 CPU 的缓冲区let mut content = CpuAccessibleBuffer::from_data(device.clone(), BufferUsage::all(), false, data).expect("Failed to create buffer");// 利用缓冲区执行命令let future = AutoCommandBufferBuilder::new(device.clone(), queue.family()).unwrap().copy_buffer(content.clone(), dest_buffer.clone()).unwrap().build().unwrap().execute(queue.clone()).unwrap();future.then_signal_fence_and_flush().unwrap().wait(None).unwrap();
}

更多缓冲区管理相关内容请参考:Vulkano 缓冲区管理文档

3. Three-rs:一个用于Rust语言的WebGL和WebGPU渲染引擎

3.1 简介

Three-rs 是一个用于 Rust 语言的 Web 渲染引擎库,支持 WebGL 和 WebGPU。它是基于 Three.js 的 API 设计,并在 Rust 生态系统中提供了现代、安全的实现。

3.1.1 核心功能
  • 支持 WebGL 和 WebGPU 渲染
  • 提供了丰富的 3D 场景构建 API
  • 支持光照效果和着色器编程
  • 具有跨平台特性,适用于 Web 应用开发和游戏开发
3.1.2 使用场景

Three-rs 可以用于创建各种类型的 3D Web 应用,包括虚拟现实、游戏、数据可视化等。由于其 Rust 语言的特性,可以确保代码的安全性和性能。

3.2 安装与配置

Three-rs 的安装和配置相对简单,下面将介绍具体的步骤。

3.2.1 安装指南

首先,需要在 Rust 项目的 Cargo.toml 文件中添加 Three-rs 作为依赖:

[dependencies]
three-rs = "0.5"

然后在项目代码中引入 Three-rs:

use three_rs::prelude::*;
3.2.2 基本配置

在使用 Three-rs 之前,需要配置 Rust 项目以使用 WebGL 或 WebGPU。这通常涉及到 WebAssembly 技术和浏览器环境的相关设置。具体可以参考 WebAssembly 官方文档 进行配置。

3.3 API 概览

Three-rs 提供了丰富的 API,用于构建 3D 场景、处理光照效果和着色器编程。

3.3.1 场景构建

以下是一个简单的示例,演示如何使用 Three-rs 构建一个简单的立方体场景并展示在 Web 页面上:

fn main() {let window = Window::new("Three-rs example", Default::default()).unwrap();let mut scene = Scene::new();let camera = PerspectiveCamera::new(60.0, window.viewport().aspect(), 1.0, 1000.0);camera.set_position([0.0, 0.0, 5.0]);let geometry = BoxGeometry::new(1.0, 1.0, 1.0);let material = MeshBasicMaterial {color: 0xffff00,wireframe: false,};let mesh = Mesh::new(geometry, material, vec![]);scene.add(&mesh);while window.render(&scene, &camera) {}
}
3.3.2 光照效果

Three-rs 提供了多种光照效果和材质,可以轻松实现逼真的渲染效果。以下是一个简单的示例,演示如何创建光源和应用光照效果:

fn main() {// ... (省略窗口和场景的创建过程)let ambient_light = AmbientLight::new(0x404040);let directional_light = DirectionalLight::new(0xffffff, 0.5);directional_light.set_position([1.0, 1.0, 1.0]);scene.add(&ambient_light);scene.add(&directional_light);// ... (省略渲染循环部分)
}

通过上述代码示例,我们可以看到 Three-rs 提供了简洁而强大的 API,使得在 Rust 语言中进行 3D 场景构建变得非常容易。

以上就是关于 Three-rs 渲染引擎库

4. OpenXR-rs:一个用于Rust语言的OpenXR API库

4.1 简介

OpenXR-rs 是一个为 Rust 语言开发的 OpenXR API 库,它提供了一种在虚拟现实(VR)和增强现实(AR)设备上编写应用程序的跨平台标准。通过使用 OpenXR-rs,开发人员可以轻松地创建适用于不同 VR 和 AR 设备的程序。

4.1.1 核心功能
  • 提供对 OpenXR API 的 Rust 绑定,使开发者能够在 Rust 中使用 OpenXR 的功能。
  • 支持在不同 VR 和 AR 设备上进行开发,并提供统一的接口和功能。
4.1.2 使用场景

OpenXR-rs 可以应用于需要跨多种 VR 和 AR 设备的应用程序开发中,例如游戏开发、仿真训练系统以及各种虚拟现实和增强现实应用。

4.2 安装与配置

4.2.1 安装指南

要使用 OpenXR-rs,首先需要安装 Rust 编程语言的开发环境。随后,可以在项目的 Cargo.toml 文件中添加 OpenXR-rs 作为依赖:

[dependencies]
openxr = "0.3"

具体安装步骤可以参考 OpenXR-rs GitHub 页面。

4.2.2 基本配置

在代码中引入 OpenXR-rs 的模块以及其他必要的库,然后就可以开始使用 OpenXR 提供的 API 功能了。

4.3 API 概览

4.3.1 设备兼容性检测

在 OpenXR-rs 中,可以通过 enumerate_instance_extension_properties 方法获取当前平台上支持的 OpenXR 扩展。以下是使用 OpenXR-rs 进行设备扩展检测的示例代码:

use openxr as xr;fn main() {let entry_props = xr::enumerate_instance_extension_properties().unwrap();println!("Supported extensions: {:?}", entry_props);
}

以上代码演示了如何使用 OpenXR-rs 来获取当前平台支持的 OpenXR 扩展信息。

4.3.2 空间定位与追踪

OpenXR-rs 也支持空间定位与追踪的功能。以下是使用 OpenXR-rs 创建并初始化 XR 空间的示例代码:

use openxr as xr;fn main() {// 初始化 OpenXR 实例let instance = xr::create_instance(&xr::InstanceCreateInfo::default()).unwrap();// 创建空间let space_create_info = xr::SpaceCreateInfo {next: std::ptr::null(),reference_space_type: xr::ReferenceSpaceType::VIEW,};let space = xr::create_space(instance, &space_create_info).unwrap();
}

在以上示例中,我们成功地创建了一个基于视图类型的空间。更多关于 OpenXR-rs 的 API 使用详情可以参考 OpenXR-rs GitHub 页面。

通过 OpenXR-rs,开发者可以方便地使用 Rust 语言进行跨平台的虚拟现实和增强现实应用程序开发。 OpenXR-rs 提供了对 OpenXR API 的良好封装,使得开发者可以专注于应用程序的实际功能开发,而无需过多关注底层的 VR 和 AR 设备API调用。

5. Alvr-rs:一个用于Rust语言的ALVR(Air Light VR)客户端

5.1 简介

ALVR-RS 是一个用于 Rust 语言的 ALVR(Air Light VR)客户端,它提供了在虚拟现实环境中使用 VR 头显的功能。

5.1.1 核心功能
  • 实现 VR 头显设备和计算机之间的视频流传输
  • 对延迟进行优化,提高用户体验
5.1.2 使用场景

ALVR-RS 可以被应用于以下场景:

  • 在 VR 游戏开发中作为测试工具
  • 将 PC 游戏转换为支持 VR 头显的版本
  • 远程桌面办公

5.2 安装与配置

5.2.1 安装指南

首先,需要安装 Rust 编程语言环境。您可以从 Rust 官网 获取安装方法。

然后,通过 Cargo 包管理器安装 ALVR-RS:

cargo install alvr
5.2.2 基本配置

在进行基本配置之前,您需要运行 ALVR-RS 的服务器端程序,并按照提示进行初始化设置。

5.3 API 概览

5.3.1 视频流传输

ALVR-RS 通过 OpenXR 和 Vulkan 技术实现了对 VR 头显设备的视频流传输。以下是一个简单的 Rust 代码示例,演示了如何使用 ALVR-RS 打开并渲染 VR 头显设备的视频流:

extern crate alvr;use alvr::client::Client;fn main() {// 创建一个 ALVR 客户端实例let mut client = Client::new();// 连接至 ALVR 服务器if let Err(e) = client.connect("192.168.1.100:8082") {panic!("无法连接至 ALVR 服务器: {}", e);}// 初始化渲染环境// ...// 循环接收并渲染视频帧loop {// 从 ALVR 服务器接收视频帧let frame = client.receive_frame();// 渲染视频帧// ...}
}
5.3.2 延迟优化

ALVR-RS 提供了一些 API 和参数,用于优化视频传输的延迟。您可以根据实际需求调整这些参数,以获得更好的用户体验。

更多关于 ALVR-RS 的信息,请访问 ALVR-RS GitHub 仓库。

6. RustVR:一个用于Rust语言的虚拟现实软件开发框架

6.1 简介

RustVR 是一个专为 Rust 语言设计的虚拟现实软件开发框架,旨在提供高性能、安全且易于使用的工具和API,以便开发人员可以轻松地构建虚拟现实应用程序。

6.1.1 核心功能
  • 提供对虚拟现实设备的底层访问能力
  • 支持虚拟现实场景中的图形渲染和用户交互
  • 集成了空间音频技术,实现沉浸式的声音体验
6.1.2 使用场景

RustVR 可以应用于游戏开发、虚拟培训、仿真模拟等领域,为开发者提供一个高效、可靠的虚拟现实开发框架。

6.2 安装与配置

6.2.1 安装指南

您可以通过 Cargo,Rust 的包管理器进行安装。在项目的 Cargo.toml 文件中添加以下依赖:

[dependencies]
rustvr = "0.1.0"

然后运行以下命令来安装 RustVR 框架:

$ cargo build
6.2.2 基本配置

一般情况下,您需要配置您的虚拟现实设备,例如头显、手柄等。RustVR 提供了简洁明了的配置接口,帮助您快速集成设备并进行基本设置。

6.3 API 概览

6.3.1 用户交互设计

RustVR 提供了丰富的用户交互设计 API,包括手势识别、视线跟踪、触控反馈等功能。以下是一个简单的示例代码,演示了如何检测用户按下手柄按钮的操作:

use rustvr::input::controller::Controller;fn main() {let controller = Controller::new();if controller.button_pressed("A") {println!("User pressed the A button");}
}

官网链接:RustVR 用户交互设计

6.3.2 环境模拟技术

RustVR 还集成了先进的环境模拟技术,通过这些技术可以模拟虚拟现实环境中的物理特性、光照效果等。以下是一个简单的示例代码,展示了如何创建一个基本的虚拟现实场景:

use rustvr::scene::Scene;fn main() {let mut scene = Scene::new();scene.add_object("tree");scene.add_object("building");scene.add_light_source("sun");scene.render();
}

官网链接:RustVR 环境模拟技术

通过 RustVR,开发者可以方便地利用 Rust 语言构建高性能、安全的虚拟现实应用程序,并通过丰富的 API 接口实现各种虚拟现实场景下的功能。

总结

本文介绍了六个用于Rust语言的虚拟现实开发库,从图形API到渲染引擎再到用户交互设计,这些库覆盖了虚拟现实开发的多个关键领域。每个库都有其独特的特点和适用场景,可以满足不同类型虚拟现实项目的需求。同时,通过本文对安装配置和API概览的介绍,读者可以快速了解并上手这些库,加快虚拟现实项目的开发进度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是服务器带宽

什么是服务器带宽 服务器带宽是有线或无线网络通信链路在给定时间内通过计算机网络或互联网连接将最大数据量从一个点传输到另一个点的容量。简单来说,带宽指的是可以通过计算机网络或Internet连接一次发送的数据量。具体来说,带宽越大,服务器…

maven archetype

1.简介 maven脚手架是为了创建一个项目模板&#xff0c;以后新建项目都能够复用该模板 maven中模板引擎使用的是velocity,在文件中可以使用它的语法获取变量等操作 2.实现 单模块脚手架实现 pom.xml <?xml version"1.0" encoding"UTF-8"?> &…

windows下实现mongodb备份还原

添加环境变量 把mongodb安装目录下的bin路径添加到环境变量的path路径: 备份库 打开CMD&#xff0c;执行以下命令&#xff1a; mongodump -u test -p test -d test -o D://backup_mongodb//20220706 –gzip 参数说明&#xff1a; -u 用户名 -p 密码 -d 需要备份的库名称…

Spring踩坑:抽象类作为父类,使用子类@Autowired属性进行填充,属性值为null

Spring踩坑&#xff1a;抽象类作为父类&#xff0c;使用子类Autowired属性进行填充&#xff0c;属性值为null Spring Boot中抽象类和依赖注入的最佳实践引言在抽象类中使用Autowired注解protected vs private修饰符低版本Spring Boot的注意事项 构造器中的依赖注入陷阱为什么不…

MongoDB教程(二十一):MongoDB大文件存储GridFS

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、GridFS…

学习笔记(数据结构:链表 栈)3

fun为回调函数由主函数决定 栈: 栈是限定仅在表尾进行插入和删除操作的线性表。 先进后出、后进先出 栈顶:允许操作的一端 栈底:不允许操作的一端 入栈&#xff0c;出栈。 顺序栈 链式栈 1.创建 CreateSeqStack 2.销毁 DestroySeqStack 3.判断是否为空栈 IsEm…

AD7606采集控制

过采样&#xff1a;其效果就是在ADC之后增加数字滤波器的功能

观测云加入华为云「新加坡云联盟」,引领亚太创新潮流

7月19日&#xff0c;「新加坡云联盟」在华为云新加坡峰会2024上正式宣告成立。这一创新的联合不仅是新加坡乃至整个亚太地区云服务领域的重要里程碑&#xff0c;更是全球数字化转型进程中的关键一步。 观测云作为联盟的首批成员之一&#xff0c;在成立仪式上精彩亮相&#xff0…

音视频入门基础:PCM专题(3)——使用Audacity工具分析PCM音频文件

音视频入门基础&#xff1a;PCM专题系列文章&#xff1a; 音视频入门基础&#xff1a;PCM专题&#xff08;1&#xff09;——使用FFmpeg命令生成PCM音频文件并播放 音视频入门基础&#xff1a;PCM专题&#xff08;2&#xff09;——使用Qt播放PCM音频文件 音视频入门基础&am…

Centos7下安装配置最新版本Jenkins

1、基础环境配置 1.1 服务器下载Jenkins安装包 下载地址&#xff1a;Download and deploy 下载命令&#xff1a;wget https://get.jenkins.io/war-stable/2.452.3/jenkins.war 1.2 服务器安装配置JDK Jenkins 是基于 Java 语言开发的&#xff0c;因此需要 Java 运行环境支…

【Python】基础学习技能提升代码样例1:简单句式

官方教程 一、简单句式 1.1 数值 # 校验输入是否为有效数字 if not math.isnan(num):xxxx # 浮点数精度问题 print(0.1 0.2) # 0.30000000000000004 0.1 0.1 0.1 0.3 # false math.isclose(0.1 0.1 0.1, 0.3) # true round(0.1 0.1 0.1, ndigits2) round(0.3, n…

MQ传递用户信息

theme: nico 你们好&#xff0c;我是金金金。 场景 购物车里面有5个商品&#xff0c;用户勾选了并且提交订单了&#xff0c;此时需要删除购物车对应勾选的商品&#xff0c;mq的话涉及到传递用户信息~因为删除对应的购物车商品是需要传递用户信息来知晓对应用户的 生产者 消费者…

LeetCode 热题 HOT 100 (010/100)【宇宙最简单版】

【链表】No. 0206 反转链表 【简单】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xf…

《操作系统》(学习笔记)(王道)

一、计算机系统概述 1.1 操作系统的基本概念 1.1.1 操作系统的概念 操作系统&#xff08;OperatinggSystem&#xff0c;OS&#xff09;是指控制和管理整个计算机系统的硬件与软件资源&#xff0c;合理地组织、调度计算机的工作与资源的分配&#xff0c;进而为用户和其他软件…

docker安装oracle11g

前言 只从docker国内被ban了之后&#xff0c;oracle的docker镜像就不好找了&#xff0c;这里用一个我亲身经历的例子来举例 安装 # 这个是我的docker 镜像的配置文件"registry-mirrors": ["https://6kx4zyno.mirror.aliyuncs.com","https://hub-mi…

Kotlin 中 标准库函数

在 Kotlin 中&#xff0c;标准库提供了许多实用的函数&#xff0c;这些函数可以帮助简化代码、提高效率&#xff0c;以下是一些常用的标准库函数及其功能&#xff1a; let: let 函数允许你在对象上执行一个操作&#xff0c;并返回结果。它通常与安全调用操作符 ?. 一起使用&a…

-XX:MaxDirectMemorySize和-Dio.netty.maxDirectMemory区别

-XX:MaxDirectMemorySize是java运行参数&#xff0c;用户控制java程序可以使用的最大直接内存&#xff08;堆外/本地&#xff09;&#xff1b; -Dio.netty.maxDirectMemory是netty运行参数&#xff0c;用户控制netty程序可以使用的最大直接内存&#xff08;堆外/本地&#xff…

DP学习——外观模式

学而时习之&#xff0c;温故而知新。 外观模式 角色 2个角色&#xff0c;外观类&#xff0c;子系统类。 个人理解 感觉就是对外接口封装&#xff0c;这个是封装一个功能的对外接口&#xff0c;越简单越好&#xff0c;提供给第三方用。 应用场景 封装为对外库时&#xff…

SQL labs-SQL注入(四,sqlmap对于post传参方式的注入)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 序言&#xff1a;本文主要讲解基于SQL labs靶场&#xff0c;sqlmap工具进行的post传参方式的SQL注入。 传参方式有两类&#xff0c;一类是直接在url栏内进行url编码后进行的传参&am…

反序列化-极客大挑战2019php【I have a cat!】

知道这个题考的是反序列化&#xff0c;那么我们第一反应该拿到他的源码。 根据这句话判断【因为每次猫猫都在我键盘上乱跳&#xff0c;所以我有一个良好的备份网站的习惯 不愧是我&#xff01;&#xff01;&#xff01; 】说明有目录 我们直接使用dir开扫&#xff0c;发现有压…