diff --git a/实践积累/AI工程/Agentic SE.md b/实践积累/AI工程/Agentic SE.md index 6bdb663..d6f8dbd 100755 --- a/实践积累/AI工程/Agentic SE.md +++ b/实践积累/AI工程/Agentic SE.md @@ -1,7 +1,65 @@ - -
-The requested URL was not found on this server.
- +--- +title: 智能体软件工程(Agentic SE) +tags: + - AI-Agent + - 软件工程 + - 方法论 + - 学术 +created: 2026-04-21 +source: 艾哈迈德·E·哈桑(Ahmed E. Hassan),2026年 +translator: 李豪 +--- + +# 智能体软件工程 + +> 与随机性队友一起以前所未有的规模构建可信赖的软件 + +## 关于作者 + +**艾哈迈德·E·哈桑(Ahmed E. Hassan)教授** +- 穆斯塔法奖得主(常比作诺贝尔级别荣誉) +- ACM Fellow、IEEE Fellow、AAIA Fellow +- 加拿大研究主席(Canada Research Chair) +- 加拿大女王大学 NSERC/BlackBerry 软件工程工业研究主席 +- 全球引用次数最多的软件工程研究人员之一 +- 唯一同时获得 ACM SIGSOFT 有影响力教育家奖(2019)和 IEEE TCSE 杰出教育家奖(2020)的学者 +- 已培养出 35 位高校教授 + +## 核心论点 + +> **AI 不是工具,而是队友**——一个能力强大但会犯错的队友。因此,可靠性不能依赖于 AI 本身的完美,而必须通过工程系统来保障。 + +当 AI 能以前所未有的速度生成代码时,软件工程该怎么做? + +## 四大部分结构 + +| 部分 | 内容 | +|------|------| +| **第一部分** | 建立概念基础 | +| **第二部分** | 解决 AI 队友的可靠性问题 | +| **第三部分** | 将协作扩展到团队规模 | +| **第四部分** | 为不同角色提供行动指南 | + +## 读书建议 + +| 角色 | 建议 | +|------|------| +| 技术负责人/工程管理者 | 第一部分顺序读起,重点看第三、四部分 | +| 一线开发者 | 第一、二部分是核心章节 | +| 时间有限者 | 直接读第四部分(全书浓缩与行动路线图) | + +## 与其他框架的关系 + +| 框架 | 关系 | +|------|------| +| **Harness Engineering** | Agentic SE 的第二部分对应可靠性保障 | +| **Superpowers** | Agentic SE 的第三部分对应团队协作扩展 | +| **Agent = Model + Harness** | 两本书共享同一核心公式 | + +## 译者序摘要 + +译者李豪: +- 这是一部从软件工程学科本身出发,严肃思考人与 AI 如何协作构建可信赖软件的著作 +- 本书提出了**智能体软件工程**这一框架 +- 核心论点:可靠性不能依赖于 AI 本身的完美,而必须通过工程系统来保障 + diff --git a/实践积累/AI工程/Harness Engineering.md b/实践积累/AI工程/Harness Engineering.md index 6bdb663..1febac4 100755 --- a/实践积累/AI工程/Harness Engineering.md +++ b/实践积累/AI工程/Harness Engineering.md @@ -1,7 +1,129 @@ - - -The requested URL was not found on this server.
- +--- +title: Harness Engineering 知识体系 +tags: + - AI-Agent + - Engineering + - Prompt-Engineering + - Context-Engineering +created: 2026-04-21 +source: 基于11篇原始资料整理(OpenAI/Anthropic/Thoughtworks/LangChain/HumanLayer/Inngest/学术界) +--- + +# Harness Engineering + +> AI Agent = Model + Harness +> +> *"The model contains the intelligence and the harness is the system that makes that intelligence useful."* — LangChain + +## 核心定义 + +**Harness** = 除模型以外的一切——工具、指令、状态管理、验证机制、运行时基础设施 + +让模型输出从"不可靠"变成"可信赖"的工程体系。 + +--- + +## 各机构视角 + +| 机构 | 侧重点 | +|------|--------| +| **LangChain** | 最宽泛:Harness = 一切非模型的技术层 | +| **Anthropic** | 环境脚手架 + 长任务连续性 + clean state 理念 | +| **OpenAI** | 代码仓库即知识系统,强调"零人工代码"自动化 | +| **Thoughtworks** | 赛博内廷(cybernetic governor),区分"构建者挽具"vs"用户挽具" | +| **HumanLayer** | Harness = Context Engineering 的子集,专注上下文窗口管理 | +| **Inngest** | 持久化事件驱动基础设施 | +| **学术界(CAR框架)** | Control + Agency + Runtime 三元框架 | + +--- + +## 五大大子系统(walkinglabs 综合框架) + +### 1. Instructions(指令) +告诉 Agent 做什么、按什么顺序、读什么文件。采用**渐进式披露**(Progressive Disclosure),而非巨型文件。 + +### 2. State(状态) +追踪已完成什么、正在做什么、接下来是什么。**持久化到磁盘**,确保会话间连续性。 + +### 3. Verification(验证) +只有通过测试才算完成。Agent 不能在无可运行证据的情况下宣告任务完成。 + +### 4. Scope(范围) +将 Agent 约束到**每次一个功能**,防止过度扩展和半途而废。 + +### 5. Session Lifecycle(会话生命周期) +- 开始时初始化 +- 结束时清理 +- 为下一次会话留下清晰的重启路径 + +--- + +## 两类控制(Thoughtworks) + +| 类型 | 计算型 | 推理型 | +|------|--------|--------| +| 执行 | CPU确定性快速 | GPU/NPU语义分析 | +| 例子 | 测试/linter/类型检查 | LLM as Judge/AI代码审查 | +| 特点 | 结果可靠 | 成本高但能处理语义判断 | + +### 前馈导引 + 反馈传感 +- **前馈导引**(Feedforward Guides):在工作前注入上下文(AGENTS.md、技能文件、引导脚本) +- **反馈传感**(Feedback Sensors):工作后检测问题(静态分析、日志、测试) + +--- + +## 三类调控维度(Thoughtworks) + +| 维度 | 调控内容 | 例子 | +|------|----------|------| +| **可维护性挽具** | 代码内部质量 | 重复代码、圈复杂度、测试覆盖率 | +| **架构适应性挽具** | 架构特征 | 性能要求、可观测性标准、依赖方向规则 | +| **行为挽具** | 功能正确性 | 规格说明、测试套件、端到端验证 | + +--- + +## CAR 框架(学术界) + +三个维度: +- **Control(控制)** — 哪些指令保持权威 +- **Agency(智能体能力)** — 哪些行动可用 +- **Runtime(运行时)** — 状态如何延续、故障如何处理 + +提出 **Harness-sensitive** 概念:部分 Agent 性能提升可能来自 Harness 改进,而非模型本身。 + +--- + +## 实测效果(Anthropic) + +同一模型 + 同一提示词(构建2D复古游戏编辑器): + +| | 有Harness | 无Harness | +|--|-----------|-----------| +| 成本 | $9 | 更高 | +| 时间 | 20分钟 | 更长 | +| 结果 | 可运行 | 无法运行 | + +**结论**:Harness 改进可能比模型本身带来的性能提升更显著。 + +--- + +## 核心启示 + +1. **Harness 是杠杆** — 同一模型,有无 Harness 结果差异巨大 +2. **验证即完成** — Agent 不能在无可运行证据的情况下宣告完成 +3. **状态持久化** — 会话间的连续性是长任务的关键 +4. **Scope 约束** — 防止 Agent 过度扩展和半途而废 +5. **渐进式披露** — 指令文件不要堆成巨型文件 + +--- + +## 与 OpenClaw 的关系 + +OpenClaw 本身就是一种 **Harness** 的实现: +- `AGENTS.md` / `SOUL.md` / `USER.md` = Instructions 子系统 +- `MEMORY.md` / `memory/` = State 子系统 +- `HEARTBEAT.md` = Verification + Session Lifecycle +- Skills 系统 = 工具扩展(Tool Harness) + +Harness Engineering 理论可以指导 OpenClaw 的优化方向。 + diff --git a/实践积累/AI工程/Superpowers.md b/实践积累/AI工程/Superpowers.md index 6bdb663..1cc52e6 100755 --- a/实践积累/AI工程/Superpowers.md +++ b/实践积累/AI工程/Superpowers.md @@ -1,7 +1,200 @@ - - -The requested URL was not found on this server.
- +--- +title: Superpowers 技能框架 +tags: + - AI-Agent + - TDD + - Coding-Agent + - Software-Development + - 开源 +created: 2026-04-21 +source: https://github.com/obra/superpowers +stars: 161680 +forks: 14117 +language: Shell +author: Jesse Vincent (obra) +--- + +# Superpowers 技能框架 + +> 一个面向 AI 编码智能体的完整软件开发方法论 +> +> GitHub: 161.7k ⭐ | MIT 许可证 + +## 核心定义 + +Superpowers 是由 **Jesse Vincent**(obra)开发的一套面向 AI 编码智能体的**技能框架与软件开发方法论**。 + +核心理念:**不试图让 AI"理解"最佳实践,而是构建一个"不遵守规范就无法推进"的系统**。 + +--- + +## 核心理念 + +### 与 Harness Engineering 的关系 + +Superpowers 是 Harness Engineering 的**具体实现**之一,专注于编码智能体场景。 + +| 维度 | Superpowers | Harness Engineering | +|------|-------------|---------------------| +| 核心等式 | 技能驱动工作流 | Agent = Model + Harness | +| 触发机制 | 技能在任意响应前自动检查 | 五大子系统 | +| 验证方式 | RED-GREEN-REFACTOR | verification-before-completion | +| 状态管理 | brainstorming文档 + plan文件 | State子系统 | + +--- + +## 核心特点 + +### 1. 技能驱动的全流程工作流 + +| 阶段 | 技能 | 说明 | +|------|------|------| +| 需求探索 | brainstorming | 苏格拉底式提问,输出设计文档 | +| 工作区隔离 | using-git-worktrees | 独立Git worktree上开始工作 | +| 任务拆解 | writing-plans | 2-5分钟细粒度任务,带文件路径和验证步骤 | +| 执行 | subagent-driven-development / executing-plans | 子智能体并发执行,两阶段审查 | +| 测试 | test-driven-development | 严格RED-GREEN-REFACTOR循环 | +| 审查 | requesting-code-review | 按严重程度上报问题 | +| 收尾 | finishing-a-development-branch | 验证测试,决策合并/PR/丢弃 | + +### 2. 强制合规,而非依赖理解 + +技能检查置于**"任何响应或动作之前"**,从结构上杜绝跳过。 + +### 3. 心理说服原则的应用 + +基于沃顿商学院与恰尔蒂尼团队合作的论文《Call Me a Jerk: Persuading AI》: + +- **权威(Authority)** — 技能定义为强制工作流而非建议 +- **承诺(Commitment)** — 使用技能前要求智能体公开声明 +- **社会认同(Social Proof)** — 营造"不怕调用错技能"的文化 + +### 4. 技能的TDD开发 + +技能本身也通过TDD方式创建: +- **RED** — 设计压测场景,让子智能体执行 → 暴露技能失效 +- **GREEN** — 强化技能指令,重测通过 +- **REFACTOR** — 优化技能表达 + +### 5. 多平台支持 + +- Claude Code(官方市场) +- OpenAI Codex CLI/App +- GitHub Copilot CLI +- Cursor +- Gemini CLI +- OpenCode + +--- + +## 内置技能库 + +### Testing +- **test-driven-development** — RED-GREEN-REFACTOR循环 + +### Debugging +- **systematic-debugging** — 4阶段根因分析 +- **verification-before-completion** — 确保真正修复 + +### Collaboration +- **brainstorming** — 苏格拉底式设计优化 +- **writing-plans** — 详细实现计划 +- **executing-plans** — 带检查点的批量执行 +- **dispatching-parallel-agents** — 并发子智能体工作流 +- **requesting-code-review** — 审查前检查清单 +- **receiving-code-review** — 响应反馈 +- **using-git-worktrees** — 并行开发分支 +- **finishing-a-development-branch** — 合并/PR决策工作流 +- **subagent-driven-development** — 两阶段审查快速迭代 + +### Meta +- **writing-skills** — 创建新技能的最佳实践 +- **using-superpowers** — 技能系统介绍 + +--- + +## 安装方式 + +```bash +# Claude Code 官方市场 +/plugin install superpowers@claude-plugins-official + +# Claude Code Superpowers市场 +/plugin marketplace add obra/superpowers-marketplace +/plugin install superpowers@superpowers-marketplace + +# Cursor +/add-plugin superpowers + +# OpenAI Codex CLI +/plugins → 搜索superpowers → 安装 + +# GitHub Copilot CLI +copilot plugin marketplace add obra/superpowers-marketplace +copilot plugin install superpowers@superpowers-marketplace + +# Gemini CLI +gemini extensions install https://github.com/obra/superpowers +``` + +--- + +## 优势 + +| 优势 | 说明 | +|------|------| +| 自动化最佳实践 | 开发者无需反复提醒,框架自动触发TDD、代码审查等规范 | +| 长时间自主运行 | 子智能体驱动开发使智能体能在数小时不偏离计划自主工作 | +| 并行开发能力 | Git worktree + 并发子智能体可同时推进多个独立任务 | +| 有据可查的质量保障 | verification-before-completion要求以证据代替断言 | +| 可扩展的技能生态 | 技能以Markdown文件(SKILL.md)形式存在 | +| 学术背书的心理机制 | 说服原则对LLM的有效性已有统计显著性的学术验证 | +| 开源免费 | MIT许可证 | + +--- + +## 劣势 + +| 劣势 | 说明 | +|------|------| +| 学习曲线 | 需要理解完整工作流,初学者上手成本较高 | +| 流程开销 | brainstorming和planning对小型改动可能过重 | +| 依赖智能体平台 | 技能效果高度依赖底层编码智能体 | +| 提示词复杂度高 | 内嵌心理说服机制的提示词难以手动维护 | +| 子智能体成本 | Subagent-Driven Development会频繁启动新实例,API成本较高 | +| 贡献限制 | 不接受新技能的社区贡献,修改必须兼容全部支持的平台 | + +--- + +## 适用场景 + +| 场景 | 说明 | +|------|------| +| 中大型功能开发 | 需求不完全清晰、任务较多时,brainstorming + writing-plans能有效防止方向跑偏 | +| 追求工程纪律的团队 | 强制执行TDD、代码审查等规范 | +| 长时间自主编程任务 | 需要智能体在无监督下稳定工作数小时 | +| 多任务并行开发 | 多个独立子任务可并行推进 | +| AI开发方法论研究 | 对"如何让AI遵守软件工程规范"感兴趣的研究者 | +| 自定义技能开发 | 团队已有内部规范,可通过writing-skills创建专属技能 | + +**不适合场景**:快速原型验证、一次性脚本或极简改动、对API token成本极度敏感的项目 + +--- + +## 核心启示 + +1. **强制合规 > 依赖理解** — 不让AI"理解"TDD,而是构建无法跳过的系统 +2. **技能触发在工作流之前** — 任何响应前检查技能,从结构上杜绝跳过 +3. **验证即完成** — 以证据(测试通过)代替断言("我认为完成了") +4. **TDD for Skills** — 技能本身也需要通过压测场景来验证有效性 +5. **子智能体 + 两阶段审查** — 实现长时间自主工作的关键 + +--- + +## 参考资源 + +- **GitHub**: https://github.com/obra/superpowers +- **官方博客**: https://blog.fsck.com/2025/10/09/superpowers/ +- **Discord社区**: https://discord.gg/35wsABTejz +- **Claude插件市场**: https://claude.com/plugins/superpowers + diff --git a/实践积累/AI工程/智能体软件工程知识图谱.md b/实践积累/AI工程/智能体软件工程知识图谱.md index 6bdb663..7ccf395 100755 --- a/实践积累/AI工程/智能体软件工程知识图谱.md +++ b/实践积累/AI工程/智能体软件工程知识图谱.md @@ -1,7 +1,181 @@ - - -The requested URL was not found on this server.
- +--- +title: 智能体软件工程知识图谱 +tags: + - AI-Agent + - Agentic-SE + - Harness-Engineering + - Superpowers + - 软件工程 + - 知识图谱 +created: 2026-04-21 +sources: + - AgenticSE_Book_CN(艾哈迈德·E·哈桑,2026) + - Harness-Engineering知识体系(11篇原始资料整理,2026-04-20) + - Superpowers技能框架(obra,161.7k stars,2026-04-21) +--- + +# 智能体软件工程知识图谱 + +> 串联三大框架:**Agentic SE** + **Harness Engineering** + **Superpowers** +> +> 核心公式:**AI Agent = Model + Harness** + +--- + +## 一、核心共识 + +三大框架都认同: + +1. **AI Agent = Model + Harness** — 模型提供智能,Harness 让智能可用 +2. **AI 是队友,不是工具** — 能力强大但会犯错,可靠性必须靠工程系统保障 +3. **强制合规 > 依赖理解** — 不指望 AI 自发遵守规范,要构建无法跳过的系统 +4. **验证即完成** — 以可运行的证据(测试通过)代替主观断言 + +--- + +## 二、框架定位对照 + +| 维度 | Agentic SE | Harness Engineering | Superpowers | +|------|------------|-------------------|-------------| +| **定位** | 学科级方法论 | 概念框架 | 具体技能实现 | +| **层级** | 理论与哲学 | 设计原则 | 工程实践 | +| **关注点** | 人+AI团队协作 | 除模型以外的一切 | 编码智能体工作流 | +| **起源** | 学术(哈桑教授) | 多机构综合(LangChain/Anthropic/Thoughtworks等) | 工程实践(Jesse Vincent) | + +--- + +## 三、核心概念映射 + +### 1. Agent = Model + Harness + +| 组件 | Agentic SE 说法 | Harness Engineering 说法 | Superpowers 说法 | +|------|----------------|------------------------|-----------------| +| **Model** | AI队友 | 模型( intelligence) | 底层编码智能体 | +| **Harness** | 工程系统保障可靠性 | 工具/指令/状态管理/验证/运行时基础设施 | 技能系统(Skills) | + +### 2. 五大子系统(对应关系) + +| # | Harness Engineering | Superpowers | Agentic SE | +|---|---------------------|--------------|------------| +| 1 | Instructions | brainstorming / writing-plans | 需求规范 + 设计文档 | +| 2 | State | 设计文档 + plan文件 + git log | 持久化状态管理 | +| 3 | Verification | test-driven-development / verification-before-completion | 验证与测试 | +| 4 | Scope | one feature at a time | 任务边界控制 | +| 5 | Session Lifecycle | init.sh / finishing-a-development-branch | 会话交接与收尾 | + +### 3. 控制类型对照 + +| 类型 | Harness Engineering | Superpowers | +|------|---------------------|--------------| +| **计算型控制** | 测试/linter/类型检查 | test-driven-development | +| **推理型控制** | LLM as Judge / AI代码审查 | requesting-code-review | +| **前馈导引** | AGENTS.md / 技能文件 / 引导脚本 | brainstorming(苏格拉底式提问) | +| **反馈传感** | 静态分析 / 日志 / 测试 | 两阶段审查(规格合规 + 代码质量) | + +### 4. 质量保障维度 + +| 维度 | Harness Engineering | Superpowers | +|------|---------------------|--------------| +| **可维护性** | 重复代码/圈复杂度/测试覆盖率 | test-driven-development | +| **架构适应性** | 性能/可观测性/依赖规则 | writing-plans(详细任务拆解) | +| **行为正确性** | 规格说明/测试套件/e2e验证 | RED-GREEN-REFACTOR + verification-before-completion | + +--- + +## 四、CAR 框架(Control-Agency-Runtime) + +来自学术界(Harness Engineering 引用),与各框架的对应: + +| 维度 | 定义 | 在Superpowers中的体现 | +|------|------|---------------------| +| **Control** | 哪些指令保持权威 | 技能触发在工作前,任何响应前检查 | +| **Agency** | 哪些行动可用 | subagent-driven-development(子智能体执行) | +| **Runtime** | 状态如何延续、故障如何处理 | Session Lifecycle / finishing-a-development-branch | + +--- + +## 五、心理说服原则 + +Superpowers 独家引入(基于沃顿商学院论文《Call Me a Jerk》),可补充到 Harness Engineering: + +| 原则 | 在Superpowers中的应用 | +|------|----------------------| +| **权威(Authority)** | 技能定义为强制工作流,而非建议 | +| **承诺(Commitment)** | 使用技能前要求智能体公开声明 | +| **社会认同(Social Proof)** | 营造"不怕调用错技能"的文化 | + +--- + +## 六、实测效果 + +Anthropic 对比实验(同一模型 + 同一提示词): + +| | 有Harness | 无Harness | +|--|-----------|-----------| +| 成本 | $9 | 更高 | +| 时间 | 20分钟 | 更长 | +| 结果 | 可运行 | 无法运行 | + +**结论**:Harness 改进带来的性能提升,可能比模型本身更显著。 + +--- + +## 七、知识体系演进路径 + +``` +学术界(CAR框架) + ↓ +Harness Engineering(概念框架,11家机构综合) + ↓ +┌─────────────────┴─────────────────┐ +↓ ↓ +Agentic SE(理论专著) Superpowers(工程实践) +(哈桑教授,2026) (Jesse Vincent,161.7k stars) +关注:人+AI协作 关注:编码智能体工作流 +└─────────────────┬─────────────────┘ + ↓ + OpenClaw/Harness实践 +``` + +--- + +## 八、对OpenClaw的指导意义 + +OpenClaw 本身就是一个 Harness 实现: + +| OpenClaw组件 | 对应Harness子系统 | +|-------------|-----------------| +| AGENTS.md / SOUL.md / USER.md | Instructions | +| MEMORY.md / memory/ | State | +| HEARTBEAT.md | Verification + Session Lifecycle | +| Skills系统 | 工具扩展(Tool Harness) | + +**优化方向**: +1. 引入 Superpowers 的"技能触发在工作前"机制 +2. 强化 verification-before-completion(当前HEARTBEAT偏简单检查) +3. 补充前馈导引:每次会话开始时主动说明上下文 +4. 引入 TDD 思维:先定义验证方式,再执行任务 + +--- + +## 九、推荐阅读路径 + +``` +入门 → 《Agentic SE》第四部分(行动指南) + ↓ +进阶 → Harness-Engineering知识体系 + ↓ +实践 → Superpowers技能框架 + ↓ +落地 → OpenClaw优化方向 +``` + +--- + +## 关联文档 + +- [[Harness-Engineering知识体系]] +- [[Superpowers技能框架]] +- [[code-reviewer技能]] +- [[fireworks-tech-graph技术图生成工具]] + diff --git a/实践积累/个人知识库/Linux/Ubuntu系统目录.md b/实践积累/个人知识库/Linux/Ubuntu系统目录.md index 6bdb663..77d9894 100755 --- a/实践积累/个人知识库/Linux/Ubuntu系统目录.md +++ b/实践积累/个人知识库/Linux/Ubuntu系统目录.md @@ -1,7 +1,60 @@ - - -The requested URL was not found on this server.
- +## bin core home lib64 mnt root snap tmp vmlinuz +## boot dev initrd.img lost+found opt run srv usr +## cdrom etc lib media proc sbin sys var + +## 下面, 我们逐个分析这些文件夹的用处 +## bin +## 系统 shell (终端) 命令存放于此 +## core +## home +## 除了root用户以外的用户默认主目录, 每个子目录都是一个用户名 +## lib64 +## mnt +## root +## root用户的主目录 +## snap +## tmp +## boot +## dev +## lost+found +## opt +## 供本系统所有用户使用软件一般安装在此 +**有人也喜欢把软件安装在** **/usr/local/** +## run +## srv +## usr +**/usr/** **目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本自带的主要的应用程序。** +**/usr/local/** **目录一般安装第三方的软件** +**/usr/local/bin** **放置用户自己安装的小的shell命令,和一些在/usr/local目录下大应用程序的符号连接。****/usr/local/bin/** **目录下的命令可以直接在shell里使用** +**/usr/share/fonts****是字体文件夹,可以在这里新建文件夹** **winFonts/****,把ttf格式的字体放进去** +## 然后将字体文件拷贝到此文件夹下: +sudo cp ~/Desktop/font/*.ttf /usr/share/fonts/winFonts/ + +- **1** +- **2** + +## 然后,改变权限: +sudo chmod 644 /usr/share/fonts/winFonts/*.ttf + +- **1** +- **2** + +## cdrom +## etc +## 系统全局配置文件一般在此 +## /etc/apt/ +## Ubuntu 软件源列表, 也就是 apt-get 命令执行时从哪些地方下载包的依据 +## lib +## media +## proc +## sbin +## sys +## var + > 来自 <[http://blog.csdn.net/caib1109/article/details/51764196](http://blog.csdn.net/caib1109/article/details/51764196)> + +**开始安装** +## cd /usr/share/fonts/winFonts/ +## sudo mkfontscale (创建雅黑字体的fonts.scale文件,它用来控制字体旋转缩放) +## sudo mkfontdir (创建雅黑字体的fonts.dir文件,它用来控制字体粗斜体产生) +## sudo fc-cache -fv (建立字体缓存信息,也就是让系统认识雅黑) + > 来自 <[http://blog.csdn.net/caib1109/article/details/51764196](http://blog.csdn.net/caib1109/article/details/51764196)> \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_Cpu_占用过高.md b/实践积累/个人知识库_数据库_Cpu_占用过高.md deleted file mode 100755 index db9e315..0000000 --- a/实践积累/个人知识库_数据库_Cpu_占用过高.md +++ /dev/null @@ -1,15 +0,0 @@ -```sql -SELECT TOP 10 -``` -total_worker_time/execution_count AS avg_cpu_cost, plan_handle, -execution_count, -(SELECT SUBSTRING(text, statement_start_offset/2 + 1, -(CASE WHEN statement_end_offset = -1 -THEN LEN(CONVERT(nvarchar(max), text)) * 2 -ELSE statement_end_offset -```sql -END - statement_start_offset)/2) -FROM sys.dm_exec_sql_text(sql_handle)) AS query_text -FROM sys.dm_exec_query_stats -``` -ORDER BY [avg_cpu_cost] DESC \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_HiMonitor1.0_升级到1.3脚本注意事项.md b/实践积累/个人知识库_数据库_HiMonitor1.0_升级到1.3脚本注意事项.md deleted file mode 100755 index f7d78bb..0000000 --- a/实践积累/个人知识库_数据库_HiMonitor1.0_升级到1.3脚本注意事项.md +++ /dev/null @@ -1,132 +0,0 @@ -DeviceInfo 表需要新增 [HeightDeviation]列 - -执行脚本,以及修改对应的ProjectID -其他的 - -```sql -USE [HiMonitorDB] -GO -``` -/****** Object: Table [dbo].[DynamicCalculationConfig] Script Date: 2018/7/5 15:04:35 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -```sql -CREATE TABLE [dbo].[DynamicCalculationConfig]( -``` -[ID] [int] IDENTITY(1,1) NOT NULL, -[IsUse] [int] NULL, -[SolveMode] [int] NULL, -[RobustMode] [int] NULL, -[RatioThrdDYN] [float] NULL, -[SolvingStrategy] [int] NULL, -[RelatedProject] [int] NULL, -[FilterWindowSize] [float] NULL, -[SolveStoreInterval] [float] NULL, -CONSTRAINT [PK_DynamicCalculationConfig] PRIMARY KEY CLUSTERED -( -[ID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] - -GO -/****** Object: Table [dbo].[RoutineConfig] Script Date: 2018/7/5 15:04:35 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -SET ANSI_PADDING ON -GO -```sql -CREATE TABLE [dbo].[RoutineConfig]( -``` -[ID] [int] IDENTITY(1,1) NOT NULL, -[RelatedProject] [int] NULL, -[ObsType] [int] NULL, -[ObsFreq] [int] NULL, -[Intervals] [float] NULL, -[EleCutOff] [float] NULL, -[ExcludeSats] [varchar](300) NULL, -[UsedSys] [varchar](300) NULL, -[IsSaveRawData] [int] NULL, -[SaveRawDataType] [int] NULL, -[SaveDataInterval] [int] NULL, -CONSTRAINT [PK_RoutineConfig] PRIMARY KEY CLUSTERED -( -[ID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] - -GO -SET ANSI_PADDING OFF -GO -/****** Object: Table [dbo].[RTKCalculationConfig] Script Date: 2018/7/5 15:04:35 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -```sql -CREATE TABLE [dbo].[RTKCalculationConfig]( -``` -[ID] [int] IDENTITY(1,1) NOT NULL, -[IsUse] [int] NULL, -[MaxHorRTK] [float] NULL, -[MaxVerRTK] [float] NULL, -[RatioThrdRTK] [float] NULL, -[DeforMode] [int] NULL, -[SolvingStrategy] [int] NULL, -[RelatedProject] [int] NULL, -[FilterWindowSize] [float] NULL, -[SolveStoreInterval] [float] NULL, -CONSTRAINT [PK_RTKCalculationConfig] PRIMARY KEY CLUSTERED -( -[ID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] - -GO -/****** Object: Table [dbo].[StaticeCalculationConfig] Script Date: 2018/7/5 15:04:35 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -```sql -CREATE TABLE [dbo].[StaticeCalculationConfig]( -``` -[ID] [int] IDENTITY(1,1) NOT NULL, -[IsUse] [int] NULL, -[MaxHorSTC] [float] NULL, -[MaxVerSTC] [float] NULL, -[RatioThrdSTC] [float] NULL, -[SolvingStrategy] [int] NULL, -[SessLengthSTC] [int] NULL, -[CalcFreqSTC] [int] NULL, -[RelatedProject] [int] NULL, -CONSTRAINT [PK_StaticeMonitorConfig] PRIMARY KEY CLUSTERED -( -[ID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] - -GO -SET IDENTITY_INSERT [dbo].[DynamicCalculationConfig] ON - -```sql -INSERT [dbo].[DynamicCalculationConfig] ([ID], [IsUse], [SolveMode], [RobustMode], [RatioThrdDYN], [SolvingStrategy], [RelatedProject], [FilterWindowSize], [SolveStoreInterval]) VALUES (1, 0, 0, 0, 3, NULL, 2, 10, 30) -``` -SET IDENTITY_INSERT [dbo].[DynamicCalculationConfig] OFF -SET IDENTITY_INSERT [dbo].[RoutineConfig] ON - -```sql -INSERT [dbo].[RoutineConfig] ([ID], [RelatedProject], [ObsType], [ObsFreq], [Intervals], [EleCutOff], [ExcludeSats], [UsedSys], [IsSaveRawData], [SaveRawDataType], [SaveDataInterval]) VALUES (1, 2, 0, 0, 15, 12, NULL, N'0&1&2', 0, 0, 24) -``` -SET IDENTITY_INSERT [dbo].[RoutineConfig] OFF -SET IDENTITY_INSERT [dbo].[RTKCalculationConfig] ON - -```sql -INSERT [dbo].[RTKCalculationConfig] ([ID], [IsUse], [MaxHorRTK], [MaxVerRTK], [RatioThrdRTK], [DeforMode], [SolvingStrategy], [RelatedProject], [FilterWindowSize], [SolveStoreInterval]) VALUES (1, 1, 0.02, 0.04, 2.5, 0, 0, 2, 120, 30) -``` -SET IDENTITY_INSERT [dbo].[RTKCalculationConfig] OFF -SET IDENTITY_INSERT [dbo].[StaticeCalculationConfig] ON INSERT [dbo].[StaticeCalculationConfig] ([ID], [IsUse], [MaxHorSTC], [MaxVerSTC], [RatioThrdSTC], [SolvingStrategy], [SessLengthSTC], [CalcFreqSTC], [RelatedProject]) VALUES (5, 0, 0.02, 0.02, 2.5, NULL, 5, 5, 12) -SET IDENTITY_INSERT [dbo].[StaticeCalculationConfig] OFF \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_INDEX_数据库.md b/实践积累/个人知识库_数据库_INDEX_数据库.md deleted file mode 100755 index b9318b6..0000000 --- a/实践积累/个人知识库_数据库_INDEX_数据库.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: 数据库 索引 -tags: - - 索引 -created: 2026-04-21 ---- - -# 数据库 - -> 自动生成的索引文件 - -## 文件列表 - -| 文件名 | 大小 | 说明 | -|--------|------|------| -| [[CAP定理(CAP theorem)]] | 1KB | | -| [[Cpu 占用过高]] | 420B | | -| [[HiMonitor1.0 升级到1.3脚本注意事项]] | 4KB | | -| [[MariaDB_Centos7安装mariadb,支持远程访问]] | 1KB | | -| [[PostgreSQL_Pg12 安装过程]] | 1KB | | -| [[PostgreSQL_Postgresql 帐号密码修改方法]] | 267B | | -| [[PostgreSQL_pg_hba.conf]] | 1KB | | -| [[PostgreSQL_postgresql删除还有活动连接的数据库]] | 246B | | -| [[PostgreSQL_systemctl start postgresql-12.service -- 启动服务]] | 223B | | -| [[SQL SERVER 游标使用]] | 2KB | | -| [[SQLSERVER 数据库恢复挂起的解决办法]] | 362B | | -| [[SQLSERVER存储过程基本语法]] | 6KB | | -| [[三峡数据变形值直接导出]] | 552B | | -| [[关系型数据库遵循ACID规则]] | 1KB | | -| [[内蒙古数据FTP推送脚本快速获取]] | 440B | | -| [[单个HiMonitor 站点数据]] | 873B | | -| [[去重]] | 229B | | -| [[合肥董铺水库中间数据]] | 2KB | | -| [[回补中间一段时间的GNSS数据]] | 1KB | | -| [[循环批量删除数据库表]] | 814B | | -| [[循环造固定数据值脚本]] | 744B | | -| [[循环遍历插数据]] | 591B | | -| [[批量创建app 表索引]] | 820B | | -| [[批量删除表]] | 458B | | -| [[批量删除超前数据脚本]] | 903B | | -| [[批量删除超前数据脚本(监测云)]] | 1KB | | -| [[批量增加非聚集索引]] | 1KB | | -| [[按日分组求均值]] | 221B | | -| [[新增站点基准信息增加]] | 547B | | -| [[无日志文件附加数据库失败解决]] | 1KB | | -| [[松滋 2号店循环造rtk]] | 1KB | | -| [[模拟一段数据]] | 1KB | | -| [[解除数据库占用连接]] | 491B | | -| [[运行中数据库收缩脚本]] | 743B | | -| [[链接服务器远程查询]] | 1B | | -| [[附加数据库]] | 105B | | - ---- -*共 36 个文件* diff --git a/实践积累/个人知识库_数据库_MariaDB_Centos7安装mariadb,支持远程访问.md b/实践积累/个人知识库_数据库_MariaDB_Centos7安装mariadb,支持远程访问.md deleted file mode 100755 index 47a9fd8..0000000 --- a/实践积累/个人知识库_数据库_MariaDB_Centos7安装mariadb,支持远程访问.md +++ /dev/null @@ -1,25 +0,0 @@ -1、安装MariaDB:yum -y install mariadb mariadb-server -2、设置开机启动:systemctl enable mariadb -3、启动MariaDB:systemctl start mariadb -4、初始化配置:mysql_secure_installation - 4.1、设置密码,会提示先输入密码 -Enter current password for root (enter for none):<–初次运行直接回车 -Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车 - New password: <– 设置root用户的密码 - Re-enter new password: <– 再输入一次你设置的密码 - 4.2、其他配置 -Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车 -Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车, -Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车 -Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车 -初始化MariaDB完成,接下来测试登录 -mysql -uroot -p你的密码 -完成。 -==5、设置远程登录:== - ==使用mysql -uroot -p密码登录后,执行命令:== - ==GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码的明文' WITH GRANT OPTION;== - ==FLUSH PRIVILEGES;== -==6、如果远程访问,并且数据量很大,则需要进行如下配置,否则会出现==**MySQL server has gone away** ==的== - ==错误 :== - ==set global max_allowed_packet=1024*1024*16;== - > 来自 <[https://blog.csdn.net/lianshaohua/article/details/88380898](https://blog.csdn.net/lianshaohua/article/details/88380898)> \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_PostgreSQL_Pg12_安装过程.md b/实践积累/个人知识库_数据库_PostgreSQL_Pg12_安装过程.md deleted file mode 100755 index 87161bb..0000000 --- a/实践积累/个人知识库_数据库_PostgreSQL_Pg12_安装过程.md +++ /dev/null @@ -1,18 +0,0 @@ -1. ==Install the repository RPM:========yum install== ==https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm== -2. ==Install the client packages:========yum install postgresql12== -3. ==Optionally install the server packages:========yum install postgresql12-server== -4. ==Optionally initialize the database and enable automatic start:========/usr/pgsql-12/bin/postgresql-12-setup initdb========systemctl enable postgresql-12========systemctl start postgresql-12== > 来自 <[https://www.postgresql.org/download/linux/redhat/](https://www.postgresql.org/download/linux/redhat/)> -[Service] -Type=notify - -User=postgres -Group=postgres - -# Note: avoid inserting whitespace in these Environment= lines, or you may -# break postgresql-setup. - -# Location of database directory -Environment=PGDATA=/var/lib/pgsql/12/data/ - -初始化之后,数据文件会存在 /var/lib/pgsql/12/data - > 来自 <[https://www.postgresql.org/download/linux/redhat/](https://www.postgresql.org/download/linux/redhat/)> \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_PostgreSQL_Postgresql_帐号密码修改方法.md b/实践积累/个人知识库_数据库_PostgreSQL_Postgresql_帐号密码修改方法.md deleted file mode 100755 index d844689..0000000 --- a/实践积累/个人知识库_数据库_PostgreSQL_Postgresql_帐号密码修改方法.md +++ /dev/null @@ -1,4 +0,0 @@ -==#su postgres== ======-bash-3.2$psql - postgres== ======postgres=#alter user postgres with password 'new password';== ==////====一定要加分号执行========postgres=#\q== - -su - postgres -psql -U postgresalter user postgres with encrypted password '1'; \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_PostgreSQL_pg_hba.conf.md b/实践积累/个人知识库_数据库_PostgreSQL_pg_hba.conf.md deleted file mode 100755 index d4309f4..0000000 --- a/实践积累/个人知识库_数据库_PostgreSQL_pg_hba.conf.md +++ /dev/null @@ -1,11 +0,0 @@ -METHOD指定如何处理客户端的认证。常用的有ident,md5,password,trust,reject -ident是Linux下PostgreSQL默认的local认证方式,凡是能正确登录服务器的操作系统用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码登录数据库。用户映射文件为pg_ident.conf,这个文件记录着与操作系统用户匹配的数据库用户,如果某操作系统用户在本文件中没有映射用户,则默认的映射数据库用户与操作系统用户同名。比如,服务器上有名为user1的操作系统用户,同时数据库上也有同名的数据库用户,user1登录操作系统后可以直接输入psql,以user1数据库用户身份登录数据库且不需密码。很多初学者都会遇到psql -U username登录数据库却出现“username ident 认证失败”的错误,明明数据库用户已经createuser。原因就在于此,使用了ident认证方式,却没有同名的操作系统用户或没有相应的映射用户。解决方案:1、在pg_ident.conf中添加映射用户;2、改变认证方式。 -md5是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户。 -password是以明文密码传送给数据库,建议不要在生产环境中使用。 -trust是只要知道数据库用户名就不需要密码或ident就能登录,建议不要在生产环境中使用。 -reject是拒绝认证。 -在文件查找 listen_addresses,他的值说明 -如果希望只能从本地计算机访问PostgreSQL数据库,就将该项设置为'localhost'; -如果希望从局域网访问PostgreSQL数据库,就将该项设置为PostgreSQL数据库的局域网IP地址; -如果希望从互联网访问PostgreSQL数据库,就将该项设置为PostgreSQL数据库的互联网IP地址; -如果希望从任何地方都可以访问PostgreSQL数据库,就将该配置项设置为“*”; \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_PostgreSQL_postgresql删除还有活动连接的数据库.md b/实践积累/个人知识库_数据库_PostgreSQL_postgresql删除还有活动连接的数据库.md deleted file mode 100755 index 2ec06b6..0000000 --- a/实践积累/个人知识库_数据库_PostgreSQL_postgresql删除还有活动连接的数据库.md +++ /dev/null @@ -1,7 +0,0 @@ -```sql -select `pg_terminate_backend(pid)` from `pg_stat_activity` where `datname`='testdb' and `pid`<>`pg_backend_pid();` -``` -==上面sql表示的是关闭数据库testdb的活动连接,接下来就可以用== -```sql -drop database `testdb;` -``` \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_PostgreSQL_systemctl_start_postgresql-12.service_____--_启动服务.md b/实践积累/个人知识库_数据库_PostgreSQL_systemctl_start_postgresql-12.service_____--_启动服务.md deleted file mode 100755 index 7aff084..0000000 --- a/实践积累/个人知识库_数据库_PostgreSQL_systemctl_start_postgresql-12.service_____--_启动服务.md +++ /dev/null @@ -1 +0,0 @@ -systemctl start postgresql-12.service // 启动服务systemctl stop postgresql-12.service // 关闭服务systemctl restart postgresql-12.service // 重启服务systemctl status postgresql-12.service // 查看状态 \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_SQLSERVER_数据库恢复挂起的解决办法.md b/实践积累/个人知识库_数据库_SQLSERVER_数据库恢复挂起的解决办法.md deleted file mode 100755 index 29cfea4..0000000 --- a/实践积累/个人知识库_数据库_SQLSERVER_数据库恢复挂起的解决办法.md +++ /dev/null @@ -1,17 +0,0 @@ -如果你的数据库还处于挂起状态,请把我下面代码的test改为你的库名,然后执行完,刷新就正常了: -USE master -GO -```sql -ALTER DATABASE test SET SINGLE_USER -GO -ALTER DATABASE test SET EMERGENCY -GO -``` -DBCC CHECKDB(test,REPAIR_ALLOW_DATA_LOSS) -go -```sql -ALTER DATABASE test SET ONLINE -GO -ALTER DATABASE test SET MULTI_USER -GO -``` \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_SQLSERVER存储过程基本语法.md b/实践积累/个人知识库_数据库_SQLSERVER存储过程基本语法.md deleted file mode 100755 index f2376ec..0000000 --- a/实践积累/个人知识库_数据库_SQLSERVER存储过程基本语法.md +++ /dev/null @@ -1,311 +0,0 @@ -一、定义变量 ---简单赋值 -```sql -declare @a int -set @a=5 -print @a --使用select语句赋值 -declare @user1 nvarchar(50) -select @user1='张三' -print @user1 -declare @user2 nvarchar(50) -select @user2 = Name from ST_User where ID=1 -print @user2 --使用update语句赋值 -declare @user3 nvarchar(50) -update ST_User set @user3 = Name where ID=1 -print @user3 - -``` -二、表、临时表、表变量 - ---创建临时表1 -```sql -create table #DU_User1 -``` -( -[ID] [int] NOT NULL, -[Oid] [int] NOT NULL, -[Login] [nvarchar](50) NOT NULL, -[Rtx] [nvarchar](4) NOT NULL, -[Name] [nvarchar](5) NOT NULL, -[Password] [nvarchar](max) NULL, -[State] [nvarchar](8) NOT NULL -); ---向临时表1插入一条记录 -```sql -insert into #DU_User1 (ID,Oid,[Login],Rtx,Name,[Password],State) values (100,2,'LS','0000','临时','321','特殊'); --从ST_User查询数据,填充至新生成的临时表 -select * into #DU_User2 from ST_User where ID<8 --查询并联合两临时表 -select * from #DU_User2 where ID<3 union select * from #DU_User1 --删除两临时表 -drop table #DU_User1 -drop table #DU_User2 --创建临时表 -CREATE TABLE #t -``` -( -[ID] [int] NOT NULL, -[Oid] [int] NOT NULL, -[Login] [nvarchar](50) NOT NULL, -[Rtx] [nvarchar](4) NOT NULL, -[Name] [nvarchar](5) NOT NULL, -[Password] [nvarchar](max) NULL, -[State] [nvarchar](8) NOT NULL, -) --将查询结果集(多条数据)插入临时表 -```sql -insert into #t select * from ST_User -``` ---不能这样插入 ---select * into #t from dbo.ST_User --添加一列,为int型自增长子段 -```sql -alter table #t add [myid] int NOT NULL IDENTITY(1,1) -``` ---添加一列,默认填充全球唯一标识 -```sql -alter table #t add [myid1] uniqueidentifier NOT NULL default(newid()) select * from #t -drop table #t -``` ---给查询结果集增加自增长列 --无主键时: -```sql -select IDENTITY(int,1,1)as ID, Name,[Login],[Password] into #t from ST_User -select * from #t --有主键时: -select (select SUM(1) from ST_User where ID<= a.ID) as myID,* from ST_User a order by myID -``` ---定义表变量 -```sql -declare @t table -``` -( -id int not null, -msg nvarchar(50) null -) -```sql -insert into @t values(1,'1') -insert into @t values(2,'2') -select * from @t -``` -三、循环 - ---while循环计算1到100的和 -```sql -declare @a int -declare @sum int -set @a=1 -set @sum=0 -while @a<=100 -``` -begin -```sql -set @sum+=@a -set @a+=1 -``` -end -print @sum -四、条件语句 - ---if,else条件分支 -if(1+1=2) -begin -print '对' -end -else -begin -print '错' -```sql -end --when then条件分支 -declare @today int -declare @week nvarchar(3) -set @today=3 -set @week=case -``` -when @today=1 then '星期一' -when @today=2 then '星期二' -when @today=3 then '星期三' -when @today=4 then '星期四' -when @today=5 then '星期五' -when @today=6 then '星期六' -when @today=7 then '星期日' -else '值错误' -end -```sql -print @week - -``` -五、游标 - -```sql -declare @ID int -declare @Oid int -declare @Login varchar(50) --定义一个游标 -declare user_cur cursor for select ID,Oid,[Login] from ST_User -``` ---打开游标 -```sql -open user_cur -while @@fetch_status=0 -``` -begin ---读取游标 -```sql -fetch next from user_cur into @ID,@Oid,@Login -print @ID -``` ---print @Login -end -close user_cur ---摧毁游标 -deallocate user_cur -六、触发器 - - 触发器中的临时表: - - Inserted - 存放进行insert和update 操作后的数据 - Deleted - 存放进行delete 和update操作前的数据 - ---创建触发器 -```sql -Create trigger User_OnUpdate -``` -On ST_User -for Update -As -```sql -declare @msg nvarchar(50) -``` ---@msg记录修改情况 -```sql -select @msg = N'姓名从“' + Deleted.Name + N'”修改为“' + Inserted.Name + '”' from Inserted,Deleted -``` ---插入日志表 -```sql -insert into [LOG](MSG)values(@msg) --删除触发器 -drop trigger User_OnUpdate -``` -七、存储过程 - ---创建带output参数的存储过程 -```sql -CREATE PROCEDURE PR_Sum -``` -@a int, -@b int, -@sum int output -AS -BEGIN -```sql -set @sum=@a+@b -END --创建Return返回值存储过程 -CREATE PROCEDURE PR_Sum2 -``` -@a int, -@b int -AS -BEGIN -Return @a+@b -```sql -END --执行存储过程获取output型返回值 -declare @mysum int -execute PR_Sum 1,2,@mysum output -print @mysum --执行存储过程获取Return型返回值 -declare @mysum2 int -execute @mysum2= PR_Sum2 1,2 -print @mysum2 -``` -八、自定义函数 - - 函数的分类: - - 1)标量值函数 - - 2)表值函数 - - a:内联表值函数 - - b:多语句表值函数 - - 3)系统函数 - ---新建标量值函数 -```sql -create function FUNC_Sum1 -``` -( -@a int, -@b int -) -returns int -as -begin -return @a+@b -```sql -end --新建内联表值函数 -create function FUNC_UserTab_1 -``` -( -@myId int -) -returns table -as -return (select * from ST_User where ID<@myId) --新建多语句表值函数 -```sql -create function FUNC_UserTab_2 -``` -( -@myId int -) -returns @t table -( -[ID] [int] NOT NULL, -[Oid] [int] NOT NULL, -[Login] [nvarchar](50) NOT NULL, -[Rtx] [nvarchar](4) NOT NULL, -[Name] [nvarchar](5) NOT NULL, -[Password] [nvarchar](max) NULL, -[State] [nvarchar](8) NOT NULL -) -as -begin -```sql -insert into @t select * from ST_User where ID<@myId -``` -return -```sql -end --调用表值函数 -select * from dbo.FUNC_UserTab_1(15) -``` ---调用标量值函数 -```sql -declare @s int -set @s=dbo.FUNC_Sum1(100,50) -print @s --删除标量值函数 -drop function FUNC_Sum1 -``` -谈谈自定义函数与存储过程的区别: - -一、自定义函数: - - 1. 可以返回表变量 - - 2. 限制颇多,包括 - - 不能使用output参数; - - 不能用临时表; - - 函数内部的操作不能影响到外部环境; - - 不能通过select返回结果集; - - 不能update,delete,数据库表; - - 3. 必须return 一个标量值或表变量 - - 自定义函数一般用在复用度高,功能简单单一,争对性强的地方。 - -二、存储过程 - - 1. 不能返回表变量 - - 2. 限制少,可以执行对数据库表的操作,可以返回数据集 - - 3. 可以return一个标量值,也可以省略return - - 存储过程一般用在实现复杂的功能,数据操纵方面。 \ No newline at end of file diff --git a/实践积累/个人知识库_数据库_SQL_SERVER_游标使用.md b/实践积累/个人知识库_数据库_SQL_SERVER_游标使用.md deleted file mode 100755 index 15da4bd..0000000 --- a/实践积累/个人知识库_数据库_SQL_SERVER_游标使用.md +++ /dev/null @@ -1,72 +0,0 @@ -我们在处理数据的时候,经常会出现需要循环处理数据的需求,如果我们能用CTE或者其他语句处理的话,没有问题,但有时候往往处理起来比较困难,这时候我们可以选择使用游标处理,选择使用哪种形式,要考虑效率问题,一般游标效率不高,但也有适合使用的场景。 - - 游标分为静态游标和动态游标,静态游标的数据是固定的,不会因为数据表的改变而改变;动态游标的数据是随着数据表变化而变化的,游标默认是动态游标,通过关键字STATIC设置,OK,上测试数据: - ---测试数据 -```sql -if not object_id(N'Tempdb..#T') is null -drop table #T -Go -Create table #T([id] int,[name] nvarchar(22)) -Insert #T -select 1,N'张三' union all -select 2,N'李四' union all -select 3,N'王五' union all -select 4,N'赵六' -Go -``` ---测试数据结束 - 我们先看静态游标的使用方法: - -```sql -DECLARE @id INT , @name NVARCHAR(50) --声明变量,需要读取的数据 -DECLARE cur CURSOR STATIC --声明静态游标 -``` -FOR -```sql -SELECT * FROM #T -OPEN cur --打开游标 -FETCH NEXT FROM cur INTO @id, @name --取数据 -WHILE ( @@fetch_status = 0 ) --判断是否还有数据 -``` -BEGIN -```sql -SELECT '数据: ' + RTRIM(@id) + @name -UPDATE #T SET name='测试' WHERE id=4 --测试静态动态用 -FETCH NEXT FROM cur INTO @id, @name --这里一定要写取下一条数据 -``` -END -CLOSE cur --关闭游标 -DEALLOCATE cur - 结果如下,我们可以看到ID是4的数据没有改变,依然是赵六,而不是UPDATE之后的测试: - - 我们再来看一下,动态游标,去掉STATIC关键字即可: - -```sql -DECLARE @id INT , @name NVARCHAR(50) --声明变量,需要读取的数据 -DECLARE cur CURSOR --去掉STATIC关键字即可 -``` -FOR -```sql -SELECT * FROM #T -OPEN cur --打开游标 -FETCH NEXT FROM cur INTO @id, @name --取数据 -WHILE ( @@fetch_status = 0 ) --判断是否还有数据 -``` -BEGIN -```sql -SELECT '数据: ' + RTRIM(@id) + @name -UPDATE #T SET name='测试' WHERE id=4 --测试静态动态用 -FETCH NEXT FROM cur INTO @id, @name --这里一定要写取下一条数据 -``` -END -CLOSE cur --关闭游标 -DEALLOCATE cur - 我们看结果,可以看到ID为4的数据已经更改为测试: - - 以上是游标的用法,以及动态、静态游标的介绍使用。 ---------------------- -作者:二月十六 -来源:CSDN -原文:https://blog.csdn.net/sinat_28984567/article/details/79811887 -版权声明:本文为博主原创文章,转载请附上博文链接! \ No newline at end of file diff --git a/实践积累/工具技能/Docker Clash教程.md b/实践积累/工具技能/Docker Clash教程.md index 6bdb663..f150e4b 100755 --- a/实践积累/工具技能/Docker Clash教程.md +++ b/实践积累/工具技能/Docker Clash教程.md @@ -1,7 +1,160 @@ - - -The requested URL was not found on this server.
- +--- +title: Docker一键部署Clash Meta (mihomo) + metacubexd面板教程 +date: 2026-01-13 +tags: + - Linux系统Docker + - Docker + - Clash + - mihomo + - metacubexd + - 代理 + - 网络 +source: https://www.cloud-guest.top/archives/gS23mQ65 +--- + +# Docker 一键部署 Clash Meta (mihomo) + metacubexd 面板教程(2026 年最新版) + +**目标:** 使用最新 MetaCubeX/mihomo 内核 + 官方 metacubexd Web 面板,实现稳定、高性能的代理服务 + +**适用环境:** Linux 服务器 / NAS(推荐 Ubuntu/Debian),已安装 Docker + Docker Compose + +**核心特点:** +- 使用 `network_mode: host`(TUN/透明代理最稳) +- 容器别名统一为 `clash`(核心)+ `dashboard`(面板),操作更友好 +- 提前处理 Country.mmdb 避免经典报错 + +## 1. 准备工作 + +安装 Docker & Docker Compose(如果未安装,一键执行): + +```bash +# Ubuntu/Debian 推荐方式(2026 年最新) +curl -fsSL https://get.docker.com | sudo sh +sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +sudo chmod +x /usr/local/bin/docker-compose +sudo usermod -aG docker $USER +``` + +创建项目目录: + +```bash +mkdir -p ~/mihomo && cd ~/mihomo +``` + +## 2. 提前下载 GeoIP 数据库(必须!避免 not a directory 错误) + +mihomo 需要 Country.mmdb(文件,不是文件夹) + +```bash +mkdir -p config +cd config + +# 轻量版 country-lite.mmdb(体积小 ≈1-2MB) +curl -L https://github.com/MetaCubeX/meta-rules-dat/releases/latest/download/country-lite.mmdb \ + -o Country.mmdb +``` + +**关键:** 启动前这个路径必须存在文件,否则 Docker 会自动创建成目录导致启动失败。 + +## 3. docker-compose.yml(完整配置) + +```yaml +version: '3.8' + +services: + clash: + container_name: clash + image: metacubex/mihomo:Alpha + restart: unless-stopped + network_mode: host + pid: host + ipc: host + cap_add: + - ALL + volumes: + - ./config:/root/.config/mihomo + - /dev/net/tun:/dev/net/tun + - /etc/localtime:/etc/localtime:ro + + dashboard: + container_name: dashboard + image: ghcr.io/metacubex/metacubexd:latest + restart: unless-stopped + network_mode: host +``` + +## 4. 准备 mihomo 主配置文件 config.yaml + +```yaml +# 基本端口与访问 +mixed-port: 7890 +allow-lan: true +external-controller: 0.0.0.0:9090 +secret: "" + +mode: rule +log-level: info +geodata-mode: false +geo-auto-update: true +geo-update-interval: 24 + +proxy-providers: + my-sub: + type: http + url: "https://你的机场订阅链接" + path: ./subscriptions/my-sub.yaml + interval: 86400 + health-check: + enable: true + url: "https://www.gstatic.com/generate_204" + interval: 300 + +proxy-groups: + - name: "自动选择" + type: url-test + include-all: true + url: "http://www.gstatic.com/generate_204" + interval: 300 + +rules: + - MATCH,自动选择 +``` + +## 5. 启动与常用命令 + +```bash +# 首次启动 +docker compose up -d + +# 查看核心日志 +docker compose logs -f clash + +# 重启核心 +docker compose restart clash + +# 更新镜像并重启 +docker compose pull && docker compose up -d + +# 停止+删除容器 +docker compose down +``` + +## 6. 访问方式 + +- **Web 面板:** http://你的服务器IP(host模式默认80端口) +- **连接后端:** http://127.0.0.1:9090 +- **代理端口:** HTTP/SOCKS5混合端口 7890 + +## 7. 常见问题 + +| 问题 | 解决方案 | +|------|---------| +| not a directory | Country.mmdb必须是文件,步骤2已解决 | +| 面板连不上 | 确认external-controller是0.0.0.0:9090 | +| TUN不工作 | 必须host模式 + /dev/net/tun挂载 | + +## 8. 推荐资源 + +- mihomo仓库:https://github.com/MetaCubeX/mihomo +- metacubexd面板:https://github.com/MetaCubeX/metacubexd +- 官方文档:https://wiki.metacubex.one/ diff --git a/实践积累/工具技能/MeNav导航站.md b/实践积累/工具技能/MeNav导航站.md index 6bdb663..c6a73e6 100755 --- a/实践积累/工具技能/MeNav导航站.md +++ b/实践积累/工具技能/MeNav导航站.md @@ -1,7 +1,86 @@ - - -The requested URL was not found on this server.
- +--- +title: MeNav 个人导航站生成器 +tags: + - 开源 + - 导航站 + - 静态网站 + - GitHubPages + - 书签管理 +created: 2026-04-21 +source: https://github.com/rbetree/menav +stars: 256 +forks: 167 +language: JavaScript +--- + +# MeNav + +> 一键部署的个人导航站生成器,支持书签导入与自动构建 + +## 概述 + +轻量级、高度可定制的个人导航网站生成器,完全静态部署,无需数据库和后端服务。 + +### 核心功能 + +- 🔖 浏览器书签一键导入(HTML → YAML) +- 🚀 GitHub Pages 一键部署(Fork + Actions) +- 🔄 MarksVault 扩展集成,自动同步书签 +- 🎨 明亮 / 黑暗双主题,响应式布局 +- 🐳 Docker 部署支持 +- 📁 2-4 层多层级嵌套分类结构 + +**预览**: https://rbetree.github.io/menav/ + +## 技术栈 + +- HTML5 + CSS3 + JavaScript(原生) +- Handlebars 模板引擎 +- Google Favicon API + Font Awesome 图标 + +## 安装使用 + +```bash +git clone https://github.com/rbetree/menav.git +cd menav +npm install +npm run dev # 本地预览 +npm run build # 构建静态文件 +``` + +## 书签导入 + +```bash +npm run import-bookmarks +# 放入 HTML 格式书签 → 自动转换为 config/user/pages/bookmarks.yml +``` + +## 部署方式 + +| 方式 | 说明 | +|------|------| +| **GitHub Pages(推荐)** | Fork → 启用 Actions → 提交配置 → 自动部署 | +| **Vercel / Netlify / Cloudflare Pages** | Build: `npm run build` / Output: `dist/` | +| **Docker** | `docker compose up -d` | +| **自建服务器** | `npm run build` → 复制 `dist/` → nginx/Apache | + +## 定时更新 + +- RSS 文章聚合自动刷新 +- GitHub Actions 默认每天 UTC 02:00 触发 + +## 评分 + +⭐⭐⭐⭐(4/5) + +**优点**: +- 零成本部署(GitHub Pages) +- 书签导入 + 自动同步,工作流完整 +- 主题美观,响应式设计 +- 模块化配置,易于定制 + +**局限**: +- 需要 GitHub 生态(书签同步依赖 Actions) +- 书签导入格式有要求 + +**适合场景**:个人主页、浏览器起始页、书签整理 diff --git a/实践积累/工具技能/code-reviewer技能.md b/实践积累/工具技能/code-reviewer技能.md index 6bdb663..07a3958 100755 --- a/实践积累/工具技能/code-reviewer技能.md +++ b/实践积累/工具技能/code-reviewer技能.md @@ -1,7 +1,242 @@ - - -The requested URL was not found on this server.
- +--- +title: Code Reviewer 代码审查专家技能 +tags: + - AI-Skill + - Code-Review + - TDD + - Java + - Security +created: 2026-04-12 +source: 用户分享的SKILL文件 +--- + +# Code Reviewer 代码审查专家 + +> 经验丰富的代码审查者,遵循业界最佳实践,提供专业的代码评估和改进建议。 + +## 审查重点 + +| 维度 | 内容 | +| -------- | ---------------------- | +| **代码质量** | 命名规范、代码复杂度、重复代码 | +| **安全性** | SQL 注入风险、XSS 漏洞、认证授权问题 | +| **性能** | 算法效率、资源使用、缓存策略 | +| **可维护性** | 代码注释、模块化设计、测试覆盖 | + +## 审查流程 + +1. 理解代码变更的目的 +2. 检查代码风格和规范 +3. 分析潜在的 Bug 和性能问题 +4. 验证安全性 +5. 提供建设性的改进建议 + +--- + +## 问题报告规范 + +每个问题必须包含以下**精确位置信息**: + +| 字段 | 说明 | 示例 | +|------|------|------| +| 文件路径 | 相对于项目根目录的完整路径 | `com/example/UserServiceImpl.java` | +| 行号范围 | 问题代码的起止行号 | `L45-L52` 或 `L45` | +| 类名 | 问题所在的类名 | `UserServiceImpl` | +| 方法名 | 问题所在的方法签名 | `getUserById(Long userId)` | +| 代码片段 | 有问题的具体代码(前后各 2-3 行上下文) | 见示例 | + +### 问题输出格式 + +``` +🔴 [严重] SQL注入风险 +📁 文件: com/example/UserServiceImpl.java +📍 位置: L45-L48 | 类: UserServiceImpl | 方法: findByUsername(String) + +🔗 代码上下文: + 44 | public User findByUsername(String username) { + 45 | String sql = "SELECT * FROM user WHERE username = '" + username + "'"; + 46 | return jdbcTemplate.queryForObject(sql, userMapper); + 47 | } + +💡 问题说明: 直接拼接用户输入到SQL语句中,存在SQL注入风险 + +✅ 修复建议: + String sql = "SELECT * FROM user WHERE username = ?"; + return jdbcTemplate.queryForObject(sql, userMapper, username); +``` + +### 严重程度分级 + +| 级别 | 含义 | +|------|------| +| 🔴 严重 | 需要立即修复的问题 | +| 🟡 中等 | 建议修复的问题 | +| 🟢 轻微 | 可选的改进建议 | + +--- + +## 输出格式 + +### 文本报告 + +``` +✅ 优点:列出做得好的地方 + +⚠️ 问题: + [级别] 问题标题 + 📁 文件: 完整文件路径 + 📍 位置: L行号 | 类: 类名 | 方法: 方法签名 + 🔗 代码上下文: (带行号的代码片段) + 💡 问题说明: 详细描述 + ✅ 修复建议: 具体的修复方案或示例代码 + +📊 总体评分:1-10 分 +``` + +### HTML 报告(自动生成) + +当用户要求审查代码时,**自动生成 HTML 报告**: + +- 文件名格式:`code-review-report-{timestamp}.html` +- 保存到工作区根目录 +- 包含评分圆环、四维评分卡片、问题详情卡片 +- 代码上下文:IDE 风格行号 + 问题行高亮 + +--- + +## 典型问题示例 + +### 1. SQL 注入(🔴 严重) + +``` +📁 文件: UserServiceImpl.java +📍 位置: L45-L48 | 类: UserServiceImpl | 方法: findByUsername(String) + +🔗 代码上下文: +→ 45 | String sql = "SELECT * FROM sys_user WHERE user_name = '" + username + "'"; +→ 46 | return jdbcTemplate.queryForObject(sql, userMapper); + +✅ 修复建议: 使用参数化查询 + String sql = "SELECT * FROM sys_user WHERE user_name = ?"; + return jdbcTemplate.queryForObject(sql, userMapper, username); +``` + +### 2. 循环内重复查询(🟡 中等) + +``` +📍 位置: L112-L118 | 类: TaskServiceImpl | 方法: batchProcess(ListThe requested URL was not found on this server.
- +--- +title: fireworks-tech-graph 技术图生成工具 +tags: + - AI工具 + - 技术图 + - SVG + - ClaudeCode-Skill + - 开源 +created: 2026-04-21 +source: https://github.com/yizhiyanhua-ai/fireworks-tech-graph +stars: 3862 +forks: 338 +language: Python +--- + +# fireworks-tech-graph + +> 不用手画图了。用中文描述你的系统,几秒钟得到可直接发布的 **SVG + PNG** 技术图。 + +## 概述 + +将自然语言描述转化为精美的 SVG 技术图,并通过 `rsvg-convert` 导出高分辨率 PNG。内置 **7 种视觉风格**,深度覆盖 AI/Agent 领域常见图类型,并完整支持全部 14 种 UML 图类型。 + +## 7 种视觉风格 + +| # | 名称 | 背景色 | 字体 | 适用场景 | +|---|------|--------|------|----------| +| 1 | 扁平图标风(默认) | `#ffffff` | Helvetica | 博客、幻灯片、技术文档 | +| 2 | 暗黑极客风 | `#0f0f1a` | SF Mono / Fira Code | GitHub README、开发者文章 | +| 3 | 工程蓝图风 | `#0a1628` | Courier New | 架构设计文档、工程规范 | +| 4 | Notion 极简风 | `#ffffff` | system-ui | Notion、Confluence、内部 Wiki | +| 5 | 玻璃态卡片风 | `#0d1117` 渐变 | Inter | 产品官网、演讲 Keynote | +| 6 | Claude 官方风格 | `#f8f6f3` | system-ui | Anthropic 风格图表 | +| 7 | OpenAI 官方风格 | `#ffffff` | system-ui | OpenAI 风格图表 | + +## 支持的图类型 + +### AI/Agent 领域(内置 Pattern) + +| 类型 | 流程 | +|------|------| +| RAG Pipeline | Query → Embed → VectorSearch → Retrieve → LLM → Response | +| Agentic RAG | RAG + Agent 循环 + 工具调用 | +| Agentic Search | Query → Planner → [Search/Calc/Code] → Synthesizer | +| Mem0 记忆层 | Input → Memory Manager → [VectorDB + GraphDB] → Context | +| Multi-Agent | Orchestrator → [SubAgent×N] → Aggregator → Output | +| Tool Call 流程 | LLM → Tool Selector → Execution → Parser → LLM(循环) | + +### UML 支持(14 种) + +类图、组件图、部署图、包图、复合结构图、对象图、用例图、活动图、状态机图、序列图、通信图、时序图、交互概览图、ER 图 + +## 形状词汇表 + +| 概念 | 形状 | +|------|------| +| 用户 / 人类 | 圆形 + 身体路径 | +| LLM / 模型 | 圆角矩形,双边框,⚡ | +| Agent / 编排器 | 六边形 | +| 短期记忆 | 虚线边框圆角矩形 | +| 长期记忆 | 实线圆柱体 | +| Vector Store | 带内环圆柱 | +| Graph DB | 三圆簇 | +| 工具 / 函数 | 带 ⚙ 的矩形 | +| API / 网关 | 六边形(单边框) | +| 消息队列 / 流 | 横向管道 | +| 决策节点 | 菱形 | + +## 箭头语义 + +| 流类型 | 样式 | 含义 | +|--------|------|------| +| 主数据流 | 2px 实线 | 主要请求/响应路径 | +| 控制 / 触发 | 1.5px 实线 | 系统 A 触发 B | +| 记忆读取 | 1.5px 实线 | 从存储检索 | +| 记忆写入 | 1.5px 虚线 `5,3` | 写入/存储操作 | +| 异步 / 事件 | 1.5px 虚线 `4,2` | 非阻塞 | +| 反馈 / 循环 | 1.5px 曲线 | 迭代推理 | + +## 安装 + +```bash +npx skills add yizhiyanhua-ai/fireworks-tech-graph + +# 依赖 +brew install librsvg # macOS +sudo apt install librsvg2-bin # Ubuntu/Debian +``` + +## 使用方式 + +触发词:`画图 / 帮我画 / 生成图 / 做个图 / 架构图 / 流程图` + +```text +画一张 RAG 流程图 +生成一张 Agentic Search 架构图 +画一张微服务架构图,风格2(暗黑极客风) +``` + +## 评分 + +⭐⭐⭐⭐⭐(5/5) + +**优点**: +- 7 种风格覆盖所有场景 +- 内置 AI/Agent 领域知识,开箱即用 +- 语义形状 + 箭头系统,图示专业 +- 中文支持友好 + +**局限**: +- 需要 Claude Code 或兼容 Skill 运行时 +- 依赖 rsvg-convert 工具 + +**适合场景**:技术博客配图、架构文档、PPT 素材、GitHub README