并行计算的一些知识点分享--并行系统,并行程序, 并发,并行,分布式

4 篇文章 0 订阅
3 篇文章 0 订阅

并行计算  核是个啥?

在并行计算中,“核”通常指的是处理器的核心(CPU核心)。每个核心都是一个独立的处理单元,能够执行计算任务。多核处理器指的是拥有多个这样核心的单一物理处理器,这样的设计可以允许多个任务并行处理,从而提高计算效率和处理速度。
在并行编程中,开发者可以利用多核处理器的特性,设计出能够同时执行多个任务的应用程序。这种程序设计方式被称为多线程或并行处理,可以有效提升程序的性能,特别是在处理大量数据和复杂计算时。
在提及“核”的数量时,我们通常是在讨论系统中可用的CPU核心总数。例如,一个具有4核的处理器就能够在同一时间为4个不同的任务提供处理能力。现代的服务器、工作站和家用电脑通常都配备有多核处理器,以适应日益增长的性能需求。
 

多核处理器的工作原理

多核处理器的工作原理基于并行处理的概念,它将多个处理器核心集成在单个芯片上,以实现同时执行多个任务的目的。

以下是多核处理器工作原理的简要说明:


1. **核心结构**:多核处理器由两个或更多个独立的处理核心组成,每个核心都有自己的算术逻辑单元(ALU)、控制单元和缓存(一级缓存、二级缓存等)。这些核心可能共享一些资源,如内存控制器和总线接口,但它们也有独立的执行引擎。


2. **并行处理**:当操作系统或应用程序启动多个线程或进程时,多核处理器可以同时运行这些线程或进程。每个核心可以处理一个线程,这样多个核心就可以同时处理多个线程,从而提高整体的处理速度和效率。


3. **任务分配**:操作系统负责将任务分配给各个核心。这个过程称为负载平衡,目的是确保所有核心都得到充分利用,避免某些核心过载而其他核心空闲的情况。


4. **资源共享**:虽然每个核心都有一定的独立资源,但多核处理器也共享一些资源,如内存和I/O接口。这种共享需要通过一定的机制来管理,以防止多个核心访问共享资源时发生冲突。


5. **缓存一致性**:由于每个核心都有自己的缓存,当多个核心访问同一数据时,需要确保缓存中的数据一致。多核处理器使用缓存一致性协议(如MESI协议)来管理这个问题,确保所有核心看到的数据是同步的。


6. **功耗和热设计功耗(TDP)**:多核处理器在提高性能的同时,也需要考虑功耗和散热问题。为了管理功耗,现代处理器采用了动态频率和电压调整技术,根据负载情况自动调整核心的工作频率和电压。


7. **指令级并行性**:现代处理器还利用指令级并行性(ILP)来提高性能。这意味着处理器可以同时执行多个指令,通过流水线技术、超标量架构和乱序执行等技术来实现。


举例

多核处理器的例子在个人电脑(PC)、服务器以及移动设备中都非常普遍。以下是一些具体的例子:


1. **英特尔酷睿i7处理器**:
   英特尔酷睿i7系列处理器是高端的个人电脑和工作站处理器,它们通常具有4到8个核心,能够提供强大的多任务处理能力。例如,酷睿i7-10900K拥有10个核心和20个线程,可以同时处理多个任务,非常适合需要大量计算资源的应用,如视频编辑、3D渲染和复杂的科学计算。


2. **AMD锐龙Threadripper处理器**:
   AMD的锐龙Threadripper系列是为高级工作站和服务器设计的,拥有更多的核心和线程。例如,Threadripper 3970X拥有32个核心和64个线程,非常适合专业的视频编辑、CAD设计和大规模的数据分析。


3. **ARM Cortex-A系列**:
   ARM Cortex-A系列处理器广泛应用于移动设备,如智能手机和平板电脑。例如,高通骁龙865移动平台采用的Cortex-A77核心,提供了强大的性能和能效比,支持多任务处理和高级游戏。


4. **服务器处理器,如AMD EPYC和英特尔至强**:
   服务器处理器需要处理大量的并发请求,因此它们通常具有更多的核心。例如,AMD EPYC 7742拥有64个核心和128个线程,而英特尔的至强Platinum 8280则拥有28个核心。
在实际使用中,多核处理器的工作原理可以通过一个简单的例子来说明:
假设你正在使用一个拥有8个核心的处理器。当你同时运行多个应用程序时,操作系统会将这些应用程序的线程分配给不同的核心。如果有一个应用程序需要大量的计算资源,操作系统可能会将其线程分配到多个核心上,以便它们可以并行运行,从而加快处理速度。


例如,如果你在编辑一个视频的同时还在后台运行病毒扫描,操作系统可能会将视频编辑软件的线程分配给一些核心,而将病毒扫描程序的线程分配给其他核心。这样,两个任务可以同时进行,而不会因为争夺处理器资源而减慢速度。

什么是显示并行计算结构?

显示的并行计算结构(Explicitly Parallel Instruction Computing,EPIC)是一种计算机架构设计理念,它是由英特尔和惠普共同开发的,旨在提高指令级并行的效率和简化编程模型。EPIC是安腾(Itanium)处理器架构的基础,这种架构主要用于高端的服务器和工作站。


EPIC的主要特点包括:


1. **指令级并行**:EPIC架构通过让编译器来决定哪些指令可以并行执行,而不是像传统的超标量处理器那样由硬件来决定。这使得处理器的设计可以更加简单,同时也能够更有效地利用并行性。


2. **超长指令字(VLIW)**:EPIC架构采用了超长指令字技术,即每条指令包含多个操作,这些操作可以在不同的执行单元上并行执行。编译器负责将这些操作打包成一条指令,并确保它们可以同时执行。


3. **静态调度**:在EPIC架构中,指令的并行性和依赖关系是由编译器在编译时静态确定的,而不是在运行时由处理器动态决定。这减少了处理器内部的复杂性,但要求编译器能够有效地分析代码并生成高效的并行指令序列。


4. **推测执行**:EPIC架构还支持推测执行,即处理器会根据现有的信息猜测下一步可能执行的操作,并提前执行这些操作。如果猜测正确,可以显著提高性能;如果错误,则撤销错误的操作。
EPIC架构的目标是通过让编译器承担更多的并行性优化工作,来简化处理器的硬件设计,并提高并行计算的效率和性能。然而,EPIC架构的推广并不如预期,主要是因为它对编译器的要求非常高,而且传统的超标量架构在指令级并行方面取得了显著的进步,使得EPIC架构的优势并不明显。


随着时间的推移,EPIC架构的影响逐渐减弱,而英特尔和其他处理器制造商转而专注于其他提高并行性的技术,如多核处理器和异构计算。
 

什么是消息传递口?

消息传递接口(Message Passing Interface,MPI)是一种用于编写并行计算程序的编程模型和通信协议,它允许在不同的计算节点之间传递消息。MPI是一种标准化的通信接口,广泛应用于高性能计算领域,尤其是在集群计算环境中。


MPI的主要特点和功能包括:


1. **点对点通信**:MPI支持进程之间的直接通信,即一个进程可以发送消息到另一个进程,也可以接收来自其他进程的消息。


2. **集体通信**:MPI还提供了一组集体通信操作,如广播、聚集、分散和全交换,这些操作可以在一组进程之间同步数据。


3. **同步和栅栏**:MPI提供了同步机制,如栅栏(barrier),用于协调不同进程的执行,确保在某个点所有进程都到达后再继续执行。


4. **通信器**:MPI使用通信器(communicator)来定义一组可以相互通信的进程。通信器可以是全局的,包含所有进程,也可以是局部的,只包含一部分进程。


5. **数据类型**:MPI支持多种基本数据类型和用户定义的数据类型,允许程序员发送和接收不同类型的数据。


6. **错误处理**:MPI提供了错误处理机制,允许程序检测和处理通信错误。
MPI的实现通常包括一个库,这个库提供了MPI标准的接口。程序员可以使用这些接口在他们的并行程序中实现进程间的通信。MPI程序通常是用C、C++或Fortran编写的,这些语言都有对MPI的原生支持。


MPI的一个常见应用场景是在分布式内存系统上进行科学计算和工程模拟,其中每个计算节点都有自己的内存,节点之间通过网络互连。通过MPI,程序员可以将大的计算任务分解成小的任务,分配给不同的节点并行执行,并通过消息传递来管理和同步数据。



 

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
理解大数据,实践大数据 理解大数据-实践大数据全文共48页,当前为第1页。 内容 对大数据的理解 拓尔思大数据产品布局和应用实践 理解大数据-实践大数据全文共48页,当前为第2页。 反对派认为,我们现在处在一个盲目的大数据崇拜时代 理解大数据-实践大数据全文共48页,当前为第3页。 大数据产生的背景 数据的爆发式增长和社会化趋势,新摩尔定律 大数据已经成为一种自然资源 机器数据日益重要 大数据不被利用就是成本 理解大数据-实践大数据全文共48页,当前为第4页。 大数据产生的背景 现有的商业软件难以处理大数据的规模和复杂性 获取(capture) 存贮(storage) 搜索(search) 分享(sharing) 分析(analysis) 可视化(visualization) 理解大数据-实践大数据全文共48页,当前为第5页。 奥巴马大数据战略 2012年3月29日,白宫发布美国政府的大数据计划 通过提高从大型复杂的数字数据集中提取知识和观点的能力,承诺帮助加快在科学与工程中的步伐,加强国家安全,并改变教学研究 理解大数据-实践大数据全文共48页,当前为第6页。 大数据的4V特性 体量Volume 多样性Variety 价值密度Value 速度Velocity 非结构化数据的超大规模和增长 总数据量的80~90% 比结构化数据增长快10倍到50倍 是传统数据仓库的10倍到50倍 大数据的异构和多样性 很多不同形式(文本、图像、视频、机器数据) 无模式或者模式不明显 不连贯的语法或句义 大量的不相关信息 对未来趋势与模式的可预测分析 深度复杂分析(机器学习、人工智能Vs传统商务智能(咨询、报告等) 实时分析而非批量式分析 数据输入、处理与丢弃 立竿见影而非事后见效 理解大数据-实践大数据全文共48页,当前为第7页。 对大数据的理解 大数据比云计算更为落地 大数据不仅仅是"大" 软件是大数据的引擎 大数据的应用不仅仅是精准营销 管理大数据"易",理解大数据"难" 理解大数据-实践大数据全文共48页,当前为第8页。 1、大数据比云计算更为落地 商业模式驱动 应用需求驱动 云计算本身也是大数据的一种业务模式 理解大数据-实践大数据全文共48页,当前为第9页。 2、大数据不仅仅是"大" 多大? PB 级 比大更重要的是数据的复杂性,有时甚至大数据中的小数据如一条微博就具有颠覆性的价值 理解大数据-实践大数据全文共48页,当前为第10页。 3、软件是大数据的引擎 和数据中心(Data Center) 一样,软件是大数据的驱动力,软件改变世界 理解大数据-实践大数据全文共48页,当前为第11页。 大数据生态:软件是引擎 理解大数据-实践大数据全文共48页,当前为第12页。 4、大数据的应用不仅仅是精准营销 通过用户行为分析实现精准营销是大数据的典型应用,但是大数据在各行各业特别是公共服务领域具有广阔的应用前景 消费行业 金融服务 食品安全 医疗卫生 军事 交通环保 电子商务 气象 理解大数据-实践大数据全文共48页,当前为第13页。 5、管理大数据"易"理解大数据"难" 虽然大数据是一个重大问题,真正的问题是让大数据更有意义 目前大数据管理多从架构和并行等方面考虑,解决高并发数据存取的性能要求及数据存储的横向扩展,但对非结构化数据的内容理解仍缺乏实质性的突破和进展,这是实现大数据资源化、知识化、普适化的核心 非结构化海量信息的智能化处理:自然语言理解、多媒体内容理解、机器学习等 理解大数据-实践大数据全文共48页,当前为第14页。 拓尔思大数据产品布局 TRS机器数据挖掘引擎 TRS SMAS 舆情云服务 TRS 大数据管理系统V7.0 理解大数据-实践大数据全文共48页,当前为第15页。 TRS 大数据管理系统发展历程 TRS 全文数据库 TRS 非结构化数据库 TRS 大数据 管理系统 理解大数据-实践大数据全文共48页,当前为第16页。 TRS 大数据管理系统V7.0 理解大数据-实践大数据全文共48页,当前为第17页。 TRS 大数据管理系统V7.0 分布式并行计算、多副本机制、没有单点的高可靠体系架构,兼容Hadoop标准 支持结构化、半结构化、非结构化数据的管理和搜索 支持实时及用户行为数据的高效管理和分析 支持PB级的海量数据管理 支持海量用户的高并发访问(千万级用户、万级并发) 充分释放硬件的潜力(多核、大内存等) 大规模部署的自动化和运行状态监控 创新的多检索引擎机制,提供开放的二次开发接口 理解大数据-实践大数据全文共48页,当前为第18页。 数据备份 大数据管理系统 数据存储 开发接口 基于Hadoop的数据分析 CKM文本挖掘与数据挖掘 关联规则与序列模式挖掘 推荐引擎的离线分析 MapReduce 数据库监控 机器
内容 对大数据的理解 xxx大数据产品布局和应用实践 理解大数据-实践大数据(1)全文共46页,当前为第1页。 反对派认为,我们现在处在一个盲目的大数据崇拜时代 理解大数据-实践大数据(1)全文共46页,当前为第2页。 大数据产生的背景 数据的爆发式增长和社会化趋势,新摩尔定律 大数据已经成为一种自然资源 机器数据日益重要 大数据不被利用就是成本 理解大数据-实践大数据(1)全文共46页,当前为第3页。 大数据产生的背景 现有的商业软件难以处理大数据的规模和复杂性 获取(capture) 存贮(storage) 搜索(search) 分享(sharing) 分析(analysis) 可视化(visualization) 理解大数据-实践大数据(1)全文共46页,当前为第4页。 奥巴马大数据战略 2012年3月29日,白宫发布美国政府的大数据计划 通过提高从大型复杂的数字数据集中提取知识和观点的能力,承诺帮助加快在科学与工程中的步伐,加强国家安全,并改变教学研究 理解大数据-实践大数据(1)全文共46页,当前为第5页。 大数据的4V特性 体量Volume 多样性Variety 价值密度Value 速度Velocity 非结构化数据的超大规模和增长 总数据量的80~90% 比结构化数据增长快10倍到50倍 是传统数据仓库的10倍到50倍 大数据的异构和多样性 很多不同形式(文本、图像、视频、机器数据) 无模式或者模式不明显 不连贯的语法或句义 大量的不相关信息 对未来趋势与模式的可预测分析 深度复杂分析(机器学习、人工智能Vs传统商务智能(咨询、报告等) 实时分析而非批量式分析 数据输入、处理与丢弃 立竿见影而非事后见效 理解大数据-实践大数据(1)全文共46页,当前为第6页。 对大数据的理解 大数据比云计算更为落地 大数据不仅仅是"大" 软件是大数据的引擎 大数据的应用不仅仅是精准营销 管理大数据"易",理解大数据"难" 理解大数据-实践大数据(1)全文共46页,当前为第7页。 1、大数据比云计算更为落地 商业模式驱动 应用需求驱动 云计算本身也是大数据的一种业务模式 理解大数据-实践大数据(1)全文共46页,当前为第8页。 2、大数据不仅仅是"大" 多大? PB 级 比大更重要的是数据的复杂性,有时甚至大数据中的小数据如一条微博就具有颠覆性的价值 理解大数据-实践大数据(1)全文共46页,当前为第9页。 3、软件是大数据的引擎 和数据中心(Data Center) 一样,软件是大数据的驱动力,软件改变世界 理解大数据-实践大数据(1)全文共46页,当前为第10页。 大数据生态:软件是引擎 理解大数据-实践大数据(1)全文共46页,当前为第11页。 4、大数据的应用不仅仅是精准营销 通过用户行为分析实现精准营销是大数据的典型应用,但是大数据在各行各业特别是公共服务领域具有广阔的应用前景 消费行业 金融服务 食品安全 医疗卫生 军事 交通环保 电子商务 气象 理解大数据-实践大数据(1)全文共46页,当前为第12页。 5、管理大数据"易"理解大数据"难" 虽然大数据是一个重大问题,真正的问题是让大数据更有意义 目前大数据管理多从架构和并行等方面考虑,解决高并发数据存取的性能要求及数据存储的横向扩展,但对非结构化数据的内容理解仍缺乏实质性的突破和进展,这是实现大数据资源化、知识化、普适化的核心 非结构化海量信息的智能化处理:自然语言理解、多媒体内容理解、机器学习等 理解大数据-实践大数据(1)全文共46页,当前为第13页。 xxx大数据产品布局 TRS机器数据挖掘引擎 TRS SMAS 舆情云服务 TRS 大数据管理系统V7.0 理解大数据-实践大数据(1)全文共46页,当前为第14页。 TRS 大数据管理系统发展历程 TRS 全文数据库 TRS 非结构化数据库 TRS 大数据 管理系统 理解大数据-实践大数据(1)全文共46页,当前为第15页。 TRS 大数据管理系统V7.0 理解大数据-实践大数据(1)全文共46页,当前为第16页。 TRS 大数据管理系统V7.0 分布式并行计算、多副本机制、没有单点的高可靠体系架构,兼容Hadoop标准 支持结构化、半结构化、非结构化数据的管理和搜索 支持实时及用户行为数据的高效管理和分析 支持PB级的海量数据管理 支持海量用户的高并发访问(千万级用户、万级并发) 充分释放硬件的潜力(多核、大内存等) 大规模部署的自动化和运行状态监控 创新的多检索引擎机制,提供开放的二次开发接口 理解大数据-实践大数据(1)全文共46页,当前为第17页。 数据备份 大数据管理系统 数据存储 开发接口 基于Hadoop的数据分析 CKM文本挖掘与数据挖掘 关联规则与序列模式挖掘 推荐引擎的离线分析 MapRed
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ....................................................................................................................................................... 19 2.1. 线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 ..................................................................................................................................... 21 2.2.1. 程序计数器(线程私有) ................................................................................................................ 22 2.2.2. 虚拟机栈(线程私有) .................................................................................................................... 22 2.2.3. 本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 ...................................................................................... 23 2.2.5. 方法区/永久代(线程共享) ..................................................................................................... 23 2.3. JVM 运行时内存 ................................................................................................................................. 24 2.3.1. 新生代 .......................................................................................................................................... 24 2.3.1.1. 2.3.1.2. 2.3.1.3. 2.3.1.4. Eden 区 .................................................................................................................................................... 24 ServivorFrom........................................................................................................................................... 24 ServivorTo .............................................................................................................................................. 24 MinorGC 的过程(复制->清空->互换) ....................................................................................... 24 1:eden、servicorFrom 复制到 ServicorTo,年龄+1................................................................................... 25 2:清空 eden、servicorFrom............................................................................................................................. 25 3:ServicorTo 和 ServicorFrom 互换................................................................................................................25 2.3.3.1. 2.4.1. 如何确定垃圾 .............................................................................................................................. 26 2.4.1.1. 引用计数法............................................................................................................................................... 26 2.4.1.2. 可达性分析............................................................................................................................................... 26 2.3.2. 2.3.3. 老年代 .......................................................................................................................................... 25 永久代 .......................................................................................................................................... 25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................................................................................................................. 26 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.5.1. 2.4.5.2. 2.6.1. 2.6.1.1. 2.6.1.2. 2.7.1. 2.7.2. 2.7.3. 2.7.4. 2.7.5. 2.7.6. 2.7.6.1. 标记清除算法(Mark-Sweep) .............................................................................................. 27 复制算法(copying)................................................................................................................. 27 标记整理算法(Mark-Compact).................................................................................................. 28 分代收集算法 .............................................................................................................................. 29 新生代与复制算法 .............................................................................................................................. 29 老年代与标记复制算法 ......................................................................................................................29 2.5. JAVA 四中引用类型 ........................................................................................................................... 30 2.5.1. 强引用 .......................................................................................................................................... 30 2.5.2. 软引用 .......................................................................................................................................... 30 2.5.3. 弱引用 .......................................................................................................................................... 30 2.5.4. 虚引用 .......................................................................................................................................... 30 2.6. GC 分代收集算法 VS 分区收集算法................................................................................................ 30 分代收集算法 .............................................................................................................................. 30 在新生代-复制算法............................................................................................................................. 30 在老年代-标记整理算法.....................................................................................................................30 分区收集算法 .............................................................................................................................. 31 2.7. GC 垃圾收集器 ................................................................................................................................... 31 2.6.2. Serial 垃圾收集器(单线程、复制算法)................................................................................ 31 ParNew 垃圾收集器(Serial+多线程) ................................................................................... 31 .......................................................... 32 ........................................................................... 32 ......................................................................... 33 ..................................................................................... 33 初始标记 .............................................................................................................................................. 33 Parallel Scavenge 收集器(多线程复制算法、高效) Serial Old 收集器(单线程标记整理算法 ) Parallel Old 收集器(多线程标记整理算法) CMS 收集器(多线程标记清除算法) 2.7.6.2. 2.7.6.3. 2.7.6.4. 2.8.1. 2.8.2. 2.8.3. 2.8.4. 2.8.5. 2.8.1. 2.8.2. 2.8.2.1. 2.8.2.2. 2.8.3. 2.8.4. 2.8.5. 并发标记 .............................................................................................................................................. 34 重新标记 .............................................................................................................................................. 34 并发清除 .............................................................................................................................................. 34 G1 收集器 .................................................................................................................................... 34 2.8. JAVA IO/NIO ....................................................................................................................................... 34 2.7.7. 2.9. 2.9.2. 2.9.2.1. 2.9.2.2. 2.9.2.3. 2.9.3. 2.9.4. 2.9.4.1. 2.9.4.2. 阻塞IO模型 ................................................................................................................................ 34 ............................................................................................................................ 35 ........................................................................................................................ 35 ........................................................................................................................ 36 ................................................................................................................................ 36 .................................................................................................................................. 36 .................................................................................................................................... 37 NIO 的缓冲区 .....................................................................................................................................38 NIO 的非阻塞 .....................................................................................................................................38 ....................................................................................................................................... 40 非阻塞 IO 模型 多路复用 IO 模型 信号驱动 IO 模型 ............................................................................................................................................ 40 ........................................................................................................................................ 40 JVM 类加载机制 ................................................................................................................................. 41 2.9.1.1. 2.9.1.2. 2.9.1.3. 2.9.1.4. 2.9.1.5. 2.9.1.6. 2.9.1.7. 2.9.1.8. 加载 .......................................................................................................................................................... 41 验证 .......................................................................................................................................................... 41 准备 .......................................................................................................................................................... 41 解析 .......................................................................................................................................................... 41 符号引用 .............................................................................................................................................. 42 直接引用 .............................................................................................................................................. 42 初始化 ...................................................................................................................................................... 42 类构造器 .............................................................................................................................. 42 类加载器 ...................................................................................................................................... 42 启动类加载器(Bootstrap ClassLoader) ......................................................................................... 43 扩展类加载器(Extension ClassLoader)..........................................................................................43 应用程序类加载器(Application ClassLoader): ..........................................................................43 双亲委派 ...................................................................................................................................... 43 OSGI(动态模型系统) ............................................................................................................ 44 动态改变构造 ...................................................................................................................................... 44 模块化编程与热插拔 .......................................................................................................................... 44 3. JAVA集合............................................................................................................................................45 3.1. 接口继承关系和实现 .......................................................................................................................... 45 3.2. LIST ....................................................................................................................................................... 47 3.2.1. ArrayList(数组)....................................................................................................................... 47 3.2.2. Vector(数组实现、线程同步) ............................................................................................... 47 3.2.3. LinkList(链表) ......................................................................................................................... 47 3.3. SET ....................................................................................................................................................... 48 3.3.1.1. 3.3.1.2. HashSet(Hash 表) ............................................................................................................................. 48 TreeSet(二叉树) ................................................................................................................................ 49 LinkHashSet(HashSet+LinkedHashMap) ................................................................................... 49 3.3.1.3. 3.4. MAP....................................................................................................................................................... 50 3.4.1. HashMap(数组+链表+红黑树)............................................................................................. 50 3.4.1.1. JAVA7 实现 ............................................................................................................................................. 50 3.4.1.2. JAVA8 实现 ............................................................................................................................................. 51 3.4.2. ConcurrentHashMap.................................................................................................................. 51 3.4.2.1. 3.4.2.2. 3.4.2.3. 3.4.2.4. Segment 段.............................................................................................................................................. 51 线程安全(Segment 继承 ReentrantLock 加锁) .............................................................................. 51 并行度(默认 16) ................................................................................................................................. 52 Java8 实现 (引入了红黑树) .............................................................................................................. 52 13/04/2018 Page 2 of 283 异步IO模型 JAVA IO 包 JAVA NIO Channel Buffer Selector 3.4.3. HashTable(线程安全) ........................................................................................................... 53 3.4.4. TreeMap(可排序) .................................................................................................................. 53 3.4.5. LinkHashMap(记录插入顺序) .............................................................................................. 53 4. JAVA 多线程并发.................................................................................................................................54 4.1.1. JAVA 并发知识库 ....................................................................................................................... 54 4.1.2. JAVA 线程实现/创建方式 .......................................................................................................... 54 4.1.2.1. 4.1.2.2. 4.1.2.3. 4.1.2.4. 继承 Thread 类 ........................................................................................................................................ 54 实现 Runnable 接口。............................................................................................................................ 54 ExecutorService、Callable、Future 有返回值线程.............................................................55 基于线程池的方式................................................................................................................................... 56 4.1.3. 4 种线程池 ................................................................................................................................... 56 4.1.3.1. 4.1.3.2. 4.1.3.3. newSingleThreadExecutor ................................................................................................................. 58 4.1.4. 线程生命周期(状态) .................................................................................................................... 58 4.1.3.4. 4.1.4.1. 4.1.4.2. 4.1.4.3. 4.1.4.4. 新建状态(NEW) ................................................................................................................................. 58 就绪状态(RUNNABLE): ................................................................................................................. 59 运行状态(RUNNING): .................................................................................................................... 59 阻塞状态(BLOCKED):....................................................................................................................59 4.1.9.5. 4.1.9.6. 4.1.9.7. 13/04/2018 Semaphore 信号量 ................................................................................................................................. 68 ................................................................................................................................. 68 ................................................................................................................................................................ 68 ........................................................................................................................... 69 AtomicInteger .......................................................................................................................................... 69 Page 3 of 283 newCachedThreadPool ......................................................................................................................... 57 ............................................................................................................................. 57 newScheduledThreadPool .................................................................................................................... 58 newFixedThreadPool 等待阻塞(o.wait->等待对列): ...................................................................................................................... 59 .......................................................................................................................................... 59 ............................................................................................................................................ 59 线程死亡(DEAD)................................................................................................................................ 59 ............................................................................................................................................................... 59 ............................................................................................................................................................... 59 ............................................................................................................................................................... 59 4.1.5. 终止线程 4 种方式 ...................................................................................................................... 60 同步阻塞(lock->锁池) 其他阻塞(sleep/join) 4.1.4.5. 4.1.5.1. 4.1.5.2. 4.1.5.3. 4.1.5.4. 正常运行结束........................................................................................................................................... 60 使用退出标志退出线程...........................................................................................................................60 Interrupt 方法结束线程 ........................................................................................................................... 60 stop 方法终止线程(线程不安全)....................................................................................................... 61 正常结束. 异常结束. 调用 stop 4.1.6. sleep 与 wait 区别....................................................................................................................... 61 4.1.7. start 与 run 区别 .......................................................................................................................... 62 4.1.8. JAVA 后台线程 ........................................................................................................................... 62 4.1.9. JAVA 锁 ....................................................................................................................................... 63 4.1.9.1. 4.1.9.2. 4.1.9.3. 乐观锁 ...................................................................................................................................................... 63 悲观锁 ...................................................................................................................................................... 63 自旋锁 ...................................................................................................................................................... 63 自旋锁的优缺点....................................................................................................................................................63 自旋锁时间阈值(1.6 引入了适应性自旋锁) .................................................................................................. 63 自旋锁的开启........................................................................................................................................................ 64 4.1.9.4. Synchronized 同步锁.............................................................................................................................. 64 ....................................................................................................................................... 64 ....................................................................................................................................... 64 Synchronized 作用范围 Synchronized 核心组件 Synchronized 实现 ............................................................................................................................................... 64 ReentrantLock......................................................................................................................................... 66 ........................................................................................................................................... 66 ................................................................................................................................................................ 66 .................................................................................................................................................................... 67 ........................................................................................................................ 67 ............................................................................................................................................. 67 ......................................................................................................... 68 tryLock 和 lock 和 lockInterruptibly 的区别........................................................................................................ 68 Lock 接口的主要方法 非公平锁 公平锁 ReentrantLock 与 synchronized ReentrantLock 实现 Condition 类和 Object 类锁方法区别区别 实现互斥锁(计数器为 1) 代码实现 Semaphore 与 ReentrantLock 4.1.9.8. 4.1.9.9. 4.1.9.10. 4.1.9.11. 4.1.9.12. 4.1.9.14. 4.1.9.15. 4.1.9.16. 可重入锁(递归锁)............................................................................................................................... 69 公平锁与非公平锁................................................................................................................................... 70 ..................................................................................................................................................... 70 ........................................................................................................................................... 70 ReadWriteLock 读写锁......................................................................................................................70 ........................................................................................................................................................................ 70 ........................................................................................................................................................................ 70 公平锁(Fair) 非公平锁(Nonfair) 读锁 写锁 共享锁和独占锁 .................................................................................................................................. 70 .................................................................................................................................................................... 70 .................................................................................................................................................................... 70 重量级锁(Mutex Lock)................................................................................................................71 轻量级锁 .............................................................................................................................................. 71 锁升级.................................................................................................................................................................... 71 独占锁 共享锁 4.1.9.13. 偏向锁 .................................................................................................................................................. 71 分段锁 .................................................................................................................................................. 71 锁优化 .................................................................................................................................................. 71 减少锁持有时间 .................................................................................................................................................... 72 ............................................................................................................................................................ 72 .................................................................................................................................................................... 72 .................................................................................................................................................................... 72 .................................................................................................................................................................... 72 4.1.10. 线程基本方法..............................................................................................................................72 减小锁粒度 锁分离 锁粗化 锁消除 4.1.10.1. 4.1.10.2. 4.1.10.3. 4.1.10.4. 4.1.10.5. 4.1.10.6. 4.1.10.7. 4.1.10.8. 线程等待(wait) ............................................................................................................................... 73 线程睡眠(sleep)............................................................................................................................. 73 线程让步(yield) .............................................................................................................................. 73 线程中断(interrupt)........................................................................................................................ 73 Join 等待其他线程终止 ...................................................................................................................... 74 为什么要用 join()方法? .................................................................................................................... 74 线程唤醒(notify)............................................................................................................................. 74 其他方法: .......................................................................................................................................... 74 4.1.11. 线程上下文切换..........................................................................................................................75 4.1.11.1. 4.1.11.2. 4.1.11.3. 4.1.11.4. 4.1.11.5. 4.1.11.6. 4.1.11.7. 进程......................................................................................................................................................75 上下文..................................................................................................................................................75 寄存器..................................................................................................................................................75 程序计数器 .......................................................................................................................................... 75 PCB-“切换桢”................................................................................................................................. 75 上下文切换的活动: .......................................................................................................................... 76 引起线程上下文切换的原因 .............................................................................................................. 76 4.1.12. 同步锁与死锁..............................................................................................................................76 4.1.12.1. 同步锁 .................................................................................................................................................. 76 4.1.12.2. 死锁 ...................................................................................................................................................... 76 4.1.13. 线程池原理..................................................................................................................................76 4.1.14.1. 4.1.14.2. 4.1.14.3. 4.1.14.4. 4.1.14.5. 4.1.14.6. 4.1.14.7. 4.1.14.8. 4.1.13.1. 4.1.13.2. 4.1.13.3. 4.1.13.4. 线程复用 .............................................................................................................................................. 76 ...................................................................................................................................... 76 .............................................................................................................................................. 78 ......................................................................................................................... 78 4.1.14. JAVA 阻塞队列原理.................................................................................................................... 79 线程池的组成 拒绝策略 Java 线程池工作过程 阻塞队列的主要方法 .......................................................................................................................... 80 ............................................................................................................................................................ 80 .................................................................................................................................................... 81 ............................................................................................................................. 81 ....................................................................................... 82 ......................................................................... 82 .............................................................. 82 .......................................................................................... 82 .............................................................. 83 ...................................................................................................................... 83 插入操作: 获取数据操作: Java 中的阻塞队列 ArrayBlockingQueue(公平、非公平) LinkedBlockingQueue(两个独立锁提高并发) PriorityBlockingQueue(compareTo 排序实现优先) DelayQueue(缓存失效、定时任务 ) SynchronousQueue(不存储数据、可用于传递数据) LinkedTransferQueue 13/04/2018 Page 4 of 283 4.1.14.9. LinkedBlockingDeque ..................................................................................................................... 83 4.1.15. CyclicBarrier、CountDownLatch、Semaphore 的用法 ........................................................ 84 4.1.15.1. 4.1.15.2. 4.1.15.3. ................................................................................................ 84 ............................................... 84 ....................................................................... 85 CountDownLatch(线程计数器 ) CyclicBarrier(回环栅栏-等待至 barrier 状态再全部同时执行) Semaphore(信号量-控制同时访问的线程个数) 4.1.16. volatile 关键字的作用(变量可见性、禁止重排序) ............................................................. 87 变量可见性............................................................................................................................................................ 87 禁止重排序............................................................................................................................................................ 87 ..................................................................................................................... 87 ................................................................................................................................................................ 87 4.1.17. 如何在两个线程之间共享数据...................................................................................................88 将数据抽象成一个类,并将数据的操作作为这个类的方法.............................................................................88 .................................................................................................................. 89 4.1.18. ThreadLocal 作用( )........................................................................................ 90 .............................................................................................................. 90 ................................................................................................................................................................ 91 4.1.19. synchronized 和 ReentrantLock 的区别 .................................................................................. 91 4.1.19.1. .................................................................................................................................. 91 4.1.19.2. .................................................................................................................................. 92 4.1.20. ConcurrentHashMap 并发......................................................................................................... 92 4.1.20.1. .......................................................................................................................................... 92 4.1.20.2. .......................................................................................................... 92 ................................................. 93 4.1.21. Java 中用到的线程调度 ............................................................................................................. 93 比 sychronized 更轻量级的同步锁 适用场景 Runnable 对象作为一个类的内部类 ThreadLocalMap(线程的一个属性) 线程本地存储 使用场景 两者的共同点: 两者的不同点: 4.1.21.1. 4.1.21.2. 4.1.21.3. 4.1.21.4. 减小锁粒度 ...................................................................................................................................... 93 ...................................................................................................................................... 93 ............................................................................................. 94 ..................................................................................................................... 94 4.1.22. 进程调度算法..............................................................................................................................94 4.1.22.1. 4.1.22.2. 4.1.22.3. ...................................................................................................................................... 94 ...................................................................................................................... 95 .............................................................................................................. 96 )..................................................................96 .......................................................................................................................................... 96 ........................................................................... 97 ............................................................................................................................................. 98 4.1.24. 什么是AQS(抽象的队列同步器).........................................................................................98 Exclusive 独占资源-ReentrantLock ................................................................................................................... 99 Share 共享资源-Semaphore/CountDownLatch ............................................................................................... 99 同步器的实现是 ABS 核心(state 资源状态计数) ....................................................................................... 100 ReentrantReadWriteLock 实现独占和共享两种方式.....................................................................................100 5. JAVA基础..........................................................................................................................................101 4.1.23. 什么是CAS( 4.1.23.1. 4.1.23.2. 4.1.23.3. 5.1.1. 5.1.1.1. 5.1.1.2. 5.1.1.3. 5.1.1.4. JAVA 异常分类及处理.............................................................................................................. 101 .................................................................................................................................................... 101 ............................................................................................................................................ 101 ..................................................................................................................................................................... 101 ........................................................................... 101 ................................................................................................................................ 102 ......................................................... 102 .................................................................................................................. 102 ............................................................................................................ 102 13/04/2018 Page 5 of 283 ConcurrentHashMap 分段锁 ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成 抢占式调度: 协同式调度: JVM 的线程调度实现(抢占式调度) 线程让出 cpu 的情况: 优先调度算法 高优先权优先调度算法 基于时间片的轮转调度算法 比较并交换-乐观锁机制-锁自旋 概念及特性 原子包 java.util.concurrent.atomic(锁自旋) ABA 问题 概念 异常分类 Error Exception(RuntimeException、CheckedException) 异常的处理方式 遇到问题不进行具体处理,而是继续抛给调用者 (throw,throws) try catch 捕获异常针对性处理方式 Throw 和 throws 的区别: 位置不同 功能不同: 5.1.2. 5.1.2.1. 5.1.2.2. 5.1.2.3. 5.1.2.4. 5.1.2.5. 5.1.2.6. 5.1.2.7. 5.1.3. 5.1.4.1. 5.1.4.2. 5.1.4.3. 5.1.4.4. @Documented 描述-javadoc @Inherited 阐述了某个被标注的类型是被继承的 5.1.5.1. 5.1.5.2. 5.1.5.3. 5.1.5.4. 泛型方法() ............................................................................................................................. 112 泛型类 ............................................................................................................................................. 112 类型通配符? .......................................................................................................................................... 113 类型擦除 ................................................................................................................................................ 113 .............................................................................................................................................................. 102 .......................................................................................................................................................... 102 JAVA 反射 ................................................................................................................................. 103 ............................................................................................................................................ 103 ............................................................ 103 ................................................................................................................................ 103 .................................................................................................................................. 103 ...................................................................................................................... 104 .................................................................................................................................... 104 ............................................................................ 104 ..................................................................... 104 ............................................................................................................ 104 ....................................................................................................................... 104 ................................................................................ 104 ............................................................................ 104 动态语言 反射机制概念 (运行状态中知道类所有的属性和方法) 反射的应用场合 编译时类型和运行时类型 的编译时类型无法获取具体方法 Java 反射 API 反射 API 用来生成 JVM 中的类、接口或则对象的信息。 反射使用步骤(获取 Class 对象、调用对象方法) 获取 Class 对象的 3 种方法 调用某个对象的 getClass()方法 调用某个类的 class 属性来获取该类对应的 Class 对象 使用 Class 类中的 forName()静态方法(最安全/性能最好) 创建对象的两种方法 Class 对象的 newInstance() 调用 Constructor 对象的 newInstance() ........................................................................................................................ 105 ............................................................................................................................. 105 .......................................................................................................... 105 JAVA 注解 ................................................................................................................................. 106 5.1.3.1. 概念 ........................................................................................................................................................ 106 5.1.3.2. 4 种标准元注解...................................................................................................................................... 106 @Target 修饰的对象范围 ................................................................................................................................. 106 @Retention 定义 被保留的时间长短 ............................................................................................................... 106 ................................................................................................................................ 106 .............................................................................................. 106 5.1.3.3. 注解处理器............................................................................................................................................. 107 5.1.4. JAVA 内部类 ............................................................................................................................. 109 静态内部类............................................................................................................................................. 109 成员内部类............................................................................................................................................. 110 局部内部类(定义在方法中的类) ..................................................................................................... 110 匿名内部类(要继承一个父类或者实现一个接口、直接使用 new 来生成一个对象的引用) ..... 111 5.1.5. JAVA 泛型 ................................................................................................................................. 112 5.1.6. JAVA 序列化(创建可复用的 Java 对象) ................................................................................. 113 .................................................................................................... 113 ................................................................................................. 113 .................................................................................................................................. 113 Serializable 实现序列化 .................................................................................................................................... 113 ............................................... 113 ................................................................................................ 113 ............................................................................................................................................................. 113 .................................................................................................................................. 114 .............................................................................................................................................. 114 ............................................................................................ 114 5.1.7. JAVA 复制 ................................................................................................................................. 114 5.1.7.1. ......................................................................................................................................... 114 5.1.7.2. ..................................................................................... 114 5.1.7.3. ................................................................................................. 115 5.1.7.4. ........................................................................................................ 115 6. SPRING 原理 ..................................................................................................................................... 116 6.1.1. Spring 特点................................................................................................................................ 116 6.1.1.1. 轻量级 ................................................................................................................................................ 116 13/04/2018 Page 6 of 283 保存(持久化)对象及其状态到内存或者磁盘 序列化对象以字节数组保持-静态成员不保存 序列化用户远程对象传输 ObjectOutputStream 和 ObjectInputStream 对对象进行序列化及反序列化 writeObject 和 readObject 自定义序列化策略 序列化 ID 序列化并不保存静态变量 序列化子父类说明 Transient 关键字阻止该变量被序列化到文件中 直接赋值复制 浅复制(复制引用但不复制引用的对象) 深复制(复制对象和其应用对象) 序列化(深 clone 一中实现) 6.1.1.2. 6.1.1.3. 6.1.1.4. 6.1.1.5. 6.1.2. 6.1.3. 6.1.4. 6.1.5. 6.1.6. 6.1.7. ............................................................................................................................................ 116 ............................................................................................................................................ 116 .................................................................................................................................................... 116 ............................................................................................................................................ 116 Spring 核心组件........................................................................................................................ 117 Spring 常用模块........................................................................................................................ 117 Spring 主要包............................................................................................................................ 118 Spring 常用注解........................................................................................................................ 118 Spring 第三方结合.................................................................................................................... 119 Spring IOC 原理........................................................................................................................ 120 6.1.7.1. 6.1.7.2. 6.1.7.3. 概念 ........................................................................................................................................................ 120 Spring 容器高层视图 ............................................................................................................................ 120 IOC 容器实现......................................................................................................................................... 120 控制反转 面向切面 容器 框架集合 BeanFactory-框架基础设施 .............................................................................................................................. 120 1.1..1.1.1 1.1..1.1.2 1.1..1.1.3 1.1..1.1.4 1.1..1.1.5 1.1..1.1.6 1.1..1.1.7 1.1..1.1.8 BeanDefinitionRegistry 注册表................................................................................................. 121 BeanFactory 顶层接口 .............................................................................................................. 121 ListableBeanFactory ................................................................................................................. 121 HierarchicalBeanFactory 父子级联.......................................................................................... 121 ConfigurableBeanFactory......................................................................................................... 121 AutowireCapableBeanFactory 自动装配 ................................................................................ 122 SingletonBeanRegistry 运行期间注册单例 Bean................................................................... 122 依赖日志框框.............................................................................................................................122 ApplicationContext 面向开发应用 .................................................................................................................... 122 WebApplication 体系架构 ................................................................................................................................. 123 6.1.7.4. Spring Bean 作用域.............................................................................................................................. 123 singleton:单例模式(多线程下不安全) ...................................................................................................... 123 prototype:原型模式每次使用时创建 ................................................................................................................ 124 Request:一次 request 一个实例 .................................................................................................................... 124 session ................................................................................................................................................................ 124 global Session....................................................................................................................................................124 6.1.7.5. Spring Bean 生命周期.......................................................................................................................... 124 实例化.................................................................................................................................................................. 124 IOC依赖注入......................................................................................................................................................124 setBeanName 实现............................................................................................................................................ 124 BeanFactoryAware 实现 ................................................................................................................................... 124 ApplicationContextAware 实现......................................................................................................................... 125 postProcessBeforeInitialization 接口实现-初始化预处理.......................................................................... 125 init-method .......................................................................................................................................................... 125 postProcessAfterInitialization ........................................................................................................................... 125 Destroy 过期自动清理阶段 ............................................................................................................................... 125 destroy-method 自配置清理 ............................................................................................................................. 125 6.1.7.6. Spring 依赖注入四种方式 .................................................................................................................... 126 构造器注入.......................................................................................................................................................... 126 setter方法注入...................................................................................................................................................127 静态工厂注入...................................................................................................................................................... 127 实例工厂.............................................................................................................................................................. 127 6.1.7.7. 5 种不同方式的自动装配...................................................................................................................... 128 6.1.8. Spring APO 原理 ...................................................................................................................... 129 6.1.8.1. 6.1.8.2. 6.1.8.1. 概念 ........................................................................................................................................................ 129 AOP 核心概念 ....................................................................................................................................... 129 AOP 两种代理方式 ............................................................................................................................... 130 JDK 动态接口代理 ............................................................................................................................................. 130 CGLib 动态代理.................................................................................................................................................. 131 6.1.8.2. 实现原理 ................................................................................................................................................ 131 6.1.9. Spring MVC原理......................................................................................................................132 6.1.9.1. MVC 流程............................................................................................................................................... 132 Http 请求到 DispatcherServlet ....................................................................................................................... 133 HandlerMapping 寻找处理器............................................................................................................................133 调用处理器 Controller........................................................................................................................................ 133 13/04/2018 Page 7 of 283 Controller 调用业务逻辑处理后,返回 ModelAndView.................................................................................133 DispatcherServlet 查询 ModelAndView .......................................................................................................... 133 ModelAndView 反馈浏览器 HTTP ................................................................................................................... 133 6.1.9.1. MVC 常用注解 ....................................................................................................................................... 133 6.1.10. Spring Boot 原理....................................................................................................................... 134 1. 创建独立的 Spring 应用程序............................................................................................................................. 134 2.嵌入的Tomcat,无需部署WAR文件.............................................................................................................134 3. 简化 Maven 配置 ................................................................................................................................................ 134 4. 自动配置 Spring ................................................................................................................................................. 134 5. 提供生产就绪型功能,如指标,健康检查和外部配置................................................................................... 134 6. 绝对没有代码生成和对 XML 没有要求配置 [1] ............................................................................................... 134 6.1.11. JPA 原理 .................................................................................................................................... 134 6.1.11.1. 事务....................................................................................................................................................134 6.1.11.2. 6.1.11.1. 6.1.11.1. 本地事务 ............................................................................................................................................ 134 分布式事务 ........................................................................................................................................ 135 两阶段提交 ........................................................................................................................................ 136 1 准备阶段........................................................................................................................................................... 136 2 提交阶段:....................................................................................................................................................... 136 6.1.12. Mybatis 缓存.............................................................................................................................. 137 6.1.12.1. Mybatis 的一级缓存原理(sqlsession 级别)..............................................................................138 6.1.12.2. 二级缓存原理(mapper 基本).....................................................................................................138 具体使用需要配置: .......................................................................................................................................... 139 6.1.13. Tomcat 架构 .............................................................................................................................. 139 7. 微服务 ................................................................................................................................................. 140 7.1.1. 服务注册发现 ............................................................................................................................ 140

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值