锁的种类 独享锁 VS 共享锁 独享锁:锁只能被一个线程持有(synchronized) 共享锁:锁可以被多个程序所持有(读写锁) 乐观锁 VS 悲观锁 乐观锁:每次去拿数据的时候都乐观地认为别人不会修改,所以不进行加锁操作。乐观锁适用于多读的应用类型。(CAS,Atomic) CAS(Compar ...
分类:
编程语言 时间:
2019-04-05 00:16:09
阅读次数:
183
私有构造函数、私有静态变量以及 公有静态函数 几种形式: 1 懒汉式(不安全) 不使用时不加载 2 饿汉 安全 3 懒汉式 线程安全 加锁方式 不推荐使用 4 双重检查锁 线程安全 只对实例化的部分代码进行加锁 考虑下面的实现,也就是只使用了一个 if 语句。在 uniqueInstance == ...
分类:
其他好文 时间:
2019-04-03 22:22:39
阅读次数:
211
前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。demo1、Executors
分类:
编程语言 时间:
2019-04-02 23:56:52
阅读次数:
271
MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关。MySQL的存储引擎有InnoDB,MyISAM,Memory等,它们对事务的支持如下: 一. 事务的基本要素(ACID) 1. 原子性(Atomicity): 事务开始后所有的操作, 要么全部做完, 要么全部不做, 不可能停滞 ...
分类:
数据库 时间:
2019-03-31 18:03:44
阅读次数:
167
两个锁: 排他锁 被加锁的对象只能被持有锁的事务读取和修改,其他事务无法在该对象上加其他锁,也不能读取和修改该对象 共享锁 被加锁的对象可以被持锁事务读取,但是不能被修改,其他事务也可以在上面再加共享锁。 特别的,对共享锁: 如果两个事务对同一个资源上了共享锁,事务A 想更新该数据,那么它必须等待 ...
分类:
其他好文 时间:
2019-03-29 23:40:18
阅读次数:
172
1,采用加锁计数,或者使用合理的队列数量来避免缓存失效时对数据库造成太大的压力。这种办法虽然能缓解数据库的压力,但是同时又降低了系统的吞吐量。 2,分析用户行为,尽量让失效时间点均匀分布。避免缓存雪崩的出现。 3,如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redis主备,但是双缓存涉及到更 ...
分类:
其他好文 时间:
2019-03-28 00:50:21
阅读次数:
249
在基于tcp的 rcp实现方式中,有如下几种选择:1. 长连接:同步和异步方式。同步方式下客户端所有请求共用同一连接,在获得连接后要对连接加锁,在读写结束后才解锁释放连接,性能低下,基本很少采用,唯一优点是实现极其简单。异步方式下所有请求都带有消息ID,因此可以批量发送请求,异步接收回复,所有请求和 ...
分类:
其他好文 时间:
2019-03-27 11:03:13
阅读次数:
197
相对于利用数据库实现分布式锁,利用redis来实现分布式锁,有以下几个优点 优点: 1.可以集群部署的,可以解决单点问题。 2.自带过期时间可以解决死锁问题。 可靠性介绍 利用redis语句加锁。 set key value nx ex 2 解锁 delete key 问题所在: 虽然可以加入失效时 ...
分类:
其他好文 时间:
2019-03-25 16:16:56
阅读次数:
139
首先就是添加对分布式锁支持的比较好的客户端依赖 添加配置信息 添加配置类信息 之后是具体的工具类 之后调用工具类的加锁,解锁方法即可哦 ...
分类:
其他好文 时间:
2019-03-22 14:10:23
阅读次数:
145
1.同步 synchronized 2.轮询 while volatile 3.wait/notify机制 syncrhoized加锁的线程的Object类的wait()/notify()/notifyAll() ReentrantLock类加锁的线程的Condition类的await()/sign ...
分类:
编程语言 时间:
2019-03-21 23:07:29
阅读次数:
258