自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 对象结构与锁类型

,这里自旋时间不是固定的,如若当前锁自旋成功,那么下次自旋时间会长一些,如果自旋失败下次自旋时间就会少一些,如果锁在很长一段时间内抢占锁不成功,不会一直自旋下去,而是转为阻塞态,这时锁的级别膨胀为重量级锁。所访问,那么线程会自动获取锁,Mark Word 会记录下这个线程id,这个线程在执行该代码块时不需要做任何检查和切换,效率非常高。这个锁会让其他申请线程之间进入阻塞,性能降低,重量级锁也叫同步锁,这个锁对象Mark Word也会发生变化,会指向一个。如果对象是一个Java数组,那么此字段必须有,用。

2024-11-14 15:32:11 114

原创 main线程结束了,程序不会停止

这句话是错的,main方法实际上就是创建了一个用户线程,而JVM只要存在一个用户线程就不会停止,所以main方法结束了,只要还有用户线程在运行程序就不会停止。刚开始学Java的时候是不是总是听到一句话,看代码先看main()方法main方法结束了程序也就结束了。这个demo 创建了一个用户线程,run方法是死循环,所以这个线程不会结束,但是main线程已经死了。

2024-11-06 11:26:20 164

原创 手写NIO多路复用demo

【代码】手写NIO多路复用demo。

2024-11-04 16:05:23 104

原创 多路复用Java代码

【代码】多路复用Java代码。

2024-11-02 11:45:05 75

原创 同步异步io的概念

1.4开始引进引进Java New IO 类库,简称NIO,这个库的目标是支持非阻塞的IO,更多人称为非阻塞io,实际上目前为止还是异步阻塞IO,多路复用。NIO为Java提供了高速,面向缓冲区的IO。与oio面向流,nio面向缓冲区,oio 只能顺序读取,nio可以任意读取。NIO库的三个核心组件Channel(通道)、Buffer()、Selector()

2024-11-01 16:55:12 700

原创 No primary or single unique constructor found for interface java.util.List

RequestParam 省略的条件是,前端的参数与Controller方法中接受参数的名一致,但是一般的 List 参数只是用逗号分隔。不会有所谓的名字,所以才爆这个错误。解决方法就是,不能省略@RequestParam。Spring boot项目报错。

2024-05-08 19:16:00 290 2

原创 滑动窗口209

只需要遍历到 4 即可,接着就是寻找 1 1 1 1 4 这个数组中是否有更短的数组,所以从前面窗口开始删除(寻找当前子数组中是否有更小的子数组)。暴力破解,双重for循环遍历出每一个子数组,如果有大于等于target的值就更新目标子数组的长度。由于需要找到连续的最小子数组,所以可以不用考虑,没有遍历的(即更长的,符合要求的子数组),这就是滑动窗口效率高的原因。滑动窗口的本质是双指针方法,使用两个指针指向窗口的前后两个位置。注意:for循环中的 j 指针是指向窗口的尾部。i 指针指向窗口的头部。

2024-04-29 19:56:53 265

原创 Spring Boot原理

如果使用的是自定义的类,可以使用功能@component以及它的延伸注解实现Bean的注入,但是如果引入第三方的类,是无法使用@Component注解的,这时需要用到Bean注解。2.导入一个配置类(使用@Configuration注解的类)@Import(nbconfig.class),配置类中声明的Bean都会加入到Ioc容器管理。1在启动类中使用@Import(TokenParser.class),导入一个普通类,不需要加其他注解,自动声名为IOC容器对象。起步依赖的原理就是Maven中的依赖传递。

2024-04-23 18:14:58 226

原创 二分查找的两种形式

while条件为(left <= right)左闭右闭区间,区间内的每一个值都有效。

2024-04-22 17:41:22 230

原创 令牌校验爆空指针异常

catch中加入打印错误日志,方便排查错误。

2024-04-21 16:29:58 160 1

原创 SpringBoot事务注解

这个属性的默认值为runtimeException,即只有在出现运行时异常才能够回滚,这不符合我们的要求,可以设置为。@Transactional(rollbackFor=Exception.class),出现任何异常都回滚。使用@Transactional注解的方法要么全部成功要么全部失败,Transactional有两个属性,这个属性使用与如果有多个方法嵌套调用的时候如何控制事务传播,这个属性有5个取值。1.异常回滚的属性:rollbackFor。一组操作的集合要么全部成功要么全部失败。

2024-04-20 17:04:39 155

原创 AOP编程

Before:前置通知,此注解标注的通知方法在目标方法前被执行@After :后置通知,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行。@AfterReturning : 返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行。@AfterThrowing : 异常后通知,此注解标注的通知方法发生异常后执行。在aop类中必须加上。@Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行。通过方法定义或者直接在通知注解上定义,通过连接点可以获得方法的各种信息。

2024-04-15 19:53:37 312 1

原创 分页助手PageHelper原理

再之后会有一个PageIntecepter拦截器,拦截所有的query方法,再添加limit语句实现分页效果。分页插件PageHelper一直没想通这个到底是怎么实现的,这两行代码完全没关系。然后这个Page就存到了,线程的属性中,ThreadLocal中。这行代码就是核心了,把页码和每页记录数都给了Page。Page底层是一个Arraylist集合。

2024-04-15 19:14:30 207 1

原创 AOP编程报错ClassCastException: class java.lang.Long cannot be cast to class com.example.springtlias.P

AOP本质为动态代理,即无侵入式的增加原方法的功能,此处使用AOP后,改变了原方法的返回值所以报错。返回一个object类就ok了。

2024-04-02 16:27:54 274 1

原创 KMP算法实现方式之一

KMP算法实现原理很简单,难的是对于Next数组求解的代码,网上对于Next数组的求解方法,有好几种不同版本。如果你不断翻看网络上的不同教程,就会觉得越来越复杂。这里提供一种next数组实现原理,默认next[0]为0。首先给出这个方法计算的next数组,如果跟你的计算方法不同可以先行跳过,免得越学越乱。

2024-03-23 20:19:27 218

原创 springboot报错 ‘text/plain;charset=UTF-8‘ not supported

Json中的参数名称必须要与对象的参数名相同。使用postman发送json数据时报错。

2024-03-20 11:00:57 400 1

原创 依赖注入注意点

如果IOC容器中有多个相同的Bean的对象,须通过@Autowired与@Qualifier(“Bean对象名”)组合,或者使用@Resource(“Bean对象名”)注解,此时@Qualifier与@Resource需要传入Bean对象名,默认的对象名是。

2023-11-17 14:56:24 34 1

原创 File类常见操作

【代码】File类常见操作。

2023-10-13 16:59:21 45

原创 RunTime(java)

Runtime对象不能通过new获得,Runtime类构造方法用private修饰,无法在类外调用,getRuntime()方法为静态方法,保证Runtime的对象唯一。-s -t:指定时间关机,单位秒。-s:默认在一分钟之后关机。

2023-10-13 16:46:24 57

原创 遍历c盘文件夹

File对象使用listFiles时,可能会访问没有权限的文件,此时会爆空指针异常。

2023-10-09 15:31:56 83 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除