记录踩过的坑-Java

目录

运行时识别对象和类的信息

Field

Java方法形参中的‘...’

java.net.NetworkInterface

JUnit @Ignore

LinkedHashMap

fail-fast机制

lombok


运行时识别对象和类的信息

在 Java 中有两种方式可以让我们在运行时识别对象和类的信息。一种是 RTTI(运行时类型识别:Run-Time Type Identification),它假定了我们在编译时已经知道了所有的类型;另一种是我们本文要说的反射机制,它允许我们在运行时获取和使用类的信息。无论是 RTTI 还是反射,其本质都是一样的,都是去动态的获取类的信息。它们唯一不同的是,RTTI 在编译时期知道要解析的类型,而反射是在运行时才知道要解析的类型。

Field

Field是一个类,位于java.lang.reflect包下。在Java反射中Field类描述的是类的属性信息,功能包括:

  • 获取当前对象的成员变量的类型
  • 对成员变量重新设值

Field使用示例:

class Test{

private int a; //private field私有域

protected double b; //protected field保护域

public String c; //public field公共域

Test d; //default access field默认访问域

public static Object e; //public static field公共静态域

......

} 

Java方法形参中的‘...’

如果是在方法形参里面出现数据类型后面加三个点,表示的是可变参数,即传入的参数可以随意,你传多少个参数都被放到一个列表里面。
例子:调用以下方法将会输出传入方法的每个变量。

public static void dealArray(int...arr) {
    for(int i: arr){
    	System.out.print(i);
    }
}

语法格式:{@link 全路径包名#方法名(参数类型列表)}

可以链接代码,让注释看的更清楚易懂

{@link Constants#LONGLIVE} 的意思其实就是告诉你LONGLIVE参数在哪里,即在Constants类的LONGLIVE对象

java.net.NetworkInterface

此类表示由名称和分配给此接口的IP地址列表组成的网络接口。它用于标识多播组加入的本地接口。接口通常以诸如“le0”之类的名称而为人所知。

JUnit @Ignore

注解下的测试方法将被忽略,不被执行。

LinkedHashMap

LinkedHashMap继承于HashMap,跟HashMap一样,它也是提供了key-value的存储方式,并提供了put和get方法来进行数据存取。

HashMap是无序的,当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap了。

fail-fast机制

“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制。当多个线程对集合进行结构上的改变的操作时,有可能会产生fail-fast机制。记住是有可能,而不是一定。例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出 ConcurrentModificationException 异常,从而产生fail-fast机制。

要了解fail-fast机制,我们首先要对ConcurrentModificationException 异常有所了解。当方法检测到对象的并发修改,但不允许这种修改时就抛出该异常。同时需要注意的是,该异常不会始终指出对象已经由不同线程并发修改,如果单线程违反了规则,同样也有可能会抛出改异常。诚然,迭代器的快速失败行为无法得到保证,它不能保证一定会出现该错误,但是快速失败操作会尽最大努力抛出ConcurrentModificationException异常,所以因此,为提高此类操作的正确性而编写一个依赖于此异常的程序是错误的做法,正确做法是:ConcurrentModificationException 应该仅用于检测 bug。

lombok

lombok是一个可以帮助我们简化java代码编写的工具类,尤其是简化javabean的编写,即通过采用注解的方式,消除代码中的构造方法,getter/setter等代码,使我们写的类更加简洁,当然,这带来的副作用就是不易阅读。注意需要安装

lombok支持的一些常见的注解。

@NonNull
@Cleanup
@Getter/@Setter
@ToString
@EqualsAndHashCode
@NoArgsConstructor/@RequiredArgsConstructor /@AllArgsConstructor
@Data
@Value
@SneakyThrows
@Synchronized
@Log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql-connector-java-bin是MySQL官方提供的Java连接器,用于在Java应用程序中连接和操作MySQL数据库。它是一个JDBC驱动程序,提供了与MySQL数据库的通信和交互的功能。 mysql-connector-java-bin的主要特点包括: 1. 高性能:它通过使用底层的原生协议与MySQL数据库进行通信,提供了高效的数据传输和处理能力。 2. 可靠性:它经过广泛测试和验证,具有稳定性和可靠性。 3. 兼容性:它支持最新的MySQL数据库版本,并与Java平台的各种版本兼容。 4. 安全性:它提供了对MySQL数据库的安全访问,包括身份验证和加密传输等功能。 使用mysql-connector-java-bin连接MySQL数据库的步骤如下: 1. 下载并安装mysql-connector-java-bin。 2. 在Java项目中引入mysql-connector-java-bin的jar包。 3. 在代码中使用JDBC API来连接和操作MySQL数据库。 以下是一些常见的相关问题: 1. 如何下载和安装mysql-connector-java-bin? 2. 如何在Java项目中引入mysql-connector-java-bin的jar包? 3. 如何使用mysql-connector-java-bin连接MySQL数据库? 4. 如何执行SQL查询和更新操作? 5. 如何处理连接错误和异常? 6. 如何配置连接参数,如用户名、密码、数据库名称等? 7. 如何处理事务操作? 8. 如何使用连接池管理数据库连接? 9. 如何处理结果集和数据类型转换? 10. 如何优化数据库访问性能? 请注意,以上问题仅供参考,您可以根据自己的需求提出更具体的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值