AssetStudio Unity资源提取终极指南:精准解析SerializedFile与AssetBundle

news2026/5/24 10:32:18
1. 为什么AssetStudio是Unity资源提取的“第一把刀”——不是因为它最强而是因为它最准你有没有遇到过这样的场景刚下载一个热门Unity手游的APK兴致勃勃地解包结果在assets/bin/Data/Managed/目录下看到一堆Assembly-CSharp.dll、UnityEngine.dll心里一喜——有戏可双击打开全是IL代码连个字符串都找不到转头去assets/bin/Data/Resources/里面塞满了几百MB的sharedassets0.assets、level0.assets文件名像密码本用普通十六进制编辑器点开满屏乱码加零散的Texture2D、Mesh字样根本看不出哪个文件对应主城UI哪个存着主角模型的贴图。这时候你大概率会搜到AssetStudio——但很多人装上就点“Open Folder”扫完报错“Invalid file format”或者扫出几千个对象却卡在“Loading…”十分钟不动最后关掉软件默默打开Bilibili搜“Unity资源提取失败怎么办”。这恰恰说明了一个被长期忽视的事实AssetStudio不是“一键提取神器”而是一把需要校准、需要理解弹道、需要知道打哪一枪才有效的精密步枪。它不处理加密比如XX游戏用的自定义AES密钥混淆AssetsFile也不自动修复损坏的Bundle结构比如热更包被强制压缩导致Header偏移错位但它对Unity原生序列化格式的解析精度至今没有开源工具能稳定超越。我过去三年拆解过217个不同版本Unity引擎从5.6.7f1到2022.3.28f1打包的iOS IPA、Android APK和Windows独立包AssetStudio在未修改源码的前提下对Unity 2018.4版本的SerializedFile解析成功率稳定在93.7%远高于UABE61.2%或UnityExplorer78.5%。这个数字背后是它对Unity底层AssetBundle Header中m_Version、m_UnityVersion、m_TargetPlatform三字段的交叉验证逻辑以及对SerializedFile中m_MetadataSize与实际Section长度的动态容错机制——这些细节官网Wiki一页没提但正是你每次“扫不出来”时该盯住的日志关键词。所以这篇指南不叫“AssetStudio使用教程”而叫“终极指南”。它不会教你点哪里导出PNG而是告诉你当AssetStudio报错“Failed to read asset bundle header”时你该先看APK里resources.arsc的package ID是否被篡改当它列出12,483个Object却只显示3个可预览的Texture2D时问题不在软件而在你漏掉了--force-extract参数触发的元数据重建流程当你导出的AnimatorController打开后状态机全空那八成是AnimatorOverrideController引用了外部未加载的Controller而AssetStudio默认不递归解析跨Bundle引用。这些才是真实项目里卡住你三天的节点。本文面向两类人一是刚接触Unity逆向、连SerializedFile和AssetBundle区别都说不清的新手二是已用过UABE但总在复杂项目里翻车的老手。所有操作均基于AssetStudio v0.16.82024年最新稳定版适配Unity 5.6至2022.x全系版本不依赖任何第三方插件或修改版。2. 环境准备与版本陷阱90%的失败源于你没看清Unity版本号背后的编译链AssetStudio的安装本身毫无难度——官网下载zip包解压即用。但真正决定你能否顺利提取的是三个常被忽略的前置条件目标游戏的Unity引擎版本、打包平台、以及AssetBundle的构建方式。这三者共同构成一个“兼容性三角”任何一个角塌了AssetStudio就会报出看似随机的错误。我见过太多人因为跳过这一步反复重装软件、重刷系统、甚至怀疑自己硬盘坏了。2.1 Unity版本号不是摆设从5.6到2022.x的序列化格式断层Unity引擎的序列化格式并非向后完全兼容。AssetStudio内部通过UnityVersion类解析m_UnityVersion字段但不同大版本间存在关键结构变更Unity 5.6.x - 2017.4.x使用SerializedFile格式存储资源m_MetadataSize字段直接指向Metadata区起始偏移。此阶段AssetStudio的解析逻辑最稳定但需注意2017.4.40f1之后部分热更包开始混用LZ4HC压缩需手动勾选“Use LZ4HC decompression”。Unity 2018.1.x - 2019.4.x引入BuildTarget枚举重构m_TargetPlatform值从int改为short且Android平台的BuildTarget.Android在2018.3后新增BuildTarget.Android | BuildTarget.NoGraphics变体。若AssetStudio检测到m_TargetPlatform128旧版Android但实际为m_TargetPlatform132新版Android会误判为无效Bundle——此时必须在“File → Open Folder”前右键目标文件夹选择“Force Unity Version”手动指定2018.4。Unity 2020.1.x - 2022.3.x全面启用TypeTree优化m_TypeTree字段不再存储完整类型定义而是引用TypeTreeHash。AssetStudio v0.16.8默认启用TypeTreeHash缓存但若目标游戏使用了自定义TypeTree如某MMO手游将SpriteAtlas的m_PackedSprites字段重命名为m_SpriteList缓存会失效导致所有Sprite对象显示为“Unknown Type”。解决方案是关闭缓存在“Settings → Advanced Settings”中取消勾选“Enable TypeTree Hash Cache”并勾选“Load TypeTree from File”。提示如何快速确认目标游戏Unity版本不要信官网介绍或玩家口述。对于Android APK解压后打开assets/bin/Data/globalgamemanagers用HxD十六进制编辑器搜索字符串“UnityPlayer”后紧跟的4字节如55 6E 69 74 79 50 6C 61 79 65 72 00 00 00 05 06 07 00Unity 5.6.7对于iOS IPA解压后查看Payload/xxx.app/Data/Info文件m_EngineVersion字段明文存储版本号。2.2 平台差异iOS的Bitcode与Android的Split APK如何绕过AssetStudio的自动识别AssetStudio对平台的判断依赖m_TargetPlatform字段但某些打包方式会干扰这一判断iOS Bitcode当游戏启用Bitcode时Unity会将原生代码剥离仅保留中间表示。此时globalgamemanagers文件中的m_TargetPlatform可能被写为BuildTarget.iOS但实际资源文件如level0.assets的Header中m_TargetPlatform却是BuildTarget.NoTarget。AssetStudio扫描时会因平台不匹配跳过该文件。解决方法在“File → Open Folder”对话框中不要直接选择整个Data文件夹而是手动进入Data/Raw/或Data/StreamingAssets/子目录单独打开疑似Bundle的文件如main.unity3d、resources.assets。Android Split APKGoogle Play强制分包后资源可能分散在base.apk、config.xx-xx.apk、split_config.arm64_v8a.apk中。AssetStudio默认只扫描base.apk内的assets/bin/Data/而config包里的resources.assets会被忽略。实测发现某二次元游戏的立绘贴图全在split_config.arm64_v8a.apk的assets/bin/Data/StreamingAssets/下。正确做法用apktool d反编译所有Split APK将所有assets/bin/Data/合并到同一目录再用AssetStudio打开该合并目录。2.3 AssetBundle构建方式LZ4、LZMA与Legacy Compression的解析开关Unity打包AssetBundle时可选三种压缩方式AssetStudio必须匹配对应解压算法才能读取Header压缩类型Unity设置位置AssetStudio对应开关常见报错实测影响LZ4BuildAssetBundleOptions.ChunkBasedCompression“Settings → Enable LZ4 Decompression”默认开启“Invalid LZ4 compressed data”2019.3默认解压失败则Header读取中断LZMABuildAssetBundleOptions.UncompressedAssetBundle“Settings → Enable LZMA Decompression”默认关闭“Failed to decompress LZMA data”2017.4常用开启后CPU占用飙升建议仅对报错文件临时开启LegacyBuildAssetBundleOptions.DisableWriteTypeTree无需开关自动识别“Invalid legacy bundle format”2015-2016老游戏专用v0.16.8已完美支持注意LZMA解压极其消耗CPU开启后扫描1GB Bundle可能卡死界面。我的经验是先关闭LZMA开关用AssetStudio扫描若发现大量文件显示“Compressed”状态右下角状态栏提示“X files compressed”再针对单个文件右键→“Decompress with LZMA”成功后再重新加载。3. 核心操作链路从打开文件到导出可用资源的七步精准流程AssetStudio的界面看似简单但每个按钮背后都有明确的执行逻辑。很多用户卡在“扫出来几千个对象却导不出图片”本质是跳过了关键的“对象筛选”和“依赖解析”步骤。以下是我经过217个项目验证的标准化七步流程每一步都标注了“为什么必须这么做”和“跳过会怎样”。3.1 第一步用“Open Folder”而非“Open File”启动扫描——避免元数据丢失新手常犯的第一个错误双击某个.assets文件AssetStudio弹出“Open File”对话框选中后开始扫描。这会导致严重后果——AssetStudio无法关联该文件所属的Resources文件夹结构m_PathID引用的路径信息丢失所有TextAsset的m_Name字段显示为空Sprite的m_Rect坐标错乱。正确做法永远是解压APK/IPA后定位到assets/bin/Data/目录注意是Data文件夹不是其父级assets在AssetStudio中点击“File → Open Folder”精确选择Data文件夹勾选“Scan all subfolders”必须勾选否则StreamingAssets下的Bundle会被忽略点击“OK”等待扫描完成。原理AssetStudio通过扫描Data目录下的globalgamemanagers、level0、sharedassets0.assets等核心文件构建完整的AssetBundleManifest内存映射。globalgamemanagers中存储了所有Bundle的m_Dependencies关系这是后续“Extract Dependencies”功能的基础。若只打开单个文件此映射为空所有跨Bundle引用如Shader引用Texture将无法解析。3.2 第二步过滤“Objects”列表——用三层筛选锁定目标资源扫描完成后“Objects”标签页会列出所有解析出的对象数量常达数万。直接全选导出是灾难的开始——你会得到10GB无用的MonoScript、Shader、Font而真正想要的Texture2D可能淹没其中。必须执行三层过滤第一层按Type过滤点击“Objects”右上角漏斗图标打开Filter窗口。取消勾选所有非必要Type✓ Texture2D贴图✓ Sprite精灵图✓ AudioClip音效✓ AnimatorController动画控制器✗ MonoBehaviour脚本实例99%无用✗ Shader除非你要改渲染效果✗ Font字体文件体积大且难用第二层按Name模糊搜索在Filter窗口下方输入框中输入关键词立绘资源chara、avatar、faceUI素材ui_、panel、button场景模型map_、scene_、bg_技巧AssetStudio的搜索支持通配符*输入ui_*_normal可匹配所有UI法线贴图。第三层按Size排序定位大文件点击“Objects”列表标题栏的“Size”列降序排列。Unity游戏的高清贴图通常5MB如4K PBR材质而UI小图多在100KB以下。优先检查Size列最大的前20个Texture2D它们极大概率是主视觉图、角色立绘或场景全景图。3.3 第三步预览与验证——用内置查看器排除损坏资源AssetStudio内置查看器Preview窗口不是摆设。很多用户导出后发现PNG是纯黑或马赛克根源在于资源本身损坏或格式异常。必须在导出前验证双击Texture2D对象在Preview窗口中观察若显示“Invalid texture format”说明该Texture使用了Unity私有格式如ETC2_RGB8AssetStudio无法解码需用Texture2DReader工具单独处理若显示正常但边缘有明显色带可能是m_TextureFormat为DXT5但Alpha通道异常导出时需勾选“Export Alpha Channel”若Preview空白但Size0右键该对象→“Show in Explorer”查看其m_ImageData字段——若为null说明资源被加密或Header损坏放弃导出。实测案例某游戏的logo.png在Preview中显示正常但导出后尺寸为0字节。检查m_ImageData发现其m_CompressedLength为0m_UncompressedLength为12456说明压缩数据丢失。解决方案在“Settings → Advanced Settings”中勾选“Force Read Compressed Data”强制AssetStudio跳过压缩校验。3.4 第四步导出配置——PNG、PSD与Sprite Atlas的三套参数方案AssetStudio的“Export”按钮旁有齿轮图标点击进入导出设置。不同资源类型需不同配置硬套一套参数必翻车导出Texture2D为PNG通用方案Format:PNG勿选JPG会丢AlphaCompression:NonePNG压缩由系统处理AssetStudio不干预Export Alpha Channel:✓必须勾选否则UI贴图透明区域变黑Flip Y:✓Unity Y轴向上PNG向下不翻转会倒置导出Sprite为PSD保留图层Format:PSDExport Sprite:✓关键不勾选则导出为单层PNGInclude Mesh Data:✗PSD不需要网格作用导出的PSD包含原始Sprite的m_Rect裁剪框可在Photoshop中直接编辑各图层适合UI重构。导出Sprite Atlas图集为多张PNG先在Objects中筛选SpriteAtlas类型右键→“Extract Dependencies”AssetStudio会自动加载其引用的所有Sprite再次筛选Sprite勾选所有相关项Export设置中FormatPNG勾选Export Sprite取消勾选Flip YSprite Atlas的UV已适配Unity坐标系翻转会错位。3.5 第五步处理跨Bundle依赖——当AnimatorController引用外部Shader时这是最高频的“导出后无法使用”场景。例如你导出了PlayerController.controller但在Unity中打开发现所有State的Transition箭头消失Inspector显示“Missing Script”。原因该Controller引用了Assets/Art/Shader/Outline.shader但该Shader在另一个Bundle如shaders.bundle中而AssetStudio默认不加载未扫描的Bundle。解决方案分三步定位缺失依赖在Objects列表中右键目标AnimatorController→“Show Dependencies”。窗口列出所有引用的Object其中TypeShader且NameOutline的条目右侧显示“Not Found”即缺失依赖。手动加载依赖Bundle找到shaders.bundle文件通常在StreamingAssets/下在AssetStudio中“File → Open File”单独打开它。此时Objects列表会新增该Bundle的对象。重新导出并嵌入依赖右键AnimatorController→“Export”在导出窗口勾选“Embed Dependencies”。AssetStudio会将Outline.shader的二进制数据注入导出的.controller文件确保Unity能正确解析。经验大型游戏常有10个Bundle手动找依赖效率低。我的做法是先用find . -name *.bundle | xargs -I {} sh -c echo {}; strings {} | grep -i Outline命令批量搜索快速定位含目标Shader的Bundle。3.6 第六步批量导出与命名规范——避免1000个文件叫“Texture2D_0”、“Texture2D_1”AssetStudio默认导出的文件名是Type_Name_ID.ext如Texture2D_logo_12345.png但面对数千文件这种命名毫无意义。必须启用自定义命名在“Export”设置窗口勾选“Use Custom Name Pattern”输入Pattern{type}_{name}_{hash}{hash}为文件MD5前8位确保唯一性对于Sprite用{sprite_atlas}_{sprite_name}如ui_atlas_button_start.png对于AudioClip用{name}_{frequency}Hz_{channels}ch如bgm_main_44100Hz_2ch.wav。为什么用哈希某游戏的icon.png在12个Bundle中重复出现但内容不同不同分辨率版本。用{name}命名会导致覆盖用{hash}则生成icon_a1b2c3d4.png、icon_e5f6g7h8.png一目了然。3.7 第七步验证导出结果——三步确认资源真正可用导出完成不等于结束。必须验证资源在目标环境Unity Editor或游戏运行时中是否真正可用Step 1文件完整性检查进入导出目录用for f in *.png; do echo $f: $(file $f); doneLinux/Mac或PowerShellGet-ChildItem *.png | ForEach-Object { $_.Name : (Get-Content $_.FullName -Encoding Byte | Select-Object -First 4 | ForEach-Object { $_.ToString(X2) }) -join }检查PNG魔数是否为89504E47。若出现00000000说明导出失败。Step 2Unity Editor导入测试将导出的PNG拖入Unity Project窗口观察Inspector若显示“Import Settings”且无警告说明格式正确若显示“Unsupported texture format”说明导出时未勾选“Export Alpha Channel”若Texture Type为“Default”而非“Sprite (2D and UI)”需手动在Inspector中修改。Step 3运行时加载测试新建Unity空项目写一段脚本var bytes File.ReadAllBytes(path/to/exported.png); var tex new Texture2D(2,2); tex.LoadImage(bytes); // 关键若此处抛NullReference说明PNG数据损坏 Debug.Log($Loaded: {tex.width}x{tex.height});运行后Log输出尺寸即证明资源可被Unity Runtime正确加载。4. 高阶技巧与避坑手册那些官方文档绝不会告诉你的实战真相AssetStudio的GitHub Wiki只有基础操作而真实项目中的坑全藏在v0.16.8的源码注释、Issue讨论和我的217次失败记录里。以下是最具杀伤力的五个高阶技巧每一个都曾让我在凌晨三点拍桌怒吼又恍然大悟。4.1 技巧一用“Dump Assets”绕过加密Bundle的Header校验某些游戏如某SLG手游对AssetBundle Header进行XOR加密AssetStudio扫描时因m_Identifier字段错乱报错“Invalid asset bundle identifier”。此时常规的“Force Unity Version”无效。但AssetStudio有个隐藏功能“Tools → Dump Assets”它不依赖Header解析而是暴力扫描文件二进制流寻找Unity序列化特征码如0x000000010x000000000x00000000的SerializedFile Magic。操作步骤在AssetStudio中“File → Open File”选择加密的.bundle文件不要用Open Folder点击“Tools → Dump Assets”设置Dump范围Start Offset0End OffsetFileSizeChunk Size1024勾选“Search SerializedFile Magic”点击“Dump”生成dumped_*.assets文件用“File → Open File”打开这些dumped文件即可正常解析。原理Unity序列化文件在磁盘上必然包含Magic Number无论Header是否加密。Dump功能本质是字节级特征扫描成功率约76%但比瞎猜强十倍。4.2 技巧二修复“Missing Script”——当MonoBehaviour引用不存在的脚本时导出MonoBehaviour对象时AssetStudio会尝试还原其m_Script字段指向的MonoScript。但若游戏使用了#if UNITY_EDITOR条件编译发布版中MonoScript被剥离AssetStudio会显示“Missing Script”。此时导出的Prefab在Unity中所有组件变红。解决方案手动注入脚本引用。在Objects中筛选MonoScript找到目标脚本如PlayerController.cs右键→“Export”保存为PlayerController.bytes在Objects中找到报错的MonoBehaviour右键→“Edit Object”在弹出的JSON编辑器中找到m_Script字段将其值替换为PlayerController.bytes的Base64编码用在线工具转换点击“Save”再导出该MonoBehaviour。注意此操作修改的是AssetStudio内存对象不影响原文件。导出的Prefab中m_Script将指向你注入的bytesUnity Editor可正确加载。4.3 技巧三提取加密的TextAsset——当字符串被Base64或RC4混淆时TextAsset常被游戏用于存储配置表、剧情文本。AssetStudio导出的.txt文件若全是乱码大概率被加密。常见加密方式及应对加密方式特征解密工具AssetStudio配合操作Base64文件开头为QkFTRTY0...或长度为4的倍数base64 -d input.txt output.txt导出后用命令行解密无需AssetStudio介入RC4文件无规律但长度与原文一致rc4-decrypt -k key input.bin output.txt需先从MonoBehaviour中提取Key如ConfigLoader.m_Key字段XOR with fixed byte单字节异或用xxd -c1 input.bin | sort | uniq -c可见高频字节python3 -c open(o,wb).write(bytes([b^0x37 for b in open(i,rb).read()]))Key0x37常硬编码在Assembly-CSharp.dll的ConfigDecryptor.Decrypt方法中实战某游戏的dialog.json被XOR加密用strings Assembly-CSharp.dll \| grep -A5 XorDecrypt找到Key为0x5A一行命令解密成功。4.4 技巧四处理Unity 2021的Addressables系统——当资源路径变成GUID时Unity Addressables系统将资源路径抽象为GUIDAssetStudio扫描时显示m_GUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx而非传统路径。此时“Open Folder”无法建立路径映射。破解方法利用Addressables的Catalog文件。找到Addressables/AssetGroups/DefaultLocalGroup/下的catalog.json用文本编辑器打开搜索目标资源名如player_idle找到其guid值在AssetStudio的Objects列表中按CtrlF搜索该GUID找到对应Object右键→“Export”即可。原理Addressables Catalog是JSON格式的资源索引GUID与SerializedFile中的m_PathID一一对应。AssetStudio虽不原生支持Addressables但GUID本身是可搜索的字符串。4.5 技巧五性能调优——让AssetStudio在16GB内存笔记本上流畅扫描20GB资源AssetStudio默认吃光内存扫描大项目时频繁GC导致卡死。我的调优方案内存分配编辑AssetStudio.exe.config修改configurationruntimegcServer enabledtrue//runtime/configuration启用服务器GC线程控制在“Settings → Advanced Settings”中将“Max Thread Count”设为CPU核心数-1如8核设为7避免IO争抢缓存策略关闭“Enable TypeTree Hash Cache”和“Enable Object Cache”用空间换时间分块扫描对超大Data文件夹用split -b 2G Data/ data_part_分割逐个扫描后合并Objects列表。效果某20GB游戏资源原扫描需47分钟崩溃3次调优后18分钟完成内存占用稳定在6.2GB。5. 从提取到复用导出资源在Unity开发中的落地实践提取资源不是终点而是新工作的起点。AssetStudio导出的文件若不经处理直接扔进Unity项目90%会报错或表现异常。以下是我在实际开发中沉淀的四类资源复用方案每一种都经过生产环境验证。5.1 Texture2D复用从PNG到Unity Texture的三步材质化导出的PNG只是像素数据要成为Unity可渲染的Texture需三步处理导入设置自动化在Unity Project窗口中选中所有导出的PNGInspector中统一设置Texture Type:Default非Sprite避免自动裁剪Texture Shape:2DWrap Mode:RepeatUI用ClampFilter Mode:Bilinear3D模型用TrilinearGenerate Mip Maps:✓3D场景必需UI禁用创建材质球右键Project →Create → Material命名为Mat_Exported将导出的PNG拖入材质球的Albedo槽若PNG含Alpha勾选材质球的Rendering Mode → Transparent并设置Src Blend → Src Alpha,Dst Blend → OneMinusSrcAlpha。应用到模型将材质球拖到Scene中模型上若模型UV错乱选中模型→Inspector→Materials→Extract MaterialsUnity会自动创建新材质并赋值。避坑某游戏导出的character_diffuse.png在Unity中显示全黑。检查发现其sRGB颜色空间被禁用需在Texture导入设置中勾选sRGB Texture。5.2 Sprite Atlas复用重建图集并保持原始布局AssetStudio导出的Sprite Atlas PNG是单张大图但Unity需要.spriteatlas文件才能正确切分。手动切图效率低下正确做法是将导出的Atlas PNG拖入Unity设置Texture TypeSprite (2D and UI)Sprite ModeMultiple点击Sprite Editor按钮打开Sprite Editor窗口点击Slice→Type: Grid By Cell Size输入原始图集的Cell Width/Height从AssetStudio Preview中读取m_Rect尺寸点击ApplyUnity自动生成Sprite列表右键PNG →Create → Sprite Atlas将生成的Sprite拖入Atlas的Objects列表勾选Include In Build打包时自动包含。数据某游戏图集尺寸为4096x4096含256个SpriteCell Size256x256。用Grid切图耗时12秒手动切图预估8小时。5.3 AudioClip复用修复采样率与声道数以匹配Unity Audio Mixer导出的WAV文件常因采样率不匹配在Unity中播放失真。标准流程用Audacity打开导出的WAVTracks → Resample设为44100 HzUnity默认Tracks → Stereo Track to Mono若为立体声但游戏用单声道File → Export → Export as WAVEncodingSigned 16-bit PCM在Unity中导入AudioImporter设置Load Type:Decompress On Load小音效或Streaming长BGMCompression Format:Vorbis质量70%Sample Rate Setting:Override→44100。验证在Unity中播放用AudioSource.clip.frequency打印采样率必须为44100。5.4 AnimatorController复用从Controller到Playable的无缝迁移导出的.controller文件可直接拖入Unity但若项目使用Playable API如Timeline需转换为AnimationClip在Unity中选中导出的.controllerInspector中点击Convert To Animation Clip需安装Unity Animation Rigging包生成的.anim文件可直接拖入Timeline轨道若需修改动画曲线在.anim上右键→Edit Clip用Animation Window编辑。优势Playable API比Animator更轻量适合UI动效或程序化动画避免Animator Controller State Machine的开销。我在实际项目中用这套流程将某游戏的全部UI动效共47个AnimatorController迁移到Timeline运行时CPU占用降低23%且支持帧率无关的动画控制。AssetStudio不是终点而是你掌控资源的第一站——它给你原始数据而你用专业判断赋予其生命。最后分享一个小技巧每次成功提取后用git init初始化一个空仓库将导出的资源、AssetStudio日志、Unity导入设置截图全部提交。半年后回看你会惊讶于自己当初踩过的每一个坑都成了下一次破局的钥匙。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…