Windows 上安装配置 OpenCode CLI + Oh-My-OpenCode 入门指南 1. 介绍 OpenCode CLI - 开源的 AI 编程助手命令行工具,类似 Cursor/Claude Code,但完全免费开源,支持多模型切换。 Oh-My-OpenCode - OpenCode 的增强插件,提供更智能的代理系统(Sisyphus 等),自动任务 orchestration,内置工具集。 总而言之,装了这个组合,就有了一个免费的 AI 编程团队。 2. 安装步骤(Windows) 1. 前置要求 Windows 10/11 Node.js 18+(已安装 npm) 网络能访问 GitHub 2. 安装 OpenCode CLI 12345678# 用 npm 全局安装npm i -g opencode-ai# 或用 curl 一键安装curl -fsSL https://opencode.ai/install | bash# 验证安装opencode --version 3. 安装 Oh-My-OpenCode 插件 12345# 全局安装最新稳定版npm i ...
MySQL
未读MySQL 视图 1. 视图是什么 视图就是 虚拟表,本身不存数据,它只是把一条或多条 SQL 查询封装起来,同真实的表一样包含一系列带有名称的列和行数据,用它就像操作表一样,简单理解:视图就是个存好的 SELECT 语句。 举个例子:有个员工表 employees,只想经常查销售部的人,可以建个视图 sales_staff: 1CREATE VIEW sales_staff AS SELECT id, name, department FROM employees WHERE department = 'Sales'; 这样一来,查 sales_staff 就只会看到销售部员工。 2. 视图的作用 简化复杂查询: 可以将多表关联、复杂的过滤条件封装成一个视图,用户只需查询视图即可,无需重复编写复杂的 SQL。 安全性: 可以通过视图限制用户访问表中的敏感列(如密码、薪资)或特定行。用户只能看到视图定义中允许的数据,起到了字段级和行级的权限控制作用。 逻辑独立性: 如果应用层直接通过视图获取数据,当底层表结构发生变化时(如字段名修改、表拆分),只需要修改视图定义, ...
MySQL
未读MySQL 事务 1. 什么是事务? 事务就是“要么全做,要么全不做”的一组数据库操作,可以类比以前学过的原子操作。 打个比方:银行转账。假设要给朋友转账 100 块钱,这在数据库里其实分两步走: 自己的账户余额减去 100 元。 朋友的账户余额加上 100 元。 如果没有事务会怎样? 万一第一步执行完了(自己扣了钱),突然停电了、断网了,第二步没执行。结果就是:自己的钱没了,朋友也没收到钱,这 100 块凭空消失了。这肯定不行! 有了事务之后: 我们把这两步打包成一个“事务”。 如果两步都成功,我们就 提交,转账生效。 如果中间出错了,我们就 回滚,数据库自动恢复到转账之前的样子,就像什么都没发生过一样。 事务有四大特性(ACID),我们只需要记住核心两点: 原子性: 像原子一样不可分割。要么全成功,要么全失败回滚。 一致性: 数据库总是从一个一致状态变到另一个一致状态。转账前后,总金额是不变的。 事务四大特性 ACID: A(Atomic)原子性:要么全做,要么全不做。 C(Consistency)一致性:操作前后数据规则不破坏。 I(Isolation)隔离性:多 ...
索引操作 1. 创建主键索引 主键索引就是给表里的某列(或几列组合)加一个“唯一且非空”的标记,给表设置主键,MySQL 底层会自动生成 聚簇索引(数据和索引绑在一起存) 来优化查询和存储,主键就是这行数据的“身份证号”,能保证数据唯一,还能加快查询速度。 主键:一个表只能有一个主键,主键的值必须唯一且不能为 NULL。 主键索引:当定义主键时,MySQL InnoDB 引擎会自动创建一个 聚簇索引,将数据行按照主键值排序存储。这意味着: 通过主键查询数据非常快(直接定位到数据页)。 插入新记录时,会自动按主键顺序存放(如果用自增主键,性能最佳)。 为什么需要显式创建主键? 避免使用 InnoDB 自动生成的隐藏主键(浪费空间,无法利用)。 保证数据唯一性,方便其他表关联。 提升查询性能,尤其是范围查询和排序。 1. 在建表时直接定义(推荐) 1234567891011121314151617181920212223242526272829# 最简单,建表时就定好主键CREATE TABLE users ( id INT PRIMARY KEY, # 直接在这里声明 ...
MySQL
未读MySQL 索引特性 1. 索引的概念 索引就是帮 MySQL 快速查数据 的一种 数据结构,就像书的目录一样,不需要翻整本书,只查目录定位页码直接跳到目标,没有索引就得 全表扫,一条一条比对特征值,慢得很(有索引 → 快,无索引 → 慢)。任何便捷都是有代价的,索引也一样:占用空间 + 增删改变慢。 1. 索引的价值 为了测试索引效果,我们需要先准备一张包含大量数据的表(海量数据),这里创建一个名为 index_test 的数据库,并在其中创建 emp 员工表,插入 800 万条记录。这里的先看效果,SQL 语句后面会讲到。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364# 1. 创建数据库drop database if exists `index_test`;create database if not exists `index_test` default character set ut ...
计算机的颜色表示 1. 计算机为什么用 RGB 表示颜色? 1. 人眼如何感知颜色 计算机中颜色的表示主要基于 人眼感知颜色的方式 以及 硬件显示原理。人眼的视网膜上有三类锥体细胞,分别对三种波长范围最敏感: 对 红色(Red) 敏感 对 绿色(Green) 敏感 对 蓝色(Blue) 敏感 大脑会根据这三种刺激的强弱组合,感知出不同的颜色。这叫做 三色视觉理论。 2. 显示器如何发光 常见的显示器(LCD、LED、OLED)中,每个像素其实都由 三个子像素 组成: 红色子像素(R) 绿色子像素(G) 蓝色子像素(B) 通过控制这三个子像素的亮度,就能混合出各种颜色。 注意:RGB 是 红(Red)+ 绿(Green)+ 蓝(Blue),不是红、黄、蓝,红黄蓝(RYB) 是美术颜料体系,用于绘画。RGB 是发光体系,用于屏幕。 2. RGB 三个参数分别代表什么? 在 RGB 模型中,一个颜色由三个数值表示: 1RGB(R, G, B) R(Red):红色强度 G(Green):绿色强度 B(Blue):蓝色强度 1. 常见取值范围 最常见的是 8 位表示法(24 位真彩色 ...
表的内连和外连 多表查询时,数据怎么凑在一起看,就是连接。 内连接(INNER JOIN) → 只保留匹配上的 外连接(OUTER JOIN) → 保留一边,不管另一边有没有匹配 1. 内连接(INNER JOIN) 只显示 两个表都有匹配的行(交集),没匹配的行丢掉。示例场景:查“下了单的用户”,没下单的不要。 基本语法: 1234SELECT a.列, b.列FROM 表1 aINNER JOIN 表2 b ON a.关联列 = b.关联列; 1234567891011121314151617181920212223242526272829303132# 只有有部门的员工显示,OPERATIONS 部门不出现mysql> select e.ename, d.dname from emp e inner join dept d on e.deptno=d.deptno;+--------+------------+| ename | dname |+--------+------------+| SMITH | RESEARCH || ALLEN ...
灵光荟萃
未读解决代码文件中的乱码问题 你有没有遇到过:代码在 Visual Studio 中完美正常,在 VS Code 一打开却全是乱码?明明都是微软出品,却总在编码上“闹别扭”。别急,这个问题本质上是字符编码不一致,下面来详细说说。 1. 乱码的本质:编码不匹配 Visual Studio 默认保存为 GBK(代码页 936)或系统本地编码。 VS Code 默认以 UTF-8 无 BOM 方式解读文件。 当文件中含有中文或非 ASCII 字符时,VS Code 用 UTF-8 去解析 GBK 编码的文件,自然就乱码了。 2. 解决方案一:手动保存为 UTF-8 带 BOM 在 Visual Studio 中打开文件选择另存为。 点击保存按钮旁的下拉箭头 → “带编码保存”(Save with Encoding)。 选择 Unicode (UTF-8 带签名) - 代码页 65001。 保存。 处理完后,VS Code 打开即正常显示。 3. 解决方案二:设置默认编码(推荐) 什么?你说你用自动保存,每一次都要另存为太麻烦了。没关系,可以: 在 Visual Studio 顶部搜索框 ...
C++ IO 指南 1. 文件流 ifstream / ofstream / fstream(核心) 1. 一句话记住三个类 类名 作用 记忆口诀 ifstream 读文件(input) i = input ofstream 写文件(output) o = output fstream 读 + 写 全能型 工程建议:读写分离优先,用 ifstream + ofstream,可读性更好。 2. 读文件(最常用) 1. 标准写法 12345678910111213141516171819202122232425#include <fstream>#include <iostream>#include <string>int main(){ // 打开输入文件(默认文本模式) std::ifstream ifs("data.txt"); // 工程里第一件事:检查打开是否成功 if (!ifs) { std::cerr << &quo ...
复合查询下 1. 子查询 子查询就是 在一个查询里面套另一个查询,让内层查询先跑,结果再给外层查询用,可以理解成:先算出一个表/值,然后外层再用它做筛选、计算或关联。本质就是一个 SELECT 嵌在另一个 SELECT 里,里面的叫子查询,外面的叫主查询。 1. 单行子查询 子查询的结果只有 1 行 1 列,常用在 =、>、< 等比较操作: 12345678910111213mysql> select ename, sal from emp where sal > (select avg(sal) from emp); # 单行单列+-------+---------+| ename | sal |+-------+---------+| JONES | 2975.00 || BLAKE | 2850.00 || CLARK | 2450.00 || SCOTT | 3000.00 || KING | 5000.00 || FORD | 3000.00 |+-------+---------+ 2. 多行子查询 子查询返回 多行 1 列,用 IN / ...











