CHuiL

effective java学习记录

Chapter 2. Item 6: Avoid creating unnecessary objects(避免创建不必要的对象) 以下代码每执行一次都会产生一个新的实例对象 String s = new String("volatile"); // DON'T DO THIS! 使用以下代码,可以避免重复创建实例; String s = "volatile"; 使用常量赋值,会在常...

对比hashtable、hashmap、treemap不同

java

Hashtable、HashMap、TreeMap基本特征对比 Hashtable:同步的,不支持null键和值; HashMap:不同步的,支持null键值,底层用数组+链表(可进化为树)进行存储; TreeMap:基于红黑树的顺序访问map,它的get put remove操作都是O(log(n));具体顺序可以实现Comparator来决定; LinkedHashM...

checked exception、unchecked exception 与 Error

exception

checked exception 继承自Exception 的异常类,使用该异常的方法必须声明throws该异常,并且调用者需要try-catch它 public class CheckedExceptionTest extends Exception { public CheckedExceptionTest(String message){ super("...

消息幂等

什么是消息幂等 当出现消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次消费并未对业务系统产生任何负面影响,那么这整个过程就可实现消息幂等。 假设报备服务和积分服务之间是用mq消息进行交互,经纪人报备后,报备服务发出积分加5的mq消息,积分服务接到mq之后就会给经纪人帐号加5积分。 如果积分服务多次接收到同一个消息,就会执行多次积分加5的动作,导致经纪人的...

联表情况下如何建立索引? 以下sql语句 explain SELECT t.id FROM task t INNER JOIN task_project tp ON t.id = tp.task_id WHERE t.task_type = '5' AND t.start_time < '2021-1-17 11:28:47' AND t.end_time > '2021-1...

Java并发基础

并发

Runnable 与 Thread java最基本的线程调用;实现Runable接口中的run方法,然后用该对象来创建一个Thread对象,start()即可进行多线程运行; * class PrimeRun implements Runnable { * long minPrime; * PrimeRun(long minPrime) { *...

JavaAgent技术

JavaAgent技术

JavaAgent技术 启动时加载的JavaAgent是Jdk1.5Z之后引入的新特性,此特性为用户提供了在JVM将字节码文件读入内存之后,使用对应的字节流在java堆中生成一个Class对象之前,对其字节码进行修改的能力,而JVM也会使用用户修改过的字节码进行Class对象的创建。 更具体的说 premain方法,会接受一个Instrumentation,它是就是可以实现在方法插入额外的...

java反射底层原理-粗略理解

反射

基本原理理解 我们编写完的class文件,会被编译为字节码,然后在程序运行时被类加载器加载到vm中,加载完成后,每个class都会有一个对应的Class对象,我们所有的这个类的对象都是由这个Class实例来创建的。 由于我们的Class实例对象是通过类加载class文件获得的,他能够获取到几乎有关于该class的所有信息,包括 版本号:主版本号和次版本号 常量池 访问标志:是类...

String为什么要是final类型的?不可变的?

string

1.String为什么不可变? public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char va...

spring 静态变量依赖注入问题

spring依赖注入

将@Autowired注解作用在静态变量上时,不会编译错误,但是当我们调用他时会报NPE异常; 因为类加载后静态变量成员是在内存的共享区,当类在加载静态变量时,spring还上下文还没加载,自然也就无法自动注入;(这一段,似乎不能这么去看) 我们可以用构造函数的方法来实现静态变量的自动注入;当Spring扫描到该注解时,赋值给该静态变量; 构造方法不需要加Autowired注解的...