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

我的世界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 开发,通过自定义的实体类(如 EntityCrocodileEntityMantisShrimp)实现独特行为。开发者需深入理解 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类)

  1. 属性定义

    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。

  2. 生成条件验证

    public static boolean canAnteaterSpawn(EntityType<? extends Animal> animal, LevelAccessor worldIn, MobSpawnType reason, BlockPos pos, RandomSource random) {return worldIn.getRawBrightness(pos, 0) > 8;
    }
    

    • 食蚁兽只能在亮度等级大于8的地方生成。

  3. 生成概率控制

    public boolean checkSpawnRules(LevelAccessor worldIn, MobSpawnType spawnReasonIn) {return AMEntityRegistry.rollSpawn(AMConfig.anteaterSpawnRolls, this.getRandom(), spawnReasonIn);
    }
    

    • 通过配置文件AMConfig.anteaterSpawnRolls控制生成概率,调用rollSpawn方法决定是否生成。


二、实体注册与生成规则(AMEntityRegistry类)

  1. 实体类型注册

    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格)。

  2. 生成规则绑定

    SpawnPlacements.register(ANTEATER.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EntityAnteater::canAnteaterSpawn);
    

    • 食蚁兽必须在地面(ON_GROUND)生成,使用高度图MOTION_BLOCKING_NO_LEAVES(忽略树叶),并调用canAnteaterSpawn验证亮度条件。

  3. 属性初始化事件

    event.put(ANTEATER.get(), EntityAnteater.bakeAttributes().build());
    

    • 在EntityAttributeCreationEvent中应用食蚁兽的属性配置。


三、全局生成逻辑(辅助方法)

  1. 概率计算

    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的概率成功(自然生成时)。

  2. 特殊生成环境验证

    public static boolean createLeavesSpawnPlacement(LevelReader level, BlockPos pos, EntityType<?> type) {// 检查是否在树叶上生成(用于其他生物,如猴子)
    }
    

    • 虽然食蚁兽不依赖此方法,但其他生物(如CAPUCHIN_MONKEY)可能需要在树叶上生成。


四、配置与数据管理

  1. 配置文件交互
    AMConfig.anteaterSpawnRolls:控制生成频率,值越大生成越稀有。
    AMTagRegistry:管理食蚁兽的食物和繁殖物品标签(如ANTEATER_FOODSTUFFS)。

总结

食蚁兽的生成由以下因素控制:

  1. 位置条件:地面且亮度>8。
  2. 生成概率:通过AMConfig.anteaterSpawnRolls配置。
  3. 实体属性:生命值、攻击力等由bakeAttributes定义。
  4. 注册与事件:通过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。

设计意图
灵活性:允许不同生成场景(如自然生成与刷怪笼生成)采用不同的判定规则。
性能优化:刷怪笼生成可能更频繁,直接跳过概率计算可减少运算开销。


示例场景

  1. 刷怪笼生成
    reason = MobSpawnType.SPAWNER → 直接返回true,生物必定生成。
  2. 自然生成
    • 若配置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进行项目打包和运行。首先&#xff0c;讲解了如何将Spring Boot项目打包为可执行的JAR包&#xff0c;并直接运行&#xff0c;无需部署到外部Web服务器。接着&#xff0c;介绍了如何将项目打包为WAR包&#xff0c;以便部署到Web容器中&#xff0c;…...

287. 寻找重复数

由于题目规定数组中的数的范围是1-n&#xff0c;因此可以构造出下标n和值nums[n]的映射f(n)&#xff0c;然后构成一个链表&#xff0c;当有重复数字时&#xff0c;链表存在环&#xff0c;找到重复数字即找到链表环的入口&#xff0c;参考142. 环形链表II。 class Solution {pu…...

如何高效解决 Java 内存泄漏问题方法论

目录 一、系统化的诊断与优化方法论 二、获取内存快照&#xff1a;内存泄漏的第一步 &#xff08;一&#xff09;自动生成 Heap Dump &#xff08;二&#xff09;手动生成 Heap Dump 三、导入分析工具&#xff1a;MAT 和 JProfiler &#xff08;一&#xff09;MAT (Memor…...

【Agent】OpenManus 项目架构分析

这是我录制的一个视频&#xff0c;主要是描述我理解的 OpenManus 的思维逻辑&#xff0c;通过这个小的思维逻辑的复现&#xff0c;为后面要再分析其他 Agent 的实现做一个准备。 1. 项目概述 OpenManus 是一个基于大语言模型的智能体框架&#xff0c;旨在提供一个无需邀请码的…...

hive-进阶版-1

第6章 hive内部表与外部表的区别 Hive 是一个基于 Hadoop 的数据仓库工具&#xff0c;用于对大规模数据集进行数据存储、查询和分析。Hive 支持内部表&#xff08;Managed Table&#xff09;和外部表&#xff08;External Table&#xff09;两种表类型&#xff0c;它们在数据…...

规模效应的三重边界:大白话解读-deepseek为例

前言&#xff1a;当Scaling Laws遇见边际递减效应 在人工智能的狂飙突进中&#xff0c;大语言模型如同不断膨胀的星体&#xff0c;吞噬着海量算力与数据。OpenAI于2020年揭开的Scaling Laws&#xff0c;曾为这场盛宴指明方向&#xff1a;模型性能随参数规模&#xff08;N&…...

考研系列-408真题计算机网络篇(18-23)

写在前面 此文章是本人在备考过程中408真题计算机网络部分&#xff08;2018年-2023年&#xff09;的易错题及相应的知识点整理&#xff0c;后期复习也常常用到&#xff0c;对于知识提炼归纳理解起到了很大的作用&#xff0c;分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…...

windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC

大家好&#xff0c;我是国货系创始人张云泽&#xff0c;最近不少小伙伴在后台问&#xff1a;“听说Windows协议要到期了&#xff1f;我的电脑会不会变砖&#xff1f;”还有人说&#xff1a;“华为笔记本以后用不了Windows了&#xff1f;鸿蒙系统能用吗&#xff1f;”今天咱们就…...

【二分算法】-- 点名

文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 2. 题目解析 前四种解决方法&#xff1a; 哈希表直接遍历找结果位运算数学&#xff08;高斯求和公式&#xff09; 这四种方法的时间复杂度都是0&#xff08;N&#xff09; 第五种解决方法&#xff1a; 【二段性】&…...

强化学习 - PPO控制无人机

PPO&#xff08;Proximal Policy Optimization&#xff0c;近端策略优化&#xff09;是一种强化学习算法&#xff0c;用于训练智能体&#xff08;无人机&#xff09;如何在环境中做出决策。它本质上是 策略梯度&#xff08;Policy Gradient&#xff09;方法 的一种改进&#xf…...

【AHE数据集】 NCAR Anthropogenic Heat Flux (AHF) 数据集

数据概述 数据集由 美国国家大气研究中心(NCAR, National Center for Atmospheric Research) 的 气候与全球动力学实验室(CGD, Climate & Global Dynamics Laboratory) 提供。NCAR 由 美国国家科学基金会(NSF, National Science Foundation) 资助,并由 大学大气研究…...

Part1:基于国内源完成Kubernetes集群部署

集群规划 操作系统&#xff1a;CentOS7 内核版本&#xff1a;5.4&#xff08;需升级&#xff09; 组件版本说明操作系统内核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 学习目标 强化学习 强化学习&#xff08;Reinforcement Learning, RL&#xff09;是机器学习的一个分支&#xff0c;旨在让智能体&#xff08;Agent&#xff09;通过与环境的交互学习最优策略&#xff0c;以…...

花生好车:重构汽车新零售生态的破局者

在传统汽车零售行业面临消费升级与渠道变革的双重压力下&#xff0c;花生好车以颠覆性的商业模式在短短九年内崛起为行业独角兽。这家成立于2015年的汽车新零售平台&#xff0c;通过重构供应链体系、创新融资租赁模式、深耕下沉市场三大战略维度&#xff0c;正在重塑中国汽车消…...

K8S下nodelocaldns crash问题导致域名请求响应缓慢

前言 最近做项目&#xff0c;有业务出现偶发的部署导致响应很慢的情况&#xff0c;据了解&#xff0c;业务使用域名访问&#xff0c;相同的nginx代理&#xff0c;唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台&#xff0c;毕竟业务是重启几次正常&#xff0c;偶…...

实现悬浮按钮拖动,兼容h5和微信小程序

h5用js写&#xff0c;微信小程序用 代码里面没有完全实现吸附边缘的功能&#xff0c;需要吸附边缘的话还得自己再完善下&#xff08;h5的吸附边缘是可以的&#xff0c;小程序的还有点问题&#xff09; 主要功能是&#xff1a;图片上写文字的悬浮按钮&#xff0c;文字使用的是…...

SLC跨头协作机制

SLC跨头协作机制 SLC(Self-attention with Local Communication,或类似跨头协作机制)在Transformer架构中通过以下逻辑帮助注意力头优化分布: 1. 多头注意力的「独立-协作」平衡 传统多头注意力中,每个头独立计算注意力(如Query/Key/Value的线性变换),捕捉不同语义模…...

全国医院数据可视化分析系统

【大数据】全国医院数据可视化分析系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 &#x1f3e5; 项目名&#xff1a;医疗导航神器&#xff01;——《基于大数据的微医挂号网医院数据可视…...

Flash Attention原理讲解

目录 前言0. 简述1. self-attention2. roofline model3. 矩阵分块4. softmax分块5. FlashAttention结语参考 前言 看了几个视频和几篇文章学习了下 Flash Attention&#xff0c;记录下个人学习笔记&#xff0c;仅供自己参考&#x1f604; refer1&#xff1a;Flash Attention 为…...

python二级复习(1)

临近计算机二级考试了,开始python的复习 python语言基础: 1.用缩进表示代码块:一般用四个空格或者一个tab 2.代码的注释方法: 单行注释用“#”表示注释开始&#xff1b;多行注释是用三个英文的单引号“‘’”或双引号““”"”作为注释的开始和结束符号。 03. 标识符命…...

基于cat1的贵重物品的状态和位置小型监控系统特色解析

一 项目需求 团队研发出来一款搭载多传感器的无线cat1定位和状态监控的设备。该设备主要面对的贵重物品运输过程中的状态监控&#xff0c;比如&#xff0c;是否被打开过&#xff0c;有没有激烈碰撞&#xff0c;位置信息等。主要应用场景是医疗&#xff0c;安防等贵重物品的状态…...

Python 魔法方法介绍

在 Python 中,魔法方法(Magic Methods)是一类特殊的内置方法,它们通常以双下划线开头和结尾(例如 __init__、__str__、__add__ 等)。这些方法通常用于实现特定的语法或操作符行为,或者用于定义对象的行为。它们是 Python 面向对象编程中的一个重要特性,可以让类的行为更…...

golang time包和日期函数

1.简介 在程序中日期和时间是我们经常会用到的&#xff0c;在go中time包提供了时间的显示和测量函数。 2.获取当前时间 通过time.Now()函数获取当前时间对象&#xff0c;然后获取时间对象的年月日时分秒等值。 now : time.Now()fmt.Printf("now%v type%T\n", now…...

第7章 站在对象模型的尖端2: 异常处理

1.异常处理(Exception Handling) C的异常处理由三个主要组成部分构成&#xff1a;throw表达式、catch子句和try块。当异常被抛出时&#xff0c;程序控制权会转移&#xff0c;并且会沿着调用堆栈回溯&#xff0c;直到找到匹配的catch子句。在此过程中&#xff0c;局部对象的析构…...

不同路径——2

给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。 网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的…...

电子招采软件系统,如何实现10年可追溯审计

一、在当前经济环境下&#xff0c;中小企业面临着巨大的生存压力&#xff0c;传统产业的数字化转型迫在眉睫。AI技术为企业的低成本高效发展提供了新机会&#xff0c;混合办公成为新常态&#xff0c;数据安全法的深入落实则进一步推动企业重视数据安全。区块链存证技术凭借独特…...

TS常见内置映射类型的实现及应用场景

以下是 TypeScript 在前端项目中 常用的映射类型&#xff08;Mapped Types&#xff09;&#xff0c;结合具体场景和代码示例&#xff0c;帮助开发者高效处理复杂类型&#xff1a; 一、基础映射类型 1. Partial<T> 作用&#xff1a;将对象类型 T 的所有属性变为可选。 实…...

本地部署Deep Seek-R1,搭建个人知识库——笔记

目录 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 2&#xff1a;部署DeepSeek - R1模型 3&#xff1a;安装Cherry Studio 二、构建私有知识库 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 1.打开Ollama下载安装 未科学上网&#xff0c;I 先打开迅雷再下…...

东芝2323AMW复印机安装纸盒单元后如何添加配件选项

如何添加请看下面图示&#xff1a; 找到设备和打印机里找到打印机图标&#xff0c;右键打印机属性&#xff0c;找到配置&#xff0c;添加相应配置功能&#xff1b;打印机属性&#xff0c;加上双面或者2纸盒配件选项&#xff1b; Word打印时&#xff0c;打印机名称&#xff0c;后…...

EasyExcel动态拆分非固定列Excel表格

使用EasyExcel动态拆分非固定列Excel表格 在Excel数据解析场景中&#xff0c;​动态列结构拆分是典型挑战&#xff08;如供应链系统中不同品类的属性字段差异较大&#xff09;。传统基于POJO映射的方案无法应对列数量不固定的场景。本方案采用EasyExcel的动态模型解析和Map数据…...

开源WAF雷池本地化部署与远程查看网站安全防护的详细操作指南

文章目录 前言1.关于SafeLine2.安装Docker3.本地部署SafeLine4.使用SafeLine5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 各位建站小能手们&#xff0c;无论是想搭建个人博客、企业官网还是各种应用平台来推广自己的内容或产品&#xff0c…...

由一个话题进入DFMEA(设计失效模式及影响分析)

前言 最近看到了知乎的一个话题“为啥撞车后总是看到雨刮器在摆动&#xff1f;”&#xff0c;联想到产品设计中的一些功能安全设计&#xff0c;也借此机会学习DFMEA&#xff0c;讨论一下我个人对于DFMEA的理解。 有纰漏请指出&#xff0c;转载请说明。 学习交流请发邮件 128…...

Redisson 实现分布式锁源码浅析

大家好&#xff0c;我是此林。 今天来分享Redisson分布式锁源码。还是一样&#xff0c;我们用 问题驱动 的方式展开讲述。 1. redis 中如何使用 lua 脚本&#xff1f; Redis内置了lua解释器&#xff0c;lua脚本有两个好处&#xff1a; 1. 减少多次Redis命令的网络传输开销。…...

机试准备第17天

今天进入图论的学习。图论只考察初试学过的算法&#xff0c;一般都是模版题。常见考点有图相关的数据结构——邻接表法&#xff0c;图的遍历 BFS DFS 并查集&#xff0c;单源最短路径迪杰斯特拉。图由顶点和边构成&#xff0c;度用来说明该顶点邻接边的数量情况。权值说明了边的…...

ABAP语言的动态编程(4) - 综合案例:管理费用明细表

本篇来实现一个综合案例&#xff1a;管理费用明细表。报表在实际项目中&#xff0c;也有一定的参考意义&#xff0c;一方面展示类似的报表&#xff0c;比如管理费用、研发费用等费用的明细&#xff0c;使用业务比较习惯的展示格式&#xff1b;另一方面正好综合运用前面学习的动…...

不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析

题目A&#xff1a;日期统计 思路分析&#xff1a; 本题的题目比较繁琐&#xff0c;我们采用暴力加DFS剪枝的方式去做&#xff0c;我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串&#xff0c;但是还是会存在19月的情况&#xff0c;为此还需要在CHECK函数…...

R语言零基础系列教程-01-R语言初识与学习路线

代码、讲义、软件回复【R语言01】获取。 R语言初识 R是一个开放的统计编程环境&#xff0c;是一门用于统计计算和作图的语言。“一切皆是对象”&#xff0c;数据、函数、运算符、环境等等都是对象。易学&#xff0c;代码像伪代码一样简洁&#xff0c;可读性高强大的统计和可视…...

即时通讯平台测试报告

1.项目概述 项目名称&#xff1a;即时通讯平台 版本号&#xff1a;V1.0.0 测试周期&#xff1a;2025年2月25日--2025年3月15日 测试目标&#xff1a;验证核心功能&#xff08;登录、注册、消息收发、用户管理、群组功能等&#xff09;的稳定性和性能指标。 2. 测试范围 功…...

蓝桥杯单片机内存爆了怎么办

蓝桥杯单片机内存爆了怎么办 文章目录 蓝桥杯单片机内存爆了怎么办一、参考文章二、内存区3、keil中的体现4、分配原则5、使用示例 一、参考文章 文章1 文章2 文章3 文章4 二、内存区 1 KB(千字节) 1024 B(字节) B代表Byte&#xff0c;1Byte8bit&#xff0c;一个字节8位 …...

一周热点:微软攻克语音输入、文本输出难题-Phi-4-multimodal

微软Phi-4-multimodal模型是人工智能领域的一个重要进展,它标志着微软在多模态人工智能技术上的突破。以下是对该模型的详细解释: 模型概述 微软Phi-4-multimodal是一个能够同时处理文本、图像和语音的多模态大型语言模型。它通过创新的架构和训练方法,实现了在不同模态之间…...

量化交易学习笔记02:双均线策略

双均线策略示例 个股&#xff1a;中国平安 回测日期&#xff1a;2022-5-1至2023-5-1 短均线&#xff1a;5天 长无线&#xff1a;10天 代码&#xff1a; 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 自动化测试学习总结

大概了解一下即可&#xff0c;现在主要用的自动化工具是 playWright&#xff0c;它可以录制操作。 selenium是老款自动化测试工具&#xff0c;仍有很多可取之处。 安装&#xff1a; pip install selenium即可。然后下载浏览器的驱动包&#xff0c;注意不是浏览器&#xff01;…...

开源通义万相本地部署方案,文生视频、图生视频、视频生成大模型,支持消费级显卡!

开源通义万相本地部署方案&#xff0c;文生视频、图生视频、视频生成大模型&#xff0c;支持消费级显卡&#xff01; 万相2.1开源 近日&#xff0c;大模型万相2.1&#xff08;Wan&#xff09;重磅开源&#xff0c;此次开源采用Apache2.0协议&#xff0c;14B和1.3B两个参数规格…...

Suno的对手Luno:AI音乐开发「上传参考音频 - 方式一:通过二进制流的方式」 —— 「Luno Api系列|AI音乐API」第11篇

导读 今天来看下Luno Api的上传参考音频 - 方式一&#xff1a;通过二进制流的方式。 参考文件&#xff0c;主要是用于在创作的过程中&#xff0c;希望AI参考这个音乐的曲风和声音来进行创作&#xff0c;那么可以通过上传参考音乐来进行实现。 申请和使用 「已经有API的&…...

微信小程序刷题逻辑实现:技术揭秘与实践分享

页面展示&#xff1a; 概述 在当今数字化学习的浪潮中&#xff0c;微信小程序以其便捷性和实用性&#xff0c;成为了众多学习者刷题备考的得力工具。今天&#xff0c;我们就来深入剖析一个微信小程序刷题功能的实现逻辑&#xff0c;从代码层面揭开其神秘面纱。 小程序界面布局…...

巴耶赫利专业俄语外贸网站建设

巴耶赫利是专业俄语外贸网站建设与俄语搜索引擎Yandex SEO优化服务商。巴耶赫利致力于帮助中国品牌出海俄罗斯&#xff0c;打开俄罗斯市场&#xff0c;提升品牌在俄罗斯的知名度和美誉度。 以下是对巴耶赫利相关服务的详细介绍&#xff1a; 一、巴耶赫利专业俄语外贸网站建设…...

每日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的主要思想是让网络根据损失学习特征权重&#xff0c;允许模型…...

前端学习记录:解决路由缓存问题

问题描述&#xff1a;响应路由参数的变化&#xff0c;使用带有参数的路由时需要注意的是&#xff0c;当用户从 /users/johnoy 导航到 /users/jolyne 时&#xff0c;相同的组件实例将会被重复使用。因为两个路由都渲染同个组件&#xff0c;比起销毁再创建&#xff0c;复用则显得…...