《UE5_C++多人TPS完整教程》学习笔记45 ——《P46 待机与跳跃(Idle And Jumps)》


本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P46 待机与跳跃(Idle And Jumps)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 发布在 Udemy 上的课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
在这里插入图片描述


文章目录

  • P46 待机与跳跃(Idle And Jumps)
  • 46.1 Idle 待机状态
  • 46.2 Jump 跳跃状态
  • 46.3 Run 奔跑到 Jump 跳跃状态的转换
  • 46.4 对跳跃动画进行调整
  • 46.5 Summary


P46 待机与跳跃(Idle And Jumps)

本节课我们将结合前两节课制作的持枪奔跑混合空间,处理人物角色待机和跳跃动画,使得人物角色在装备武器时的动画更完整。
在这里插入图片描述


46.1 Idle 待机状态

  1. 在虚幻引擎中打开动画蓝图 “BlasterAnimBP”,然后在 “AnimGraph” 面板中打开状态机 “Equipped” 的编辑界面,双击 “Standing” 节点进入编辑界面。在蓝图编辑面板中 “添加新的状态机”(Add New State Machine),命名为 “Standing”,将 “Standing” 的输出引脚与 “输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接,然后剪切剩下的节点。
    请添加图片描述

  2. 双击 “Standing” 进入状态机编辑界面,在面板中 “添加状态”(Add State)“Idle” 和 “Run”。
    在这里插入图片描述

  3. 双击 “Run” 状态节点进入编辑界面,将剪切的蓝图节点粘贴到面板中,并将 “EquippedRun” 节点的 “Animation Pose” 输出引脚与 “输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  4. 返回 “Standing” 状态机编辑界面,双击 “Idle” 状态节点进入编辑界面,在右侧内容浏览器中将动画资产 “Idle_Rifle_Hip” 拖拽至面板中生成蓝图节点 “序列播放器 Idle_Rifle_Hip”(Play Idle_Rifle_Hip),并将该节点的输出引脚与“输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  5. 返回 “Standing” 状态机编辑界面,双击 “Idle 到 Run”(Idle to Run) 转换按钮在这里插入图片描述进入转换规则蓝图编辑界面,在面板中添加蓝图节点 “获取 Speed”(Get Speed)、“大于”(>)、“获取 Is In Air”(Get Is In Air)、“NOT布尔”(NOT Boolean)、“获取 Is Accelarating”(Get Is Accelarating)以及 “AND布尔”(AND Boolean),在为节点 “AND布尔” “添加引脚”(Add pin)后,按下图所示连线绘制蓝图。这段蓝图表示当 “Idle” 状态下的人物角色同时满足速度大于 0(Speed > 0)、不在空中 (bIsInAir == false)且在加速(bIsAccelarating == true)三个条件时,就可以由 “Idle” 转换到 “Run” 状态。
    在这里插入图片描述

  6. 返回 “Standing” 状态机编辑界面,在 “Run” 状态节点上拉出一条线连接 “Idle”,生成 “Run 到 Idle”(Idle to Run) 的转换规则,双击转换按钮在这里插入图片描述进入转换规则蓝图编辑界面,在面板中添加蓝图节点 “获取 Is Accelarating”(Get IsAccelarating)和 “NOT布尔”(NOT Boolean),按下图所示连线绘制蓝图,这段蓝图表示当当 “Run” 状态下的人物角色不在在加速(bIsAccelarating == false)三个条件时,就可以由 “Run” 转换到 “Idle” 状态。
    在这里插入图片描述
    在这里插入图片描述

  7. 编译、保存后进行测试,可以看到我们的人物角色在拾取并装备武器后,如果不进行任何操控,就会保持 “Idle” 状态并循环播放持枪待机动画 “Idle_Rifle_Hip”,但如果按下 WASD 键,人物角色开始进入 “Run” 状态持枪奔跑,并根据人物角色的移动和瞄准方向播放持枪奔跑混合空间 “EquippedRun 中的动画,在此过程中松开 WASD 键人物角色就会进入 “Idle” 状态。
    在这里插入图片描述
    在这里插入图片描述


46.2 Jump 跳跃状态

  1. 返回 “Standing” 状态机编辑界面,从状态节点 “Idle” 开始按顺序依次添加并连接新的状态节点 “JumpStart”、“JumpLoop” 和 “JumpStop”,最后由 “JumpStop” 连回 “Idle” 构成一个循环。
    在这里插入图片描述

  2. 进入 “JumpStart” 状态编辑界面,在右侧内容浏览器中将动画资产 “Jump” 拖拽至面板中生成蓝图节点 “序列播放器 Jump”(Play Jump),并将该节点的输出引脚与“输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  3. 进入 “JumpLoop” 状态编辑界面,在右侧内容浏览器中将动画资产 “Jump_Loop” 拖拽至面板中生成蓝图节点 “序列播放器 JumpLoop”(Play Jump_Loop),并将该节点的输出引脚与“输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  4. 进入 “JumpStop” 状态编辑界面,在右侧内容浏览器中将动画资产 “Jump_Down” 拖拽至面板中生成蓝图节点 “序列播放器 Jump_Down”(Play Jump_Down),并将该节点的输出引脚与“输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  5. 进入 “Idle 到 JumpStart”(Idle to JumpStart)转换规则蓝图编辑界面,在面板中添加蓝图节点 “获取 Is In Air”(Get Is In Air),并将该节点的输出引脚与 “结果”(Result)节点的 “Can Enter Transition” 输入引脚连接。
    在这里插入图片描述

  6. 在 “Standing” 状态机编辑界面选中 “JumpStart 到 JumpLoop”(JumpStart to JumpLoop)转换按钮在这里插入图片描述,右侧细节面板中勾选 “过渡”(Transition)选项卡下的 “基于状态中序列播放器的自动规则”(Automatic Rule Based on Sequence Player in State)。
    在这里插入图片描述

  7. 进入 “JumpLoop 到 JumpStop”(JumpLoop to JumpStop)转换规则蓝图编辑界面,在面板中添加蓝图节点 “获取 Is In Air”(Get Is In Air) 和 “NOT布尔”(NOT Boolean)节点,将 “获取 Is In Air” 的输出引脚与 “NOT布尔” 的输入引脚连接,然后将该 “结果”(Result)节点的 “Can Enter Transition” 输入引脚连接。
    在这里插入图片描述

  8. 在 “Standing” 状态机编辑界面由状态 “JumpStop” 再引出一条线连接 “Idle” 生成新的 “JumpStop 到 Idle”(JumpEnd to Idle)转换规则。双击进入其中一个转换规则蓝图编辑界面,添加蓝图节点 “获取 Is Crouched”(Get Is Crouched),并将该节点的输出引脚与 “结果”(Result)节点的 “Can Enter Transition” 输入引脚连接;随后,在另一个转换规则中勾选“结果”(Result)节点的 “Can Enter Transition” 输入引脚。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  9. 编译、保存后进行测试,可以发现人物角色在持枪跳跃到落地的过程有些脱节和延迟,并且跳跃动画会循环播放,需要调整动画播放的一些参数。
    在这里插入图片描述

  10. 进入 “JumpStart” 状态编辑界面,在面板中选中蓝图节点“序列播放器 Jump”(Play Jump),然后在右侧细节面板中的 “设置”(SETTINGS)选项卡下将 “播放速率”(Play Rate)设置为 1.5,并取消 “循环动画”(Loop Animation)的勾选。
    在这里插入图片描述
    进入 “JumpLoop” 状态编辑界面,在面板中选中蓝图节点“序列播放器 Jump”(Play Jump),然后在右侧细节面板中的 “设置”(SETTINGS)选项卡下 “播放率”(Play Rate)设置为 2.0
    在这里插入图片描述
    在 “Standing” 状态机编辑界面选中 “JumpStart 到 JumpLoop”(JumpStart to JumpLoop)转换按钮,然后在右侧细节面板中 “混合设置”(BLEND SETTINGS)中将 “时长”(Duration)设置为 0.1
    在这里插入图片描述
    在 “Standing” 状态机编辑界面选中 “JumpLoop 到 JumpStop”(JumpLoop to JumpStop)转换按钮,然后在右侧细节面板中 “混合设置”(BLEND SETTINGS)中将 “时长”(Duration)设置为 0.1
    在这里插入图片描述
    进入 “JumpStop” 状态编辑界面,在面板中选中蓝图节点“序列播放器 Jump_Down”(Play Jump_Down),然后在右侧细节面板中的 “设置”(SETTINGS)选项卡下 “播放率”(Play Rate)设置为 1.5,并取消 “循环动画”(Loop Animation)的勾选。
    在这里插入图片描述

  11. 编译、保存后进行测试,可以发现在调整后人物角色在持枪跳跃到落地的过程看起来比较流畅自然。但人物角色在持枪奔跑时进行跳跃时并未播放跳跃动画,因此我们还想要从持枪奔跑动画过渡到跳跃动画。
    在这里插入图片描述


46.3 Run 奔跑到 Jump 跳跃状态的转换

  1. 在从“Standing” 状态机编辑界面,从状态节点 “Run” 引出一条线连接 “JumpStart” 生成 “Run 到 JumpStart”(Run to JumpStart)转换规则。进入 “Run 到 JumpStart” 转换规则蓝图编辑界面,在面板中添加蓝图节点 “获取 Is In Air”(Get Is In Air),并将该节点的输出引脚与 “结果”(Result)节点的 “Can Enter Transition” 输入引脚连接。
    在这里插入图片描述
    在这里插入图片描述

  2. 编译、保存后进行测试,可以发现人物角色可以流畅地从持枪奔跑动画过渡到跳跃动画,但是跳跃时滞空时间可能有些长,可以调整人物角色移动组件的 “跳跃Z速度”(Jump ZVelocity)和 “重力标度”(Gravity Scale)。
    在这里插入图片描述

  3. 打开人物角色蓝图类 “BP_EpicCharacter”,在左侧组件面板选中 “角色移动(CharMoveComp)(角色移动组件)”,然后在右侧细节面板中将 “角色移动(通用设置)”(CHARACTER MOVEMENT(GNEERAL SETTINGS)) 下的 “重力标度”(Gravity Scale)改为 3.0(教学视频中最后又改为 4.0),将 “角色移动:上跳/下落”(CHARACTER MOVEMENT: JUMPING/FALLING)) 下的 “跳跃Z速度”(Jump ZVelocity)改为 1600.0 cm/s。
    在这里插入图片描述

  4. 编译、保存后测试,可以发现人物角色跳跃和下降的速度更快了,这样就可以跳上更高的壁架(Ledges)并且更快地落地,我们的游戏也多了一些平台游戏的感觉(platformer-type feel)
    在这里插入图片描述

  5. 若不太满意人物角色落地时双腿悬空(Dangling up)时间太长,我们可以在虚幻引擎资产浏览器中复制 “Jump_Down”,将复制好的动画资产命名为 “Jump_Down_Trim”,双击进入该动画资产的动画序列编辑器(Animation Sequence Editor),在下方资产编辑器(Asset Editor)中跳转到 帧36(左上角橙色数字框里可以输入要跳转的帧数,输入后按 Enter 键跳转),单击鼠标右键,在弹出的菜单栏中选择 “移除帧0到帧36之间的帧”(Remove frame 0 to frame 36),这样就可以剪去 “Jump_Down” 中双腿悬空的动画帧。
    在这里插入图片描述
    在这里插入图片描述

  6. 打开人物角色动画蓝图类 “BlasterAnimBP”,进入 “JumpStop” 状态编辑界面,在右侧内容浏览器中将动画资产 “Jump_Down_Trim” 拖拽至面板中生成蓝图节点 “序列播放器 Jump_Down_Trim”(Play Jump_Down_Trim),并将该节点的输出引脚与“输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  7. 编译保存后进行测试,人物角色在落地时会干脆利索一些。
    在这里插入图片描述


46.4 对跳跃动画进行调整

  1. 在前面的测试中,当人物角色持枪跳跃时会倾斜一个角度,我们希望人物角色在起跳时始终面向前方,在虚幻引擎资产浏览器中复制 “Jump”,可以看到内容浏览器中生成了新的动画资产 “Jump1”。双击进入该动画资产的动画序列编辑器,摄像机调整至人物角色后方在左侧骨骼树(Skeleton Tree)中选中骨骼根节点 “Root”,将其逆时针水平旋转 45°。随后,在工具栏中点击 “+关键帧”(+Key),为动画添加关键帧,点击后可以看到下方时间轴中出现了名为 “root” 的 “Additive图层轨道”(Additive Layer Tracks)。
    在这里插入图片描述

  2. 在工具栏中 “创建资产”(Create Asset),选择 “创建动画”(Create Animation),选择 “当前动画”(Current Animation),再选择 “预览网格体”(Preview Mesh),随后在弹出的对话框中将动画资产命名为 “Jump_Rot” 并保存到 “/Game/Contents/Assets/Animation” 目录下。
    在这里插入图片描述

  3. 在内容浏览器中可以看到新创建的动画资产 “Jump_Rot”,点击 “保存所有”(Save All),随后 “强制删除”(Force Delete)动画资产 “Jump1”。

  4. 打开人物角色动画蓝图类 “BlasterAnimBP”,进入 “JumpStart” 状态编辑界面,在右侧内容浏览器中将动画资产 “Jump_Rot” 拖拽至面板中生成蓝图节点 “序列播放器 Jump_Rot”(Play Jump_Rot),并将该节点的输出引脚与“输出动画姿势”(Out Animation Pose)节点的 “Result” 引脚连接。
    在这里插入图片描述

  5. 仿照上述步骤,创建新的动画资产,“Jump_Loop_Rot” 和 “Jump_Down_Trim_Rot”,并在相应的状态蓝图编辑界面生成新的蓝图节点,并将新节点的输出引脚代替之前的动画节点的输出引脚,与 “输出动画姿势” 节点的 “Result” 引脚连接。

  6. 编译、保存后进行测试,可以发现人物角色在持枪跳跃时始终面向前方,但是起跳时人物角色双腿伸直到悬空的前摇太长,导致衔接有些奇怪。
    在这里插入图片描述

  7. 在虚幻引擎资产浏览器中复制 “Jump_Rot”,将复制好的动画资产命名为 “Jump_Rot_Trim”,双击进入动画资产 “Jump_Rot” 的动画序列编辑器,在下方资产编辑器中跳转到 帧7(左上角橙色数字框里可以输入要跳转的帧数,输入后按 Enter 键跳转),单击鼠标右键,在弹出的菜单栏中选择 “移除帧0到帧7之间的帧”(Remove frame 0 to frame 7),这样就可以剪去 “Jump_Rot” 中人物角色在持枪起跳时双腿伸直到悬空的前摇。然后,在 “JumpStart” 状态编辑界面修改蓝图即可。
    在这里插入图片描述在这里插入图片描述

  8. 编译、保存后进行测试,可以发现人物角色在持枪起跳时双腿伸直到悬空衔接非常丝滑流畅,Perfect!
    在这里插入图片描述


46.5 Summary

本节课我们完善了人物角色在装备武器状态下的待机与跳跃动画,完善了人物角色装备武器的 “EquippedWeapon” 状态机。首先,我们在 “Standing” 状态机中创建了 “Idle” 和 “Run” 两个核心状态,并设置了它们之间的转换规则。“Idle” 状态播放持枪待机动画 “Idle_Rifle_Hip”,其转换到 “Run” 状态的条件是:速度大于 0 (Speed > 0)、不在空中 (!bIsInAir) 且正在加速 (bIsAccelerating)。反向转换规则则只需检测是否不在加速 (!bIsAccelerating),即可从 “Run” 状态平滑过渡回 “Idle” 状态。
接着,我们为跳跃动作创建了由 “JumpStart”、“JumpLoop” 和 “JumpStop” 三个状态组成的动画序列。通过检测 “bIsInAir” 变量,实现了从 “Idle” 或 “Run” 状态到 “JumpStart” 状态的转换。“JumpStart” 到 “JumpLoop” 的转换采用了“基于序列播放器的自动规则”,而 “JumpLoop” 到 “JumpStop” 的转换则通过检测 “!bIsInAir”(是否接触到地面)来触发。最终,从 “JumpStop” 状态成功转换回 “Idle” 状态,完成了整个跳跃循环。
随后,我们对所有跳跃动画的播放参数进行了精细调整,包括设置合适的播放速率 (Play Rate)、禁用循环播放、以及设置状态间短暂的混合时长 (Duration),显著改善了动画衔接的流畅度和自然感。
此外,我们还通过调整角色移动组件 “UCharacterMovementComponent” 的重力标度(Gravity Scale)和跳跃Z速度(Jump ZVelocity)参数,优化了角色的跳跃高度和下落速度,使游戏体验更偏向于平台跳跃风格。
最后,我们通过创建并应用旋转后的跳跃动画资产 “Jump_Rot”, “Jump_Loop_Rot”, “Jump_Down_Trim_Rot”,并修剪起跳动画 “Jump_Rot” 的前摇帧得到 “Jump_Rot_Trim”,确保了角色在跳跃过程中始终面向前方,且动作衔接更加干脆利落。最终实现的动画状态机使得角色在持枪时的待机、奔跑、起跳、空中姿态及落地整个流程都非常流畅和自然。
在这里插入图片描述


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

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

相关文章

用html+js下拉菜单的demo,当鼠标点击后展开,鼠标点击别的地方后折叠

使用html js实现下拉菜单demo&#xff0c;因为copy的网站菜单功能失效&#xff0c;就需要自己写一个逻辑&#xff0c;点击其他区域折叠菜单&#xff0c;可以参考&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF…

OpenCV 核心技术:颜色检测与几何变换实战

在计算机视觉任务中&#xff0c;颜色空间转换和图像几何变换是两大基础且高频的操作 —— 前者用于精准分割特定颜色目标&#xff08;如交通信号灯、物体追踪&#xff09;&#xff0c;后者用于调整图像的尺寸、位置和视角&#xff08;如文档矫正、图像拼接&#xff09;。本文将…

[HFCTF2020]EasyLogin

文章目录TRYWP总结TRY 注册admin报错username wrong。 随便注册一个用户点击GetFlag&#xff0c;permission deny。 猜测可能是需要admin权限。 看cookie发现有&#xff1a; sses:aok&#xff1a;eyJ1c2VybmFtZSI6ImEiLCJfZXhwaXJlIjoxNzU2NDU1NjczMTAxLCJfbWF4QWdlIjo4NjQwM…

Java接口和抽象类的区别,并举例说明

Java接口和抽象类是面向对象编程中实现抽象的两种机制&#xff0c;它们在语法、设计目的和使用场景上有显著区别&#xff1a;一、核心区别‌定义方式‌抽象类&#xff1a;使用abstract class声明&#xff0c;可包含抽象方法和具体方法45。接口&#xff1a;使用interface声明&am…

docker-相关笔记

1: 导入镜像 docker load -i myimage.tar# 导出镜像 docker save myimage:latest > myimage.tar # 导入镜像 docker load -i myimage.tardocker load -i <文件> 功能&#xff1a;用于导入通过 docker save 命令导出的镜像归档文件&#xff08;通常是 .tar 格式&#…

自然语言提取PDF表格数据

自然语言提取PDF表格数据PDF v8.2的文档解决方案与OpenAI实现了无缝的AI集成&#xff0c;可将非结构化PDF转换为可用数据。MESCIUS 推出的 PDF 文档解决方案 (DsPdf) 是一款软件开发工具包&#xff0c;它提供了 .NET Core 库和一个 JavaScript PDF 查看器&#xff0c;用于处理和…

飞牛Nas每天定时加密数据备份到网盘,基于restic的Backrest笔记分享

1. 前言 受前辈“RAID≠备份”的经验&#xff0c;也考虑到硬盘故障时 RAID 重建步骤繁琐&#xff0c;我干脆放弃阵列&#xff0c;直接单盘运行。 重要数据则加密后上传至大厂云盘&#xff1a;一方面文件对外不可读&#xff0c;规避扫描和谐&#xff1b;另一方面依靠大厂的数据安…

C#连接SQL-Server数据库超详细讲解以及防SQL注入

C#连接SQL Server数据库完整指南&#xff0c;整合了ADO.NET原生连接与Entity Framework Core两种实现方式。这篇文件详细介绍C#代码连接数据库的通用操作数据库链接功能 数据库的增删改查操作1 配置全局数据库链接字符串 App.config2 获取数据库链接字符串先在App.config配置连…

Pico2‑ICE FPGA 开发板:从开箱到跑通示例的全历程

FPGA 和 MCU 结合的开发板不多&#xff0c;而 Pico2‑ICE 则把小巧、灵活和易上手完美结合。搭载 RP2350 双核 RISC-V MCU Lattice iCE40UP5K FPGA&#xff0c;配合官方 SDK&#xff0c;你可以一步步跑通各种示例&#xff0c;从 LED 到 VGA&#xff0c;再到 MCU 与 FPGA 协作应…

Java图形图像处理【Swing图像拖拽】【五】

Java图形图像处理【Swing图像拖拽】 18.3.3 Swing图像对象拖拽功能 18.3.3 Swing图像对象拖拽功能 上文讨论的是java.awt.dnd包中提供的拖拽API接口&#xff0c;也可称之为AWT组件的拖拽功能。下面我们要讨论的是Swing框架的拖拽功能&#xff1a;Swing组件也提供了对拖拽功能的…

状态模式与几个经典的C++例子

1. 状态模式定义与核心思想 状态模式解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。通过将状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 核心思想: 状态抽象:将对象的每个状态都封装到一个独立的类中。 委托代替条件判断:…

SyncBackPro 备份及同步软件中的脚本功能简介

脚本提供了一种灵活而简单的方法来自动执行任务和扩展应用程序的功能。脚本是一个小程序&#xff0c;能够自定义和控制备份作业。例如&#xff0c;用户可以编写脚本来复制、重命名或删除特定文件、自定义用户界面或更改配置文件设置。SyncBackPro 的脚本功能类似于 Microsoft O…

部署2.516.2版本的jenkins,同时适配jdk8

&#x1f4cc; 前言 在企业级开发中&#xff0c;我们常常面临 新老项目并存 的复杂局面&#xff1a; 老项目基于 JDK 8 开发&#xff0c;短期内无法升级&#xff1b; 新项目采用 JDK 17&#xff08;LTS&#xff09;甚至更高版本&#xff1b; 而作为 CI/CD 核心的 Jenkins&#…

Autodesk Maya 2026.2 全新功能详解:MotionMaker AI 动画、LookdevX 材质增强、USD 工作流优化

软件介绍 Autodesk Maya 2026.2是一款专业的3D计算机图形软件&#xff0c;它为数字内容创作者提供了丰富的工具集&#xff0c;以实现高质量的建模、动画、模拟和渲染。该版本带来了多项性能优化和工作流程改进&#xff0c;特别是针对生成式动画工具MotionMaker进行了重大升级&…

STM32之DMA详解

一、DMA 1. DMA的引入 在嵌入式系统或计算机系统中&#xff0c;数据的传输和处理是非常重要的操作。以下通过一个简单的示例来展示传统数据操作方式与 DMA 引入的必要性&#xff1a; int a 10; int b 20;a b;上述代码包含了变量定义、初始化以及变量数据赋值操作。在传统…

链表有环找入口节点原理

环形链表入口检测算法数学解释 数学原理假设定义: 链表头到环入口的距离为 a环入口到相遇点的距离为 b相遇点到环入口的距离为 c环的长度为 b c第一次相遇时: 慢指针走了 s a b 步快指针走了 f a b n(b c) 步&#xff0c;其中 n 是快指针在环内转的圈数由于快指针速度是…

Java 基本类型与包装类详解

Java 基本类型与包装类详解 在 Java 开发中&#xff0c;理解 基本数据类型与包装类、字符串处理、以及高精度计算类是非常核心的能力。这不仅关系到程序性能&#xff0c;还影响代码的正确性和可维护性。本文将详细讲解这些知识点&#xff0c;并给出常见的使用技巧和陷阱。 1️…

CRYPT32!CryptMsgUpdate函数分析之CRYPT32!PkiAsn1Decode函数的作用是得到pci

第一部分&#xff1a; CryptMsgUpdate( #endifIN HCRYPTMSG hCryptMsg,IN const BYTE *pbData,IN DWORD cbData,IN BOOL fFinal) {ContentInfo *pci NULL;if ((PHASE_FIRST_FINAL pcmi->dwPhase) &&(0 pcmi->dwMsgType)) {if (0 …

华为交换机S5700设置acl

1.、配置ACL1.1、定义允许的ACL规则[sw1]acl number 3001[sw1-acl-adv-3001]rule permit ip source 192.168.20.0 0.0.0.255 destination 192.168.40.1 0[sw1-acl-adv-3001]rule permit ip source 192.168.30.0 0.0.0.255 destination 192.168.40.1 01.2、定义禁止的ACL规则[sw…

在使用spring ai进行llm处理的rag的时候,选择milvus还是neo4j呢?

在使用spring ai进行llm处理的rag的时候&#xff0c;选择milvus还是neo4j呢&#xff1f; 对于Spring AI中的RAG&#xff08;Retrieval-Augmented Generation&#xff09;应用&#xff0c;选择Milvus还是Neo4j&#xff0c;主要取决于你的数据类型以及RAG流程中对数据检索的侧重点…