我的世界1.20.1forge模组进阶开发教程生物篇(1)——生成
生物生成
- 生物生成
- Alexmob介绍:
- **1. 核心功能与技术实现**
- **2. 项目结构与代码质量**
- **3. 社区协作与维护**
- **4. 扩展性与开发挑战**
- **5. 开发者学习价值**
- 食蚁兽
- 一、实体属性与行为控制(`EntityAnteater`类)
- 二、实体注册与生成规则(`AMEntityRegistry`类)
- 三、全局生成逻辑(辅助方法)
- 四、配置与数据管理
- 总结
- **1. `rollSpawn`方法的作用**
- **2. `MobSpawnType`枚举的作用**
- **3. 两者的联系**
- **示例场景**
- **总结**
- 探究AlexMob的生物生成
- 一、代码关系解析
- 1. `initializeAttributes` 方法的作用
- 2. 与之前代码的关联
- 二、Alex's Mob的生成控制机制
- 三、自定义生成规则编写指南
- 1. **基础配置(JSON文件)**
- 2. **高级控制(Forge代码)**
- 3. **调试与测试**
- 四、总结
- SpawnPlacements类
- 一、代码解析
- 1. **核心类与接口**
- 2. **关键方法**
- 3. **高度图(Heightmap.Types)**
- 二、自定义生成规则方法
- 1. **基本步骤**
- 2. **代码示例:自定义僵尸生成规则**
- 3. **高级控制:复用现有逻辑**
- 三、调试与兼容性
- 1. **调试技巧**
- 2. **与其他模组的兼容**
- 四、总结
- RandomSource接口
- 一、`RandomSource` 接口的作用
- 二、与之前代码的关系
- 1. **在 `rollSpawn` 方法中的应用**
- 2. **在 `SpawnPlacements` 中的生成条件验证**
- 3. **与 `MobSpawnType` 的间接关联**
- 三、关键实现类解析
- 四、自定义生成规则中的使用示例
- 1. **随机生成生物变种**
- 2. **控制生成密度**
- 五、性能与线程安全建议
- 六、总结
- SpawnPredicate接口
- 一、`SpawnPredicate` 接口的作用
- 二、`test()` 方法参数详解
- 三、总结
- BiomeTags和Biome
- 类 `BiomeTags` 与 `Biome` 的联系与区别
- **联系**
- **区别**
- **具体示例**
- **协同工作场景**
- **总结**
- BiomeTags
- **1. 类定义与包结构**
- **2. 标签常量定义**
- **3. 标签创建方法**
- **4. 私有构造函数**
- **5. 标签的用途**
- **6. 核心标签示例**
- **7. 总结**
- 最后
生物生成
这一篇我们来研究研究怎么自定义生物的生成条件,首先Alexs Mos作为主流的forge模组之一,肯定是有研究价值的,这一篇我们来看看alexmob是如何自定义生物生成的
Alexmob介绍:
Alex’s Mobs(AlexsMobs)开发者视角解析
Alex’s Mobs 是一个由开发者 AlexModGuy 创建的 Minecraft 模组(Mod),专注于为游戏添加多样化的生物(Mobs),通过独特的模型、行为机制和生态交互提升游戏体验。以下从开发者角度分析其技术实现和项目特点:
1. 核心功能与技术实现
• 生物设计与行为逻辑
模组中的每个生物均基于 Minecraft Forge/Fabric API 开发,通过自定义的实体类(如 EntityCrocodile
、EntityMantisShrimp
)实现独特行为。开发者需深入理解 Minecraft 的实体系统(AI 任务、路径寻找、动画状态机)来设计复杂的生物交互(如捕食、群居、特殊技能)。
• 资源管理
• 模型与动画:使用 Blockbench 等工具创建高精度模型(.json
文件),并通过 GeoEntityRenderer
(基于 Geckolib 动画库)实现流畅的骨骼动画。
• 音效与本地化:资源包(resources/
目录)包含多语言支持、音效文件(.ogg
)和生物生成规则配置(spawns/
文件夹)。
• 跨版本兼容性
项目需适配多个 Minecraft 版本(如 1.16.5, 1.18.2),开发者通过分支管理和条件编译处理版本差异,依赖 Gradle 构建工具自动化打包。
2. 项目结构与代码质量
• 模块化设计
代码库(GitHub 仓库)按功能分层:
• main/java/com/github/alexmodguy/
:核心逻辑(实体、物品、世界生成)。
• common/
:通用工具类(配置解析、数学计算)。
• events/
:事件监听器(处理玩家交互、生物攻击等游戏事件)。
• 代码规范
• 清晰的类命名(如 AnimalAIWanderRanged
描述生物漫游 AI)。
• 注释详尽,关键逻辑配有行为树说明(如生物攻击优先级)。
• 依赖注入(通过 Forge Event Bus)降低耦合度。
3. 社区协作与维护
• 开源生态
项目采用 MIT 许可证,鼓励二次开发。开发者可通过 GitHub 的 Issues 提交 Bug 报告或功能请求,Pull Request 流程规范化(需通过 CI 测试)。
• 持续更新
作者定期发布新版本,更新日志(CHANGELOG.md
)详细记录生物新增、平衡调整和 Bug 修复,社区反馈响应迅速。
4. 扩展性与开发挑战
• API 集成
支持与其他模组联动(如 JEI 物品查询、Biomes O’ Plenty 生态兼容),开发者需通过 Forge Capability 系统实现数据交互。
• 性能优化
复杂生物可能影响游戏性能,需通过实体渲染优化(Level-of-Detail 技术)和 AI 任务调度(减少冗余计算)确保流畅运行。
5. 开发者学习价值
• 学习实体 AI 与动画系统的深度定制。
• 实践大型 Mod 的版本管理与跨平台适配。
• 参与开源协作,理解社区驱动的开发模式。
总结
Alex’s Mobs 不仅是 Minecraft 生态的丰富扩展,更是一个展示复杂游戏模组开发流程的优质案例。其代码结构清晰、文档完善,适合中高级开发者学习生物 AI、资源管理和社区维护的最佳实践。
食蚁兽
这段代码通过多个机制控制生物(如食蚁兽)的生成,主要涉及以下几个关键部分:
一、实体属性与行为控制(EntityAnteater
类)
-
属性定义
public static AttributeSupplier.Builder bakeAttributes() {return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 20.0D).add(Attributes.ATTACK_DAMAGE, 6D).add(Attributes.MOVEMENT_SPEED, 0.25F); }
• 设置食蚁兽的基础属性:生命值20、攻击伤害6、移动速度0.25。
-
生成条件验证
public static boolean canAnteaterSpawn(EntityType<? extends Animal> animal, LevelAccessor worldIn, MobSpawnType reason, BlockPos pos, RandomSource random) {return worldIn.getRawBrightness(pos, 0) > 8; }
• 食蚁兽只能在亮度等级大于8的地方生成。
-
生成概率控制
public boolean checkSpawnRules(LevelAccessor worldIn, MobSpawnType spawnReasonIn) {return AMEntityRegistry.rollSpawn(AMConfig.anteaterSpawnRolls, this.getRandom(), spawnReasonIn); }
• 通过配置文件
AMConfig.anteaterSpawnRolls
控制生成概率,调用rollSpawn
方法决定是否生成。
二、实体注册与生成规则(AMEntityRegistry
类)
-
实体类型注册
public static final RegistryObject<EntityType<EntityAnteater>> ANTEATER = DEF_REG.register("anteater", () -> registerEntity(EntityType.Builder.of(EntityAnteater::new, MobCategory.CREATURE).sized(1.3F, 1.1F).setTrackingRange(10), "anteater"));
• 将食蚁兽注册为
CREATURE
(被动生物),设置碰撞箱大小(1.3×1.1)和跟踪范围(10格)。 -
生成规则绑定
SpawnPlacements.register(ANTEATER.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityAnteater::canAnteaterSpawn);
• 食蚁兽必须在地面(
ON_GROUND
)生成,使用高度图MOTION_BLOCKING_NO_LEAVES
(忽略树叶),并调用canAnteaterSpawn
验证亮度条件。 -
属性初始化事件
event.put(ANTEATER.get(), EntityAnteater.bakeAttributes().build());
• 在
EntityAttributeCreationEvent
中应用食蚁兽的属性配置。
三、全局生成逻辑(辅助方法)
-
概率计算
public static boolean rollSpawn(int rolls, RandomSource random, MobSpawnType reason) {if (reason == MobSpawnType.SPAWNER) return true;return rolls <= 0 || random.nextInt(rolls) == 0; }
• 若
AMConfig.anteaterSpawnRolls
设为10,则每次生成尝试有1/10的概率成功(自然生成时)。 -
特殊生成环境验证
public static boolean createLeavesSpawnPlacement(LevelReader level, BlockPos pos, EntityType<?> type) {// 检查是否在树叶上生成(用于其他生物,如猴子) }
• 虽然食蚁兽不依赖此方法,但其他生物(如
CAPUCHIN_MONKEY
)可能需要在树叶上生成。
四、配置与数据管理
- 配置文件交互
•AMConfig.anteaterSpawnRolls
:控制生成频率,值越大生成越稀有。
•AMTagRegistry
:管理食蚁兽的食物和繁殖物品标签(如ANTEATER_FOODSTUFFS
)。
总结
食蚁兽的生成由以下因素控制:
- 位置条件:地面且亮度>8。
- 生成概率:通过
AMConfig.anteaterSpawnRolls
配置。 - 实体属性:生命值、攻击力等由
bakeAttributes
定义。 - 注册与事件:通过Forge的实体注册系统和事件监听器绑定生成规则。
其他生物(如猴子、鳄鱼)通过类似的逻辑注册,但可能使用不同的生成条件(如树叶、水域等)。
j接下来研究一下这两个代码:
public static boolean rollSpawn(int rolls, RandomSource random, MobSpawnType reason){if(reason == MobSpawnType.SPAWNER){return true;}else{return rolls <= 0 || random.nextInt(rolls) == 0;}}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package net.minecraft.world.entity;public enum MobSpawnType {NATURAL,CHUNK_GENERATION,SPAWNER,STRUCTURE,BREEDING,MOB_SUMMONED,JOCKEY,EVENT,CONVERSION,REINFORCEMENT,TRIGGERED,BUCKET,SPAWN_EGG,COMMAND,DISPENSER,PATROL;private MobSpawnType() {}
}
1. rollSpawn
方法的作用
public static boolean rollSpawn(int rolls, RandomSource random, MobSpawnType reason) {if (reason == MobSpawnType.SPAWNER) {return true;} else {return rolls <= 0 || random.nextInt(rolls) == 0;}
}
• 功能:此方法用于判断生物是否满足生成条件。
• 参数解析:
• rolls
:生成概率的分母(例如设置为10时,生成概率为1/10)。
• random
:随机数生成器,用于概率判定。
• reason
:生成原因,来自MobSpawnType
枚举。
• 逻辑:
• 若生成原因是SPAWNER
(刷怪笼生成),直接返回true
,即必定生成。
• 其他生成原因则根据rolls
值判断:
◦ 若rolls <= 0
,表示无概率限制,直接生成。
◦ 否则通过随机数判断,只有random.nextInt(rolls) == 0
时才生成(概率为1/rolls
)。
2. MobSpawnType
枚举的作用
public enum MobSpawnType {NATURAL, // 自然生成(如夜晚刷怪)CHUNK_GENERATION, // 区块生成时生成SPAWNER, // 刷怪笼生成STRUCTURE, // 结构生成(如要塞中的末影人)BREEDING, // 繁殖生成MOB_SUMMONED, // 被召唤生成(如唤魔者召唤恼鬼)// 其他类型省略...
}
• 功能:定义生物生成的不同场景或触发方式。
• 关键类型:
• SPAWNER
:通过刷怪笼生成的生物。
• NATURAL
:自然生成的生物(如僵尸在夜晚生成)。
• BREEDING
:通过繁殖生成的生物(如动物交配)。
3. 两者的联系
• 依赖关系:
rollSpawn
方法通过MobSpawnType
参数区分生成场景,从而应用不同的生成逻辑:
• 若生成原因是SPAWNER
,直接允许生成,无需概率计算。这可能是因刷怪笼本身已有独立的生成规则(如冷却时间)。
• 其他场景(如自然生成)则通过rolls
参数控制生成概率。例如,配置rolls=20
时,自然生成概率为1/20。
• 设计意图:
• 灵活性:允许不同生成场景(如自然生成与刷怪笼生成)采用不同的判定规则。
• 性能优化:刷怪笼生成可能更频繁,直接跳过概率计算可减少运算开销。
示例场景
- 刷怪笼生成:
•reason = MobSpawnType.SPAWNER
→ 直接返回true
,生物必定生成。 - 自然生成:
• 若配置rolls=15
,则有1/15的概率生成生物(如僵尸在夜晚生成)。
总结
• MobSpawnType
枚举是生成场景的分类标签,而rollSpawn
方法是基于这些标签的生成条件判定器。
• 通过结合两者,Minecraft实现了对不同生成场景的精细化控制,同时优化了刷怪笼等高频生成场景的性能。
探究AlexMob的生物生成
@SubscribeEventpublic static void initializeAttributes(EntityAttributeCreationEvent event) {SpawnPlacements.Type spawnsOnLeaves = SpawnPlacements.Type.create("am_leaves", AMEntityRegistry::createLeavesSpawnPlacement);SpawnPlacements.register(GRIZZLY_BEAR.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules);SpawnPlacements.register(ROADRUNNER.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityRoadrunner::canRoadrunnerSpawn);SpawnPlacements.register(BONE_SERPENT.get(), SpawnPlacements.Type.IN_LAVA, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityBoneSerpent::canBoneSerpentSpawn);SpawnPlacements.register(GAZELLE.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules);SpawnPlacements.register(CROCODILE.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityCrocodile::canCrocodileSpawn);SpawnPlacements.register(FLY.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityFly::canFlySpawn);SpawnPlacements.register(HUMMINGBIRD.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, EntityHummingbird::canHummingbirdSpawn);SpawnPlacements.register(ORCA.get(), SpawnPlacements.Type.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityOrca::canOrcaSpawn);SpawnPlacements.register(SUNBIRD.get(), SpawnPlacements.Type.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntitySunbird::canSunbirdSpawn);SpawnPlacements.register(GORILLA.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, EntityGorilla::canGorillaSpawn);SpawnPlacements.register(CRIMSON_MOSQUITO.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityCrimsonMosquito::canMosquitoSpawn);SpawnPlacements.register(RATTLESNAKE.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityRattlesnake::canRattlesnakeSpawn);SpawnPlacements.register(ENDERGRADE.get(), SpawnPlacements.Type.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityEndergrade::canEndergradeSpawn);SpawnPlacements.register(HAMMERHEAD_SHARK.get(), SpawnPlacements.Type.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityHammerheadShark::canHammerheadSharkSpawn);SpawnPlacements.register(LOBSTER.get(), SpawnPlacements.Type.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityLobster::canLobsterSpawn);SpawnPlacements.register(KOMODO_DRAGON.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityKomodoDragon::canKomodoDragonSpawn);SpawnPlacements.register(CAPUCHIN_MONKEY.get(), spawnsOnLeaves, Heightmap.Types.MOTION_BLOCKING, EntityCapuchinMonkey::canCapuchinSpawn);SpawnPlacements.register(CENTIPEDE_HEAD.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityCentipedeHead::canCentipedeSpawn);SpawnPlacements.register(WARPED_TOAD.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, EntityWarpedToad::canWarpedToadSpawn);SpawnPlacements.register(MOOSE.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityMoose::canMooseSpawn);SpawnPlacements.register(MIMICUBE.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Mob::checkMobSpawnRules);SpawnPlacements.register(RACCOON.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules);SpawnPlacements.register(BLOBFISH.get(), SpawnPlacements.Type
相关文章:
我的世界1.20.1forge模组进阶开发教程生物篇(1)——生成
生物生成 生物生成Alexmob介绍:**1. 核心功能与技术实现****2. 项目结构与代码质量****3. 社区协作与维护****4. 扩展性与开发挑战****5. 开发者学习价值**食蚁兽一、实体属性与行为控制(`EntityAnteater`类)二、实体注册与生成规则(`AMEntityRegistry`类)三、全局生成逻辑…...
1.5 Spring Boot项目打包和运行
本文介绍了如何使用Spring Boot进行项目打包和运行。首先,讲解了如何将Spring Boot项目打包为可执行的JAR包,并直接运行,无需部署到外部Web服务器。接着,介绍了如何将项目打包为WAR包,以便部署到Web容器中,…...
287. 寻找重复数
由于题目规定数组中的数的范围是1-n,因此可以构造出下标n和值nums[n]的映射f(n),然后构成一个链表,当有重复数字时,链表存在环,找到重复数字即找到链表环的入口,参考142. 环形链表II。 class Solution {pu…...
如何高效解决 Java 内存泄漏问题方法论
目录 一、系统化的诊断与优化方法论 二、获取内存快照:内存泄漏的第一步 (一)自动生成 Heap Dump (二)手动生成 Heap Dump 三、导入分析工具:MAT 和 JProfiler (一)MAT (Memor…...
【Agent】OpenManus 项目架构分析
这是我录制的一个视频,主要是描述我理解的 OpenManus 的思维逻辑,通过这个小的思维逻辑的复现,为后面要再分析其他 Agent 的实现做一个准备。 1. 项目概述 OpenManus 是一个基于大语言模型的智能体框架,旨在提供一个无需邀请码的…...
hive-进阶版-1
第6章 hive内部表与外部表的区别 Hive 是一个基于 Hadoop 的数据仓库工具,用于对大规模数据集进行数据存储、查询和分析。Hive 支持内部表(Managed Table)和外部表(External Table)两种表类型,它们在数据…...
规模效应的三重边界:大白话解读-deepseek为例
前言:当Scaling Laws遇见边际递减效应 在人工智能的狂飙突进中,大语言模型如同不断膨胀的星体,吞噬着海量算力与数据。OpenAI于2020年揭开的Scaling Laws,曾为这场盛宴指明方向:模型性能随参数规模(N&…...
考研系列-408真题计算机网络篇(18-23)
写在前面 此文章是本人在备考过程中408真题计算机网络部分(2018年-2023年)的易错题及相应的知识点整理,后期复习也常常用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…...
windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC
大家好,我是国货系创始人张云泽,最近不少小伙伴在后台问:“听说Windows协议要到期了?我的电脑会不会变砖?”还有人说:“华为笔记本以后用不了Windows了?鸿蒙系统能用吗?”今天咱们就…...
【二分算法】-- 点名
文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 2. 题目解析 前四种解决方法: 哈希表直接遍历找结果位运算数学(高斯求和公式) 这四种方法的时间复杂度都是0(N) 第五种解决方法: 【二段性】&…...
强化学习 - PPO控制无人机
PPO(Proximal Policy Optimization,近端策略优化)是一种强化学习算法,用于训练智能体(无人机)如何在环境中做出决策。它本质上是 策略梯度(Policy Gradient)方法 的一种改进…...
【AHE数据集】 NCAR Anthropogenic Heat Flux (AHF) 数据集
数据概述 数据集由 美国国家大气研究中心(NCAR, National Center for Atmospheric Research) 的 气候与全球动力学实验室(CGD, Climate & Global Dynamics Laboratory) 提供。NCAR 由 美国国家科学基金会(NSF, National Science Foundation) 资助,并由 大学大气研究…...
Part1:基于国内源完成Kubernetes集群部署
集群规划 操作系统:CentOS7 内核版本:5.4(需升级) 组件版本说明操作系统内核5.4RPM方式升级docker26.1.4yum安装cri-docker0.3.16二进制安装kubeadm1.30.11yum安装kubealet1.30.11yum安装kubectl1.30.11yum安装kubectl1.30.11yu…...
强化学习的一些概念
目录 强化学习 打个比方 核心要素 State Action Reward 几个代码demo 学习目标 强化学习 强化学习(Reinforcement Learning, RL)是机器学习的一个分支,旨在让智能体(Agent)通过与环境的交互学习最优策略,以…...
花生好车:重构汽车新零售生态的破局者
在传统汽车零售行业面临消费升级与渠道变革的双重压力下,花生好车以颠覆性的商业模式在短短九年内崛起为行业独角兽。这家成立于2015年的汽车新零售平台,通过重构供应链体系、创新融资租赁模式、深耕下沉市场三大战略维度,正在重塑中国汽车消…...
K8S下nodelocaldns crash问题导致域名请求响应缓慢
前言 最近做项目,有业务出现偶发的部署导致响应很慢的情况,据了解,业务使用域名访问,相同的nginx代理,唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台,毕竟业务是重启几次正常,偶…...
实现悬浮按钮拖动,兼容h5和微信小程序
h5用js写,微信小程序用 代码里面没有完全实现吸附边缘的功能,需要吸附边缘的话还得自己再完善下(h5的吸附边缘是可以的,小程序的还有点问题) 主要功能是:图片上写文字的悬浮按钮,文字使用的是…...
SLC跨头协作机制
SLC跨头协作机制 SLC(Self-attention with Local Communication,或类似跨头协作机制)在Transformer架构中通过以下逻辑帮助注意力头优化分布: 1. 多头注意力的「独立-协作」平衡 传统多头注意力中,每个头独立计算注意力(如Query/Key/Value的线性变换),捕捉不同语义模…...
全国医院数据可视化分析系统
【大数据】全国医院数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 🏥 项目名:医疗导航神器!——《基于大数据的微医挂号网医院数据可视…...
Flash Attention原理讲解
目录 前言0. 简述1. self-attention2. roofline model3. 矩阵分块4. softmax分块5. FlashAttention结语参考 前言 看了几个视频和几篇文章学习了下 Flash Attention,记录下个人学习笔记,仅供自己参考😄 refer1:Flash Attention 为…...
python二级复习(1)
临近计算机二级考试了,开始python的复习 python语言基础: 1.用缩进表示代码块:一般用四个空格或者一个tab 2.代码的注释方法: 单行注释用“#”表示注释开始;多行注释是用三个英文的单引号“‘’”或双引号““”"”作为注释的开始和结束符号。 03. 标识符命…...
基于cat1的贵重物品的状态和位置小型监控系统特色解析
一 项目需求 团队研发出来一款搭载多传感器的无线cat1定位和状态监控的设备。该设备主要面对的贵重物品运输过程中的状态监控,比如,是否被打开过,有没有激烈碰撞,位置信息等。主要应用场景是医疗,安防等贵重物品的状态…...
Python 魔法方法介绍
在 Python 中,魔法方法(Magic Methods)是一类特殊的内置方法,它们通常以双下划线开头和结尾(例如 __init__、__str__、__add__ 等)。这些方法通常用于实现特定的语法或操作符行为,或者用于定义对象的行为。它们是 Python 面向对象编程中的一个重要特性,可以让类的行为更…...
golang time包和日期函数
1.简介 在程序中日期和时间是我们经常会用到的,在go中time包提供了时间的显示和测量函数。 2.获取当前时间 通过time.Now()函数获取当前时间对象,然后获取时间对象的年月日时分秒等值。 now : time.Now()fmt.Printf("now%v type%T\n", now…...
第7章 站在对象模型的尖端2: 异常处理
1.异常处理(Exception Handling) C的异常处理由三个主要组成部分构成:throw表达式、catch子句和try块。当异常被抛出时,程序控制权会转移,并且会沿着调用堆栈回溯,直到找到匹配的catch子句。在此过程中,局部对象的析构…...
不同路径——2
给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。 网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的…...
电子招采软件系统,如何实现10年可追溯审计
一、在当前经济环境下,中小企业面临着巨大的生存压力,传统产业的数字化转型迫在眉睫。AI技术为企业的低成本高效发展提供了新机会,混合办公成为新常态,数据安全法的深入落实则进一步推动企业重视数据安全。区块链存证技术凭借独特…...
TS常见内置映射类型的实现及应用场景
以下是 TypeScript 在前端项目中 常用的映射类型(Mapped Types),结合具体场景和代码示例,帮助开发者高效处理复杂类型: 一、基础映射类型 1. Partial<T> 作用:将对象类型 T 的所有属性变为可选。 实…...
本地部署Deep Seek-R1,搭建个人知识库——笔记
目录 一、本地部署 DeepSeek - R1 1:安装Ollama 2:部署DeepSeek - R1模型 3:安装Cherry Studio 二、构建私有知识库 一、本地部署 DeepSeek - R1 1:安装Ollama 1.打开Ollama下载安装 未科学上网,I 先打开迅雷再下…...
东芝2323AMW复印机安装纸盒单元后如何添加配件选项
如何添加请看下面图示: 找到设备和打印机里找到打印机图标,右键打印机属性,找到配置,添加相应配置功能;打印机属性,加上双面或者2纸盒配件选项; Word打印时,打印机名称,后…...
EasyExcel动态拆分非固定列Excel表格
使用EasyExcel动态拆分非固定列Excel表格 在Excel数据解析场景中,动态列结构拆分是典型挑战(如供应链系统中不同品类的属性字段差异较大)。传统基于POJO映射的方案无法应对列数量不固定的场景。本方案采用EasyExcel的动态模型解析和Map数据…...
开源WAF雷池本地化部署与远程查看网站安全防护的详细操作指南
文章目录 前言1.关于SafeLine2.安装Docker3.本地部署SafeLine4.使用SafeLine5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 各位建站小能手们,无论是想搭建个人博客、企业官网还是各种应用平台来推广自己的内容或产品,…...
由一个话题进入DFMEA(设计失效模式及影响分析)
前言 最近看到了知乎的一个话题“为啥撞车后总是看到雨刮器在摆动?”,联想到产品设计中的一些功能安全设计,也借此机会学习DFMEA,讨论一下我个人对于DFMEA的理解。 有纰漏请指出,转载请说明。 学习交流请发邮件 128…...
Redisson 实现分布式锁源码浅析
大家好,我是此林。 今天来分享Redisson分布式锁源码。还是一样,我们用 问题驱动 的方式展开讲述。 1. redis 中如何使用 lua 脚本? Redis内置了lua解释器,lua脚本有两个好处: 1. 减少多次Redis命令的网络传输开销。…...
机试准备第17天
今天进入图论的学习。图论只考察初试学过的算法,一般都是模版题。常见考点有图相关的数据结构——邻接表法,图的遍历 BFS DFS 并查集,单源最短路径迪杰斯特拉。图由顶点和边构成,度用来说明该顶点邻接边的数量情况。权值说明了边的…...
ABAP语言的动态编程(4) - 综合案例:管理费用明细表
本篇来实现一个综合案例:管理费用明细表。报表在实际项目中,也有一定的参考意义,一方面展示类似的报表,比如管理费用、研发费用等费用的明细,使用业务比较习惯的展示格式;另一方面正好综合运用前面学习的动…...
不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析
题目A:日期统计 思路分析: 本题的题目比较繁琐,我们采用暴力加DFS剪枝的方式去做,我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串,但是还是会存在19月的情况,为此还需要在CHECK函数…...
R语言零基础系列教程-01-R语言初识与学习路线
代码、讲义、软件回复【R语言01】获取。 R语言初识 R是一个开放的统计编程环境,是一门用于统计计算和作图的语言。“一切皆是对象”,数据、函数、运算符、环境等等都是对象。易学,代码像伪代码一样简洁,可读性高强大的统计和可视…...
即时通讯平台测试报告
1.项目概述 项目名称:即时通讯平台 版本号:V1.0.0 测试周期:2025年2月25日--2025年3月15日 测试目标:验证核心功能(登录、注册、消息收发、用户管理、群组功能等)的稳定性和性能指标。 2. 测试范围 功…...
蓝桥杯单片机内存爆了怎么办
蓝桥杯单片机内存爆了怎么办 文章目录 蓝桥杯单片机内存爆了怎么办一、参考文章二、内存区3、keil中的体现4、分配原则5、使用示例 一、参考文章 文章1 文章2 文章3 文章4 二、内存区 1 KB(千字节) 1024 B(字节) B代表Byte,1Byte8bit,一个字节8位 …...
一周热点:微软攻克语音输入、文本输出难题-Phi-4-multimodal
微软Phi-4-multimodal模型是人工智能领域的一个重要进展,它标志着微软在多模态人工智能技术上的突破。以下是对该模型的详细解释: 模型概述 微软Phi-4-multimodal是一个能够同时处理文本、图像和语音的多模态大型语言模型。它通过创新的架构和训练方法,实现了在不同模态之间…...
量化交易学习笔记02:双均线策略
双均线策略示例 个股:中国平安 回测日期:2022-5-1至2023-5-1 短均线:5天 长无线:10天 代码: def initialize(context):# 初始化此策略# 设置我们要操作的股票池, 这里我们只操作一支股票# """标的&qu…...
【WRF-Urban】使用 CGLC-MODIS-LCZ_100m 数据集运行 WRF 时的城市参数化问题
在 WRF 中,LCZ 通过 URBPARM_LCZ.TBL 进行配置,但如果 FRC_URB2D 变量缺失,WRF 会回退到默认的 URBPARM.TBL。 主要问题概述 WRF-Model-cglc-modis-lcz_100m dataset " WARNING, THE URBAN FRACTION WILL BE READ FROM URBPARM.TBL USING DEFAULT URBAN MORPHOLOGY&q…...
Selenium 自动化测试学习总结
大概了解一下即可,现在主要用的自动化工具是 playWright,它可以录制操作。 selenium是老款自动化测试工具,仍有很多可取之处。 安装: pip install selenium即可。然后下载浏览器的驱动包,注意不是浏览器!…...
开源通义万相本地部署方案,文生视频、图生视频、视频生成大模型,支持消费级显卡!
开源通义万相本地部署方案,文生视频、图生视频、视频生成大模型,支持消费级显卡! 万相2.1开源 近日,大模型万相2.1(Wan)重磅开源,此次开源采用Apache2.0协议,14B和1.3B两个参数规格…...
Suno的对手Luno:AI音乐开发「上传参考音频 - 方式一:通过二进制流的方式」 —— 「Luno Api系列|AI音乐API」第11篇
导读 今天来看下Luno Api的上传参考音频 - 方式一:通过二进制流的方式。 参考文件,主要是用于在创作的过程中,希望AI参考这个音乐的曲风和声音来进行创作,那么可以通过上传参考音乐来进行实现。 申请和使用 「已经有API的&…...
微信小程序刷题逻辑实现:技术揭秘与实践分享
页面展示: 概述 在当今数字化学习的浪潮中,微信小程序以其便捷性和实用性,成为了众多学习者刷题备考的得力工具。今天,我们就来深入剖析一个微信小程序刷题功能的实现逻辑,从代码层面揭开其神秘面纱。 小程序界面布局…...
巴耶赫利专业俄语外贸网站建设
巴耶赫利是专业俄语外贸网站建设与俄语搜索引擎Yandex SEO优化服务商。巴耶赫利致力于帮助中国品牌出海俄罗斯,打开俄罗斯市场,提升品牌在俄罗斯的知名度和美誉度。 以下是对巴耶赫利相关服务的详细介绍: 一、巴耶赫利专业俄语外贸网站建设…...
每日Attention学习25——Multi-Scale Attention Fusion
模块出处 [TCSVT 24] [link] [code] DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation 模块名称 Multi-Scale Attention Fusion (MSAF) 模块作用 双级特征融合 模块结构 模块思想 MSAF的主要思想是让网络根据损失学习特征权重,允许模型…...
前端学习记录:解决路由缓存问题
问题描述:响应路由参数的变化,使用带有参数的路由时需要注意的是,当用户从 /users/johnoy 导航到 /users/jolyne 时,相同的组件实例将会被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得…...