360 Secure SkillHub
360 安全技能中心

Java开发手册免费版

核心功能覆盖编程、异常、数据库等7大维度Java开发规约,按强制、推荐、参考分级呈现。典型场景含命名规范、并发处理、数据库建表查询等。以自然语言提问为输入,输出带代码示例的规范指引,支持中文交互,无需配置即开即用,输出可直接复用,适用于独立开发者、企业团队,不适用于无明确技术栈的模糊需求。

thcjp
thcjp
热度 53.54
最近更新 2026-09-22 02:59:24
分类:开发依赖:代码执行 / 读写文件 / 内部调用大模型应用场景:代码生成 / 代码审查 / 调试排错 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add java-dev-manual-tool-free
Metadata
name
java-dev-manual-tool-free
description
Java 开发规约速查手册,覆盖命名、异常、并发、数据库等 7 大维度核心规范。Use when 需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。
license
Proprietary
allowed-tools
read exec
compatibility
Requires LLM with tool-use capability
metadata
{"displayName":"Java开发手册免费版","version":"1.0.0","summary":"Java 开发规约速查手册,覆盖命名、异常、并发、数据库等 7 大维度核心规范。","tags":["开发工具","Java","开发规范","代码质量"],"source":"SkillHub","converted_at":"2026-07-22T17:58:36"}
tools
["exec","read","write"]

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

Java 开发手册(免费版)

概述

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

核心能力

维度 描述 规约数量
编程规约 命名、格式、OOP、并发、集合 20+ 条
异常日志 错误码、异常处理、日志规范 10+ 条
单元测试 测试用例、覆盖率、Mock 8+ 条
安全规约 SQL 注入、XSS、CSRF、脱敏 8+ 条
数据库规约 建表、索引、SQL、ORM 15+ 条
工程结构 分层架构、依赖管理 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 中 remove ConcurrentModificationException
空 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

示例

命名规范速查表

类型 规范 正确示例 错误示例
类名 UpperCamelCase UserService userService
方法名 lowerCamelCase getUserById() GetUserById()
变量名 lowerCamelCase userName user_name
常量 全大写下划线 MAX_RETRY maxRetry
包名 全小写 com.company.service com.Company.Service
枚举 UpperCamelCase HttpStatus.OK HttpStatus.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<Long, User> userMap = userList.stream()
    .collect(Collectors.toMap(User::getId, u -> u));

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

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

// 正确
Iterator<User> 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<User> 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<User> 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 API API 必需 由 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
可复用性 参数化配置 一次性脚本 模板化
安全合规 内置安全检查 无安全保障 无安全保障
适用场景 核心功能 通用场景 通用场景