- 博客(20)
- 收藏
- 关注
原创 JMM内存模型
主要解决共享变量的可见性CPU有三级缓存,主存和本地内存的内容可能不一致,每个线程只能操作自己本地内存中的变量,无法直接访问其他线程的本地内存。如果线程间需要通信,必须通过主内存来进行。对于处理器,通过插入内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)的方式来禁止特定类型的处理器重排序。
2025-08-17 15:46:10
238
原创 全局唯一Id
全局唯一id要为包括订单支付、优惠券等业务服务,所以不能轻易下线,需要达到,同时为了方便服务秒杀活动等,需要较高的1.全局唯一性:不能重复2.趋势递增:mysql的B+树索引的要求,如果不是趋势递增而是随机的话很容易出现页分裂和合并3.安全性:单调递增的id很容易被知道一天的订单量单调递增的优点:可以方便排序和统计缺点:信息安全性低。
2025-08-02 20:05:02
961
原创 点评项目实战
因为首先相比来说会更麻烦一点儿,其次是由于线程时许错乱问题,比如一个线程1获取到数据库库存为40去redis里更新,这时候另一个线程2过来获取库存为0,然后也去更新,但是2先完成了更新,本来库存都为0了,1的更新请求才到redis 把库存更新为40了,就会出现明明显示的库存是40用户却下单失败。
2025-07-17 16:11:05
943
原创 MySQL八股
元组:元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为行。码:码就是能唯一标识实体的属性,对应表中的列。候选码:若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。主码: 主码也叫主键。
2025-05-26 21:28:17
656
1
原创 Redis(持续更新中)
读取数据先读缓存,缓存不命中再去数据库读取,然后将读取到的数据更新到缓存中缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。业务不合理的设计,比如大多数用户都没开守护,但是你的每个请求都去缓存,查询某个userid查询有没有守护。业务/运维/开发失误的操作,比如缓存和数据库的数据都被误删除了。黑客非法请求攻击,比如黑客故意捏造大量非法请求,以读取不存在的业务数据。
2025-05-10 15:43:24
797
原创 JUC学习笔记
AQS:抽象队列同步器,里面提供了一个双向链表组成的队列和一个state变量,其中state变量用volatile 修饰保证可见性,为0代表没人占有锁,为1时代表锁已经被占有,其他线程会通过CAS加锁,加锁失败后会被放入阻塞队列中,如果是公平锁,则发现有阻塞队列的时候直接去排队,如果是非公平锁,先尝试获取锁,能获取到的话就直接占有锁AQS设计的初衷就是帮助其他组件完成功能的框架,不希望产生自己的实例,所以定义为抽象类,
2025-05-06 23:08:49
859
原创 JavaSE
遍历List方法一:普通for循环i++){//list为集合的对象名遍历List方法二:增强for循环(使用泛型!遍历List方法三:使用Iterator迭代器(1)//如果要遍历时,删除集合中的元素,建议使用这种方式!遍历List方法四:使用Iterator迭代器(2)){collection的foreach遍历可以用lambda 表达式。
2025-04-14 14:58:35
691
原创 JavaWeb学习笔记
实现:在 Controller 方法执行前调用(适合权限校验):在 Controller 方法执行后、视图渲染前调用(可修改 ModelAndView):在整个请求完成后调用(适合资源清理)// 在 Controller 方法执行前调用@Override// 未授权// 中断请求// 放行请求// 在 Controller 方法执行后、视图渲染前调用@Override// 可修改 ModelAndView(如添加公共数据)= null) {
2025-04-14 14:58:01
373
原创 Spring相关八股
用@Scope注解 @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
2025-03-20 18:47:13
188
原创 计网、操作系统八股(持续更新中,自用)
元组:元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为行。码:码就是能唯一标识实体的属性,对应表中的列。候选码:若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。主码: 主码也叫主键。
2025-03-08 00:26:19
1264
原创 后端开发笔记3 Spring、SpringBoot实战(持续更新中,自用)
此时的java命令输入之后没有反应,可能是某些环境配置有冲突,网上搜不到解决方案,自己又有jdk1.7,1.8,17太乱了,所以把所有的jdk都给删除了然后重新下jdk17,都没有改环境变量就好了,又可以运行了。解决了这个问题,在启动,又报错,很长一串,问了ai大概意思是源代码是jdk17写的,不能用环境变量的jdk8编译,这个简单,只要去下载jdk17然后配置环境变量(如上两步)即可。是视频教程给的命令打错了,unzip达成了upzip,直接复制过来导致出问题了,所以其实本来不用上文这些解决方案的。
2025-03-08 00:26:09
787
原创 MybatisPlus
Component/*** 插入时填充逻辑* @param metaObject 元对象*/@Override/*** 参数1:填充字段名* 参数2:参数值* 参数3:元对象*//*** 更新时填充逻辑*/@Override。
2025-03-01 15:27:34
1183
原创 后端开发学习笔记2 数据库相关(持续更新中,自用)
使用@Results定义并使用自定义映射,使用@ResultMap使用自定义映射,和@Results紧挨着的注解会自动使用自定义映射,其他方法想用要在前面加上@ResultMap// 查询所有用户})// 根据id查询。
2025-02-18 11:48:07
653
原创 后端开发学习笔记(持续更新中,自用)
(2)水平分表:分为取模分表和范围分表,取模分表新增数据时IO操作多,效率低,范围分表则会造成“一方有难八方围观”的效果,可能只有最新的表会频繁使用,降低效率。对象引用存放在栈内存中。在测试类中,@Before修饰的方法会在测试方法之前自动执行,@After修饰的方法会在测试方法执行之后自动执行 ,可以设置前置方法为获取资源,后置方法为释放资源。静态方法属于类,类加载的时候就会分配内存,非静态成员不属于类而属于实例化对象,只有实例化之后才会存在,因此在类的非静态成员不存在的时候静态方法就已经存在了。
2025-02-10 15:25:19
1109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅