From 5ea9ed98b35863ccea780009f510cf4f3789bddd Mon Sep 17 00:00:00 2001 From: renjianbo <263303411@qq.com> Date: Sun, 29 Mar 2026 22:22:49 +0800 Subject: [PATCH 1/4] aa --- .obsidian/workspace.json | 81 ++++++++----------- .../Projects/aitsc/ai提示词常用命令.md | 13 +++ .../Android整机性能分析与问题定位实战指南.md | 2 +- docs/学习笔记/php/云服务器龙虾.md | 49 +++++++++++ docs/学习笔记/龙虾能力.md | 66 +++++++++++++++ docs/学习笔记/龙虾配置.md | 4 + 6 files changed, 168 insertions(+), 47 deletions(-) create mode 100644 docs/学习笔记/php/云服务器龙虾.md create mode 100644 docs/学习笔记/龙虾能力.md create mode 100644 docs/学习笔记/龙虾配置.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index b062dd6..ecf7f69 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -11,13 +11,14 @@ "id": "9a5781991bf94030", "type": "leaf", "state": { - "type": "bases", + "type": "markdown", "state": { - "file": "未命名 1.base", - "viewName": "表格" + "file": "docs/dify/用户注册及添加成员.md", + "mode": "source", + "source": false }, - "icon": "lucide-table", - "title": "未命名 1" + "icon": "lucide-file", + "title": "用户注册及添加成员" } }, { @@ -26,42 +27,30 @@ "state": { "type": "markdown", "state": { - "file": "docs/Obsidian笔记体系/Daily/2026-01-13.md", + "file": "docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "2026-01-13" + "title": "ai提示词常用命令" } }, { - "id": "59894255df52f532", + "id": "efa2dc303e8e694d", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md", + "file": "docs/cursor/cursor.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "知你--调测" - } - }, - { - "id": "c40cc65d2419fc22", - "type": "leaf", - "state": { - "type": "release-notes", - "state": { - "currentVersion": "1.12.4" - }, - "icon": "lucide-book-up", - "title": "版本说明 1.12.4" + "title": "cursor" } } ], - "currentTab": 3 + "currentTab": 2 } ], "direction": "vertical" @@ -93,7 +82,7 @@ "state": { "type": "search", "state": { - "query": "path:\"docs/Obsidian笔记体系/Config/\" ", + "query": "计算云", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -214,46 +203,46 @@ }, "left-ribbon": { "hiddenItems": { - "bases:新建数据库": false, "switcher:打开快速切换": false, "graph:查看关系图谱": false, "canvas:新建白板": false, "daily-notes:打开/创建今天的日记": false, "templates:插入模板": false, - "command-palette:打开命令面板": false + "command-palette:打开命令面板": false, + "bases:新建数据库": false } }, - "active": "5b497a77c6d68c73", + "active": "efa2dc303e8e694d", "lastOpenFiles": [ - "docs/学习笔记/两份提示词对比.md", - "docs/学习笔记/Android游戏整机性能卡顿与丢帧根因分析与优化指南.md", - "docs/学习笔记/Android整机性能分析与问题定位实战指南.md", - "docs/学习笔记/Android性能分析标准化操作手册.md", - "docs/学习笔记/Android WindowManagerService核心原理深度解析(专家第二次提示词).md", - "docs/学习笔记/Android WindowManagerService (WMS) 架构深度解析(第一次提示词).md", + "docs/cursor/cursor使用技巧.md", + "docs/学习笔记/php/云服务器龙虾.md", + "docs/学习笔记/龙虾能力.md", "docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md", - "docs/Obsidian笔记体系/Projects/aitsc", - "docs/# Android WindowManagerService (WMS) 架构深度解析(专家第一次提示词).md", - "docs/学习笔记/看应用卡顿问题.md", - "未命名 1.base", - "docs/学习笔记/perfeto看trace技巧.md", - "docs/学习笔记/perfetto分析trace提效的办法或者方案.md", - "docs/学习笔记/perfetto看trace关键词.md", - "docs/Obsidian笔记体系/Projects/提示词大师/提示词大师.md", + "docs/学习笔记/龙虾配置.md", + "docs/学习笔记/腾讯云相关账户.md", + "docs/学习笔记/腾讯云龙虾.md", + "docs/学习笔记/php/php学习目录.md", "docs/cursor/cursor.md", + "docs/学习笔记/Android整机性能分析与问题定位实战指南.md", + "未命名 1.base", + "docs/Obsidian笔记体系/Projects/提示词大师/提示词大师.md", "docs/Obsidian笔记体系/Projects/提示词大师", - "docs/dify/用户注册及添加成员.md", + "docs/学习笔记/Android WindowManagerService (WMS) 架构深度解析(第一次提示词).md", + "docs/学习笔记/Android WindowManagerService核心原理深度解析(专家第二次提示词).md", + "docs/学习笔记/两份提示词对比.md", + "docs/学习笔记/前端学习.md", + "docs/学习笔记/效率提升.md", + "docs/学习笔记/Android性能分析标准化操作手册.md", "docs/Obsidian笔记体系/Daily/2026-01-13.md", + "docs/学习笔记/Android游戏整机性能卡顿与丢帧根因分析与优化指南.md", + "docs/# Android WindowManagerService (WMS) 架构深度解析(专家第一次提示词).md", "docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md", + "docs/Obsidian笔记体系/Projects/aitsc", "docs/Obsidian笔记体系/Daily/2026-01-14.md", "docs/Obsidian笔记体系/Daily/2024-06-02.md", "docs/Obsidian笔记体系/Daily/2026-01-15.md", "docs/Obsidian笔记体系/Daily/2026-01-20.md", "docs/学习笔记/高级性能问题分析.md", - "docs/学习笔记/高级性能问题分析目录.md", - "docs/学习笔记/产品经理/需求管理详解.md", - "docs/学习笔记/产品经理/项目管理详解.md", - "docs/Obsidian/高频命令.md", "docs/学习笔记/产品经理", "Pasted image 20260129111501.png", "Pasted image 20260129111451.png", diff --git a/docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md b/docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md index cba6c99..3d6864e 100644 --- a/docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md +++ b/docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md @@ -1,3 +1,16 @@ + +启动服务器: +cd /home/renjianbo/aitsc +pkill -f "run_dev:app" +rm -f logs/gunicorn.pid +sleep 2 +eval "$(/home/renjianbo/miniconda3/bin/conda shell.bash hook)" +conda activate myenv +gunicorn -c gunicorn.conf.py run_dev:app + + + + 系统维护常用语: 以行业和职业的维度,继续追加生成更多的提示词模板 以行业和职业的维度,继续追加生成更多不同的技术方向研发工程师的提示词模板 diff --git a/docs/学习笔记/Android整机性能分析与问题定位实战指南.md b/docs/学习笔记/Android整机性能分析与问题定位实战指南.md index f6fe27c..4fc166f 100644 --- a/docs/学习笔记/Android整机性能分析与问题定位实战指南.md +++ b/docs/学习笔记/Android整机性能分析与问题定位实战指南.md @@ -6,7 +6,7 @@ | 版本 | 日期 | 作者 | 变更描述 | | :--- | :--- | :--- | :--- | | 1.0 | 2024-05-24 | AI Assistant | 初始版本,根据高级开发工程师规范制定 | - + ## 一、引言 本指南旨在为高级Android开发工程师提供一个系统化、标准化的整机性能分析框架。当面对海量性能日志和Trace数据时,工程师可依据此文档进行高效、精准的问题定位,并产出高质量的根因分析与优化建议。 diff --git a/docs/学习笔记/php/云服务器龙虾.md b/docs/学习笔记/php/云服务器龙虾.md new file mode 100644 index 0000000..eb1ff43 --- /dev/null +++ b/docs/学习笔记/php/云服务器龙虾.md @@ -0,0 +1,49 @@ +已在你的项目里放好 Docker 版 OpenClaw(龙虾) 部署文件,路径如下: + +/home/renjianbo/long/long/openclaw-docker/ + +|文件|作用| +|---|---| +|docker-compose.yml|官方同款:openclaw-gateway + openclaw-cli,默认镜像 ghcr.io/openclaw/openclaw:latest| +|.env|端口、时区、数据目录;已自动生成 OPENCLAW_GATEWAY_TOKEN(请自行保管,勿泄露)| +|start.sh|拉镜像 → 修正挂载目录属主 → 后台启动 Gateway| + +--- + +### 你怎么用 + +在服务器上执行: + +cd /home/renjianbo/long/long/openclaw-docker + +./start.sh + +若拉镜像报错(例如 unexpected EOF、超时),多半是访问 GHCR 不稳定,可以: + +- 给 Docker 配 HTTP 代理 或 registry 镜像加速,再重跑 ./start.sh;或 + +- 在有外网的机器上 docker pull ghcr.io/openclaw/openclaw:latest 后 docker save / docker load 拷到本机。 + +--- + +### 启动成功后 + +- 本机:http://127.0.0.1:18789 + +- 健康检查:curl -sS http://127.0.0.1:18789/healthz + +首次引导(交互,需真实终端): + +cd /home/renjianbo/long/long/openclaw-docker + +docker compose run --rm openclaw-cli onboard --mode local --no-install-daemon + +常用: + +docker compose logs -f openclaw-gateway + +docker compose down    # 停止 + +--- + +说明:刚才在这台机器上执行 ./start.sh 时,镜像下载到末尾出现 网络中断(unexpected EOF),所以容器未必已经起来;你网络稳定后再执行一次 ./start.sh 即可。若你希望改用 国内可拉的替代镜像名,把 OPENCLAW_IMAGE 写进 .env 后同样用 docker compose pull / ./start.sh 即可。 \ No newline at end of file diff --git a/docs/学习笔记/龙虾能力.md b/docs/学习笔记/龙虾能力.md new file mode 100644 index 0000000..22e1d41 --- /dev/null +++ b/docs/学习笔记/龙虾能力.md @@ -0,0 +1,66 @@ +好的!让我为你详细介绍我的能力: + +## 🛠️ 核心功能 + +### 1. **文件操作** +- **读取文件** - 查看文本文件、图片内容 +- **编辑文件** - 精确修改文件内容 +- **创建文件** - 编写新文件,自动创建目录 +- **工作目录**:`C:\Users\Administrator\.openclaw\workspace` + +### 2. **系统命令执行** +- **运行 shell 命令** - PowerShell、CMD 等 +- **后台进程管理** - 启动、监控、停止进程 +- **终端交互** - 支持需要 TTY 的命令 + +### 3. **网络功能** +- **网页搜索** - 使用 Brave Search API +- **网页抓取** - 提取网页内容为 Markdown/文本 +- **图片分析** - 分析图片内容(需要配置图像模型) + +### 4. **任务管理** +- **定时任务 (Cron)** - 设置定期执行的任务 +- **提醒功能** - 在指定时间提醒你 +- **会话管理** - 创建子会话处理复杂任务 + +### 5. **会话与协作** +- **子代理** - 创建专门的代理处理特定任务 +- **会话历史** - 查看其他会话的记录 +- **跨会话通信** - 在不同会话间发送消息 + +## 📁 工作空间结构 + +我的工作空间有几个重要文件: +- **SOUL.md** - 定义我的个性和行为准则 +- **USER.md** - 记录关于你的信息 +- **MEMORY.md** - 长期记忆存储 +- **TOOLS.md** - 本地工具配置 +- **HEARTBEAT.md** - 定期检查任务列表 +- **memory/** 目录 - 每日日志文件 + +## 🔧 技能系统 + +我还有一些专门的技能: +- **健康检查** - 系统安全审计和加固 +- **节点连接** - 诊断 OpenClaw 节点连接问题 +- **Notion 集成** - 管理 Notion 页面和数据库 +- **天气查询** - 获取天气信息 +- **技能创建** - 创建和编辑新技能 +- **OpenAI 图像生成** - 批量生成图片 + +## ⚡ 实际应用场景 + +我可以帮你: +- **整理文件** - 批量重命名、分类整理 +- **数据处理** - 分析日志、提取信息 +- **自动化任务** - 定期备份、监控系统 +- **学习研究** - 搜索资料、整理笔记 +- **项目管理** - 跟踪进度、管理文档 + +## 🔒 安全考虑 + +- **内部操作自由**:文件操作、本地命令等 +- **外部操作谨慎**:发送消息、公开操作需要确认 +- **隐私保护**:不会泄露你的私人信息 + +现在你想试试哪个功能?或者有什么具体的任务想让我帮你处理? \ No newline at end of file diff --git a/docs/学习笔记/龙虾配置.md b/docs/学习笔记/龙虾配置.md new file mode 100644 index 0000000..97c714c --- /dev/null +++ b/docs/学习笔记/龙虾配置.md @@ -0,0 +1,4 @@ +# 创建默认配置结构 openclaw config set agents.defaults.model '{"primary": "deepseek/deepseek-chat", "fallbacks": []}' # 再次查看默认模型 openclaw config get agents.defaults.model.primary + + + From 74663e0a2b0cc18e18a690eeae1890944b8a92b9 Mon Sep 17 00:00:00 2001 From: renjianbo <263303411@qq.com> Date: Sun, 29 Mar 2026 22:36:18 +0800 Subject: [PATCH 2/4] Add .gitignore to exclude Obsidian workspace files --- .gitignore | Bin 0 -> 162 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..df90d036cbde1da5220b7448586c3f4b89624237 GIT binary patch literal 162 zcmezWPnki1!Ji?Cp_n0)Aq9vN8S)r-8Mqkq81m6X^%=^6VnqzuK(z%xb;%5=Kvh{l ZUOpZ@dJH8%J&8b784UU)m|P514FK&=9bW(d literal 0 HcmV?d00001 From 78f4c661984c2431d09cfd975bb3627a951660f5 Mon Sep 17 00:00:00 2001 From: renjianbo <263303411@qq.com> Date: Sun, 29 Mar 2026 22:44:22 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=96=87=E6=A1=A3:=20=E6=B7=BB=E5=8A=A0Git?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=B8=8E=E4=B8=8A=E4=BC=A0=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/龙虾openclaw/git同步与上传规范.md | 298 +++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 docs/龙虾openclaw/git同步与上传规范.md diff --git a/docs/龙虾openclaw/git同步与上传规范.md b/docs/龙虾openclaw/git同步与上传规范.md new file mode 100644 index 0000000..a1eceaa --- /dev/null +++ b/docs/龙虾openclaw/git同步与上传规范.md @@ -0,0 +1,298 @@ +# Git 同步与上传规范 + +## 📋 概述 +本文档规范了 MkDocs 知识库项目的 Git 同步和上传流程,确保团队协作高效、代码版本可控。 + +## 🎯 目标 +- 统一团队 Git 操作流程 +- 减少代码冲突和版本问题 +- 确保代码及时同步和备份 +- 建立规范的提交和推送习惯 + +## 🔄 日常同步流程 + +### 1. 开始工作前(拉取最新代码) +```bash +# 进入项目目录 +cd D:\mkdocs + +# 检查当前状态 +git status + +# 拉取远程最新代码 +git pull origin master + +# 确认同步完成 +git log --oneline -5 +``` + +### 2. 工作过程中(定期同步) +```bash +# 查看是否有远程更新 +git fetch origin + +# 比较本地和远程差异 +git log origin/master..master # 本地有远程没有的提交 +git log master..origin/master # 远程有本地没有的提交 + +# 如果有远程更新,先拉取 +git pull --rebase origin master +``` + +### 3. 提交更改(本地保存) +```bash +# 查看更改的文件 +git status + +# 添加所有更改(或指定文件) +git add . # 添加所有更改 +# 或 +git add <文件名> # 添加指定文件 + +# 提交更改(描述要清晰) +git commit -m "描述:做了什么修改,为什么修改" + +# 提交示例: +# git commit -m "文档:添加用户认证模块API文档" +# git commit -m "修复:修正MkDocs构建配置错误" +# git commit -m "功能:新增Docker部署指南" +``` + +### 4. 推送到服务器(共享代码) +```bash +# 先拉取最新代码(避免冲突) +git pull origin master + +# 如果有冲突,解决冲突后提交 +# git add . +# git commit -m "解决合并冲突" + +# 推送到远程服务器 +git push origin master + +# 验证推送成功 +git log --oneline -3 +``` + +## 📤 上传新文件流程 + +### 1. 添加新文档文件 +```bash +# 创建新文件(如:新功能文档) +# 文件路径:D:\mkdocs\docs\龙虾openclaw\新功能.md + +# 添加到Git跟踪 +git add docs\龙虾openclaw\新功能.md + +# 或添加整个目录 +git add docs\龙虾openclaw\ +``` + +### 2. 添加新目录结构 +```bash +# 创建新目录 +mkdir -p docs\龙虾openclaw\新模块 + +# 添加目录和文件 +git add docs\龙虾openclaw\新模块\ + +# 如果目录中有需要忽略的文件,先更新.gitignore +``` + +### 3. 提交和推送 +```bash +# 提交新文件 +git commit -m "新增:龙虾openclaw新模块文档" + +# 推送到服务器 +git push origin master +``` + +## 🚨 冲突处理流程 + +### 1. 检测冲突 +```bash +# 拉取时发现冲突 +git pull origin master +# 输出:CONFLICT (content): Merge conflict in <文件名> +``` + +### 2. 解决冲突 +```bash +# 查看冲突文件 +git status + +# 手动编辑冲突文件 +# 文件内容会显示: +# <<<<<<< HEAD +# 本地内容 +# ======= +# 远程内容 +# >>>>>>> commit-hash + +# 保留需要的内容,删除标记 +# 保存文件 +``` + +### 3. 完成冲突解决 +```bash +# 标记冲突已解决 +git add <冲突文件> + +# 继续合并 +git commit -m "解决合并冲突:<文件描述>" + +# 完成推送 +git push origin master +``` + +## 📝 提交信息规范 + +### 格式要求 +``` +<类型>: <简短描述> + +<详细描述(可选)> +``` + +### 类型说明 +- **文档**: 文档新增、修改、删除 +- **功能**: 新功能、特性添加 +- **修复**: Bug修复、问题解决 +- **优化**: 性能优化、代码重构 +- **配置**: 配置文件修改 +- **依赖**: 依赖包更新 +- **测试**: 测试用例相关 +- **样式**: CSS、样式修改 + +### 示例 +``` +文档: 添加Git同步规范文档 + +- 详细说明日常同步流程 +- 规范提交信息格式 +- 添加冲突处理指南 +``` + +## 🔧 高级操作 + +### 1. 查看提交历史 +```bash +# 简洁查看 +git log --oneline -10 + +# 带图表查看 +git log --graph --oneline --all + +# 查看特定文件历史 +git log --oneline -- docs\龙虾openclaw\git同步与上传规范.md +``` + +### 2. 撤销操作 +```bash +# 撤销未提交的修改 +git checkout -- <文件名> + +# 撤销已add但未commit的文件 +git reset HEAD <文件名> + +# 修改最后一次提交 +git commit --amend -m "新的提交信息" +``` + +### 3. 分支管理(如需) +```bash +# 创建新分支 +git checkout -b feature/新功能 + +# 切换分支 +git checkout master + +# 合并分支 +git merge feature/新功能 + +# 删除分支 +git branch -d feature/新功能 +``` + +## ⚠️ 注意事项 + +### 必须遵守 +1. **工作前必拉取**:开始工作前必须先 `git pull` +2. **提交前必检查**:提交前用 `git status` 检查更改 +3. **描述必清晰**:提交信息必须清晰描述修改内容 +4. **冲突必解决**:遇到冲突必须手动解决,不能强制推送 + +### 建议习惯 +1. **小步提交**:频繁提交,每次提交一个完整的小功能 +2. **及时推送**:完成一个功能后及时推送到远程 +3. **定期同步**:每小时至少同步一次远程代码 +4. **备份重要**:重要修改前创建备份分支 + +### 禁止操作 +1. ❌ 不要强制推送 `git push -f`(除非明确知道后果) +2. ❌ 不要提交大文件(超过100MB) +3. ❌ 不要提交敏感信息(密码、密钥等) +4. ❌ 不要提交自动生成的文件(如 `.obsidian/workspace.json`) + +## 📊 工作流程图 + +```mermaid +graph TD + A[开始工作] --> B[git pull 拉取最新] + B --> C[编辑文档] + C --> D[git add 添加更改] + D --> E[git commit 提交] + E --> F{是否有远程更新?} + F -->|是| G[git pull 解决冲突] + G --> H[git push 推送] + F -->|否| H + H --> I[工作完成] +``` + +## 🛠️ 工具支持 + +### 1. Git 配置优化 +```bash +# 设置用户名和邮箱 +git config --global user.name "你的名字" +git config --global user.email "你的邮箱" + +# 设置默认编辑器 +git config --global core.editor "code --wait" + +# 启用颜色显示 +git config --global color.ui auto +``` + +### 2. 别名设置(可选) +```bash +# 添加到 ~/.gitconfig +[alias] + st = status + co = checkout + br = branch + ci = commit + df = diff + lg = log --graph --oneline --all +``` + +## 📞 问题处理 + +### 常见问题 +1. **权限错误**:检查 Git 服务器访问权限 +2. **网络问题**:检查网络连接,确认服务器可达 +3. **文件锁定**:关闭正在使用的文件编辑器 +4. **磁盘空间**:确保有足够的磁盘空间 + +### 求助流程 +1. 先查看错误信息 +2. 搜索错误信息解决方案 +3. 联系团队技术支持(FE工程师) +4. 提供完整错误日志 + +--- + +**最后更新**:2026-03-29 +**维护者**:李建华(FE前端工程师) +**适用项目**:D:\mkdocs 知识库项目 \ No newline at end of file From e24216070244cf390a3e35245e480548ac8861e7 Mon Sep 17 00:00:00 2001 From: renjianbo <263303411@qq.com> Date: Tue, 31 Mar 2026 00:16:21 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0:=20MkDocs=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E5=BA=93=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 女童生长激素项目文档更新 - 新增Android ANR知识点总结 - 任务执行: DevOps工程师 - 指令来源: CEO张伟明 → 任总 - 时间: 2026-03-31 00:15 --- .obsidian/workspace.json | 163 +++++++----------------- docs/学习笔记/Android ANR 知识点总结.md | 162 +++++++++++++++++++++++ 2 files changed, 207 insertions(+), 118 deletions(-) create mode 100644 docs/学习笔记/Android ANR 知识点总结.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 136a3b2..76d6537 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -1,101 +1,59 @@ { "main": { - "id": "011c443bd31fa19e", + "id": "4a0abd11ab571e56", "type": "split", "children": [ { - "id": "6f5c5cdf13008dbc", + "id": "fd78b55dba3842ff", "type": "tabs", "children": [ { - "id": "9a5781991bf94030", - "type": "leaf", - "state": { - "type": "bases", - "state": { - "file": "未命名 1.base", - "viewName": "表格" - }, - "icon": "lucide-table", - "title": "未命名 1" - } - }, - { - "id": "25c9f7051aac05b3", + "id": "ee62f962fb280c83", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "docs/Obsidian笔记体系/Daily/2026-01-13.md", + "file": "docs/学习笔记/Android ANR 知识点总结.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "2026-01-13" - } - }, - { - "id": "59894255df52f532", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "知你--调测" - } - }, - { - "id": "c40cc65d2419fc22", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "docs/学习笔记/Android WindowManagerService (WMS) 架构深度解析(第一次提示词).md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Android WindowManagerService (WMS) 架构深度解析(第一次提示词)" + "title": "Android ANR 知识点总结" } } - ], - "currentTab": 3 + ] } ], "direction": "vertical" }, "left": { - "id": "0e065eabdda832e7", + "id": "61450059f20f915c", "type": "split", "children": [ { - "id": "2a433fe0f7c72337", + "id": "da53592ec51ff7ee", "type": "tabs", "children": [ { - "id": "5b497a77c6d68c73", + "id": "c024a2ca8d9509c3", "type": "leaf", "state": { "type": "file-explorer", "state": { "sortOrder": "alphabetical", - "autoReveal": true + "autoReveal": false }, "icon": "lucide-folder-closed", "title": "文件列表" } }, { - "id": "845d54777fd1c51f", + "id": "866dd8c8b5439582", "type": "leaf", "state": { "type": "search", "state": { - "query": "path:\"docs/Obsidian笔记体系/Config/\" ", + "query": "", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -107,7 +65,7 @@ } }, { - "id": "65c02e8e96d3fa35", + "id": "fc645278d7fba125", "type": "leaf", "state": { "type": "bookmarks", @@ -120,23 +78,23 @@ } ], "direction": "horizontal", - "width": 457.5 + "width": 300 }, "right": { - "id": "1e41a867da6b7f39", + "id": "df584a0a293988b8", "type": "split", "children": [ { - "id": "ef77172a3f8f60a0", + "id": "44d87fa4a69d7032", "type": "tabs", "children": [ { - "id": "a990ef40768fba24", + "id": "6c4b61ba760eecc8", "type": "leaf", "state": { "type": "backlink", "state": { - "file": "docs/Obsidian/2026-01-05 个人文档管理.md", + "file": "docs/学习笔记/Android ANR 知识点总结.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -146,25 +104,25 @@ "unlinkedCollapsed": true }, "icon": "links-coming-in", - "title": "2026-01-05 个人文档管理 的反向链接列表" + "title": "Android ANR 知识点总结 的反向链接列表" } }, { - "id": "2a4816e9de5c79b1", + "id": "5f6ecdb98efa5aaa", "type": "leaf", "state": { "type": "outgoing-link", "state": { - "file": "docs/Obsidian/2026-01-05 个人文档管理.md", + "file": "docs/学习笔记/Android ANR 知识点总结.md", "linksCollapsed": false, "unlinkedCollapsed": true }, "icon": "links-going-out", - "title": "2026-01-05 个人文档管理 的出链列表" + "title": "Android ANR 知识点总结 的出链列表" } }, { - "id": "266c7e7083cb214c", + "id": "42daa9caba41cac7", "type": "leaf", "state": { "type": "tag", @@ -179,7 +137,7 @@ } }, { - "id": "f88882a46f03096a", + "id": "994bca394167d46e", "type": "leaf", "state": { "type": "all-properties", @@ -193,18 +151,18 @@ } }, { - "id": "9abea599d31b90b9", + "id": "e6d6c4e1986fdcf3", "type": "leaf", "state": { "type": "outline", "state": { - "file": "docs/Obsidian/2026-01-05 个人文档管理.md", + "file": "docs/学习笔记/Android ANR 知识点总结.md", "followCursor": false, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "2026-01-05 个人文档管理 的大纲" + "title": "Android ANR 知识点总结 的大纲" } } ] @@ -216,62 +174,31 @@ }, "left-ribbon": { "hiddenItems": { - "bases:新建数据库": false, "switcher:打开快速切换": false, "graph:查看关系图谱": false, "canvas:新建白板": false, "daily-notes:打开/创建今天的日记": false, "templates:插入模板": false, - "command-palette:打开命令面板": false + "command-palette:打开命令面板": false, + "bases:新建数据库": false } }, - "active": "c40cc65d2419fc22", + "active": "ee62f962fb280c83", "lastOpenFiles": [ - "docs/学习笔记/Android WindowManagerService核心原理深度解析(专家第二次提示词).md", - "docs/学习笔记/Android性能分析标准化操作手册.md", - "docs/学习笔记/Android游戏整机性能卡顿与丢帧根因分析与优化指南.md", - "docs/学习笔记/Android整机性能分析与问题定位实战指南.md", - "docs/学习笔记/DevOps学习.md", - "docs/cursor/cursor使用技巧.md", - "docs/Obsidian/高频命令.md", - "docs/cursor/cursor.md", - "docs/Obsidian笔记体系/Projects/聊天平台/测试用例.md", - "docs/Obsidian笔记体系/Projects/聊天平台/知你客服 6 号(检索增强记忆).md", - "docs/Obsidian笔记体系/Projects/聊天平台/聊天模型记忆解解方案.md", - "docs/Obsidian笔记体系/Projects/聊天平台/未命名.md", - "docs/Obsidian笔记体系/Projects/聊天平台/知你客服5号的设计.md", - "docs/Obsidian笔记体系/Projects/聊天平台/agent智能体性能调测.md", - "docs/Obsidian笔记体系/Projects/聊天平台/接入方式.md", - "docs/Obsidian笔记体系/Projects/聊天平台/聊天平台.md", - "docs/adb调试命令/adb常用命令.md", - "docs/Obsidian笔记体系/Projects/聊天平台/app.md", - "docs/Obsidian笔记体系/Projects/聊天平台/数据库配置.md", - "docs/Obsidian笔记体系/Projects/saars开发/数据库配置.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/智能配置助手功能已完成.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/电商系统用户订单处理流程设计方案.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md", - "docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md", - "docs/Obsidian笔记体系/Projects/聊天平台", - "docs/Obsidian笔记体系/Projects/aitsc", - "未命名 1.base", - "docs/Obsidian笔记体系/Projects/提示词大师", - "docs/学习笔记/产品经理", - "Pasted image 20260129111501.png", - "Pasted image 20260129111451.png", - "Pasted image 20260129111437.png", - "Pasted image 20260129111431.png", - "Pasted image 20260129111423.png", - "Pasted image 20260129111418.png", - "Pasted image 20260129111414.png", - "Pasted image 20260129111408.png", - "Pasted image 20260129111404.png", - "Pasted image 20260129111354.png", - "docs/产品经理", - "docs/Obsidian笔记体系/Projects/女童生长激素项目", - "docs/学习笔记/php", - "docs/cursor/php", - "com.xiaomi.appstore.appclaim.signature.verification.apk" + "docs/Obsidian笔记体系/Projects/女童生长激素项目/后台管理网址.md", + "docs/学习笔记/Android ANR 知识点总结.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/项目目录位置.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/使用系统nginx.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/生长激素缺乏预测模型项目需求文档.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/配置完成.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔nginx和系统nginx对比分析.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md", + "docs/学习笔记/龙虾能力.md", + "docs/龙虾openclaw/git同步与上传规范.md", + "docs/龙虾openclaw", + "docs/龙虾", + "docs/新建文件夹", + "docs/学习笔记/龙虾配置.md" ] } \ No newline at end of file diff --git a/docs/学习笔记/Android ANR 知识点总结.md b/docs/学习笔记/Android ANR 知识点总结.md new file mode 100644 index 0000000..0867e9c --- /dev/null +++ b/docs/学习笔记/Android ANR 知识点总结.md @@ -0,0 +1,162 @@ +## 1. 什么是 ANR + +ANR 全称:**Application Not Responding**,即**应用程序无响应**。 + +## 2. 触发条件 + +1. 只有 ** 主线程(UI 线程)** 才会产生 ANR。 +2. 必须发生输入事件或特定组件操作: + + - 按键、触屏等输入事件 + - `BroadcastReceiver` 生命周期回调 + - `Service` 生命周期回调 + +3. 事件响应超时,不同场景超时时间不同。 + +### 2.1 各场景超时时间 + +- **Activity 输入事件 / 生命周期**:主线程 5s 内未处理完毕 +- **BroadcastReceiver#onReceive()**:主线程 10s 内未处理完毕 +- **Service 生命周期**:主线程 20s 内未处理完毕 + +## 3. ANR 根本原因 + +### 3.1 主线程执行耗时操作 + +典型场景: + +- 耗时网络访问 +- 大量数据读写、数据库操作 +- 硬件操作(如 Camera) +- 多线程被 Binder 对端 block +- 主线程调用 `Thread.join()`/`sleep()`/`wait()`、等待线程锁 +- Service Binder 数量达上限,无法与 System Server 通信 +- System Server 中 WatchDog 导致 ANR、Service 繁忙超时 + +### 3.2 非主线程导致 + +非主线程持有锁,导致主线程等待锁超时 / 无限等待,最终触发 ANR。 + +### 3.3 其他进程 / 系统资源问题 + +- 其他进程占用 CPU,本进程得不到时间片 +- 内存泄漏导致频繁 Full GC,CPU 占用飙升 +- 内存吃紧、系统频繁 coredump + +> CPU 利用率说明: +> +> - 前台进程 ≤ 95%,后台进程 ≤ 5%(无前台时可超) +> - `RUNNABLE` 线程不一定耗 CPU +> - `TIMED_WAITING`/`WAITING` 线程不耗 CPU +> - I/O 操作本身不怎么耗 CPU + +> 注意: +> +> “内存泄露” 可能是真实泄漏点,也可能是堆内存占用过大、内存吃紧,间接导致 ANR/CPU 过高。 + +## 4. ANR 类型及日志关键字 + +表格 + +|ANR 类型|超时时间|Logcat 关键字| +|---|---|---| +|InputDispatching Timeout|5s|`Input event dispatching timed out`| +|BroadcastTimeout|前台 10s

后台 60s|`Timeout of broadcast BroadcastRecord`| +|ServiceTimeout|前台 20s

后台 200s|`Timeout executing service`| +|ContentProviderTimeout|10s|`timeout publishing content providers`| + +## 5. ANR 定位方法 + +入手点:ANR 前后日志 + `/data/anr/traces.txt` + +### 5.1 日志分析 + +1. 搜索 `ANR in`:定位发生 ANR 的进程 +2. 搜索 `ActivityManager:CPU usage from`:判断是否 CPU 过高 + +### 5.2 traces.txt 分析 + +1. 搜索 `held by tid=`:排查死锁 +2. 查看 `stackSize=`:判断是否内存问题 + +### 5.3 整体分析步骤 + +1. 确定 ANR 时间点 + + - 关键字:`anr in`、`blocked`、`blockMonitor`、`freezedector` + - 获取:版本号、PID、是否前台、页面、温度、频点、ANR 类型 + +2. 根据 ANR 类型回溯对应时间段日志 + + - 查找 `Subject` / `Reason` + +3. 分析 ANR 堆栈 + + - 查找 `sysTid=线程号` + - 状态为 `block`/`timeout` 一般为真实问题堆栈 + + +### 5.4 核心分析思路 + +1. **查看 CPU 负载** + + - user:用户态 + - kernel:内核态 + - iowait:IO 等待 + - faults:内存缺页 + +2. **查看主线程状态** + + - `Native`:正常空闲,等待消息 + - `Runnable`:主线程执行耗时操作 + - `Blocked`:主线程被锁阻塞,可查 `waiting to lock...held by thread` + +3. **其他应用抢占 CPU** + + 日志会显示高占比包名,CPU 上限 = 核心数 × 100% +4. **系统服务 / Binder 问题** + + 搜索:`BinderProxy.transactNative` + + 可能原因:Binder 超时、Binder 资源耗尽 +5. **内存紧张导致 ANR** + + - 查看 ANR 前空闲内存 + + - 4G 及以下:阈值约 350M + - 4G 以上:阈值约 450M + + - 查看 `trimMemory` 调用(level 越大内存越紧张:5/10/20/40/60/80) + + +## 6. 典型示例 + +1. 主线程与子线程互锁导致 ANR +2. Android 系统库崩溃(如 `libweexcore.so` 等) +3. `nativePollOnce` 阻塞 +4. Binder 对端阻塞(如第三方推送 SDK) + +## 7. 非应用自身导致的 ANR + +1. **热限频** + + - 温度 > 41℃ + - 大核频点 < 1.8GHz 且跑满 + +2. **Monkey 异常场景** + + - 焦点不在当前应用 / 页面已销毁,仍分发输入事件 + - 不属于 App 代码问题 + + +## 8. ANR 根本原因分类总结 + +表格 + +|原因类别|具体表现| +|---|---| +|主线程自身问题|主线程执行耗时操作、死循环、复杂计算、同步 IO / 网络| +|线程间竞争|主线程等待子线程锁、死锁、子线程崩溃导致主线程无限等待| +|CPU 被抢占|其他进程占满 CPU、频繁 GC| +|系统资源瓶颈|内存紧张、GC 频繁、系统服务繁忙、Binder 耗尽| +|系统 / 环境问题|热限频、Monkey 异常、系统服务超时| \ No newline at end of file