- 博客(65)
- 收藏
- 关注
原创 SpringCloud
Component// 登录校验逻辑// 放行public int getOrder() { // 过滤的顺序,数字越大越靠后return 0;需要实现GlobalFilter和Ordered接口:网关内部的上下文对象,保存网关共享对象如:request,respone,session,或者一些自定的共享属性。:当前过滤器执行完后,要调用过滤器链中的下一个过滤器。Ordered接口作用。
2025-07-13 23:01:59
933
原创 Java知识梳理——集合框架
默认PriorityQueue创建的是小根堆,如果需要大根堆需要我们自己传比较器。p.offer(3);p.offer(2);p.offer(1);p.offer(5);p.offer(4);p.offer(3);p.offer(2);p.offer(1);p.offer(5);return age;@Override// 要么传比较器,要么Person对象要实现Comparable接口,重写compareTo方法。
2025-07-08 21:45:36
537
原创 Vue3-组件化-Vue核心思想之一
组件的生命周期的四个阶段:1. 创建阶段:创建响应式数据2. 挂载阶段:渲染模板3. 更新阶段:修改数据,更新视图4. 卸载阶段:卸载组件之前把代码写在⼀起的,数据直接使⽤即可;现在是组件化开发,通过代码拆分和组合的⽅式进⾏开发,这种情况下,还要达到和不拆分之前⼀样的效果,这时组件之间难免需要数据传递,这就需要组件之间进⾏通信。封装⼀段 公共的DOM操作 代码,便于复⽤。
2025-07-04 22:11:13
1060
1
原创 Vue3-指令及其相关知识
4.事件绑定指令(v-on)阅读前置知识:表达式是什么?◦ 所有的字⾯量和变量名◦ 对象.属性名◦ 算术运算或三元运算◦ ⽅法的调⽤。
2025-07-02 12:49:02
690
原创 浏览器网站禁止黏贴,但是要交作业怎么快速黏贴
写这篇博客的原因:学校最近要求使用 iwrite 写英语作文,但是浏览器禁止黏贴,我们自己只能手动输入,但是作为程序猿的我想到了一个很好的解决方案。
2025-06-02 19:19:39
232
原创 vscode配置和Vue开发配置
1.可以更好看的显示文件图标2.用户快速打开文件使用步骤:在html文件下右键点击 open with live server 即可。
2025-06-01 17:35:17
471
1
原创 使用redis代替session的登录校验
这里存储用户信息使用hash结构进行存储。使用String和json存储不是那么方便。因为原本使用session的方案会自动帮我们进行校验,这里我们使用redis进行代替有很多东西都需要我们自己去存储。前端会把token存放在请求头中,我们每次校验的使用从请求头中获取即可。
2025-05-27 19:31:53
501
原创 rabbitmq的高级特性
每个 RabbitTemplate 只能配置一个 ReturnCallback,因此我们可以在配置类中统一设置。@[email protected]("触发return callback,");});由于每个消息发送时的处理逻辑不一定相同,因此ConfirmCallback需要在每次发消息时定义。@Test// 1.创建CorrelationData// 2.给Future添加ConfirmCallback@Override。
2025-05-27 14:05:23
1310
原创 一篇文章带你了解什么是幂等性,如何确保消息的幂等性
相同输入的重复操作,其结果应该保持一致。数据的查询一般是幂等的,但是删除,修改,新增不是幂等的。
2025-05-27 12:44:02
943
1
原创 初识消息队列
缺点:①拓展性差:代码冗余在了一起,所以拓展性差。②性能下降:调用者需要等待服务提供者执行完返回结果后,才能继续向下执行,也就是说每次远程调用,调用者都是阻塞等待状态。最终整个业务的响应时长就是每次远程调用的执行时长之和。③级联失败:由于我们是基于OpenFeign调用交易服务、通知服务。当交易服务、通知服务出现故障时,整个事务都会回滚,交易失败。这其实就是同步调用的问题。优点:①时效性强,等待到结果后才返回。
2025-05-25 14:35:40
962
原创 一篇文章带你理解ThreadLocal原理和理解内存泄漏的原因
很多人图方便,把定义为静态变量,全局共享。这样会延长实例生命周期,即使线程退出了,它挂的值还在那儿——弱引用还没释放,value 就一直占着内存不放。
2025-05-23 20:36:51
1131
原创 黑马点评-使用redis生成全局唯一id
② 如果未来数据量很大,数据要存在数据库集群里面,这时候使用主键自增会重复。序列号:32bit,秒内的计数器,支持每秒产生2^32个不同ID。时间戳:31bit,以秒为单位,可以使用69年。ID的组成部分:符号位:1bit,永远为0。④ 数据库自增(就是redis的原理)① id的规律太明显,容易泄露数据。
2025-05-15 21:21:00
353
原创 苍穹外卖-公共字段自动填充
*** 更新操作*/UPDATE,/*** 插入操作*/INSERT/*** 自定义注解,用于标识某个方法需要进行功能字段自动填充*/@Target(ElementType.METHOD) //指定这个注解只能加在方法上面// 数据库的操作类型:UPDATE INSERT/*** 自定切面类,实现公共字段自动填充处理逻辑*/@Aspect@Component@Slf4j/*** 切入点*/
2025-05-09 18:17:46
238
原创 苍穹外卖-统一对日期格式化处理
当然在这个方法里面也可以注册拦截器这个方法和实现 WebMvcConfigurer 接口注册拦截器一样,但是这两种方法还是有区别的 继承 WebMvcConfiguration 这个办法用的比较少有的地方还有坑,具体的可以问ai。注意:下面添加的代码在代码启动运行的时候就会运行。
2025-05-09 14:08:11
155
原创 苍穹外卖-实现更简洁分页查询
底层使用了mybais的拦截器实现,会把后面的一条sql动态的拼接,会动态的把 limit 关键字拼接上去,然后动态的拼接相应的数据,这样的好处就是我们不用自己拼接翻页的sql语句了。
2025-05-09 12:01:47
137
原创 苍穹外卖-获得当前登录用户的id
在拦截器里面获取 token 并从 token 获取当前用户的 id,并把id存放在 BaseContext 里面,如果在这次请求中需要用户id的话直接调用 getCurrentId 这个方法即可。为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。一个Thread,而是Thread的。
2025-05-09 11:21:12
210
原创 Linux基础指令
cp指令⽤于复制⽂件或⽬录,如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中。2. 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。3. 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。• -f 或 --force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在。
2025-04-18 09:36:10
465
原创 数据加盐/加密
是指把任意⻓度的输⼊消息数据转化为固定⻓度的输出数据的⼀种密码算法. 摘要算法是不可逆的, 也就是⽆法解密. 通常⽤来检验数据的完整性的重要技术, 即对数据进⾏哈希计算然后⽐较摘要值, 判断是否⼀致. 常⻅的摘要算法有: MD5, SHA系列(SHA1, SHA2等), CRC(CRC8, CRC16,CRC32)
2025-04-17 21:54:00
393
原创 JWT令牌实现登录校验
JWT由三部分组成, 每部分中间使⽤点 (.) 分隔,⽐如:aaaaa.bbbbb.cccc① Header(头部) 头部包括令牌的类型(即JWT)及使⽤的哈希算法(如HMAC SHA256或RSA)② Payload(负载) 负载部分是存放有效信息的地⽅, ⾥⾯是⼀些⾃定义内容. ⽐如:{"userId":"123","userName":"zhangsan"} , 也可以存在jwt提供的现场字段, ⽐如exp(过期时间戳)等.
2025-04-16 11:11:31
414
原创 Spring
这五个注解作用都一样,只是意义不一样,用来提高代码的可读性。@Controller:控制层,接收请求,对请求进⾏处理,并进⾏响应。@Servie:业务逻辑层,处理具体的业务逻辑。@Repository:数据访问层,也称为持久层,负责数据访问操作。@Configuration:配置层,处理项⽬中的⼀些配置信息。@Component:其他。
2025-04-12 20:49:24
1129
原创 javaSE知识梳理(一)
权限修饰符] abstract class 类名{[权限修饰符] abstract class 类名 extends 父类{[其他修饰符] abstract 返回值类型 方法名([形参列表]);//注意没有方法体注意事项:1. 抽象类不能创建对象。2. 抽象类中,也有构造方法,是供子类创建对象时,初始化父类成员变量使用的。3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。
2025-04-02 22:09:00
807
原创 java知识梳理(二)
枚举类型本质上也是一种类,只不过这个类的对象是有限的,只有固定的几个,不能让用户随意创建。注意:①枚举类的构造方法是私有的。②是 java.lang.Enum 的子类,也就是说,自己写的枚举类,就算没有显示的继承Enum,但是其默认继承了这个类。
2025-04-02 19:19:23
635
原创 服务器程序架构演变(单机->分布式)
1.应用(Application)/ 系统(System)为了完成⼀整套服务的⼀个程序或者⼀组相互配合的程序群。⽣活例⼦类⽐:为了完成⼀项任务,⽽搭建的由⼀个⼈或者⼀群相互配的⼈组成的团队。
2025-03-26 13:44:59
596
原创 Spring MVC
Controller:定义⼀个控制器,Spring 框架启动时加载,把这个对象交给Spring管理,属于Ioc&Di的内容。@ResponseBody:定义返回的数据格式为⾮视图, 返回⼀个 text/html信息目前的我们只需要理解必须要加 @RestController 这个注解就可以了,它是我们启动程序必须要加的。② @RequestMapping使用。
2025-03-24 20:42:42
939
原创 Spring Boot
有三种种配置文件:application.yaml,application.yml,application.properties,但是我们一般使用yml结尾的配置文件其它一般不用。
2025-03-24 16:44:16
441
原创 docker入门
自定网络地优点:而且通过自定义的网络可以:在自定义网络中,可以给容器起多个别名,默认的别名是容器名本身;在同一个自定义网络中的容器,可以通过别名或容器名互相访问,在非自定网络中是不可以使用容器名相互访问地。容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;不使用自定义网络存在的问题:可以通过容器运行时分配的ip地址,可以让容器之间相互访问,但是容器重启之后ip地址会改变,所以我们可以自己创建一个网络。,当访问宿主机指定端口时,就是在访问容器内的端口了。
2025-03-24 16:43:01
843
原创 Mybatis & Mybatis Plus
为了防止sql语句只写在业务处理层,所以有了自定义SQL,我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自定义SQL语句中剩下的部分。
2025-03-24 16:27:30
926
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人