Coding

Java开发手册免费版

Try it

Java 开发规约速查手册,覆盖命名、异常、并发、数据库等 7 大维度核心规范。Use when 需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。

What it does

本工具为 Java 开发者提供开发规约的速查能力,覆盖编程规约、异常日志、单元测试、安全规约、数据库规约、工程结构、设计规约共 7 大维度。规约按约束力强弱分为【强制】、【推荐】、【参考】三级,帮助开发者编写规范、可维护的 Java 代码。免费版聚焦个人开发者的规约速查场景,提供简明的速查表与代码示例。

The skill document

功能说明: 本技能涵盖 中文交互、化工作流场景 等核心能力。

Java 开发手册(免费版)

概述

本工具为 Java 开发者提供开发规约的速查能力,覆盖编程规约、异常日志、单元测试、安全规约、数据库规约、工程结构、设计规约共 7 大维度。规约按约束力强弱分为【强制】、【推荐】、【参考】三级,帮助开发者编写规范、可维护的 Java 代码。免费版聚焦个人开发者的规约速查场景,提供简明的速查表与代码示例。

核心能力

维度描述规约数量
编程规约命名、格式、OOP、并发、集合20+ 条
异常日志错误码、异常处理、日志规范10+ 条
单元测试测试用例、覆盖率、Mock8+ 条
安全规约SQL 注入、XSS、CSRF、脱敏8+ 条
数据库规约建表、索引、SQL、ORM15+ 条
工程结构分层架构、依赖管理8+ 条
设计规约UML、设计模式、设计原则6+ 条
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置。

核心功能执行

用input_params参数进行配置。

输出: 返回核心功能执行的执行结果,包含操作状态和输出数据。

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

参数配置与调用

用config_options参数进行配置。

输出: 返回参数配置与调用的执行结果,包含操作状态和输出数据。

  • 执行此能力时使用config_options参数,支持修改/重置/导入操作

结果处理与输出

用output_format参数进行配置。

输出: 返回结果处理与输出的执行结果,包含操作状态和输出数据。

  • 执行此能力时使用output_format参数,支持导出/保存/转换操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Java、开发规约速查手册、覆盖命名、数据库等、大维度核心规范、开发者的开发规约、速查工具、大维度的规约指引、大维度规约速查、命名规范、格式规范、规范速查、并发处理与集合操、作规范、异常处理与日志规、范模板等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。

使用场景

场景一:命名规范查询

开发者编写代码时需要查询命名规范。

用户:Java 类名和变量名的命名规范是什么

助手:
类名:UpperCamelCase
public class UserService { }
public class UserDO { }      // DO/DTO/VO 例外

方法名/变量:lowerCamelCase
private String userName;
public void getUserById() { }

常量:全大写+下划线
public static final int MAX_RETRY_COUNT = 3;

包名:全小写
package com.company.project.service;

禁止:
- 拼音命名(如 yonghuMing)
- 中英文混合
- 使用下划线(常量除外)

场景二:并发处理规范查询

开发者需要查询线程池和 ThreadLocal 的使用规范。

用户:线程池创建和 ThreadLocal 使用的规范

助手:
线程池创建规范:
- 【强制】禁止使用 Executors 创建线程池(可能 OOM)
- 【强制】使用 ThreadPoolExecutor 显式创建

ThreadPoolExecutor executor = new ThreadPoolExecutor(
    corePoolSize,
    maximumPoolSize,
    keepAliveTime,
    TimeUnit.SECONDS,
    new LinkedBlockingQueue<>(queueCapacity),
    new ThreadFactory() {
        private AtomicInteger counter = new AtomicInteger(1);
        public Thread newThread(Runnable r) {
            return new Thread(r, "worker-" + counter.getAndIncrement());
        }
    },
    new ThreadPoolExecutor.CallerRunsPolicy()
);

ThreadLocal 使用规范:
- 【强制】使用后必须 remove,避免内存泄漏

try {
    threadLocal.set(value);
    // 业务逻辑
} finally {
    threadLocal.remove();
}

场景三:数据库建表规范查询

开发者需要查询数据库建表和索引命名规范。

-- 建表必备字段
CREATE TABLE example (
    `id` bigint unsigned NOT NULL AUTO_INCREMENT,
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 索引命名规范
-- 主键: pk_字段名
-- 唯一: uk_字段名
-- 普通: idx_字段名

-- 禁止事项
-- 禁止 SELECT *
-- 禁止字符串拼接 SQL
-- 禁止使用存储过程处理业务逻辑

不适用场景

以下场景Java开发手册免费版不适合处理:

  • 无明确技术栈的模糊需求
  • 纯架构设计决策
  • 运维部署管理

触发条件

需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求。

快速开始

  1. 阅读## 核心能力章节了解skill功能
  2. 按## 依赖说明配置环境
  3. 执行所需能力对应的命令
  4. 参考## 错误处理章节处理异常
  5. 查看## FAQ解答常见疑问

禁止事项速查

禁止原因
拼音命名可读性差
魔法值难以维护
SELECT *性能和可维护性
Executors 创建线程池可能 OOM
字符串拼接 SQL注入风险
finally 中 return丢失 try 返回值
foreach 中 removeConcurrentModificationException
空 catch 块隐藏问题

必须事项速查

必须原因
覆写方法加 @Override避免签名错误
表必备三字段id, create_time, update_time
敏感数据脱敏隐私保护
参数校验安全防护
ThreadLocal 回收避免内存泄漏
日志用占位符性能优化

错误处理

// 正确的异常处理
try {
    // 业务逻辑
} catch (SpecificException e) {
    logger.error("操作失败, 参数: {}", params, e);
    throw new BusinessException("用户友好提示", e);
} finally {
    // 资源关闭(JDK7+ try-with-resources)
}

// try-with-resources
try (Connection conn = dataSource.getConnection();
     PreparedStatement stmt = conn.prepareStatement(sql)) {
    // ...
} catch (SQLException e) {
    logger.error("数据库操作失败", e);
    throw new RuntimeException(e);
}
序号错误场景原因处理方式优先级
1输入参数缺失用户未提供必要参数提示用户提供所需参数后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令P0
2执行超时处理时间过长检查输入数据量,分批处理P1
3输出格式错误结果不符合预期格式检查output_format参数配置P1

示例

命名规范速查表

类型规范正确示例错误示例
类名UpperCamelCaseUserServiceuserService
方法名lowerCamelCasegetUserById()GetUserById()
变量名lowerCamelCaseuserNameuser_name
常量全大写下划线MAX_RETRYmaxRetry
包名全小写com.company.servicecom.Company.Service
枚举UpperCamelCaseHttpStatus.OKHttpStatus.ok

日志规范速查

// 使用 SLF4J 占位符(不要用字符串拼接)
logger.info("用户登录: userId={}", userId);

// 异常日志必须包含堆栈
logger.error("操作失败: {}", params, e);  // e 作为最后一个参数

// 日志级别使用规范
logger.debug("调试信息: {}", detail);    // 调试
logger.info("用户注册: {}", userId);      // 重要业务
logger.warn("缓存未命中: {}", key);       // 告警
logger.error("数据库异常", e);            // 错误

// 禁止
System.out.println("...");               // 禁止使用控制台输出
logger.info("用户" + userId + "登录");    // 禁止字符串拼接

集合操作速查

// 集合转 Map 的正确方式
Map userMap = userList.stream()
    .collect(Collectors.toMap(User::getId, u -> u));

// 指定初始容量
Map map = new HashMap<>(expectedSize / 0.75 + 1);
List list = new ArrayList<>(expectedSize);

// 安全的删除方式
// 错误
for (User u : userList) {
    if (u.getStatus() == 0) {
        userList.remove(u);  // ConcurrentModificationException
    }
}

// 正确
Iterator it = userList.iterator();
while (it.hasNext()) {
    if (it.next().getStatus() == 0) {
        it.remove();
    }
}

// 或使用 removeIf
userList.removeIf(u -> u.getStatus() == 0);

优选实践

  1. 常量代替魔法值:所有硬编码值提取为常量

    public static final int STATUS_ACTIVE = 1;
    
  2. 使用 try-with-resources:自动管理资源关闭

  3. 异常信息包含上下文:便于问题定位

    throw new BusinessException("用户[" + userId + "]不存在");
    
  4. 日志用占位符:避免不必要的字符串拼接

  5. 集合指定初始容量:减少扩容开销

  6. 参数校验前置:在方法入口校验参数

  7. 避免在循环中创建对象:减少 GC 压力

  8. 使用 Optional 替代 null:更安全地处理空值

常见问题

Q1:为什么禁止使用 Executors?

// Executors.newFixedThreadPool() 使用无界队列,可能 OOM
ExecutorService executor = Executors.newFixedThreadPool(10);
// 内部使用 new LinkedBlockingQueue<>(),队列无上限

// 正确:使用 ThreadPoolExecutor 并指定有界队列
ExecutorService executor = new ThreadPoolExecutor(
    10, 10, 0L, TimeUnit.MILLISECONDS,
    new LinkedBlockingQueue<>(1000)  // 有界队列
);

Q2:foreach 中为什么不能 remove?

// foreach 使用 Iterator 遍历
// remove 会修改 modCount,导致 ConcurrentModificationException

// 正确方式一:Iterator.remove()
Iterator it = list.iterator();
while (it.hasNext()) {
    if (condition) it.remove();
}

// 正确方式二:removeIf
list.removeIf(u -> condition);

Q3:如何正确处理 NPE?

// 使用 Optional 避免空指针
public String getUserName(User user) {
    return Optional.ofNullable(user)
        .map(User::getName)
        .orElse("未知用户");
}

// 集合返回空集合而非 null
public List getUsers() {
    return Collections.emptyList();  // 不返回 null
}

// 字符串判空
if (StringUtils.isNotBlank(name)) { }

Q4:数据库索引怎么建?

-- 索引命名
-- 主键: pk_字段名
-- 唯一: uk_字段名
-- 普通: idx_字段名

-- 索引原则
-- 1. 查询频繁的字段建索引
-- 2. 区分度高的字段优先
-- 3. 避免过多索引(影响写入性能)
-- 4. 联合索引遵循最左前缀原则

-- 示例
CREATE INDEX idx_user_status ON users(status, create_time);
-- 支持查询: WHERE status = ?
 AND create_time > ?
-- 不支持:   WHERE create_time > ?

Q5:日志级别怎么选?

级别使用场景示例
ERROR影响业务功能的错误数据库连接失败
WARN可预期的异常,不影响主流程缓存未命中
INFO重要的业务操作用户注册、订单创建
DEBUG调试信息方法参数、中间结果
TRACE详细执行流程SQL 执行详情

Q6:如何做参数校验?

// 使用 JSR-303 注解校验
public class UserDTO {
    @NotBlank(message = "用户名不能为空")
    private String username;
    
    @Min(value = 0, message = "年龄不能为负数")
    private Integer age;
    
    @Email(message = "邮箱格式不正确")
    private String email;
}

// Controller 中使用
@PostMapping("/users")
public Result create(@Valid @RequestBody UserDTO dto) {
    // dto 已通过校验
}

依赖说明

运行环境

  • Agent 平台: 支持读取 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
  • 操作系统: Windows / macOS / Linux
  • JDK 版本: 建议 8 及以上

依赖详情

依赖项类型是否必需获取方式
JDK编译器/运行时推荐oracle.com 或 openjdk.net 下载
SLF4J日志框架推荐maven 中央仓库
Lombok工具库可选maven 中央仓库
LLM APIAPI必需由 Agent 内置 LLM 提供

API Key 配置

  • 本工具为纯 Markdown 指令驱动,无需额外 API Key
  • 代码编译验证需要 JDK 环境

可用性分类

  • 分类: MD+EXEC(Markdown 指令 + 命令行执行)
  • 说明: 通过自然语言指令驱动 Agent 提供规约查询与代码建议,编译验证需要 JDK 执行能力

已知限制

  • 需LLM支持,无LLM环境不可用
  • 复杂业务场景建议结合人工经验判断
  • 执行效率受模型能力与网络环境影响
  • 当前为免费版本,如需完整功能请升级到付费版获取全部能力

安全注意事项

风险类型防范措施
API密钥泄露通过环境变量配置,禁止硬编码到代码或配置文件中
命令执行风险仅执行白名单命令,避免拼接用户输入到命令行参数中
网络通信安全使用HTTPS协议,验证SSL证书有效性
敏感数据暴露输出结果中不包含密钥、令牌等敏感信息

使用前请确认已阅读依赖说明章节,确保运行环境满足安全要求。

效率量化分析

操作场景手动耗时自动化耗时效率提升
文件解析与提取5-10分钟/个<5秒/个60-120x
批量文件处理(100个)8-16小时<5分钟96-192x
API调用与响应解析2-3分钟/次<1秒/次120-180x
多接口数据聚合15-30分钟<10秒90-180x
命令执行与结果收集3-5分钟/次<2秒/次90-150x
重复任务批量执行因任务而异线性缩减5-50x
错误排查与修复10-30分钟<30秒20-60x

差异化对比

对比维度本技能传统手动方式通用脚本工具
自动化程度全流程自动完全手动部分自动
错误处理内置错误恢复依赖人工经验基本try-catch
可复用性参数化配置一次性脚本模板化
安全合规内置安全检查无安全保障无安全保障
适用场景核心功能通用场景通用场景

Related skills

Turn China 3C launch inputs into executable routes, messaging, channel actions, risk checks, and review decisions.

by killsnake0126 installs112 stars

Convert Word, PDF or PPT into browser-ready HTML slides with step animations, fullscreen and offline delivery.

by taogeo1 installs1 stars

Tests whether you genuinely understand something or just recognize it — exposes the gaps in your mental model.

by deciqai1 installs2 stars

Join video meetings as a voice bot, visual avatar, or avatar with live screen sharing.

by johnpatternai22 installs8 stars

Make irreversible life decisions by projecting to 80 and naming which regret you'd rather live with.

by deciqai1 installs2 stars

Automated browser control via CLI with Playwright — open pages, interact, extract session credentials.

by yicko2 installs1 stars

More from thcjp

Browse all skills

Generate and process images, videos, or audio by routing each request to an appropriate CLI model.

by dlazy

Routes prompts to an appropriate CLI model for speech, dialogue, music, sound effects, or voice cloning.

by dlazy

Query and manage Pipedrive deals, contacts, organizations, and activities via a managed OAuth proxy.

by thcjp

Query and manage Linear work items through GraphQL with managed OAuth authentication.

by thcjp

Search Jira Cloud and manage issues, projects, comments, assignments, and workflow transitions.

by thcjp

常见办公流程自动化中枢,覆盖文档处理、数据整理、邮件管理、日程协调、报表生成与工作流编排。 聚焦批量操作容错、格式保真、PII 脱敏、模板复用四大痛点,让繁琐办公一键稳妥完成。 核心能力: - 文档批处理:Word/PDF/Excel/PPT 批量生成、转换、合并拆分,含失败隔离与重试 - 数据整理:清洗、转换、...

by thcjp3 installs1 stars