logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Redis实现分布式锁

持有锁的线程1在锁的内部出现了阻塞,这时锁超时自动释放,这时线程2尝试获得锁,然后线程2在持有锁执行过程中,线程1反应过来,继续执行,走到了删除锁逻辑,此时就会把本应该属于线程2的锁进行删除,这就是锁误删的情况。上述释放锁的代码依然存在锁误删问题,当线程1获取锁中的线程标识,并根据标识判断是自己的锁,这时锁到期自动释放,恰好线程2尝试获取锁,并拿到了锁,此时线程1依然执行释放锁的操作,就导致误删了

文章图片
#redis#分布式#数据库
Java三种方式实现redis分布式锁

超时之后锁被自动释放了,实例B获取到锁,并执行业务程序,执行完成之后把锁删除了。这个问题形成的原因就是程序在获取到锁之后,执行业务的过程中出现了异常,导致锁没有被释放。虽然过期之后会自动释放锁,但是我的程序A的确没有执行完成啊,也没有异常抛出,就是执行的时间比较长,这个时候是不是应该对锁定的key进行续期?在定时任务中,如果不使用quartz这样的分布式定时工具,只是简单的使用定时器来进行定时任务

文章图片
#java#redis#分布式
顶级Java才懂的,性能基准测试JMH

最近在手写一个ID生成器,需要比较UUID和目前比较流行的 NanoID之间的速度差异,当然也要测一下根据规则自创的ID生成器。这样的代码属于最基础的API,速度哪怕减上几纳秒,累加起来也是很可观的。关键是,我该如何评估ID的生成速度呢?

文章图片
#java#开发语言
Java使用idea自动生成CRUD代码

首先,在你的主机上创建一个配置文件。例如,你可以创建一个名为my.cnf(或任何你喜欢的名字)的配置文件。这个文件可以放在你的主机上的任何位置,但是为了方便管理,最好将其放在专门的目录下。例如,创建一个目录mysql-config,然后在这个目录下创建my.cnf文件。# 创建目录# 进入创建的目录中# 将自定义的内容写入 my.cnf 文件中,# 如果命令行没有vim工具,可以使用cat命令将一

#java#intellij-idea#开发语言
有了微服务和云原生,为什么还要懂Service Mesh?

Service Mesh技术作为新一代微服务架构,有效的解决了当前微服务架构和治理过程中的痛点问题,一经推出便引起很大的反响,近两年持续成为架构领域的热点。特别是Google联合Lyft等公司推出的Istio,架构优雅,功能强大,迅速成为Service Mesh领域的明星项目。

文章图片
#云原生#微服务#service_mesh +2
实现分布式事务的新标杆:RocketMQ的全面解析与应用指南

使用普通消息和订单事务无法保证一致的原因,本质上是由于普通消息无法像单机数据库事务一样,具备提交、回滚和统一协调的能力。而基于 RocketMQ 的分布式事务消息功能,在普通消息基础上,支持二阶段的提交能力。将二阶段提交和本地事务绑定,实现全局提交结果的一致性。事务消息发送分为两个阶段。第一阶段会发送一个半事务消息。

文章图片
#分布式#rocketmq#java +2
redis 缓存雪崩、穿透、击穿、脑裂问题

缓存穿透的一个原因是有大量的恶意请求访问不存在的数据,所以,一个有效的应对方案是在请求入口前端,对业务系统接收到的请求进行合法性检测,把恶意的请求(例如请求参数不合理、请求参数是非法值、请求字段不存在)直接过滤掉,不让它们访问后端缓存和数据库。哨兵切换完成后,客户端会和新主库进行通信,发送请求操作。缓存击穿是指,针对某个访问非常频繁的热点数据的请求,无法在缓存中进行处理,紧接着,访问该数据的大量请

文章图片
#缓存#redis#java
Java使用idea自动生成CRUD代码

首先,在你的主机上创建一个配置文件。例如,你可以创建一个名为my.cnf(或任何你喜欢的名字)的配置文件。这个文件可以放在你的主机上的任何位置,但是为了方便管理,最好将其放在专门的目录下。例如,创建一个目录mysql-config,然后在这个目录下创建my.cnf文件。# 创建目录# 进入创建的目录中# 将自定义的内容写入 my.cnf 文件中,# 如果命令行没有vim工具,可以使用cat命令将一

#java#intellij-idea#开发语言
有了微服务和云原生,为什么还要懂Service Mesh?

Service Mesh技术作为新一代微服务架构,有效的解决了当前微服务架构和治理过程中的痛点问题,一经推出便引起很大的反响,近两年持续成为架构领域的热点。特别是Google联合Lyft等公司推出的Istio,架构优雅,功能强大,迅速成为Service Mesh领域的明星项目。

文章图片
#云原生#微服务#service_mesh +2
mybatis plus很好,但是我被它坑了

mybatis plus 给开发人员带来了很多便利,但是其中也有一些坑点,比如上文所提到得批量操作耗时问题,如果不注意的话,就有可能调入坑里,各位开发同学可以检查自己或者公司项目中 jdbcurl 是否缺失 rewriteBatchedStatements=true 参数,加以改正,避免重复掉入这个坑里。

文章图片
#mybatis#windows#tomcat +3
    共 19 条
  • 1
  • 2
  • 请选择