- 博客(61)
- 收藏
- 关注
原创 redisson的trylock参数
/lock方法会无限重试。第一个参数(等待时间),如果设置了,获取锁失败后,就不会立即返回了;//这种写法调用代理对象的方法,方法是有事务处理的。//设置失效时间,看门狗失效。//看门机制不能设置失效时间 采用默认的失效时间30秒 (那重试时间怎么设置呢?//分布式方式,分布式锁,采用redisson锁。
2025-04-15 22:45:05
308
原创 redisson的unlock方法
getLock底层是hash,大key是userid,小key是线程,value是重入次数。//这种写法调用代理对象的方法,方法是有事务处理的。//设置失效时间,看门狗失效。//看门机制不能设置失效时间 采用默认的失效时间30秒 (那重试时间怎么设置呢?//分布式方式,分布式锁,采用redisson锁。
2025-04-13 19:50:04
205
原创 DelayQueue
package com.liu.delay;import java.util.concurrent.Delayed;import java.util.concurrent.TimeUnit;public class Mydelay<T> implements Delayed { private T data; private long stopTime;//过期时间 public Mydelay(long delay,T t) { this.
2025-04-11 14:19:02
314
原创 接口优化方式
如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。考虑到这些任务之间有大部分都是无前后顺序关联 的,可以并行执行 ,就比如说调用获取商品详情的时候,可以同时调用获取物流信息。通过并行执行多个任务的方式,接口的响应速度会得到大幅优化。实际项目中,一个接口可能需要同时获取多种不同的数据,然后再汇总返回,这种场景还是挺常见的。举个例子:用户请求获取订单信息,可能需要同时获取用户信息、商品详情、物流信息、商品推荐等数据。可以帮助我们来做多个任务的编排,功能非常强大。
2025-04-10 10:36:23
283
原创 关于hashset去重和equals和hashcode方法的关系
如果你只重写equals方法,不重写hashcode,代码就会先计算hashcode,直接判定是两个对象。先计算hashcode,这个地址有多个对象就会再次使用equals判断是不是同一个对象。hashset会判断这两个对象是不是同一个,如果是同一个就会去重。如果不重写equals和hashcode方法就会比较对象地址。
2025-04-09 15:17:27
75
原创 关于后端校验的重要性
比如领取优惠券,你昨天打开的页面,今天优惠券已经失效了,但是你并没有刷新页面,所有你还是可以点击立即领取的。如果你不后端校验,优惠券就会超发。
2025-04-06 10:52:22
112
原创 关于权限,ai给的建议
Around("@annotation(com.example.auth.annotation.HasPermission)") public Object around(ProceedingJoinPoint point) throws Throwable { // 提取方法上的注解和权限标识 Signature signature = point.getSignature();- **原理**:将用户的权限信息缓存到内存中(如 Redis、Memcached 等),减少对数据库的直接访问。
2025-04-02 10:41:53
908
原创 aop名词
@Servicepublic class UserService { //连接点(此方法的调用或者异常的抛出都是连接点),目标方法 public void registerUser(User user) { }} //切面(切点+通知)@Aspect@Componentpublic class LoggingAspect { // 切入点(Pointcut) @Pointcut("execution(* com.example.UserService.*(.
2025-03-31 14:12:56
106
原创 关于为什么使用redis锁,不使用zk锁的原因
总结,redis实现的分布式锁虽然是ap模型,理论上锁竞争比较耗性能,但理论就是理论,实际上绝大多数分布式锁只用于避免一些极端情况。而zookeeper实现分布式锁的最大的问题在于国内项目使用zookeeper的概率并不高,引入zookeeper只为了分布式锁太浪费,还增加系统复杂度。至于ap模型的问题,绝大多数分布式锁只是用于避免一些极端情况的,若单一数据会有那么高的并发量你还加锁,那就要考虑这个业务场景设置的合理不合理了。
2025-03-30 22:45:59
277
原创 关于隔离级别,新手容易出现的疑问
场景:a读取订单信息,b修改了商品价格,如果是读已提交,就会读到最新价格,与订单信息发生冲突。那只能使用可重复读隔离级别了。疑问:为什么大多数文章不谈及删除数据,因为删除属于修改数据的范畴。你可以简单理解为删除就是修改。1.读已提交可以读到别人已经提交的修改的数据。可重复读可能会读到别人已提交的新增的数据。2.为啥会有可重复读这种隔离级别?读已提交每次读到最新的提交数据,不好吗?答:确实在有些场景下不好,可重复读要求事物的一致性,而不是实时性。重点:一致性,整体数据是要符合逻辑的。
2025-03-25 12:34:02
104
原创 关于elementui的校验
addSubmit('add')">确 定</el-button><el-button type="primary" @click="addSubmit('add')">确 定</el-button>一般在添加数据的时候会用到校验,也伴随关闭窗口方法的调用。第一种:伴随关闭窗口设置值(失败)第二种:只有校验(成功)
2025-03-06 15:58:25
81
原创 关于redis同步的简单理解
但是像视频播放需要频繁提交记录,就需要合并写操作,这个时候往往会在缓存中去修改或者删除,然后用异步延迟任务去修改数据库。其实像一般的情况,直接从数据库层面去删除和修改,然后清空缓存。以上两种情况是有区别滴!
2025-02-26 09:56:32
88
原创 kafka和rabbitmq的相同之处
当生产者(Producer)发送消息到Kafka时,它会指定一个topic,并可以选择性地指定一个分区。如果生产者没有指定分区,Kafka会根据一定的策略(如轮询、键的哈希值等)来决定消息应该被发送到哪个分区。这个策略是可以在Kafka的配置中进行设置的。会把消息发送到交换机,如果不设置topic,交换机就会把消息发送到所有的队列。
2025-01-20 11:07:19
87
原创 关于分布式锁的简单理解(初学者)
如果电商平台采用分布式架构,那么扣库存的业务逻辑可能会部署在多个服务器上。如果多个用户同时下单购买同一个商品,那么这些请求可能会被分发到不同的服务器上,导致多个服务器同时尝试执行扣库存操作。在分布式系统中,由于业务逻辑可能部署在多个服务器上(这些服务器可能位于不同的物理位置,通过网络相互连接),因此相同的业务操作(如扣库存)可能会在不同的服务器上同时发生。因此,在分布式系统中,不同的服务器确实可能会存在相同的扣库存业务,而分布式锁则是用来解决这种分布式环境下的资源同步问题的关键机制。
2025-01-13 10:50:50
198
原创 Arthars简单使用
3.Arthas 显示总共花了 4 秒,但实际上在链路上看大概是 350~450ms 左右。其他多出来的时间是 Arthas 每一次执行统计的消耗,因为方法里的循环比较多。这也告诉我们,不要用 trace 去看循环很多。1.监控方法执行情况,每5秒执行一次,monitor 类路径 方法名,成功,失败,执行平均时间,失败率,2.监控这个方法内的所有方法执行情况,主要是看执行时间。会对性能有非常严重的影响。
2025-01-08 16:13:16
175
原创 rabbitmq的三个交换机及简单使用
/这个map就是发送的消息。//将消息携带绑定键值:TestDirectRouting发送到交换机TestDirectExchange。@RabbitListener(queues="TestDirectQueue")//监听的队列。提前说一下,创建队列,交换机,绑定交换机和队列都是在生产者。
2025-01-07 14:19:40
903
原创 gateway的路径匹配介绍
看我注解你就明白了。其实就是/order/**配置机制直接匹配到orderservice服务。gateway是一个单独服务,不写代码,重点写路径配置。2我试着请求一个路径,请求成功。下面第三步是请求的接口。
2025-01-04 11:41:52
364
原创 feign的抽取
1创建模块,引依赖.消费者添加@EnableFeignClients注解。2消费者引入feign模块。3引入feign中的接口。
2025-01-03 21:33:15
184
原创 feign的简单应用(未将feign抽取成模块)
2消费者的启动类,@EnableFeignClients注解。3消费者,编写feign的客户端.
2025-01-03 21:02:05
148
原创 vue2中路由routerlink结合elementui使用
提前说下,elementui中不用使用routerlink标签,按我下面的设置即可。
2024-12-30 22:13:24
128
原创 vue2中路由的基本使用
app.vue中的配置:routerlink是切换的标签,router是替换的页面。src下创建router文件,里面创建index.js文件。自己先搞两个组件:AboutPage.vue和HomePage.vue。3在引入路由,并配置路径与组件的对应。页面效果:点击about。
2024-12-29 14:09:25
231
原创 关于vue中服务器代理的文章
vue的axios请求说明:下面axios中8080是前端本身端口,也就是启动端口,也是代理服务器端口。这个请求其实发给代理服务器了。下面的atguigu只是标识,通过配置在代理中会删除。跨域:请求会成功发送,但是请求返回时前端发现返回的请求跨域,就不接受数据。搞清楚,请求可以到达后端,只是前端没要数据。pathRewrite:用于删除标识,这样请求就正确了。注意:以atguigu开始的请求的意思是在端口后面紧跟着的便是开头。vue可以直接发送axios请求啊,为什么要将请求进行代理呢?
2024-12-27 14:42:16
294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人