- 博客(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
原创 同步异步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
原创 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
原创 RunTime(java)
Runtime对象不能通过new获得,Runtime类构造方法用private修饰,无法在类外调用,getRuntime()方法为静态方法,保证Runtime的对象唯一。-s -t:指定时间关机,单位秒。-s:默认在一分钟之后关机。
2023-10-13 16:46:24 57
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人