Code Export For AI:一键打包项目代码,高效赋能AI编程助手

news2026/5/6 22:28:33
1. 项目概述与核心价值作为一个在开发一线摸爬滚打了十多年的老码农我深知一个痛点当你试图向AI助手无论是ChatGPT、Claude还是Cursor请教一个复杂的项目问题时最头疼的就是如何把整个项目的上下文“喂”给它。手动复制粘贴几十上百个文件不仅效率低下还容易遗漏关键文件导致AI给出的建议南辕北辙。为了解决这个“最后一公里”的交付问题我花时间打磨了一个名为Code Export For AI的Python工具。它的核心使命非常明确将任意项目文件夹或代码仓库一键打包成一个格式清晰、结构完整的单一文本文件让你能轻松地将整个代码库的上下文粘贴给AI进行高效的代码审查、调试或重构讨论。这个工具本质上是一个智能的代码“打包器”。它递归扫描你指定的目录自动过滤掉那些对理解代码逻辑毫无帮助的“噪音”文件比如node_modules、.git、图片、日志等然后将每个源文件用带语言标识的代码块包裹起来并附上其相对路径作为标题。最终输出一个可以直接复制粘贴的文本或者自动保存到文件。想象一下你正在为一个复杂的Bug焦头烂额现在只需要运行一条命令就能把整个项目的代码脉络清晰地呈现在AI面前让它帮你快速定位问题或提出重构方案这种效率提升是实实在在的。2. 核心设计思路与架构解析2.1 为什么是“格式化打包”而不是简单压缩很多人的第一反应可能是直接把项目文件夹打个ZIP包发给AI不就行了这里就涉及到AI模型特别是基于文本的LLM的工作方式。它们处理的是连续的文本流无法直接“解压”并浏览一个压缩包内的文件结构。即使有些高级工具能上传压缩包其内部的文件读取和上下文关联也远不如一个结构化的文本文件来得直观和可控。Code Export For AI的设计哲学是“为对话优化”。它生成的输出模拟了一个经验丰富的开发者在向同事解释项目结构时的叙述方式先看全景目录树输出开头是一个ASCII字符绘制的项目目录树让你和AI都能一眼看清项目的骨架。再看细节文件内容接着按照目录树的顺序逐个文件展示其内容。每个文件都以相对路径/文件名:作为标题内容则包裹在标准的Markdown代码块中并自动识别编程语言如python、javascript保证了在支持语法高亮的聊天界面中能有最佳的阅读体验。这种结构化的输出使得AI能够更好地理解文件之间的依赖和引用关系从而给出更精准的建议。例如当AI看到from utils.helpers import calculate这行导入语句时它能在上下文中快速找到utils/helpers.py文件理解calculate函数的实现进而分析调用是否合理。2.2 模块化与可配置性应对千变万化的项目不同技术栈的项目需要忽略的文件和目录天差地别。一个Python项目要忽略__pycache__和.pyc一个前端项目则要忽略node_modules和dist。为此工具采用了“配置驱动”的核心架构。核心模块main.py程序的入口负责解析命令行参数、初始化配置、协调整个导出流程。exporter/目录核心逻辑所在。processor.py承担最繁重的任务包括目录遍历、文件过滤、内容读取、格式化和最终输出的组装。这里实现了文件扩展名到编程语言标签的映射逻辑。config_loader.py负责从configs/文件夹加载和管理用户定义的配置文件。支持动态选择和合并配置。clipboard.py封装了跨平台的剪贴板操作优先使用pyperclip库并准备了各平台原生命令作为降级方案确保“复制到剪贴板”功能在任何环境下都尽可能可用。structure.py专门负责生成美观的ASCII目录树。配置系统的精妙之处 工具没有采用单一的、硬编码的配置文件而是在项目根目录下设计了一个configs/文件夹。你可以在这里放置多个.py文件例如python.py、frontend.py、java.py。每个文件都是一个独立的Python模块里面定义了针对特定技术栈的过滤规则。运行时你可以通过-c参数指定使用哪个配置如-c python。如果没指定工具会智能判断如果configs/里只有一个配置文件就自动使用它如果有多个则会弹出一个交互式菜单让你选择。这种设计极大地提升了工具的灵活性你可以为日常工作的不同项目类型创建“预设”一键切换。注意工具也保留了向后兼容性如果在configs/文件夹为空的情况下它会回退到寻找项目根目录下的config.py文件。但最佳实践是使用configs/文件夹来管理你的多个配置。3. 详细配置解析与实战调优配置文件是工具的灵魂理解每一个参数的含义能让你把它用得“出神入化”。我们以创建一个针对现代Web全栈项目Node.js后端 React前端的配置为例深入每个配置项。3.1 文件与目录过滤精准控制输出内容过滤是保证输出内容“干净”的关键。工具提供了三层过滤机制优先级从高到低分别是目录黑名单、文件名黑名单、扩展名黑名单。# configs/fullstack.py import os # 1. 扩展名黑名单排除非源代码文件 BLACKLIST_EXTENSIONS { # 图片、字体、媒体文件 png, jpg, jpeg, gif, bmp, svg, ico, webp, mp4, avi, mov, wmv, mp3, wav, ogg, woff, woff2, ttf, eot, # 文档、数据文件 pdf, doc, docx, xls, xlsx, ppt, pptx, csv, jsonl, # 可能包含大量数据非代码 # 编译产物、日志、缓存 log, tmp, cache, pyc, class, jar, war, # 系统文件 DS_Store, lnk, # 压缩包 zip, tar, gz, 7z, rar, } # 2. 目录黑名单跳过依赖、构建、版本控制等目录 BLACKLIST_DIRS { node_modules, # Node.js依赖 .git, # Git仓库 __pycache__, # Python字节码缓存 .venv, venv, env, # Python虚拟环境 dist, build, out, # 构建输出目录 coverage, .nyc_output, # 测试覆盖率报告 .idea, .vscode, # IDE配置可选有时包含有用设置 tmp, temp, # 临时目录 } # 3. 文件名黑名单排除特定文件 BLACKLIST_FILENAMES { package-lock.json, # 通常很大且对代码理解帮助不大 yarn.lock, .env, .env.local, .env.production, # 环境变量敏感 *.min.js, *.min.css, # 压缩后的资源文件 } FILENAME_FILTER_MODE exact # 或 contains。设为contains时文件名包含黑名单中任意字符串即被过滤。实操心得关于.env文件务必将其加入黑名单这是最重要的安全建议。.env文件通常包含数据库密码、API密钥等敏感信息。将其导出并粘贴到任何在线AI工具中会造成严重的安全泄露。工具默认配置可能不包含它你必须手动添加。FILENAME_FILTER_MODE的选用exact模式要求完全匹配文件名更精确。contains模式更灵活比如设置test可以过滤所有包含test的文件名如unit_test.py,integration.test.js适合快速排除所有测试文件。但要注意可能误伤如testament.py。IDE配置目录像.vscode/或.idea/里可能有有用的调试或任务配置。如果你希望AI也能参考这些配置来理解项目运行方式可以不把它们加入黑名单。但通常为了精简输出我会选择过滤掉。3.2 智能集成.gitignore的威力一个经常被忽略但极其强大的功能是.gitignore集成。当USE_GITIGNORE True时工具会读取项目根目录下的.gitignore文件并自动应用其中的忽略规则。USE_GITIGNORE True # 强烈建议保持为 True为什么这很重要一致性你的项目已经通过.gitignore定义了哪些文件不应该进入版本库通常是构建产物、依赖、本地配置、日志等。让导出工具遵循同一套规则保证了“版本控制视角”和“AI分析视角”的一致性。免维护很多现代框架和工具在初始化项目时会自动生成一个非常完善的.gitignore文件。启用此选项你就无需在工具的配置文件中重复定义这些规则减少了配置的冗余和出错可能。动态性如果项目中途增加了新的需要忽略的文件类型比如新增了一种日志格式你只需要更新.gitignore导出工具会自动生效无需修改配置文件。提示确保你运行导出命令时所在的目录或通过-d指定的目录是项目的根目录且根目录下存在.gitignore文件此功能才能正确工作。3.3 性能与可控性深度、大小与无扩展名文件处理大型项目或单体仓库时需要一些控制手段来避免导出过程卡住或输出文件过大。# 限制递归深度防止进入无底洞式的子目录 MAX_DEPTH 5 # 只探索到第5层子目录。 -1 表示无限制。 # 限制单个文件大小避免将巨大的数据库dump或日志文件读入内存 MAX_FILE_SIZE_MB 2 # 超过2MB的文件将被跳过 # 允许没有扩展名的特定文件被包含进来 ALLOWED_EXTENSIONLESS_FILES { Dockerfile, docker-compose.yml, # 实际上有扩展名但常被视为无扩展名关键文件 Makefile, README, LICENSE, Procfile, # 用于一些PaaS平台 .env.example, # 环境变量示例文件通常应包含 Jenkinsfile, }参数选择逻辑MAX_DEPTH对于结构清晰、层级不多的项目可以设为-1无限制。如果你在处理一个非常深层的、可能包含循环软链接或历史遗留的复杂目录树设置一个合理的深度如5或10可以防止脚本陷入死循环或遍历不必要的深层嵌套。MAX_FILE_SIZE_MB这个参数是内存安全和输出相关性的双重保障。AI模型的上下文窗口有限即使是128K、200K的模型一个几十MB的min.js或package-lock.json文件会瞬间挤占大量宝贵的Token却对代码理解帮助甚微。根据项目情况设置在1到5MB之间是合理的。如果你明确需要分析一个大文件可以临时调高此值或将其加入白名单通过修改代码逻辑。ALLOWED_EXTENSIONLESS_FILES很多重要的配置文件没有扩展名。这个集合就是它们的“白名单”。确保将你项目依赖的关键无扩展名文件加入其中。3.4 输出控制结构、内容与交付方式最后我们来配置输出的形式和目的地。# 输出目录和文件命名 OUTPUT_DIR ai_exports # 所有导出文件将放在这个总目录下 OUTPUT_FILENAME project_context.txt # 输出文件的基础名 # 输出内容控制 EXPORT_STRUCTURE True # 是否包含目录树 EXPORT_CONTENT True # 是否包含文件内容 SHOW_EMPTY_DIRS False # 在目录树中是否显示空文件夹通常不需要 INCLUDE_EMPTY_FILES False # 是否包含空文件仅列在目录树中无代码块 # 交付方式 CREATE_FILE True # 是否保存为文件 COPY_TO_CLIPBOARD True # 是否复制到剪贴板 MAX_CLIPBOARD_CHARS 450000 # 剪贴板内容字符数上限约对应~100K Token配置详解与避坑指南输出路径OUTPUT_DIR是基础目录。工具会在其下自动创建一个与配置文件名同名的子文件夹。例如使用configs/fullstack.py配置最终文件将保存在ai_exports/fullstack/project_context.txt。这很好地隔离了不同配置的导出结果。结构与内容分离EXPORT_STRUCTURE和EXPORT_CONTENT可以独立开关。有时你只想快速查看项目结构那就关掉EXPORT_CONTENT。注意如果两者都为False工具会提示你并自动将EXPORT_CONTENT设为True因为总得输出点东西。剪贴板安全限制MAX_CLIPBOARD_CHARS是一个重要的安全阀。某些操作系统或桌面环境对剪贴板内容大小有限制过大的内容可能导致复制失败甚至前端应用卡顿。此外直接向AI对话窗口粘贴超长文本也可能遇到问题。根据主流AI模型的上下文窗口大小如GPT-4 Turbo的128K Token约对应50-60万字符将此值设置在300000到500000之间是个安全的选择。如果你确信需要导出更大内容可以将其设为0来禁用限制。空文件和空目录对于代码审查空文件通常没有意义。建议将INCLUDE_EMPTY_FILES和SHOW_EMPTY_DIRS设为False让输出更简洁。4. 完整工作流程与实战操作理解了配置之后让我们从头到尾操作一遍看看如何将这个工具集成到你的日常开发流中。4.1 环境准备与工具获取首先确保你的系统已安装Python 3.10 或更高版本。这是运行该工具的基础。# 检查Python版本 python --version # 或 python3 --version接下来获取工具代码。推荐使用Git克隆仓库便于后续更新。git clone https://github.com/OlyoshaOlyosha/Code-Export-For-AI.git cd Code-Export-For-AI然后安装必要的依赖。工具核心依赖是colorama用于彩色终端输出。为了获得更稳定、跨平台的剪贴板支持强烈建议安装pyperclip。# 使用项目自带的requirements.txt安装推荐 pip install -r requirements.txt # 或者手动安装 pip install colorama pyperclip注意如果你在Linux系统上且没有安装pyperclip工具会尝试调用xclip或xsel命令来操作剪贴板。请确保你的系统已安装其中之一例如在Ubuntu/Debian上sudo apt install xclip。4.2 创建与定制你的配置文件进入项目目录你会看到configs/文件夹。里面可能已经有一些示例配置如default.py。我们建议复制一份并修改而不是直接修改原文件。cd Code-Export-For-AI cp configs/default.py configs/my_project.py然后用你喜欢的文本编辑器如VS Code、Vim、Sublime打开configs/my_project.py根据上一章节的指南修改其中的过滤规则、输出设置等参数使其贴合你的项目类型。例如如果你主要做数据科学可能需要把.ipynb(Jupyter Notebook) 从BLACKLIST_EXTENSIONS中移除并加入到语言映射中如果需要的话修改exporter/processor.py里的EXTENSION_LANGUAGE_MAP。4.3 运行导出命令行与交互式模式工具提供了两种运行方式直接命令行指定参数和交互式向导。方式一命令行高效适合自动化这是最快捷的方式尤其适合你已明确知道项目路径和配置时。# 基本用法指定项目目录、输出文件、配置名 python main.py -d /path/to/your/project -o ai_review.txt -c my_project # 参数解释 # -d, --directory: 要导出的项目根目录路径。如果省略会弹出文件夹选择对话框。 # -o, --output: 输出文件名。文件将保存在 OUTPUT_DIR/config_name/ 下。 # -c, --config: 配置文件名不含.py扩展名对应 configs/ 下的文件。方式二交互式向导无需记忆参数如果你不提供任何参数或者只提供部分参数工具会启动一个交互式向导引导你完成选择。python main.py运行后你可能会看到如果未指定-d会弹出一个图形化的文件夹选择窗口依赖Tkinter通常Python已自带让你浏览并选择项目目录。如果未指定-c且configs/文件夹下有多个.py配置文件工具会在终端列出它们并让你输入数字选择。随后工具开始扫描、过滤、处理文件并在控制台显示进度和最终统计信息处理了多少文件跳过了多少总字符数等。实战记录 假设我有一个Django项目在/home/user/my_django_app我创建了一个对应的配置configs/django.py。我可以这样运行python main.py -d /home/user/my_django_app -c django -o django_context_for_ai.txt处理完成后控制台输出类似[INFO] 使用配置: django [INFO] 开始扫描目录: /home/user/my_django_app [INFO] 忽略目录: .git, __pycache__, venv [INFO] 忽略文件扩展名: .pyc, .png, .jpg, .log [INFO] 扫描完成。找到 87 个文件跳过了 1242 个。 [INFO] 正在生成目录树和文件内容... [INFO] 输出已保存至: outputs/django/django_context_for_ai.txt [INFO] 内容已复制到剪贴板 (约 145, 678 字符)。 [INFO] 总耗时: 1.2 秒。现在我可以直接打开ChatGPT或Claude的对话窗口按下CtrlV(或CmdV)整个项目的结构化代码上下文就粘贴进去了。4.4 解读输出结果让我们看看生成的文件django_context_for_ai.txt里面是什么样子 # Project Directory Structure: my_django_app/ ├── manage.py ├── requirements.txt ├── my_django_app/ │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ ├── wsgi.py │ └── asgi.py ├── app1/ │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── app2/ │ └── ... └── static/ └── ... # BEGIN FILE CONTENTS manage.py: python #!/usr/bin/env python import os import sys def main(): os.environ.setdefault(DJANGO_SETTINGS_MODULE, my_django_app.settings) try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError(...) from exc execute_from_command_line(sys.argv) if __name__ __main__: main() my_django_app/settings.py: python Django settings for my_django_app project. import os from pathlib import Path BASE_DIR Path(__file__).resolve().parent.parent SECRET_KEY your-secret-key-here # 注意实际导出时应被过滤或替换 DEBUG True ALLOWED_HOSTS [] ... app1/models.py: python from django.db import models class Author(models.Model): name models.CharField(max_length100) email models.EmailField() def __str__(self): return self.name class Book(models.Model): title models.CharField(max_length200) author models.ForeignKey(Author, on_deletemodels.CASCADE) published_date models.DateField() ... 这个结构非常清晰。AI可以首先通过目录树了解项目组成然后按顺序阅读每个文件的代码。每个代码块都有正确的语言标识确保了在支持Markdown的聊天界面中能实现语法高亮极大地提升了代码的可读性。5. 高级技巧与疑难排查5.1 处理超大型项目与性能优化当你面对一个包含数万文件的大型仓库时直接导出可能会很慢甚至生成超大的输出文件。策略一利用MAX_DEPTH进行聚焦很多时候问题的根源只在项目的某几个层级。例如你只关心src/core/和src/utils/下的业务逻辑不关心深层的docs/或experiments/目录。将MAX_DEPTH设置为3或4可以快速将扫描范围限制在核心区域。策略二临时修改配置针对性导出不要试图一次导出所有东西。根据你当前要咨询AI的具体问题创建临时配置。问题关于API接口创建一个配置将BLACKLIST_DIRS中加入frontend/,static/,tests/只保留backend/,api/,routes/,controllers/,models/等目录。问题关于前端组件创建另一个配置只包含src/components/,src/styles/等。策略三分模块导出分批提问如果项目确实巨大可以考虑分模块导出。先导出核心模块A向AI提问并获得初步建议。然后在后续对话中你可以说“这是模块B的代码它依赖于之前讨论的模块A中的X类和Y函数。” 这样既能控制每次输入的上下文长度又能让AI基于之前的对话历史进行连贯分析。5.2 剪贴板复制失败怎么办这是跨平台工具常见的问题。工具已尽力通过pyperclip和原生命令降级方案来保证兼容性但某些特殊环境仍可能出错。排查步骤检查pyperclip安装首先确认pyperclip已正确安装 (pip list | grep pyperclip)。检查控制台输出工具运行后如果复制失败通常会在控制台打印警告信息提示它正在回退到哪种原生命令clip,pbcopy,xclip。Linux系统特定问题没有xclip或xsel安装它们。sudo apt install xclip(Debian/Ubuntu) 或sudo yum install xclip(RHEL/CentOS)。权限或显示问题如果你在SSH会话或无图形界面的服务器上运行剪贴板操作可能不可用。这是预期行为请依赖CREATE_FILE True将输出保存到文件然后手动用cat查看或scp传输。终极方案如果剪贴板始终不行可以设置COPY_TO_CLIPBOARD False然后打开输出的文本文件路径在控制台信息中手动全选复制。5.3 语言识别错误或缺失工具通过文件扩展名在exporter/processor.py的EXTENSION_LANGUAGE_MAP字典中查找对应的语言标签。如果你使用的语言或文件扩展名不在默认映射中代码块将没有语言标识影响高亮。解决方法 打开exporter/processor.py文件找到EXTENSION_LANGUAGE_MAP字典添加你的映射即可。# 在 exporter/processor.py 中 EXTENSION_LANGUAGE_MAP { .py: python, .js: javascript, .jsx: javascript, .ts: typescript, .tsx: typescript, .java: java, .cpp: cpp, .c: c, .h: c, .cs: csharp, .go: go, .rs: rust, .rb: ruby, .php: php, .html: html, .css: css, .scss: scss, .sql: sql, .json: json, .yaml: yaml, .yml: yaml, .toml: toml, .md: markdown, .sh: bash, .dockerfile: dockerfile, # 添加Dockerfile支持 dockerfile: dockerfile, # 无扩展名情况 .vue: vue, # 添加Vue.js单文件组件 .svelte: svelte, # 添加Svelte组件 # ... 添加你需要的映射 }修改后保存即可。这是一个一次性的操作之后所有使用该工具的导出都会应用新的映射。5.4 常见问题速查表问题现象可能原因解决方案运行后无任何输出直接退出未指定目录且系统无GUI如headless服务器无法弹出文件夹选择框使用-d参数明确指定项目路径。控制台提示“未找到配置文件”configs/文件夹为空且根目录下无config.py从仓库复制config.py.example到configs/文件夹内并重命名如default.py或自己创建一个。导出内容包含了许多node_modules或.git下的文件BLACKLIST_DIRS未正确设置或USE_GITIGNORE为False检查配置文件中BLACKLIST_DIRS是否包含node_modules和.git并确保USE_GITIGNORE True。生成的文本文件在聊天窗口中粘贴后格式混乱AI聊天界面可能对超长文本或某些特殊字符处理不佳1. 检查MAX_CLIPBOARD_CHARS是否过大尝试减小。2. 尝试先粘贴到纯文本编辑器如VS Code、记事本再复制一次有时能“净化”格式。3. 直接上传文件功能如果AI支持可能更可靠。处理速度非常慢扫描的目录非常大包含海量文件1. 使用MAX_DEPTH限制深度。2. 在BLACKLIST_DIRS中添加更多构建、缓存目录。3. 考虑在项目子目录上运行而非根目录。某些重要的无扩展名文件未被包含ALLOWED_EXTENSIONLESS_FILES集合中未包含该文件名将该文件名如Jenkinsfile,Procfile添加到配置文件的ALLOWED_EXTENSIONLESS_FILES集合中。6. 融入开发生命周期场景化应用这个工具的价值远不止于“把代码扔给AI”。它可以无缝融入你开发和协作的各个环节。场景一高效的AI结对编程当你使用Cursor或Copilot Chat在IDE内编程时遇到一个复杂函数需要重构但AI缺乏足够的模块上下文。你可以快速运行此工具将相关模块的代码导出然后粘贴到聊天框中附上你的问题“这是当前UserService和OrderService的代码我发现create_order函数存在重复验证逻辑且与用户状态耦合过紧。请基于这些上下文建议一个更清晰的重构方案将验证逻辑解耦。”场景二代码审查与知识传递团队来了新人你需要他快速理解一个核心模块。与其让他漫无目的地看代码你可以导出该模块的代码生成一个结构化的文档。你甚至可以在此基础上用AI生成模块的简要说明文档作为 onboarding 材料。场景三问题排查与求助线上出现一个Bug你需要向同事或技术社区求助。手动描述上下文费时费力。现在你可以导出相关服务、模型和日志配置的代码形成一个完整的“问题包”。这比截图或零散粘贴代码片段要专业和高效得多能极大提升获得有效帮助的几率。场景四教学与示例分享如果你是讲师或需要写技术博客这个工具能帮你快速整理示例项目的完整代码并以一种极其清晰的格式呈现给你的读者或学生。目录树让他们先建立整体认知再逐文件深入细节。这个工具解决的是一个非常具体但高频的痛点。它不改变你写代码的方式也不替代版本控制它只是在需要将代码“呈现”给另一个智能体无论是AI还是人时提供了一个极其高效的格式化管道。经过一段时间的实践你会发现它就像一把顺手的螺丝刀平时不起眼但在需要拧紧那颗特定螺丝时它无可替代。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2586055.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…