# mind-map **Repository Path**: knowledge_public/mind-map ## Basic Information - **Project Name**: mind-map - **Description**: 个人知识思维脑图 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-22 - **Last Updated**: 2025-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README - [大模型工具提效实践](#大模型工具提效实践) - [国内主流大模型及开发应用的插件和编辑器比较](#国内主流大模型及开发应用的插件和编辑器比较) - [国内各个大模型的比较(开发来说用的最多的还是推理型模型,目前使用最多的是deepsek-r1)](#国内各个大模型的比较开发来说用的最多的还是推理型模型目前使用最多的是deepsek-r1) - [ai编辑器及插件比较及实践](#ai编辑器及插件比较及实践) - [推荐使用场景](#推荐使用场景) - [实践1:通义零码自定义AI规则,生成符合项目规范的代码](#实践1通义零码自定义ai规则生成符合项目规范的代码) - [通义零码java开发规则demo](#通义零码java开发规则demo) - [根据上下文生成简单curd](#根据上下文生成简单curd) - [实践2:MarsCode插件](#实践2marscode插件) - [优化代码(失败案例,但是可以给我们启发)](#优化代码失败案例但是可以给我们启发) - [2.swagger注解升级成springDoc(成功案例)](#2swagger注解升级成springdoc成功案例) - [AI效率提升的测算](#ai效率提升的测算) - [**衡量AI辅助编程带来的收益**](#衡量ai辅助编程带来的收益) - [如何借助AI大模型提高自己](#如何借助ai大模型提高自己) - [建立自己的知识模型](#建立自己的知识模型) - [多关注高质量的技术blog,提升自己的视野](#多关注高质量的技术blog提升自己的视野) # 大模型工具提效实践 国内主流大模型及开发应用的插件和编辑器比较 --------------------- ### 国内各个大模型的比较(开发来说用的最多的还是推理型模型,目前使用最多的是deepsek-r1) | | | | | | --- | --- | --- | --- | | 模型 | 厂商 | 类型 | 说明 | | deepseek-v3 | 深度求索 | 通用 | 豆包提供的最快最稳定 | | deepseek-r1 | 深度求索 | 推理 | 豆包提供的最快最稳定 | | qwq-plus | alibaba | 推理 | alibaba | | qwen2.5 | alibaba | 通用 | alibaba | | doubao 1.5pro | 字节 | 通用 | 字节 | ### ai编辑器及插件比较及实践 | | | | | | | --- | --- | --- | --- | --- | | 插件 | 类型 | 模式 | 优点 | 缺点 | | 通义零码 | vscode+idea | chat+builder | 1.可以免费使用aliyun的deepseek模型

2.可以自定义AI规则 | 1.builder模式下不支持deepseek R1模型

2.经常卡死 | | MarsCode AI(已经改名Trae) | vscode+idea | chat+builder(coming soon) | 1.可以免费使用豆包deepseek V30324,R1

2.生成的代码可以直接Apply到项目中 | 不支持Builder模式(up coming) | | github copilot | vscode+idea | chat +builder | 1.可以用GPT-40,Claude-3.5,Claude-3.7等国外大模型

2.有github数据做支撑 | 1.需要翻墙使用

2.需要花钱 $10/Month | | auto-dev | vscode+idea | builder +MCP | 1.可以使用符合OPENAPI接口的大模型 | 1.需要支付大模型费用

2.没有chat模式 | | Roo code/Cline | vscode | builder+MCP | 1.可以使用符合OPENAPI接口的大模型 | 需要支付大模型费用

2.没有chat模式 | | Trae国际版 | 编辑器 | chat+builder—+MCP | 1.可以不限制使用主流国际国内大模型,GPT-4o, Claude-3.7-Sonnet,并且可以自定义使用其他模型

2.可以直接用自然语言运行程序

2.builder模式下能直接运行及分析控制台的问题

3.基于VSCode的平台,可以直接使用VSCode插件

4.可以自定义AI规则 | 1.不支持idea,对Java开发环境配置比较复杂

2.公司网络不能支持访问 | | Cursor | 编辑器 | chat +builder+MCP | 1.可以使用国际流行大模型

2.功能丰富、强大 | 需要付费 | ### 推荐使用场景 | | | | | | --- | --- | --- | --- | | | 使用场景 | 推荐ai工具 | 说明 | | | 前端开发 | Trae | | | | 业务代码开发 | 通义零码 | chat+builder(coming soon) | | | 项目维护(调试或者找bug) | MarsCode AI | 响应速度快 | ### 实践1:通义零码自定义AI规则,生成符合项目规范的代码 ![](1_大模型工具提效实践_image.png) #### 通义零码java开发规则demo **适用场景**:适用于智能问答场景和 AI 程序员场景中的所有请求,但通过 `**/ 指令**`和**提交信息(Commit Message)**触发的操作**不适用此规则**。 **不适用场景**:代码行间补全场景**不适用此规则**。 ````text-x-markdown 你是一个资深的java专家,请在开发中遵循如下规则: - 严格遵循 **SOLID、DRY、KISS、YAGNI** 原则 - 遵循 **OWASP 安全最佳实践**(如输入验证、SQL注入防护) - 采用 **分层架构设计**,确保职责分离 - 代码变更需通过 **单元测试覆盖**(测试覆盖率 ≥ 80%) --- ## 二、技术栈规范 ### 技术栈要求 - **框架**:Spring Boot 3.x + Java 17 - **依赖**: - 核心:Spring Web, Mybatis-plus, Lombok - 数据库:Kingbase - 其他:SpringDoc - 代码规范:alibaba《Java 开发手册》 --- ## 三、应用逻辑设计规范 ### 1. 分层架构原则 | 层级 | 职责 | 约束条件 | |---------------|----------------------------------------------------------------------|--------------------------------------------------------------------------| | **Controller** | 处理 HTTP 请求与响应,定义 API 接口 | - 禁止直接操作数据库
- 必须通过 Service 层调用 | | **Service** | 业务逻辑实现,事务管理,数据校验 | - 必须通过 Mapper 访问数据库
- 返回 DTO 而非实体类(除非必要) | | **Mapper** | 数据持久化操作,定义数据库查询逻辑 | - | | **Entity** | 数据库表结构映射对象 | - 仅用于数据库交互
- 禁止直接返回给前端(需通过 DTO 转换) | --- ## 四、核心代码规范 ### 1. 实体类(Entity)规范 ```java @Entity @Data // Lombok 注解 public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotBlank(message = "用户名不能为空") @Size(min = 3, max = 50) private String username; @Email private String email; // 关联关系使用懒加载 @ManyToOne(fetch = FetchType.LAZY) private Department department; } ``` ### 2. 数据访问层(Mapper)规范 ```java public interface UserMapper { // 命名查询 Optional findByUsername(String username); } ``` ### 3. 服务层(Service)规范 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Transactional public JsonBaseResult createUser(UserRequest userRequest) { // 业务逻辑实现 User user = User.builder().username(userRequest.getUsername()).build(); User savedUser = userMapper.save(user); return JsonBaseResult.success(UserDTO.fromEntity(savedUser)); } } ``` ### 4. 控制器(RestController)规范 ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @PostMapping public JsonBaseResult createUser(@RequestBody @Valid UserRequest userRequest) { try { JsonBaseResult response = userService.createUser(userRequest); return response; } catch (Exception e) { return GlobalExceptionHandler.errorResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST); } } } ``` --- ## 五、数据传输对象(DTO)规范 ```java // 使用 record 或 @Data 注解 public record UserDTO( @NotBlank String username, @Email String email ) { public static UserDTO fromEntity(User entity) { return new UserDTO(entity.getUsername(), entity.getEmail()); } } ``` --- ## 六、全局异常处理规范 ### 1. 统一响应类(ApiResponse) ```java @JsonInclude(JsonInclude.Include.NON_NULL) public class JsonBaseResult { private T result; private String errorCode; private String errorMessage; private StatusEnum resultStatus = StatusEnum.SUCCEED; public JsonBaseResult() { } public JsonBaseResult(StatusEnum resultStatus, String message, T result) { this.resultStatus = resultStatus; this.errorMessage = message; this.result = result; } public JsonBaseResult(StatusEnum resultStatus, ErrorEnum errorEnum, T result) { this.resultStatus = resultStatus; this.errorCode = errorEnum.getCode(); this.errorMessage = errorEnum.getMessage(); this.result = result; } public JsonBaseResult(StatusEnum resultStatus, String errorCode, String errorMessage, T result) { this.resultStatus = resultStatus; this.errorCode = errorCode; this.errorMessage = errorMessage; this.result = result; } public void setErrorCode(ErrorEnum errorEnum){ this.errorCode = errorEnum.getCode(); this.errorMessage = errorEnum.getMessage(); } public T getResult() { return result; } public void setResult(T result) { this.result = result; } public String getErrorCode() { return errorCode; } public void setErrorCode(String errorCode) { this.errorCode = errorCode; } public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } public StatusEnum getResultStatus() { return resultStatus; } public void setResultStatus(StatusEnum resultStatus) { this.resultStatus = resultStatus; } public static JsonBaseResult success() { return new JsonBaseResult<>(StatusEnum.SUCCEED, ErrorEnum.SUCCEED, null); } public static JsonBaseResult success(T data) { return new JsonBaseResult<>(StatusEnum.SUCCEED, ErrorEnum.SUCCEED, data); } public static JsonBaseResult failed(String message) { return new JsonBaseResult<>(StatusEnum.FAILED, message, null); } public static JsonBaseResult failed(String errorCode, String message) { return new JsonBaseResult<>(StatusEnum.FAILED, errorCode, message, null); } } ``` ### 2. 全局异常处理器(GlobalExceptionHandler) ```java @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(EntityNotFoundException.class) public ResponseEntity> handleEntityNotFound(EntityNotFoundException ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND) .body(ApiResponse.error(ex.getMessage())); } @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity> handleValidationErrors(MethodArgumentNotValidException ex) { String errorMessage = ex.getBindingResult() .getFieldErrors() .stream() .map(error -> error.getField() + ": " + error.getDefaultMessage()) .collect(Collectors.joining(", ")); return ResponseEntity.badRequest().body(ApiResponse.error(errorMessage)); } } ``` --- ## 七、安全与性能规范 1. **输入校验**: - 使用 `@Valid` 注解 + JSR-303 校验注解(如 `@NotBlank`, `@Size`) - 禁止直接拼接 SQL 防止注入攻击 2. **事务管理**: - `@Transactional` 注解仅标注在 Service 方法上 - 避免在循环中频繁提交事务 3. **性能优化**: - 避免使用三层if循环 - 避免在循环中执行数据库查询(批量操作优先) --- ## 八、代码风格规范 1. **命名规范**: - 类名:`UpperCamelCase`(如 `UserServiceImpl`) - 方法/变量名:`lowerCamelCase`(如 `saveUser`) - 常量:`UPPER_SNAKE_CASE`(如 `MAX_LOGIN_ATTEMPTS`) 2. **注释规范**: - 方法必须添加注释且方法级注释使用 Javadoc 格式 - 计划待完成的任务需要添加 `// TODO` 标记 - 存在潜在缺陷的逻辑需要添加 `// FIXME` 标记 3. **代码格式化**: - 使用 IntelliJ IDEA 默认的 Spring Boot 风格 - 禁止手动修改代码缩进(依赖 IDE 自动格式化) --- ## 九、部署规范 1. **部署规范**: - 生产环境需禁用 `@EnableAutoConfiguration` 的默认配置 - 敏感信息通过 `application.properties` 外部化配置 - 使用 `Spring Profiles` 管理环境差异(如 `dev`, `prod`) --- ## 十、扩展性设计规范 1. **接口优先**: - 服务层接口(`UserService`)与实现(`UserServiceImpl`)分离 2. **扩展点预留**: - 关键业务逻辑需提供 `Strategy` 或 `Template` 模式支持扩展 3. **日志规范**: - 使用 `SLF4J` 记录日志(禁止直接使用 `System.out.println`) - 核心操作需记录 `INFO` 级别日志,异常记录 `ERROR` 级别 ``` ```` #### 根据上下文生成简单curd ![](12_大模型工具提效实践_image.png) ![](13_大模型工具提效实践_image.png) ![](14_大模型工具提效实践_image.png) 可以结合上下文整条链路生成完整的代码,包括sql语句 ### 实践2:MarsCode插件 #### 优化代码(失败案例,但是可以给我们启发) ![](2_大模型工具提效实践_image.png) ![](3_大模型工具提效实践_image.png) ![](4_大模型工具提效实践_image.png) #### 2.swagger注解升级成springDoc(成功案例) ![](5_大模型工具提效实践_image.png) ![](6_大模型工具提效实践_image.png) ![](7_大模型工具提效实践_image.png) review代码如果没问题可以直接Apply到应用中 AI效率提升的测算 --------- ### **衡量AI辅助编程带来的收益** https://help.aliyun.com/zh/lingma/use-cases/how-to-measure-the-benefits-of-ai-assisted-programming?spm=a2c4g.11186623.help-menu-2804669.d\_3\_4\_0.c48b2479G6BRWy&scm=20140722.H\_2850614.\_.OR\_help-T\_cn~zh-V\_1#a48ad067cc75d ![](10_大模型工具提效实践_image.png) ![](9_大模型工具提效实践_image.png) 如何借助AI大模型提高自己 ------------- 实践证明,当前的ai大模型还是一个辅助提高开发效率的工具,要实现快速高质量开发的任务,主要还是得需要开发了解业务及最优实现路径。 ### 建立自己的知识模型 可以通过脑图(https://wanglin2.github.io/mind-map/#/)建立自己的体系,对于自己不熟悉或者不了解的技术领域可以借助deepseek或豆包等AI应用完善补充[[知识结构.smm](https://gitee.com/knowledge_public/mind-map/blob/master/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%B7%A5%E5%85%B7%E6%8F%90%E6%95%88%E5%AE%9E%E8%B7%B5_%E7%9F%A5%E8%AF%86%E7%BB%93%E6%9E%84.smm)](大模型工具提效实践_知识结构.smm)  ![](11_大模型工具提效实践_image.png) ### 多关注高质量的技术blog,提升自己的视野 [https://javaguide.cn/](https://javaguide.cn/)