摘要: 实现ServletRequestListener接口,接口中的方法能拿到本次请求 阅读全文
posted @ 2023-09-01 12:01 一个有理想的猿 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 每一个枚举都是一个一个常量,遵循对象不可变,但对象中的内容可变,这个原则 枚举也可以说是对象,不过这个对象比较特殊,在赋值的时候不需要使用new,只需要声明变量以及构造方法就能赋值, 赋值方式,枚举名字(name,age) 阅读全文
posted @ 2023-09-01 12:00 一个有理想的猿 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 当我们只有一个线程的时候锁是无效的,所以在这个时候如果你加了一个锁那么这个锁叫做偏向锁,偏向我这个线程,当线程数量不是很多比如只有三五个线程,那么他们会进行锁争抢,这个时候锁会升级为自旋锁,当线程数量在增多,锁就会变成重量锁,Sys就是重量级锁 阅读全文
posted @ 2023-09-01 11:59 一个有理想的猿 阅读(50) 评论(0) 推荐(0) 编辑
摘要: public static final String SET_NX_SCRIPT = "if redis.call('setnx', KEYS[1], ARGV[1]) == 1 then return redis.call('expire', KEYS[1], ARGV[2]) else retu 阅读全文
posted @ 2023-09-01 11:59 一个有理想的猿 阅读(12) 评论(0) 推荐(0) 编辑
摘要: cas是乐观锁,就是不上锁,通过比较并交换实现同步(“上锁”) aqs是抽象队列同步器,就是通过队列的方式(线程挨个进去排队)来实现,线程同步 阅读全文
posted @ 2023-09-01 11:59 一个有理想的猿 阅读(16) 评论(0) 推荐(0) 编辑
摘要: PathMatcher pathMatcher = new AntPathMatcher(); if (pathMatcher.match(s(数组中的每一个元素,也就是要放行的路径), req.getRequestURI()(本次请求的路径))) 阅读全文
posted @ 2023-09-01 11:58 一个有理想的猿 阅读(2) 评论(0) 推荐(0) 编辑
摘要: linkedHashMap中的元素会按照 put()进去的顺序进行排序 第一个put进去的元素就会放在第一位,以此类推 原因是因为:linkedhashmap中维护的是数组与双向链表,第一个值会指向第二个值,第二个又指向第三个,所以就有序了 linkedhashmap中有一个特点,可以删除不经常访问 阅读全文
posted @ 2023-09-01 11:58 一个有理想的猿 阅读(7) 评论(0) 推荐(0) 编辑
摘要: hashmap: key可以为null,key为null的话,就不会计算hashcode码,直接给了一个0, hashmap是2倍扩容原来的容量左移一位, 线程不安全, 计算下标不同,hashmap下标是高位与地位的‘&’运算 hashtable: key以及value都不能为null,value为 阅读全文
posted @ 2023-09-01 11:58 一个有理想的猿 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 1:准备加载Bean工厂 首先肯定告诉我们的程序,我需要加载容器了,从哪里开始加载,可能是从classpath(XML)或者Annotation(注解),接着spring会执行refresh()方法 这个方法首先会判断当前是否有容器,如果有的话就关闭,没有就创建 2:获得Bean工厂 spring会 阅读全文
posted @ 2023-09-01 11:58 一个有理想的猿 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 保证事物原子性,通过undo log日志,我们在进行数据的新增和修改的时候,会产生undo log日志,默认为innodb存储引擎,因为这个存储引擎支持事务, 在我们对数据进行 新增 的时候,插入表之前会产生一个undo log日志,这个日志记录着我们新增的信息(id,序号等), 在回滚的时候只需要 阅读全文
posted @ 2023-09-01 11:57 一个有理想的猿 阅读(18) 评论(0) 推荐(0) 编辑