1、循环遍历集合中进行删除元素,触发快速失败
//这是一颗语法糖,编译后相当于:
for(Iterator i = lists.iterator();i.hasNext();){
String s = (String)i.next();
if(s.startsWith("1")){
list.remove(s);
}
}
//正确的做法
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (item.startsWith("1")) {
iterator.remove();
}
}
list.removeIf(item -> item.startsWith("1"));
2、JDK8 时间类 练习
3、ThreadLocal 类的使用,因为是弱引用,如果外部没有引用ThreadLocal,则Entry中的key值被
摧毁成null,导致value值一直不会被访问到,导致一直占用内存,所以当ThreadLocal使用完毕,要进行 remove或者clear等操作,防止内存泄露
4、JDK14 record与Lombok对比
record是 JDK14版本,新出的语义特性,对于创建小型不可变的对象有作用。
总的来说,Lombok更加灵活,record用于受限制的场景
//使用record
public record ColorRecord(int red, int green, int blue) {
public String getHexString() {
return String.format("#%02X%02X%02X", red, green, blue);
}
}
//使用lombok
@Value
public class ColorValueObject {
int red;
int green;
int blue;
public String getHexString() {
return String.format("#%02X%02X%02X", red, green, blue);
}
}
5、检测Maven是否有想用依赖不同版本的jar包
命令:mvn dependency:tree
mvn dependency:analyze-duplicate
上面两者都会在控制台,打印出相关重复的依赖包名称
在pom.xml文件中加入 规则,
可以对构建Maven进行约束,如果存在重复就会构建失败。
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>no-duplicate-declared-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<banDuplicatePomDependencyVersions/>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>