From 3ce68518d6a0935ae4e2cfd1cd6029cccc7883ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=91=E8=90=8C=E8=8A=BD?= <3205788256@qq.com> Date: Sat, 28 Mar 2026 21:00:16 +0800 Subject: [PATCH] update: 2026-03-28 21:00 --- .../mengyanote/.obsidian/core-plugins.json | 18 +- .../data/mengyanote/.obsidian/workspace.json | 169 +++---- .../Claude Code常用命令.md | 0 .../Codex常用命令.md | 0 .../Gemini Cli常用命令.md | 0 .../OpenClaw常用命令.md | 0 .../OpenCode常用命令.md | 0 .../AI提示词工程/开发前后端分离网站提示词.md | 3 - .../data/mengyanote/AI/Iflow常用命令.md | 66 --- .../data/mengyanote/AI/LLM 核心概念速查表.md | 78 +++ .../AI绘画提示词.md | 0 .../AI/提示词工程/PWA应用启动动画.md | 8 + .../AI/提示词工程/SSH提交注意事项.md | 1 + .../AI/提示词工程/一键启动前后端脚本.md | 1 + .../AI/提示词工程/代码使用中文注释.md | 1 + .../AI/提示词工程/初始化项目Git配置.md | 35 ++ .../AI/提示词工程/前端进入管理员后台方式.md | 1 + .../AI/提示词工程/后端API部署成docker容器.md | 1 + .../AI/提示词工程/开发Windows软件细节.md | 1 + .../AI/提示词工程/提交代码到自建Gitea仓库.md | 1 + .../AI/提示词工程/文档类网页模板.md | 271 +++++++++++ .../AI/提示词工程/树萌芽のDokcer部署流程.md | 1 + .../AI/提示词工程/模块化代码架构.md | 1 + .../mengyanote/AI/提示词工程/网站logo绘画.md | 1 + .../mengyanote/AI/提示词工程/项目英文起名.md | 1 + .../data/mengyanote/Git/GitHub优秀项目.md | 10 + .../Git/Git使用SSH提交下载方法总结.md | 4 +- .../Pasted image 20260324211445.png | Bin 0 -> 78071 bytes .../Pasted image 20260324211458.png | Bin 0 -> 78071 bytes .../Pasted image 20260325202027.png | Bin 0 -> 43349 bytes .../{ => Windows}/刷新浏览器缓存.md | 0 .../远程访问家中局域网环境方法总结.md | 0 .../从「敲下一个 URL」到「页面出现在屏幕」整条链路全景.md | 0 .../网络模型/OSI 七层模型是什么?.md | 0 .../实习求职/通用面试八股/Agent面试八股.md | 451 ++++++++++++++++++ .../实习求职/面试八股/计算机面试经典八股.md | 121 ----- .../27双非本一腾讯IEG游戏安全后台实习面经.md | 3 - .../面试经历/运维开发/momenta-运维开发二面.md | 24 + ...东科技部门-云事业部门-技术运维(实则AI agent开发工程师).md | 57 +++ .../{各平台原生桌面应用.md => 各平台原生技术栈.md} | 0 .../data/mengyanote/收藏的DNS集合.md | 20 + .../data/mengyanote/收集的DOT和DOH.md | 9 - .../数据库/小萌芽数据库状态检测_2026-03-04.md | 172 ------- .../濒死体验.md | 0 .../疯言疯语.md | 0 .../美团面试.md | 0 .../mengyanote/树萌芽の小本本/树萌芽の域名.md | 19 +- .../账号合集}/AI账号/DeepSeek账号.md | 0 .../账号合集}/AI账号/GLM账号.md | 0 .../账号合集}/AI账号/Qwen账号.md | 3 +- .../账号合集}/AI账号/豆包账号.md | 0 .../账号合集/邮箱账号/QQ邮箱.md | 14 + .../账号合集/邮箱账号/微软邮箱.md | 23 + .../mengyanote/树萌芽の小本本/重要信息记录.md | 12 +- .../2025年蓝桥杯PythonB组真题解析/1.攻击次数.md | 26 + .../mengyanote/算法与数据结构/蓝桥杯冲刺.md | 69 +++ .../mengyanote/算法与数据结构/蓝桥杯冲刺1.md | 208 ++++++++ .../mengyanote/算法与数据结构/蓝桥杯冲刺2.md | 112 +++++ .../mengyanote/算法与数据结构/蓝桥杯难度.md | 40 ++ .../Vercel}/Vercel 项目添加自定义域名完整指南.md | 0 .../data/mengyanote/项目策划/万象口袋.md | 56 +++ .../mengyanote/项目策划/萌芽Ping-网页监控.md | 1 + .../data/mengyanote/项目策划/萌芽小店.md | 61 +++ .../萌芽桌面启动器.md} | 0 .../项目策划/萌芽账户统一认证中心.md | 94 ++++ .../data/mengyanote/📒萌芽笔记.md | 16 +- 66 files changed, 1780 insertions(+), 504 deletions(-) rename mengyanote-backend/data/mengyanote/AI/{ => AI控制台工具常用命令总结}/Claude Code常用命令.md (100%) rename mengyanote-backend/data/mengyanote/AI/{ => AI控制台工具常用命令总结}/Codex常用命令.md (100%) rename mengyanote-backend/data/mengyanote/AI/{ => AI控制台工具常用命令总结}/Gemini Cli常用命令.md (100%) rename mengyanote-backend/data/mengyanote/AI/{ => AI控制台工具常用命令总结}/OpenClaw常用命令.md (100%) rename mengyanote-backend/data/mengyanote/AI/{ => AI控制台工具常用命令总结}/OpenCode常用命令.md (100%) delete mode 100644 mengyanote-backend/data/mengyanote/AI/AI提示词工程/开发前后端分离网站提示词.md delete mode 100644 mengyanote-backend/data/mengyanote/AI/Iflow常用命令.md create mode 100644 mengyanote-backend/data/mengyanote/AI/LLM 核心概念速查表.md rename mengyanote-backend/data/mengyanote/AI/{AI提示词工程 => 提示词工程}/AI绘画提示词.md (100%) create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/PWA应用启动动画.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/SSH提交注意事项.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/一键启动前后端脚本.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/代码使用中文注释.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/初始化项目Git配置.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/前端进入管理员后台方式.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/后端API部署成docker容器.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/开发Windows软件细节.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/提交代码到自建Gitea仓库.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/文档类网页模板.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/树萌芽のDokcer部署流程.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/模块化代码架构.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/网站logo绘画.md create mode 100644 mengyanote-backend/data/mengyanote/AI/提示词工程/项目英文起名.md create mode 100644 mengyanote-backend/data/mengyanote/Git/GitHub优秀项目.md create mode 100644 mengyanote-backend/data/mengyanote/Pasted image 20260324211445.png create mode 100644 mengyanote-backend/data/mengyanote/Pasted image 20260324211458.png create mode 100644 mengyanote-backend/data/mengyanote/Pasted image 20260325202027.png rename mengyanote-backend/data/mengyanote/{ => Windows}/刷新浏览器缓存.md (100%) rename mengyanote-backend/data/mengyanote/{ => 内网穿透}/远程访问家中局域网环境方法总结.md (100%) rename mengyanote-backend/data/mengyanote/实习求职/{面试八股 => 牛客八股}/HTTP 与HTTPS/从「敲下一个 URL」到「页面出现在屏幕」整条链路全景.md (100%) rename mengyanote-backend/data/mengyanote/实习求职/{面试八股 => 牛客八股}/网络模型/OSI 七层模型是什么?.md (100%) create mode 100644 mengyanote-backend/data/mengyanote/实习求职/通用面试八股/Agent面试八股.md delete mode 100644 mengyanote-backend/data/mengyanote/实习求职/面试八股/计算机面试经典八股.md create mode 100644 mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/momenta-运维开发二面.md create mode 100644 mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/京东一面京东科技部门-云事业部门-技术运维(实则AI agent开发工程师).md rename mengyanote-backend/data/mengyanote/技术原理解析/{各平台原生桌面应用.md => 各平台原生技术栈.md} (100%) create mode 100644 mengyanote-backend/data/mengyanote/收藏的DNS集合.md delete mode 100644 mengyanote-backend/data/mengyanote/收集的DOT和DOH.md delete mode 100644 mengyanote-backend/data/mengyanote/数据库/小萌芽数据库状态检测_2026-03-04.md rename mengyanote-backend/data/mengyanote/{树萌芽の收藏夹 => 树萌芽の喃喃自语}/濒死体验.md (100%) rename mengyanote-backend/data/mengyanote/{树萌芽の收藏夹 => 树萌芽の喃喃自语}/疯言疯语.md (100%) rename mengyanote-backend/data/mengyanote/{树萌芽の收藏夹 => 树萌芽の喃喃自语}/美团面试.md (100%) rename mengyanote-backend/data/mengyanote/{AI => 树萌芽の小本本/账号合集}/AI账号/DeepSeek账号.md (100%) rename mengyanote-backend/data/mengyanote/{AI => 树萌芽の小本本/账号合集}/AI账号/GLM账号.md (100%) rename mengyanote-backend/data/mengyanote/{AI => 树萌芽の小本本/账号合集}/AI账号/Qwen账号.md (89%) rename mengyanote-backend/data/mengyanote/{AI => 树萌芽の小本本/账号合集}/AI账号/豆包账号.md (100%) create mode 100644 mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/QQ邮箱.md create mode 100644 mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/微软邮箱.md create mode 100644 mengyanote-backend/data/mengyanote/算法与数据结构/2025年蓝桥杯PythonB组真题解析/1.攻击次数.md create mode 100644 mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺.md create mode 100644 mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺1.md create mode 100644 mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺2.md create mode 100644 mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯难度.md rename mengyanote-backend/data/mengyanote/{ => 解决方案/Vercel}/Vercel 项目添加自定义域名完整指南.md (100%) create mode 100644 mengyanote-backend/data/mengyanote/项目策划/万象口袋.md create mode 100644 mengyanote-backend/data/mengyanote/项目策划/萌芽Ping-网页监控.md create mode 100644 mengyanote-backend/data/mengyanote/项目策划/萌芽小店.md rename mengyanote-backend/data/mengyanote/{邮箱发信.md => 项目策划/萌芽桌面启动器.md} (100%) create mode 100644 mengyanote-backend/data/mengyanote/项目策划/萌芽账户统一认证中心.md diff --git a/mengyanote-backend/data/mengyanote/.obsidian/core-plugins.json b/mengyanote-backend/data/mengyanote/.obsidian/core-plugins.json index cebf8c6..cb59272 100644 --- a/mengyanote-backend/data/mengyanote/.obsidian/core-plugins.json +++ b/mengyanote-backend/data/mengyanote/.obsidian/core-plugins.json @@ -1,29 +1,29 @@ { "file-explorer": true, "global-search": true, - "switcher": true, + "switcher": false, "graph": false, - "backlink": true, + "backlink": false, "canvas": false, - "outgoing-link": true, - "tag-pane": true, + "outgoing-link": false, + "tag-pane": false, "properties": false, "page-preview": true, - "daily-notes": false, + "daily-notes": true, "templates": false, - "note-composer": true, + "note-composer": false, "command-palette": true, "slash-command": false, "editor-status": true, "bookmarks": true, "markdown-importer": false, "zk-prefixer": false, - "random-note": false, - "outline": false, + "random-note": true, + "outline": true, "word-count": true, "slides": false, "audio-recorder": false, - "workspaces": false, + "workspaces": true, "file-recovery": true, "publish": false, "sync": false, diff --git a/mengyanote-backend/data/mengyanote/.obsidian/workspace.json b/mengyanote-backend/data/mengyanote/.obsidian/workspace.json index 7b4dd60..56575e2 100644 --- a/mengyanote-backend/data/mengyanote/.obsidian/workspace.json +++ b/mengyanote-backend/data/mengyanote/.obsidian/workspace.json @@ -7,36 +7,22 @@ "id": "f6c05057a0ef99fa", "type": "tabs", "children": [ - { - "id": "b2b8008d42f651c2", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "AI/Codex常用命令.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Codex常用命令" - } - }, { "id": "1bf536b33f2e3608", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "AI/控制台agent工具安装教程.md", + "file": "项目策划/萌芽小店.md", "mode": "source", - "source": false + "source": false, + "backlinks": false }, "icon": "lucide-file", - "title": "控制台agent工具安装教程" + "title": "萌芽小店" } } - ], - "currentTab": 1 + ] } ], "direction": "vertical" @@ -50,7 +36,7 @@ "type": "tabs", "children": [ { - "id": "f1c17e2d203acce4", + "id": "43d843d674fbb600", "type": "leaf", "state": { "type": "file-explorer", @@ -80,7 +66,7 @@ } }, { - "id": "29759c335a3c0889", + "id": "944eca947358e36a", "type": "leaf", "state": { "type": "bookmarks", @@ -104,114 +90,83 @@ "type": "tabs", "children": [ { - "id": "330eb3c82c280cae", + "id": "e1bae69cab499c57", "type": "leaf", "state": { - "type": "backlink", + "type": "outline", "state": { - "file": "Linux/树萌芽のLinux折腾/Linux一些奇奇怪怪的命令.md", - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical", - "showSearch": false, - "searchQuery": "", - "backlinkCollapsed": false, - "unlinkedCollapsed": true - }, - "icon": "links-coming-in", - "title": "Linux一些奇奇怪怪的命令 的反向链接列表" - } - }, - { - "id": "a11bb24aba14d458", - "type": "leaf", - "state": { - "type": "outgoing-link", - "state": { - "linksCollapsed": false, - "unlinkedCollapsed": true - }, - "icon": "links-going-out", - "title": "出链" - } - }, - { - "id": "66a43be089eb76fa", - "type": "leaf", - "state": { - "type": "tag", - "state": { - "sortOrder": "frequency", - "useHierarchy": true, + "file": "项目策划/萌芽小店.md", + "followCursor": false, "showSearch": false, "searchQuery": "" }, - "icon": "lucide-tags", - "title": "标签" + "icon": "lucide-list", + "title": "萌芽小店 的大纲" } } ] } ], "direction": "horizontal", - "width": 300, - "collapsed": true + "width": 300 }, "left-ribbon": { "hiddenItems": { - "switcher:打开快速切换": false, "command-palette:打开命令面板": false, "remotely-save:Remotely Save": false, - "obsidian42-brat:BRAT": false + "obsidian42-brat:BRAT": false, + "workspaces:管理工作区布局": false, + "random-note:开始漫游笔记": false, + "daily-notes:打开/创建今天的日记": false } }, "active": "1bf536b33f2e3608", "lastOpenFiles": [ - "AI/AI账号/Qwen账号.md", - "CloudFlare/Cloudflare Tunnel使用限制.md", - "AI/大模型系统提示词教程.md", - "刷新浏览器缓存.md", - "AI/Codex常用命令.md", - "AI/Gemini Cli常用命令.md", - "Git/Git使用SSH提交下载方法总结.md", - "Linux/Linux常用关机命令.md", - "README.md", - "数据库/小萌芽数据库状态检测_2026-03-04.md", - "Docker/优秀好用的Docker镜像/Postgres-数据库.md", - "临时/灵创盘底部说明.md", - "AI/Claude Code常用命令.md", - "AI/AI大模型应用实现方式拆解.md", + "树萌芽の小本本/账号合集/邮箱账号/微软邮箱.md", + "收藏的DNS集合.md", + "开源社交账号注册方式一览.md", + "未命名.md", + "树萌芽の小本本/账号合集/邮箱账号/QQ邮箱.md", + "树萌芽の小本本/账号合集/AI账号/豆包账号.md", + "树萌芽の小本本/账号合集/邮箱账号", + "树萌芽の小本本/账号合集/邮箱账号.md", + "树萌芽の小本本/账号合集/AI账号/DeepSeek账号.md", + "树萌芽の小本本/账号合集/AI账号/GLM账号.md", + "树萌芽の小本本/账号合集/AI账号/Qwen账号.md", + "树萌芽の小本本/账号合集", "AI/控制台agent工具安装教程.md", - "AI/大模型上下文记忆功能的实现.md", - "AI/大模型驱动应用功能的实现.md", - "AI/AI提示词工程/AI绘画提示词.md", - "AI/阿里云百炼平台模型API调用示例.md", - "AI/AI提示词工程/开发前后端分离网站提示词.md", - "AI/AI账号/豆包账号.md", - "AI/AI账号/GLM账号.md", - "AI/AI账号/DeepSeek账号.md", - "编程语言/前端/隐藏网页滚动条.md", - "编程语言/前端/前端html导入css和js方法.md", - "Vercel 项目添加自定义域名完整指南.md", - "博客文章", - "Linux/LXC", - "数据库/SQL Server", - "树萌芽の收藏夹", - "树萌芽の奇思妙想", - "树萌芽の喃喃自语", - "树萌芽の小本本", - "MarkDown", - "内网穿透/VPN", - "VPN", + "项目策划/万象口袋.md", + "项目策划/萌芽账户统一认证中心.md", + "项目策划/萌芽桌面启动器.md", + "项目策划/萌芽Ping-网页监控.md", + "项目策划/萌芽小店.md", + "Git/GitHub优秀项目.md", + "📒萌芽笔记.md", + "AI/提示词工程/树萌芽のDokcer部署流程.md", + "Pasted image 20260325202027.png", + "树萌芽の小本本/树萌芽の英文名取名-ChatGPT.md", + "树萌芽の小本本/重要信息记录.md", + "Pasted image 20260324211458.png", + "Pasted image 20260324211445.png", + "实习求职/面试经历/运维开发/京东一面京东科技部门-云事业部门-技术运维(实则AI agent开发工程师).md", + "实习求职/通用面试八股/Agent面试八股.md", + "实习求职/通用面试八股", + "AI/大模型系统提示词教程.md", + "AI/提示词工程/提交代码到自建Gitea仓库.md", + "AI/LLM 核心概念速查表.md", + "AI/AI控制台工具常用命令总结", + "实习求职/面试经历/运维开发", + "实习求职/面试经历/后端开发", + "实习求职/牛客八股/网络模型", + "实习求职/牛客八股/HTTP 与HTTPS", + "实习求职/牛客八股", + "算法与数据结构/2022年蓝桥杯PythonB组真题解析", + "Pasted image 20260321154949.png", + "Pasted image 20260321155016.png", + "Pasted image 20260321162021.png", + "Pasted image 20260321162029.png", + "Pasted image 20260322172732.png", "Minecraft/基岩版服务器/NukkitLearn/images/5-04.png", - "Minecraft/基岩版服务器/NukkitLearn/images/5-03.png", - "Minecraft/基岩版服务器/NukkitLearn/images/5-02.png", - "Minecraft/基岩版服务器/NukkitLearn/images/5-01.png", - "Minecraft/基岩版服务器/NukkitLearn/images/2-01.png", - "Minecraft/基岩版服务器/NukkitLearn/images/1-10.png", - "Minecraft/基岩版服务器/NukkitLearn/images/1-09.png", - "Minecraft/基岩版服务器/NukkitLearn/images/1-08.png", - "Minecraft/基岩版服务器/NukkitLearn/images/1-07.png", - "Minecraft/基岩版服务器/NukkitLearn/images/1-06.png" + "Minecraft/基岩版服务器/NukkitLearn/images/5-03.png" ] } \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/Claude Code常用命令.md b/mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/Claude Code常用命令.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/Claude Code常用命令.md rename to mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/Claude Code常用命令.md diff --git a/mengyanote-backend/data/mengyanote/AI/Codex常用命令.md b/mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/Codex常用命令.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/Codex常用命令.md rename to mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/Codex常用命令.md diff --git a/mengyanote-backend/data/mengyanote/AI/Gemini Cli常用命令.md b/mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/Gemini Cli常用命令.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/Gemini Cli常用命令.md rename to mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/Gemini Cli常用命令.md diff --git a/mengyanote-backend/data/mengyanote/AI/OpenClaw常用命令.md b/mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/OpenClaw常用命令.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/OpenClaw常用命令.md rename to mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/OpenClaw常用命令.md diff --git a/mengyanote-backend/data/mengyanote/AI/OpenCode常用命令.md b/mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/OpenCode常用命令.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/OpenCode常用命令.md rename to mengyanote-backend/data/mengyanote/AI/AI控制台工具常用命令总结/OpenCode常用命令.md diff --git a/mengyanote-backend/data/mengyanote/AI/AI提示词工程/开发前后端分离网站提示词.md b/mengyanote-backend/data/mengyanote/AI/AI提示词工程/开发前后端分离网站提示词.md deleted file mode 100644 index 04fc045..0000000 --- a/mengyanote-backend/data/mengyanote/AI/AI提示词工程/开发前后端分离网站提示词.md +++ /dev/null @@ -1,3 +0,0 @@ -1.取消CORS跨域限制,允许任何链接 -2.前端使用React框架,后端使用python的Flask框架 -3.前端修改在frontend文件夹,后端修改在backend文件夹 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/Iflow常用命令.md b/mengyanote-backend/data/mengyanote/AI/Iflow常用命令.md deleted file mode 100644 index 7aefba4..0000000 --- a/mengyanote-backend/data/mengyanote/AI/Iflow常用命令.md +++ /dev/null @@ -1,66 +0,0 @@ - -1. **终端 CLI 命令**(shell 中运行 `iflow` + 子命令 / flags) -2. **常用全局 Flags**(适用于启动时) -3. **交互 TUI 内 Slash 命令**(进入 `iflow` 后输入 `/` 触发,可模糊搜索) - -### 1. 终端 CLI 命令(iflow [flags] 或 iflow [prompt]) - -| 命令示例 | 主要作用 | 典型用法示例 | 备注 | -|--------------------------------|--------------------------------------------|---------------------------------------------------|-----------------------| -| `iflow` | 启动交互式 TUI / REPL 会话 | `iflow` 或 `iflow "帮我写个 REST API"` | 最常用入口 | -| `iflow "你的任务"` | 带初始提示启动交互会话 | `iflow "分析这个项目结构"` | 快速开始 | -| `iflow --help` / `iflow -h` | 显示完整帮助与所有 flags | `iflow --help` | 查看子命令与选项 | -| `iflow -v` / `iflow --version` | 查看当前版本 | `iflow -v` | 检查更新 | -| `iflow update` | 检查并更新到最新版 | `iflow update` | 自动升级 | - -**常用全局 Flags**(加在 `iflow` 后) - -| Flag | 缩写 | 作用 | 示例 | -|--------------------------------|------|-----------------------------------------------|------------------------------------------------| -| `--model ` | -m | 指定模型(qwen3-coder / kimi-k2 / deepseek-v3 等) | `-m qwen3-coder` | -| `--yolo` | — | 启用 YOLO 模式(全自动、无需逐个确认,危险) | `--yolo` 或 shift+tab 切换 | -| `--debug` | -d | 开启调试日志 | `--debug` | -| `--port ` | — | 指定 headless 服务器端口(用于 ACP/MCP) | `--port 8090` | -| `--experimental-acp` | — | 开启实验性 Agent Communication Protocol | 用于 SDK 集成 | - -### 2. 交互模式内 Slash 命令(输入 / 后出现,可上下箭头浏览 / 搜索) - -| Slash 命令 | 主要作用 | 常用场景 / 备注 | -|-------------------------|-----------------------------------------------|----------------------------------------------| -| `/help` | 显示所有 slash 命令 + 快捷键 | 随时查看,必备 | -| `/init` | 扫描当前项目,分析结构/依赖/架构,生成记忆 | 新项目必跑,类似 /init in Claude Code | -| `/clear` | 清空当前对话历史 + 上下文,从零开始 | 切换新任务 | -| `/exit` / `/quit` | 退出 iFlow CLI | 结束会话 | -| `/model` / `/models` | 切换或查看当前模型 | 切换 Qwen / Kimi / DeepSeek 等 | -| `/language` | 切换界面语言(zh-CN / en-US) | 中英文切换 | -| `/update` | 检查并更新 CLI 到最新版本 | 在 TUI 内升级 | -| `/undo` / `/redo` | 撤销/重做上一步文件变更 | 安全回滚 | -| `/cost` / `/stats` | 显示 token 消耗、费用估算(虽免费但显示使用) | 监控上下文长度 | -| `/compact` | 压缩对话历史,节省 token | 长会话优化 | -| `/agent` / `$agent-name`| 切换 / 调用 SubAgent($explore-agent 等) | 多角色协作(如 explorer / coder / reviewer) | -| `/mcp` | 管理 MCP 服务器(添加/查看/切换) | ctrl+t 查看,连接外部工具/知识源 | -| `/commands` | 查看/重载自定义 slash 命令 | 自定义后 reload | -| `/tools` | 查看/配置工具权限(shell / edit / read 等) | 调试 agent 能力 | -| `/share` | 生成会话分享链接 | 分享给团队或调试 | -| `!命令` | 直接执行系统 shell 命令(如 !ls -la) | 混合使用系统命令 | - -**补充说明**(2026 年 3 月最新情况): -- 官方最权威文档:https://platform.iflow.cn/cli/quickstart + https://platform.iflow.cn/cli/examples/slash-commands(斜杠命令详解) -- 安装方式(macOS/Linux 推荐一键): - ```bash - bash -c "$(curl -fsSL https://cloud.iflow.cn/iflow-cli/install.sh)" - # 或 npm 全局安装 - npm install -g @iflow-ai/iflow-cli@latest - ``` -- 首次运行会引导登录/选模型(支持免费国内大模型,无需 API key 烦恼) -- YOLO 模式(全自动)默认开启,shift + tab 切换;ctrl + y 禁用确认 -- 自定义 slash 命令:放在项目 `.iflow/commands/` 或全局目录,支持 Markdown 定义 -- VS Code 插件:搜索 "iFlow CLI" 安装,可在侧边栏直接呼出 -- GitHub Actions 集成:用 iflow-ai/iflow-cli-action@v2 在 PR/issue 中自动化 - -快速查看本地帮助: -```bash -iflow --help # CLI flags -# 进入交互后 -/help # slash 命令列表 -``` diff --git a/mengyanote-backend/data/mengyanote/AI/LLM 核心概念速查表.md b/mengyanote-backend/data/mengyanote/AI/LLM 核心概念速查表.md new file mode 100644 index 0000000..7278b99 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/LLM 核心概念速查表.md @@ -0,0 +1,78 @@ + + +## 基础概念 + +### LLM(Large Language Model) +大型语言模型。通过海量文本数据训练的深度神经网络,能理解和生成自然语言。目前主流如 GPT、Claude、Grok、Llama、Qwen 等。 + +### Token(词元) +LLM 处理文本的最小单位。**不是单词**,而是子词(subword)或字符片段。 +- 英文:1 个 token ≈ 4 个字符 ≈ 0.75 个单词 +- 中文:1 个汉字 ≈ 1~2 个 token +- Token 数量直接决定**费用**和**上下文长度**。 + +### Context(上下文) +模型在一次推理时能“看到”的全部文本内容,包括历史对话、系统指令、用户输入等。 + +### Context Window(上下文窗口) +模型单次能处理的最大 Token 数量。 +**常见规格(2026 年)**: +- GPT-4o / Claude 3.5:200K +- Grok-3 / Gemini 2.0:1M+ +- Llama 3.1 405B:128K + +超过 Context Window 会发生**截断**(truncation),导致信息丢失。 + +### Prompt(提示) +用户或系统输入给模型的全部文本,用于引导模型生成期望输出。 + +### User Prompt(用户提示) +用户实际输入的内容(如问题、指令、对话)。 + +### System Prompt(系统提示) +开发者预设的“人格设定 + 规则 + 行为约束”,在对话开始时注入,优先级最高。 +作用:定义模型角色、输出格式、禁止事项等。 + +## 进阶概念 + +### Tool(工具 / 函数调用) +让 LLM 能调用外部工具(如搜索、代码执行、计算器、数据库等)的能力。 +模型先输出工具调用请求 → 执行工具 → 把结果塞回上下文 → 模型继续生成最终答案。 + +### MCP(Model Context Protocol?此处指工具调用相关协议/框架) +(面试中若出现,通常指 **Multi-Call Protocol** 或特定公司的 **Model Control Protocol**,但最常见的是指 **Tool Calling / Function Calling 的多轮协议**) + +### Agent(智能体) +具备**自主性**的 LLM 系统。核心特征: +- 能感知环境(Context + Tools) +- 能规划(Planning) +- 能执行(Tool Use) +- 能记忆(Memory) +- 能迭代直到完成复杂目标 + +典型架构:ReAct、Plan-and-Execute、Multi-Agent 等。 + +### Agent Skill(智能体技能) +Agent 拥有的具体能力,通常通过以下方式实现: +1. Tool Use(工具调用) +2. Few-shot / Chain-of-Thought 提示 +3. 代码解释器(Code Interpreter) +4. 自定义函数 / API +5. 检索增强(RAG) +6. 记忆模块(Memory) + +--- + +**面试高频总结一句话版:** + +- **Token** 是 LLM 的“货币”和“长度单位” +- **Context Window** 是模型一次能“记住”多少内容的上限 +- **Prompt**(System + User)是指挥模型的“指令集” +- **Tool** 是给模型“手和眼睛” +- **Agent** 是把 Tool + Planning + Memory 组合起来,能**自主完成复杂任务**的智能体 +- **Agent Skill** 是 Agent 具体会用的各种能力 + +--- + +**背诵金句(面试必备):** +“LLM 本身只会 next-token prediction,要让它真正有用,必须通过 Prompt 引导、Tool 赋予能力、Agent 实现自主规划,最终在 Context Window 内完成任务。” \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/AI提示词工程/AI绘画提示词.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/AI绘画提示词.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/AI提示词工程/AI绘画提示词.md rename to mengyanote-backend/data/mengyanote/AI/提示词工程/AI绘画提示词.md diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/PWA应用启动动画.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/PWA应用启动动画.md new file mode 100644 index 0000000..4cc232d --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/PWA应用启动动画.md @@ -0,0 +1,8 @@ +添加PWA 启动动画 +加载时的全屏启动页(替换原来的“加载中 + 转圈”): +背景:与主站一致的渐变带轻微脉冲和光晕动画 +Logo:居中显示 logo192.png,带圆角与阴影,轻微上下浮动 +扩散环:Logo 周围三层圆环依次放大、淡出,循环播放 +标题:软件名称大标题 +「加载中」副标题 +加载指示:三个绿色圆点依次缩放,表示加载中 +效果:打开应用或刷新时先看到与主站风格统一的启动屏,数据加载完成后直接进入软件首页 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/SSH提交注意事项.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/SSH提交注意事项.md new file mode 100644 index 0000000..3b12339 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/SSH提交注意事项.md @@ -0,0 +1 @@ +优先使用ssh提交gitea仓库地址ssh://git@git.shumengya.top:8022/shumengya/仓库名.git \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/一键启动前后端脚本.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/一键启动前后端脚本.md new file mode 100644 index 0000000..0f10f32 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/一键启动前后端脚本.md @@ -0,0 +1 @@ +给我在项目根目录写一键启动本地开发前后端bat脚本和bash脚本,脚本名叫"dev",和构建前端脚本,脚本名叫:"build",注意保持代码精简不啰嗦,注意在Windows上显示前后端要两个窗口显示 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/代码使用中文注释.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/代码使用中文注释.md new file mode 100644 index 0000000..908400c --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/代码使用中文注释.md @@ -0,0 +1 @@ +代码注释给我默认使用中文注释,不要使用英文注释 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/初始化项目Git配置.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/初始化项目Git配置.md new file mode 100644 index 0000000..233fe18 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/初始化项目Git配置.md @@ -0,0 +1,35 @@ +# 初始化项目Git配置 +请按照以下步骤初始化Git仓库并上传到我的Gitea服务器: + +## 步骤 +1. **初始化Git仓库** + ```bash + git init + ``` +2. **创建main分支** + ```bash + git checkout -b main + ``` +3. **创建.gitignore文件**,忽略不必要的内容: + - Node/React: node_modules/, build/, coverage/ + - Go: *.exe, *.test, *.out, *.dll, *.so, *.dylib + - 数据文件: data/data.json + - 日志: *.log + - 操作系统: .DS_Store, Thumbs.db +4. **添加所有代码文件并提交** + ```bash + git add . + git commit -m "初始化提交" + ``` +5. **添加Gitea远程仓库** + ```bash + git remote add gitea ssh://git@repo.shumengya.top:8022/shumengya/{{REPO}}.git + ``` +6. **推送到Gitea** + ```bash + git push -u gitea main + ``` + +## 说明 +- Gitea服务器地址:`git.shumengya.top:8022` +- 默认优先使用SSH协议上传 diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/前端进入管理员后台方式.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/前端进入管理员后台方式.md new file mode 100644 index 0000000..13233ca --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/前端进入管理员后台方式.md @@ -0,0 +1 @@ +点击网站logo图标五次弹出一个输入框,输入正确的token后进入后台 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/后端API部署成docker容器.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/后端API部署成docker容器.md new file mode 100644 index 0000000..fb09f65 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/后端API部署成docker容器.md @@ -0,0 +1 @@ +在后端文件夹中建立Docker构建相关文件 把后端服务构建打包成Docker容器,对外端口使用:[] 然后我会把这个后端API服务映射成:[]给前端调用,你设置在生产环境下让前端使用这个后端API地址:[],设置容器持久化储存映射路径为:项目目录下的data文件夹 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/开发Windows软件细节.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/开发Windows软件细节.md new file mode 100644 index 0000000..0fc171f --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/开发Windows软件细节.md @@ -0,0 +1 @@ +设置让软件支持开机自启,关闭软件按钮变成最小化到托盘运行,然后右键最小化到托盘的软件图标会出现关闭按钮才彻底关闭程序,用户点击该软件托盘图标默认操作是打开显示软件,默认程序是单实例模式,如果用户再次打开程序就显示托盘的程序,默认在任务栏不显示软件图标 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/提交代码到自建Gitea仓库.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/提交代码到自建Gitea仓库.md new file mode 100644 index 0000000..c2bb427 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/提交代码到自建Gitea仓库.md @@ -0,0 +1 @@ +帮我把这个更新后的项目提交到我的gitea仓库默认优先采用ssh的方式提交,注意依赖和配置信息不要提交上去ssh://git@repo.shumengya.top:8022/{{USER}}/{{REPO}}.git 默认信息: shumengya mail@smyhub.com \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/文档类网页模板.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/文档类网页模板.md new file mode 100644 index 0000000..a0434a9 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/文档类网页模板.md @@ -0,0 +1,271 @@ +# 提取的文档类网页样式规范 + +以下是提取并规范化的核心样式代码,适用于文档类网页: + +```css +/* ===== 基础重置与全局样式 ===== */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif; +} + +body { + background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); + color: #333; + line-height: 1.6; + padding: 20px; + max-width: 1200px; + margin: 0 auto; +} + +/* ===== 布局系统 ===== */ +.container { + display: flex; + flex-wrap: wrap; + gap: 20px; + margin-top: 20px; +} + +.main-content { + flex: 3; + min-width: 300px; +} + +.sidebar { + flex: 1; + min-width: 250px; +} + +@media (max-width: 768px) { + .container { + flex-direction: column; + } +} + +/* ===== 卡片设计 ===== */ +.card { + background: white; + border-radius: 10px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); + padding: 20px; + margin-bottom: 20px; + transition: transform 0.3s, box-shadow 0.3s; +} + +.card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12); +} + +.card-header { + color: #2c3e50; + border-bottom: 2px solid #3498db; + padding-bottom: 10px; + margin-bottom: 15px; + display: flex; + align-items: center; + gap: 10px; +} + +/* ===== 排版系统 ===== */ +h1, h2, h3, h4 { + color: #2c3e50; + margin-bottom: 15px; +} + +h1 { + text-align: center; + margin-bottom: 25px; + color: #2980b9; + font-size: 2.5rem; + text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); +} + +h2 { + color: #3498db; + font-size: 1.8rem; +} + +h3 { + color: #2980b9; + font-size: 1.4rem; +} + +p { + margin-bottom: 15px; +} + +/* ===== 代码块样式 ===== */ +.code-example { + background: #2c3e50; + color: #ecf0f1; + padding: 15px; + border-radius: 5px; + font-family: 'Courier New', monospace; + margin: 15px 0; + overflow-x: auto; + font-size: 0.9rem; +} + +.tag { + display: inline-block; + background: #ecf0f1; + color: #2c3e50; + padding: 2px 8px; + border-radius: 3px; + font-family: monospace; + font-size: 0.9rem; + margin: 0 3px; +} + +.highlight { + color: #e74c3c; + font-weight: bold; +} + +/* ===== UI组件 ===== */ +.btn { + display: inline-block; + background: #3498db; + color: white; + padding: 10px 20px; + border-radius: 5px; + text-decoration: none; + border: none; + cursor: pointer; + transition: background 0.3s; + margin: 5px; +} + +.btn:hover { + background: #2980b9; +} + +.alert { + padding: 15px; + border-radius: 5px; + margin: 15px 0; +} + +.alert-success { + background-color: #d4edda; + color: #155724; + border: 1px solid #c3e6cb; +} + +.alert-warning { + background-color: #fff3cd; + color: #856404; + border: 1px solid #ffeaa7; +} + +.badge { + display: inline-block; + background: #e74c3c; + color: white; + padding: 3px 8px; + border-radius: 10px; + font-size: 0.8rem; + margin-left: 5px; +} + +/* ===== 演示区域样式 ===== */ +.demo-box { + border: 2px dashed #3498db; + padding: 15px; + margin: 15px 0; + background-color: #f8f9fa; + border-radius: 5px; +} + +.flex-container { + display: flex; + justify-content: space-between; + margin: 15px 0; +} + +.flex-item { + background: #2ecc71; + color: white; + padding: 15px; + border-radius: 5px; + width: 30%; + text-align: center; +} + +.demo-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 10px; + margin: 15px 0; +} + +.grid-item { + background: #9b59b6; + color: white; + padding: 15px; + border-radius: 5px; + text-align: center; +} + +/* ===== 导航菜单 ===== */ +.nav-menu { + display: flex; + background: #2c3e50; + border-radius: 5px; + overflow: hidden; + margin: 15px 0; +} + +.nav-item { + padding: 12px 20px; + color: white; + text-decoration: none; + transition: background 0.3s; +} + +.nav-item:hover { + background: #3498db; +} + +/* ===== 页脚 ===== */ +.footer { + text-align: center; + margin-top: 30px; + padding-top: 20px; + border-top: 1px solid #ddd; + color: #7f8c8d; + font-size: 0.9rem; +} +``` + +## 核心特点总结 + +1. **柔和的蓝白渐变背景** - 提供舒适的视觉体验 +2. **卡片式设计** - 带悬停效果的信息容器 +3. **响应式布局** - 适配桌面和移动设备 +4. **精心设计的排版层次** - 清晰的标题层级 +5. **丰富的UI组件** - 按钮、警告框、徽章等 +6. **优雅的交互效果** - 平滑的过渡和悬停反馈 + +## 提示词模板 + +**AI提示词:** + +``` +创建一个专业的文档类网页,使用以下设计规范: + +1. 整体采用柔和的蓝白色渐变背景(#f5f7fa到#c3cfe2) +2. 使用卡片式布局,卡片有圆角、阴影和悬停上浮效果 +3. 标题采用#2c3e50到#3498db的蓝色系,有清晰的层级关系 +4. 代码块使用深色背景(#2c3e50)和等宽字体 +5. 包含响应式侧边栏和主内容区布局 +6. 添加常用UI组件:按钮、警告框、徽章、导航菜单 +7. 确保所有交互有平滑的过渡效果 +8. 移动端适配:单列布局,适当调整内边距 + +页面内容结构包括:标题区、主要内容区(多个卡片)、侧边栏(辅助信息)、页脚 +每个卡片包含:卡片标题、内容描述、代码示例(如有)、演示区域(如有) +``` \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/树萌芽のDokcer部署流程.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/树萌芽のDokcer部署流程.md new file mode 100644 index 0000000..e80607a --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/树萌芽のDokcer部署流程.md @@ -0,0 +1 @@ +在我的bigmengya服务器上docker compose部署[]Docker镜像 在/shumengya/docker目录下 配置前注意不要破坏其他已部署docker容器配置 如果有默认管理员认证 默认使用内网密码 shumengya520 ,部署前注意如果有必要可在dokcer-compose.yml同目录下的data子文件夹持久化映射数据,设置容器内存限制5GB \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/模块化代码架构.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/模块化代码架构.md new file mode 100644 index 0000000..4f8e38d --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/模块化代码架构.md @@ -0,0 +1 @@ +代码架构采用模块化编写,避免代码量过大后期无法维护 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/网站logo绘画.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/网站logo绘画.md new file mode 100644 index 0000000..b1fb3cb --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/网站logo绘画.md @@ -0,0 +1 @@ +请你以专业的app软件logo图标设计师的角度给我设计10张logo图片,要浅色柔和背景,图片中不能出现任何文字 比例1:1,我的软件名称为:萌芽 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/AI/提示词工程/项目英文起名.md b/mengyanote-backend/data/mengyanote/AI/提示词工程/项目英文起名.md new file mode 100644 index 0000000..ab39a2e --- /dev/null +++ b/mengyanote-backend/data/mengyanote/AI/提示词工程/项目英文起名.md @@ -0,0 +1 @@ +给我这个项目起个简单通俗易懂的英文名 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/Git/GitHub优秀项目.md b/mengyanote-backend/data/mengyanote/Git/GitHub优秀项目.md new file mode 100644 index 0000000..289ddc4 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/Git/GitHub优秀项目.md @@ -0,0 +1,10 @@ +## 云盘储存 +--- +## +--- +## +--- +## +--- +## +--- diff --git a/mengyanote-backend/data/mengyanote/Git/Git使用SSH提交下载方法总结.md b/mengyanote-backend/data/mengyanote/Git/Git使用SSH提交下载方法总结.md index d7e0e23..8afddd5 100644 --- a/mengyanote-backend/data/mengyanote/Git/Git使用SSH提交下载方法总结.md +++ b/mengyanote-backend/data/mengyanote/Git/Git使用SSH提交下载方法总结.md @@ -234,13 +234,13 @@ git remote -v git remote set-url origin git@gitea.example.com:username/repository.git #非22标准端口 -git remote set-url gitea ssh://git@repo.shumengya.top:8022/shumengya/mengyalinkfly.git +git remote set-url gitea ssh://git@git.shumengya.top:8022/shumengya/mengyalinkfly.git # 添加多个远程地址 git remote add upstream git@gitea.example.com:otheruser/repository.git #非22标准端口 -git remote set-url gitea ssh://git@repo.shumengya.top:8022/shumengya/mengyalinkfly.git +git remote set-url gitea ssh://git@git.shumengya.top:8022/shumengya/仓库名.git ``` --- diff --git a/mengyanote-backend/data/mengyanote/Pasted image 20260324211445.png b/mengyanote-backend/data/mengyanote/Pasted image 20260324211445.png new file mode 100644 index 0000000000000000000000000000000000000000..d31bb31aff9001f3a7d4c32e5e82b155888d0ba0 GIT binary patch literal 78071 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

~U^>>@P|tZP|Qctos;-w>BD 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�*Z-)vlg?M=*hh6W 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 literal 0 HcmV?d00001 diff --git a/mengyanote-backend/data/mengyanote/Pasted image 20260324211458.png b/mengyanote-backend/data/mengyanote/Pasted image 20260324211458.png new file mode 100644 index 0000000000000000000000000000000000000000..d31bb31aff9001f3a7d4c32e5e82b155888d0ba0 GIT binary patch literal 78071 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

~U^>>@P|tZP|Qctos;-w>BD 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�*Z-)vlg?M=*hh6W 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 literal 0 HcmV?d00001 diff --git a/mengyanote-backend/data/mengyanote/Pasted image 20260325202027.png b/mengyanote-backend/data/mengyanote/Pasted image 20260325202027.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1469830a6f168b34ced8b876e22127d0769974 GIT binary patch literal 43349 zcmdqJ2Ut`2wl|F9aX6!+jDw0w8)Xy$AtFc*Q4vsS3MvXn6b2CyA_5X1MaOaI!~z6q zQL2EDL3&G6N|Y8zln&8QLTE9Cg!FfZnRCya`=0y0_kQ2G_j$f=KM$K^@9h2m@AY5x zx7OMTXIvdOZ`{36Nl9t*sgoz%m6SI0D=Do{`s>%gku&bkalpTI;qH#dl`8u*n8266 z1RirarleGb*(ABT0r>vSt&^9+m6W!$DgM@xU@v}BQhG6e>cp{gaNk9#3gU8PuC9zo zCF-4V*Q-5x?_%N%{-}<}cZq1-k6~ZmI`NlnIU~DB(2pNKM)Ex;b`3`Mvk=YY3yT)1 zmxm^Dw|~7!wridIicWqTy8Ya5k}3{K>4Be~%YpvFnqC2_4{Y9e%5|)!x7UTrpf>Vy z!pUHKteYq^r-j30nDR3I0!&az>Co$6ByMY;o+W;zx%Oe>f&O)h56|xY3l1E$gPkJy zgzJ@kKh)p<5WF_Pm4ju`_wu$71G+O-SMWpa{uuC%%a<>Y@QaI!Gp(aSHKN8PnTG=s z53kMVu5nTEh8X=meBgbTn(?&E`ARN4xYB`$;my6{#Mon`QmmY0dyS4wZ-i^Gx zyu8&9B{F{mH=EW~zc~ItjbI?-!{oS3tH>J!#lk2l&6n)o5VJd4_TCM3V|XUoUVlJN zlM7%eCzKUupDpj7MyFJ88qXbieqw1+J@uxju@AedtMxd#w2=Cf_hPW;{q6vZu7`mj-lN%{2W@D}+3IyVLB} z0a5z-u#RtLW{%)wKG3t1?4l$(N4dM3)g&q(@bc9lD1$H?;ufE!q21nq4pufENZcsj z^NNE!MvGN97om1l-G^RS8)&gTUTqFUl-$+`Yu_3+e6?CI_sBOp)wpS}eFnSqQ-mNi zI8_BIt3(LB!=f+1>pK{>t;H?O{9t-H%mB39(_D!%%8NBZ`&_o1eEpWVbYI#bkdR;M z52Mv^hUq=X8L^~+o>$hxs7#Q3K)R6x_=Ct8#mINTCixp;vSI?p>OzF0c}}DkZ$2z` zxMpf|sW=s1EnKtl*x|#I{EwzeHcuR$qlHdb$Hromrw=!MLMt{;6W_Fr$PsH^5+a31 zgvCjf3Dyuw4n8f74_$e>_+*J!T`L{x=03JeXGC?zVcuW3UBUi1FYr3#(xY64@jfDT z9`yyMyR4i$w7&Smu0sL6{R5o!sb^yrZ#L!1kfCIU8PE&K+x&=G&}s70&5assGd>2a ziMC$Bg=eIIFc)8E^a5DN`lI6lx*^}EujK4p^wVZXkNR^hOK%BVKL=|a(1i82B6VKU zB4zyrX7bMg(WrJLQLij@jGm3$AlZJui+k_Y-sUS=nXuN97axpfE{9#4=ZPl)|cYZKz`^e4~bBe&cxvZUoTgx1pJl#}1z;97sE_thBJIZQk;B@HT zw7%uY`}~+&E;*0gJUlEf*uVo2pp@f8cDV3^>3M3`G;!`?H9dCV(MEo^{*1Vpo+SYn z1qB)$C*2;gAWUa}5p-l7^T4+(a9Up4 z&SL1VB)^u~os%AaF25KcC2Cw$#p3eZ$nFZA7Xt~VPZAnw^0FJ}(7}j?7=87%X@E`X z8$|61s@z&IHr04^L(Ix`HbCYpUJr#OvpS_i?XBl?;g4NP9_O4H(JkG*2l;k;m_6OhKyfa;e9GiQ+bg z^K2AjzSi2!*7Mo#mZ$L~PkhQ*HW3-id*|zI5R0&|t}^t^co!qX?yAyk|Dnc!!elB0b{ zO_-uRN0a~3O~-6xn8Q*bO%3>;F-co?nJOc){3Z88&WD#W%t5`impx0lZV5u`rx2uD z52T7iC@a3jj2+*ljk1%!TPujL>@;9FCWeokIJKl(A z_;WaIPf48YMk8^X>&)uYW^lTb@asH4M<^%rLsRg!p2)Ty)QnWz&DRW)c7=D~%74t( zFaB}K#I(T1O466rW0_|=RHi9Ux;q^LHAK)#TCC6zq1;OkQ{^j&(Hk*{ivrdh4~Hz zd9VHW%EK(RxsUGW_8D!TJq>sqz}8uI*6?>beg$g0N3Obd@J0U7HT!n=tBnzB2M#>@ zpFOadC|!cZas$=||6!IGHxEtj>+3^=@ZKxP z*{UGtKiM0azVxoIG>29`<;}*%#Q5U#|LTWjx?dMnpw9 z`uqD6%tX_`iV=PP`5s;Pbp3yWoBQ8F$fI_Ffq^iBkH^Hs#K7=yCO*X$;Jj|U+8=wd zBMJtCwMaPKRUu<_!%dOFH)#a$SRLg0_3QE9sP1nsJoUtn-kx9_&6&RGO=l_C|8K&D z3gM&xqJI~8M!&}#HmL#l-&KG={?gQK1E(g4N`JjxWgMi%tS%u(Tsrl=QGSDQf9k!!pM`eRRWlw}xtj~|No zr7%3RFTkp#c9uo_JAngi80LRxW$JazNOd5?+X1W49e?9sqPeiOwROaJi^V6U4WhrE zVwm}i|!8rfk9Jqb3s*=@xPynU`b-?ZUuH9>3(+#a-GDCf5@dqgaW^^ z@OiXe>GjSUr1;K;n9YUZS$&2|O5esA+y)4EpRyS=VG}W3^tYq`f)Mc^Wan<{ZANZX zXV#HmdLtvR8!()&SJ!OR9Vh*6qHG0Eg34E*q&QpN^P57JY?<|Hg%=oefVxg;r^+^f zL0C;N$-jhaIJ^p+P23I8LXSr!Ye^EI~A}g zRB`Y(*4ee&^0H}?{m?}CN;xzav>Cec*9eaWz_G*sezvB*ptIcZr8@9zqJ({drrIrLyy%X8!)`A8|h1WIsxmHUSAvptoKMZ zXsAaaA%MZ$V!ikqqI>S~nw{h<98=gy!G2;yu9mVE{0hO$YIJmz9tV+J1vE9o`$jpy z$+Ax>vLC#>y}5=3Qyps1% zxSXgE%D=e<5~MXm`rRR~4Ka?6jt9N#4noT@MNU|U@bGZL1@Bs|dwHv3;0Yx$kJk3P z@WPF}vwPQEgFp6Y7RRyrsJ4wrQlKrpu7Q@YgP>aC!|N20GpqRfTbYDuj2DqV%->fNn#8SS;>L46#FYwI?~ntuORItdXskPN3W?%{Gj{5?@RN?o){%8uzcWD3ovvC48_fcGmEes!`iUd>y+Eeq0;$Gi!eVz z059`x5&!Ql1G-SJ-!b7I_@cEN?|F{^IrD5N@9)PkrV4=rwtvYA+&in+Zyq|n6QHPY zbnZ_q67z`2Vwjtno&fAUq4OkQDRRfWID$WM-Qhg0`e22(C%2sQA9_wK7lq04Q$&1W z^mfE1ovQ!{gJjfQkVyaT+)75L&C|Bn>bH6Q$JVAd+dQzKNY^bd2X^&Gh5s?~S03OE z%y{2uTNB+sWT_k8Yp$#?*T;gUh5V&4?h%L6RwWKA>y-}qteNBcly_Xf_GBp||56nG zw6FB66i`vvH9P*ywD;YIQjhAl*hi1ntScemfRfVG+QN6fh$!feXmcv)7x-Gm)e@o= zXE1A*y)gBR+HIU0ig-VHig75{iHif2rM1E^9QxHI+sv?;UGzPYTojJ&yK036gzooK zotn2^uej&jgqZHVvpx}w!xwvW_3yU!{0A* z&N9`bZ34WV9L3}Ej|Ke{sZYty%2F)qrLdgDX<%tcNgzT4)P@r1g0n>OBeqZ)PcqtH z08ydCX~3amy!iGkb9p(nv$OO6;*85qnkWVVwtp!i{14_HxcPq~n*0Ap0O4>(u!7zZ z&ge@~b+yShf7TS)eJN}(A5ldXH7pm$aRVG& zqii_Tv8m4t?s>rdTeo)iZx-;FU}ZPj;qrZx(&8tabd=lpDiyvL3gksPjn*9WyDR3G z)#@4D$iAQiu3L17bFZiPW#fJnZw%2m>Y|<07|z%dU4vRlh_4_!iXq5@vg@DO$T19> z8aovZf$wdi21A>SY%i{40knD!6Z+pzlrAsGU$Poyq=l(X=4eB&xSJrbZCE(d-mN_a zCn~rIM?{ZNaI?zg!=suia$ay14_r}o$fbaSMI#PMq=HTgeo{k)n8xxB3B)zh>#d`q zVd02_-e@Eu)FoPQuQCZzz9=8WZx(gfN7CJPy-F;i-Fow1OWl?Ej8&b4xztWxloeJDw zQVW8kTVSCCo8duRC&O1RTK$wLF8H2ST_FkNNXqaXxZKF&HL`4SM{Sgi#)7hQ0Y!B| zyAfO|9fKqdKH1TUL)L;j+YcHnR3@ny+3fL!Mw8Eb6bW9UEkdDeCY<%wgx)IW-4d#8 zYyLtt@YTl4ztl>hxH2xF{0L480~{MH?G2mI6yC=9(<6!I27Z+HVS@`Cm-AW#_UuI* zh}G2wmHPNJKgngu$BNi1ky`^V^VP!65h_MS+O)GrI89)bNQ$UB-5rhot|-cTQG_QA z-FYaN0DKTWDQs+rzNo!_VvhT>1w++*sQ!d}X=v)_aN8Z`%N#I7yB=M9M26_7ywhSt zkP+h|zfvg6wTKP0-IaEDrpF@K*DG_oVNzS5MGG|xavKj})V2KI1;7(r*EaleeaVPqTT312GOY(@7*Fo8UQ{ zxv*HDDC!|~UMYj*iDF;0;b+HA8L(_DXcqk-RBmUcwgy8k6mP5!g@Hg7MD8rSp=Fp= z!Aj-c8Ng|`%;D)c7V3~z?BbgS@jP1Hu;}5+kj&15!aLM`_;u zQnykJ@=WPZIY--u7F=YG+wk#hPcGMGeU7%=I+nm&9S~2wI0D6>cXIF>QWJ@*x0p!R z#Opb7*=qfL^fv?Hmwkj&m$%83aof?6D--N1dW<*Ca?6Yyn|Q(3Zd;|Tl5T_tt=+_x-5g78$}FZCFkveQ4-PORm;Vt zPV4T?BGB?qFFtW;36|1{XdKR_!w3?YMev2ua^q{Q%c^XG{Y03!BH94*x{CeCjbNQ> z`GcW(=UFwGi{$*9ZD#8oIxzWhXoUZCCdTpU6=i zeVu4lYVrNJzVCpz!&-qA-v!smIv4V<@AxvoDNvtsY|HEnh{_e}YOA|D(`?}~t_~=X z>-HWS z8Mtic)*%|b$eOsMO}??mdyp&N42Vjz{rg`U@AH_FKp=P+qE%_8#G`F1y>H)$Mse#=hJ$ihK$z^|u{km+1uH+>V%y3nYwS0`U?$R7 zUn{*vIj$*9zc^}ri=Nk=LuKMZk4@$DhGpdk^*bk=6vIVBnM7;K_t;#|VG9)+uy(KT zx!TRK;-337Vft!z{j?5Qx7BE}CMh2c-#t~q*#1#?U*k*hYBq=^i~U;Zio9@bX?|;C zdix4SEi9oLi!VHUy?w5u8BGn*!33MfzEPJX9gl>ZE1UW-5Q~G*$xX_{85TW5&Xrl* z@igDtTZ`b0g>|bvi&fRVzc;uuLf^TTifQBP|{Rt!N3QfZ7(tJM_r_7Gx| zH9-KCg|sl!E*S^EhJ91q`7%1NL#Tau2Tk1J&tAgRf2%1)4hz}o*+flTG~-m*t)dTk z5w~)9edP9fG#k%;YTnmpzTEYOT?`uEE*H%RNKeC+i=A_i7`S>_fb>l&SrRZ-0O3b6 zNMguJ`f5E93;T=G6(aQyeB#_1I=_SV!*$btM4fSTy!Y+nh($+Xr!6dr*eo{)Lp3D? zrdY@UjPBo1)+rO(UlrIP2qjXf;wh_;xD!P)6=3!kbBLBa=w!53*cY74-lZFGuy=yi zA`Rc0u@;rmTfsRoZ^tb@A1Se4kjp#aw&*e%p!{qnAA=N#kjZ}xEeco?O>2uj`6#VJ z*i0bL`m$I4jFxK?g_{=!E6Rl$bIe`=kJr99($*>@zxxN^#Stu@m4By;n2Qy5T~Q`I zMRQYDA!=Gr@I$G11x)z|5YmmeCuGN`e!q6$Z@6;gJNZ&1yOAs-H!L#*BvIG6p)xt~ z2}-`6oq+M#4U73W*QyOwU^M>*ny{b3wyY7!HxecJI7Cp3qKPlstbV%B9`?s{_zNaA zY2vqH$66aerLfn4I6xn6P*4ll&Ky-p46yz89at1E6Zgo38Ib@r7U+X$UoG=-9DWOR zegVrM9V8OwRu@8r3{6HQ(L@#<&0f%V@8m3adJfWmrO3LYI6FnVD8VwzP-JmS#w3}8 zCe-p$ql$9QN4Sb0=CS+aA{EK*S!j7+s3ADYj#++YU&vU;P~Q+Bsyr9Tv@S%51JX*P z06?#Z-~JtZEB25zO=A7UW$9r~Lyy9`Hkp$+tZ@yZWCk>q7rU$n)=H#>BntUJ>{n_j{1MIf+F!HQ> zDEGBaNN&uMA6WBw&ZL{`+(iggB|=`uw=U-lrACMEe2FV3U-5lT|o$qT@ysq zfhHAea2Z`^nP?C?3BQ=L(!{g8KMzHY)~zaR8daUhBh-tWDE+S2;Yt0)OWtIAC|O|&P`it-oM)o68cVj za^LMS7RP^@goqh^#&s8I7+iRn4BdXM2paFR9nyg8r^UtQ8TE8eTYeO)yw~_?flEwL zMw=YjVH6E(0gHE=by5X3s#Mnl$WFKoYUNCn#)bDzGeTm-39h#6Y>vh1(uL@meF%S>cs<%ytl^>QCYPOKi9h7snj|3}2 z#-!Z~blfs-MD8;x$cVVpg+mW4)>Q39E-j~co~sKKJIF07A8+K%b2A2E6X#I!biu=r zG1Rq#(WD?@#*GfNwmt*aXSu#UkQ8&HKekUk*`C_xbV{HKNr9o!9x}mRWSxiq6mc47 ztd9=tOR=jS-x=e2hs&D%Bv_Km0oD1poZ5|a{88jFOU#_ zME$dxNv3#w;;Ysg)_bZamSDDi6U)6zOKomuXma;iVazo=(l%AzwuzqNxLqnWFzPqC zA0EZA?P3shvXs?mjaRqNF;0v(QKwWSS<5G_bTPf^tI-m<_TSZ%Qw66N&@`_JhUqy% z4eE^Wxk{2f>+<(#Q3-mtQ^r9(@Z?rqH;~%w%nGNV>8A6Bp9T=0vX|x2-)5Fr1)QHP zt?XLDkq|29wS!;#_uGsh2RkYtzM9#^#JyV#D=G-Vks1hB^gz}|F1m^RoYQ4e-{}(c z3wM`w`BiIrvG-s`-#}&eXlvwRbdq0R@yDW;M_JwC>DAUJ#iUVhN~3-*7FwCY)NS3@ zmy-@@wRRP?QfTS5?2EFft1CLpi$x(bAMafQC3;|n({jb&JCw#EVp1)H0YFif3dd4h z_wpB??~_sw;ENC2q?6@5H+dSie`a7V7*=XjOf8VlX6xeW59ISC{pzNbDY4v;k1t7Wa1QcYK>CY%G`0Lsl8vZ3+sx~oes4R%)8$xsca4gfiZ z0>II^;&Up1^EiC=ghqtq_3*SjueS8JxNL3-7Vsz%~0F%(kh`e~vD#Z2XXpP=%j#-4&(}~)ksp=xRt-89o3&yi> zk4z^>)+nSsFvZC7DQK!>UW#`6+BMz7=amX-Td%i@((88$fc}te>z6YCgWr5{pgF zm6Y&J#gzAiYxV#ohGvqQUs3fC03KkVi1s>5u40bjw=vA^B`E!oO%7Ql!an)xG~Ct& z>3;Db61hj2Ym1G=kGtwU6>ri6Z7iHlY zt0$N&DR$&aaxr~S!8q5Lkz+q{?&t&J-S-4ryOQct__3>&08_kBq~{J*zHFZPwPB@^ z^7fX)vq0{zo{8Mceyr6Q8^>Uyr;IVuPkw`vF?Avx4ZOPIVKtTG*m*Ty#Gs zp9JSLTN^wy@5qU^Hfrgn7L8k9NAW(Fy|MX()PEqD-?0jDzcaoqPg6C^l>p|WQ6vVQjU_r z!dZGx||T}E=~L0;*n--t8zc)Uz=+(zQzdc}BuR5! zKO4`5FVF4Ix3l5iidej%_2`WU`P;@vOrxLnMG}1W*C(5p({RW0Z*p^4 zF5!Ly&jvV5wXc-{5gV_0QtI<{&V9<%q-RUP{K6<8ZVY{$4 zj<=4!`4JcBeben{L|CPCbjmIH=Ax;h+p^y-@+Ku%lOep;;qSGS?uvqdvZ2LZY;aj~ zv-NIub#Co|?w?XFuh26k>SzFcU7c$A(Y0f`jLA-QqFposaksXm8^J}VSO*S5h9)>< z_Jr6Vwl~4PE$8^YCx=lQ?2MLAOUo#mWg%b1FA};gH}u3P)URYKxwK~D>NnPN;6RU- zbC^`EG;_GTjVz&B$ZOs(ATFL9T`FbCLBwX8 zWn5ztG0^d#ex|-IGKE4+9Bzd!emnbrvEF~SYdW3qp! z3PMX}vj0C*t@HmNukjyW@-Hh}TO#%iu?f5b?^1o0Bb;;$xzIJC$D4 z0{YWE5|)q|i*EWFh!z#q8H=^N`{APJqAzVK_=WiO zKv-4y#}CfruRr7qfMR!B9~Xy=5RkDgoOHbDsD={XWbFnghrVKF0meZcFmk_nQfywt zY21zn5_EhI=I$RZZz>G_N@*tyh(lj%IqCEQ)j=*}Unz;}BMcu_ev^D$`AUmIRma{0 z!tJpBW6CqZO0Q)HFRK;?uUFdXwssXjTyF&-pzD?Rfy}HQE~_iOhAVI?{zcKAXrTB? zxLfHrh||zt02B4cB*tyFDV_9DRXU`l0P}$DKam0ZGpF1Q`y3~i5a}S=O5JLl8}i3G z*w_xah`PPXuLGT`E%~BN&*N)5IFj)B;vzLpD=@~DA;n}Hz7zz@^zxz?AHhE{qS`S; zqRsNi>I8iHA(VvQ9h#DDF2gs-2FV?pvYY;V*{#J>CH8?s#c%?*v4JInk?NMQ^iRvZ zVV^S8{Q5RIcF;G-jke^1b!pbG&dy&Z%ZvbODBXRo7}J*380pq=OxZb^Yh(kq{lXr! zn0hg5(YSEef=39cnsLnb6XWYigK9B;ioyefy(rO=Tr~>C08RC=kd`z6?pIo`SYPA? zAone4S^9OAL6*wt0#{ZFMA*;jSeS&LXjyg%_h(1r6QZQ=cL5-Bt6`sIpt}vc8`3G4 zEC@)fJjB7+i8jH6MiLp8Fyeygz<5f?l6alzPL=jOaT?zTqDpmWX9^8%&x|r2RueVs z_%Xchu-RurQ3z(wVy1S3G40H=Tez#OfWM@a2v|E{I%6N9DbN}z22OMAOIGztP0hT0 z#yRUS*euE|zD`{`nFvLBB4jMo_r!+S5Qz)`y*9A2)gkgp#*}Bh+#=OBCdRZqBNN&F zhTWeFd4GDv>pIY0a_QdX=*1WBw0@&8v7{_YoudA~KIBaaH6tDMO88 zP5J4Cq~+$l7r+7^n<(;jV`9xxnzAicZA8t!ZsL*bWwP#5Er0HkVRPL`Rvn*TI)Y@QJ6M)H~YQ**Rw(GT!ep zuGKnLKjTQVzV!U^WiRNiuz@|=@pVT8*9y9(B=}i-{*gyZk#DzG%>&H~;a-&%vu$C4 zK{%j`gjg%oiMoat&yR67Z`de^_O`@}E&|m3R#8|m%#i%lAx|Ev*HRloF=kiaPkB$7 zFPL>YsRFa&b=HlvhP_=-iKm*|Ye@aS9$wy1 zB&x1d4A_!MWn#r4UDYB-CMOA_u?vNK4i-4HaT?%)4Ny#R_%~}k@OpE zhqk82B+%^kdQwq2Cr;DVB0%=Lg~VUCJzRHlV)xi!WT!FS*31`iHQeVmTRbI2^R?+c zR4@O*J@{mMqI`Ck5D?6Zh$4MB<>5D0w|;M3MiQ5EfVWh79HWED0aAnX!HCsXGkLqv zSpEwqo(q6sdneN!veC?Jr1`hf@sx_N&-Pn`wHnOF0)LB`8X%}A^DhC-EWS^F4mjo` zyFzHpKTM2i+Qa;$=UoADjKO}Ec6 zF_Sk>V+&HBZiO`RlLn-eO*2ce&xId7fhER0#!Js4RvLr%Uf>OVrp1tz_fk?Eh_|m2 z0-jCa-WL5xJbPVUAYWlMUH`JpsEFk0Oa~VDkOpAWuHXj7#?(y$T~nsKQ&V-!VevY7 zNMj>m8zi+N*t|U&Kxcd{gYRgBO>bq3%v<%g*nD|*ea;1IrRwBqqv}5uuI@koLCvW< zXd~8CWP^6T9uJ5!iLGnexdf5i2^#Z_@m{!V*=bFPIBVu7x$Ft?%)?0XJ^W=`W+9+g zv-c*l=Zlu^2c-$^*%d$o)Oj*k4GM+;$xEQ9!R((x>@2dd_V&A%OyjBTDPbe__@uT# z$D3IVhP$C)-C~W~w@lM2Zvw88-*MT=?w}fBXCN-s8Ya7tvr=qn9OmvHG*-v?fk)AC z`FuExQUhOlD`Y2Wqjl>-oHmG0UQ(rbSM67qNi(=BQp$8(|+v=l((KPdWVw3lLe4)WvzU$w*R-#i6&D?SurIWaEB5`s+}M+ zgZI`Dd!X=LY==^0Gt4oeF5;77d4lH=h?;7QhcUqtb!#aLE>H%#Puz_sA9kjhpMWtN zP3I+zE5sy{me=+t>RPF)ZpZ-VygNtR+bKnEMLurgfb|3Qr0$9AsWLe`$wHhfH=YGq z6lm0ygi4N@3E=vDEXli1T;}`OkYXc+?k>xFkD-jIkJY#Atd~s>4Xkij9gS!ao5OFK zk52_5jdmccx@Mw$yF7VnETuzt3cmthj%|=VhOU8`5K522;Z*gVLl{+xKu%K~eKdPJ z*5LJcO2O6G9tiUboE7J*rmQJBcQa;r_PWiNp{g&76=CziDvAE7=m2Nixx1MbAztn6 z-#jWl;a0!Z5c*Zoey}>qR~G)ZJu`OkDtkH$THIj#%rXn|ICM)EMngNI;LMCAP(!$+ zaCD59Ix17briSFU1UA(6JCkDKcfF*(-2rklpt7=~av*VlJ^Q=+{akL;FY%17J$ z=MA#_DEE{d+NMh{8Eb838t>VC8g1tM&M{XP5UWLtBF28_gs0V85*c}3)^E9h76eL! z75O~>!8*WA_}Fc`%~6|uQIf5aw{-y*ZR2XeP9Ly-9`VhS)9eVnCo7+eAXGorFPUdz zZqgbon?hp`S)soq!Aqs}1I@MO<>UUbLAa&#uUg&nuv(Y2Y3fgOT@u$9yTn&`$50fB zokfPi6U_Wrdll(COfXKhymL)5`-aw;%ybERZLoXq?)~<#wqH0(93L30eURcW9fGCO zeEHCPhBiUXd-AG^<=VsqZCSTT)hFI8rK5X#vC%ZzNx#)VGscdICQC8uQytzcOo8k(t&{JO zn()4)ML%_Q-jSZJZ3)RE(&y)Vr6+jBU$q`(@ozWUUOmoyH&)N^1{Cu!Zf%`j?wJ%3 zFr82dM7~XRe-x>FmUwvg{^D-zy?t=~j@Uf7nXlyYMA$UC>EM1-*My}g@HVhKHXs7Y zA06hQ(Hc+OQ0H&1a#p0&Je3Qh7qkX!jf?O6R>N#qCqt^0;C68-`z}YOe80qgsK$kr;n}l5pr6Qq(%YZD-MET(Y^I z=iVoBe;uA2`!3rYhIyYtebpO#Eu_W}x^)TJ-CeL$dUKzr)Fu|@$bf&T`>Omx`zzSD zQwC>Sp@fz@GaUL*Mjn)KJA`ofokvI&V&v7u3o$P*ro#-RE*Gl~N|7g7jgs;HI3fth z;eiy!peGj9CbF3B_e{%(scs}ItL&j&@XGy--I2MPL8brZ=KKAVSuHJZ-3-C$0;;Zt zu}Sm%)5AfhZ_-{BN%C(5%|)}?=b}piHT+@Qll^Y*al_u>`715a>~~~-q0G5s{`KC- zxQ?5(=O{+7q^paTwl*tAZ74N|yfE*Ep5%uh%la0&QsYTuU*}8(Y+zJMpZ8slwsQ&! z3aObm@0(W*ziJ9W30zN$em*V{#fM{!Qi_U59h*24qBL3M!Jw4c;*17UT8X5=)GLc~ z8L%K{6=iXqEowMca_JN5U)dq0cG`XvetbxHV8@^%F0nJi-*4fn3!B0#-3kj%=v8)2 z=mSBuy|rmOJ?aFVX~j%oxoD;MKHsce6nWX0@lluI?f7mhP?mP*Ld}ko1v%IWO%qVL zkvq2Y?Pkx-uy&qoZ*GafSV1}dFCdH+v|041EJQjc{#LJ)OA0VFE-Xit87?npsp)E+ zwOZ~{r$6%V>rE17G{D)(*NFu82F3$nSL&SCd6AVN`Uh8=0?Vu&K3-OLf=#h9>_(2I zokLE&y(1GHQY2_Z1hn@Ie@Fg_)LjJqI<2m+&l6~97${nM;8JRFM@EQu!SmXx z=~r(ZgT|NO5PMR=Gd+l@cR|r@%gM)KnC%8SURa}q!57ZLDw_-tbZgjqN<+l##CaxnKi3_YMJ z81D$@Fi!9A(ZFhPPx_>%c)97kbBa#lQf$&^iWq944SPoOZX|^7i0GUEC>s(j>Uh^N z;64H|Sju*SvWlvH3UlhYIiI}wV}RU5y-O(62Rxgm{V2{8oP-RNwTDbJ9oY|b6aA_A ziWIIe!abSBIzT1-(pWtS6iP5dv635&_iX=kza&i0(9Ah++h%;8YA!l9#MxTho{8#v zKX53>F9O1kXyFy`GY>C($`n2d_xBrxo!Nvdjvg80`i(~}h~Ux<+9{`==rYKQ2`=n8 zFov|Q1g8bJF-?b)kS$J$(Dq{A$dbU<#Y~xD^+%*vtM>kJ9qq(Yp5nNPb#^pg)r? z=bedhbMr*jNu)jM5uJk-sjgfWfF~cYE{fi zvW38(l?1t1b704LNa~12xf5f#K@wbjXXYcjfW|*D_4x_?v$c-)G28w(TvtqEQ8@BE zKhNnol2yuEF=&zzX%Kc@eKcd%`);DiD!1M z+q;cCp!diN78Kd_$i#pClCA?8Nlal7ME8epEx8p4?&%h=L+~k2(FBYA&hNXq-<-!U zEu}1t`KG$4LsR?mRQ+W?S95jw=Z@X;T`K(;w$SvHJxe%_d=|$d=nQ(OE55^tZx`58_v2qRA{RhiLj z1x2xRM-@J{xgKm?O+1SCqVe8=+1&HNQ(vOc2PXx}%I$45Q7A$_^Pno?{e!Bx*Sb^U zDDY*YE{|wgzl6iLPkO~!{nc>`hRSH&Sq=-v@HJaz4eF0vE0_lzY@Pk$I7-imOfiNH zT&lY67etKHFOrQml!v%z$Oglma5G;l8u8<L=WdIIw0=-m;!1 zw`E`02T(=_xsH$J*lpxxhbDP*{7|o_2qgt2>@OBG@s3mTtjLb!^}DBDdK9;3VO=qh z*6Xp7XJ!2?w9T$+`Lx^A+p_Si))L*ij^xT+Rfps~>k~zk#?rJ!$aQb^f$)nhC}!i< zq05>W0zYl8mCIgSi2dRb5;lR1b6jYgIj(&L`t0Z*-4O2O2t{{?zps8PBTw?{Me!IT z|9SnD?|F}3x`V*x0n0BlYk5Ckm+_$;EofnchU_Dz-JtLC&dnbC13O}2k*qvz{fUb_ zbIi?Da|s)VHUDrX3uk?8c{zEI-2Usm@T8w+d$Jz&)`NdKjV;a~lse4j*nqN{%-U~- z>W|huJ4_TTW{!MFqgj|#^etwqBbG#c>&z!xZk+dw2zk*nI-ya4oyK1}1j%x0WIp9( z6>ngikU0y#&Jo_OqfG_x&Hl7Mo7HSXgFkjCz=l(7KHo1kd%rpN?Y{h($3@2S=K-g$=I zFS+P061}_}9o4>TQ-Q?bg=tauV~P-#Aaq#@b7HpE%U^=8P*PFNN5qP5hVd8XiL4msiHpAK=+z-@XVQ|~ylFhWk z(<2|CKQJ(-g9z)%H|G*}Ro^+c9?MXMR+sTcECKzC$@BR!a4(}q(`%FI zp@SoMsXEi9Hob4gb@nK0KKUu5Xs412$gEpvNU~YIsB<&9WAMIFd|RsRo-r7!$h}raI~sBR zriIRg#^LRiOI7qPer6RsNI3f}-5vSR)USnGS$8q^MDW3bOW4E-b^7>qa1)~EoIVya z1WIWjL>vPuKBJ8LY*K#2C-aSh&@XhLy9t~Z0`IT4QJX2Z5#bSq55n{(vh{UVsPA|`Z(X&Mu z;DR235JW>e3sv5;g^xxZ}v^5NIHWZ79#=|Mv`d&-WghL$`BM{;b@RlQIs!U(#kmR&)n~yl9KYLhA^}Z16!$+-x#fO zdbstAgoWDWQ9q&8I^jlwX^rnJ_k?V(zUG$V4+UFq!GW#!yX9^hXa@K8e&4EEPvTS3 z`?$HF4ih)9T5k51cwH^DrK@E?Y!AA(w5pc9m^m8Zj+*v5S+sC|VDf`iMAnm%Q9t3z zR)*2Y8;v2R(6s0zAz)}fvO=(|-F1qC|I{9Dp}zZW9?V~<{K58m;fFS~!j zyknh9_0+?**%M+iY8z%EHt;2yBO9)Z40q1TJk3j}YUO3#{@c6mO-{9CzX@KY%H zE2Lu+G-i+QT~@~2^`sijLA6!u%ud-1*ZBIV9{nND!qE{`r9#(Eoe|ol*IX zd&08F>5o@9{Qla8*(Yg5<~Tw^Umn<+cDU(pnciV2ryh9cN%ghfL`BotCZ*qqiUzcm zg&~p?sC9ZR_qg_w2UG=TE&JGvD1;TSNZxq;&Cg=z;WqLVDaS{*#0yk)v^!-J|g*4>4xCBzl0VGR&+(iuniw0C&j-+D-YHra_b~B{zSc zGtfy)-0{D45&x;s000IhY%FY}BKh=RW{Cg6OZxwz;M(j@?1K=dC}3j63&#|%sHh7C zaQC{9?z(kK{vL|dO^yYSy2%1i6zBN&Pjmyver;R%qefHWHT`EvS?NIo?YpnEo2cSU zvk)&JkP0}>Z-a}TYbfo^rhuBMpjHL10boa;7Bg$_c4o6k3t&@#kpOrVWyo>){FTy& z6HV|_kcg5^nK~Go!@j~U&rTkb3c%2%UExYQrznDX9@rYma;3FV1son&`asS19f7p| zwMOk zks6AC)F==_k0~SsNcipto!R5NXMgYc&UxSSedl-bmp>EoJbCW>Uh7(GUF%wQ(j@ll zoswdpu=RXW4Az>$XwnRgGa@b|%)%D={`#PCPT;Pf3F)c|>*NWbeUPwK3%_UJ`_DRh z0uf3PrxMR9HnD-!U9x7dAJ)Ma;$}cU^CgaigF14NOQvXW&-VTKhP@z$8Mjv4+HFwe z@+|RpL5VS5(=U$(yD>t>q_-pIcEFejg4Vj5@~$TDu1|k@au9QJF@eG3vu3y{V@r*K z&M{JN2sUT=Dr6S+NO$WnndEzTy}bm~1@c_)Y}L?VUn}UvH8m>hPTml000{7Xkj!(v z>udO1$zIqsjjam1Y>Z->vU_ST8T7#$KqdQE$A7PvT<9DpamBL}4(u&}9Xr?y?&%=uG9!@KrJdps_Y4K$|G{OoVA&5MK7s1wDm;d*!s%m@at>LD7D>m~oJu*3M9XTCN++vM$7vj16B%LgtS0%@LzKEAJ zy_Y5$o&_20n})^a)v~6=(r~$C$%1@Jz;n&ue9kkIM3t7#;o+N^CeINzmO<8oSAwdo z9i0{otSW|Bf%A6*atr_NS@&bO&1?Jf!f5@~UpNndfF|rE0V?F#zwb;QKG5rBW>p+B zJnZf3ejHvJv$tTw1ImuYFCCH(b~H`q8yXpiJG-Jy^Hu0|=!lZ+Fe~X|wQEk8))LDV z&t1TRPHNcHy%W|tf3*4o7}0e=jzdpCsnM5fL8zr%zLCDtVbH-3o+&`L2MJDCgM=ZC zfrIYI(eIYx{AX1D-jzu_0UXY&lH@mA(p97(z%+)`by{=tQ!4DcC+~+E*L0>RZ=@^JWSCHveYeFSl&n1xJ;w!hbt{uAMsvO z&FqbK<~Dk+Q-AZ*YQ$!1lsTGfU8g)FYkMUOl#@s@b}h8Ng+z?%D3qh-+saY*dF#0< zs&qxC6eY2ehC=}k)~p(_S@ODSxv3M(OcjW8i9H<@wkP8~DaF|!&(HLM%DE2Fs2RD^ z4?s1bs@KmcX;at=B$$$~a?J@N{4y)<^uFp{F z5a#Z2co%H3XzZ*B1QPyu;^3qISG3LkptY(0iPOjBrt`rTGp)nhzV`mye{g$YaAl@L z>B&Thk&#j7e}FZTG>9ZsSEmYbfBeP8#etnA0Z8=K7z1zfRhcSR@}=lE>_Kiow~^2Z zV8*fzgTm~{+m)oRaw74LP!|n&{Wa=qZNy84Ye1>VW^wbz|JU|eKWhHK{)l;2xqHn*U*G!62>zn(#r?T$tYnO0J z_tL3`YbG&=s|=~!q9J?|x*a5gVb_wk{^p5J(k7(*!D=LH%KI;m)vgR$O#wZaVCL#T zX;^~00UKm*J)<|iRHyL(YOR|x$zhR;q})jD&+u|1$_GKp`Ezv=t*Ys> ziIZ$&(3#>+=o+okke{5%t?MRk%&6e6KNLS$WL6rR6Q@;A>3#qHY1ch8+F(65lqH@v zIpTDzwZW*}OyS%p_(g|yZ{6MFb}A%!;DX6W^o%S%U3#8(O~6Pa9*zm^!@jLAn{8E` zXZ!a)m0(BEV@C&d`n^h=F#8M4fkg@V9&0tQ}iR*oI z(ozEdNK4KKb&rME^;AsDWQeBlOSovtcz7{)h}_>ZhFaNZHzZ*mJj$X-oK7l=9zJR{%BF`)Xo^Cq!q#e*W{J`2OFp)kzl#B&<2;ZI{Q=yxhe?)LPVWp&`Bw(=& zzc$#9ol{aD5)J1pM0jG!3B4<57q9EA#M()2#7u?LxuF69DG^L_XdW5s*T+~L3Eme) zP}Z>yxamUl?~a(+_&aWSHukha6P9uM_RkwDMjc1IrTr0)Tu4iK_;Dx6OJT3SL$s_A z&RT<<1pDr&n#AbAq^7dR^77a~&lSaE_q5(tq;(vj=^5*1l1a7L(jG*d^QIdqRAb$n zi*;(9EdGut#!`}e&kDl{rxochimQIFMeFXvKGYFQ0-Cl()7-sY?FvsSe9U}{QT}ex z{upv$w|%;zLjA<)BeBtaWEo8}E!5ipR30ICDV^psx565CwG9SanYp#_)j&rkqyW`h zo#7fmKwF&f!r&YDVrol$%<`z(cqPe0lB$PMsxFox)m~QCY5J?ec^w5p)q4+ZvptcH zGu4E5aMGqq`ED*Ebxt{3(T5d^PUSb>XWI?OYMrrMjtN$AGcm`Jt&p zeq-`}VzD$^C{yFeWD5M=#O5t%pRZKcey-(uhfvcasS83iB-gq0y<+aTGj9V?4=*kt zGj%&72#H$sgt(=Nq3^(%^8d23pers03TO@@Y|}Mk)t77CMiSeDQo9{Ky}2K{;6h}i zj(d&W-OKJnt9>7-}m&Hu#}S*8rWDS*Y)qf zo4P`9>Vh6G8_2$u7g#;ciB*$MtIo>~!qO{^Mrwj$8NJji8*BF;oL&(mRk=wgvl`2- zbIk}RCY(;I@EMW<{nIT|-W&m{ZpaD)m$MtYt?V4GcYl9x_cErsB{W80sy5^{OR?E$ zeZrIb99`nzzc{nLwi4as)&7XfzW`2h6{PRgnm*LDe47f2ERr@EAmKZ+il#w5KAw_*q@lo?9L16?`n^c^ADu={3zI(XHYSM_=gftc=Y=5Vl@!#Y_(&Cl4!W7{H{#;8GGOMUvM035 z)mDJG+Nv_S6S?}6tYzi#(ZnzIN?)W&+^YP9dHa3VHfsD--(HPym8{R2C4qLe^szQCV#VlA(w;<* z$7(MaT-0nZAw2ZsPghm6G9;3cCN@x;l^bLCdy~g6RUJ-C(g=2E&*ZyIb5!`GGaK5e z(m2Hr1#bI5r;ihyc-+^FQZ(Ju#_vC)%JPUKVC8Y~CjjeUuM&v$nZV5rjE{@Q#9T$* zjX4EnJ0LFzN?mhmhf~vb4z@_mO$1Y7z*dz~26};`)d`*#Re_8U*tm+ckkStNb<4W) ztRC?aMOx6((^*SvB}8Cvb<+xD?JJ(YBC_&OSJG*AQ}56S*v;(!n8^`_o~}i~_o(t4 zde*mI^LjCdopcQh464(sV@w0FH4pshJxxjZ8mgpPsu>#iz4uQbtOSaDvo6hSpn^7| z2Bi2XvbG!Tt0P%;_0iQ!Ws0esdBySe%6RpoU;%}Jqj@El`zAOp-&1(+v93oYtVVBZ zBhSY(mMWnD2VUX>=Ky;Bwd)0M{3pQTt8->|pd8~Wfj$H*=clb7#hM8Altp1Rut50~ zKR-}Zp=)_@v=5*&*d>Flqqhb$$oH#^`x>VQ&ZJPOap4+rO^m+9_{9EdhV=-f*Lu^z zWEUewR7D5qLH4?~%^IZc8!4m?Q3_nY36>0?9fs5Ve8C5b#_;LrCY)uqV z9f~8$`>2Hy9i#eIy04&We)GgJ*dvIZ^CkFjeRh4k{x%Tu>iV6(Pw1|BB)66J0jC?9ALpB}C5?29Mvj0-uru_S|8I+}#Y{Cq0UUz|_LLk$l6nawL#kLUSyr zEr>9Ax!RAvoCbpNbh!G&!%5{S8A4HI!!N_&!PyXAkxj z9h|-&k~k_s%2CpF<&MyTGlk$bOT7~VIC0qg4}XF1u3ZRRt|QwG7F)0_aYQb&X4w8^ zrDsrANhR_6%2%)GI3gl_*2I&YUH0#lbFxE z;IK5WtB*g8$;!1Ab@wL;w-pL{4HOFZTB_Nq&GdE5v`Crlv$ss-6-r{dN9Gs*h)Ruf z1QmEQt^IVlj<~AR*)M|XlkoGrN60;ezUenYW@s`2>BEaP)g_MTc|Bs#Jiu4C*dn2n@}NqF5*wQ%#EkPb!u{i$c zSM3UUzzn^d)`nO#(af=?@mVEfmWLx%yHnlHvGbkKRD^)Nt;T-7T>b?k%}bUbDkD>9u{LBJF9<0G%C?8&GBa$R>)x0qes1sJplWD%@G zR|d}LWFK>}`f{xlkT%W#m<^fa~XoPuzX6S4$r7oOF9z<-(%F6eu1TfVX)h3Zq!41rLZ0pki1I&j z^WSz%ftUwjqk9&TQB|C%J*7CWkWs-kY(6PLuEDI zCge>)1S55o$+bz=Nae>q^YVa;*c~u?BcN^Rw*=CAU-I|d^Tyv6H9EF)AV9M*Z-$$f z=>++}MeOC-0u!U~d~%|!#bcbE6ENEboz_=Oem$msyxj~GO8C0s^6;gR4l>49wcho< zC}TXHlydA_ShqDZ=`qV?`JZVHG{|0wpd~UrWuukwEFt>6p>5Y>uVj7g2P?RW1@hi^ zXbuk52R-@qQT#~i79?DB=!^K7|+a02ytsam2QPLT3x(0;dp2y85Tp0dA zNP{F>5qKV}*W1D+5X|$q(vF%iRhz%GM11~~T<{KcP{x#G#BhmIvVnWWZdp2$t;2sJ zfuvqhM1H6*^$IYL7|w7_^>>9<*-b9ji4mW}eC%dUW{*lrCy`x(lCV?$n)~@Q65LDr zBwQsZQB0YRb7ACP4Aym0{7Vo+ORi=U;u-jKbA6zKc1;obb}w1On8#6bikQ_Boh&lJ zDW|y~s9c?}dH_$DoFmL6XC{1t%OlfDnq(v_Gz0bo8CW;^x_}hUiM0LsL9z4_T}fbV zkQL8l>P>ADnuea`0F_(V^Q~Fpp`r6P$8;0g@?QK77yn-(!6HE1Pw0#`Gb18n6YO#2mvy)9EGn(z3>q{`(1 zhV-y60?PO>wGwr$l)DU!D`k`UmyoUmW+Y~0a=9eXYx1`fkOI<|n?IW89pa?&cS99n z!v|Jbd=hsh@Tl~d*=~;=snrM%xg|vfnKxDkDUIJ{D!A$pH>Tev=X%_ZvQ)- zX0KP-%0oRr^eDM*HQjmcW=Foe-nq3$3e1w{kWq(vQK4NlSsK{oI$1sH(NVLfDrjZi zE%TGesqIa^?t4!l??=4IEpP_LeOGq0&K z^xPb7V5T_||5UftzxYC4XuY0`p7HAgvPM-cw8jqzBdLnRregyDAS88cR24}^x-G6v zx$c0T>!mM2oPJIZqHg-Jn@AE!z&hOz3^Hk_A2CRr4qhG`N$9X2Zjb#zs>isjDa65Q zth`X8N`I)(%FptW{|jl&hSk1g*6iM1=KFMKO?#b6Oz#5dk?77(kq@}W2L7PDu5Vqj zsyXkRPo8A2h{0OEr-ew8M8B}OA*pu;ve#xWQu$xFtpC#OypSdd`Jvw5%R&D}ANYFs zyWbsxsc3<$QGZpgDxsg24H!nfbHP%A{jS-nY7%kIHbGub@j;mQY4=_)Usu_t+)4+K zU1#=exT%hAuI8~1NJCbAFFzR`DPV?(D>A+9kTaSjD-k)|)*oyxKuN8A0M?F5<6M|UD!we zvfPE723$;C2v+QXEmEKbEh_5xc0r%+v!!p>)I(lV`DVz(1~olX?g~I>+UKNu`l}xP z(Ssq?CHC)xiC+D=xNA8xWvpx<@hlyI3j1`q`pECn){L7|x=qVeqZz*rEcN_?|Xz&iSt|}}-%7i2C z@tGCR`#7j(46j8Nb>PJc%Qr`yt-`KWvX=V9;Jejwnr4*}fQ+otjeY;5C}ggJkdlTZ zcPLeX3^ph>U-?ti2n9{s9a*kFVzJ13j{fdZ#fE^fdyQpHSE4k*lEwyL?5Cv_hzWABs zv4)e#E| z@YiTsep&cPqegyH40h=ZG<58nbw3~n6n`J{AZh|Yu|gF>A!P?-vYd~)#3)?!uu z-EzyLSVno`c>-gpp;ki;yH>@clZ~7>*pZkQzr+p#!GOjSM51C>dIn-8ts+2=t?65Z z-zzgTV+Dkv6yS&e8xaSTgfLNX$xJR>yxCK3Ufl>E zp%+}~tHuHWn8l7n-O>5IJoy(awkk$5$;bwHBEpLQYE_7Z$X%?jOQl3cDFK}#_}St* z=lz58rQP~#+kFlqWX0;0OS=p>^YJr+$68fg^i%MZSgStDuJWPOHz51CH9zBye7>eB zBVk08#y@``BfXY3xA@R+@;saU zb$y?nN{u6WgO>P+X^yiGZRy~2(ApZU+r&_n#=C?c?+QnQ_5EeW**3(h z@~IZFE{_9{=T+|gSG~J;hCLWdw-`|IagQBzo$peUxhx#FvxL8-k%8ZWw&CyXf2^WjjW_8!(Q5hU#^6| zg%5Y>37&8<@pG8IJ)G`bcjG$f%~0{_>H0~5eL!wb zi6k1B&&Ks1XXZPrB4RFiMn(&%I2mU#4C}54%X0&oH^6|b0yiZ4ZgKHNW9%NZZJv>I z4n3aYB9c_BLD0n~p(@ByO=MXQ@zdlWhZ~_`8*b8x?eCS?a`#p;?>Tr4e&iMPNe7S7Cfr$CW}(c>kgMwNAp%_ z>9g$Pv@sqRU)C1_f<-)vlUlW)zVj)0iFlltt4O+<|2U;$b#%vqE# z?8BA_IqZWj81&(k7XV7@LsN%uRMC$YpnwL%DOnDKf~x8{fs&^i|5~Wb?fG z3+=5?LWPHl z-F|G*!+bQ%xLeh}GbuOkl zx{uItErF%=NaK#Bo>YrJ`N6Zd39&8*)L@I2zt5C%iLLr}1ihzsa2ppiQA78nsHwk861?=}tWgd11Y;G(rlu+7jS2N16*QK23{e zm-*#tY~N^$E{Tbg>r`>*D_f3I*dd0~m+slLYDR^9%INiHm>fj;+z2TPvKpaG8MU?~ zOx;+J(Jy%WTjmq3xz&QRl8sG2X4IHuBi1@zXWGAH)b-Vgg)HwFeI1s-dURkDsC&Q3n6b!AvC{$V^a5{dq(@9ItCs+= z?~zgXTED#KMC0lxjx*{u`cB0Brqhn3_N!658HiS4e^XB*qrI9srW0C$UUk;XGC}^| zC-hJ(tu8qxMSqgo9sN<&%Zuc*c=fLB#&FTzRawD?wF^ghb}?jKlO00y=jkg6D?<2| zxY7tgqo=G7&vN9twfv{a?wE67VQ#!?CoR!nz|Dtp2Lr6~dyugge<&FifK~44MjHTP z-2R=CA-Ax~rw+_Q#ATq}_^oQ=(5Y}RF$au4G4pB>G`rEU`=IPQu65PTt4uN}2_*p~ zPs&M6(AGUR*vdO_&O82>H-WQ%pJ{w=V>QBxRao0i`k@pammFJMJKp=8Rt{<@B|{15 zG=qOT%k0j#jiY8*g0pYsFkl8|+}XQWyi`vIIj?jN!GMxodYOdcUkp0C zu6+gOzmKch9CgrNuZGpVl7WTjA|s0?=nwW%c2gQ%a)4(YfAkwnkzQ~ePo zD*Pw9G&E@BrO|obK|S zUQ6eUTJcC~#x=sfHPex9hfWVkF@FIjq7Hw#!_< zG4Da4^(dmrJhRKoww?QCN(j%ZE_+`xT5!|-T=O}h#mbM}x!cu(GucxJp}phGmgwEP z=bOr(sP_0fF4Z8Bw|-;`$V`rcEJ`WoVsR}Tb@9p^^0?T0SN)hm> z$X4kB!0K`*I1!4wf|isd3DLuay?s925k8ZNwK5BlL#;M7y6HZS+`{4mr~}c`4#9KD z>SDvzzp3<$)voRyY88rGV`hm)YY7`I-xPUry+H|kGWS=B)ekN|pmnnNr1NkAy>d6# zs)&&Uj6K>$&1m?+IWMm{rJArXXLjgN&5oGjOnUcS+<`;1Lu#p5Z-xFhc)9#%+YY${ z{%6mf{Y~{6#9;;;_Ud!;8;3vizX0K}H}#DJXKjVrK;+1+SG+5>sF+MB4RK(SCkieI zJkE#LeLv{fkKS--4lj~^yW1q6emB~ddtH^Sc#O@ELt^^27v8%?aXnmA;Kw5@Y2=sEyr66S;xF;RA9mg=raKgFlho%#7QnjeC>d@E(FU zq`t|U1T5hQO8DmbFzr@{k8$n$2V1nXXfRIa&-`UTFT8yhy^9W&e}HZ_SCLrm0~E8a zGY|2rCszbtlh^F&-o@~C;oRudTptXO6`bQ~AM*A>$@O$}0Enl50{M9+J1&8IHSVdwX`n>A!lS+3p6@K`LQ>`>vA*~_gVo2~Ue(u>##NoB8Vb9`|KJ6~* zU@*|Ml|pvUP*{V8bZCoGUX!2cuR>rxBcv>&(^2Aa*b<&Ft0$76B?kT}3YiWdi{SbM zBA;LDT*HTN;EOekq&ke{xzG4Qogce=~!{D4-;I5>qvdO7D`@A`mnMMUJEgL^Mh)2ZY#`LJEI=Q8%*92Nf zZmAQb>pCbP<`B)|G9_O7Dz3P*whX4Al1cFoQ+Kr3W8}zSj$;NpIWlf?f`Jzan7N`eaz4;Lv6WuoAq~?%i^+hZHycf^0;Z z()B+o&NqYz^s0JMg-W}0f|7JqF!cfFLb#*qB{;&WKZ)c2qfDT`|KC^*>H?QyT(G9p|2c?Ib=kZ+Pwd>a+F3J+1SXq_=d_!&RJP~AHpW9LBCXnqCn0z zY6i+y9vW)1x96xYRH-fcky_U#SU)}JY_h%mWaxs(lC9drF|2^U0}iIA5~nGpm6|Z? zGg+pN6(F7nO~m0E8i{y+n$q76=|NL#lXPt1aeHA?_n}00|HS79D$@oHro*heJ0;$6 z#{_tGEmj$|j^xBXQZ!YUd6(IE8Z@fugfI|N*w4#x;Cm#Lf^9y{PB-3aa`Z4g98TSx z8BxchV@bJhB4QRbjrFe69w49ZFE6fjznoqsYMgch7+7WEDsKb3o))Nwdz36d+4z|x zc2&m@W2Z?>QnEdzbV{NsimbYoR`A zu;w%qupXNp7c~N{>R&svZ_f!G3CBGNzYjZk<>{GLDsG!7>q~eX+*4S3|y%zkL2sm-2{wLn0H*u|1L$+c@VIfXA@%<4Cw5PJ6QX}-A zl|`>Mz1`omsd+=CDr9_L)F-$1ezrfF8LFK6s9>UnKgSmPVp?RDyckJSzMNUz!F$r>hiHHaQ{qvB4O93{>AmfFQ|~ zq4eK$?B1_}^)?^!1|(OdExwAr!|L)=vS2Vx1olA)h^NFz5C!(`-8<}xF-%MJ1i*c3 zkSAW87SEN!`A6j}&3sHNLH~>NUwzfI5_{6&hrki@7`p+IJ%VA+Q$S zXw>oKm{E7Ws~(_y_Pc(aO9bYST#{}vz8m)W^-esb)&^lu5TFuyqkLc=)c;@S z^DYFw{i6vCaHQ(bLunAf0&Sxqi4xrO7g_u`MW_o2y#7mO!+kU1FSr;C3IkKe691z6 z0cZ}EfvoRebU!>fY8VB#s{Xy(>rX0%X+RDV(q;Tc#c)zx6!sDi+N;tzFWn?SScm(U zu8r~I#h}Vz3);fA+ClWUIyV62|BIxet)5gD;PL<+#XB66`W>LDN+*+NOZD(h)7JW{ z-M;At)J1{F-=a~Ul6L*U^Fv_9$pn;%Yf9v{`GLq05?_Yi=li{N3v`S?Ned~vkxG~0 zzgG&OLZH8YXG}yevK^a-4c#osXK<;vOdAU1^LF6p^hpLDeKj(S%ArWh4=J6dG z`w&ARfwL#wJ$~}Q9gg1bLD-zAyC$x!{rBk(IQgL9;3Yswr>SCIN6=FwDnU;LaRdPSs z+_|@Psy*^i^pV0S0q#ea8-P(Nv;5W5y8CBjA4*Sh_Ha ztp6sAs`vxwaH-#C6e#mgR?2?u%7BDNB7h= z7iElahU4wjVOY;HR8KR=mFY%cS0`(!t)f$GawZ|};KJ6vqu!#-G}BF*_9q)4H%bIX|V2yF9>HfVa;>Zv(|{+7t7a*M5Rnl*sKcv6wzt zBZbhn5B9S8Va^b3GwVdy>RZWHvKFgu74Rq1CAYz19bNJ_2R%8a%2V62Y#@umpQL4u z0>N$>n83I3ci1If5b{|nPk~mv%H0qM$nMMZL-}+mZ9N$9{t=f}jD@GF5NzZwgnuqW z86&^jBCty~E`yj9KG;=A97v}V-206#ADFX%%M4~1{4a=OVLHuVQttr}brV>yJAS`8 zhO2?GCxu&PX%fMmM9|={tc=q;VOi}EH|*tjFr|qK{rF&*wz?h}HfIfk6+%CK&*->6 zF$1{NrFV5O*i}fJ=fRN|!E3;1k)hA(leZ84yfZ7x@=6wq$<%pa+VRhg6sA61YFQ-> zY~zT9+Ob<)s5=(y0%Gw-ENB{h9n#>^$A>(5@;fkFoE<;-b#_cgj~pAcF-A58vu3~r z8bnk)tT)~wH}269;82luEe)_6jwJs*O@aNp8M!zd669;?O@mvLO2L<-NE>*GVA+Fk z%cqoW35*rIJ=v*YDqa*cn~c)!Df5E?A>^LTW5vm0_XSJY9Y^f^q z?$177s>P{LpQ4ry#o73F=T`DJ1aXyucNBKjZG&BfGJdfi)>ani@T{AC2~#Vykas1z zllg7rbAFsvB^mqvZo@KK>Y~iUTKK{4bTJjpdYOii4YX5s-A! zPs=Eqtqj=|2TfN+ot{y;egmw&EAX^sobu?!y!E>>9bh=dkd}{;Y`B))P!5U%bH(uJ zHni4hPmO_11a+*6m5n#}I}t#C(y+pD<>e&(7Wqk?fC;q(p+b`p+v&dH3O7Dl{OA)2stB+-NmTH81oa3en zo+%B$U!B)h_wj&f4?rhQN;!xz8?yU(x@*3!e|4Eub>rxMS=4FDcn3X1HTj-d2_k9@ zuD7s&kvxrcad{cb={zvI9SV}iSRQVoo5Xak-^wYNYm+&xq{e5fR0G3pl z>ug{juR*!!9cA0mMPdn+57MZa};fuAUWOp61^x3Lexdb-mEV3*E8 zSl?U@(1`%Fb9U zc{|J`0WzA^9SEF8L&|YjPgtL-wwe&^j`SBR$O_+N(Z8{R5$6}sa-e~N$O9YsDU~y* zweyR0jIaPL0qH*7s%#0^C5Jy7+4u08vHhSSE(E(1W^y@o#bt&^djKj0@GAu~7i&4p zQTwr4FW@7x^!pweRcLjEz@Do?H#(`sZZm2HkuD%2^WbOH2OHg%0@!ZOI~?Q|yP2Zr5&rOoCy} zjkd?;fWHW_`N5ZebpFlJKlPJKB9FE@^xNT3zBmBLo=?uCdBy?)0~~4TcI(zjV5n0+ zaey}+aB;*8XE>gQRmy;y?YRQlgaV6go75Uo-CzI0EAKH@yCJjlwy*EB6--;RiWS?k#&5sBS(T5P901++JUl$|0F-W=cm3KM?(o~@Yr16cVwri3hfOgG zrv)`~sQWEO00V*Na@Of)pwGpDG207`hXzD+Q8`9iZ*mhknR=ik=tfnXOvS;Ak1A5KBa{ty!R4S_3U!|S$d&QU0F-QC?Gr7Qmi zh;3m#-BhLjXVhB=$nEk44+40(g0=PaoQetsqO0Z~Sd@swm6jrcmtMWnZUhKrcG?2it2rQBY9Fh5G**-OVNu?1@q?SK|LxnP(nAt|LPh>yWiCaTq*4GfQw9UO z5lxIMi(_>P+$ACxF4Id4p&NquSy3;w%w;e?CC$+@^|i}EOiH?=PiikrJ42?&YD+^5 z;61L96}QBup&XA5U8hNTeQd8`98z$+@JK`nq;zGbAH1b(J;HdzCPo!^ISZqkil1AV zi{G{KKr!wZL|506#X*zUpo8u>-2m;-NMEH<5IamInAx^z6=V2jpfdug)m_wFd4HPP zEMWiU*MC@~ptKgii{J5s08Oe~D9k8a1YP20 zAlVMOUhUTyb6#U!_?Fq;96IRZbkJ8&?V3@{=`X&hpx(8t__kkm=N&(Y^^tmXd=CRm zc<)Sf)9btHK6fUteq=9fbuQrx2t4MJh)D^X-R}nL*#{v<fBswj=nE!1Zw*~ba~FGp~jOaaqr$e5XA{XVj*WP!A`g5S)d(*EJu!Xttu|S$=kKn zAvYi;4Ih16a?!x7z!0sWirfV=`Ki9nc}kz5NZ*z<58<_lKvII)zT!Z%)-@j3z!S$1 zdqale`nIp;YIb2E+NQzJVf0vr?_&omSXTCy@zJY5X7IqYuWs2V>WFKp0|6{cqv(U} z+AVn&nT}z701tk#j&Bo7v_uabijcQ&ZT7;8CrR?c3T3-C6xaJzwWmsZU|Bb}P@|HT zq6}eMR+FM5ZoBvwbouu2AP~m#MEUWK{Q3_8S`L7S=b`K7`fPK3#`D#rGZ%-SXhMIf zsnoqqg#0&vbhk{sZ8&FTF>qs*I;;Teu@xc1Vj#=DAMEs7&3&0S`S$H={ZM9a56lDm z^2g`QH+{9vGo8t783X%;XX_Md?JT0gY*5p8yr(RBvQ&kEP=z-j}Fk3)H|I&%gw$k+VV zYm+!s)17+z^KI=a#co~^@($P~L2$z#BlhmubAzzU_xXcGeX0>rOti1tM+JXh!KoFH z%n+d`5wbCx3GK9g&qwOWaDBhoPYX!Nf-6SLs12sfP-*b-&F#0|yQc3}?A{B@lKx8s zJwPW0OvNk)g0nMBf40FTbs*Ph$k2}b4~)+-^6E>|X6fPXVazNe$h~KX9MtB9 zirt2P7(%8EnQ0S>{eJnTb=gF~<}>@Xp27|F@ zX4LRW*s9`LaJv2!)IJlZp@Qb}0v2A>*a3kO`J3;bZ#ZWV!30NL7w!x$HadJI9B*`S z{cXVKQJgqNkx573`b%3f7B)5H9_dc6$W*~_3<^Bfn2$(6B@Qa% zJRB|2M{I1kRmq$rp_cpMiE!@Yb>~hk&atvjbs;sEIKjvaO3aU2H{%|rCV8IBI~Q^d zBz(d)zaSP6%fvhGg*HJRUx(i1zCOB>%i%?CeG1pC$h?Vr>4J;^=ThR zKl`3FDLB#l`NOID7IyrzAzR;8VXyJ|HIEGrnGdTKocR_fbb3VT_YHj%n7QUY!#Ci# zRo-=*OE4^(6ORkoOMkeGG><|BnL*wftGxMWQ8#=7e z(>fEnbWJs^W1V==ccB%tV3vd0ycPDh)2ZNM;I>U-fJr=UXOEBVLidk%Z#%_jlLV)F zw>~qd)u@uMo=LlHH5DA5^rBK?H}~y&($Xs<+_wP$aNvs;clQmvTtOhzZVB`bLN@%Yeb zA?I{aU=bllz4oF!O?GepshtJ?1g+5Ap&dJS+5=QB58{Zg+n%C5KyvVlW8gT^Y@pD&W0g8pK?Xs)CYYEzVlX9^<#iE+2+(Mj2M)ji4%5+^!R1ac zU_ieygCJpP2M&ChCsFH&8muy9%j~KNoretNR{s0LR+kuvw;c&E?O^9lZYzk*x1Q>u zYR0obkgORNbOyf1nGXW1ncdrCyqgym z>kT<&tP=t41~74^qZZ6019GEYb4K+b#eWbl=5xU>VI&%XodsFbTTk^BG`eW5|AL@1 zxRniMN7n!n$pOi|O=;LI#VtSHno5SiG_(z!Q|;q4l`pE2oP_g$B*LxAk()bU zVL^Eo8IFFb<9ewimwc;g-aCF!9G|+}EMWBLiIJ9SYpl2^7#Y*yp`EDp6jL<9q!2T4 zyI{wSzkx6q00&e-NCH9W{eaTsHD7>nlzi1c;0i&JLU$0&3}-&T(b{E(2R!DCnt{dN zt0KXB=ct~7GQie8{fmYQr@JQq1hV@VFDi(^My~3_iB1y_N3D*czh=5|AoVL_q*|PW0`hgSOgaC0A1><`c;4#%8ip zGTXQ&A@84G9)1`AyEdICoCbn|xO0Z`hr91O+@q=!=(Z~6A@ISU#b!g8zrHLCj8N8d*zN&=c4 z+je1VRNG(g4N{zxGAhL&}MeCxSxX-;?j(Ugb+l6Iy})pLP8F70mw2$0V!<6%}8H zh(Zqu_72KwfW`Zl+}3}zEs#azp0C&e2AYD`0VtjWum3Z*x%TLMq>_wjbE-Id`I%pF zq@aIs6b2eQ;0$T$f!rC!Zb00>S^S{}mc81+9vT^CQbJCY)ZcU|?qKm*3K^8vOJf-s zODp5ywrY&}qRB$5p|dE?`Q@cjnK0ZE^;Nj!+5}Etw+26tKnbE&a~#S%vbY1&!-6;= zGn-J?;=uJZr+JDhgA;=fulpf!tWFI*o`B1G=4oGy_0ijypeWn2j!_dli=)kmow$84 zZ4y+wzjpRQbe$PW+{`JiPX5y{rL_=4M^ImD*2yMnnf7>xUjwsw!c!&jEY9)e_2tC1 zXG?s|O`9KtD&!gt&-e}SHTC1CqDsS*uxoh>_S843@@wq%$wZ{(e!j-1;dP!ivP}R^ z5(U=nyYr&$saK8?YDD1NN)@4 zu%FBt*P0T_@=FneV>PF$GlMLwrT^tK@R!g4&9`*D|PNfccfKlVe_1b|m79 z7|t2gIIU^jZfRn!>@zM@wPcm#Gc{(EA?kzl2@MIPrq7N9p~hJE7+?TFp$>qsur3Cp z(45U^zGsFBchqs?nl^=K1rJt!s4ly#h7)O${~=oiQRVLz(IqeC=+EblVSP9yb#R6v zuQDihrBZh>uwKP6zckd(7|ccxtkRZhwjlQl!%+?81* znlky!@bAr6N9j2Wx*c}IaStv(i_=s%Xsf7X8+zS zPqAQBgd8vUOi;n3Ye^lJ>6Z#ZkESPaq^6~kT9j~of(xc&>vxm9hmpyiiVV*8%N!;% z`F1xxdjT(FPuk6<@?9S)vEj!XMhV#6Oh2h)w_cr{(9O~%PJmHO{x;U)p!%A;b-0?J zsqk|aU(39*C)~YiA!55U{v>H?PJcO~i=Zi3wXthiAhv_Wx)7b>G=R#CqEsOJ11KBu z@S!ViZ!C6Cwad_tSkp2wwlk94ibjz$$o8GAo1Tj)pDR|ze2;K`?JB#j8_G@;#>AP2 zqEomjfa?39s%%lz6V*=obrA>C5G8m#r#P)Cx3(^wAu5EV5Y>lPa%Z-Xljb`F2j8Dfzb)W&_! zqTlW$>M}V-$OCb>$C9VN-?ZS8KCa*BXqp~vscsS2IcOO!ZK_!h&+k&J?Pd>G9BrMc zLW-?fAmfD?lzhaR-%@+Y?8P|j-Hp$|!b+NQ4MAbPoNMkHDU$j+o0D}^>g9&XPoo}@ z32`McRhyM+i4%>oXmKT(nXtmJz)+&S!PJCP{p47OP%Go|lga)~udwvbeLQ81^>b#w zsZ1lM2A%AeSV=8O9_9y)(2Xats|zbv!Ujt*N&_mbp_@K>W9yu!4a$Qd3yG_JeYg2D z>krGRD+CL}V1iIgb?0cR_iHEnPZkY)787|YT3#zZxMn-KKBYuP#@MOB7xo8F_Eeen z1$SnAHYs*%#P`?_+!YOw$Pe}iVg3?HUF3;5V*NmZSTe+Vh$Eb#MzU;pLR))^<|!3N z{W7ag%BkMEy7Aky%+N`L(S6)S%6yx--`l-jXSl2F_b69yNKS&iE4ayhnRmGrEjlz7 zaIRDJx(Jg_UFQK4Lx3-ENygg`SDD;_mr&*N@bDa&qN)5leXjfz(1-+Z6)bQ$ z3Ghg)x_`kNU-kJKe!lQu!QcpZY#!DU1dfb>SEn%T4O^Z1pW*IZ<-+KH{NQyRz%?-7 zRVm@N|DPV;FWG;j_2ca4bEn9!{QMg}MFQ*^r9IjHgbT~GI;8QKAN8-#bmOCF|D*Fb z(~lo2-#K$7XdDpUxr#qq18&yK`$eVyeYN`Wt8z`?zTgE~1JmnyFYxg{V|!?EQ<&QO Q=b%QIr>mdKI;Vst07Az#d;kCd literal 0 HcmV?d00001 diff --git a/mengyanote-backend/data/mengyanote/刷新浏览器缓存.md b/mengyanote-backend/data/mengyanote/Windows/刷新浏览器缓存.md similarity index 100% rename from mengyanote-backend/data/mengyanote/刷新浏览器缓存.md rename to mengyanote-backend/data/mengyanote/Windows/刷新浏览器缓存.md diff --git a/mengyanote-backend/data/mengyanote/远程访问家中局域网环境方法总结.md b/mengyanote-backend/data/mengyanote/内网穿透/远程访问家中局域网环境方法总结.md similarity index 100% rename from mengyanote-backend/data/mengyanote/远程访问家中局域网环境方法总结.md rename to mengyanote-backend/data/mengyanote/内网穿透/远程访问家中局域网环境方法总结.md diff --git a/mengyanote-backend/data/mengyanote/实习求职/面试八股/HTTP 与HTTPS/从「敲下一个 URL」到「页面出现在屏幕」整条链路全景.md b/mengyanote-backend/data/mengyanote/实习求职/牛客八股/HTTP 与HTTPS/从「敲下一个 URL」到「页面出现在屏幕」整条链路全景.md similarity index 100% rename from mengyanote-backend/data/mengyanote/实习求职/面试八股/HTTP 与HTTPS/从「敲下一个 URL」到「页面出现在屏幕」整条链路全景.md rename to mengyanote-backend/data/mengyanote/实习求职/牛客八股/HTTP 与HTTPS/从「敲下一个 URL」到「页面出现在屏幕」整条链路全景.md diff --git a/mengyanote-backend/data/mengyanote/实习求职/面试八股/网络模型/OSI 七层模型是什么?.md b/mengyanote-backend/data/mengyanote/实习求职/牛客八股/网络模型/OSI 七层模型是什么?.md similarity index 100% rename from mengyanote-backend/data/mengyanote/实习求职/面试八股/网络模型/OSI 七层模型是什么?.md rename to mengyanote-backend/data/mengyanote/实习求职/牛客八股/网络模型/OSI 七层模型是什么?.md diff --git a/mengyanote-backend/data/mengyanote/实习求职/通用面试八股/Agent面试八股.md b/mengyanote-backend/data/mengyanote/实习求职/通用面试八股/Agent面试八股.md new file mode 100644 index 0000000..3d52d70 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/实习求职/通用面试八股/Agent面试八股.md @@ -0,0 +1,451 @@ + + +## 1.**如何定义一个Agent?它通常由哪些核心组件构成?** + +​ **Agent** = LLM(大脑) + Memory(记忆) + Tools(手) + Planning(决策) + Goal(目标) + + + +## 2.说下**ReAct**框架。它是如何将思维链和行动结合起来,以完成复杂任务的? 了解**Plan-and-Solve吗 ,Reflection**吗 + +![4-1.CPkLktBw](./assets/f71df44372340fabe6e46ef3790036efe8551e6f.png) + +​ **React**核心在于智能体 不断重复这个Thought-Action-observation循环,将新的结果追加的历史记录中去,形成一个不断增长的上下文,直到在Thought中认为已达到了正确答案 + +​ **Plan-and-Solve**核心分为两个阶段: + +​ 1)规划阶段 :将问题分解,制定出一个清晰、分步骤的行动计划 + +​ 2)执行阶段:严格按照计算中的步骤,逐步执行 + +​ **Reflection**核心在于执行->反思->优化 + +## 3.在 Agent 的设计中,“规划能力”至关重要。请谈谈目前有哪些主流方法可以赋予 LLM 规划能力?(例如 CoT, ToT, GoT等) + +1)COT思维链 + +2)TOT思维树 + +3)GOT思维图 + +![image-20260321102005219](./assets/f1a62c5b977d44495879c58e12feb208ee3352f8.png) +3.1 深入剖析ReAct框架的局限性,并在此基础上,详细解释Plan-Then-Act、ReAct + 轻规划以及Tree/Graph Planning(如ToT、LATS)这三种范式的核心区别、适用场景和各自的优缺点。【待回答】 +3.2 请阐述“思维链”(Chain-of-Thought, CoT)与“规划”(Planning)的本质区别。为什么说CoT仅仅是“将推理过程写出来”,而Planning是生成一个“可执行的任务表”?请用具体例子说明。【待回答】 + +## 4.**Memory**是 Agent 的一个关键模块,如何为 Agent 设计长短时记忆?可以借助哪些外部工具或技术? + +短期记忆: 当前任务上下文的“工作记忆” + +长期记忆:跨任务、跨会话的持久知识 + +短期记忆可以借助对话上下文 长期可以借助知识图谱、向量数据库 + +## 5.Tool Use是扩展 Agent 能力的有效途径。请解释 LLM 是如何学会调用外部 API 或工具的?(可以从 Function Calling 的角度解释) + +## 6.请比较一下两个流行的 Agent 开发框架,如 LangChain 和 LlamaIndex。它们的核心应用场景有何不同? + +**Langchain** 应用编排 + +**LLamaIndex** 数据与检索框架 + +## 7.在构建一个复杂的 Agent 时,你认为最主要的挑战是什么? + +1)如何做规划与决策 + +2)长期任务状态管理、记忆 + +## 8.Agent 的短期记忆和长期记忆应该如何设计和配合? + +**短期记忆**= 当前任务的工作内存 +**长期记忆**= 所有历史的经验库 + +短期记忆负责维护当前任务的上下文与推理状态,长期记忆负责提供可检索的知识与经验,两者通过检索与写回形成闭环协同,从而实现既“能思考当下”,又“能积累经验”的智能体系统。 + +## 9.什么是**多智能体**系统?多Agent 协同相比于单个 Agent 有什么优势?又会引入哪些新的复杂性? + +优点: + +1)复杂任务拆解能力更强,每个Agent可以专注不同子任务 + +2)并行化 ,多agent可以并行探索不同解法,效率更高 + +3)更接近现实建模, 团队协作 + +缺点: + +1)协调与通信成本, + +2)决策问题,冲突不一致问题,由单体决策变为分布式系统问题 + +3)每个agent可能解出的是局部最优解,但是不一定是全局最优解 + +4)成本问题 + +## 10.多 Agent 协作时,如何设计 Agent 之间的通信和协调机制? + +- 角色分配:每个Agent根据其专长被赋予特定的角色,如数据收集者、分析者等 +- 信息共享平台:建立一个中心化的信息交换平台,所有Agent都可以在此发布和订阅相关信息 +- 冲突解决策略:设计合理的冲突解决规则,避免因资源竞争导致的任务失败 + +## 11.当一个 Agent 需要在真实或模拟环境中(如机器人、游戏)执行任务时,它与纯粹基于软件工具的 Agent 有什么本质区别? + + + +## 12.你用过哪些Agent框架?选型是如何选的?你最终场景的评价指标是什么? + +LangGraph 将任务拆分为一个由状态、节点和边构成的流程图。 +State(状态):全局共享数据,如记忆、上下文、工具结果。 +Node(节点):每个节点是一个函数 / LLM 调用 / 工具调用。 +Edge(边):定义执行路径、条件判断、循环。 + +LangChain 简单问答、工具调用、单步决策 + +## 13.有微调过Agent能力吗?数据集如何收集? + +基座模型无法很好的识别特定领域的工具、Agent性能不稳定时也需要开发人员围绕基座模型进行Agent性能方面的微调 + +1)高效微调 (高效微调的核心在于**数据质量与覆盖度**) + +围绕当前Agent特定执行的任务,构造工具调用的微调数据集,让模型学会在同一对话中合理组合多个内置工具,并学会围绕一个问题能确稳定、多步地调用工具。 + +2)强化学习微调 + +让模型在真实环境中不断试错和优化,从而提升Agent性能。例如我们可以将工具调用的准确率、任务完成率、调用链条的合理性作为奖励函数,引导模型学会更高质量的交互。 + +## 14.如果要开发Agent,应该要怎么开发? + +答: +核心流程: + +- 定义能力边界(能做,不能做) +- 设计推理循环(思考->行动->观察->再思考) +- 输出结构化结果(减少自我发挥) + +伪代码: + +``` +Agent:={ + Role:角色声明 + Description:告知能力(可调用的工具) + Instruction:明确职责 + Config:{ + 最大轮次 + 超时控制 + 输出格式 + } +} +``` + + + +# ***RAG*** + +![RAG.drawio](./assets/04adfee036645335006b33a5650f92838fc19952.png) + +## 1.请解释 RAG 的工作原理。与直接对 LLM 进行微调相比,RAG 主要解决了什么问题?有哪些优势? + +RAG在大语言模型前先访问数据库(向量数据库或者知识图谱库),从数据库中检索出相符的文本或者向量,做一个提示词增强然后输入给LLM。 + +- 一定程度上解决了模型的幻觉问题 +- 可以接入本地知识库(私有库) + +## 2.RAG 怎么解决 LLM 上下文窗口有限的问题? + + + +## 3.Function Call,MCP了解么 + +![image31](./assets/image31.png) + +图中4是function call + +``` +函数调用 +functions = [{ + "name": "get_weather", + "parameters": { + "type": "object", + "properties": { + "location": {"type": "string"} + } + } +}] +``` + +``` +MCP插件 +{ + "mcpServers": { + "filesystem": { + "command": "npx", + "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/data"] + }, + "github": { + "command": "npx", + "args": ["-y", "@modelcontextprotocol/server-github"], + "env": { + "GITHUB_TOKEN": "your-token" + } + } + } +} +``` + +## 4.Websocket和SSE区别是什么 + +​ SSE是单向通信,是由服务端发送客户端的。目前主流LLM对话基于SSE + +​ WebSocket是双向通信 + +## 5.一个完整的 RAG 流水线包含哪些关键步骤?请从数据准备到最终生成,详细描述整个过程 + +​ 第一阶段:数据准备 + +​ 1)数据采集与加载——收集构建知识库所需的源数据,如PDF、Markdown、数据库记录、网页、Notion文档等。 + +​ 2)文档解析与预处理——将原始二进制数据(如 PDF 图片)转换为纯文本,并进行清洗 + +​ 3)智能分块——将长文档切分成更小的分段 + +​ 4)向量化(嵌入)——调用嵌入模型(Embedding Model),将文本块转换为高维向量。 + +​ 5)数据存储与索引构建——将生成的向量及元数据存入向量数据库,如(Pgvector) + +​ 第二阶段:查询阶段 + +​ 1)查询理解——对用户的输入进行预处理 + +​ 2)检索,使用用户的问题在向量数据库中进行搜索 + +​ 3)重排序对检索到的Top-K结果重新打分和排序 + +​ 4)上下文构建与提示词工程 + +​ 5)生成与输出 + + + +## 6.在构建知识库时,文本切块策略至关重要。你会如何选择合适的切块大小和重叠长度?这背后有什么权衡? + +在RAG系统里调切块参数,说白了就是要在“搜得准”和“看得全”之间做取舍。 + +**块越小**,每个片段的内容越单一,向量化后语义更集中,检索时匹配更精准;但缺点也很明显——信息容易被截断,大模型拿到的只是零散的片段,缺少上下文,反而可能理解偏差或瞎编。 + +**块越大**,上下文保留得越完整,模型推理时占便宜;但问题在于,一个块里可能混进多个不同的话题,向量变成“大杂烩”,检索时容易带回一堆不相关的内容,同时每个块占用的上下文窗口也更大,一次能塞进去的块数就少了。 + +工程上通常拿 **512 token** 当起点。如果是FAQ这类问题,场景简单,用 **256** 左右更合适;如果是需要深度理解的复杂任务,可以放大到 **1024**,然后根据实际效果慢慢调。 + +**重叠(overlap)** 的作用,是缓解块与块之间在边界处被硬生生切断带来的语义丢失。一般按块大小的 **10%~25%** 来设。重叠太小,衔接效果不明显;重叠太大,既浪费存储,又会造成检索结果大量重复。不过说到底,overlap 只是对“按固定长度硬切”这种粗糙方式的一种补救。更好的做法是根据文档本身的规律来切——比如根据语义变化幅度自动切分,或者顺着文档原有的标题、段落结构来拆。 + +在实际项目中,我常用 **多级索引** 的思路:用小块来做精细检索,保证命中率;检索到之后再把它对应的大块喂给模型,这样检索和生成两头都能拿到最适合自己的粒度。 + +最后一点,切块参数不能靠感觉拍板,得结合你用的 Embedding 模型支持的最佳输入长度,通过 **召回率** 和 **生成质量** 两项评估指标来反复验证和调优。 + +参考:https://golangstar.cn/backend_series/llm_interview/chunk.html + +## 7.如何选择一个合适的嵌入模型?评估一个 Embedding 模型的好坏有哪些指标? + +### 选型实战: + +1. **任务与数据领域** + - **通用领域**(客服、通用问答):选择通用模型,如OpenAI的`text-embedding-3-small`或开源的`bge-large-en-v1.5`。 + - **专业领域**(医疗、法律):优先选择领域预训练模型,如医疗领域的**BioBERT**,或法律领域的**Legal-BERT**,它们在专业术语上的理解力远超通用模型。 + - **多语言/中文场景**: + - **中文为主**:推荐 `bge-large-zh-v1.5`(效果最佳)或 `bge-base-zh-v1.5`(性价比高)。 + - **多语言混合**:首选 **BGE-M3**,它支持超过100种语言,并且有8K的长下文窗口。 +2. **上下文窗口与文本长度** + - 如果你的文档很长(如学术论文、法律合同),务必选择支持**8K tokens**以上窗口的模型,如 **BGE-M3** 或 OpenAI的`text-embedding-3-large`。否则,模型会因为看不到全文而丢失关键信息。 +3. **向量维度与计算资源** + - **高维向量**(>1536维):信息承载量大,精度更高,但消耗更多存储和计算资源。 + - **低维向量**(384-768维):更轻量,检索速度快,适合资源受限或对实时性要求极高的场景。 +4. **成本考量** + - **API调用**:如OpenAI,按token付费,前期投入低,适合快速原型验证和小规模应用。 + - **自托管**:如Hugging Face上的开源模型,前期有硬件和部署成本,但在大规模生产环境中,长期总拥有成本(TCO)更低,数据也更安全。 +5. **基准测试与落地验证** + - **初筛**:在 [MTEB 排行榜](https://huggingface.co/spaces/mteb/leaderboard) 上查找在你关注的任务(如“Retrieval”)上评分较高的模型。 + - **终验**:**一定要用你的真实数据做小范围测试**。因为公开数据集的分布和你的私有数据分布可能完全不同,这一步是检验模型真实效果的试金石。 + +### 评价指标: + +1. **语义相似度与检索准确率** + - **是什么**:衡量模型对语义理解的准确性,是否能找到意思相近的内容。 + - **常见指标**:**召回率**(找回了多少真正相关的内容)、**平均倒数排名**(MRR,评估最相关结果的排位是否靠前),以及经典的**Spearman相关系数**(评估模型给出的相似度分数与人类判断是否一致)。 +2. **MTEB (Massive Text Embedding Benchmark) 基准评分** + - **是什么**:目前业界最主流的“标准试卷”,通过58个数据集、6大类任务(如语义搜索、分类、聚类等)来综合打分。 + - **怎么用**:MTEB排行榜是选型的**重要起点**。但要注意,高分不等于在你的专属业务上表现也好,它更多是模型综合实力的体现。 +3. **模型规模与推理效率** + - **是什么**:模型的参数数量和向量维度,直接决定了运行速度和资源消耗。 + - **关键数据**: + - **轻量级模型**(如`b1ade-embed`, `bge-base-zh-v1.5`):参数量在3亿左右,速度快、资源占用少,适合对延迟敏感的场景。 + - **重量级模型**(如`NV-Embed-v1`, `Mistral-7B`):参数量超过70亿,精度更高,尤其在处理长文本时优势明显,但需要强大的GPU支持。 +4. **鲁棒性与抗干扰能力** + - **是什么**:模型在面对文本中的微小噪音(如错别字、语序微调)时,能否保持稳定,不产生剧烈波动。 + - **高要求场景**:如果你的数据来自用户生成内容(UGC),存在大量不规范输入,这个指标就非常关键。 +5. **信息敏感性** + - **是什么**:模型区分关键信息和细微差别的能力。例如,它能分辨出两份相似报告中,一个提到了“疑似肿瘤”,而另一个明确是“良性囊肿”这种对决策有重大影响的差异。 + + + + + +## 8.除了基础的向量检索,你还知道哪些可以提升 RAG 检索质量的技术? + + + +## 9.如何全面地评估一个 RAG 系统的性能?请分别从检索和生成两个阶段提出评估指标 + + + +## 10.在什么场景下,你会选择使用图数据库或知识图谱来增强或替代传统的向量数据库检索? + +​ **知识图谱与向量数据库**作为两类主流技术,分别以**关系推理**与**语义相似性**搜索为核心能力。 + +​ **从数据建模上看** + +​ 1)知识图谱采用图结构数据模型,通过节点和边构建语义网络。 + +​ 2)向量数据库则依赖向量空间模型,将文本、图像等非结构数据转换为高维向量。 + +​ **从检索机制上** + +​ 1)知识图谱通过图遍历算法实现多跳处理。例如医疗场景中,症状A-引发-疾病-需要-药剂C 来推荐治疗方案 + +​ 2)向量数据库则依相似性度量算法(如余弦相似度)实现模糊匹配。 + +​ ![img](./assets/blog-upload-1743529636933-426667190.png) + +**从应用场景来看** + +​ 知识图谱适用于"**推理性**”场景 + +​ # 金融风控:构建 “企业 - 股东 - 关联交易” 关系网络,某银行通过此技术发现 37 起潜在关联交易风险。 + +​ # 医疗诊断:将患者症状与医学知识库匹配,某 AI 辅助诊断系统误诊率下降 65% + +​ 向量数据库适用于“**检索型**”场景 + +​ # 多模态搜索:支持 “图片搜商品” 功能,某电商平台转化率提升 22% + +​ # 大模型外挂:通过 RAG 技术为 LLM 提供实时知识支持,某客服机器人事实性回答准确率从 75% 提升至 92% + + + +## 11.传统的 RAG 流程是“先检索后生成”,你是否了解一些更复杂的 RAG 范式,比如在生成过程中进行多次检索或自适应检索? + + + +## 12.RAG 系统在实际部署中可能面临哪些挑战? + + + +## 13.什么是RAG中的"幻觉"问题?如何预防? + +​ 大模型幻觉 + +​ 大模型本身在生成文本时,会产生与事实不符、无依据或编造的内容。这是模型的固有问题。 + +​ RAG幻觉 + +​ 在RAG架构中,由于检索信息与模型生成之间的错配,导致模型仍然产生幻觉的现象。这是幻觉在RAG场景下的具体表现。 + +## 14.GraphRAG与传统RAG有什么区别? + +1. GraphRAG与传统RAG的核心区别在于:**传统RAG将知识视为孤立的文本片段,而GraphRAG将知识构建成相互关联的实体网络,实现关系感知的检索与推理**。 + + 我把它们的核心区别整理成了一张对比表,方便你快速理解: + + | 对比维度 | 传统RAG (Vector RAG) | GraphRAG | + | :----------- | :----------------------------------------------------------- | :----------------------------------------------------------- | + | **知识表示** | 将文档切分为**非结构化文本块**,通过向量表示语义 | 构建**知识图谱**,用**节点**(实体)和**边**(关系)表达结构化知识 | + | **检索机制** | **语义相似性检索**。将查询向量化,在向量库中匹配最相似的文本块 | **关系遍历检索**。定位相关实体节点,沿关系边进行多跳遍历,获取子图 | + | **核心能力** | 擅长**事实查找**和**主题归纳**,适合单文档或跨文档的简单问答 | 擅长**多跳推理**和**关系分析**,能追溯复杂问题的完整逻辑链路 | + | **可解释性** | 提供相关的文本片段作为依据,但证据链较弱 | 可展示完整的**推理路径**(实体A→关系→实体B→...),证据透明可追溯 | + | **实现成本** | **较低**。流程简单:文档分块 → 向量化 → 存储 | **较高**。需额外进行实体抽取、关系构建和图谱维护 | + | **适用场景** | 开放域问答、FAQ机器人、文档摘要等 | 复杂推理、全局性分析、合规调查、供应链追溯等 | + + ------ + + ### 📌 深入理解:为什么GraphRAG能解决传统RAG的痛点? + + 传统RAG在处理复杂问题时,往往会遇到一个核心瓶颈:**信息碎片化**。例如,当被问到“A公司收购B对C有什么市场影响?”时,答案可能分散在多个文档中,而传统RAG检索到的孤立文本块很难串联起“A→收购→B→影响→C”的完整因果链。 + + GraphRAG正是为了解决这个问题而生,它的核心优势体现在: + + 1. **强大的多跳推理能力** + GraphRAG将信息表示为相互连接的图。当收到一个问题时,它能够像沿着路标行走一样,从一个实体跳到另一个相关的实体,遍历整个关系链,从而找到最终答案。NVIDIA的实验数据表明,GraphRAG在需要多跳推理的专业领域问答中,准确率(Hits@1)可以达到传统基线的**两倍以上**(32% vs 15.57%)。 + 2. **显著降低的“幻觉”风险** + 由于GraphRAG的检索过程是基于明确、可追溯的关系路径,它能向大语言模型提供更精准、上下文更完整的知识。这大大减少了模型因为信息不足而“编造”答案的可能性,使生成的内容严格依据事实。一项2023年的基准测试显示,GraphRAG在回答企业级问题时,整体准确率比无知识图谱的LLM提升了**3.4倍**(从16.7%提升到56.2%)。 + 3. **无与伦比的全局信息感知能力** + 传统RAG只能“看到”与问题最相似的一小部分文本块,难以回答需要总结整个数据集或发现宏观趋势的问题。GraphRAG可以通过“社区检测”等技术,将关联紧密的实体归为一组并生成摘要,从而让系统具备回答“这份财报中,各地区业务表现的整体趋势是什么?”这类全局性问题的能力。 + + ### 🤔 如何选择? + + 你可能会问,既然GraphRAG这么强大,是不是可以完全替代传统RAG了? + + 答案是否定的。**选择哪种技术,取决于你的具体应用场景和核心诉求**。 + + - **优先选择传统RAG,如果你的需求是:** + - **快速起步**:需要快速搭建一个原型或MVP(最小可行产品)。 + - **简单问答**:处理FAQ、单文档问答或摘要类任务。 + - **资源有限**:对延迟敏感,或没有预算进行复杂的图谱构建和维护。 + - **果断采用GraphRAG,当你的场景是:** + - **复杂推理**:问题需要跨越多份文档,涉及多步逻辑(如“找出所有与X公司有合作,并且其产品存在安全隐患的供应商”)。 + - **关系分析**:核心在于理解事物之间的联系(如金融风控中的资金链路追踪、供应链影响分析)。 + - **高精度要求**:对“幻觉”零容忍,需要答案的每一个环节都可追溯、可验证(如医疗、法律、合规审查)。 + +## 15.如果RAG系统返回0个检索结果,你会如何排查问题? + + + + + +## 16.了解Transformer 吗? + +11transformer.drawio + +## 17.准确率和召回率的区别? + +- 召回率(Recall):所有相关文档被检索出来的比例=检索到的相关内容数/总相关内容数。召回率低,意味着关键参考缺失,容易产生幻觉或回答不全。 +- 精准率(Precision):检索结果中真正相关的比例=检索到的相关内容数/总检索内容数。精准率低会引入无关内容,浪费token并干扰判断。 + 优化方法: +- 提升召回率:混合检索、分块优化、同义词扩展 +- 提升精准率:重排序、阈值过滤、语义去重 +- 目标:召回率:> 90 % , 精准率 > 85 % + +## **18.什么是“混合检索”(Hybrid Search)?请解释为什么在工业级RAG系统中,纯向量检索往往不够用,需要结合关键词检索(如BM25)。请给出一个具体的业务场景,说明混合检索的必要性。** + + + +## 19.在处理一个需要多步工具调用的复杂任务(例如“调研三篇关于RAG+RL的论文并输出中文总结”)时,如何设计一个鲁棒的规划机制来应对中间步骤的失败(如某个API调用超时或返回数据格式错误)?请描述具体的重试、回滚或重规划策略。 + + + +# ***调优*** + +## 1.如何保障调用模型API的健壮性和并发性? + +- 健壮性:统一调用封装;分场景超时与指数退避重试;降级到备用模型;熔断与限流;非核心任务异步化。 +- 并发性:模型请求池与业务请求池隔离;高频结果缓存;分布式锁避免重复调用。 + +## 2.第三方模型超时如何处理? + +- a.差异化超时,实时反馈并提示用户; +- b.缓存兜底,保证主流程不中断; +- c.非实时任务入队异步重试,结果补发; +- d.监控警告与定位; +- e.触发轻量限流削峰; + +添加超时控制、重试机制与基础降级策略,必要时引入熔断器与监控大 + +## 3.在Agent推理过程中,经常会出现“推理断层”或“结果与目标偏离”的问题。请结合具体技术或你的实践经验,说明如何通过提示工程、记忆机制或架构设计来缓解或解决这一问题。【待回答】 + + + +## 4.当历史对话记录非常长时(远超模型上下文窗口),你有哪些策略来优化记忆的查询效率并保证关键信息不丢失?请比较“滑动窗口”、“总结压缩”、“向量检索”等不同方案的优劣。【待回答】 + +- 滑动窗口:Redis维护短期记忆(近5论对话历史),适配长流程 +- 记忆压缩:设定阈值,超过阈值后调用 阈值前的对话,保留摘要但丢失细节 +- 分层记忆: … + +# ***Skills*** + diff --git a/mengyanote-backend/data/mengyanote/实习求职/面试八股/计算机面试经典八股.md b/mengyanote-backend/data/mengyanote/实习求职/面试八股/计算机面试经典八股.md deleted file mode 100644 index 7bf1d88..0000000 --- a/mengyanote-backend/data/mengyanote/实习求职/面试八股/计算机面试经典八股.md +++ /dev/null @@ -1,121 +0,0 @@ -+好的!计算机面试中最经典、最高频的“八股文”主要围绕以下几个核心领域展开。掌握这些基础知识和原理是通关技术面试的关键: - -## 🧠 一、 数据结构与算法 - -1. **基础数据结构:** - * **数组 vs 链表:** 内存结构、访问/插入/删除时间复杂度、适用场景。 - * **栈(Stack) & 队列(Queue):** LIFO/FIFO 原理、实现方式(数组/链表)、应用场景(函数调用栈、BFS/DFS)。 - * **哈希表(Hash Table):** 原理(哈希函数、冲突解决-开放寻址/链地址法)、时间复杂度分析、负载因子、扩容机制。 - * **堆(Heap) / 优先队列(Priority Queue):** 结构(通常是二叉堆)、操作(插入、删除堆顶、堆化)、应用(Top K、中位数、Dijkstra)。 - * **树(Tree):** - * 二叉树(Binary Tree):遍历(前序、中序、后序、层序)- 递归与非递归实现。 - * 二叉搜索树(BST):定义、查找、插入、删除、中序遍历有序性。 - * 平衡二叉搜索树(AVL / 红黑树):平衡因子/红黑规则、旋转操作、为什么需要(避免BST退化成链表)、应用(Java HashMap的TreeBin/TreeMap)。 - * **图(Graph):** 表示方法(邻接矩阵、邻接表)、遍历算法(BFS、DFS)、常见算法(拓扑排序、最短路径-Dijkstra/Bellman-Ford/Floyd、最小生成树-Prim/Kruskal)。 - -2. **基础算法思想:** - * **排序算法:** - * 比较排序:**快速排序**(分治、选基准、partition过程、时间复杂度-最好O(nlogn)/最坏O(n²)/平均、空间复杂度、稳定性❌)、**归并排序**(分治、稳定✅、时间复杂度O(nlogn)、空间复杂度O(n))、**堆排序**(建堆O(n)、排序O(nlogn)、不稳定❌)、插入排序、冒泡排序、选择排序(原理、时间复杂度)。 - * 非比较排序:计数排序、桶排序、基数排序(思想、适用场景)。 - * **搜索算法:** **二分查找**(前提有序、循环/递归实现、变种问题-找第一个/最后一个/旋转数组)。 - * **递归 & 分治:** 思想、经典问题(斐波那契、汉诺塔、归并/快排)。 - * **贪心算法(Greedy):** 思想(局部最优->全局最优?)、适用场景(活动选择、霍夫曼编码、最小生成树-Prim/Kruskal)、与动态规划区别。 - * **动态规划(DP):** **核心思想**(最优子结构、重叠子问题、状态转移方程)、**解题步骤**(定义状态、状态转移、初始化、边界、输出)、**经典问题**(斐波那契、爬楼梯、背包问题01/完全、最长公共子序列LCS、最长递增子序列LIS、编辑距离、股票买卖系列)。 - * **回溯(Backtracking):** 思想(试错、DFS+剪枝)、经典问题(N皇后、全排列、组合、子集、数独)。 - * **双指针(Two Pointers):** 应用(有序数组两数之和、滑动窗口-最小覆盖子串/最长无重复子串、快慢指针-链表判环/找中点)。 - * **位运算(Bit Manipulation):** 常用操作(与、或、异或、非、移位)、常见技巧(判断奇偶、交换两数、找出只出现一次的数字、位1的个数)。 - -## 🖥 二、 操作系统 - -1. **进程与线程:** - * 进程 vs 线程(定义、资源分配、切换开销、通信方式)。 - * **进程间通信(IPC):** 管道、命名管道、信号、消息队列、共享内存、信号量、套接字。 - * **线程同步机制:** **互斥锁(Mutex)**、**信号量(Semaphore)**、**条件变量(Condition Variable)**、读写锁(Read-Write Lock)、自旋锁(Spin Lock)(原理、适用场景、死锁避免)。 - * **死锁(Deadlock):** 必要条件(互斥、请求与保持、不可剥夺、环路等待)、预防策略、避免策略(银行家算法)、检测与恢复。 -2. **内存管理:** - * **虚拟内存(Virtual Memory):** 为什么需要?分页(Paging)机制(页表、TLB快表)、分段(Segmentation)机制。 - * **页面置换算法:** **最佳置换(OPT)**、**先进先出(FIFO)**、**最近最久未使用(LRU)**、时钟算法(Clock) 的原理和优缺点。 - * **内存分配:** 伙伴系统(Buddy System)、Slab分配器。 -3. **文件系统:** 文件描述符(File Descriptor)、inode结构、文件存储方式(连续、链式、索引)、目录结构。 -4. **CPU调度:** 调度算法(FCFS、SJF、优先级、RR轮转、多级反馈队列)的目标和特点。 -5. **I/O模型:** 阻塞I/O、非阻塞I/O、I/O多路复用(select/poll/epoll)、信号驱动I/O、异步I/O(AIO) 的区别和比较(特别是epoll的优势)。 - -## 🌐 三、 计算机网络 - -1. **网络模型:** **OSI七层模型** 和 **TCP/IP四层模型** 各层功能、对应协议。 -2. **核心协议:** - * **TCP vs UDP:** 根本区别(连接、可靠性、有序性、流量控制、拥塞控制)、头部结构、应用场景。 - * **TCP可靠传输:** 序号/确认号、超时重传、滑动窗口机制。 - * **TCP连接管理:** **三次握手**(详细过程、为什么是三次?)、**四次挥手**(详细过程、为什么是四次?TIME_WAIT状态的作用?)。 - * **TCP流量控制:** 滑动窗口机制。 - * **TCP拥塞控制:** 慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)、快速恢复(Fast Recovery) 算法原理。 - * **HTTP:** - * 请求方法(GET/POST/PUT/DELETE等区别)、状态码(1xx/2xx/3xx/4xx/5xx常见状态码含义)。 - * **HTTP/1.0 vs HTTP/1.1 vs HTTP/2 vs HTTP/3:** 主要改进(连接复用、头部压缩、服务器推送、QUIC协议)。 - * **HTTPS:** SSL/TLS协议作用、加密过程(非对称加密交换对称密钥、对称加密通信)、数字证书作用。 - * **DNS:** 作用、查询过程(递归、迭代)、记录类型(A、AAAA、CNAME、MX、NS)。 -3. **网络安全基础:** - * **对称加密 vs 非对称加密:** 原理、优缺点、代表算法(AES、RSA)。 - * **数字签名 & 数字证书:** 作用、原理(私钥签名,公钥验签;CA中心颁发证书)。 - * 常见攻击:XSS、CSRF、SQL注入、DDoS、中间人攻击的原理和基本防御措施。 -4. **网络层:** IP协议、IP地址分类/子网划分/CIDR、ARP协议、路由协议(RIP、OSPF、BGP基本思想)。 -5. **传输层与应用层:** 端口号作用、Socket编程基础。 - -## 🗃 四、 数据库(以关系型数据库 MySQL 为主) - -1. **SQL基础:** 常用语句(SELECT, INSERT, UPDATE, DELETE, JOIN, GROUP BY, HAVING, ORDER BY, LIMIT)、多表连接(INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN)。 -2. **索引(Index):** - * **为什么需要索引?** 加速查询。 - * **数据结构:** **B+树**(为什么比B树更适合数据库?)、哈希索引(适用场景)。 - * **聚簇索引(Clustered Index) vs 非聚簇索引(Non-Clustered Index / Secondary Index):** 根本区别(叶子节点是否存储完整行数据)、InnoDB实现。 - * **索引优化:** 覆盖索引、最左前缀原则、索引下推(ICP)。 - * **索引失效场景:** 函数操作、类型转换、`LIKE '%xx'`、OR条件(部分情况)、不等于(!=, <>)、索引列计算。 -3. **事务(Transaction):** - * **ACID特性:** 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 的含义。 - * **隔离级别(Isolation Level):** **读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read - MySQL默认)、串行化(Serializable)**。每个级别能解决哪些并发问题(脏读、不可重复读、幻读)? - * **并发问题:** 脏读、不可重复读、幻读的定义。 - * **MVCC(多版本并发控制):** 原理(Undo Log、Read View)、如何实现RC和RR级别(特别是RR如何解决幻读?)。 -4. **锁(Locking):** 共享锁(S锁/读锁)、排他锁(X锁/写锁)、意向锁、行锁、表锁、间隙锁(Gap Lock)、临键锁(Next-Key Lock)的作用和应用场景(特别是InnoDB如何解决幻读)。 -5. **日志(Logging):** - * **Redo Log(重做日志):** 作用(保证持久性、Crash-Safe)、Write-Ahead Logging(WAL)机制。 - * **Undo Log(回滚日志):** 作用(保证原子性、实现MVCC)。 - * **Binlog(归档日志):** 作用(主从复制、数据恢复)、格式(Statement/Row/Mixed)。 -6. **数据库设计:** 三大范式(1NF, 2NF, 3NF)基本概念、反范式化设计场景。 -7. **性能优化:** Explain分析SQL执行计划、慢查询优化思路。 - -## 📐 五、 系统设计(面向中高级岗位) - -1. **设计原则:** KISS, YAGNI, DRY, SOLID (尤其是单一职责、开闭原则)。 -2. **方法论:** - * 需求澄清(功能需求、非功能需求-性能/可用性/扩展性/一致性/容错性/安全性)。 - * 估算(QPS、TPS、存储量、带宽)。 - * 抽象与模块化。 - * 核心组件设计(API、数据模型、存储方案、算法)。 - * 深入细节(扩展性、可靠性、性能优化)。 -3. **常见组件与模式:** - * 负载均衡(LB: Nginx, HAProxy, LVS)。 - * 缓存(Cache: Redis, Memcached)- 缓存策略(Cache Aside, Read/Write Through, Write Behind)、缓存穿透/击穿/雪崩及解决方案。 - * 消息队列(MQ: Kafka, RabbitMQ, RocketMQ)- 解耦、异步、削峰填谷、保证最终一致性。 - * 数据库扩展:读写分离、分库分表(水平/垂直拆分)、分区。 - * 分布式ID生成(Snowflake算法)。 - * 分布式一致性协议:**CAP理论**、**BASE理论**、**Raft/Paxos**(选主、日志复制)基本原理(理解核心思想即可,不要求推导)。 - * 微服务架构:服务注册与发现(Eureka, Nacos, Consul)、API网关(Gateway)、配置中心、服务调用(RPC/REST)、熔断限流(Hystrix, Sentinel)。 -4. **经典系统设计题:** 设计Twitter/微博、设计短链系统、设计秒杀系统、设计分布式缓存、设计搜索引擎、设计聊天系统等。 - -## 🐍 六、 编程语言特性(根据应聘语言选择) - -1. **面向对象(OOP):** 封装、继承、多态、抽象类 vs 接口、重载 vs 重写。 -2. **内存管理:** 垃圾回收(GC)原理(标记清除、复制、标记整理、分代收集-G1/ZGC)、引用类型(强引用、软引用、弱引用、虚引用)。 -3. **并发编程:** 线程生命周期、创建方式、线程池(核心参数、工作流程、拒绝策略)、锁(Synchronized底层原理、Lock/Condition)、并发容器(ConcurrentHashMap原理-CAS+synchronized+分段锁思想)、原子类(CAS操作、ABA问题)、线程间通信。 -4. **语言特性:** 如Java的JVM内存区域、类加载机制、反射、异常体系、集合框架(HashMap源码:put/get流程、扩容、JDK1.7 vs 1.8+);Python的GIL、装饰器、生成器、鸭子类型;Go的Goroutine、Channel、defer等。 - -## 📌 关键点提醒 - -1. **理解原理,而非死记硬背:** 面试官更关注你是否真正理解了背后的思想(为什么用这个?解决了什么问题?优缺点是什么?)。 -2. **联系实际:** 思考这些知识在实际系统/项目中是如何应用的。 -3. **清晰表达:** 能条理清晰、简洁准确地阐述概念和过程。 -4. **动手实践:** 算法题要动手写,数据库要会写SQL,系统设计要多思考多画图。 -5. **关注细节:** 很多问题会深入到具体实现细节(如HashMap冲突解决、ConcurrentHashMap分段锁演变、MySQL RR级别如何避免幻读、TCP TIME_WAIT)。 -6. **追踪发展:** 了解一些新技术趋势(如HTTP/3, QUIC, eBPF, 云原生, Serverless)的基本概念。 - -这份清单涵盖了计算机面试中最核心、最高频的基础知识点。针对具体岗位(前端、后端、算法、运维、测试等) \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/实习求职/面试经历/27双非本一腾讯IEG游戏安全后台实习面经.md b/mengyanote-backend/data/mengyanote/实习求职/面试经历/27双非本一腾讯IEG游戏安全后台实习面经.md index 2866519..1946aa5 100644 --- a/mengyanote-backend/data/mengyanote/实习求职/面试经历/27双非本一腾讯IEG游戏安全后台实习面经.md +++ b/mengyanote-backend/data/mengyanote/实习求职/面试经历/27双非本一腾讯IEG游戏安全后台实习面经.md @@ -44,18 +44,15 @@ timeline: 14. 介绍一下HTTP各个版本及实现 算法: - 1. 编辑距离 2. 两两交换链表中的节点 腾讯三面(30min) - 1. 介绍实习,你做了什么 2. 介绍项目 3. 实习时长,到岗时间,推HR面 腾讯HR面(15min) - 1. 离职原因 2. 实习时长,到岗时间 3. 聊聊天 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/momenta-运维开发二面.md b/mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/momenta-运维开发二面.md new file mode 100644 index 0000000..0a86362 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/momenta-运维开发二面.md @@ -0,0 +1,24 @@ +1. 介绍K8s +2. 创建一个deployment,生成两个pod的流程 +3. 调度器调度的流程 +4. pod的dns流程 +5. 如果一个pod提示连接超时,对于dns如何排查 +6. Linux进程的状态 +7. top命令 +8. 什么是平均负载 +9. 什么情况下进程处于不可中断状态 +10. 怎么看进程的io(iotop / pidstat) +11. 僵尸进程 +12. 了解过亲和、反亲和污点吗 +13. 两种调度策略requiredDuringSchedulingIgnoredDuringExecution和 +preferredDuringSchedulingIgnoredDuringExecution +14. 监控的时候内存使用的哪个指标(container_memory_working_set_bytes) +15. docker和containerd的区别 +16. 压缩和不可压缩资源 +17. namespace、cgroup、ufs +18. pod达到limit时会出现什么现象 +- CPU 超过 limit 时,容器不会被杀掉,而是被系统节流,CPU 使用会下降到 limit 值。 +- mem会被OOM +19. time_wait出现的原因、如何排查以及如何解决 +20. 进程、线程和协程的区别 +21. 了解过哪些网络的内核参数 diff --git a/mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/京东一面京东科技部门-云事业部门-技术运维(实则AI agent开发工程师).md b/mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/京东一面京东科技部门-云事业部门-技术运维(实则AI agent开发工程师).md new file mode 100644 index 0000000..70a86bb --- /dev/null +++ b/mengyanote-backend/data/mengyanote/实习求职/面试经历/运维开发/京东一面京东科技部门-云事业部门-技术运维(实则AI agent开发工程师).md @@ -0,0 +1,57 @@ +(1)面试的流程: + +自我介绍-实习经历拷打-对AI agent当前技术发展的理解和看法-对学生校园生活的问题-反问环节 +(2)问题大全: + +模块一:实习经历拷打 +1.你既然做过RocketRMQ的AI报警服务,那么请问你是如何实现的 +按照问题1,那么请问你是如何将AI纳入其中的,你给AI了什么数据,AI给你了什么结果 +按照问题1,加入AI以后有了什么变化 +按照问题1,AI的预测结果的准确性如何保证,遇到突发情况(发版/过节等意外情况) +按照问题1,那么AI加入以后,还有什么别的措施在AI出错以后补救 +2.我看你简历里面写了RAG的相关知识,请问你处理过什么样的文件 +按照问题2,文件的类型针对会有什么处理 +按照问题2,文件的大小是怎么样的 +按照问题2,文件如果有几个G比如一个4000多页的图文混杂的,你会如何实现 +按照问题2,你们RAG的更新频率如何和更新方式是手动的还是自动的 +按照问题2,RAG具体用在了哪些方面,对应的业务有什么优化 +3.能否讲一下你的AI助手中Langchain的运用 +按照问题3,你是如何将AI助手结合到办公OA,提供给同事使用的 +按照问题3,请问你是如何实现多调用链路的区分和写链路的 +按照问题3,你的MCP server 的工具主要都是什么工具,他们是如何保障你的AI分析的正确性 +按照问题3,你做了这些以后,AI分析是否帮助到了业务同事,具体有哪些改善 + +模块二:对当前AI agent 技术发展的看法 +1.你对RAG的看法 +2.令你印象很深刻的技术是哪个 +3.最新出的skills会吗,你觉得skills怎么样 + +模块三:对校园生活的问题 +1.再次确认了年龄和所在年级 +2.你可以实习到多久 +3.你下学期的课怎么办 +4.学校允许请假吗 +5.绩点怎么样 +6.为什么想要找北京的工作 +7.最后是想找工作还是考研 + +模块四:反问环节 +我的问题1:第一次听说京东的云事业部门,请问这个部门是干什么的 +回答:基本就是做云服务的 公有云和私有云都有 +我的问题2:为什么我看我的面试邀约是技术运维,但是实际岗位是AI agent 开发工程师 +回答:因为JD的AI agent 开发工程师是归属到技术运维的大类的,但是实际的工作内容是AI落地和agent开发 +我的问题3:现在是春招开始了吗,还是说只是年前的面试 +回答:只是全年度的实习生校招 +我的问题4:当前AI对于运维的影响到哪一步了,目前是否可以支持在部分条件下对实际业务进行编程内的操作 +回答:(先问了我的学习进度方向,然后讲述了当前前后端在AI大环境下的影响)认为目前前端,后端,运维,都要接受AI浪潮的冲击,需要懂得AI逻辑的人,来进行新的建设,衡量标准已经改变,会AI已经成为了新时代程序员的必备素养,要懂得和AI合作,使用AI,开发相关技术。传统的开发流程需要改变,会写代码的人,也不再需要持续高强度的写代码,需要有着更广阔的视野(太多了,后续忘干净了) + +面试总结: +本来以为是单纯的技术运维,但是实际是AI agent开发,面试官说他是看到我boss的简历才约我面试的,但是问题是我boss,他当时都没回我任何一句话,听他说是在boss上看到我,然后在网申平台看的我的详细简历然后约的面试。我也是直到开始才知道是AI agent 开发,本人的技术方向还是想做AI agent 开发的,在学校期间,也经常和前后端同学交流,了解他们的开发范式,和一些业务流程的精华,然后我也在尝试把这些做到我自己的agent中,我期望我到最后可以用前端后端 agent 加上我(运维+PM),就可以支撑起一个完善的高质量代码开发流程(终极目标,之前说梦话说狠了),希望这次面试可以顺利,感觉面试官人还挺好的,别挂我就好 + +题外话:在面试完后接收到了字节的面试邀约,对面试基础架构团队的,职位是SRE运维,又在新一轮的准备当中,如果有进展会更新帖子 + +更新:字节凉凉了,手撕没手撕起来,我本来计划过年看看的,结果长智齿了直接住院2周,高烧了6天,真的gg了,诶 + +更新:虽然字节没了,但是tx复活赛打赢了,一面没手撕没八股,全项目,现在正在二面 冲啊![:sob:](https://linux.do/images/emoji/twemoji/sob.png?v=15 ":sob:") + +更新:腾讯二面提交面评了等待三面会赢吗 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/技术原理解析/各平台原生桌面应用.md b/mengyanote-backend/data/mengyanote/技术原理解析/各平台原生技术栈.md similarity index 100% rename from mengyanote-backend/data/mengyanote/技术原理解析/各平台原生桌面应用.md rename to mengyanote-backend/data/mengyanote/技术原理解析/各平台原生技术栈.md diff --git a/mengyanote-backend/data/mengyanote/收藏的DNS集合.md b/mengyanote-backend/data/mengyanote/收藏的DNS集合.md new file mode 100644 index 0000000..471b2fa --- /dev/null +++ b/mengyanote-backend/data/mengyanote/收藏的DNS集合.md @@ -0,0 +1,20 @@ + +--- +**DOH:** +https://i4cm5lqxfu.cloudflare-gateway.com/dns-query (cloudflare快速DOH) +https://doh.360.cn/dns-query +https://cf-dns.smyhub.com/dns-query (自建Cloudflare Worker Doh) +https://f0slm5uhut.cloudflare-gateway.com/dns-query (CF-官方 Doh) + +--- +**DOT:** +f0slm5uhut.cloudflare-gateway.com + +--- +**IPV4:** + +--- +**IPV6:** +2a06:98c1:54::23:fd18 + +--- \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/收集的DOT和DOH.md b/mengyanote-backend/data/mengyanote/收集的DOT和DOH.md deleted file mode 100644 index 0a9ed04..0000000 --- a/mengyanote-backend/data/mengyanote/收集的DOT和DOH.md +++ /dev/null @@ -1,9 +0,0 @@ -**DOH:** -https://i4cm5lqxfu.cloudflare-gateway.com/dns-query (cloudflare快速DOH) -https://doh.360.cn/dns-query - -https://cf-dns.smyhub.com/dns-query (自建cloudflare worker Doh) - - - -**DOT:** diff --git a/mengyanote-backend/data/mengyanote/数据库/小萌芽数据库状态检测_2026-03-04.md b/mengyanote-backend/data/mengyanote/数据库/小萌芽数据库状态检测_2026-03-04.md deleted file mode 100644 index 7d96067..0000000 --- a/mengyanote-backend/data/mengyanote/数据库/小萌芽数据库状态检测_2026-03-04.md +++ /dev/null @@ -1,172 +0,0 @@ -## 服务器数据库状态日志报告 - -- 生成时间:2026-03-04 00:29:27 CST(`2026-03-04T00:29:27+08:00`) -- 主机:`smallmengya` -- 采集范围:本机正在运行/监听的数据库服务(MySQL / PostgreSQL / MongoDB / Redis) -- 采集方式:本机 socket / localhost 查询(脚本 `db_runtime_status.sh` + 若干配置文件/日志抽取) - -> 说明:为避免明文密码落盘,本报告不会写入两组候选密码原文,仅用“候选#1/候选#2”标记。 - -## 1. 口令匹配结果(候选密码 → 服务) - -- 候选#1:可用于 **MySQL(root@localhost via socket)**、**Redis(requirepass)** -- 候选#2:可用于 **MongoDB(用户 `shumengya`,auth DB=`admin`)** - -## 2. 概览(服务/版本/监听/存储/资源) - -| 服务 | 版本 | 监听(TCP) | 进程(PID) | 启动时间(ps) | 数据目录 | 目录占用(du) | RSS(约) | -|---|---|---|---:|---|---|---:|---:| -| MySQL | 8.4.8 | `0.0.0.0:3306`(另 `:::33060` X Plugin) | 677 | 2026-02-28 13:29:06 | `/var/lib/mysql` | 240M | ~501MiB | -| PostgreSQL | 18.2 | `0.0.0.0:5432`、`:::5432` | 704(主) | 2026-02-28 13:29:06 | `/var/lib/postgresql/18/main` | 39M | ~96MiB(postgres 用户总和) | -| MongoDB | 7.0.30 | `0.0.0.0:27017` | 569 | 2026-02-28 13:29:06 | `/var/lib/mongodb` | 498M | ~196MiB | -| Redis | 8.6.0 | `0.0.0.0:6379` | 578 | 2026-02-28 13:29:06 | `/var/lib/redis` | 8.0K | ~27MiB | - -## 3. MySQL - -### 3.1 配置与监听 - -- 监听:`0.0.0.0:3306`(对外开放) -- Socket:`/var/run/mysqld/mysqld.sock` -- 数据目录:`/var/lib/mysql` -- 错误日志:`/var/log/mysql/error.log` -- 关键配置(`/etc/mysql/mysql.conf.d/mysqld.cnf`): - - `socket = /var/run/mysqld/mysqld.sock` - - `datadir = /var/lib/mysql` - - `log-error = /var/log/mysql/error.log` - - `bind-address = 0.0.0.0` - -### 3.2 运行状态(快照) - -```text -mysqladmin status: -Uptime: 297864 Threads: 2 Questions: 6 Slow queries: 0 Opens: 119 Flush tables: 3 Open tables: 38 Queries per second avg: 0.000 - -SHOW GLOBAL STATUS LIKE 'Threads_connected'; -Threads_connected 1 - -SHOW VARIABLES LIKE 'max_connections'; -max_connections 151 -``` - -### 3.3 数据库列表 - -```text -SHOW DATABASES; -information_schema -mysql -nextcloud -performance_schema -sys -typecho -wordpress -``` - -## 4. PostgreSQL(18/main) - -### 4.1 配置与监听 - -- 监听:`listen_addresses='*'` + `port=5432`(对外开放) -- Unix Socket:`/var/run/postgresql/.s.PGSQL.5432` -- 数据目录:`/var/lib/postgresql/18/main` -- 关键配置(`/etc/postgresql/18/main/postgresql.conf`): - - `listen_addresses = '*'` - - `port = 5432` - - `max_connections = 100` - - `unix_socket_directories = '/var/run/postgresql'` -- 认证规则(`/etc/postgresql/18/main/pg_hba.conf`,关键启用行): - - `host all all 0.0.0.0/0 scram-sha-256`(允许外网但必须密码) - -### 4.2 运行状态(快照) - -```text -uptime: 3 days 10:44:25 -connections (pg_stat_activity): 9 -replication connections: 0 -``` - -### 4.3 数据库与大小 - -```text -datname | size -postgres | 7662 kB -``` - -## 5. MongoDB - -### 5.1 配置与监听 - -- 监听:`0.0.0.0:27017`(对外开放) -- 配置文件:`/etc/mongod.conf` -- 数据目录:`/var/lib/mongodb` -- 日志:`/var/log/mongodb/mongod.log` -- 安全:`security.authorization: enabled`(已开启鉴权) -- 关键配置片段(`/etc/mongod.conf`): - - `net.port: 27017` - - `net.bindIp: 0.0.0.0` - - `storage.dbPath: /var/lib/mongodb` - -### 5.2 鉴权探测结果(快照) - -- 可用账号:`shumengya`(auth DB=`admin`),对应候选#2 -- `admin/root` + 两个候选密码均失败(探测时) - -### 5.3 数据库列表(listDatabases) - -当前实例仅存在系统库(未发现业务库): - -```json -{ - "databases": [ - { "name": "admin", "empty": false }, - { "name": "config", "empty": false }, - { "name": "local", "empty": false } - ] -} -``` - -### 5.4 运行状态(serverStatus 摘要快照) - -```text -uptime: 298891s(约 3.46 天) -connections: current=4, active=1, totalCreated=71 -opcounters: query=997, update=6, command=2132 -mem: resident=198MB, virtual=559MB -replica set: not running with --replSet(单机 standalone) -``` - -## 6. Redis - -### 6.1 配置与监听 - -- 监听:`0.0.0.0:6379`(对外开放) -- 配置文件:`/etc/redis/redis.conf` -- 数据目录:`/var/lib/redis` -- 关键配置(`/etc/redis/redis.conf` 摘要): - - `bind 0.0.0.0` - - `protected-mode yes` - - `requirepass <已配置>`(对应候选#1) - - `appendonly no`(AOF 关闭) - -### 6.2 运行状态(INFO 摘要快照) - -```text -uptime_in_seconds: 297866(约 3.45 天) -connected_clients: 1 -used_memory_human: 1.35M -used_memory_rss_human: 27.02M -role: master -connected_slaves: 0 -keyspace: 空(未看到 db0/db1... 统计) -``` - -## 7. 风险点与建议(简要) - -1. **四个数据库均对外监听**(`0.0.0.0` 或 `*`):请确认防火墙/安全组只放行必要来源 IP;如无外网访问需求,优先改为仅监听 `127.0.0.1`。 -2. MongoDB 已开启鉴权是好的,但仍建议配合网络层限制(只放行应用服务器)。 -3. Redis 虽有 `protected-mode yes + requirepass`,但依旧不建议直接暴露公网;建议加 ACL、内网隔离或仅本机监听。 - -## 8. 复查/再采集 - -- 重新采集全量:`bash /root/db_runtime_status.sh` -- 仅采集 MongoDB:`bash /root/db_runtime_status.sh --mongo-only` - diff --git a/mengyanote-backend/data/mengyanote/树萌芽の收藏夹/濒死体验.md b/mengyanote-backend/data/mengyanote/树萌芽の喃喃自语/濒死体验.md similarity index 100% rename from mengyanote-backend/data/mengyanote/树萌芽の收藏夹/濒死体验.md rename to mengyanote-backend/data/mengyanote/树萌芽の喃喃自语/濒死体验.md diff --git a/mengyanote-backend/data/mengyanote/树萌芽の收藏夹/疯言疯语.md b/mengyanote-backend/data/mengyanote/树萌芽の喃喃自语/疯言疯语.md similarity index 100% rename from mengyanote-backend/data/mengyanote/树萌芽の收藏夹/疯言疯语.md rename to mengyanote-backend/data/mengyanote/树萌芽の喃喃自语/疯言疯语.md diff --git a/mengyanote-backend/data/mengyanote/树萌芽の收藏夹/美团面试.md b/mengyanote-backend/data/mengyanote/树萌芽の喃喃自语/美团面试.md similarity index 100% rename from mengyanote-backend/data/mengyanote/树萌芽の收藏夹/美团面试.md rename to mengyanote-backend/data/mengyanote/树萌芽の喃喃自语/美团面试.md diff --git a/mengyanote-backend/data/mengyanote/树萌芽の小本本/树萌芽の域名.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/树萌芽の域名.md index 8088e9a..df8d600 100644 --- a/mengyanote-backend/data/mengyanote/树萌芽の小本本/树萌芽の域名.md +++ b/mengyanote-backend/data/mengyanote/树萌芽の小本本/树萌芽の域名.md @@ -1,14 +1,25 @@ -适合技术/互联网领域 + smydev(dev = development,贴合开发、编程场景) smynet(net = network,适配网络、服务器相关方向) ✅smyhub(hub 意为枢纽,适合资源聚合、项目协作平台) - -适合创意/个人项目 smycode(code 指向代码编写、编程相关个人站点) smycloud(cloud 适配云服务、云部署相关内容) smylab(lab 适合技术实验、开源项目分享平台) +**smyrepo**(repo = repository) +适配代码仓库、Git托管、开源项目集市 +**smyops**(ops = operations) +DevOps、运维自动化、服务器监控方向 +**smykit**(kit 意为工具箱) +开发者工具集、插件市场、效率工具平台 +**smyflow**(flow 意为流程) +工作流自动化、管道编排、低代码平台 +**smybase**(base 意为基础) +基础架构、数据库、中间件、底层服务 +**smynode**(node 意为节点) +分布式系统、微服务、边缘节点管理 +**smyedge**(edge 意为边缘) +边缘计算、IoT、5G 相关场景 -以下域名都可以越短越好 shumengya TreeSprout treesprout diff --git a/mengyanote-backend/data/mengyanote/AI/AI账号/DeepSeek账号.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/DeepSeek账号.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/AI账号/DeepSeek账号.md rename to mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/DeepSeek账号.md diff --git a/mengyanote-backend/data/mengyanote/AI/AI账号/GLM账号.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/GLM账号.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/AI账号/GLM账号.md rename to mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/GLM账号.md diff --git a/mengyanote-backend/data/mengyanote/AI/AI账号/Qwen账号.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/Qwen账号.md similarity index 89% rename from mengyanote-backend/data/mengyanote/AI/AI账号/Qwen账号.md rename to mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/Qwen账号.md index 498b5e1..25a1ca4 100644 --- a/mengyanote-backend/data/mengyanote/AI/AI账号/Qwen账号.md +++ b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/Qwen账号.md @@ -8,4 +8,5 @@ shumengya520@outlook.com smy@0123456789 shumengya888@outlook.com -smy@0123456789 \ No newline at end of file +smy@0123456789 + diff --git a/mengyanote-backend/data/mengyanote/AI/AI账号/豆包账号.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/豆包账号.md similarity index 100% rename from mengyanote-backend/data/mengyanote/AI/AI账号/豆包账号.md rename to mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/AI账号/豆包账号.md diff --git a/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/QQ邮箱.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/QQ邮箱.md new file mode 100644 index 0000000..34f879c --- /dev/null +++ b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/QQ邮箱.md @@ -0,0 +1,14 @@ +3205788256@qq.com +tyh@19900420 + +2143323382@qq.com +tyh@19900420 + +shumengya888@foxmail.com +tyh@19900420 + +2804775686@qq.com +tyh@19900420 + +1666731831@qq.com +tyh@19900420 diff --git a/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/微软邮箱.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/微软邮箱.md new file mode 100644 index 0000000..a233fbd --- /dev/null +++ b/mengyanote-backend/data/mengyanote/树萌芽の小本本/账号合集/邮箱账号/微软邮箱.md @@ -0,0 +1,23 @@ +shumengya520@outlook.com +shumengya520 + +shumengya666@outlook.com + +shumengya888@outlook.com +shumengya520 + +shumengya233@outlook.com +shumengya520 + +smylab@outlook.com +shumengya520 + +smycode@outlook.com +shumengya520 + +wuyunqin520@outlook.com +shumengya520 + +--- +shumengya666@hotmail.com +shumengya520 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/树萌芽の小本本/重要信息记录.md b/mengyanote-backend/data/mengyanote/树萌芽の小本本/重要信息记录.md index 6e5fd5f..7712764 100644 --- a/mengyanote-backend/data/mengyanote/树萌芽の小本本/重要信息记录.md +++ b/mengyanote-backend/data/mengyanote/树萌芽の小本本/重要信息记录.md @@ -1,5 +1,15 @@ 阿里云自建香港节点 -[47.76.191.104 – 入站列表](https://47.76.191.104:16948/wKbME7E0S8qNzQGh1o/panel/inbounds) +[https://47.76.191.104:16948/wKbME7E0S8qNzQGh1o/panel/inbounds](https://47.76.191.104:16948/wKbME7E0S8qNzQGh1o/panel/inbounds) +账号shumengya +密码shumengya5201314 + +阿里云自建美国节点200G +账号dtXZI6yOuI +密码bkqRtpqlqf +端口55860 +路径mfLAMe1Y92b1mQDAws +[https://47.90.229.147:55860/mfLAMe1Y92b1mQDAws](https://47.90.229.147:55860/mfLAMe1Y92b1mQDAws) + --- #### **树萌芽通用密码库:** diff --git a/mengyanote-backend/data/mengyanote/算法与数据结构/2025年蓝桥杯PythonB组真题解析/1.攻击次数.md b/mengyanote-backend/data/mengyanote/算法与数据结构/2025年蓝桥杯PythonB组真题解析/1.攻击次数.md new file mode 100644 index 0000000..dd1d22d --- /dev/null +++ b/mengyanote-backend/data/mengyanote/算法与数据结构/2025年蓝桥杯PythonB组真题解析/1.攻击次数.md @@ -0,0 +1,26 @@ +设敌人的初始血量为 H = 2025 。 +每个回合的攻击量如下: +- 第1英雄:每回合5点 +- 第2英雄:奇数回合15点,偶数回合2点 +- 第3英雄:余数1时2点,余数2时10点,余数0时7点 + +计算每3个回合的总攻击量: +- 第1回合: 5 + 15 + 2 = 22 点 +- 第2回合: 5 + 2 + 10 = 17 点 +- 第3回合: 5 + 15 + 7 = 27 点 +- 总和: 22 + 17 + 27 = 66 点 + +完整3个回合的次数: + leftlfloor frac{2025}{66} rightrfloor = 30 +剩余血量: + 2025 - 30 times 66 = 45 + +剩余45点血量需3个回合: +- 第1回合: 45 - 22 = 23 +- 第2回合: 23 - 17 = 6 +- 第3回合: 6 - 27 = -21 (游戏结束) + +总回合数: + 30 times 3 + 3 = 93 + +答案: boxed{93} \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺.md b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺.md new file mode 100644 index 0000000..fb3a38b --- /dev/null +++ b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺.md @@ -0,0 +1,69 @@ +**19天零基础冲蓝桥杯Python省二/三,绝对可行!**(不求省一国奖,目标稳拿前60%奖项) + +蓝桥杯Python组省赛是**4小时、10题**(通常2道填空+8道编程题,总150分左右),**省三/二奖**只要前60%(前10%省一、20%省二、30%省三),很多零基础选手1-2个月就拿奖了。19天每天认真8-10小时,专注**高ROI内容**(前6-7题),完全够拿省三,运气好冲省二。关键是**不贪多**,只刷高频+真题,不学线段树/高级图论那些国赛内容。 + +### 核心备考原则(必须死记) +- **Python优势**:语法简单、int支持大数、无需担心溢出。 +- **Python坑**:循环慢,数据量大时要优化(用deque代替list pop(0),避免深拷贝)。 +- **高频考点**(近5年真题80%覆盖):枚举/模拟/数学、DFS/BFS、简单DP(背包/区间/序列)、贪心、字符串处理、日期计算。 +- **每天节奏**:上午学新知识+模板,下午刷题,晚上复盘错题+背模板。 +- **环境**:用官网平台练习(模拟真实环境),本地PyCharm/Py3也行。 + +### 19天超高效计划(每天6-10小时) +**第1-2天:Python竞赛语法速成(打底,零基础必过)** +目标:熟练输入输出、容器操作。 +- 学:`input()`、`map(int,input().split())`、`sorted()`、`collections.deque/Counter`、`itertools`(排列组合)、`sys.setrecursionlimit(100000)`。 +- 练习:蓝桥官网**基础练习**(数列排序、杨辉三角、回文数、进制转换、高精度加法)。 +- 资源:B站搜“Python蓝桥杯基础练习讲解”(1-2小时视频看完)。 +- 成果:能1小时写完前3道简单题。 + +**第3-7天:暴力+模拟+搜索入门(省赛前5题主力)** +- 学:全枚举、双重/三重循环、DFS/BFS模板(迷宫/连通块/路径)、贪心排序。 +- 每天刷10-15道:官网题库“枚举”“搜索”标签 + 历年真题前几题。 +- 重点模板(背熟): + ```python + # BFS模板(迷宫/最短路) + from collections import deque + q = deque([(sx, sy, 0)]) + vis = [[0]*n for _ in range(m)] + # DFS模板(搜索) + def dfs(x, y, step): + if ...: return + for dx,dy in [(-1,0),(1,0),(0,-1),(0,1)]: ... + ``` +- 资源:B站“蓝桥杯Python DFS/BFS真题讲解” + CSDN“python蓝桥杯备赛常用算法模板”。 + +**第8-12天:DP + 贪心进阶(决定省二的关键)** +- 学:01背包、完全背包、区间DP、LIS、最长公共子序列、数字DP入门(简单版)。 +- 每天练5-8道DP题 + 混合模拟。 +- 重点背DP模板(状态转移方程写熟)。 +- 资源:B站“蓝桥杯DP速成”或“蓝桥杯Python高频考点与解题策略”视频。 + +**第13-17天:真题实战模拟(最重要!每天一套)** +- 每天**完整做1套近5年省赛真题**(限时4小时,用官网https://www.lanqiao.cn/paper)。 + - 优先2020-2025年Python省赛(A/B/C组都行,难度相近)。 + - 做完立刻对答案:B站“【蓝桥官方】Python组省赛真题讲解”系列视频 + GitHub代码。 +- 目标:前6题全对,后2-3题写出暴力/部分分。 +- 资源: + - 真题练习:https://www.lanqiao.cn/paper(免费做卷子) + - 题库强化:https://www.lanqiao.cn/problems/(5900+题,搜“蓝桥杯”标签) + - 代码参考:GitHub https://github.com/PlutoaCharon/LanQiaoCode_Python (历届省赛Python代码+博客讲解) + +**第18-19天:查漏补缺 + 模板默写** +- 复习所有错题 + 背10个高频模板。 +- 再做1-2套混卷(官网模拟赛)。 +- 放松心态:考试前一天只看模板,不刷新题。 + +### 必备免费资源(全部够用,不用买课) +1. **官网平台**(首选):https://www.lanqiao.cn/paper(真题) + https://www.lanqiao.cn/problems/(题库) +2. **B站官方讲解**:搜索“【蓝桥杯】Python组省赛真题讲解-官方精讲”或“蓝桥杯Python省赛真题详解”(官方+UP主视频超清晰) +3. **代码+模板**:GitHub PlutoaCharon/LanQiaoCode_Python(历届真题Python实现) +4. **速成视频**:B站搜“蓝桥杯Python 两个月速成”或“Python蓝桥杯高频算法模板”(很多1-2小时速通课) +5. **历年真题PDF**:官网课程https://www.lanqiao.cn/courses/2786(免费下载资源) + +### 避坑 & 拿奖技巧 +- **时间管理**:前30分钟先做填空+简单编程题(拿50-80分),后2小时攻DP/搜索。 +- **部分分**:编程题写暴力也能拿30-50%分,别空着! +- **调试**:用print()快速验证,小数据手动测。 +- **心态**:19天别想完美,每天进步一点就行。很多人14天冲刺也拿了省三。 +- **考试日**:带好身份证,早到,环境和官网一样。 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺1.md b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺1.md new file mode 100644 index 0000000..e6cfe72 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺1.md @@ -0,0 +1,208 @@ + +--- + +## ✅ 必掌握(性价比高,省二/省三主力得分区) + +### 哈希 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 1 | 两数之和 | ⭐必会 | +| 49 | 字母异位词分组 | 掌握 | +| 128 | 最长连续序列 | 掌握(思路简单,用set) | + +### 双指针 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 283 | 移动零 | ⭐必会 | +| 11 | 盛最多水的容器 | 掌握 | +| 15 | 三数之和 | 掌握(经典题) | +| 42 | 接雨水 | ❌跳过(省二不需要) | + +### 滑动窗口 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 3 | 无重复字符的最长子串 | 掌握 | +| 438 | 找到字符串中所有字母异位词 | 掌握 | + +### 子串 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 560 | 和为 K 的子数组 | 掌握(前缀和) | +| 239 | 滑动窗口最大值 | ❌跳过 | +| 76 | 最小覆盖子串 | ❌跳过(太复杂) | + +### 普通数组 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 53 | 最大子数组和 | ⭐必会 | +| 56 | 合并区间 | 掌握 | +| 189 | 轮转数组 | 掌握 | +| 238 | 除自身以外数组的乘积 | 掌握 | +| 41 | 缺失的第一个正数 | ❌跳过 | + +### 矩阵 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 73 | 矩阵置零 | 掌握 | +| 54 | 螺旋矩阵 | 掌握 | +| 48 | 旋转图像 | 掌握 | +| 240 | 搜索二维矩阵 II | 掌握(二分/双指针) | + +### 链表 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 206 | 反转链表 | ⭐必会 | +| 141 | 环形链表 | 掌握 | +| 21 | 合并两个有序链表 | ⭐必会 | +| 160 | 相交链表 | 掌握 | +| 234 | 回文链表 | 掌握 | +| 142 | 环形链表 II | 掌握(进阶可学) | +| 19 | 删除倒数第N个节点 | 掌握 | +| 2 | 两数相加 | 掌握 | +| 24 | 两两交换 | 掌握 | +| 25 | K个一组翻转 | ❌跳过 | +| 138 | 随机链表复制 | ❌跳过 | +| 148 | 排序链表 | ❌跳过 | +| 23 | 合并K个升序链表 | ❌跳过 | +| 146 | LRU缓存 | ❌跳过 | + +### 二叉树 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 94 | 中序遍历 | ⭐必会 | +| 104 | 最大深度 | ⭐必会 | +| 226 | 翻转二叉树 | ⭐必会 | +| 101 | 对称二叉树 | 掌握 | +| 102 | 层序遍历 | 掌握(BFS模板) | +| 543 | 二叉树的直径 | 掌握 | +| 98 | 验证二叉搜索树 | 掌握 | +| 236 | 最近公共祖先 | 掌握(常见题) | +| 124 | 最大路径和 | ❌跳过 | + +### 图论 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 200 | 岛屿数量 | ⭐必会(DFS/BFS模板) | +| 994 | 腐烂的橘子 | 掌握(BFS模板) | +| 207 | 课程表 | ❌跳过 | +| 208 | 前缀树 | ❌跳过 | + +### 回溯 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 46 | 全排列 | ⭐必会(回溯模板) | +| 78 | 子集 | 掌握 | +| 17 | 电话号码组合 | 掌握 | +| 39 | 组合总和 | 掌握 | +| 22 | 括号生成 | 掌握 | +| 79 | 单词搜索 | 掌握 | +| 51 | N皇后 | ❌跳过 | + +### 二分查找 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 35 | 搜索插入位置 | ⭐必会 | +| 74 | 搜索二维矩阵 | 掌握 | +| 34 | 首尾位置 | 掌握 | +| 33 | 旋转排序数组 | 掌握 | +| 4 | 中位数 | ❌跳过 | + +### 栈 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 20 | 有效的括号 | ⭐必会 | +| 155 | 最小栈 | 掌握 | +| 394 | 字符串解码 | 掌握 | +| 739 | 每日温度 | 掌握(单调栈) | +| 84 | 最大矩形 | ❌跳过 | + +### 堆 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 215 | 第K大元素 | 掌握(优先队列) | +| 347 | 前K高频 | 掌握 | +| 295 | 中位数 | ❌跳过 | + +### 贪心算法 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 121 | 买卖股票 | ⭐必会 | +| 55 | 跳跃游戏 | 掌握 | +| 45 | 跳跃游戏II | 掌握(可选) | + +### 动态规划(基础部分) +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 70 | 爬楼梯 | ⭐必会 | +| 118 | 杨辉三角 | ⭐必会 | +| 198 | 打家劫舍 | 掌握 | +| 322 | 零钱兑换 | 掌握 | +| 300 | 最长递增子序列 | 掌握 | +| 416 | 分割等和子集 | 掌握(背包) | +| 32 | 最长有效括号 | ❌跳过 | + +### 多维动态规划 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 62 | 不同路径 | 掌握 | +| 64 | 最小路径和 | 掌握 | +| 5 | 最长回文子串 | 掌握 | +| 1143 | 最长公共子序列 | 掌握 | +| 72 | 编辑距离 | ❌跳过 | + +### 技巧 +| 题号 | 题目 | 掌握程度 | +|------|------|----------| +| 136 | 只出现一次的数字 | ⭐必会 | +| 169 | 多数元素 | ⭐必会 | +| 75 | 颜色分类 | 掌握 | +| 31 | 下一个排列 | 掌握 | +| 287 | 寻找重复数 | 掌握(快慢指针) | + +--- + +## ❌ 需要跳过(省二/省三不需要) + +| 题目 | 原因 | +|------|------| +| 42. 接雨水 | 困难题,代码复杂 | +| 76. 最小覆盖子串 | 滑动窗口最难题型 | +| 239. 滑动窗口最大值 | 需要单调队列,复杂 | +| 41. 缺失的第一个正数 | 思维技巧性强 | +| 25. K个一组翻转链表 | 链表最难题之一 | +| 146. LRU缓存 | 实现复杂 | +| 124. 二叉树最大路径和 | 递归难想 | +| 51. N皇后 | 回溯复杂 | +| 4. 寻找中位数 | 二分边界复杂 | +| 84. 柱状图最大矩形 | 单调栈难题 | +| 295. 数据流中位数 | 双堆实现复杂 | +| 72. 编辑距离 | DP难题 | + +--- + +## 🎯 最终建议 + +**如果时间有限,优先把以下20道题刷熟**(这20道覆盖了蓝桥杯省赛80%的基础分): + +1. 两数之和 +2. 移动零 +3. 最大子数组和 +4. 反转链表 +5. 合并两个有序链表 +6. 二叉树中序遍历 +7. 二叉树最大深度 +8. 翻转二叉树 +9. 岛屿数量 +10. 全排列 +11. 搜索插入位置 +12. 有效的括号 +13. 买卖股票最佳时机 +14. 爬楼梯 +15. 杨辉三角 +16. 只出现一次的数字 +17. 多数元素 +18. 三数之和 +19. 合并区间 +20. 轮转数组 + +把这20道题**完全吃透**(能独立写出AC代码),省二基本稳了。加油! \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺2.md b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺2.md new file mode 100644 index 0000000..5d11b98 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯冲刺2.md @@ -0,0 +1,112 @@ +根据你19天冲**蓝桥杯Python省二/省三**的目标(不求省一/国奖),我把你列出的这些LeetCode题目按**重要程度**严格分类,结合蓝桥杯Python省赛近5-6年真题高频考点来划分。 + +蓝桥杯省赛特点:**前6-7题决定奖项**,偏好**暴力/枚举/模拟 + 简单搜索(Dfs/Bfs) + 基础DP + 贪心 + 字符串/数学**。数据规模中等,Python时间宽松,但**不需要**太难的优化或复杂数据结构。 + +### 必须掌握(强烈推荐,花最多时间,覆盖省赛80%+内容) +这些是高频或直接对应的,**务必会写模板+变形**: + +**哈希** +- 1. 两数之和 → **必须**(哈希字典最基础,省赛字符串统计、频率题常用) +- 49. 字母异位词分组 → **必须**(排序+哈希或Counter,字符串分组高频) + +**双指针** +- 283. 移动零 → **必须**(简单数组操作,省赛常考原地修改) +- 11. 盛最多水的容器 → **推荐**(双指针思想,练习左右指针) +- 15. 三数之和 → **必须**(排序+双指针,省赛三数/两数相关常变形) + +**滑动窗口** +- 3. 无重复字符的最长子串 → **必须**(滑动窗口经典,字符串子串高频) +- 438. 找到字符串中所有字母异位词 → **必须**(固定窗口+哈希,字母异位词直接相关) + +**普通数组** +- 53. 最大子数组和 → **必须**(Kadane算法或简单DP,子数组和常考) +- 56. 合并区间 → **推荐**(排序+贪心,区间问题高频) +- 189. 轮转数组 → **必须**(数组旋转/翻转,简单但常考) +- 238. 除了自身以外数组的乘积 → **推荐**(前缀积,练习空间优化) + +**矩阵** +- 73. 矩阵置零 → **必须**(原地修改,矩阵常考) +- 48. 旋转图像 → **必须**(矩阵旋转/翻转,高频) +- 54. 螺旋矩阵 → **必须**(螺旋遍历,矩阵输出常考) + +**链表** +- 206. 反转链表 → **必须**(链表基础,必会) +- 21. 合并两个有序链表 → **必须** +- 141. 环形链表 / 142. 环形链表 II → **推荐**(快慢指针,环检测偶尔考) +- 160. 相交链表 → **推荐**(简单双指针) + +**二叉树** +- 94. 二叉树的中序遍历 / 102. 层序遍历 → **必须**(遍历基础) +- 104. 二叉树的最大深度 / 543. 二叉树的直径 → **必须** +- 226. 翻转二叉树 / 101. 对称二叉树 → **必须** +- 108. 将有序数组转换为二叉搜索树 → **推荐** +- 98. 验证二叉搜索树 → **推荐** + +**图论** +- 200. 岛屿数量 → **必须**(DFS/BFS连通块,省赛迷宫/岛屿高频) +- 994. 腐烂的橘子 → **必须**(多源BFS,扩散类问题常考) + +**回溯** +- 46. 全排列 / 78. 子集 → **必须**(基础回溯,排列组合高频) +- 17. 电话号码的字母组合 → **推荐** +- 39. 组合总和 → **必须**(组合类,省赛常考) + +**二分查找** +- 35. 搜索插入位置 / 74. 搜索二维矩阵 → **必须**(二分基础) +- 34. 在排序数组中查找元素的第一个和最后一个位置 → **推荐** + +**栈** +- 20. 有效的括号 → **必须**(栈经典,括号匹配高频) + +**贪心算法** +- 121. 买卖股票的最佳时机 → **必须**(简单贪心/DP) +- 55. 跳跃游戏 → **推荐** + +**动态规划** +- 70. 爬楼梯 → **必须**(入门DP) +- 198. 打家劫舍 → **必须**(一维DP经典) +- 322. 零钱兑换 → **必须**(背包类) +- 300. 最长递增子序列 → **推荐**(LIS,省赛序列DP高频) +- 139. 单词拆分 → **推荐** + +**多维动态规划** +- 62. 不同路径 / 64. 最小路径和 → **必须**(网格DP,省赛常考) +- 5. 最长回文子串 → **推荐**(字符串DP) +- 1143. 最长公共子序列 → **推荐**(LCS基础) + +**技巧** +- 136. 只出现一次的数字 → **必须**(位运算或哈希) +- 75. 颜色分类 → **推荐**(荷兰国旗/双指针) + +### 可以适当练习(有时间再看,能拿部分分就行) +- 42. 接雨水(困难,DP/栈,双指针也行,但省赛很少直接考这么难的) +- 41. 缺失的第一个正数(困难,常考但可暴力+哈希) +- 239. 滑动窗口最大值(困难,单调队列,省赛极少) +- 76. 最小覆盖子串(困难,太难,跳过) +- 152. 乘积最大子数组(中等,练习但非核心) +- 416. 分割等和子集(中等,01背包,时间够再刷) +- 链表中较难的:25(K组翻转)、23(合并K链表)、148(排序链表)→ 省赛很少考复杂链表操作,简单会就行 +- 二叉树难的:105(构造树)、124(最大路径和)、236(LCA)→ 构造和LCA偶尔,最大路径少 +- 回溯难的:51(N皇后)、131(分割回文串)→ N皇后省赛可能考简单版,回文分割推荐但不强制 +- 堆:215、347 → 优先队列偶尔用,Python heapq简单了解即可,不用刷难的 +- 栈难的:394(字符串解码)、739(每日温度)、84(柱状图最大矩形)→ 解码推荐,后面两个跳过 + +### 基本可以跳过(19天内不建议花时间,省赛几乎不考或难度远超省三需求) +- 560. 和为K的子数组(前缀和+哈希,中等但蓝桥更爱直接DP/枚举) +- 128. 最长连续序列(哈希+并查,省赛连续序列少见) +- 240. 搜索二维矩阵 II(二分+矩阵,了解思路即可) +- 19. 删除链表倒数第N个(快慢指针,简单会就行) +- 24. 两两交换链表节点(简单链表操作) +- 138. 随机链表复制(太偏) +- 146. LRU缓存(设计题,省赛不考) +- 207/208(课程表、Trie)→ Trie省赛可能简单考前缀,课程表(拓扑)少见 +- 贪心难的:45(跳跃游戏II)、763(划分字母区间) +- DP难的:279(完全平方数)、32(最长有效括号)、72(编辑距离)→ 编辑距离偶尔,别的跳 +- 4. 寻找两个正序数组的中位数(困难,远超省赛) +- 295. 数据流的中位数(困难,跳) + +### 19天执行建议(结合上个计划) +- **前7天**:优先刷**必须掌握**里的简单+中等题(哈希、双指针、数组、矩阵、链表基础、树遍历、岛屿、BFS/DFS、简单回溯、简单DP)。 +- **第8-12天**:重点攻**DP(网格、一维、序列) + 贪心 + 滑动窗口 + 二分**。 +- **第13-17天**:真题模拟时,遇到列表里的题直接对应练习。 +- 每天背模板:两数之和、滑动窗口、DFS/BFS、01背包、LIS、岛屿数量、括号匹配等。 diff --git a/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯难度.md b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯难度.md new file mode 100644 index 0000000..6434217 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/算法与数据结构/蓝桥杯难度.md @@ -0,0 +1,40 @@ +蓝桥杯Python算法题的难度并不是完全按照顺序排列的,但整体趋势是由易到难。 + +根据历年赛制和真题分布,试卷通常分为“填空题”和“编程大题”两个部分,难度在整体上是递增的,但在局部(特别是编程大题内部)可能会出现波动。 + +为了让你更清晰地了解试卷结构,我为你整理了详细的难度分布规律: + +1. 整体难度趋势:阶梯式上升 📈 +蓝桥杯的试卷设计通常遵循“基础题 -> 中档题 -> 难题”的分布,大致可以分为三个梯队: + +* 第一梯队(前1-3题):基础送分题 🟢 + * 题型:通常是结果填空题(前两道)和简单的编程大题。 + * 难度:较低。主要考察基础语法、简单的模拟、数学计算(如日期处理、进制转换)或简单的枚举。 + * 策略:这部分题目通常不需要复杂的算法,只要细心就能拿满分,是必须拿下的“保底分”。 + +* 第二梯队(中间3-4题):进阶算法题 🟡 + * 题型:编程大题。 + * 难度:中等。开始涉及经典算法,如深度/广度优先搜索(DFS/BFS)、动态规划(DP)、贪心算法、二分查找等。 + * 策略:这部分是分水岭。题目可能需要你优化算法复杂度(例如从O(n²)优化到O(nlogn)),如果暴力解法可能会超时。 + +* 第三梯队(最后1-2题):压轴难题 🔴 + * 题型:编程大题(压轴)。 + * 难度:较高。通常涉及复杂的数论、图论(最短路径、最小生成树)、复杂的动态规划或状态压缩。 + * 策略:这些题目旨在拉开高分差距。对于普通选手,建议先尝试“骗分”(通过暴力枚举通过部分测试用例),不要在一开始就死磕。 + +2. 为什么说“不完全按顺序”? ⚠️ +虽然大趋势是递增,但编程大题内部的难度往往不是严格线性的: +* 难度跳跃:有时候第4题可能比第5题更难,或者第5题是一个简单的贪心,而第6题突然变成复杂的图论。 +* 知识点差异:如果你擅长数学但不擅长图论,对你来说,一道靠后的数论题可能比一道靠前的图论题更容易。 +* 真题案例:在第十六届蓝桥杯Python B组的试题中,题目从简单的模拟(A题)到复杂的位运算优化(H题),虽然整体递增,但中间题目的思维难度会有波动。 + +3. 试卷结构与应对策略表 📋 +题目位置 题型 典型考点 建议耗时 拿分策略 +第 1-2 题 结果填空 数学计算、日期模拟、简单枚举 10-20分钟/题 必须全对。可用Excel或Python脚本辅助计算,无需考虑运行时间。 +第 3-5 题 编程大题 排序、二分、简单DP、BFS/DFS 30-40分钟/题 争取满分。注意边界条件,若超时尝试优化数据结构(如用集合代替列表)。 +第 6-8 题 编程大题 复杂DP、图论、数论、位运算 40分钟+/题 能拿多少拿多少。先写暴力解法(DFS/枚举)拿部分分,有时间再优化。 + +4. 给你的备考建议 💡 +* 不要死磕顺序:比赛时如果遇到一道题卡住超过15分钟没有思路,果断跳过,先做后面的题目。有时候后面的题目反而更简单。 +* 重视“骗分”技巧:蓝桥杯是按测试用例给分的(OI赛制)。即使你写不出最优算法,用暴力法(如直接循环、DFS)通常也能通过30%-50%的小数据测试点,这在省赛评奖中非常关键。 +* Python特需注意:Python运行速度较慢,在处理大数据量(如n>10^5)的题目时,要注意避免双重循环,尽量使用Python内置函数或高效的算法(如二分、前缀和)来避免超时。 diff --git a/mengyanote-backend/data/mengyanote/Vercel 项目添加自定义域名完整指南.md b/mengyanote-backend/data/mengyanote/解决方案/Vercel/Vercel 项目添加自定义域名完整指南.md similarity index 100% rename from mengyanote-backend/data/mengyanote/Vercel 项目添加自定义域名完整指南.md rename to mengyanote-backend/data/mengyanote/解决方案/Vercel/Vercel 项目添加自定义域名完整指南.md diff --git a/mengyanote-backend/data/mengyanote/项目策划/万象口袋.md b/mengyanote-backend/data/mengyanote/项目策划/万象口袋.md new file mode 100644 index 0000000..b8329e8 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/项目策划/万象口袋.md @@ -0,0 +1,56 @@ +✅请通读一下目前的项目代码架构并在项目根目录更新readme文件 + +✅我教给你一个十分艰巨的任务,把目前的python后端转化成golang的gin框架重构一遍,代码架构采用模块化组件化开发,抛弃原来的MongoDB数据库储存改成使用MySQL数据库储存,以后也使用数据库储存,本地开发使用 10.1.1.100:3306 数据库infogenie-test 用户infogenie-test 密码infogenie-test ,实际生产环境使用192.168.1.100:3306的内网MySQL数据库 数据库infogenie 用户infogenie 密码infogenie ,每次修改先在测试数据库中开发,测试数据库没有问题再迁移到生产数据库,你先测试是否能连接上测试数据库 + +✅原来的项目十分臃肿你给我精简掉很多不必要的东西 + +✅把项目当前的登录系统也重构一下,接入我的萌芽账户统一认证中心,接入文档你可以查看根目录的SPROUT_GATE_API_DOCS.md + +✅因为前端大量使用很多的网页嵌入 你优化一下前端的网页嵌入模式,然后以后所有的网页嵌入都使用这个 + +前端生产环境使用域名infogenie.shumengya.top 后端使用infogenie.api.shumengya.top cors跨域使用宽松 + +✅把前端代码架构采用模块化组件化重构编写一下,避免代码量过大后期无法维护 + +✅PWA 启动动画 +加载时的全屏启动页(替换原来的“加载中 + 转圈”): +背景:与主站一致的渐变带轻微脉冲和光晕动画 +Logo:居中显示 logo192.png,带圆角与阴影,轻微上下浮动 +扩散环:Logo 周围三层圆环依次放大、淡出,循环播放 +标题:软件名称大标题 +「加载中」副标题 +加载指示:三个绿色圆点依次缩放,表示加载中 +效果:打开应用或刷新时先看到与主站风格统一的启动屏,数据加载完成后直接进入主页。 + +✅添加前端管理员后台系统,默认管理员token为shumengya520 默认前端进入后台模式为:点击网站logo图标五次弹出一个输入框,输入正确的token后进入后台 + +✅给我在项目根目录写一键启动本地开发前后端bat脚本和bash脚本,脚本名叫"dev",和构建前端脚本,脚本名叫:"build",注意保持代码精简不啰嗦,注意在Windows上显示前后端要两个窗口显示 + +在后端文件夹中建立Docker构建相关文件 把后端服务构建打包成Docker容器,对外端口使用:[] 然后我会把这个后端API服务映射成:[]给前端调用,你设置在生产环境下让前端使用这个后端API地址:[],设置容器持久化储存映射路径为:项目目录下的data文件夹 + +✅前端风格需要大改一下:给我按照这个网页上的API, https://docs.60s-api.viki.moe/ 给我重新划分一个60sAPI专属板块,把这网页上的周期资讯,实用功能,热门榜单,消遣娱乐这四部分都加入一个简洁清新统一美观的前端网页,把以前那个60s前端给删了(当然你可以参考一下) 太臃肿了 在60sAPI这个板块中 前端可以切换不同的60s API接口,后端也可以配置添加删除哪些后端60sAPI接口 ,比如说我的: 60s.api.shumengya.top + +✅把前端的小游戏模块也给我重构一下,里面有很多臃肿的部分,特别是那个每个游戏里面的排行榜功能,没啥必要给我删掉 + +✅默认你记住代码注释给我默认使用中文注释,不要使用英文注释,前后端都是这样 + +✅整个前端网站的字体可以改成 楷体 ,如果换成楷体后字体变小可以把字体变大一点 + +整体检查一下目前项目有哪些问题和bug + +整体检查一下目前后端API有哪些漏洞和bug + +整体检查一下目前前端页面有哪些漏洞和bug和过于臃肿没有用到的地方 + +✅把个人中心页面的手机号,注册时间删掉,这些暴露隐私 + +✅这个首页也是动画特效太多了过于臃肿 精简一下 + +✅把60sAPI 休闲游戏 工具箱 AI应用四个板块的功能小卡片的风格样式给我统一 + +这个60sAPI板块点击十分卡顿,检查是否是前端的原因 + +✅把目前AI扣费给我删掉 调用AI功能不需要扣费,还有把这个ai-config.json删掉,把大模型API key和调用地址放在后端数据库中调用 + + + + diff --git a/mengyanote-backend/data/mengyanote/项目策划/萌芽Ping-网页监控.md b/mengyanote-backend/data/mengyanote/项目策划/萌芽Ping-网页监控.md new file mode 100644 index 0000000..4cc5eb6 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/项目策划/萌芽Ping-网页监控.md @@ -0,0 +1 @@ +优化后端API响应 我这前端请求半天才能得到后端API的相应,这才40多个网站 \ No newline at end of file diff --git a/mengyanote-backend/data/mengyanote/项目策划/萌芽小店.md b/mengyanote-backend/data/mengyanote/项目策划/萌芽小店.md new file mode 100644 index 0000000..6958d2c --- /dev/null +++ b/mengyanote-backend/data/mengyanote/项目策划/萌芽小店.md @@ -0,0 +1,61 @@ +萌芽小店-灵汐小店-灵汐店铺-萌芽店铺-八号店铺 + +✅请通读一下目前的项目代码架构并在项目根目录更新readme文件 + +✅整个前端网页的圆角程度再改小一点,目前特别是一些UI圆角程度过于大了不好看 + +✅我发现 库存 浏览量 这两个参数在商品卡片有标签时是在卡片中下方,无卡片时在卡片最下方,这样排版看着不规范,你帮我设置固定他们的位置,让每个商品卡片里的小组件位置都固定在相同高度的位置,避免卡着不整齐 + +✅整个前端网站的字体可以改成 楷体 ,如果换成楷体后字体变小可以把字体变大一点 + +✅把这个部分的UI改成一横排 + +✅如果用户登录了账号后,在前端网页右下角添加一个悬浮窗,打开可以向管理员聊天发送消息,管理员在后台添加一个聊天窗口,可以查看前台用户发送的消息,消息是持久化储存的,如果管理员不在线也可以在以后上线后查看,管理员可以在后台一键清除与该名用户的对话,发送消息有一秒间隔,防止有人过度发送垃圾消息 + +✅添加站点维护功能,管理员可以在站点管理员后台设置一键开关整个站点和设置维护原因,如果关闭,则用户进入后显示站点维护页面,并显示站点维护原因 + +✅前端显示商品页面分页功能,电脑端每页最多有四行五列,手机端每页最多有五行两列,多的添加翻页,首页上一页下一页最后一页功能 + +✅手机端目前感觉商品卡片有被拉长的感觉,可以让手机端商品卡片向左右两端再压缩挤占一下空间 + +✅管理员可以在后台设置一些商品必须登录后才能购买,还可以设置登录后购买的数量,就是每个账户最多可以购买多少个该商品 + +✅前端网页小提示用户登录后购买,享受更多的购买权益 + +✅我现在需要加个你一个非常非常艰巨的任务,数据储存从本地json储存换成MySQL数据库,以后也使用数据库储存,本地开发使用 10.1.1.100:3306 数据库mengyastore-test 用户mengyastore-test 密码mengyastore-test ,实际生产环境使用192.168.1.100:3306的内网MySQL数据库 数据库mengyastore 用户mengyastore 密码mengyastore ,每次修改先在测试数据库中开发,测试数据库没有问题再迁移到生产数据库 + +✅管理员后台可以查看总的下单记录,要包括未登录用户和已登录用户 + +✅目前萌芽小店是仅支持自动发货,用户下单购买自动发货显示内容,你给我添加一个管理员可以在后台设置手动发货或者自动发货,在用户下单前可以有以下选项 备注,联系方式(联系方式下有有手机号和邮箱两个输入框),备注和联系方式 管理员可以在后台看到 + +✅如果用户登录后可以显示一个购物车(收藏夹),可以把商品加入购物车(收藏夹),在前端的购物车页面快速查看自己的想要的东西,购物车(收藏夹)是实时同步的,如果该商品已下架或者已卖完显示灰色 + +✅筛选按钮再添加几个选项: 新上架,最多购买,最多浏览,价格最高,价格最低 + +✅发件邮箱和是否邮箱发件可以在后台设置 不一定是QQ邮箱 自定义的域名邮箱也可以 发件内容要正式,文档风格一点,如果用户没有登录,下单就使用用户输入的联系方式的邮箱 没有输入就不发送 + +✅你更新一下登录接口,在项目根目录有API文档 + +你给我目前的后端添加一个可选项:redis数据库缓存应对低延迟和高并发 我的redis数据库是10.1.1.100:6379 你在里面建立测试数据库和生产数据库,注意不要和我原有的数据库冲突 + +你给我讲目前项目和企业级或者标准项目有哪些差别 给我列出来我看看哪些旧的需要改 + +默认前端生产环境使用域名store.shumengya.top 后端使用store.api.shumengya.top cors跨域使用宽松 + +代码注释给我默认使用中文注释,不要使用英文注释 + +把目前的golang后端改成Java后端 + + + + + + + + + + + + + + diff --git a/mengyanote-backend/data/mengyanote/邮箱发信.md b/mengyanote-backend/data/mengyanote/项目策划/萌芽桌面启动器.md similarity index 100% rename from mengyanote-backend/data/mengyanote/邮箱发信.md rename to mengyanote-backend/data/mengyanote/项目策划/萌芽桌面启动器.md diff --git a/mengyanote-backend/data/mengyanote/项目策划/萌芽账户统一认证中心.md b/mengyanote-backend/data/mengyanote/项目策划/萌芽账户统一认证中心.md new file mode 100644 index 0000000..922e576 --- /dev/null +++ b/mengyanote-backend/data/mengyanote/项目策划/萌芽账户统一认证中心.md @@ -0,0 +1,94 @@ +请通读一下目前的项目代码架构并在项目根目录更新readme文件 + +这个登录注册界面太丑了可以换一下 + +数据储存从本地json储存换成MySQL数据库,以后也使用数据库储存,本地开发使用 10.1.1.100:3306 数据库sproutgate-test 用户sproutgate-test 密码sproutgate-test ,实际生产环境使用192.168.1.100:3306的内网MySQL数据库 数据库sproutgate 用户sproutgate 密码sproutgate ,每次修改先在测试数据库中开发,测试数据库没有问题再迁移到生产数据库 + +管理员可设置禁止注册的账号名,默认账号名只能有小写字母+数字的随机组合,可禁止注册时被禁止的用户名列表,用逗号隔开: sb,mail,nmsl,cnmb,smy,shumengya + +管理员可添加使用邀请码注册的奖励,默认奖励是使用邀请码注册获得10个萌芽币 + +管理员设置封禁该账户后所有与该用户登录的站点不能再使用该账户登录 + +前端生产环境使用域名auth.shumengya.top 后端使用auth.api.shumengya.top cors跨域使用宽松 + +添加个人详细页点赞数功能,每个已登录的用户每天可以给别人点一个赞 + +代码注释给我默认使用中文注释,不要使用英文注释 + +![[Pasted image 20260324211458.png]] + +如图,当第三方应用调用萌芽账户认证登录时,不要直接在用户详细页面直接显示一个授权表单,把这个授权表单单独变成一个网页页面,可以参考一下第三方应用调用Google登录和QQ登录的授权页面那样,还要显示调用的应用获取了萌芽账户认证中心中哪些的信息告知用户,注意页面在手机端和电脑端的排版 +![[Pasted image 20260325202027.png]] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mengyanote-backend/data/mengyanote/📒萌芽笔记.md b/mengyanote-backend/data/mengyanote/📒萌芽笔记.md index da9aa0e..abbec13 100644 --- a/mengyanote-backend/data/mengyanote/📒萌芽笔记.md +++ b/mengyanote-backend/data/mengyanote/📒萌芽笔记.md @@ -1,6 +1,5 @@ --- - ## 🧭**引言** 你好,陌生人!这是我的学习笔记,用来展示我的一些学习路径 也希望能帮助到CS专业中努力学习的你 @@ -8,23 +7,28 @@ --- ## 🔗**联系方式** -QQ:3205788256 联系邮箱: mail@smyhub.com -gmail@smyhub.com + 个人主页: [shumengya.top](https://shumengya.top) [smyhub.com](https://smyhub.com) + Github主页: [shumnegya](https://github.com/shumengya) -作品集:[work.shumengya.top](https://work.shumengya.top) + +作品集: +[work.shumengya.top](https://work.shumengya.top) --- ## ❓**关于** 本网站使用**React**框架+**Python FastAPI**搭建 所有笔记均为**Markdown**格式,可直接复制和下载 -转载请标明网站地址:[note.shumengya.top](https://note.shumengya.top) -谢谢您的配合与理解! +转载请标明网站地址: +[note.shumengya.top](https://note.shumengya.top) +[note.smyhub.com](https://note.smyhub.com) + +谢谢您的配合与理解(=^・ω・^=) 喵~ ---