再写一个关于线程安全的,很多人都喜欢讨论多线程怎么使用,什么AQS、CAS、对象监视。但是如果线程安全的基本定义没有完全搞清楚的话,多线程用起来还是有点儿可怕的。 什么是线程安全 官方一点儿的说法,多个线程要同时修改一个变量时,要保证一个变量的原子性、可见性、有序性。其实说白了就是,多个线程修改,你 ...
分类:
编程语言 时间:
2020-07-12 20:50:57
阅读次数:
62
Volatile关键字 保证线程间共享变量的可见性、有序性。 如何保证可见性:多了一个Lock的汇编指令。 什么是可见性 硬件 运行速度:CPU > 内存 > IO设备;所以在硬件的使用中,为了提高效率 CPU增加了高速缓存 读数据时,从内存读,然后缓存到CPU缓存,线程修改变量时会先同步到缓存,再 ...
分类:
编程语言 时间:
2020-07-11 16:56:15
阅读次数:
61
分工、同步、互斥的历史由来 分工:单道、多道、分时 同步:线程通信(组织编排任务) 互斥:因(多线程访问共享资源)果(串行化共享资源的访问) 1切都是为了提高性能 2.可见性、原子性、有序性 可见性:CPU缓存导致可见性问题 原子性:线程切换导致原子性问题 有序性:编译优化带来的有序性问题 3.ja ...
分类:
编程语言 时间:
2020-07-02 21:43:30
阅读次数:
69
Java并发理论基础 为什么需要多线程 CPU增加缓存,以均衡与内存间的速度差异. ==> 可见性问题 进程,线程,分时复用CPU,均衡CPU和I/O的速度差异. ==> 原子性问题 编译程序优化指令执行次序,使缓存合理利用. ==> 有序性问题 并发出现问题的原因 可见性 可见性:一个线程对共享变 ...
分类:
编程语言 时间:
2020-07-01 09:40:43
阅读次数:
66
215. 数组中的第K个最大元素 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/kth-largest-element-in-an-array 题目 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素, ...
分类:
编程语言 时间:
2020-06-29 19:59:13
阅读次数:
66
Zookeeper分布式过程协同技术 - 概念及基础 Zookeeper是什么? Zookeeper是一种分布式过程协同技术,其所提供的客户端API功能强大,其中包括: 保障强一致性。有序性和持久性。 实现通用的同步原语的能力。 在实际分布式系统中,并发往往导致不正确的行为。Zookeeper提供了 ...
分类:
其他好文 时间:
2020-06-25 23:05:35
阅读次数:
42
1.ZooKeeper 是什么?
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,
它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易
用的接口和性能高效、功能稳定的系统提供给用户。
客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所
连接的 zookeeper 机器来处理。对于写请求,这些请求会同时发给其他 zookeeper 机器并且达成一致后,请
求才会返回成功。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。
有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,
这个时间戳称为 zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回
结果中会带有这个 zookeeper 最新的 zxid。
分类:
其他好文 时间:
2020-06-10 17:36:17
阅读次数:
103
Zookeeper概述zookeeper高容错数据一致性协议(CP)的分布式小文件系统,提供类似于文件系统的目录方式的数据存储。全局数据一致性:每个server保存一份相同的数据副本,client无论连接到哪个server展示的数据都是一致的。可靠性:一旦事务成功提交,就会被保留下来。有序性:客户端发起的事务请求,在也会顺序的应用在Zookeeper中。数据更新原子性:一次数据更新要么成功要么失败
分类:
其他好文 时间:
2020-06-08 12:44:34
阅读次数:
60
分治算法 所谓分治就是指分而治之,即将较大规模的问题分解成几个较小规模的问题,通过对较小规模问题的求解达到对整个问题的求解。当我们将问题分解成两个较小问题求解时的分治方法称之为二分。 你们玩过猜数字的游戏吗?你的朋友心里想一个 1000 以内的正整数,你可以给出一个数字 x ,你朋友只要回答“比 x ...
分类:
其他好文 时间:
2020-06-05 14:54:15
阅读次数:
66
问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 分析 抛开二维数组的有序性质,直接遍历二维数组找是否含有一个数,算法复杂度为$O(n^2)$ 考 ...
分类:
编程语言 时间:
2020-05-23 11:13:57
阅读次数:
52