6、Lombok-速查手册:常用注解语法与生成代码对照表

IDEA 安装配置完全指南:从 JDK 到 Tomcat 的避坑手册 Java开发离不开高效的集成开发环境,IntelliJ IDEA凭借智能补全与强大重构能力成为主流选择。但环境搭建涉及JDK版本匹配、Maven仓库配置、应用服务器关联、Lombok注解处理等关键环节,任何一个细节失误都会阻断项目启动。本文从开发环境的基本概念讲起,解释IDE与JDK、构建工具、运行容器之间的协作原理,并针对常见报错如“配置本地Tomcat”时找不到选项、“lombok requires enabled annotation processing”导致编译失败等高频问题,给出可落地的排查方案 阅读详情

使用说明:本手册按功能分类整理 Lombok 常用注解,包含完整参数说明、默认行为和生成代码示例,便于开发时快速查阅。


1. 基础 POJO、DTO、VO 注解

@Getter / @Setter

注解位置
  • 类级别:作用于所有非静态字段
  • 字段级别:作用于单个字段
参数说明
参数类型默认值说明
valueAccessLevelPUBLIC生成方法的访问级别
onMethod_Annotation[]{}为生成的方法添加注解(Java 8+ 语法)
onParam_Annotation[]{}为 setter 参数添加注解

💡 AccessLevel 可选值:PUBLIC、PROTECTED、PACKAGE、PRIVATE、NONE

使用示例
// 类级别
@Getter
@Setter
public class User {
    private String name;
    private int age;
}

// 字段级别 + 自定义访问级别
public class SecureUser {
    @Getter(AccessLevel.PROTECTED)
    @Setter(AccessLevel.PRIVATE)
    private String password;
    
    @Getter
    @Setter
    private String username;
}
生成代码
// User 类生成
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
public int getAge() { return this.age; }
public void setAge(int age) { this.age = age; }

// SecureUser 类生成
protected String getPassword() { return this.password; }
private void setPassword(String password) { this.password = password; }
public String getUsername() { return this.username; }
public void setUsername(String username) { this.username = username; }

@ToString

参数说明
参数类型默认值说明
includeFieldNamesbooleantrue是否包含字段名
excludeString[]{}排除的字段名
ofString[]{}仅包含的字段(优先级高于 exclude)
callSuperbooleanfalse是否调用父类 toString()
doNotUseGettersbooleanfalse直接访问字段而非 getter
使用示例
@ToString(exclude = {"password", "secretKey"})
public class User {
    private String username;
    private String password;
    private String secretKey;
    private int loginCount;
}

@ToString(of = {"id", "name"}, callSuper = true)
public class Employee extends Person {
    private Long id;
    private String name;
    private Double salary; // 不会出现在 toString 中
}
生成代码
// User 类生成
@Override
public String toString() {
    return "User(username=" + this.username + 
           ", loginCount=" + this.loginCount + ")";
}

// Employee 类生成
@Override
public String toString() {
    return super.toString() + 
           "Employee(id=" + this.id + 
           ", name=" + this.name + ")";
}

@EqualsAndHashCode

参数说明
参数类型默认值说明
excludeString[]{}排除的字段
ofString[]{}仅包含的字段
callSuperbooleanfalse是否包含父类字段
doNotUseGettersbooleanfalse直接访问字段
cacheStrategyCacheStrategyCACHE_NOTHING缓存策略(高级用法)
使用示例
@EqualsAndHashCode(exclude = {"lastModified"})
public class Article {
    private Long id;
    private String title;
    private LocalDateTime lastModified;
}

@EqualsAndHashCode(callSuper = true)
public class Dog extends Animal {
    private String breed;
}
生成代码
// Article 类生成
@Override
public boolean equals(Object o) {
    if (o == this) return true;
    if (!(o instanceof Article)) return false;
    Article other = (Article) o;
    if (!other.canEqual(this)) return false;
    final Object this$id = this.id;
    final Object other$id = other.id;
    if (this$id == null ? other$id != null : !this$id.equals(other$id)) return false;
    final Object this$title = this.title;
    final Object other$title = other.title;
    if (this$title == null ? other$title != null : !this$title.equals(other$title)) return false;
    return true;
}

@Override
public int hashCode() {
    final int PRIME = 59;
    int result = 1;
    result = result * PRIME + (this.id == null ? 43 : this.id.hashCode());
    result = result * PRIME + (this.title == null ? 43 : this.title.hashCode());
    return result;
}

// canEqual 方法(用于继承场景)
protected boolean canEqual(Object other) {
    return other instanceof Article;
}

2. 组合注解

@Data

等价注解组合
@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
注意事项
  • 不生成无参构造器!需要额外添加 @NoArgsConstructor
  • 所有字段都参与 equals/hashCode/toString
使用示例
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Product {
    private Long id;
    private String name;
    private Double price;
}
生成代码

包含上述所有注解的生成内容,外加:

// 无参构造器
public Product() {}

// 全参构造器
public Product(Long id, String name, Double price) {
    this.id = id;
    this.name = name;
    this.price = price;
}

@Value

特点
  • 创建不可变类
  • 所有字段自动变为 private final
  • 只生成 getter,不生成 setter
  • 生成全参构造器
使用示例
@Value
public class Point {
    int x;
    int y;
}
生成代码
public final class Point {
    private final int x;
    private final int y;
    
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
    
    public int getX() { return this.x; }
    public int getY() { return this.y; }
    
    // toString, equals, hashCode 方法...
    
    // 注意:没有 setter 方法!
}

3. 构造器注解

@NoArgsConstructor

参数说明
参数类型默认值说明
accessAccessLevelPUBLIC构造器访问级别
forcebooleanfalse强制生成(即使有 final 字段)
使用示例
@NoArgsConstructor
public class User {
    private String name;
}

@NoArgsConstructor(force = true)
public class ImmutableUser {
    private final String id = "default";
    private final String name;
}
生成代码
// User 类
public User() {}

// ImmutableUser 类(force = true)
public ImmutableUser() {
    // final 字段被强制初始化为默认值
    this.name = null; // 注意:这可能导致 NullPointerException
}

@AllArgsConstructor

参数说明
参数类型默认值说明
accessAccessLevelPUBLIC构造器访问级别
staticNameString""生成静态工厂方法
使用示例
@AllArgsConstructor(staticName = "of")
public class Coordinate {
    private int x;
    private int y;
}
生成代码
// 常规构造器
public Coordinate(int x, int y) {
    this.x = x;
    this.y = y;
}

// 静态工厂方法(staticName = "of")
public static Coordinate of(int x, int y) {
    return new Coordinate(x, y);
}

@RequiredArgsConstructor

生成规则

为以下字段生成构造器:

  • 所有 final 字段
  • 所有标记 @NonNull 的字段
使用示例
@RequiredArgsConstructor
public class UserService {
    private final UserRepository userRepository;
    
    @NonNull
    private String defaultRole;
}
生成代码
public UserService(UserRepository userRepository, String defaultRole) {
    this.userRepository = userRepository;
    if (defaultRole == null) {
        throw new NullPointerException("defaultRole is marked non-null but is null");
    }
    this.defaultRole = defaultRole;
}

4. Builder 模式注解

@Builder

参数说明
参数类型默认值说明
builderMethodNameString"builder"Builder 方法名
buildMethodNameString"build"build 方法名
toBuilderbooleanfalse生成 toBuilder 方法
使用示例
@Builder(builderMethodName = "newBuilder", buildMethodName = "create")
public class Order {
    private String orderId;
    private Double amount;
}
生成代码
// Builder 内部类
public static class OrderBuilder {
    private String orderId;
    private Double amount;
    
    OrderBuilder() {}
    
    public OrderBuilder orderId(String orderId) {
        this.orderId = orderId;
        return this;
    }
    
    public OrderBuilder amount(Double amount) {
        this.amount = amount;
        return this;
    }
    
    public Order create() { // buildMethodName = "create"
        return new Order(orderId, amount);
    }
}

// Builder 方法
public static OrderBuilder newBuilder() { // builderMethodName = "newBuilder"
    return new OrderBuilder();
}

@Singular(集合字段支持)

支持的集合类型
  • List<T> → element(T) 和 elements(Collection<T>)
  • Set<T> → element(T) 和 elements(Collection<T>)
  • Map<K,V> → entry(K, V) 和 entries(Map<K,V>)
使用示例
@Builder
public class ShoppingCart {
    @Singular("product")
    private List<String> products;
    
    @Singular
    private Map<String, Integer> quantities;
}
使用方式
ShoppingCart cart = ShoppingCart.builder()
    .product("Laptop")           // 添加单个元素
    .product("Mouse")            // 继续添加
    .products(Arrays.asList("Keyboard", "Monitor")) // 批量添加
    .entry("Laptop", 1)          // Map 单个条目
    .entries(Map.of("Mouse", 2, "Keyboard", 1))     // Map 批量
    .build();

5. 日志注解

@Slf4j

生成代码
// 源码
@Slf4j
public class MyService {
    public void doSomething() {
        log.info("Doing something");
    }
}

// 生成
public class MyService {
    private static final org.slf4j.Logger log = 
        org.slf4j.LoggerFactory.getLogger(MyService.class);
    
    public void doSomething() {
        log.info("Doing something");
    }
}
其他日志框架支持
注解生成的日志实例类型
@Logjava.util.logging.Logger
@Log4jorg.apache.log4j.Logger
@Log4j2org.apache.logging.log4j.Logger
@CommonsLogorg.apache.commons.logging.Log
@JBossLogorg.jboss.logging.Logger

6. 高级功能注解

@SneakyThrows

参数说明
参数类型默认值说明
valueClass<? extends Throwable>[]Exception.class要 sneaky 抛出的异常类型
使用示例
@SneakyThrows
public String readFile(String path) {
    return Files.readString(Paths.get(path)); // IOException
}

@SneakyThrows({IOException.class, SQLException.class})
public void doDatabaseOperation() {
    // 可能抛出两种检查异常
}
生成代码
public String readFile(String path) {
    try {
        return Files.readString(Paths.get(path));
    } catch (IOException e) {
        throw lombok.Lombok.sneakyThrow(e);
    }
}

@Cleanup

参数说明
参数类型默认值说明
valueString"close"清理方法名
使用示例
public byte[] readFile(String path) throws IOException {
    @Cleanup
    FileInputStream fis = new FileInputStream(path);
    return fis.readAllBytes();
}

public void customResource() {
    @Cleanup("destroy")
    MyResource resource = new MyResource();
    // 使用 resource
} // 自动调用 resource.destroy()
生成代码
public byte[] readFile(String path) throws IOException {
    FileInputStream fis = new FileInputStream(path);
    try {
        return fis.readAllBytes();
    } finally {
        if (fis != null) {
            fis.close();
        }
    }
}

@With

使用示例
@With
public class Point {
    private final int x;
    private final int y;
}
生成代码
public Point withX(int x) {
    return this.x == x ? this : new Point(x, this.y);
}

public Point withY(int y) {
    return this.y == y ? this : new Point(this.x, y);
}

7. 快速参考表

注解主要用途关键参数注意事项
@Getter/@Setter生成访问器value(AccessLevel)可控制访问级别
@ToString生成 toStringexclude, of, callSuper敏感字段务必排除
@EqualsAndHashCode生成相等性方法exclude, of, callSuper继承时设 callSuper=true
@DataPOJO 万能注解无不生成无参构造器
@Value不可变对象无字段自动 final
@NoArgsConstructor无参构造器forceJPA/JSON 必需
@AllArgsConstructor全参构造器staticName可生成静态工厂
@RequiredArgsConstructor必需字段构造器无Spring 构造器注入推荐
@BuilderBuilder 模式builderMethodName, toBuilder复杂对象创建首选
@Singular集合 Builder 支持无配合 @Builder 使用
@Slf4j日志实例无推荐 SLF4J
@SneakyThrows绕过检查异常value谨慎使用
@Cleanup自动资源管理value(方法名)替代 try-with-resources
@With不可变副本无函数式编程友好

8. 使用建议

✅ 推荐组合

// DTO 标准写法
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString(exclude = "password")
public class UserDTO {
    // ...
}

// 不可变配置类
@Value
@Builder
public class DatabaseConfig {
    // ...
}

❌ 避免组合

// 危险:JPA 实体不要用 @Data
@Data
@Entity
public class User { /* ... */ }

// 冗余:@Data 已包含 @Getter/@Setter
@Data
@Getter
@Setter
public class Product { /* ... */ }

💡 记住:Lombok 是工具,理解生成的代码才能用好它!

Qwen3.6-Plus智能体工作流实战:从API生成到项目级协同 智能体(Agent)是大模型落地工程化的核心范式,其本质是将规划、记忆与执行能力深度耦合的自动化任务引擎。相比传统代码生成模型,具备强上下文理解与多模态对齐能力的智能体,能真正承接端到端开发任务——如解析PRD文档、比对现有代码、调用工具链、生成可编译运行的Spring Boot接口,并主动校验业务逻辑一致性。Qwen3.6-Plus通过百万级上下文支持、动态任务分解机制和视觉-代码跨模态锚定,显著提升API生成、SDK构建与UI-Code映射等场景的交付质量与闭环率,成为低代码平台、微服务重构与研发提效的 阅读详情

相关推荐

Kimi K2.6长周期编程:解决上下文失焦与工程状态断连

长周期编程是指大模型在持续数小时乃至十余小时的复杂软件工程任务中,保持上下文一致性、状态连续性和责任可追溯性的能力。其核心原理在于分层式上下文缓存、状态感知型代码生成与渐进式错误自愈三大技术机制,突破传统LLM的短时记忆瓶颈。该能力显著提升真实项目中的需求闭环效率、跨模块协同可靠性及遗留系统重构可行性,广泛应用于金融风控引擎搭建、微服务持续演进、自动化代码审计等高确定性工程场景。Kimi K2.6正是以‘13小时连续编程’为典型表征,将LLM从代码片段生成器升级为轻量级项目协作者,直击开发者面临的上下文失焦

weixin_33743880的博客 416

SpringBoot项目中Lombok编译错误解决方案

Java注解处理器是编译时处理源代码元数据的核心技术,Lombok框架通过该机制实现自动生成getter/setter等样板代码。当出现'Lombok annotation handler failed'错误时,通常源于版本冲突或处理器加载异常。在SpringBoot项目中,这类问题会影响开发效率,特别是在IntelliJ IDEA与JDK17+环境下。解决方案涉及版本管理、构建工具配置和IDE缓存清理,确保Lombok与开发环境兼容性。掌握这些排查技巧能有效提升Java项目的构建稳定性。

cigang4063的博客 484

MyBatis开发效率革命:Mybatis-Plus与MybatisX组合实战指南

在Java企业级应用开发中,ORM框架是连接应用与数据库的核心桥梁,其设计原理旨在通过对象关系映射,将数据库操作抽象为面向对象的方法调用,从而提升开发效率并降低SQL维护成本。MyBatis作为一款半自动化的持久层框架,因其灵活的SQL编写能力而广受欢迎,但在大型项目中,手动编写大量重复的CRUD代码和XML映射文件,成为了制约开发效率的瓶颈。为此,增强工具包Mybatis-Plus应运而生,它通过提供通用Mapper、强大的条件构造器、内置分页插件和代码生成器,实现了对MyBatis的深度封装与扩展,极大

weixin_30530939的博客 408

Java基础入门:环境搭建与核心语法解析

Java作为一门面向对象的编程语言,其核心特性包括跨平台性、自动内存管理和丰富的类库支持。通过JVM(Java虚拟机)实现平台无关性,使得Java程序能够‘一次编写,到处运行’。在开发实践中,Java广泛应用于企业级应用、移动开发和大数据处理等领域。本文重点解析Java基础语法、面向对象编程原理以及常见开发工具的使用技巧,帮助开发者快速掌握Java编程的核心概念。特别针对环境变量配置、数据类型与运算符、流程控制等高频问题提供实用解决方案,并推荐使用OpenJDK和IntelliJ IDEA等工具提升开发效率

aizexi2652的博客 427

基层信息化技术实战笔记 · 综合手册

内容是关于基层信息化技术实战笔记综合手册,涵盖Java Web全栈、Python爬虫、网络运维、办公自动化等。摘要要简洁概括核心内容。</think>基层信息化技术实战笔记综合手册,涵盖Java Web全栈开发、Python数据采集、网络运维与办公自动化等岗位技能,提供从SpringBoot搭建到增删改查等实战速查指南。

zbguolei的专栏 35

IDEA中SpringBoot+MyBatis-Plus快速跑通CRUD的6个关键动作

SpringBoot与MyBatis-Plus是Java后端开发中最常用的轻量级框架组合,其核心价值在于通过约定优于配置实现零XML CRUD开发。原理上依赖自动配置、注解驱动映射和动态代理机制,技术价值体现在大幅降低DAO层样板代码、统一SQL日志与分页能力,并天然支持RESTful接口快速暴露。典型应用场景包括毕业设计、外包项目及内部管理系统原型开发。但实际落地常因IDEA环境配置偏差(如Maven解析异常、Lombok注解处理未启用)、Spring Boot 3.x与MyBatis-Plus 4.3+

weixin_29230649的博客 178

IntelliJ IDEA高频问题速查手册:开发者的避坑指南

本文聚焦开发者日常高频痛点,覆盖从代码报错到性能调优的实战场景,助你快速定位问题,高效解决!2. ​**"fatal: branch 'master' does not exist":Git操作翻车现场**3. ​**"Cannot open local terminal":终端神秘消失**1. ​**"Cannot resolve method":代码突然变红**:关注公众号「IDEA急救站」,回复“配置模板”获取优化后的。: Lombok插件导致的代码解析问题。四、插件引发的“血案”

qq_43393995的博客 847

全局特征描述子 CVFH (Clustered Viewpoint Feature Histogram) 原理

特性VFHCVFH处理对象整个物体点云物体点云被分割后的稳定表面块(簇)对遮挡的鲁棒性弱。遮挡会破坏全局形状,导致描述子失效。极强。只依赖于稳定存在的部分。描述子维度263 维308 维 (263 + 45 SC)输出数量一个物体产生1 个描述子一个物体可能产生多个签名计算复杂度相对较低较高(需先聚类)主要应用场景完整、分割良好的物体存在遮挡、背景杂波的不完整物体。

weixin_37079656的博客 619

Java核心术语解析与实战应用手册

Java作为面向对象编程语言的代表,其核心术语体系是开发者必须掌握的基础知识。从JVM运行原理到OOP编程范式,再到并发编程和性能调优,这些术语构成了Java技术的骨架。理解JVM如何通过JIT编译优化性能、GC机制如何自动管理内存,以及synchronized和volatile关键字如何保证线程安全,对于开发高性能应用至关重要。在实际工程中,这些概念广泛应用于企业级系统开发、分布式架构设计等场景。本文通过解析JVM、JDK、OOP等高频术语,结合HotSpot VM优化、线程池配置等实践案例,帮助开发者构

weixin_34396103的博客 331

【FLINK+Kerberos+kafka】在华为云上 bootstrap.server使用IP的GSS initiate failed 问题处理

目前互联网上所有的资料显示都是说没有正确设置KDC之类的,但本博主实际通过java代码低版本 如使用kafka-client 0.11.0 ,2.4.0等版本手动创建kafkaconfig 或者使用华为云的LoginUtils类 都能够正常链接,所以应该是高版本添加了相关配置,或者flink在subtask 创建kafkaAdminClient时 丢弃或使用了默认的一些配置行为,导致了客户端和kdc验证之间出现了principal 不一致导致验证失败。client.dns.lookup配置项作用。

honghanyue1791的博客 574

相机通用类之海康相机,软触发硬触发(飞拍),并输出halcon格式对象

如何显示图像:可以访问我文章开头的博客,通过编写相机通用类即可,程序中是有继承通用类,通过访问相机通用的获取图像数据,从而传输图像数据。具体可以查看相机通用类。整体过程其实比较简单,由于海康相机没有像一些品牌相机一样可以直接使用序列号开启相机,所以我们需要通过对相机信息进行索引,根据索引到的相机序列号来开启相机。

m0_51559565的博客 7619

FlyCms常见问题排查手册:安装运行中的15个坑与解决方案

FlyCms 是一款基于 Spring Boot 的 JAVA 开源问答社区系统,集问答、文章、分享、话题、积分、全文检索于一体,非常适合快速搭建知识库与在线问答社区。但正因为它整合了 MySQL、Solr、Ehcache、Quartz 等众多组件,新手在安装运行时往往会在环境、配置、打包环节踩坑。本文将结合 FlyCms 常见问题,为你整理安装运行中最常见的 15 个坑与解决方案,照着排查,十分

gitblog_07846的博客 710

【C++PTA】6-1 Point类的运算 (10 分)

定义Point类,有坐标x,y两个私有成员变量;对Point类重载“+”(相加)、“-”(相减)和“==”(相等)运算符,实现对坐标的改变,要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p; cout<<p<<endl;可以输出该点对象的坐标。 函数接口定义: 实现Point类。 裁判测试程序样例: /* 请在这里填写答案 */ int main(int argc, char const *argv[]) { P

libertye的博客 2367

Java布尔字段别加is前缀:Lombok与Jackson的序列化陷阱

Java开发中,基于JavaBeans规范的属性命名规则常因Lombok等工具的默认行为而产生误解。许多开发者习惯用isSuccess命名布尔字段,却不知道Lombok生成的getter是isSuccess()而setter是setSuccess(),导致Jackson等序列化框架通过getter反推属性名时输出为success而非isSuccess,引发接口联调与JSON字段对不上的事故。理解getter方法名与JavaBeans属性名的映射原理,有助于规避此类风险。本文结合Jackson、Fastjso

weixin_33491377的博客 255

jmeter小白下载安装步骤

本文仅仅简单介绍了jmeter工具的下载安装,以及基础的操作步骤。

昔年@曦的博客 3492

开源有限元dealii学习——step-1

#简介 dealii是一款开源的求解偏微分方程的有限元软件,它优点: 1.多种单元类型 2.可以自适应网格 3.文档和范例齐全 4.与其它库有良好的接口 5.使用c++编写 #安装 dealii可以在官网上或者github上下载源码,解压后进入源文件目录安装。 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/path/to/install...

weixin_42312251的博客 4384

Java代码规范检查插件选型与落地实践:Checkstyle、PMD、SonarLint深度对比

在软件工程实践中,代码质量是保障项目可维护性与团队协作效率的基石。其核心原理在于通过静态代码分析技术,对源代码进行自动化检查,识别出不符合预定规范的代码模式、潜在缺陷及安全漏洞。这项技术的核心价值在于将质量保障左移,在编码阶段而非测试或上线后发现问题,从而显著降低修复成本与线上风险。它广泛应用于团队协作开发、持续集成流水线及技术债务管理等多个场景。本文聚焦于Java生态中主流的代码规范检查工具,深入剖析Checkstyle、PMD与SonarLint等插件的核心机制与实战应用,为团队构建自动化质量防线提供关

weixin_33850890的博客 437

LTE信令流程——切换

LTE信令流程 切换 切换是由基站发起的,不同于小区重选,小区重选是由UE发起的。 基站利用移动性管理算法给UE下发测量任务,在RRC重配置消息中携带MeasConfig信元给UE下发测量配置 切换有三种场景: 同一基站内不同小区的切换 不同基站间基于X2的切换(MME不变) 不同基站间基于S1的切换(MME/SGW可能改变) 1. 同一基站内不同小区的切换 连接态的UE在一个基站的不同小区之间移动 UE上报合适的测量报告(Measure Reports),触发基站切换 基站下发切换命令给UE,

Hxx的博客 1万+

Java开发实战:从基础语法到企业级应用全解析

Java作为企业级开发的主流语言,其核心语法与JVM原理构成了开发者的技术基石。理解集合框架的线程安全机制、异常处理规范等基础概念,是构建健壮应用的关键。在生产环境中,内存管理(如OOM排查)和并发控制(原子性/可见性保障)直接影响系统稳定性。通过JDK多版本管理、IDE调优等工程实践,开发者能显著提升开发效率。本文基于企业级开发经验,详解Java环境配置、核心语法陷阱等高频问题,特别适合从语法学习过渡到实战开发的工程师参考。

weixin_31292729的博客 92

软考高级信息系统项目管理师系列论文之:百篇软考高级信息系统项目管理师论文范文

软考高级信息系统项目管理师系列论文之:百篇软考高级信息系统项目管理师论文范文

zhengzaifeidelushang的博客 3578

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java后端常用技术选型 |(六)避坑手册

Java后端常用技术选型 |(六)避坑手册

qq_20236937的博客 952

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

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

Spring Boot项目在IDEA中启动失败全排查(2024最新避坑手册)

IDEA搭建Spring Boot项目启动失败?本文系统梳理2024常见原因与解决方案,涵盖依赖冲突、JDK版本适配、Maven配置、主类路径及IDE缓存等关键排查点,实测有效、步骤清晰。适合新手快速定位问题,值得收藏。

InstrIsle的博客 88

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

代码智能体实战避坑指南:从认知错位到分层生成

代码智能体不是高级自动补全,而是需重新定义协作关系的开发伙伴。其核心原理在于基于自然语言理解业务意图、构建逻辑图谱并生成可执行代码,技术价值体现在提升交付效率与降低重复劳动,典型应用场景包括ERP定制开发、高并发接口优化和合同审批流重构。实践中必须规避‘全栈幻觉’与领域知识断层,尤其需警惕提示词中缺乏业务动因和现状快照所导致的逻辑偏差。本文聚焦真实工程落地中的5大高频翻车点,覆盖角色认知、提示词结构、分层生成、审阅流程与本地化部署等关键环节。

weixin_30905133的博客 430

Spring Boot注解“突然消失”?六大典型原因与系统排查指南

Java注解本身依赖类加载与反射机制,在Spring Boot项目中还需经过包扫描、自动装配和代理处理等流程。当编译报“找不到符号”或“程序包不存在”时,往往并非代码写错,而是依赖缺失、版本冲突、包扫描范围失配、Lombok注解处理器被忽略、IDE缓存损坏或注解元配置有误等原因导致。掌握依赖树分析、BOM版本统管、注解处理器配置检查等排查手段,能快速定位并解决注解失效问题。这套方法对微服务、多模块工程的日常维护尤为实用,也能帮助开发者在Spring Boot升级后从容应对“注解突然消失”的诡异现象。本文系统

weixin_34098209的博客 223

Spel快速入门及查找手册

文章目录Spel快速查找手册基础知识@Value的两种格式Spel Context的作用取值示例Java对象获取对象中属性获取集合里的对象获取集合里对象的属性获取对象获取对象并调用方法调用工具类的静态方法不经常用,可以了解集合判空集合过滤设值基础类型以及包装类集合设值在属性上调用方法备注示例代码文档 Spel快速查找手册 此博文为Spel速查手册,用来快速查找平时开发中会出现的Spel。如果需要更详细的代码示例,可在示例代码中找到 基础知识 @Value的两种格式 在Springboot中,@Value有两

本博客已迁移到 https://jacksparrow414.com 1884

Claude全链路AI编程工作流:上下文锚定与渐进式生成实战

AI编程不是简单提问生成代码,而是围绕软件工程本质构建可控协作范式。理解‘上下文编排’与‘渐进式生成’两大核心原理,是实现高可信度AI辅助开发的技术前提——前者解决模型对语法结构、业务语义和组织规范的认知缺失,后者通过原子化、可验证的操作序列规避幻觉与不可维护性。其技术价值在于将AI定位为可审计的协作者,而非黑盒生成器,显著提升复杂系统中需求到生产代码的端到端交付效率与质量稳定性。典型应用场景包括金融级支付重构、遗留系统OpenAPI补全、CI/CD嵌入式编码规范落地等强约束工程环境。

weixin_33733810的博客 380
上一篇: 5、Lombok原理深入剖析:编译期注解处理机制与替代方案对比
下一篇: 1、网关分类详解:从网络层到应用层的完整网关体系
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值