java
Java非静态代码块和静态代码块
类中存在两种特殊的代码块,即非静态代码块和静态代码块,前者是直接由 { } 括起来的代码,而后者是由 static{ } 括起来的代码。
非静态代码块在类初始化创建实例时,将会被提取到类的构造器中执行,但是,非静态代码块会比构造器中的代码块先被执行。
保存动态代理字节码
// 设置系统属性jdk动态代理
System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
// cglib 代理生成文件目录
System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "C:\\class");
String hash碰撞字符串
BBBB AaAa AaBB
hashcode->2031744
解决FastJSON首字母默认小写问题
String jsonObject = JSONObject.toJSONString(对象,new PascalNameFilter());
或者
TypeUtils.compatibleWithJavaBean = true;
properties配置文件中的换行(多行)的坑
properties中都是以name=value这样的k-v字符串对形式保存的。 在写properties文件时,如果value非常长,看起来是非常不方便的,可以用\来换行(最后一行不需要),如下 :
sonar.exclude=a.java \
b.java \
这里的坑就是\必须是每行的**最后一个字符**!
spring boot获取resource目录下文件
Resource resource = new ClassPathResource("resource目录下的文件路径");
File file = resource.getFile();
// Resource为spring中的
执行 java class 文件引入jar包
java -classpath jar目录 class文件目录
java -classpath .:lib/* Run
备注:上面命令中是将当前(Run.class)目录下的lib目录下的所有jar包引入
如何找到JAVA_HOME
对于Linux和macOS , 让我们使用 grep:
java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'
对于Windows,让我们使用 findstr:
java -XshowSettings:properties -version 2>&1 | findstr "java.home"
通过系统变量方式实现代理
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "" + "7777");
所以请求都使用这个代理
针对https
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "7777");
通过返回值来获取泛型类型
public static <T> Class<T> a(T... reified) {
return (Class<T>) reified.getClass().getComponentType();
}