Java零碎知识
注解
@Transactional 注解
ps: @Transactionnal注解在使用的时候,这个过程数据库连接是打开的
基础 or 冷门
过滤器
过滤器
实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理
过滤器链
过滤器链
实际上就是多个过滤器对web资源进行拦截,或处理. 即一次请求经过多个过滤器进行过滤
ps: Spring Security 的本质就是过滤器链
Long与double类型再并发下
Java数据类型转换
ps: 在java中 数据类型小的可以自动转换为数据类型大的
运算记录
int x = 10;
// 先进行变量的自增 在进行数字计算
System.out.println(x++3)
// x+=3即 x = x + 3;
System.out.println(x+=3)
// 先进行变量的自减 在进行数字计算
System.out.println(x--3)
System.out.println(x-=3)
设计模式
单例(个人理解)
单例指在项目中只会出现一次的对象或方法等称为单例,
ps:使用的工具类就是单例的
小技巧
获取域名信息
/**
* 获取当前链接域名信息
* @param url url
* @return ret
*/
public static String getDomain(String url){
int x = StrUtil.indexOf(url,'/');
if (x < 0) {
return url;
}
x = StrUtil.indexOf(url,'/',x + 2);
if (x < 0) {
return url;
}
url = StrUtil.sub(url, 0, x);
return url;
}
/**
* 递归截取域名
* @param url 源域名
* @param num 次数
* @param newUrl 顶级域名
* @return ret
*/
public static String getTopDomain(String url, Integer num, String newUrl){
url = getDomain(url);
return execute(url, num, newUrl);
}
private static String execute(String url, Integer num, String newUrl){
int x = url.lastIndexOf('.');
if (num == 1) {
x += 1;
}
String modifyUrl = StrUtil.sub(url, x, url.length());
newUrl = modifyUrl + newUrl;
url = StrUtil.sub(url, 0, x);
if (num != 1){
num -= 1;
return execute(url, num, newUrl);
}
return newUrl;
}
public static void main(String[] args) {
String url = "https://pic.netbian.com/index_4.html";
url = getDomain(url);
System.out.println("最终输出: " + getTopDomain(url, 2, ""));;
}
/**
* 另一种方式
* @param source url
* @param peelPoint 截取标点
* @param num 循环次数
* @return ret
*/
public static String reverseDivestiture(String source, String peelPoint, int num) {
return StrUtil.sub(source, getIndex(source, peelPoint, num, 0), source.length());
}
/**
*
* @param source url
* @param peelPoint 节点
* @param num 次数
* @param initNum 次数
* @return 下标
*/
public static int getIndex(String source, String peelPoint, int num, int initNum) {
log.info("source: {}", source);
int point = source.lastIndexOf(peelPoint);
log.info("节点位置:{}", point);
initNum++;
if (initNum >= num) {
return point + 1;
}
return getIndex(StrUtil.sub(source, 0, point), peelPoint, num, initNum);
}
根据包地址获取java类对象
private static Object getClass(String classname) throws Exception {
Class<?> class1 = Class.forName(classname);
return class1.newInstance();
}
public static void main(String[] args) throws Exception {
Object obj = getClass("com.xw.demo_quartz.entity.TestEntity");
System.out.println(obj);
TestEntity testEntity = (TestEntity) obj;
testEntity.setNameB("hello word");
testEntity.setNameC("hello word111");
System.out.println(testEntity.toString());
}