- 把一个计算任何进行分块,每一个块由不同的计算机(节点)来计算
-将数据拆分到每个节点上,保证各个块之间的数据不互相依赖
-每个节点并行的计算出结果,每个节点计算出的中间结果是什么样
-将结果汇总,如何汇总是一个难题 - 扩展的归并排序(将数据分为左右两半,分别归并排序,在把两个有序数据归并)
把数据切分为多个小数据库,不同的小数据库由不同的节点进行排序,然后将这些已经排好序的小数据库再次进行合并,进而完成了大数据库的排序 。归并的时候一般采用堆的数据结构,一般都是使用java提供的PriorityQueue类来直接使用,数据源的缓冲区一般使用Iterable来实现 - Iterable接口:可以不断获取下一个元素的能力;元素存储/获取方式被抽象,与归并节点无关。这个接口在内存和网络文件之上,它的next()方法,如果缓冲区空,读取下一批元素放入缓冲区;给出缓冲区目前的第一个元素;可配置项:缓冲区大小,如何读取下一批元素。
- 死锁分析
-在任何地方都可以线程切换,甚至在一句语句中间
-要尽力设想对自己最不利的情况 - 死锁条件,必须同时满足
-互斥等待,条件就必须有锁。 --------一般无法破除此条件
-hold and wait --------一次性获取所有资源
-循环等待 --------按顺序获取
-无法剥夺的等待 ---------加入超时 - java的垃圾回收
-不被引用的对象会被回收
-垃圾回收包括MInor GC和Full GC
-垃圾回收时所有运行暂行 - java资源管理
-内存会被回收,但是资源不会被释放
并行计算
最新推荐文章于 2023-08-28 00:01:55 发布