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

我的世界1.20.1forge模组开发进阶物品(7)——具有动画、3D立体效果的物品

基础的物品大家都会做了对吧?包括武器的释放技能,这次来点难度,让物品的贴图呈现动画效果和扔出后显示3D立体效果,这个3D立体效果需要先学习blockbench,学习如何制作贴图。

Blockbench

Blockbench是一个用于创建和编辑三维模型的免费软件,特别适用于Minecraft模型的设计。以下是一些基本的使用指南:

  1. 下载和安装Blockbench软件:可以在Blockbench官方网站上下载适用于您的操作系统的软件版本,安装完成后打开软件。

  2. 创建新模型:在Blockbench中,可以选择新建一个项目或者打开现有的模型文件。点击"File"菜单,选择"New"开始一个新项目。

  3. 绘制和编辑模型:Blockbench提供了各种工具来绘制和编辑模型。可以使用方块工具、拉伸工具、旋转工具等来创建和调整模型的形状。

  4. 添加纹理:可以导入纹理文件来为模型添加颜色和贴图。在Blockbench中,可以点击"Texture"选项卡,选择"Import"导入纹理文件。

  5. 导出模型:完成模型的设计后,可以将模型导出为常见的模型文件格式,如.obj、.fbx等。点击"File"菜单,选择"Export"来导出模型文件。

可以去网上搜搜这个软件的用法,只有这个软件用好了,才会做出出色的贴图纹理。

动画效果 

如果仅仅只是要纹理的动画效果,不要立体效果,那就可以这样做:

  • 创建纹理文件:

{"parent": "minecraft:item/generated","textures": {"layer0": "mymod:item/active_heart"},"animation": {"frametime": 40,    "loop": true}
}
  • 创建动画纹理元文件 (与纹理文件同名,格式为mcmeta):

{"animation": {"interpolate": true,"frames": [{"index": 0, "time": 40},{"index": 1, "time": 40},{"index": 2, "time": 40},{"index": 3, "time": 40},{"index": 0, "time": 1}]}
}

文件解析:

frametime: 每帧持续时间(游戏刻)

interpolate:启用帧过渡平滑

frames :帧序列(与模型文件一致)

然后给纹理文件加序号,分别为0,1,2,3。举个例子,比如你的物品为heart,留一个heart.json文件,假如需要4张图片来显示动画、每张图像的像素为256,那么主纹理文件的像素大小就是1024*256,从最开始的第一张横着放到最后一张,每一张的纹理文件命名为heart_序号.json,序号从0开始算,每一张纹理图片播放2秒,最后一帧到第一帧播放1tick。

若动画不播放,检查纹理文件是否符合以下特征:

  • 尺寸为2的幂次方(如64x256)
  • 帧区域对齐(引用纹理文件为帧序列图片从左往右横排排放)

立体效果

如果要实现立体效果,有两种方法,一种是在blockbench中选择Java版方块实体,导出json文件,和以前一样,放到item目录下就有立体效果了,第二种是选择通用模型,也就是obj模型,需要单独新建一个obj目录,把obj模型导入到obj目录中即可,两种方式的差异如下:

首先,用户可能已经知道Blockbench是一个常用的建模工具,用于创建Minecraft的模型。但他们对这两种模型的具体区别和适用场景不太清楚。我需要先明确OBJ模型和Java版方块物品模型各自的结构和用途。

OBJ模型是Blockbench导出的一种3D模型格式,通常用于更复杂或自定义的模型,支持更多的几何细节。而Java版方块物品模型是Minecraft原生的JSON模型格式,主要用于方块和物品的标准表示,兼容性更好。

接下来,用户可能想知道它们各自的优缺点。比如OBJ模型的优点可能是更灵活,可以制作更复杂的形状,但可能在性能或兼容性上有问题。而Java版模型虽然简单,但可能在优化和集成方面更好。

我需要考虑用户可能的实际需求。比如他们是否在制作一个需要高细节的物品,或者是否需要与游戏机制深度集成。如果用户是新手,可能需要更直观的模型创建方式,这时候Blockbench的OBJ导出可能更合适。但如果他们需要确保模型在各种情况下的稳定运行,Java版原生模型可能更好。

另外,用户可能遇到了一些具体的问题,比如导入OBJ模型时出现的错误,或者在性能上的问题,所以想了解两种模型的区别来做出选择。这时候需要详细说明两者的技术差异,比如文件结构、资源引用方式、性能影响等。

还要考虑到Minecraft的版本差异,比如Java版和基岩版的不同支持情况。OBJ模型可能在某些版本或模组加载器中的支持有限,而原生JSON模型则被广泛支持。

最后,用户可能需要一些指导,比如在什么情况下选择哪种模型,以及如何优化他们的选择。这时候需要给出具体的建议,帮助他们根据项目需求做出决策。

总结一下,我需要分步骤解释OBJ模型和Java版方块物品模型的技术区别、优缺点,适用场景,并给出实际开发中的建议,帮助用户更好地选择适合他们项目的模型类型。


在开发《我的世界》模组时,使用 **Blockbench 导出的 OBJ 模型** 和 **Java 版原生方块/物品模型(JSON 格式)** 有显著区别,分别适用于不同的场景和需求。以下是两者的对比分析及优缺点总结:

一、技术实现与核心区别

二、优点与缺点


#### **1. OBJ 模型**
- **优点**  
  - **高精度建模**:支持复杂几何形状,适用于非方块化物品(如武器、机械零件)。  
  - **跨工具兼容**:可在 Blender 等专业 3D 软件中编辑,再导入 Blockbench 优化。  
  - **材质细节**:MTL 文件支持多纹理通道(漫反射、法线、高光等)。  

- **缺点**  
  - **性能开销**:高面数模型可能导致渲染卡顿,需手动优化。  
  - **兼容性限制**:需安装 OBJ 模型加载器(如 Forge 的 `ObjLoader`),与其他模组可能冲突。  
  - **开发复杂度**:需手动处理材质路径、缩放、坐标系转换等问题。  

#### **2. Java 版原生模型(JSON)**
- **优点**  
  - **原生支持**:无需额外加载器,兼容性最佳,适用于所有 Java 版模组。  
  - **高效渲染**:基于立方体优化的渲染管线,性能开销极低。  
  - **动态行为集成**:原生支持物品旋转、光照效果、条件纹理(如耐久度变化)。  

- **缺点**  
  - **几何限制**:仅支持立方体或简单变形(如 `rotation` 和 `shade` 参数),无法实现复杂形状。  
  - **工具依赖**:需依赖 Blockbench 或手动编写 JSON,专业 3D 软件无法直接导出。  

---

三、适用场景


#### **1. 使用 OBJ 模型的最佳场景**
- **高精度物品**:如武器、载具、装饰物(需精细曲面)。  
- **跨游戏移植**:复用其他游戏或 3D 软件中的模型。  
- **特效需求**:需要法线贴图、环境光遮蔽等高级材质效果。  

#### **2. 使用 Java 版原生模型的最佳场景**
- **方块类物品**:如自定义方块、工具(斧、镐等)。  
- **动态交互需求**:如根据物品状态切换纹理(耐久度、附魔)。  
- **性能敏感场景**:如大型模组需保证低性能开销。  

---

四、开发建议


#### **1. 混合使用策略**
- **基础模型用 JSON**:方块、工具等标准物品使用 JSON 模型。  
- **复杂部件用 OBJ**:为关键物品(如魔法法杖)添加 OBJ 细节模型。  
  ```java
  // 示例:在物品渲染时动态切换模型
  @Override
  public Model getModel(ItemStack stack) {
      if (isEnchanted(stack)) {
          return OBJ_MODEL; // 高精度 OBJ 模型
      } else {
          return JSON_MODEL; // 原生 JSON 模型
      }
  }
  ```

#### **2. OBJ 模型优化技巧**
- **减少面数**:使用 Blockbench 的“减面工具”(Decimate Modifier)。  
- **合并材质**:将多个材质合并到同一张纹理图集(Texture Atlas)。  
- **坐标系对齐**:确保 OBJ 模型的原点对齐 Minecraft 网格(0.5, 0.5, 0.5)。  

#### **3. JSON 模型扩展性**
- **动态纹理**:通过 `overrides` 实现条件纹理切换。  
  ```json
  {
    "overrides": [
      { "predicate": { "damaged": 1 }, "model": "item/damaged_sword" }
    ]
  }
  ```

---

五、典型案例


- **OBJ 模型成功应用**:  
  模组《Immersive Engineering》中的机械臂和传送带,利用 OBJ 实现工业级细节。  
- **JSON 模型深度集成**:  
  模组《Quark》的自定义方块(如石板、木柱),通过 JSON 实现高效渲染和动态行为。  

---

### **总结**
- **选择 OBJ 模型**:当需要高精度、跨工具兼容性或高级材质效果时。  
- **选择 JSON 模型**:当追求性能、原生兼容性或简单动态行为时。  
- **混合使用**:结合两者优势,既能保证性能,又能提升视觉表现。  

通过合理选择模型类型,可以显著提升模组的视觉质量和运行效率。

要想实现立体效果,就得用blockbench做的模型,首先在blockbench里新建Java版的方块物品,然后把模型文件导入到models文件夹内,然后把纹理导入到textures文件夹内,就可以正常显示了,要注意物品的id一致。

加载obj模型 

1.模型文件准备 (保存到正确路径)

相关文章:

我的世界1.20.1forge模组开发进阶物品(7)——具有动画、3D立体效果的物品

基础的物品大家都会做了对吧?包括武器的释放技能,这次来点难度,让物品的贴图呈现动画效果和扔出后显示3D立体效果,这个3D立体效果需要先学习blockbench,学习如何制作贴图。 Blockbench Blockbench是一个用于创建和编辑三维模型的免费软件,特别适用于Minecraft模型的设计…...

火语言RPA--PDF提取表格

【组件功能】:提取PDF文档指定位置表格 配置预览 配置说明 文件路径 支持T或# 默认FLOW输入项 待提取表格的PDF文件的完整路径。 提取位置 全部、指定页、指定范围3种位置供选择。 PDF文件密码 支持T或# 打开PDF文件的密码。 页码 支持T或# 提取指定页的页…...

【开源-线程池(Thread Pool)项目对比】

一些实现**线程池(Thread Pool)**功能的开源项目的对比分析。 线程池功能的开源项目 项目名称语言优点缺点适用场景开源代码链接ThreadPoolC简单易用,代码简洁;适合快速原型开发。功能较为基础,不支持动态调整线程数…...

JavaScript系列05-现代JavaScript新特性

JavaScript作为网络的核心语言之一,近年来发展迅速。从ES6(ECMAScript 2015)开始,JavaScript几乎每年都有新的语言特性加入,极大地改善了开发体验和代码质量。本文主要内容包括: ES6关键特性:解构赋值与扩展运算符&am…...

【二.提示词工程与实战应用篇】【3.Prompt调优:让AI更懂你的需求】

最近老张在朋友圈秀出用AI生成的国风水墨画,隔壁王姐用AI写了份惊艳全场的年终总结,就连楼下小卖部老板都在用AI生成营销文案。你看着自己跟AI对话时满屏的"我不太明白您的意思",是不是怀疑自己买了台假电脑?别慌,这可能是你的打开方式不对。今天咱们就聊聊这个…...

C++学习之C++初识、C++对C语言增强、对C语言扩展

一.C初识 1.C简介 2.第一个C程序 //#include <iostream> //iostream 相当于 C语言下的 stdio.h i - input 输入 o -output 输出 //using namespace std; //using 使用 namespace 命名空间 std 标准 &#xff0c;理解为打开一个房间&#xff0c;房间里有我们所需…...

基于eRDMA实测DeepSeek开源的3FS

DeepSeek昨天开源了3FS分布式文件系统, 通过180个存储节点提供了 6.6TiB/s的存储性能, 全面支持大模型的训练和推理的KVCache转存以及向量数据库等能力, 每个客户端节点支持40GB/s峰值吞吐用于KVCache查找. 发布后, 我们在阿里云ECS上进行了快速的复现, 并进行了性能测试, ECS…...

写Oracle表耗时25分钟缩短到23秒——SeaTunnel性能优化

本文主要给大家介绍JDBC Source批处理任务动态切分优化&#xff0c;希望大家批评指正 JDBC Source 如果配置了table_path 和 partition_column&#xff0c;引擎会对数据进行动态切分&#xff0c;可以通过分析样本数据优化切分区间&#xff0c;规避数据倾斜问题。 目前发现任务…...

Golang的图形用户界面设计

一、Golang图形用户界面设计的基本概念 了解Golang 也称为Go语言&#xff0c;是一种由Google开发的开源编程语言。它具有良好的并发性&#xff0c;能够更好地利用多核处理器&#xff0c;同时也拥有丰富的标准库和强大的工具链。 什么是图形用户界面 图形用户界面&#xff08;GU…...

蓝桥杯备赛Day12 动态规划1基础

动态规划 动态规划基础 动态规划将复杂问题分解成很多重叠的子问题&#xff0c;再通过子问题的解得到整个问题的解 分析步骤: 确定状态:dp[i][j]val,“到第i个为止&#xff0c;xx为j的方案数/最小代价/最大价值” 状态转移方程: 确定最终状态 要求: (1)最优子结构 (2)无后效性…...

我的AI工具箱Tauri版-通用音频转文本

本模块支持FunAsr和FasterWhisper两种模式&#xff0c;可批量处理音频与视频文件&#xff0c;自动生成txt文本与srt字幕&#xff0c;满足多种应用场景需求。 工具内置FunAsr&#xff0c;无需额外参数调整&#xff0c;特别适用于中文语音的高质量转录&#xff0c;确保识别准确率…...

C#—Settings配置详解

C#—Settings配置详解 在C#项目中&#xff0c;全局配置通常指的是应用程序的设置&#xff08;settings&#xff09;&#xff0c;这些设置可以跨多个类或组件使用&#xff0c;并且通常用于存储应用程序的配置信息&#xff0c;如数据库连接字符串、用户偏好设置等。 Settings配置…...

机器学习算法——分类任务

算法&#xff1a; 1、决策树 2、随机森林 3、梯度提升树 4、逻辑回归 5、支持向量机SVM 6、K近邻 KNN 7、朴素贝叶斯 8、多层感知机 9、统一分类 10、比较总结 11、完整代码 1、决策树 1.1 Decision Tree Analysis (C4.5,CART,CHAID)决策树 算法树结构特征选择连续值处理缺失…...

聆听PostgreSQL数据库的使用

参考&#xff1a;&#xff08;1&#xff09;零基础入门PostgreSQL教程 &#xff08;2&#xff09;菜鸟教程 文章目录 一、PostgreSQL是什么&#xff1f;二、基本使用1.下载2.操作&#xff08;1&#xff09;数据库&#xff08;2&#xff09;表 一、PostgreSQL是什么&#xff1f;…...

C# 装箱(Boxing)与拆箱(Unboxing)

C# 装箱&#xff08;Boxing&#xff09;与拆箱&#xff08;Unboxing&#xff09; 在 C# 中&#xff0c;装箱和拆箱是与值类型&#xff08;如结构体&#xff09;和引用类型&#xff08;如类&#xff09;之间的转换相关的操作。它们是类型系统的一部分&#xff0c;但如果不正确使…...

vue实例

// vue应用通过createApp函数创建一个新的应用实例&#xff0c;相当于根组件 import { createApp } from vue import App from ./App.vue // 在一个vue项目当中&#xff0c;有且只有一个vue的实例对象 const appcreateApp(App) // App:根组件 // 实例必须调用了.mount&am…...

Spring Boot的启动流程

Spring Boot 的启动流程是一个复杂且有序的过程&#xff1a; 创建SpringApplication实例 — 调用run方法 — 启动完成(发布应用启动事件&#xff0c;配置环境&#xff0c;创建ApplicationContext&#xff0c;准备ApplicationContext&#xff0c;刷新ApplicationContext[【创建B…...

springboot整合pagehelper实现mybatis分页

1.依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.0</version></dependency><dependency><groupId>com.github.pagehelper<…...

Qt信号与槽机制

‌Qt信号与槽机制&#xff08;Signal and Slot Mechanism&#xff09;‌是Qt框架中用于对象间通信的一种机制。信号和槽是Qt的核心特性之一&#xff0c;它们允许对象在特定事件发生时发送信号&#xff0c;并由其他对象通过槽函数进行响应。这种机制不仅简化了对象间的通信&…...

Qt空项目代码解释

一、 背景 创建的是一个 QWidget 项目。 二、main.cpp 1、图片 2、代码解释 &#xff08;1&#xff09;QApplication Qt 图形化界面中一定有 QApplication &#xff08;2&#xff09;Widget w; 是 QWidget 的子类。 &#xff08;3&#xff09;w.show(); 继承父类的显示…...

【Git】版本控制系统Git命令详解

2024.06.06 2024.06.06\ 2024.06.06 Resources 强推&#xff1a;Pro Git - Book (git-scm.com).中文版. 强烈推荐网址&#xff1a;https://learngitbranching.js.org/?localezh_CN. LearnGit Game&#xff1a; 基础&#xff08;Git 主要命令&#xff09; Git Commit&#…...

Java【多线程】(2)线程属性与线程安全

目录 1.前言 2.正文 2.1线程的进阶实现 2.2线程的核心属性 2.3线程安全 2.3.1线程安全问题的原因 2.3.2加锁和互斥 2.3.3可重入&#xff08;如何自己实现可重入锁&#xff09; 2.4.4死锁&#xff08;三种情况&#xff09; 2.4.4.1第一种情况 2.4.4.2第二种情况 2.4…...

浅克隆与深克隆区别

package d12_api_object;public class Test2 {public static void main(String[] args) throws CloneNotSupportedException {//目标&#xff1a;掌握Object类提供的对象克隆方法//1、protected Object clone():对象克隆User u1 new User(1,"min","1120",…...

【计算机网络入门】初学计算机网络(九)

目录 1.令牌传递协议 2. 局域网&IEEE802 2.1 局域网基本概念和体系结构 3. 以太网&IEEE802.3 3.1 MAC层标准 3.1.1 以太网V2标准 ​编辑 3.2 单播广播 3.3 冲突域广播域 4. 虚拟局域网VLAN 1.令牌传递协议 先回顾一下令牌环网技术&#xff0c;多个主机形成…...

数列极限入门习题

数列极限入门习题 lim ⁡ n → ∞ ( 1 1 2 1 3 ⋯ 1 n ) 1 n \lim\limits_{n\rightarrow\infty}(1 \frac{1}{2}\frac{1}{3}\cdots\frac{1}{n})^{\frac{1}{n}} n→∞lim​(121​31​⋯n1​)n1​ lim ⁡ n → ∞ ( 1 n 1 1 n 2 ⋯ 1 n n ) \lim\limits_{n\rightarrow\…...

【决策树】分类属性的选择

文章目录 1.信息增益&#xff08;ID3&#xff09;2.信息增益率&#xff08;C4.5&#xff09;3.基尼指数&#xff08;CART&#xff09;ps.三者对比 实现决策树算法最关键的一点就是如何从所有的特征属性中选择一个最优的属性对样本进行分类&#xff0c;这种最优可以理解为希望划…...

Mysql面试篇笔记:

优化&#xff1a; 1.如何定位慢查询&#xff1a; 首先压测接口&#xff0c;查看那个接口比较慢&#xff0c;可以通过多种工具&#xff0c;比如Skywaking 可以查看各个接口响应时间&#xff0c;查看接口最慢&#xff0c;然后去跟踪接口&#xff0c;查看详细信息&#…...

005-Docker 安装 Redis

Docker 安装 Redis 1.从镜像官网拉取Redis镜像2.创建实例并启动3.测试连接4.设置开机启动 1.从镜像官网拉取Redis镜像 镜像官网地址&#xff1a;https://hub.docker.com执行命令 -- 拉取最新的版本 docker pull redis查看镜像 docker images2.创建实例并启动 先创建好需要的…...

可终身授权的外国工具,不限次数使用!PDF转CAD的软件

最近有不少朋友问我有没有好用的CAD转换工具&#xff0c;今天就来给大家分享两款超实用的小软件&#xff0c;希望能帮到大家。 第一款软件是一款国外开发的&#xff0c;它专门用来把PDF文件转换成CAD格式&#xff0c;特别方便。 这款软件的操作非常简单&#xff0c;打开后无需安…...

GaussDB性能调优技术指南

​一、性能调优核心目标 ​降低响应时间&#xff1a;缩短单次查询或事务的处理时间&#xff08;如从秒级优化到毫秒级&#xff09;。 ​提高吞吐量&#xff1a;支撑更高并发请求&#xff08;如从千次/秒提升到百万次/秒&#xff09;。 ​资源高效利用&#xff1a;减少 CPU、…...

iOS逆向工程专栏 第13篇:iOS动态分析基础

iOS逆向工程专栏 第13篇:iOS动态分析基础 引言 在前面的文章中,我们详细探讨了iOS系统架构、逆向开发环境搭建、Mach-O文件格式分析,以及各种静态分析工具和技术。通过静态分析,我们可以了解应用的结构、类和方法定义,以及基本的控制流程。然而,静态分析也存在明显的局…...

【现代深度学习技术】卷积神经网络03:填充和步幅

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

(链表 删除链表的倒数第N个结点)leetcode 19

设空结点指向head便于插入和删除结点 考虑特殊情况 head结点被删除 a结点仅用来测试长度&#xff0c;找到目标结点的位置 b结点为空结点指向head返回值 cur用来删除目标值&#xff08;特殊情况 目标值为head 这时curb) 则开始就将cur初始化为b开始遍历 /*** Definition fo…...

初阶数据结构(C语言实现)——3顺序表和链表(2)

2.3 数组相关面试题 原地移除数组中所有的元素val&#xff0c;要求时间复杂度为O(N)&#xff0c;空间复杂度为O(1)。OJ链接 力扣OJ链接-移除元素删除排序数组中的重复项。力扣OJ链接-删除有序数组中的重复项合并两个有序数组。力扣OJ链接-合并两个有序数组 2.3.1 移除元素 1…...

leetcode 138. 随机链表的复制

题目如下 数据范围 这道题十分好&#xff0c;一定要自己写看看再来看别人的答案&#xff01; 首先复制题目给出的链表&#xff0c;对于每个新生成的node利用名为ri的map记录它们在链表的位置和指针。 接着利用名为rd的map存储每个链表中random对应的位置比如(0&#xff0c;…...

【OpenCV C++】以时间命名存图,自动检查存储目录,若不存在自动创建, 按下空格、回车、Q、S自动存图

文章目录 // 保存图像的函数 void saveImage(const cv::Mat& frame) {// 生成唯一文件名auto now = std::chrono::system_clock::...

C# OnnxRuntime部署DAMO-YOLO人头检测

目录 说明 效果 模型信息 项目 代码 下载 参考 说明 效果 模型信息 Model Properties ------------------------- --------------------------------------------------------------- Inputs ------------------------- name&#xff1a;input tensor&#xff1a;Floa…...

DDD该怎么去落地实现(4)多对多关系

多对多关系的设计实现 如题&#xff0c;DDD该如何落地呢&#xff1f;前面我通过三期的内容&#xff0c;讲解了DDD落地的关键在于“关系”&#xff0c;也就是通过前面我们对业务的理解先形成领域模型&#xff0c;然后将领域模型的原貌&#xff0c;形成程序代码中的服务、实体、…...

Vue 3 组件库开发实战:打造基础 UI 组件库并发布 - 构建可复用的 Vue 组件资产

引言 欢迎再次回到 Vue 3 + 现代前端工程化 系列技术博客! 在昨天的第六篇博客中,我们深入探索了 Vue 3 Composition API 的进阶应用,通过构建可拖拽看板应用,熟练掌握了自定义 Hook 的代码复用技巧。 今天,我们将迈向 Vue 3 组件化开发的更高阶段,聚焦于 组件库的开发与…...

UNION 和 UNION ALL 的区别:深入解析 SQL 中的合并操作

在 SQL 的世界里&#xff0c;当我们需要合并多个查询结果集时&#xff0c;UNION和UNION ALL是两个常用的操作符。虽然它们的功能看起来相似&#xff0c;但实际上有着重要的区别&#xff0c;这些区别在不同的应用场景中会对查询结果和性能产生显著影响。本文将详细探讨UNION和UN…...

Redis 哈希(Hash)

Redis 哈希(Hash) 概述 Redis 哈希&#xff08;Hash&#xff09;是一种特殊的键值对类型&#xff0c;它允许存储结构化的数据&#xff0c;例如一个对象或记录。每个哈希值可以包含多个字段&#xff0c;每个字段又可以存储一个字符串值。这使得Redis哈希非常适合用于存储对象的…...

Android Activity栈关系解析

在 Android 系统中&#xff0c;这些类共同构成了 Activity 任务栈管理的核心架构。它们的关系可以类比为一栋大楼的管理体系&#xff0c;每个类负责不同层级的任务。以下是它们的详细解释和实际场景示例&#xff1a; 1. ActivityRecord&#xff08;活动记录&#xff09; 是什么…...

7.1.2 计算机网络的分类

文章目录 分布范围交换方式 分布范围 计算机网络按照分布范围可分为局域网、广域网、城域网。局域网的范围在10m~1km&#xff0c;例如校园网&#xff0c;网速高&#xff0c;主要用于共享网络资源&#xff0c;拓扑结构简单&#xff0c;约束少。广域网的范围在100km&#xff0c;例…...

Arcgis中添加脚本工具箱

准备资料 &#xff08;1&#xff09;工具箱 &#xff08;2&#xff09;python脚本 1、打开arcmap 2、找到目录窗口 3、复制粘贴工具箱的路径 4、添加或者确认python脚本路径 脚本上右键属性(注意&#xff1a;脚本内容和路径最后都不要有中文&#xff0c;否则可能报错) 如果…...

【Python 数据结构 1.零基础复习】

目录 一、输入与输出 1.输入 2.格式化输出 二、数字与变量 1.字符串 & 整型 2.字符串 & 整型 & 浮点型 3.变量 练习 2235. 两整数相加 三、运算与操作 1.四则运算 练习 2769. 找出最大的可达成数字 3.取整与取余 练习 2651. 计算列车到站时间 ​编辑 四、真与假 1…...

颠覆NLP的魔法:深度解读Transformer架构及其核心组件

目录 颠覆NLP的魔法&#xff1a;深度解读Transformer架构及其核心组件 一、Transformer 架构概述 二、核心组件解析 1. Self-Attention&#xff08;自注意力机制&#xff09; 2. 位置编码&#xff08;Positional Encoding&#xff09; 3. 多头注意力&#xff08;Multi-Hea…...

【pytest框架源码分析二】pluggy源码分析之add_hookspecs和register

这里我们看一下_manager.py里的类和方法&#xff0c;最主要的是PluginManager类&#xff0c;类的初始化函数如下&#xff1a; class PluginManager:"""Core class which manages registration of plugin objects and 1:N hookcalling.You can register new hoo…...

【leetcode hot 100 53】最大子数组和

解法一&#xff1a;&#xff08;动态规划&#xff09;我们用 f(i) 代表以第 i 个数结尾的「连续子数组的最大和」&#xff0c;那么很显然我们要求的答案就是&#xff1a;max{f(i)}&#xff0c;f(i)max{f(i−1)nums[i],nums[i]} class Solution {public int maxSubArray(int[] …...

Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接

官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…...

009---基于Verilog HDL的单比特信号边沿检测

文章目录 摘要一、边沿检测二、时序逻辑实现2.1 rtl2.2 tb 三、组合逻辑实现3.1 rtl3.2 tb 摘要 文章为学习记录。采用时序逻辑和组合逻辑实现边沿检测的核心逻辑。组合逻辑实现的上升沿和下降沿的脉冲比时序逻辑实现的上升沿和下降沿的脉冲提前一拍。 一、边沿检测 边沿检测…...