HaoMD:基于Tauri 2与AI的下一代高性能Markdown编辑器深度解析

news2026/4/29 19:51:19
1. 项目概述为什么我们需要另一个Markdown编辑器如果你和我一样是个常年与文字、代码和文档打交道的人那么你的电脑里大概率已经躺了好几个Markdown编辑器可能是轻量级的Typora功能强大的VS Code或者是某个在线协作工具。那么当我在GitHub上看到HaoMD这个项目时我的第一反应也是市面上已经这么多了为什么还要再造一个轮子但当我花了一周时间从源码构建、深度使用再到尝试扩展其AI功能后我意识到HaoMD的定位非常清晰它不是一个简单的文本编辑器而是一个以AI为核心驱动力的、面向深度写作和知识整理的“智能工作台”。它的野心在于将传统的Markdown编辑体验与当下最前沿的大语言模型能力无缝融合让你在记录和创作的同时就拥有一个随时待命的“副驾驶”。想象一下这个场景你正在撰写一份技术方案写到一半需要对某个复杂概念进行解释。传统流程是切到浏览器搜索阅读理解再组织语言写回来。而在HaoMD里你只需要选中那段话按下CmdL直接向AI提问“用更通俗的语言解释一下这个概念并补充一个现实中的例子。” 答案会实时插入你的文档侧边栏。这不仅仅是“集成”了一个聊天窗口而是将AI对话变成了写作流程中的一个原生操作极大地降低了“向外求助”的心智负担和操作成本。更关键的是它基于Tauri 2构建。这意味着它拥有接近原生应用的启动速度和性能同时保持了Web技术的灵活性和跨平台能力macOS/Windows/Linux。对于需要处理大型Markdown文件比如超过10MB的日志或长文档的用户来说基于CodeMirror 6的高性能引擎确保了流畅不卡顿的编辑体验这是许多基于Electron的编辑器难以做到的。所以HaoMD适合谁我认为是三类人一是需要频繁进行知识梳理和输出的内容创作者、开发者、学生二是对编辑器的性能和离线能力有要求的用户三是希望探索AI如何真正赋能日常写作流程的“极客”。如果你厌倦了在不同工具间反复横跳渴望一个集写作、思考、可视化于一体的统一环境那么HaoMD值得你花时间深入了解。2. 核心架构解析Tauri 2 React的现代桌面应用实践HaoMD的技术选型非常“现代”清晰地反映了当前桌面应用开发的一个高效路径。我们来拆解一下它的核心架构以及为什么这样的组合能带来优秀的体验。2.1 为什么是Tauri 2而不是Electron这是很多人的第一个疑问。Electron大名鼎鼎生态丰富但它的一个主要痛点是打包体积大和内存占用高因为它需要捆绑一个完整的Chromium浏览器实例。Tauri采取了截然不同的思路它使用各操作系统原生的Web视图在macOS上是WKWebView在Windows上是WebView2在Linux上是WebKitGTK来渲染界面而应用的后台逻辑则用Rust编写。这样做带来的直接好处是体积与性能最终生成的安装包可以小一个数量级。HaoMD的生产构建产物一个典型的桌面应用安装包可能只有几MB到十几MB而功能相似的Electron应用动辄上百MB。更小的体积意味着更快的下载、安装和启动速度。安全性Rust语言的内存安全特性使得构建的后端逻辑从根源上减少了内存泄漏、缓冲区溢出等常见安全漏洞的风险。Tauri在前端与后端的通信机制上也做了严格的安全约束。资源消耗由于共享了系统已有的Web引擎内存占用通常比独立Chromium实例的Electron应用更低。对于HaoMD这样一个强调“高性能”和“流畅编辑”的工具来说选择Tauri是合情合理的。它确保了即使在低配设备上打开一个几十万字的Markdown文件依然能保持跟手的响应。2.2 前端技术栈React 18 TypeScript Vite前端部分采用了非常主流且高效的组合React 18用于构建用户界面。其组件化模型非常适合编辑器这种拥有复杂状态如当前文件、编辑内容、AI会话、UI主题的应用。Hooks如useState,useEffect, 自定义Hooks让状态管理和副作用处理变得清晰。TypeScript为整个JavaScript代码提供了静态类型检查。这对于大型项目至关重要能在编码阶段就捕获许多潜在的错误比如错误的API调用、未定义的变量极大地提升了代码的健壮性和开发体验。浏览HaoMD的源码你会发现几乎所有的函数、组件Props、状态都有明确的类型定义。Vite作为构建工具和开发服务器。它提供了闪电般的冷启动和热更新HMR体验。在开发HaoMD时你修改前端代码几乎能实时在应用界面上看到变化这大大提升了开发效率。一个值得注意的细节是项目结构。它将核心的桌面应用放在/app目录下而将可能的Web版本放在/web-chat。这种分离有利于代码复用和不同目标的构建。/app/src/modules/目录下按功能模块AI、文件、导出等组织代码这是一种很好的关注点分离实践使得ai.ts、file.ts这样的模块职责清晰易于维护和测试。2.3 编辑器核心CodeMirror 6的深度定制编辑器是Markdown工具的灵魂。HaoMD没有使用简单的textarea也没有用Monaco EditorVS Code所用而是选择了CodeMirror 6。这是一个完全重构、模块化设计的现代代码编辑器组件。选择CodeMirror 6的理由可能包括轻量与高性能它的设计目标之一就是高效。对于渲染纯文本和Markdown语法高亮它比一些更重型的编辑器内核开销更小这直接支撑了“支持大文件10MB流畅编辑”的特性。极强的可扩展性通过“扩展”Extension系统可以非侵入式地添加功能。HaoMD实现的语法高亮、代码折叠、括号匹配、矩形选区、快捷键绑定等都是通过组合不同的CodeMirror扩展来实现的。这种架构让功能添加非常灵活。状态分离CodeMirror 6将编辑器状态文档内容、选区等与视图渲染完全分离。这使得实现“多标签页”编辑时可以轻松地在不同标签间切换和保存编辑器状态而无需重新初始化整个编辑器实例。在实际使用中你能感受到这种选择带来的好处编辑响应迅速滚动大型文档时没有明显的卡顿或延迟各种编辑操作如缩进、注释、移动行都非常跟手。实操心得编辑器性能调优在处理超大文件时即使有CodeMirror 6一些优化也是必要的。HaoMD可能或应该做了以下事情虚拟滚动只渲染视口内可见的行而不是整个文档。这是流畅滚动超大文件的关键。语法高亮异步化对于超长行或复杂语法高亮计算可能耗时将其放入Web Worker或使用异步方式避免阻塞主线程。防抖保存自动保存功能使用防抖debounce策略避免在用户快速输入时频繁进行磁盘I/O操作。 如果你基于类似技术栈开发编辑器这些点是必须考虑的。3. 核心功能深度体验与配置指南了解了骨架我们来看看血肉。HaoMD宣传的特性很多但哪些是真正好用、哪些有隐藏技巧我结合自己的重度使用来逐一拆解。3.1 AI助手集成从“玩具”到“生产力”的关键这是HaoMD区别于其他编辑器的最大亮点。它的AI功能不是简单嵌入一个聊天框而是做了深度整合。3.1.1 多提供商支持与配置HaoMD默认支持Dify和OpenAI兼容API。Dify是一个开源的LLM应用开发平台你可以用它来连接自己的模型如通过OpenAI API、Azure、或本地部署的Ollama。配置入口在设置 AI设置。配置Dify你需要一个Dify服务地址和API密钥。如果你使用云服务版Dify填入对应地址和Key即可。如果你在本地部署了Dify地址通常是http://localhost:3000。这里的优势是你可以在Dify上配置复杂的工作流和提示词然后直接在HaoMD中调用实现高度定制化的AI辅助。配置OpenAI兼容API除了官方的api.openai.com你还可以填入任何提供兼容接口的服务地址比如许多国内大模型平台或开源模型网关如FastChat、LocalAI。这大大拓宽了模型选择范围。配置时的注意事项API密钥安全这些密钥会存储在本地。HaoMD作为本地应用相对云端工具风险更低但仍建议使用有额度限制或专门为桌面应用创建的密钥。网络问题如果配置了需要特殊网络环境的API地址如OpenAI官方需要确保你的网络环境通畅。HaoMD本身不提供任何网络代理功能这需要用户在系统层面解决。模型选择在Dify中你可以选择不同的模型。对于写作辅助GPT-4、Claude 3或DeepSeek-V3这类长上下文、推理能力强的模型效果更好。对于简单的文本润色GPT-3.5或更小的模型可能性价比更高。3.1.2 三大核心AI功能场景文档对话CmdD这是最常用的功能。打开一个文档点击AI图标或按快捷键右侧会打开AI会话面板并且AI已经“看到”了你当前文档的全部内容。你可以直接问“总结这篇文档的核心观点”、“检查其中的技术错误”、“将其翻译成英文”。AI的回答会基于整个文档的上下文。它的精髓在于“基于目录的会话管理”每个文件夹下的对话历史是独立的这非常符合我们按项目整理知识的习惯。选区对话CmdL写作时选中一段让你不满意的文字按下CmdL输入你的要求“让这段话更简洁有力”、“将这段代码加上注释”、“反驳这个观点”。AI会针对你选中的部分进行优化或分析结果可以直接插入或替换原文。这个功能将AI从“聊天伙伴”变成了真正的“写作助手”。视觉理解这是一个惊喜功能。你可以将截图、图表拖入AI聊天窗口然后提问“这张图里展示了什么数据趋势”“根据这个架构图写一段说明文字。” 这对于处理技术文档、论文中的图表极其有用。3.1.3 高级技巧系统提示词与全局记忆系统提示词你可以在设置中为AI定义“角色”。比如你可以设置一个“技术文档审校员”角色提示词为“你是一名资深技术文档工程师请以严谨、清晰、无歧义的标准来审阅和修改文本专注于逻辑连贯性、术语准确性和语法规范性。” 之后所有在这个角色下的AI对话都会遵循这个指令让AI的输出更符合你的特定需求。全局记忆开启后AI会在跨对话中记住一些关键信息取决于实现可能是通过向量数据库存储对话摘要。这意味着你可以在一篇文档中告诉AI“我是前端开发者正在写React教程”在后续同目录甚至不同文档的对话中AI可能会沿用这个上下文提供更相关的建议。3.2 可视化图表让想法跃然纸上Markdown的短板之一是对复杂图表支持弱。HaoMD通过集成Mermaid和Mind Elixir很好地弥补了这一点。3.2.1 Mermaid图表在代码块中声明语言为mermaid即可绘制流程图、时序图、类图、甘特图等。graph TD A[需求分析] -- B(技术设计) B -- C{开发} C --|前端| D[React组件] C --|后端| E[API接口] D -- F[联调测试] E -- F F -- G[部署上线]使用技巧实时预览在编辑Mermaid代码时右侧预览窗会实时更新图表所见即所得。导出兼容导出的PDF和HTML会包含渲染好的图表图片。需要注意的是Word导出时Mermaid图表会被转换为PNG图片嵌入因此图表在Word中不可再编辑但保证了格式不丢失。主题适配Mermaid图表的样式会跟随HaoMD的深色/浅色主题自动切换保持视觉统一。3.2.2 思维导图Mind Map这是另一个杀手级功能。使用 mind 代码块可以用一种非常简洁的文本语法来定义思维导图。mind - 核心主题 - 主要分支1 - 子节点1.1 - 子节点1.2 - 主要分支2 - 子节点2.1 右侧预览会立即生成一个可交互的思维导图你可以用鼠标拖动节点、展开/折叠分支。这对于头脑风暴、文章大纲梳理、项目计划制定来说效率远超在纸上或单独的工具中画图因为它直接存在于你的文档中与上下文紧密结合。3.2.3 KaTeX数学公式对于理工科用户数学公式支持是刚需。HaoMD集成了KaTeX渲染速度极快。支持行内公式$Emc^2$和块级公式。$$ \int_{-\infty}^{\infty} e^{-x^2} dx \sqrt{\pi} $$在AI助手中你甚至可以用自然语言描述来生成公式例如输入“生成一个计算圆面积的公式”AI可能会返回$A \pi r^2$你可以直接复制使用。3.3 文件管理与媒体支持3.3.1 高效的文件操作内置文件浏览器左侧边栏的文件树让你无需离开应用就能管理项目目录下的所有Markdown文件很像一个轻量级的IDE。最近文件快速跳转避免在深层目录中寻找。多标签页这是处理多个相关文档时的必备功能。你可以同时打开项目README、设计文档、会议纪要并在它们之间快速复制粘贴参考对照。智能冲突检测当文件在HaoMD外部被修改比如用Git拉取了更新HaoMD会检测到并提示你避免覆盖他人的修改。3.3.2 丰富的媒体嵌入HaoMD对媒体文件的支持超出了我的预期。它不仅支持图片还直接支持音频和视频的嵌入与播放。音频![audio](./bgm.mp3)会在文档中渲染一个带有播放控制条播放/暂停、进度、音量的音频播放器。写技术教程时嵌入一段操作提示音或者写游记时嵌入环境音体验很棒。视频![video](./demo.mp4)会嵌入视频播放器。更实用的是你可以指定封面图![video|cover.png](./demo.mp4)在视频加载前或静止时显示一张自定义封面让文档更美观。图片尺寸控制通过![图片(50%)](./img.png)或![图片(400px)](./img.png)语法控制图片显示大小这在排版时非常方便。一个隐藏的细节这些媒体文件在导出为HTML时会被处理为audio和video标签导出为PDF时则会根据系统打印功能进行处理通常能正常显示但在Word导出时复杂的媒体嵌入可能会遇到兼容性问题这是所有Markdown转Word工具的普遍挑战。4. 从零开始开发环境搭建与项目运行指南如果你想自己构建HaoMD或者基于它的代码进行二次开发以下是详细的步骤和可能遇到的坑。4.1 环境准备你需要准备以下工具版本尽量与推荐一致以避免兼容性问题工具推荐版本作用安装/检查命令Node.js18.x 或 20.x (LTS)运行前端构建工具和包管理node --version包管理器npm (随Node安装) 或 bun安装JavaScript依赖npm --version或bun --versionRuststable 版本 (最新稳定版)编译Tauri桌面应用的后端rustc --version,cargo --version系统依赖根据操作系统而定Tauri编译所需的基础库详见下文4.1.1 安装Rust访问 rustup.rs 按照官方指引安装。在终端中运行提供的安装脚本即可。安装完成后务必重启终端让cargo和rustc命令生效。4.1.2 安装系统依赖这是最容易出错的一步Tauri需要一些本地工具链来编译和打包。macOS需要安装Xcode命令行工具。在终端运行xcode-select --install。如果已经安装过可以跳过。Windows需要安装Microsoft Visual Studio C 生成工具和WebView2。最简单的方法是安装 Visual Studio 2022 Build Tools 在安装时勾选“使用C的桌面开发”工作负载。WebView2通常是Windows 10/11自带的如果没有安装程序通常会提示或自动安装。Linux需要安装webkit2gtk、libayatana-appindicator等开发库。以Ubuntu/Debian为例可以运行sudo apt update sudo apt install libwebkit2gtk-4.1-dev \ build-essential \ curl \ wget \ libssl-dev \ libgtk-3-dev \ libayatana-appindicator3-dev \ librsvg2-dev其他发行版请参考 Tauri官方文档 的详细说明。4.2 获取代码与安装依赖克隆仓库git clone https://github.com/yf-hao/haomd.git cd haomd进入前端应用目录并安装依赖cd app # 注意核心代码在 app 子目录下 npm install # 或使用 bun install这个过程会下载所有Node.js模块React, CodeMirror, Mermaid等。如果网络不畅可以考虑配置npm镜像源或使用pnpm。常见问题1npm install失败错误信息涉及node-gyp这通常是编译原生模块如某些Node.js C插件失败。确保已安装上述系统依赖尤其是Windows的C生成工具或macOS的Xcode工具。有时需要以管理员权限运行终端。网络超时尝试使用npm install --registryhttps://registry.npmmirror.com或使用yarn、pnpm。权限问题Linux/macOS尽量不要用sudo安装npm包。如果遇到权限错误可以修复npm全局目录的权限或者使用nvm管理Node.js版本。4.3 运行与构建开发模式运行npm run tauri:dev这个命令会同时启动Vite开发服务器热更新前端代码和Tauri的桌面应用窗口。你会看到一个新的桌面应用窗口弹出这就是HaoMD的开发版本。此时你修改app/src/下的前端代码保存后应用会自动热重载无需重启。生产构建npm run tauri build这个过程会编译优化前端代码React, TypeScript。编译Rust后端代码为可执行文件。将前端资源打包并嵌入到可执行文件中。生成对应平台的安装包如macOS的.dmg/.appWindows的.msi/.exeLinux的.AppImage/.deb。 最终产物位于app/src-tauri/target/release/bundle/目录下。常见问题2tauri build失败Rust编译错误检查Rust版本是否为stable运行rustup update更新。错误信息通常会指向缺失的库根据提示安装对应的系统包。签名问题macOS如果要发布到App Store或进行公证需要配置代码签名。对于本地开发构建可以在tauri.conf.json中暂时禁用签名或使用临时证书。磁盘空间不足Rust编译会产生大量中间文件确保有足够的磁盘空间至少几个GB。4.4 项目结构导航理解项目结构有助于快速定位代码markdown/ ├── app/ # 【核心】桌面应用前端 │ ├── src/ │ │ ├── components/ # 通用UI组件按钮、模态框、侧边栏等 │ │ ├── modules/ # 【重点】功能模块这是业务逻辑核心 │ │ │ ├── ai/ # AI聊天、会话管理、API调用 │ │ │ ├── editor/ # 编辑器状态管理、快捷键、命令 │ │ │ ├── file/ # 文件读写、最近文件、冲突检测 │ │ │ └── export/ # PDF、HTML、Word导出逻辑 │ │ ├── hooks/ # 自定义React Hooks如useLocalStorage │ │ ├── config/ # 应用配置、主题定义、快捷键映射 │ │ └── types/ # TypeScript类型定义文件 │ ├── public/ # 静态资源图标、字体等 │ └── src-tauri/ # 【核心】Rust后端 │ ├── src/ # Rust业务逻辑文件系统操作、系统托盘等 │ ├── Cargo.toml # Rust项目依赖配置 │ └── tauri.conf.json # Tauri应用配置文件窗口设置、权限等 ├── web-chat/ # 可能存在的Web版本代码 └── package.json # 项目根目录的包管理文件通常定义workspace如果你想修改或添加功能重点关注两个地方app/src/modules/这里包含了主要的业务逻辑。例如想增加一个新的文件导出格式可以查看export.ts想修改AI行为看ai.ts。app/src-tauri/src/这里包含了需要与操作系统深度交互的功能。例如如果你想添加一个“获取系统剪贴板图片并插入”的功能就需要在这里用Rust实现一个命令Command然后在前端通过Tauri的API调用。5. 高级使用技巧与个性化配置掌握了基本功能后一些高级技巧能让你用得更顺手。5.1 快捷键精通脱离鼠标效率翻倍HaoMD提供了丰富的键盘快捷键。除了表格中列出的还有一些隐藏或需要习惯的操作导航在编辑器中Cmd[和Cmd]可以快速缩进/取消缩进列表或代码块。CtrlGWindows/Linux或CmdGmacOS可以跳转到指定行。编辑器操作CtrlDWindows/Linux或CmdDmacOS可以选中当前单词或下一个相同单词用于快速重命名。CtrlShiftLWindows/Linux或CmdShiftLmacOS可以选中所有相同单词进行批量编辑。AI操作在AI聊天输入框为空时按↑键可以快速填充上一条消息方便修改后重新发送。在AI生成内容时按CmdZmacOS或CtrlZWindows/Linux可以停止生成这个设计很贴心避免了AI“滔滔不绝”时无法打断的尴尬。自定义快捷键目前HaoMD似乎不支持图形化自定义快捷键。但作为开源项目你可以通过修改源码来实现。快捷键配置通常位于app/src/config/目录下的某个文件中如shortcuts.ts你可以按照现有格式添加或修改键位绑定。5.2 主题与外观深度定制HaoMD支持多主题和深色模式。除了在设置中切换你还可以进行更深入的定制自定义CSS高级用户可以通过开发者工具在应用内按CmdOptionI或CtrlShiftI检查元素找到对应的CSS类名然后编写自定义的CSS样式片段。虽然应用没有提供直接的CSS注入入口但你可以通过修改源码中的主题文件可能在app/src/config/theme.ts或app/src/styles/目录下来永久改变配色、字体等。自定义背景这个功能非常提升幸福感。你可以将喜欢的图片、低饱和度的纹理图甚至动态壁纸如果支持设置为编辑器和AI窗口的背景。建议选择对比度低、不干扰文字阅读的图片并适当调整透明度营造独特的写作氛围。5.3 与外部工作流集成HaoMD是一个本地应用但它可以成为你工作流中的一环。版本控制由于它直接操作本地文件你可以方便地使用Git进行版本管理。在HaoMD中编辑README.md或设计文档然后在终端中git commit无缝衔接。与笔记软件联动如果你使用Obsidian、Logseq等双链笔记软件可以将HaoMD设置为这些笔记库中Markdown文件的默认外部编辑器。HaoMD强大的编辑和AI功能可以作为这些笔记软件的有力补充。自动化脚本利用Tauri暴露的Rust后端能力理论上可以编写脚本通过命令行参数调用HaoMD执行一些自动化任务比如批量处理一批Markdown文件用AI进行摘要生成等。这需要一定的开发能力但潜力巨大。5.4 性能优化与问题排查即使应用本身性能不错在处理极端情况或特定环境时也可能遇到问题。问题排查表现象可能原因解决方案应用启动缓慢首次启动需初始化杀毒软件扫描系统资源不足。等待首次初始化完成将应用添加到杀毒软件白名单关闭不必要的后台程序。编辑超大文件卡顿文件超过编辑器优化阈值语法高亮复杂硬件性能瓶颈。尝试关闭实时预览将文件拆分为多个小文件检查是否开启了过多浏览器开发者工具。AI功能无响应API密钥错误或过期网络连接问题AI服务提供商故障。检查设置 AI设置中的API配置测试网络连通性如能否访问API地址查看服务商状态页面。导出PDF格式错乱使用了不兼容的CSS样式系统打印服务问题PDF阅读器兼容性问题。尝试导出为HTML查看是否正常以排除内容问题更新操作系统尝试使用其他PDF阅读器打开。Word导出图片缺失使用了远程图片链接图片路径包含中文或特殊字符。Word导出目前主要支持本地图片请先将远程图片下载到本地并更新链接避免在路径中使用中文和特殊符号。自定义背景不显示图片路径错误图片格式不支持图片尺寸过大。使用绝对路径或相对于项目目录的正确相对路径使用常见格式PNG, JPG尝试压缩图片尺寸。我的个人优化建议定期清理会话历史AI对话历史可能会占用一定存储空间。如果不需要旧对话可以在对应的目录会话面板中手动清理。管理打开的文件标签避免同时打开数十个大型文件这会增加内存占用。善用“最近文件”功能而非一直保持打开状态。关注更新开源项目迭代快定期从GitHub拉取最新代码并重新构建可以获取性能改进和新功能。6. 总结与未来展望经过这段时间的深度使用HaoMD给我的感觉更像是一个“瑞士军刀”式的写作增强工具而非一个单纯的编辑器。它成功地将流畅的本地编辑体验、强大的可视化表达能力和深度整合的AI辅助这三者结合在了一起。对于追求效率和深度的写作者来说这种“All-in-One”的设计减少了工具切换的摩擦让思维能更连贯地流淌到文档中。它的优势很明显性能出色、AI集成度高、可视化功能实用、开源可定制。但作为一款处于活跃开发中的软件它也有一些可以改进的地方例如插件系统还在路线图上这意味着用户暂时无法像VS Code那样自由扩展功能移动端支持也尚未到来限制了跨设备同步编辑的体验Word导出等高级功能虽然已经实现但在处理极端复杂的格式时可能仍需打磨。我个人最期待的是插件系统的落地。一旦开放了插件生态社区就可以贡献无数可能集成日历做日记、连接数据库画图表、接入翻译服务、甚至与音乐播放器联动。那时的HaoMD潜力将不可估量。如果你是一名开发者我强烈建议你尝试从源码构建并体验它。你不仅能获得一个强大的工具还能从中学习到Tauri 2、React 18、CodeMirror 6等现代技术栈在一个真实产品中是如何协同工作的。如果你是一名普通用户去项目的Release页面下载一个预编译的版本它已经足够强大能显著提升你的Markdown写作和知识管理体验。最后开源项目的生命力在于社区。如果你在使用中发现了Bug或者有很棒的功能想法不妨去GitHub仓库提交一个Issue甚至动手写代码提一个Pull Request。也许你贡献的几行代码就会成为下一个让无数用户惊喜的特性。

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