Java 零碎知识

注解

@Transactional 注解

ps: @Transactionnal注解在使用的时候,这个过程数据库连接是打开的

基础 or 冷门

过滤器

过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理

过滤器链

过滤器链实际上就是多个过滤器对web资源进行拦截,或处理. 即一次请求经过多个过滤器进行过滤
ps: Spring Security 的本质就是过滤器链

Long与double类型再并发下

ps:在多线程或者并发情况下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());
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值