自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Redis 分布式锁的java版正确实现

分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁本文主要介绍了Java代码如何正确实现Redis分布式锁,对于加锁和解锁也分别给出了几个比较经典的错误示例分布式锁可靠性条件1.互斥性、在任意时刻,只有一个客户端能持有锁。2.不会发生死锁、即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。...

2019-09-19 17:10:45 106

转载 Synchronized关键字和锁升级,详细分析偏向锁和轻量级锁的升级

目录一、Synchronized使用场景二、Synchronized实现原理三、锁的优化1、锁升级2、锁粗化3、锁消除一、Synchronized使用场景Synchronized是一个同步关键字,在某些多线程场景下,如果不进行同步会导致数据不安全,而Synchronized关键字就是用于代码同步。什么情况下会数据不安全呢,要满足两个条件:一是数据共享(临界资源),二是...

2019-09-10 14:13:40 120

原创 高并发环境下,先操作数据库还是先操作缓存?

前言在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢?先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。缓存维护方案一假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库,如下流程图所示1)线程A发起一个写操作,第一步del cache2)线程A第二步写入新数据到DB3)线程B发起一个读操作,cach...

2019-09-10 10:40:02 163

转载 线上部署Kafka和ES,为啥JVM堆内存分配越大,性能反而越低?

本文给大家聊一个生产环境的实践经验:线上系统部署的时候,JVM堆内存大小是越大越好吗?先说一个前提,本文主要讨论Kafka和Elasticsearch两种分布式系统的线上部署情况,不是普通的Java应用系统1、是否依赖Java系统自身内存处理数据?先说明一点,不管是我们自己开发的Java应用系统,还是一些中间件系统,在实现的时候都需要选择是否基于自己Java进程的内存...

2019-09-05 10:23:05 495 1

原创 字符串相关知识

1、为什么要引入其它两种字符串处理类?说白了就是提高字符串连接效率。在大部分情况下,字符串的拼接速度为:StringBuilder>StringBuffer>String。String是不可变的,因此每次对其操作改变其变量值,其实是生成一个新的对象,然后将变量引用指向新对象;因此速度慢。StringBuffer则不同,对其操作即直接操作对象指向的引用,无需产生新对象,速...

2019-09-03 14:36:19 174

原创 java异常的finally

try语句没有被执行,如在try语句之前就返回了,这样finally语句就不会执行;因此说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。 如果在try代码块中执行System.exit(0)语句;那么将终止Java虚拟机JVM,因此,finally语句也不会被执行到。 finally块的语句在try或catch中的return语句执行之后返...

2019-09-03 14:22:50 102

转载 图解“红黑树”原理,一看就明白!

“学过数据结构都知道二叉树的概念,而又有多种比较常见的二叉树类型,比如完全二叉树、满二叉树、二叉搜索树、均衡二叉树、完美二叉树等。图片来自 Pexels今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入、搜索、删除的效率都比较高。红黑树也是实现 TreeMap 存储结构的基石。二叉搜索树...

2019-09-03 11:22:55 117

原创 如何通过springboot + redis + 注解 + 拦截器,实现接口幂等性校验?

一、概念幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次,比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复回调 普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次 等等 二、常见解决方案 唯一...

2019-09-03 11:22:38 106

转载 Java接口的幂等性设计

转载:https://www.cnblogs.com/jack87224088/p/8688948.html在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次 在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次 当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重...

2019-09-03 11:22:05 174

转载 分布式事务

收藏 | 第一次有人把“分布式事务”讲的这么简单明了不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易...

2019-09-03 10:21:03 78

原创 写一个算法求2的平方根

写一个算法求2的平凡根,精度为小数点后10位。采用的是2分法求解public double sqrt2(){ //精度为小数点后面10位 final double PRECISION=0.0000000001; double high=1.5; double low=1.4; double mid=(high+low)/2; while...

2019-08-21 14:42:29 650

空空如也

空空如也

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

TA关注的人

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