摘要:
我们在做电商的时候,经常遇到下单之后需要扣减库存的业务,那这个业务我们怎么来实现呢? 传统的做法是: 用户下单,执行下单服务; 同时,扣减库存; 如果是并发较高的场景,为了保证可用和性能,那么采用二阶段事务的方式,或者消息队列的方式,都可以实现。 但是,多个线程同时执行下单服务,库存服务,这样,会出 阅读全文
随笔 - 15
文章 - 0
评论 - 0
阅读 -
1195
摘要:
spring的三级缓存: Spring 容器的“三级缓存” Spring 容器的整个生命周期中,单例Bean对象是唯一的。即可以使用缓存来加速访问 Spring 源码中使用了大量的 Cache 手段,其中在循环依赖问题的解决过程中就使用了“三级缓存” 三级缓存的意义 singletonObject: 阅读全文
摘要:
看这个:https://blog.csdn.net/hanjiaqian/article/details/120501741里面有12种失效场景以及如何解决。 在 spring 中为了支持编程式事务,专门提供了一个类:TransactionTemplate,在它的 execute 方法中,就实现了事 阅读全文
摘要:
在Java中,使用volatile关键字修饰一个变量可以带来以下效果: 可见性:volatile保证了变量的可见性,即当一个线程修改了volatile变量的值时,新值对于其他线程来说是立即可见的。这意味着,如果一个线程更新了volatile变量,其他线程在访问这个变量时,总是能看到最新的值。 禁止指 阅读全文
摘要:
比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同HashSet、LinkedHashSet 和 TreeSet 都是 Set 接口的实现类,都能保证元素唯一,并且都不是线程安全的。 HashSet、LinkedHashSet 和 TreeSet 的主要区别在于底层数据 阅读全文
摘要:
JDK1.8 之前 HashMap 底层是 数组和链表, 之后在之前基础上加上红黑树。 相比于之前的版本, JDK1.8 之后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时, 阅读全文
摘要:
基础知识 Java 中,可以通过配合调用 Object 对象的 wait() 方法和 notify() 方法或 notifyAll() 方法来实现线程间的通信。 在线程中调用 wait() 方法,将阻塞当前线程,直至等到其他线程调用了调用 notify() 方法或 notifyAll() 方法进行通 阅读全文
摘要:
首先我个人认为不要立即去看语法,先去了解vue组件化开发思想,了解完这个后,脑子才有一个大体的前端开发是怎么样的(其实就是组件搭配,比如:搜索框是一个组件,按钮是一个组件,标题也可以看成一个组件等等,这些东西构成一个页面。页面的基本部分,比如说基本的布局可以看作是一个父组件,父组件把这些子组件引入进 阅读全文
摘要:
Executors类看起来功能还是比较强大的,又用到了工厂模式、又有比较强的扩展性,重要的是用起来还比较方便,如: ExecutorService executor = Executors.newFixedThreadPool(nThreads) ; 即可创建一个固定大小的线程池。 但是为什么在阿里 阅读全文
摘要:
一、场景 我们经常会碰见,一个需求就是,发送一条指令(消息),延迟一段时间执行,比如说常见的淘宝当下了一个订单后,订单支付时间为半个小时,如果半个小时没有支付,则关闭该订单。当然实现的方式有几种,今天来看看rabbitMQ实现的方式。 二、思路:rabbitMQ 如何实现 1:rabbitMQ为每个 阅读全文