
java
文章平均质量分 60
java
hygge999
这个作者很懒,什么都没留下…
展开
-
从一种统一接口的封装方式到SpringMVC调用链的梳理
我们知道 DispatcherServlet 是实现了 Servlet 接口的,而 Servlet 对请求的处理是从 service 方法开始的,所以我找到了 FrameworkServlet(DispatcherServlet 的父类) 的 service 方法。接口封装一般是必不可少的,平常遇到的封装方式可能是下面这种,创建一个类ResponseResult,然后返回数据的时候统一返回ResponseResult类型的对象。最后总结出他的调用链大概是这样的。原创 2023-02-20 08:59:27 · 266 阅读 · 1 评论 -
HashMap源码解析一
HashMap 的源码,基本上面试都被问烂了,我记得我大三暑假开始找实习,过半公司都会问到这玩意。java1.7和1.8的 HashMap 数据结构,1.7是数据+链表,1.8多了一个红黑树。默认的加载因子是 0.75。当链表长度大于等于8,数组长度大于等于64时,链表会树化;当树的元素小于等于6的时候,又会退变成链表。HashMap 的容量都是 2 的整数倍。链表的插入方法, 1.7的时候是头插法,1.8变成了尾插法。可能还会讲一下1.8的扩容机制。原创 2022-11-23 16:51:43 · 457 阅读 · 0 评论 -
使用 System.currentTimeMillis() 代替 new Date().getTime() 获取时间戳
平常我们想要获取一个时间戳,一般是这样写的:new Date().getTime() / 1000现在大家不妨可以改成这样:System.currentTimeMillis() / 1000PS:/ 1000 的原因是因为 new Date().getTime() 和 System.currentTimeMillis() 返回的是一个13位数字,单位是毫秒。除1000能让单位变为秒。根据平常使用习惯,使用new Date()来获取当前时间,可以获取与当前时间有关的各方面信息,例如获取小时,分钟原创 2022-04-25 14:24:28 · 2280 阅读 · 0 评论 -
[Java] a = a + b 与 a += b 的区别
众所周知,在java中 a = a + b在大多数情况下都是可以替换为 a += b 的,那么这两种写法有什么区别呢?如果两个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作。+= 会隐式的将加操作的结果类型强制转换为持有结果的类型。而 a + b 不会。举例:byte a = 127;byte b = 127;b = a + b; // error : cannot convert from int to byteb += a; // o原创 2022-03-28 00:09:48 · 507 阅读 · 0 评论 -
jvm基础理论知识整理
类的加载类的加载是指将类的class文件中的二进制数据读入到内存中,并将其放在运行时数据区的方法区内,然后在堆中创建一个class对象,这个class对象就是类加载的最终产品。类加载过程加载-》校验-》准备-》解析-》初始化-》使用-》卸载加载,通过IO读入字节码文件;执行校验、准备、解析步骤;初始化,对类的静态变量初始化为指定的值,以及执行静态代码块;使用;卸载;类加载器种类启动类加载器:加载支撑JVM运行的位于JRE的lib目录下的核心类库。拓展类加载器:加载支撑JVM运行的原创 2022-03-18 13:55:08 · 645 阅读 · 0 评论 -
java检查SQL语句是否包含INSERT等关键字
有些时候只支持select语句,那么就要把其他语句排除,可以试用以下正则。(?<!\w)(?i)(INSERT|DELETE|TRUNCATE|UPDATE|CREATE|ALTER|DROP)(?!\w)试用方式(Java) Pattern p = Pattern.compile("(?<!\\w)(?i)(INSERT|DELETE|TRUNCATE|UPDATE|CREATE|ALTER|DROP)(?!\\w)"); Matcher m = p.matcher(querySql原创 2022-03-03 10:40:01 · 1590 阅读 · 2 评论 -
如何退出多层for循环——break的第三种用法
使用方式:标签名:for (······) { for (······) { ······ if (······){ break 标签名; } } System.out.println();}主要就是代码块前写上一个标签,需要跳出多层循环的地方 break 标签名。例子(可能不是很好):flag:for (int i = 0; i <= 100; i++) { for (int j原创 2022-01-26 13:41:17 · 7015 阅读 · 2 评论 -
Oracle与Java日期格式的区别
Oracle与Java日期格式的区别一、HH和HH24众所周知,在java中 hh 和 HH 是区分 12 小时制和 24 小时制的。例1:public static void main(String[] args) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); SimpleDateFormat simpleDateForm原创 2022-01-05 10:14:12 · 968 阅读 · 0 评论 -
Java Stream流的使用
Stream流——Java8新特性之一用于处理集合,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。本文只给出方法以及其用法,可作为工具书来使用。对Stream的理解、研究与总结可参考这篇文章:——(待整理)——进入正题。使用到的实体类:@Data@AllArgsConstructor@NoArgsConstructorclass Student { private String name; private int age;}@Data原创 2021-12-31 15:32:21 · 824 阅读 · 0 评论 -
lambda表达式——Java8新特性之一
lamdba表达式——Java8新特性之一本质上讲是一个匿名方法。只能实现函数式接口:即一个接口中,要求实现类必须实现的抽象方法,有且只有一个。Lambda表达式基础语法:(type1 arg1, type2 arg2...) -> { body }()参数部分:方法的参数列表,要求和实现的接口中的方法参数部分一致,包括参数的数量和类型。{}方法体部分:方法的实现部分,如果接口中定义的方法有返回值,则在实现时,注意返回值的返回。-> :分隔参数部分和方法体部分。原创 2021-12-29 14:46:11 · 469 阅读 · 2 评论