【Java高手进阶必备】:5步搞定自定义代码生成器设计与实现

第一章:Java注解处理器与Lombok扩展概述

Java注解处理器(Annotation Processor)是编译期处理源代码中注解的工具,能够在编译阶段生成额外的Java类、资源文件或进行代码校验。它基于JSR 269规范,通过实现`javax.annotation.processing.Processor`接口,监听编译过程中的注解使用,并动态生成代码,从而减少模板代码的重复编写。

注解处理器的工作机制

注解处理器在编译时被调用,通常由构建工具(如Maven或Gradle)触发。其执行流程包括:
  • 扫描源码中的特定注解
  • 解析被注解元素的结构信息(如类名、字段、方法)
  • 生成新的Java文件或资源文件
例如,一个简单的处理器注册方式如下:

@SupportedAnnotationTypes("com.example.MyAnnotation")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class MyProcessor extends AbstractProcessor {
    @Override
    public boolean process(Set<? extends TypeElement> annotations,
                          RoundEnvironment roundEnv) {
        // 处理逻辑:遍历被注解元素并生成代码
        return true;
    }
}

Lombok的实现原理

Lombok并非通过标准注解处理器直接生成独立类文件,而是利用注解处理器介入编译流程,修改抽象语法树(AST),在Javac编译过程中动态插入getter、setter、构造函数等代码。这种技术依赖于Javac的内部API,因此具有高度侵入性但也极为高效。 下表对比了标准注解处理器与Lombok的差异:
特性标准注解处理器Lombok
代码生成方式生成新.java文件修改AST,内联注入代码
依赖编译器通用(JSR 269)绑定Javac或ECJ
调试友好性高(可见生成文件)低(代码不可见)
graph TD A[源码包含注解] --> B{编译启动} B --> C[注解处理器扫描] C --> D[解析注解目标] D --> E[生成或修改AST] E --> F[输出.class文件]

第二章:注解处理器核心机制解析

2.1 注解处理器工作原理与APT流程

注解处理器(Annotation Processor)在Java编译期运行,用于扫描和处理源代码中的注解,生成额外的Java文件或资源,而不会修改原有类结构。
APT执行阶段
APT(Annotation Processing Tool)流程嵌入在javac编译过程中,分为以下步骤:
  1. 解析源文件中的注解
  2. 调用匹配的注解处理器
  3. 生成新的Java源文件
  4. 继续编译直至无新文件生成
代码示例:简单处理器定义

@SupportedAnnotationTypes("com.example.BindView")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class ViewBinderProcessor extends AbstractProcessor {
    @Override
    public boolean process(Set<? extends TypeElement> annotations, 
                           RoundEnvironment env) {
        // 扫描被BindView注解的元素并生成绑定代码
        return true;
    }
}
上述代码定义了一个注解处理器,监听BindView注解,在编译时生成视图绑定逻辑,提升运行时性能。

2.2 Processor接口详解与注册机制实现

Processor接口设计

Processor接口是框架处理核心逻辑的抽象定义,所有处理器需实现该接口以接入系统。其定义如下:

type Processor interface {
    Process(data []byte) error
    Name() string
}

其中Process负责具体数据处理逻辑,Name返回唯一标识符,用于注册和查找。

注册机制实现

通过全局注册表管理Processor实例,确保单例模式和线程安全:

  • 使用sync.RWMutex保护注册过程
  • Map结构存储Name到Processor的映射
  • 提供Register和Get方法进行生命周期管理
func Register(name string, p Processor) {
    mutex.Lock()
    defer mutex.Unlock()
    processors[name] = p
}

注册时校验名称唯一性,避免冲突,为后续调度器调用提供基础支撑。

2.3 Element与TypeMirror:AST模型的访问技巧

在注解处理过程中,Element 和 TypeMirror 是访问抽象语法树(AST)的核心接口。前者代表程序元素(如类、方法、字段),后者则描述类型信息。
Element:程序结构的入口
Element 接口提供了对类、方法、参数等语法元素的只读访问。通过 RoundEnvironment 可获取被注解的元素集合:

Set<? extends Element> elements = roundEnv.getElementsAnnotatedWith(MyAnnotation.class);
for (Element element : elements) {
    System.out.println("名称: " + element.getSimpleName());
    System.out.println("种类: " + element.getKind());
}
上述代码遍历所有被 @MyAnnotation 标注的元素,getSimpleName() 返回元素的名称,getKind() 判断其类型(如 METHOD、CLASS)。
TypeMirror:解析类型信息
当需要获取类型的详细信息(如继承关系、泛型参数),应使用 TypeMirror:

TypeMirror type = element.asType();
System.out.println("类型名称: " + type.toString());
asType() 将 Element 转换为对应的类型镜像,适用于类型比较和元编程逻辑。

2.4 生成Java源码的正确姿势:Filer与JavaFileObject

在注解处理器中,生成Java源码应使用`Filer`接口配合`JavaFileObject`,避免手动I/O操作。
核心流程
通过`Filer.createSourceFile()`创建源文件对象,再获取`Writer`写入内容:
JavaFileObject jfo = filer.createSourceFile("com.example.GeneratedClass");
try (Writer writer = jfo.openWriter()) {
    writer.write("public class GeneratedClass { }");
}
该方式确保生成文件被编译器识别,并参与后续编译阶段。
优势对比
方式可追踪性编译集成
Filer✅ 支持✅ 自动参与编译
FileOutputStream❌ 不支持❌ 需手动处理

2.5 编译期依赖管理与增量处理优化策略

在现代构建系统中,编译期依赖管理是提升构建效率的核心环节。通过静态分析源码的导入关系,构建工具可生成精确的依赖图谱,确保仅重新编译受变更影响的模块。
依赖解析与缓存机制
构建系统如Bazel或Gradle通过解析build.gradle或BUILD文件,在编译前确定模块间依赖关系,并缓存未变化目标的输出。

dependencies {
    implementation 'com.example:core:1.0'
    annotationProcessor 'com.example:processor:1.0'
}
上述配置声明了编译期处理器依赖,确保注解在源码处理阶段可用,同时避免将其打包至最终产物。
增量编译优化策略
基于文件时间戳与哈希比对,系统识别变更单元,仅对受影响部分执行编译。结合依赖拓扑排序,保障编译顺序正确性,显著降低全量构建开销。

第三章:基于Lombok的代码生成扩展实践

3.1 Lombok内部机制剖析与AST操作原理

Lombok通过注解处理器在编译期修改Java源码的抽象语法树(AST),实现代码自动生成。其核心依赖于JSR 269提供的Pluggable Annotation Processing API。
AST操作流程
在编译过程中,Lombok拦截注解并操作AST节点,向类中注入getter、setter、构造函数等方法,最终生成的字节码中包含这些“隐形”代码。
代码示例:Getter注解的AST变换

@Getter
public class User {
    private String name;
    private int age;
}
上述代码在编译时,Lombok会向AST中插入`getName()`和`getAge()`方法节点。这些方法在源码中不可见,但在.class文件中存在。
  • 注解处理器捕获@Getter标记的类
  • 扫描字段并生成对应getter方法的AST节点
  • 将新节点织入原类结构

3.2 自定义注解与Lombok协同工作的设计模式

在现代Java开发中,自定义注解与Lombok的结合能显著提升代码的可读性与可维护性。通过定义运行时注解,并与Lombok的编译期生成代码能力协同,可实现简洁而强大的编程模型。
注解与Lombok的协作机制
自定义注解负责元数据标记,Lombok则消除样板代码。两者结合可在不侵入业务逻辑的前提下增强类行为。
@Data
@Loggable
public class Order {
    private String orderId;
    private BigDecimal amount;
}
上述代码中,@Data 自动生成getter、setter和toString方法,@Loggable 为后续AOP日志切面提供标记。编译后,类既精简又富含语义。
典型应用场景
  • 自动日志记录:通过自定义注解触发日志切面,结合Lombok减少冗余字段访问代码
  • 审计追踪:标记需审计的字段或方法,利用Lombok简化对象拷贝逻辑
  • 序列化控制:配合Jackson等框架,动态调整序列化行为

3.3 利用Delombok实现生成代码的兼容性处理

在复杂项目中,Lombok 自动生成的代码可能与某些框架或工具链存在兼容性问题。通过 Delombok 操作,可将注解生成的代码显式展开,便于调试和适配。
Delombok 命令行使用示例
java -jar lombok.jar delombok src/main/java/com/example/User.java -o build/generated/User.java
该命令将 User.java 中由 @Data、@Getter 等注解生成的方法还原为实际源码,并输出到指定路径,便于审查生成逻辑。
典型应用场景
  • 与老旧IDE或静态分析工具兼容
  • 跨模块API契约验证时确保字段可见性
  • 在不支持注解处理器的环境中部署
通过预生成标准Java代码,避免运行时依赖Lombok,提升系统可移植性与稳定性。

第四章:实战——构建高性能自定义代码生成器

4.1 需求分析与注解API设计:@AutoGenerateService

在自动化代码生成场景中,核心需求是通过注解驱动服务类的创建,减少模板代码。为此设计 `@AutoGenerateService` 注解,用于标识需自动生成实现类的接口。
注解定义与属性设计
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface AutoGenerateService {
    String packageName() default "";
    boolean enableCache() default false;
    String[] excludedMethods() default {};
}
该注解作用于接口类型,`packageName` 指定生成类的包路径,`enableCache` 控制是否启用缓存代理,`excludedMethods` 排除特定方法生成。
使用示例
  • 标记接口:@AutoGenerateService(packageName = "com.example.service")
  • 处理器扫描该注解并生成对应 Service 实现

4.2 处理器逻辑开发:从注解到ServiceImpl的生成

在现代Java开发中,通过自定义注解与APT(Annotation Processing Tool)结合,可实现从接口定义到ServiceImpl的自动代码生成。开发者仅需在接口方法上标注特定注解,处理器即可在编译期解析并生成对应实现类。
注解处理器工作流程
  • 扫描带有指定注解的接口方法
  • 提取方法签名、参数及返回类型元信息
  • 基于模板生成ServiceImpl类文件
@ServiceGenerator
public interface UserService {
    User findById(Long id);
}
上述注解触发处理器运行,生成UserServiceImpl类,内部封装了基础的DAO调用逻辑。该机制减少模板代码,提升开发效率,同时保证实现一致性。

4.3 编译时校验与错误提示的最佳实践

在现代编程语言中,编译时校验是保障代码质量的第一道防线。通过静态类型检查、语法分析和语义验证,编译器能在代码运行前发现潜在问题。
启用严格的编译选项
建议在构建配置中开启所有可用的严格模式,例如在 TypeScript 中使用 strict: true:
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true
  }
}
上述配置可强制变量声明类型,防止未定义值的隐式传播,显著减少运行时异常。
自定义类型守卫提升可读性
使用类型守卫函数增强条件判断的准确性:
function isString(value: any): value is string {
  return typeof value === 'string';
}
该函数不仅返回布尔值,还向编译器提供类型推断信息,确保后续逻辑中类型安全。
  • 优先使用 const 和 readonly 限制可变性
  • 利用接口契约明确数据结构
  • 结合 IDE 实时提示快速定位错误

4.4 集成测试与IDE兼容性调优方案

在持续集成流程中,确保测试环境与主流IDE行为一致是提升开发效率的关键。不同IDE(如IntelliJ IDEA、VS Code)对构建路径、依赖解析和注解处理器的处理存在差异,需通过标准化配置消除偏差。
统一构建配置
使用Gradle或Maven时,应显式声明测试插件与编译选项,避免IDE自动推断导致不一致:

test {
    useJUnitPlatform()
    jvmArgs '-Dspring.profiles.active=test'
    systemProperty 'logging.level.root', 'WARN'
}
上述配置确保测试运行时加载正确的Spring配置文件,并控制日志输出级别,防止干扰测试结果。
IDE兼容性检查清单
  • 确认项目使用统一的JDK版本(建议JDK 17+)
  • 启用注解处理器(Annotation Processing)支持
  • 同步`.editorconfig`以统一代码风格
  • 配置相同的资源过滤规则

第五章:总结与未来可扩展方向

微服务架构的弹性设计
在高并发场景下,系统可通过引入熔断机制提升稳定性。以下为使用 Go 实现的简单熔断器代码片段:

package main

import (
    "errors"
    "fmt"
    "time"

    "golang.org/x/sync/errgroup"
)

type CircuitBreaker struct {
    failureCount int
    lastError    time.Time
}

func (cb *CircuitBreaker) Call(service func() error) error {
    if cb.failureCount > 3 && time.Since(cb.lastError) < 10*time.Second {
        return errors.New("circuit breaker open")
    }
    err := service()
    if err != nil {
        cb.failureCount++
        cb.lastError = time.Now()
        return err
    }
    cb.failureCount = 0
    return nil
}
可观测性增强方案
通过集成 OpenTelemetry 可实现全链路追踪。建议在网关层注入 trace-id,并透传至下游服务。日志采集应统一格式,推荐使用 JSON 结构化输出,便于 ELK 栈解析。
  • 部署 Prometheus 抓取各服务指标(如 QPS、延迟、错误率)
  • 使用 Jaeger 进行分布式调用链分析
  • 关键业务日志需包含 request-id 与 user-id 用于快速定位问题
边缘计算集成路径
随着 IoT 设备增长,可将部分数据预处理逻辑下沉至边缘节点。例如,在 CDN 节点部署轻量函数计算模块,实现图片缩略、日志过滤等操作,降低中心集群负载。
扩展方向技术选型预期收益
多云容灾Kubernetes + Cluster API提升可用性至 99.99%
AI 推理服务化Triton Inference Server支持模型热更新
JMeter性能测试进阶:自定义Jar包实现复杂业务逻辑与性能优化 在软件性能测试领域,JMeter作为主流的负载测试工具,其内置组件虽能满足基础测试需求,但在处理复杂业务逻辑时存在局限性。通过Java的类加载机制,我们可以将特定业务逻辑封装成独立模块,实现代码复用与执行效率提升。自定义Jar包技术正是基于这一原理,允许测试人员将加密解密、数据生成、API调用等复杂操作从JMeter脚本中剥离,以原生Java代码高效执行。这项技术不仅解决了BeanShell脚本的性能瓶颈问题,还能显著降低资源占用,使JMeter更专注于请求发送与响应验证等核心功能。在实际应用场景中,通过将 阅读详情

相关推荐

JAVA代码生成,支持模板自定义,完美运行

codeFactory 介绍: 1.codeFactory: Java代码生成,依赖rapid-generator.4.0.6.jar, 支持自定义模板生成代码, 弱业务下完全解放体力劳动. 2.ssm模板实现:pojo,dao,daoimpl,service,serviceimpl,controller,各mapper.xml 代码自动生成, 3.配置文件自动生(含:spring,springMVC,mybatis,web.xml); 代码完美运行. 使用: 1.配置generator.xml(key):basepackage,namespace,outRoot,jdbc_username,jdbc_password,jdbc_url(默认MySQL库) 2.CodeGenerator类g.generateByTable("tb_admin","tb_city");方法传参(table表名),支持批量传参和单表操作 3.main方法运行CodeGenerator类,在配置的outRoot输出路径找到生成代码,复制到对应项目包下.

java自动代码生成

可在线自动生成代码,省去复制、修改通用模板代码的繁琐过程,减少团队70%以上的开发工作量基于java的template模板引擎velocity,在定义好模板文件后,动态产生适应业务的java、xml、html、sql等代码文件。

Yang_RR的博客 5599

generator生成工具(自定义)

可以按照自己所需的代码风格实现自定义生成实体类的注释、属性注释,实现序列化接口等功能

Java基本代码生成器

mp代码生成器

t_cccc的博客 1257

java代码自动生成工具

基于swing,根据数据库表结构,自动生成(居于spring mvc + hibernate的自定义的系统框架的)代码,可以生成entity,dao,service,controller,httpmodal等,还可以生成居于jquery easyui的jsp页面,可以生成无穷级下拉框联动功能,可以根据Excel模板数据库字典生成SQL。目前支持sqlserver \oracle\mysql,支持经常使用的数据库字段类型(不包含jar包和自定义框架代码,如有需要可以交流) + "设置.数据库支持Sqlserver,Oracle\n" + "以及MySQL

generator.zip

1、已打包为可运行jar和脚本 2、模板可以自定义 3、觉得可以,可以找我要源码,方便后期扩展 4、自我提升和学习必备 5、代码已更新,支持同时多张表

Java快速开发之代码生成器

观察我们之前写的代码,会发现其中也会有很多重复内容,比如:那我们就想,如果我想做一个Book模块的开发,是不是只需要将红色部分的内容全部更换成Book即可,如:所以我们会发现,做任何模块的开发,对于这段代码,基本上都是对红色部分的调整,,以后只需要传入不同的参数,就可以根据模板创建出不同模块的dao代码。除了Dao可以抽取模块,其实我们常见的类都可以进行抽取,只要他们有公共部分即可。所以只要我们知道是对哪张表进行代码生成,这些内容我们都可以进行填充。

weixin_64051447的博客 4267

最新版java代码生成器基于springMvc+mysql 后台功能一键生成

最新版java代码生成器基于springMvc+mysql 后台功能一键生成 压缩包里的jdk文件目录 请自行下载jdk1.8.0_45版本并覆盖进去 没有jdk是运行不起来的 也可以下载其他jdk版本 但是jdk1.8.0_45这个文件目录名称不要更改 一个基于java springMvc开发的代码生成器, 1为java工程师自动编写各种复杂的增删改查功能 2我提供各种友好的service接口 3 我能提供多种http json接口 .... 这个是这个工具的使用说明地址 http://www.magicalcoder.com/ 还是学习javaFx的好工具

Java代码生成器,一键在线生成,支持自定义模板

Java在线代码生成器,支持自定义代码模板,支持Mybatis、MybatisPlus、JPA多种ORM框架

欢迎光临 4646

基于CANopenNode协议栈在正点原子探索者开发板上进行移植

配置好之后进行采用keil IDE进行代码生成即可,还需要进行CANopenNode的代码集成,并参照demo进行代码移植。发送完成后心跳包以1s的周期重新开始发送。正点原子的开发板引出的是CAN1接口。这里的心跳时间间隔设置为100ms。则将心跳包周期设置为0。

wangfandashe的博客 4697

BU61580芯片实战:手把手教你配置1553B通信的BC端寄存器(含代码解析)

本文详细解析了BU61580芯片在1553B通信中的BC端寄存器配置方法,包括关键寄存器功能映射、初始化代码解析及回环测试实现。通过实战案例和代码示例,帮助开发者快速掌握1553B通信的核心技术,提升系统稳定性和通信质量。

a1b2c的博客 224

Java实现自己想要的代码生成器!

视频教程大家好,我录制的视频《Java 之优雅编程之道》已经在 优快云 学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……视频地址:http://e...

qq_18244417的博客 5143

Plaxis软件简介及 Plaxis Python API环境搭建、自动化建模、Python全自动实现、高级案例分析

本次课程主要针对岩土工程中的各种问题(塑性、渗流、固结、动力、稳定安全、热力TM),用四天时间,教大家如何一步一步地搭建自己的Plaxis模型,包括Plaxis Python API的连接与配置、外部Python编译器的使用、Python命令流自动建模过程、Python远程脚本读取输出结果等,其中的Python建模模块尽可能做到让学员零基础开始,通过提供标准命令流库,使用搭积木、摆乐高的形式模块化进行,加强学员的易上手、可操作性。(2)钻孔的建立、土层的建立、土层属性、水力条件及初始条件、导入土层。

CCfz566的博客 1463

赶工必备!飞算 JavaAI 测试生成器,5 分钟搞定单元测试高效交付

同时,工具会自动计算代码覆盖率,清晰标注未覆盖的代码行,并给出精准的补充场景建议,开发者只需根据建议简单调整,即可将覆盖率提升至 95% 以上,无需人工逐条排查,快速满足项目上线的覆盖率要求。它以 “极致高效、高覆盖率、即用即运行” 为核心,完美适配赶工场景的所有需求,搭配无限量 tokens 权益,让开发者在紧张的工期中,无需再为单元测试耗费精力,彻底摆脱 “测试拖慢开发” 的困境,聚焦核心业务代码的开发和优化,实现项目的快速、高质量交付,真正做到 “准点下班、高效交差”。

CalEx_Tech的博客 385

Zynq实战:如何用AXI4-Stream To Video Out实现HDMI视频输出(附时序调试技巧)

本文详细介绍了基于Zynq平台使用AXI4-Stream To Video Out IP核实现HDMI视频输出的工程化解决方案。内容涵盖系统架构设计、AXI4-Stream接口优化、异步FIFO配置、时序同步调试技巧等核心环节,特别针对1080p60视频输出提供具体参数配置和性能优化建议,帮助开发者快速构建稳定的视频处理系统。

sql99的博客 462

正直摄影方式的精度估算式_利用BDS数据反演大气可降水量及其精度分析

可降水量(PWV)对中小尺度灾害性天气预报具有指示意义,是降雨强度预报的重要参数之一。自20世纪80、90年代起,国外已经对GPS探测大气可降水量进行了大量研究。国内最早由毛节泰引进并详细介绍了地基GPS反演大气可降水量的方法,近年来发展迅速并取得了一定的成果。随着中国北斗卫星导航系统(BDS)提供服务并不断地建设完善,其已经能够应用到气象学领域,可以获得大气可降水量。文献[11]利用...

weixin_39796752的博客 1246

若依(RuoYi-Vue)代码生成器使用教程|一键实现单表 CURD

无需手写 CURD 代码一键生成前后端全套代码自动生成菜单,无需手动配置规范统一,减少错误开发效率提升 80% 以上适合所有单表快速开发场景,是企业级开发必备技能。

2201_75282321的博客 502

深度强化学习 | 详解基于价值的强化学习DQN算法(附Pytorch实现)

深度Q网络DQN的核心原理是通过经验回放池和目标网络技术拟合高维状态空间,是Q-Learning算法的深度学习版本,本文分析DQN的基本算法,并给出训练实例和实际案例

FRIGIDWINTER的博客 4986

java GUID生成器 产生随机GUID的方法

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

pCITv1C的博客 2440

在zcu102开发板上使用PetaLinux运行Qt程序

请注意,上述步骤只是一个概述,并且可能需要根据特定的开发环境和要求进行适当的调整。如果你是一个初学者或者对于这些领域不太熟悉,建议在尝试之前阅读相关的文档和教程,或者寻求专业人士的帮助。在"Projects"菜单中,选择"Build & Run"选项,并在"Build"步骤中选择正确的工具链。注意:如果Qt程序依赖于其他库文件,需要将这些库文件一起复制到PetaLinux工程的根文件系统目录中,并在Qt程序中正确地配置库文件路径。如果一切顺利,PetaLinux系统将启动,并自动运行Qt程序。

UhxzCombined的博客 698

[Python图像处理] 十.形态学之图像顶帽运算和黑帽运算

数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像顶帽运算和图像黑帽运算,基础性知识希望对您有所帮助。

杨秀璋的专栏 1万+

【若依框架】—— 定制代码生成器:集成Lombok、Swagger与Mybatis-Plus的实战指南

本文详细介绍了如何定制若依框架的代码生成器,集成Lombok、Swagger与Mybatis-Plus的实战指南。通过改造模板文件,开发者可以一键生成现代化、高效的代码,显著提升开发效率。文章涵盖了依赖配置、模板改造、常见问题解决方案等关键步骤,帮助开发者快速掌握定制技巧。

weixin_28841265的博客 238

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

高级Java程序员必备的二十个技术点,你会了吗?

Spring data Jpa在支持JPA标准的基础上,提供了丰富的CRUD API以及查询表达式语言,很多查询只需要两三行代码就可以搞定,例如把函数定义成findByName,那么Spring data Jpa就会直接将这个函数解析成调用的实体仓库类中的查询Name字段,比如说在一个UserRepository里使用定义这个函数,就意味着会进行一条。因此,很多先辈们就为我们创造了不同的数据库框架,了解这些数据库框架的特点,熟练在不同的的场景中选用合适的数据库,是高级程序员必备的技能。

2301_77690238的博客 2105

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【开发效率神器】Mybatis-Plus-Generator-UI:5分钟搞定代码生成的终极指南

Mybatis-Plus-Generator-UI是一款对mybatis-plus-generator进行封装的Web UI工具,能帮助开发者通过可视化界面快速生成兼容Spring Boot、Mybatis-Plus框架的各类业务代码,包括Entity、Mapper、Service、Controller等,让繁琐的代码生成工作变得简单高效。 ## 🌟 为什么选择Mybatis-Plus-Gen

gitblog_00572的博客 728

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

分享一个 Cursor mdc 生成器,基于 Gemini 2.5,很实用!

大家好,我是 Immerse,一名独立开发者、内容创作者。我会在这里分享关于编程独立开发AI干货开源个人思考等内容。如果本文对您有所帮助,欢迎动动小手指一键三连(评论转发大部分小伙伴现在应该都使用的主力工具是 Cursor, 而一个项目的开始一定要规定定义好相应的规则,要不然就算 Claude 4 也会乱生成,从而导致代码结构越来越乱。而在这个环节中,不可缺少的一个环节就是生成 Cursor 的 mdc 规则文件, 它就是你的项目操作说明书,定义了项目的代码规范、最佳实践和技术栈使用方式等等。

weixin_41517104的博客 87

2026年软著AI生成器工具全解析:用软著通高效合规搞定申请

2026年软著申请面临更高规范要求,AI工具成为提升效率的关键,可快速生成源代码和说明文档初稿,但需警惕合规风险。核心流程包括:信息录入、AI生成文档与代码、人工复核及查重优化,强调人机协作(AI处理格式+人工完善核心逻辑)。常见误区包括过度依赖AI、代码逻辑不实及版本描述不符。实操需严格核对信息、植入真实代码、控制重复率并校验格式。AI工具虽能解决效率痛点,但必须结合人工审核确保材料真实性与合规性,避免因造假被驳回。建议通过专业服务与智能工具结合实现高效合规申请。

Vastsa的博客 1260
上一篇: 揭秘Java模块化冲突根源:如何高效整合JPMS与OSGi实现无缝依赖管理?
下一篇: C++智能指针实战指南:构建零内存泄漏决策系统的3个关键步骤
CompiTide
博客等级 码龄1年 174粉丝 2175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值