1.设计思路 将请求拦截在系统上游,降低下游压力:秒杀系统特点是并发量极大,但实际秒杀成功的请求数量却很少,所以如果不在前端拦截很可能造成数据库读写锁冲突,甚至导致死锁,最终请求超时。 充分利用缓存:利用缓存可极大提高系统读写速度。 消息队列:消息队列可以削峰,将拦截大量并发请求,这也是一个异步处理 ...
分类:
其他好文 时间:
2018-06-14 21:00:35
阅读次数:
208
读写锁的分配规则: (1)只要没有线程持有某个给定的读写锁用于写,那么任意数目的线程可以持有该读写锁用于读。 (2)仅当没有线程持有某个给定的读写锁用于读或者写时,才能分配该读写锁用于写。 即只要没有线程在修改某个给定的数据,那么任意数目的线程都可以拥有该数据的读访问权。仅当没有其它线程在 读或修改 ...
分类:
其他好文 时间:
2018-06-14 18:34:32
阅读次数:
125
一、读写锁 ReadWriteLock概念特点读写锁维护了一对相关的锁,一个用于只读操作,一个用于写入操作。只要没有writer,读取锁可以由多个reader线程同时保持。写入锁是独占的。 互斥锁【ReetrantLock】一次只允许一个线程访问共享数据,哪怕进行的是只读操作;读写锁【ReadWri ...
分类:
其他好文 时间:
2018-06-14 11:33:29
阅读次数:
187
其他1. 什什么是幂等?什什么情况下需要考虑幂等?你怎么解决幂等的问题? 编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 Java1. 多个线程同时读写,读线程的数量量远远?大于写线程,你认为应该如何解决并发的问题?你会选择加什什么样的锁? 引入读写锁 ReadWrit ...
分类:
其他好文 时间:
2018-06-09 00:52:41
阅读次数:
355
sets类型及操作set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key理解为集合的名字。set的是通过hashtable实现(即set并没有顺序)的,所以添加、删除和查找的复杂度都是O(1)。hashtable会随着添加或者删除自动的调整大小。需要注意的是调整hashtable大小时候需要同步(获取写锁)会阻塞其他读写操作,可能不久后就会改
分类:
其他好文 时间:
2018-06-03 23:28:32
阅读次数:
155
package com.fh.interview; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.R... ...
分类:
其他好文 时间:
2018-06-02 16:35:46
阅读次数:
167
1、效果和synchronized一样,都可以同步执行,lock方法获得锁,unlock方法释放锁 使用示例: 注意:必须要在finally块里调用lock.unlock() 释放锁. 2、使用Condition实现等待/通知: awati() 与 signal() 方法: 通过Condition对 ...
分类:
编程语言 时间:
2018-06-01 13:44:28
阅读次数:
196
一、事务并发调度的问题 三级封锁协议 可见,三级锁操作一个比一个厉害(满足高级锁则一定满足低级锁)。但有个非常致命的地方,一级锁协议就要在第一次读加x锁,直到事务结束。几乎就要在整个事务加写锁了,效率非常低。三级封锁协议只是一个理论上的东西,实际数据库常用另一套方法来解决事务并发问题。 二、隔离性级 ...
分类:
数据库 时间:
2018-05-30 10:48:21
阅读次数:
213
一.规格化设计的发展历史 在微软的官网上,我找到了一篇描述规格的文章Specification and Verification of Object Oriented Software,其中说到: A system for specifying, writing, and verifying pro ...
分类:
其他好文 时间:
2018-05-28 00:57:05
阅读次数:
163