- 博客(9)
- 收藏
- 关注
原创 MySQL底层原理及优化
每次创建索引的时候,数据库底层会创建一个B+树,非叶子节点存储的是索引的字段,叶子节点存储的是主键值,当你要查询的字段中没有索引,数据库会先查询索引的B+树找到主键值,再通过主键值来获取行数据,进行两次查询树,要想优化SQL应减少回表的产生。因为插入的数据始终会放在最后面,可以快速的找到插入的位置,无需做额外的开销,如移动数据的位置,旋转树等。InnoDB引擎的表一定需要主键,如果不创建,数据库会自动创建并维护一个主键索引。——因为hash只支持等值查询,不支持范围查询。非叶子节点存储的是主键值。
2023-02-18 19:41:26 158
原创 Redis缓存雪崩、穿透、击穿
在缓存突然失效时,只允许一个线程进入redis查询数据,redis中没有数据便从数据库中查询并设置到redis中,后面的线程再进入就会从redis中获取数据。可以将一些可以预料到的热门商品设置为永不过期,将一些冷门商品设置过期时间,冷门商品在一定时间内访问量激增的时候修改过期时间为永不过期。在缓存击穿和缓存雪崩的基础上,不管数据库有没有这个数据,都存入到redis中,并设置随机过期时间(既能防雪崩,又能防穿透)说白了就是一种数据结构,比list、set、map更加的高效,并且占用的空间更少。
2023-02-12 15:15:58 107
原创 产生死锁的原因以及快速定位死锁的位置
则不那么严格的限制产生死锁的必要条件的存在,因为即使死锁的必要条件存在,也不一定发生死锁。4.循环等待:线程t1等待线程t2占有的资源,线程t2等待线程t1占有的资源,就是循环等待(两个线程相互等待)2.占有且等待:线程当前占有至少一个资源并还想请求其他线程持有的其他资源就会造成等待(等待对方释放资源)3.不可抢占:资源只能由持有他的线程自愿释放,其他线程不可强行占有该资源(无法释放对方资源)5.读取进程栈的信息:t2等待的资源被t1锁住,t1等待的资源被t2锁住。4.对资源进行标记,有序的去锁资源。
2023-02-12 11:34:16 421
原创 解决maven不能读取xml文件:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
maven加载的时候,把java文件夹里面的.java类型文件进行编译,其他类型文件不会进行加载。直接将xml放在resource目录下(目录结构是通过代码自动生成的,这种方法会改变文件结构)-- 让maven加载main.java目录下的xml文件 -->-- 加载什么类型的文件 -->项目中创建maven接口,编写xml文件sql语句,执行出现错误。直接将xml复制到target文件目录下(这种方法用的不多)# 配置mapper xml文件的路径。设置xml文件所在的路径。
2022-10-16 14:23:53 468
原创 【会导致跨域问题的原因】Access to XMLHttpRequest at‘http://localhost:
如果项目所有的功能都不能用或者是部分模块的的全部功能不能用,大概率是nginx的问题。1. 如果使用nginx,查看nginx配置文件是否配置后端的请求端口路径。2. 查看后端的controller层是否有@CrossOrigin 注解。如果模块中只有一个功能会报跨域问题,大概率是请求方式和路径不一致导致的。3. 查看前端的请求方式与后端是否一致,查看路径是否一致。以上内容都会导致产生跨域问题。
2022-10-15 17:45:05 9203
原创 2021-9-14 Makdown学习
标题n#+空格 = n级标题字体一个星号是斜体两对星号是加粗三对星号是斜体加粗两对波浪线是删除号引用大于号+空格=引用分割线三个-或*图片超链接点击跳转/空格内填地址列表 A b c A B C 表格右键插入 或 ctrl+t 代码tab
2021-09-14 18:44:30 62
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人