常用的同步方法是采用信号或加锁机制,保证资源在任意时刻至多被一个线程访问。Java语言在多线程编程上实现了完全对象化,提供了对同步机制的良好支持。在Java中一共有四种方法支持同步: ...
分类:
编程语言 时间:
2019-02-22 18:30:29
阅读次数:
171
概述 为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性:在任意时刻,只有一个客户端能持有锁。 不会发生死锁:即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 容错性:只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。 一致性:加锁和... ...
分类:
其他好文 时间:
2019-02-22 00:58:59
阅读次数:
200
按照非索引列更新 ## ## 测试数据: CREATE TABLE `tb4001` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(200) DEFAULT NULL, `c3` ...
分类:
数据库 时间:
2019-02-21 12:30:59
阅读次数:
206
【强制】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。正例:List<String> list = new ArrayList<>(); list.add("1"); list. ...
分类:
其他好文 时间:
2019-02-21 09:26:22
阅读次数:
174
1.尽量将共享变量(共享变量指的是在堆内存上创建的对象或者数组,包括成员变量、静态变量和数组元素。)定义为局部变量。 2.如果多线程只是读取变量,可以定义全局final。 3.使用ThreadLocal将变量创建为线程私有。 4.加锁 锁的重入指的是:当一个线程请求获得已经被其他线程获得的锁的时候, ...
分类:
编程语言 时间:
2019-02-21 00:33:22
阅读次数:
161
1. ReentrantLock的介绍 ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性(关于synchroni ...
分类:
其他好文 时间:
2019-02-21 00:18:17
阅读次数:
166
Cache 简介 Cache,即缓存。缓存能提升读取性能,其原理是用性能更好的存储介质存储一部分高频访问的内容,获得总体概率上的速度提升。 在开发中,我们口中的缓存可以是一个变量,或者是 redis。在计算机 CPU 内部,往往指的是 CPU 的各级 cache。 Cache 的一致性 由于是高频访 ...
分类:
编程语言 时间:
2019-02-18 01:12:57
阅读次数:
574
多条线程抢夺同一资源时,经常需要加锁,保证同一时间只能有一条线程操作一个资源。 同步锁就是互斥锁 格式:@synchronized (token) { } token:锁对象,要使用全局的对象,建议使用self {} 要加锁的代码段 注意点:加多把锁是无效的。 要注意加锁的位置。 互斥锁的优点: 能 ...
分类:
编程语言 时间:
2019-02-16 00:00:31
阅读次数:
279
Manager提供了很多数据共享机制,但是对于一些基础数据类型来说,是数据不安全的,那么Q:如何解决呢? A: 需要我们自己手动加锁 from multiprocessing import Manager,Process,Lock # Process开子进程用,Lock数据加锁用,Manager进程 ...
分类:
编程语言 时间:
2019-02-14 16:28:19
阅读次数:
182
HTTPS 之共享秘钥 公钥 及 私钥一 共享秘钥1.1 概念共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙。 1.2 共享秘钥在HTTP传输中的缺点以共享密钥方式加密时必须将密钥也发给对方。在互联网上转发密钥时,如果通信被监听,那么密钥就可 ...
分类:
Web程序 时间:
2019-02-13 12:23:38
阅读次数:
168