Claude Code最佳使用方式~
一位Java/AWS架构师使用Claude Code一个月的最佳实践 —如何让AI真正理解你的代码规范
一、项目上下文管理(CLAUDE. md)
手动完善CLAUDE. md,加入团队特定规范:
Lombok使用约定(如优先用@Data、@Builder)
Google代码风格(2空格缩进)
DDD架构模式说明
自定义异常处理模式
测试规范(Given-When-Then模式、80%覆盖率要求)
效果:让AI从"新手"变成了解团队规范的"初级开发者"
二、文档模块化策略
大型项目避免单一巨型文档,按领域拆分:
CLAUDE_AWS.md:云服务配置规范
CLAUDE_TESTING.md:测试策略和模式
CLAUDE_API.md:REST接口设计规范
使用 /memory 命令动态更新会话上下文
三、灵活切换AI模型
配置方式:环境变量或 ~/.claude/settings.json。
模型选择策略:
Haiku:简单任务(格式化、生成getter/setter),响应快成本低
Sonnet 4:日常开发主力,性能成本平衡
...
Golang
模块一:Golang 核心基础(补齐短板,重中之重)
1. 并发与 Goroutine 调度(必考)
Goroutine vs. Thread:
关键点: 理解 GMP 调度模型(Goroutine, Machine, Processor)。能清晰解释 G, M, P 的角色和它们之间的协作关系,以及这如何带来了 Go 的高调度效率。
面试回答参考:
Goroutine 与线程相比,核心区别在于资源占用和调度方式。
资源占用上,Goroutine 非常轻量。它的栈空间初始只有约 2KB,可以按需伸缩;而线程通常拥有固定的、MB 级别的栈,创建大量线程会迅速耗尽系统资源。
调度方式上,线程由操作系统内核调度,切换时需陷入内核态,成本很高。而 Goroutine 是由 Go 语言的运行时(Runtime)在用户态进行调度,成本极低。
Go 的高效调度主要得益于它的 GMP 模型:
G (Goroutine): 是我们的代码执行单元,包含了要执行的函数和上下文。
M (Machine): 代表操作系统的线程,是真正执行计算的实体。
P (Processor): 是一个 ...
LeetCode 1436. 旅行终点站
原题链接
题目描述
给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i]=[cityAi,cityBi]paths[i] = [cityA_i, cityB_i]paths[i]=[cityAi,cityBi] 表示该线路将会从 cityAicityA_icityAi 直接前往 cityBicityB_icityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市*。*
题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点站。
示例 1:
输入:paths = [["London","New York"],["New York","Lima"],["Lima","Sao Paulo"]]
输出:"Sao Paulo"
解释:从 "London" 出发,最后抵达终点站 "Sao Paulo" 。本次旅行的路线是 "Lon ...
LeetCode 2734. 执行子串操作后的字典序最小字符串
2734. 执行子串操作后的字典序最小字符串 - 力扣(LeetCode)
题目描述
给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为:
选择 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前一个字符。例如,'b' 用 'a' 替换,'a' 用 'z' 替换。
返回执行上述操作 恰好一次 后可以获得的 字典序最小 的字符串。
子字符串 是字符串中的一个连续字符序列。
现有长度相同的两个字符串 x 和 字符串 y ,在满足 x[i] != y[i] 的第一个位置 i 上,如果 x[i] 在字母表中先于 y[i] 出现,则认为字符串 x 比字符串 y 字典序更小 。
示例 1:
输入:s = "cbabc"
输出:"baabc"
解释:我们选择从下标 0 开始、到下标 1 结束的子字符串执行操作。
可以证明最终得到的字符串是字典序最小的。
示例 2:
输入:s = "acbbc"
输出:"abaab"
解释:我们选择从下标 1 开始、 ...
LeetCode 11. 盛最多水的容器
原题链接
题目描述
给定一个长度为 nnn 的整数数组 heightheightheight 。有 nnn 条垂线,第 iii 条线的两个端点是 (i,0)(i, 0)(i,0) 和 (i,height[i])(i, height[i])(i,height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
**说明:**你不能倾斜容器。
示例 1:
输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
示例 2:
输入:height = [1,1]
输出:1
提示:
n==height.lengthn == height.lengthn==height.length
2≤n≤1052 \le n \le 10^52≤n≤105
0≤height[i]≤1040 \le height[i] \le 10^40≤height[i]≤104
双指针
func maxArea(heig ...
Python识别图片上的数学公式
使用的是的:lukas-blecher/LaTeX-OCR: pix2tex: Using a ViT to convert images of equations into LaTeX code. (github.com)
其实很简单
Docker安装并运行
docker pull lukasblecher/pix2tex:api
docker run --rm -p 8502:8502 lukasblecher/pix2tex:api
然后访问http://127.0.0.8502/docs可以查看接口文档。
怎么安装Docker?之前的文章有写。
通过编译源码的方式安装Python
0. 安装依赖
apt install build-essential gdb lcov pkg-config \
libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev \
libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \
lzma lzma-dev tk-dev uuid-dev zlib1g-dev libmpdec-dev
Setup and building (python.org)
注意,如果没有gcc和make,应该手动安装这两个依赖。
1. 下载
Download Python | Python.org
2. 解压
tar -zxvf Python-3.12.3.tgz
解压完成后,进入源码目录。
3. 安装
三步曲:
./configure
./configure --enable-optimizations --with-lto
命令来源:Setup and building ...
Debian换国内源
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
然后apt update更新一下就可以了。
LeetCode 2007. 从双倍数组中还原原数组
原题链接
题目描述
一个整数数组 original 可以转变成一个 双倍 数组 changed ,转变方式为将 original 中每个元素 值乘以 222 加入数组中,然后将所有元素 随机打乱 。
给你一个数组 changed ,如果 change 是 双倍 数组,那么请你返回 original数组,否则请返回空数组。original 的元素可以以 任意 顺序返回。
示例 1:
输入:changed = [1,3,4,2,6,8]
输出:[1,3,4]
解释:一个可能的 original 数组为 [1,3,4] :
- 将 1 乘以 2 ,得到 1 * 2 = 2 。
- 将 3 乘以 2 ,得到 3 * 2 = 6 。
- 将 4 乘以 2 ,得到 4 * 2 = 8 。
其他可能的原数组方案为 [4,3,1] 或者 [3,1,4] 。
示例 2:
输入:changed = [6,3,0,1]
输出:[]
解释:changed 不是一个双倍数组。
示例 3:
输入:changed = [1]
输出:[]
解释:changed 不是一个双倍数组。
提示:
1≤changed.le ...
