自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 设计模式总结

观察者又叫发布订阅模式,比如一个用户注册的功能,当注册成功后我们可能会对注册的用户发送邮件,赠送积分,等功能,当我们只有一个比如发送邮件时,可以直接写在注册的功能后面,(虽然违背了单一指责,但是也可以接受),假如有更多的事件发生,那么我们就不能都写在后面,如果新增加一个,又违背了开闭原则,如果新增事件,那么就要修改原有的代码。代理模式,跟他名字一样比如火车票买票,原来买票直接通过窗口进行买票,但是现在买票,可以通过中间商进行买票但是那张票还是从窗口进行购买的,中间商相当于就是窗口的代理。

2023-10-06 17:03:55 70 1

原创 redis 相关总结

3.append key value 追加操作 如果key不存在那么就创建一个新的 key value;9.setnx key value 如果key 不存在 则 设置 key value 返回1 如果存在返回0。存在返回1 不存在返回0。1.set key value 设置 key value 如果key存在 value会被覆盖;4.strlen key 通过key 获得value 的长度;4.lpop key 删除最左边的元素 并返回删除的值;

2023-06-21 16:20:26 88

原创 多线程 juc 锁相关总结

首先 锁是什么 我认为 锁 就像上厕所一样 一个位置 只能运行一个人进行 下一个人要想进去的话只能等先进去的那个人出来 才能再次尝试进去 。那多线程有什么作用? 当我们执行一个比较大的任务时 并且可以把这个大的任务拆分成一些个小任务 而这些小任务之间 没有依赖关系 那么我们就可以使用多线程 让这个大任务中的小任务并发的去执行 这样对比与我们串行的去执行 效率会有所提升 那么java 中创建多线程的方式有那些1. 继承 Thread 类 2 实现runable接口重写run方法 3 cal

2023-06-07 13:35:28 113

原创 大文件大视频时使用断点续传

String outFile="/D:/Users/博客项目/file/"+count+"."+fileType;File file = new File("C:/Users/msi-pc/Videos/12月20日/12月20日.mp4");File merge = new File("/D:/Users/博客项目/12月20日.mp4");File since=new File("/D:/Users/博客项目/file/");//从i位置开始读取。//判断 两个文件是否一样。

2023-06-04 21:08:34 100

原创 如何从arrayList 中删除元素 fail-fast机制是什么

expectedModCount 是 ArrayList中的一个内部类——Itr中的成员变量。ele.startsWith("张")).collect(Collectors.toList());写入数据的时候会复制出来一个副本 当前读时还是读取的之前的集合 在这个副本中进行写入 写入成功后替换原来的集合 这种会有读取的延迟 使用了一种读写分离的思想。为什么有姓张的没有被删除因为ArrayList 是基于数组实现当删除前面的元素后面会自动向前 而我们的下标继续往后 所以就漏掉了。

2023-06-03 17:34:10 54

原创 mybatis 动态SQL

动态sql 当我们做更新的sql语句时 只会对有值的字段进行更新 所以我们 if 标签进行判断 如果存在才更新 因为更新的字段需要用 逗号进行分割 但是当字段是最后一个时就不应该有逗号 在update 语句中我们使用set标签 他会自动的去掉 后面的逗号 where 标签也是 会去掉最后的and。choose标签实现多路选择,当choose下的when标签条件满足时,就将when中的sql拼进外面的sql,反之若不满足,则将下面的otherwise标签中的sql拼进总sql。首先创建了一个学生表。

2023-06-01 12:38:44 36

原创 如何使用redis 对热点数据的缓存

然后使用aop 首先我们使用around 注解 对我们自定义的注解进行环绕通知 因为我们使用的环绕通知可以 使用ProcessdingJoinPoint 类型 然后通过这个对象获取该注解下的方法的参数 以及注解中的前缀 进行拼装key 然后去redis 中获取 如果获取到了则直接返回 如果缓存中获取不到 则。

2023-05-30 20:17:37 457 1

原创 策略模式与责任链在项目中的应用

自定义了一个工厂类 通过hashMap 对我们写的不同的策略进行注入 通过spring 中的扩展点 在bean 初始化前对在spring 容器中的bean 对象进行判断 如果该类上面有我们自定义的注解即可拿出来并注入到 hashMap spring 还有很多扩展点 这里只是其中一个。在我写的一个工单项目中 由于工单分为了比如 补货工单 运营工单 投放工单 等不同的工单类型 为了解决在代码中使用if else 语句 减少代码的耦合性 所以 使用了策略模式加工厂模式 代码如下。

2023-05-22 19:48:20 161 1

原创 关于java8 stream 流的操作

在之前做项目的时候 比如在做一个博客项目时对文章的评价 进行树结构的组装时 虽然评价 只设置了2级评论 只需通过for循环就可以进行组装 数据返回前端即可 但是后来 做了一个商城项目 对商品分类通过树结构进行返回 所以用到了stream 流的操作 方便 快捷 如果使用普通for循环去操作需要写很多代码。首先我自定义了一个student 类 每一个对象都有一个子对象集合并且有一个父Id。collect 最终可以返回成一个list集合也可返回成一个map。stream 流还有一些常用的api。

2023-05-20 18:25:01 62 1

原创 分布式锁的分析与过程实现

通过上面的 代码可以基本实现分布式锁 但是对于上面的第四点如果业务执行在一半的时候 锁就过期了 那么这样也是不行的 所以在reddision 框架中实现的分布式锁中 有一个锁续期的一个机制 就是当锁快过期的时候 检查当前获得锁的线程是否还在执行业务代码 如果还在 就会进行一个续期 以次解决 锁过期的一个问题 但是以上就没有任何问题了吗 一般我们redis都会是集群部署 这样就会有一个新的问题。对于分布式锁的实现 我了解的实现有基于 redis 实现的分布式锁 与数据库实现的分布式锁。

2023-05-20 15:14:52 60 1

原创 如何分析sql的执行计划

using index condition: 在使用联合索引且符合最左前缀 但是未使用到覆盖索引 需要回表操作 出现此信息 mysql 会使用索引下推 让他先在索引树中进行过滤 减少回表的次数。using where: 当使用where 进行条件过滤时 where 后面的字段是非索引字段或者 字段没有使用非最左前缀 条件过滤。using filesort :在使用order by 语句时使用的是文件排序没有使用到索引排序。eq_ref :使用唯一索引 只会扫描索引树中的一个匹配行时。

2023-05-19 16:57:34 297 1

原创 幂等问题。

为了解决业务的幂等问题 我们一般首先会使用分布式锁 锁的一般是此业务的唯一id 流水号之类的唯一值 加锁成功后然后 再对其进行业务的判断 判断数据库是否已经存在 并做出相应的操作 为什么这里需要用分布式锁呢 其实是为了防止2个线程同时 对这个业务进行读取操作 然后同时 进行写操作 造成的不安全现象 所以需要使用分布式锁 但是只使用分布式锁也不行 因为万一redis宕机 所以我们需要一个兜底的操作 所以在数据库层面我们需要对其进行加唯一索引 能防止重复的插入操作。

2023-05-19 15:52:43 76

原创 mysql 索引

4.like 字段% 这个字段在5.6之前是不会走索引的 在5.6之后会走索引 因为引入了索引下推的一个机制 就是在索引树上找到了这个以字段开头的数据的时候 在此时就开始比较剩下的字段 age 过滤掉了不符合的数据 然后再回表 减少了回表的次数 为什么大于小于 没有用到索引下推呢?3.尽量使用联合索引 不要创建单个的索引字段 在数据量比较大的时候 in or 会走索引 数据量小的时候不会走索引。4.在使用 in or 同一个索引字段时 可能不能走索引 这要根据表的大小 等因素来看是否会走索引。

2023-03-19 18:16:06 3247 1

原创 反射破坏单例

这里主要讲解一下 懒汉 dcl 双重检验锁的方式 为什么会在 对象上加volatile 因为普通的sync 加锁 虽然保证了有序性 但是他保证的是 as if seari 语义里面的 不改变最终结过下的 允许顺序交换的有序性 所以这里需要 加volatile 但是此种方式 也有一些问题 比如 反射可以破环单例 因为我们 私有的构造方法 此时 无法在外部进行创建对象 但是反射可以 允许访问 如下。单例模式有懒汉 饿汉 静态内部捏 枚举 的几种写法。

2023-03-19 17:19:16 48

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除