摘要:
Lock锁 手动挡锁,手动加锁放锁 Lock lock = new ReentrantLock 是可重入锁。解锁使用try块中的finally更为合适lock.uplock Condition con = ReentrantLock.newCondition()等待队列,等待拿锁,获得锁 Lock. 阅读全文
posted @ 2023-09-01 12:01
一个有理想的猿
阅读(28)
评论(0)
推荐(0)
摘要:
CONCAT 字符串拼接语句 CONCAT(str1,列名,str2),可以用来拼接模糊查询 CONCAT_WS(separator,str1,str2,...) CONCAT_WS(",",'张三','李四',...) UNION (所有查询的列数和列顺序必须相同。)运算符将两个或更多查询的结果组 阅读全文
posted @ 2023-09-01 12:01
一个有理想的猿
阅读(11)
评论(0)
推荐(0)
摘要:
实现ServletRequestListener接口,接口中的方法能拿到本次请求 阅读全文
posted @ 2023-09-01 12:00
一个有理想的猿
阅读(19)
评论(0)
推荐(0)
摘要:
每一个枚举都是一个一个常量,遵循对象不可变,但对象中的内容可变,这个原则 枚举也可以说是对象,不过这个对象比较特殊,在赋值的时候不需要使用new,只需要声明变量以及构造方法就能赋值, 赋值方式,枚举名字(name,age) 阅读全文
posted @ 2023-09-01 12:00
一个有理想的猿
阅读(6)
评论(0)
推荐(0)
摘要:
当我们只有一个线程的时候锁是无效的,所以在这个时候如果你加了一个锁那么这个锁叫做偏向锁,偏向我这个线程,当线程数量不是很多比如只有三五个线程,那么他们会进行锁争抢,这个时候锁会升级为自旋锁,当线程数量在增多,锁就会变成重量锁,Sys就是重量级锁 阅读全文
posted @ 2023-09-01 11:59
一个有理想的猿
阅读(78)
评论(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:58
一个有理想的猿
阅读(24)
评论(0)
推荐(0)
摘要:
cas是乐观锁,就是不上锁,通过比较并交换实现同步(“上锁”) aqs是抽象队列同步器,就是通过队列的方式(线程挨个进去排队)来实现,线程同步 阅读全文
posted @ 2023-09-01 11:58
一个有理想的猿
阅读(39)
评论(0)
推荐(0)
摘要:
PathMatcher pathMatcher = new AntPathMatcher(); if (pathMatcher.match(s(数组中的每一个元素,也就是要放行的路径), req.getRequestURI()(本次请求的路径))) 阅读全文
posted @ 2023-09-01 11:58
一个有理想的猿
阅读(9)
评论(0)
推荐(0)
摘要:
linkedHashMap中的元素会按照 put()进去的顺序进行排序 第一个put进去的元素就会放在第一位,以此类推 原因是因为:linkedhashmap中维护的是数组与双向链表,第一个值会指向第二个值,第二个又指向第三个,所以就有序了 linkedhashmap中有一个特点,可以删除不经常访问 阅读全文
posted @ 2023-09-01 11:58
一个有理想的猿
阅读(116)
评论(0)
推荐(0)
摘要:
hashmap: key可以为null,key为null的话,就不会计算hashcode码,直接给了一个0, hashmap是2倍扩容原来的容量左移一位, 线程不安全, 计算下标不同,hashmap下标是高位与地位的‘&’运算 hashtable: key以及value都不能为null,value为 阅读全文
posted @ 2023-09-01 11:57
一个有理想的猿
阅读(12)
评论(0)
推荐(0)
摘要:
1:准备加载Bean工厂 首先肯定告诉我们的程序,我需要加载容器了,从哪里开始加载,可能是从classpath(XML)或者Annotation(注解),接着spring会执行refresh()方法 这个方法首先会判断当前是否有容器,如果有的话就关闭,没有就创建 2:获得Bean工厂 spring会 阅读全文
posted @ 2023-09-01 11:57
一个有理想的猿
阅读(40)
评论(0)
推荐(0)
摘要:
保证事物原子性,通过undo log日志,我们在进行数据的新增和修改的时候,会产生undo log日志,默认为innodb存储引擎,因为这个存储引擎支持事务, 在我们对数据进行 新增 的时候,插入表之前会产生一个undo log日志,这个日志记录着我们新增的信息(id,序号等), 在回滚的时候只需要 阅读全文
posted @ 2023-09-01 11:57
一个有理想的猿
阅读(30)
评论(0)
推荐(0)
摘要:
package java.util.function; 阅读全文
posted @ 2023-09-01 11:57
一个有理想的猿
阅读(10)
评论(0)
推荐(0)
摘要:
System.out.println(req.getRemoteAddr());//ip地址System.out.println(req.getRequestURI());//从项目开始的具体路径System.out.println(req.getRequestURL());//完整路径(带域名)S 阅读全文
posted @ 2023-09-01 11:56
一个有理想的猿
阅读(38)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2023-09-01 11:55
一个有理想的猿
阅读(14)
评论(0)
推荐(0)
摘要:
git是什么? 版本控制工具 作用:版本控制,代码协作 写一些代码之后 可以作为一个版本保存起来 版本可以一直存在 git init 初始化一个本地仓库 git add 文件的正则匹配 比如 test.txt git add . 匹配全部文件 把文件加入git仓库的缓存区 git commit -m 阅读全文
posted @ 2023-09-01 11:55
一个有理想的猿
阅读(19)
评论(0)
推荐(0)
摘要:
生成一百个随机数,返回的是Stream流IntStream random = new Random().ints(100); 阅读全文
posted @ 2023-09-01 11:55
一个有理想的猿
阅读(11)
评论(0)
推荐(0)
摘要:
恢复binlog日志,按时间恢复 mysqlbinlog -v LAPTOP-0I6IBP38-bin.000139 --start-datetime='2023-01-01 00:00:00' --start-datetime="2022-01-01 00:00:00 从2023-01-01 00 阅读全文
posted @ 2023-09-01 11:55
一个有理想的猿
阅读(9)
评论(0)
推荐(0)
摘要:
assertEquals(expected, actual): assertEquals(5, result); // 验证 result 的值是否等于 5 验证两个值是否相等。 assertTrue(condition): assertTrue(result > 0); // 验证 result 阅读全文
posted @ 2023-09-01 11:55
一个有理想的猿
阅读(27)
评论(0)
推荐(0)
摘要:
缓存穿透:就是,一个请求携带的参数是,id为负一 我缓存中肯定没有,而且数据库肯定也没有,那么这个参数为负一的请求就直接绕过了redis,直接就访问了数据库,这就是缓存穿透 缓存击穿:就是我有一个热点数据,比如秒杀,好巧不巧在秒杀开始的时候,刚好我缓存的KEY到期了,那么秒杀的请求全部打进了我们的数 阅读全文
posted @ 2023-09-01 11:54
一个有理想的猿
阅读(8)
评论(0)
推荐(0)