ideal中使用lombok简化代码

Lombok是一个工具,通过注解减少Java代码的冗余,比如自动生成getter、setter等。在IntelliJ IDEA中,安装Lombok插件并引入jar包后,只需在类上添加注解,如@Data,即可避免手动编写这些方法。此外,还介绍了@NonNull、@Cleanup等其他常用注解的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。

我们平时在学实体类时,都需要自动导入get,set,toString方法.如果某个属性的类型错了,我们还需要 删除get,set方法,重新导入 。这些丢失繁琐多余的事情,而且如果一个类的属性特别多时,代码看起来特别复杂。使用lombok工具只需要添加一两个注解就可以,不需要导入get,set方法。

IntelliJ IDEA 使用它的方法

  • 先安装插件

 

Paste_Image.png

  • 然后引入lombok的jar包
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.14</version>
</dependency>

在我们写实体类的时候加上注解@Data或者@Getter或者@Setter注解即可。

lombok 常用注解介绍

  1. @NonNull

    使用 @NonNull 注解修饰的字段 通过 set 方法设置时如果为 null, 将抛出 NullPointerException

  2. @Cleanup

    主要用来修饰 IO 流相关类, 会在 finally 代码块中对该资源进行 close();

  3. @Getter,@Setter

    为字段生成 getter,setter 方法, 标记到类上表明为所有字段生成

  4. @ToString

    生成 toString 方法, 默认打印所有非静态字段

  5. @EqualsAndHashCode

    生成 equals 和 hashCode 方法

  6. @NoArgsConstructor,@RequiredArgsConstructor,@AllArgsConstructor

    NoArgsConstructor 无参构造函数
    RequiredArgsConstructor 为未初始化的 final 字段和使用 @NonNull 标注的字段生成构造函数
    AllArgsConstructor 为所有字段生成构造函数
    7. @Data
    > 相当于同时使用 @Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstructor
    8. @Value
    > 使用后, 类将使用 final 进行修饰, 同时使用 @ToString,@EqualsAndHashCode,@AllArgsConstructor,@Getter

  7. @Builder

    创建一个静态内部类, 使用该类可以使用链式调用创建对象
    如 User 对象中存在 name,age 字段, User user=User.builder().name("姓名").age(20).build()
    10. @SneakyThrows
    > 对标注的方法进行 try catch 后抛出异常, 可在 value 输入需要 catch 的异常数组, 默认 catch Throwable

  8. @Synchronized

    在标注的方法内 使用 synchronized($lock) {} 对代码进行包裹 ,$lock 为 new Object[0]
    12. @Log,@CommonsLog,@JBossLog,@Log,@Log4j,@Log4j2,@Slf4j,@XSlf4j
    > 生成一个当前类的日志对象, 可以使用 topic 指定要获取的日志名称

在项目中我一般直接用@Data注解。例如:

@Entity
@Table(name = "tb_user")
@Data
public class User extends BaseEntity {

   private static final long serialVersionUID = 1L;

   /**
    * 用户id
    */
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "id", nullable = false)
   private Integer id;

   /**
    * 账户名
    */
   private String userName;

   /**
    * 昵称
    */
   private String nickName;

   /**
    * 用户密码
    */
   private String password; 
}

 

### 大型语言模型参数配置与调优 大型语言模型(LLM)通常基于神经网络架构构建,这些模型通过大量数据训练来学习自然语言处理任务中的模式和结构[^2]。对于LLM的参数配置与调优而言,主要关注以下几个方面: #### 学习率设置 学习率决定了权重更新的速度,在优化过程中扮演着至关重要的角色。过高的学习率可能导致收敛不稳定;而过低的学习率则会延长训练时间甚至陷入局部最优解。 #### 批量大小的选择 批量大小影响梯度估计的质量以及内存消耗情况。较大的批次可以提供更稳定的梯度估计但是需要更多的计算资源支持。相反较小的批次数虽然节省硬件成本但也可能带来更高的方差从而阻碍有效学习过程。 #### 正则化技术应用 为了防止过拟合现象发生,可以在损失函数中加入正则项或者采用dropout等方法随机丢弃部分节点连接以增强泛化能力。 #### 初始化策略选取 合适的初始化方式有助于加速早期阶段的训练进展并改善最终性能表现。常见的做法有Xavier/Glorot initialization 和 He initialization两种方案可供选择取决于激活函数特性不同做出相应调整。 ```python import torch.nn as nn class LLM(nn.Module): def __init__(self, vocab_size, embed_dim=512, hidden_dim=768, num_layers=12): super(LLM, self).__init__() self.embedding = nn.Embedding(vocab_size, embed_dim) self.transformer_blocks = nn.TransformerEncoderLayer(d_model=hidden_dim, nhead=12) def forward(self, x): embedded_input = self.embedding(x) output = self.transformer_blocks(embedded_input) return output ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值