精华内容
参与话题
问答
  • 第一阶段:《计算机体系结构》课程 分成4篇:分别是硬件篇,软件篇,网络篇,行业篇 这一阶段主要是对计算机体系结构图知识做一个全方位的介绍。 第二阶段:《嵌入式技术》课程 这一阶段为具体嵌入式技术课程...
  • 第一阶段:《计算机体系结构》课程 分成4篇:分别是硬件篇,软件篇,网络篇,行业篇 第二阶段:《嵌入式技术》课程 分成5部分:基础知识,单片机,linux嵌入式,安卓,项目
  • 体系结构

    2006-06-24 19:51:00
    体系结构包括一组部件以及部件之间的联系。 体系结构风格有9大类:1. 数据流系统,包括顺序批处理、管道和过滤器;2. 调用-返回系统,包括主程序和子程序、面向对象系统、层次结构;3. 独立部件,包括通信进程、...
     体系结构包括一组部件以及部件之间的联系。
    

          体系结构风格有9大:1. 数据流系统,包括顺序批处理、管道和过滤器;2. 调用-返回系统,包括主程序和子程序、面向对象系统、层次结构;3. 独立部件,包括通信进程、事件隐式调用;4. 虚拟机,包括解释器、规则基系统;5. 以数据为中心的系统(库),包括数据库、超文本系统、黑板系统;6. 特殊领域风格;例如过程控制、模拟器;7. 特殊结构的风格,例如分布式处理、状态转移系统;8. 不同风格合成建立的异构结构;9. 最初始、最基本的主程序/子程序。

          自1964年G. AMDAhl首次提出体系结构这个概念,人们对计算机系统开始有了统一而清晰的认识,为从此以后计算机系统的设计与开发奠定了良好的基础。近四十年来, 体系结构学科得到了长足的发展, 其内涵和外延得到了极大的丰富。特别是网络计算技术的发展,使得网络计算体系结构成为当今一种主要的计算模式结构。微电子技术的飞速发展使芯片级体系结构研究成为一个挑战性课题。体系结构与系统软件,应用软件,程序设计语言的紧密结合与相互作用也使今天的计算机与以往有很大的不同,并触发了大量的前沿技术、相关产品开发与基础研究课题。

          在传统的程序设计领域中,人们使用流程图来表达系统的基本功能和实现的具体逻辑,但是,流程图实际上仅仅是源程序的图形化表示,无法给系统的分析和开发者提供更多的信息,所以没有在实际的系统开发过程中得到广泛的应用。随着软件系统的规模和复杂性的增加,对软件系统的整体结构(数据和控制的逻辑)进行分析和描述成为大型系统开发的一个不可缺少的重要部分,显然,使用流程图是无法达到这个目标的,我们必须使用新的方法和概念来对系统的整体结构进行把握。

          系统分析实际上包括两个阶段的工作,首先是需求的 分析,也就是说,划分出系统和环境之间的界面,将所研究(或者是将要开发)的系统和周围的环境分离,这就是从使用者的观点,将整个系统作为一个整体来考 察。其次是系统的设计,根据系统的整体功能和数据,参考实际的物理系统或者类似的系统,设计实际运行的软件系统,这一步骤实际上就是体系结构的分析和确 定。

          从系统工程的观点看来,任何复杂的系统都是由相对简单的,在当前所分析的系统层次是原始的基本元素(虽然在更进一步的分析中,这些元素可能具有非常复杂的 内部结构)组成的,这些基本元素之间存在复杂的相互作用。所以,软件系统的分析和设计的基本任务是:确立系统中的基本元素(完成系统的功能所必不可少的成 分);确定这些元素之间相互作用的方式(这就是系统的体系结构)。

          我们在这里简单的介绍几种最基本的体系结构的范式,他们的特点、优点和缺点,最后给出实际开发中如何选择体系结构范式的一些指导性的意见。

    一、基本的体系结构的范式

    1. 管道和过滤器:

          每个组件具有输入和输出的集合,从流中读出数据作为输入,产生输出数据的流。整个系统可以看成多个过滤器复合形成的数据处理组件。


    过滤器A
     
    过滤器B
     
    过滤器C
     
    过滤器A
     
    过滤器D
     
    管道
     
    管道

          特点:

          l 过滤器之间是相互独立的(不能共享状态),其中一个过滤器的操作和行为不能影响另外过滤器的操作和行为,流的传送没有副作用。

          l 过滤器对所输入流的来源和输出流的去向不关心,不需要知道流的来源和流的去向,来源和去向对于过滤器的数据处理没有任何影响。

          l 过滤和流的传送可以是并发的,可以同时有多个流的传送存在于系统之中。

          实例:

          一个最著名的实例是unix的shell编程,多个对数据进行处理的程序(组件)通过管道联结起来,产生总和的效果;还有传统的编译器,源代码经过词法分析、语法分析、中间代码生成、目标代码生成等步骤生成输出的目标代码。

          优点:

          l 整个系统的功能是多个过滤器作用的总和,这样可以简化系统的分析和设计,可以经过需求的分析之后将整个系统作为一个过滤器处理,然后再逐步的细化成为多个相互连接的过滤器。

          l 支持组件的重用,同一个过滤器可以多次出现在系统的不同位置。

          l 易于维护和增强,过滤器可以被替换,可以增加新的过滤器到系统中而不改变原有的过滤器,不改变原来系统的基本功能。

          l 本质上的并发性支持,这种体系结构由于本质上是与各个独立的过滤器的状态无关的,与并行的流的通过次序也是无关的,所以并发是一个基本的体系结构自然具有的特性。

          缺点:

          l 由于过滤器之间本质上是独立的,所以设计者必须独立考虑每一个过滤器的输入、处理和输出的过程,对于过滤器逻辑上的共同点和相互关系无法在设计中加以体现。

          l 由于这种体系的批处理特性,所以不适合开发和用户交互的应用程序。

          l 系统的多个处理流之间的共同特性无法提取、多个过滤器之间的共同特性也无法提取,所以增加了设计的复杂性。


    2. 数据抽象和面向对象的体系

          在这种体系中,数据和数据上的操作被封装成抽象数据类型或者对象。系统由大量的对象组成,在物理上,对象之间通过函数或者过程调用相互作用;在逻辑上,对象之间通过集成、复合等方式实现设计的复用。

    对象D
     
    对象B
     
    对象A
     
    对象E
     
    对象C
     
    对象调用
     
    对象调用
     
    对象调用
     
    类A
     
    类B
     
    类C
     
    类G
     
    对象A
     
    对象E
     
    类F
     
    复合
     
    继承
     

           物理结构 逻辑结构

          特点:

          面向对象系统分析和设计的资料已经太多,这里就不再详细说明了。

          优点:

          由于封装,实现了灵活性和扩充性,隐藏了实现的细节,提高代码的质量;

          使用继承和多态、提高了软件的可重用性。

          缺点:

          最主要的缺点是,由于对象之间的交互是通过明确的对象函数调用进行的,所以当一个对象需要实现一个特定功能的时候,必须知道哪一个对象提供这种服务,这就降低了系统的灵活性。管道和过滤器模型不需要明确指明数据的来源和去向。

    3. 事件驱动的体系

    对象E
     
    对象E
     
    对象E
     
    事件分发的总线
     
    事件的创建
     
    事件接收者的注册的创建
     
    对象E
     
          这是面向对象和数据抽象体系的一种变形,系统同样是由大量的对象组成的,但是对象之间的交互不是通过明确指明对象的函数或者过程调用进行的,相反,系统提 供事件的创建和发布的机制,对象产生事件,一个或者多个对象通过向系统注册关注这个事件并由此触发出相应的行为或者产生新的事件。

          实例:

          一个最著名的例子是GUI的模型,鼠标、键盘或者其他输入设备产生各种事件,窗口、程序或者其他对象有这些事件所触发,产生新的事件、进行数据处理或者其他操作。

          优点:

          用于函数和过程的调用调用不需要指明特定的对象,所以系统具有非常好的灵活性和扩展性,新的组件只需要向系统的事件处理部分注册就可以立刻加入系统中,同 样,老的组件也可以方便的从系统中删除。对于动态性要求特别高的系统,特别是如果需要在运行时对系统进行扩充,应该采用该结构。

          缺点:

          由于函数调用是通过事件发送进行的,所以,发出事件的对象不能确认是否有对象处理了这个事件、是否是期望的对象处理了这个事件、是否获得期望的结果,同样也无法控制事件发生的次序,系统的逻辑和时序的正确性必须通过复杂的时序逻辑和前后条件的断言加以保证。

    4. 分层次的体系

          将系统功能和组件分成不同的功能层次,一般而言,只有最上层的组件和功能可以被系统外的使用者访问,只有相邻的层次之间才能够有函数调用。

          下面是一个基本的商务处理系统的层次结构:


    用户界面层
     
    事务逻辑层
     
    核心层
     
          实例:

          显然,ISO的OSI(开放系统互连)参考模型是最著名的层次模型的例子,通过将开放系统的功能和组件划分成7个层次,定义清晰的(很多时候是过于复杂的)层次之间的接口,实现复杂的互操作性。

          优点:

          l 系统的开发和设计可以逐步的分层次的进行,从底层的简单的功能逐步建立高层的复杂和抽象的功能。

          l 灵活性和扩展性,由于相邻层次之间通过清晰的接口交互,所以特定的层次可以被替换和增强,甚至可以增加新的层次。

          缺点:

          l 不是所有的系统都可以分解成为清楚的层次

          l 划分清晰、逻辑上一致的层次是非常困难的(OSI的失败和TCP/IP的成功说明了这一点)

          l 严格的层次调用结构会降低系统的性能。

    5. 知识库体系

          使用一个中心数据结构表示系统的当前状态,一组相互独立的组件在中心数据库上进行操作。如果组件负责对中心数据进行选择、处理,这种体系就是传统的数据库模型;如果中心数据结构自主的引发一系列的行为,则这种体系可以看成一个黑板模型。

    中心数据库(知识库)
     
    客户组件A
     
    客户组件B
     
    客户组件C
     
          实例:

          大量的传统数据库应用程序实际上就是这一体系的具体实例。在很多研究系统中,使用的基于知识库的黑板模型,实际上也是这种体系

          优点:

          以数据为中心的体系结构,可以自然的表示大量的数据和事务处理的逻辑,适合表达以数据为重新的应用程序。

          缺点:

          只有很少一部分简单的数据库存储应用可以完全采用这种体系结构表示,在大量实际的商业应用中,完成师傅处理和其他逻辑的应用程序必须采用其他的体系结构表达

    6. 解释器体系


    用户
     
          如果应用程序的逻辑非常复杂,例如,AutoCAD的各种绘图指令,而且,用户可能以非常复杂的方式使用这个系统,一个较好的体系就是提供面向领域的一组指令(语言),系统解释这种语言,产生相应的行为,用户使用这种指令(语言)完成复杂的操作。


    使用虚拟机语言描述的业务逻辑
     
    虚拟机解释器
     
    完成实际操作任务的基本指令
     
    实际的问题领域
     
          实例:

          大量的开发工具、二次开发工具体现了这一思想:微软在其产品中大量使用的Visual BASic for Application,以及在AutoDESk产品中大量使用的AutoLisp语言,实际上就是给用户提供了一种面向领域的语言,然后核心解释执行这一语言的指令和指令序列。从而扩充产品的功能,方便用户按照自己的需要定制系统。

          优点:

          非常好的扩展性,用户可以实现对软件系统的二次开发

          缺点:

          软件开发复杂,特别是这种指令集的设计非常困难。

          是否可以采用一种成熟的语言作为二次开发的基础(例如,基于Java)

    二、实际系统开发的观点

          在实际开发过程中,简单的判断某一个具体的应用应该采取何种体系结构是非常困难的。从目前的趋势来看:简单的管道、过滤器体系已经非常少见,面向对象的思 想已经融合在几乎所有的体系结构之中,而层次化的思想同样也被广泛使用,所以,一个基本的系统分析方法应该是功能和复杂性的分解,也就是说,从横向分解 (分模块、子系统),纵向分解中得到系统的基本组件(分类、分层次的功能和对象)。然后根据问题领域的特性选择系统的行为模式(具体的体系结构)。

    三、目前最常见的体系结构

          l 严格的层次结构(系统可以清楚的分解成为不同的功能层次,例如基本的图形库,提供不同层次的绘图接口)

          这种体系结构适合于系统的功能相对简单,并且可以按照复杂的程度、抽象的程度、和硬件平台的关系等方面的特性加以分层的软件中。

          l 事件驱动的体系:

          对互操作性、特别是异构环境下的互操作性要求非常高的情况下,可以采用这种体系,当整个系统中存在大量的并发的,相互之间没有逻辑联系的组件的时候(例如操作系统或者图形用户界面)可以使用这种体系结构。现代软件技术中微软的COM和ISO的CORBA实际上都是这种体系结构的例子。

          l 知识库的体系:

          以大量数据为核心的系统采用这种体系,一些人工智能的应用同样需要这种体系结构,面向对象的知识库是这种体系结构的一个发展方向。将面向对象和层次化的思想引入知识库系统中,将得到一种非常强大的体系结构。

          l 基于解释器的体系:

          如果应用系统和用户的交互非常复杂,采用这种体系结构是最适合的方案,只有将系统的基本操作以指令的形式提供给用户,同时,提供一种简单明了的语法和基本 的数据操作、处理的功能,才能得到功能最强大、最灵活、具有最佳扩充新的应用系统;一个非常合适的例子是浏览器,一开始,浏览器只是简单的下载和显示 HTML的页面,随着用户对界面交互要求的发展,开发出javasCRipt,提供一种语言和基本的界面元素操纵的指令来得到扩充性和强大的功能。

          绝大多数实际运行的系统都是上面几种体系结构的复合:在系统的某些部分采用一种体系结构而在其他的部分采用另外的体系,我们可以将复合几种基本体系结构的 系统称作复合体系结构。在实际的系统分析和设计中,可能首先将整个系统作为一个功能体进行分析和权衡,得到适宜的、最上层的体系结构,如果该体系结构中的 元素较为复杂,可以继续进行分解,得到某一部分的,局部的体系。分析的层次应该在可以清晰的使用简单的功能和界面描述表达结束,这样,可以将我们在分析和 设计的这一阶段将焦点集中在系统的总体结构上,而避免引入和所使用的语言、实现所具体需要的技术等实现的细节上。

    展开全文
  • 第一章 计算机网络体系结构 一、概述 1. 计算机网络的组成 从组成部分上:主要由硬件、软件、协议三大组成部分 从工作方式上看:可分为边缘部分和核心部分 从功能组成上看:计算机网络由通信子网和资源子网组成...

    第一章 计算机网络体系结构

    一、概述

    1. 计算机网络的组成

    1. 从组成部分上:主要由硬件、软件、协议三大组成部分。
    2. 从工作方式上看:可分为边缘部分和核心部分。
    3. 从功能组成上看:计算机网络由通信子网和资源子网组成(高三层、低三层)。

    2. 计算机网络的功能
    数据通信,资源共享,分布式处理,提高可靠性,负载均衡。

    3. 计算机网络的分类

    1. 按分布范回分类:广域网( WAN )、城域网( MAN )、局域网(CLAN )、个人区域网( PAN )。
    2. 接传输技术分类:广播式网络、点对点网络。
    3. 接拓扑结构分类:星型、总线型、环形、网状型网络。
    4. 按使用者分类:公用网( Public Network )、专用网( Private Network )。
    5. 按交换技术分类:电路交换网络、报文交换网络、分组交换网络。
    6. 按传输介质分类:有线、无线。

    4. 计算机网络的标准化工作及相关组织

    1. 因特网草案( Internet Draft)这个阶段还不是RFC文档。
    2. 建议标准( Proposed Standard )从这个阶段开始就成为RFC 文档。
    3. 草案标准( Draft Standard )
    4. 因特网标准(lnternet Standard )
      组织: 国际标准化组织( ISO )、国际电信联盟( ITU )、国际电气电子工程师协会(IEEE)。

    5. 计算机网络的性能指标

    1. 带宽( Bandwidth )表示网络的通信线路所能传送数据的能力,是数字信道所能传送的“最高数据率”的同义语,单位是“比特每秒”( b/s ) 。
    2. 时延( Delay )从网络(或链路)的一端传送到另一端所需要的总的时间由四个部分构成: 发送时延、传播时延、处理时延和排队时延。
      发送时延=分组长度/信道宽度
      传播时延=信道长度/电磁波在信道上的传播速率
    3. 吞吐量( Throughput ):表示在单位时间内通过某个网络(或信道、接口)的数据量,吞吐量受网络的带宽或网络的额定速率的限制。
    4. 速率( Speed ),通常把最高数据率称为“带宽”。
    5. 时延带宽积。
    6. 往返时延( Round-Trip Time, RTT )。

    二、计算机网络体系结构及参考模型

    7. 计算机网络为什么采用分层结构
     为了降低协议设计和调试过程的复杂性,也为了便于对网络进行研究、实现和维护,促进标准化工作。我们把计算机网络的各层及其协议的集合称为网络的体系结构。
    各层中:协议数据单元PDU =服务数据单元 SDU + 协议控制信息 PCI

    8. 网络协议
     规定了所交换的数据的格式以及有关的同步问题。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议( Network Protocol) , 协议由语法、语义和同步三部分组成。
    接口:接口是同一结点内相邻两层间交换信息的连接点,同一结点相邻两层的实体通过服务访问点( Service Access Point, SAP )进行交互。

    9. 服务
    服务是指下层为星相组的上层提供的功能调用,也就是垂直的。
    服务分类:
    面向连接服务, 无连接服务;
    可靠服务, 不可靠服务 ;
    有应答服务, 无应答服务。

    10. OSI 参考模型(开放系统互联参考模型)
    OSI 有七层,自下而上依次为物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。低三层统称为通信子网,它是为了联网而附加上去的通信设备,完成数据的传输功能;高三层统称为资源子网,它相当于计算机系统,完成数据的处理等功能。运输层承上启下。

    1. 物理层( Physical Layer)
      物理层的传输单位是比特,任务是透明的传输比特流, 功能是在物理媒体上为数据端设备透明的传输原始比特流。物理层也规定了通信链路上传输的信息的意义和电气特征。
    2. 数据链路层(Data Link Layer )
      数据链路层的传输单位是帧, 任务是将网络层传下来的IP 数据报组装成帧。数据链路层的功能可以概括为:成帧、差错控制、流量控制和传输管理等。(没有拥塞控制)
    3. 网络层(Network Layer)
      网络层的传输单位是数据报,关键问题是对分组进行路由选择,并实现流量控制、拥塞控制、差错控制和网际互联等功能。
    4. 传输层( Transport Layer)
      传输层也叫运输层,传输单位是报文段( TCP )或用户数据报( UDP ),传输层的任务是负责主机中两个进程之间的通信。功能是为端到端连接提供可靠的传输服务;为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。数据链路层提供的是点到点的通信,传输层提供端到端的通信。传输层的协议有: TCP, UDP。
    5. 会话层( Session Layer)
      会话层允许不同主机上各进程之间的会话。会话层利用传输层提供的端到端的服务,向表示指导层提供它的增值服务。这种服务主要是向表示层实体或用户进程提供建立连接并在连接上有序地传输数据,这就是会话,也称为建立同步( SYN )。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信,实现数据同步。
    6. 表示层( Presentation Layer)
      表示层主要用于处理在两个通信系统中交换信息的表示方式。数据压缩、加密和解密也是表示层可提供的数据表示变换功能。
    7. 应用层( Application Layer)
      应用层是OSI 模型的最高层,是用户与网络交互的界面。

    11. TCP/IP 模型
    有五层,自下而上依次为:物理网络层、网络接口层、网际层、传输层、应用层。
    与OSI主要区别:OSI 参考模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信。而TCP/IP 模型认为可靠性是端到端的问题,因此它在网际层仅有一种无连接的通信模式,但在传输层支持无连接和面向连接两种模式。

    【注】:以上内容整理自王道

    展开全文
  • 计算机体系结构试题及答案

    热门讨论 2009-11-18 14:15:01
    第一章 计算机体系结构的基本概念 1.1 引论 1.2 计算机体系结构的概念 1.2.1 计算机系统中的层次概念 1.2.2 计算机体系结构 1.2.3 计算机组成和计算机实现技术 1.3 计算机体系结构的发展 1.3.1 ...
  • PCIEXPRESS体系结构导读

    热门讨论 2012-07-15 18:03:37
    本书讲述了与PCI及PCI Express总线相关的最为基础的内容,并介绍了一些必要的、与PCI总线相关的处理器体系结构知识,这也是本书的重点所在。深入理解处理器体系结构是理解PCI与PCI Express总线的重要基础。 读者通过...
  • 《MySQL 性能优化》之理解 MySQL 体系结构

    万次阅读 多人点赞 2020-02-10 10:40:03
    本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。

    作为专栏文章《MySQL 性能优化》的第一篇,本文介绍 MySQL 的服务器体系结构,包括物理结构、逻辑结构以及插件式存储引擎。

    实例和数据库

    我们通常所说的 MySQL 数据库服务器由一个实例(instance)以及一个数据库(database)组成。实例包括一组后台进程/线程和许多内存结构,用于管理数据库;数据库由一组磁盘文件组成,用于存储数据和日志等信息。MySQL 使用典型的客户端/服务器(Client/Server)结构,下图显示了一个简单的 MySQL 体系结构:

    mysql
    客户端通过通过实例中的后台进程访问 MySQL 数据库。MySQL 采用单进程多线程架构,也就是说一个 MySQL 实例在操作系统中就是一个进程(mysqld)。在 Linux 系统中使用ps命令进行查看:

    [root@sqlhost ~]# ps -ef|grep mysql|grep -v grep
    mysql     7898     1  1 Feb03 ?        00:12:12 /usr/sbin/mysqld
    

    严格来说,一个 MySQL 实例管理的是多个数据库(也叫模式,Schema)包括系统数据库 mysql、information_schema、performance_schema、sys 以及用户创建的数据库等。使用SHOW DATABASES或者SHOW SCHEMAS命令查看当前实例中的数据库:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mydb               |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.14 sec)
    

    数据库就像是一个容器,存储了各种对象。例如,数据表(Table)、视图(View)、存储过程(Stored Procedure)以及触发器(Trigger)等。其中,表是存储数据的主要对象。它们之间的关系如下图所示:

    mysql database

    MySQL 物理结构

    MySQL 的物理结构主要包括两个目录:软件的安装目录和数据目录,以及配置文件和日志文件等。

    mysql

    📝不同平台、不同安装方式(源码安装、二进制解压)的目录结构有所不同,具体可以参考 MySQL 官方文档

    安装目录

    安装目录(Base Directory)是 MySQL 服务器的安装路径,Linux 上使用 RPM 包安装的默认位置为 /usr/。安装目录中主要包含以下内容:

    文件或目录 描述
    bin/ mysql 客户端和实用程序目录
    sbin/ mysqld 服务器程序目录
    share/man/ Unix 帮助手册页目录
    include/mysql/ 头文件目录
    lib/mysql/ 库文件目录
    share/mysql/ 各种字符集、语言相关的错误信息目录

    我们可以使用下面的命令查看安装目录:

    mysql> show global variables like "%basedir%";
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | basedir       | /usr/ |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    数据目录

    数据目录(Data Directory)是 MySQL 存储数据库文件的位置,Linux 上使用 RPM 包安装的默认位置为 /var/lib/mysql/。数据目录中主要包含以下内容:

    文件或目录 描述
    #innodb_temp/ InnoDB 会话临时表空间目录
    mysql/ 系统数据库 mysql 文件目录
    performance_schema/ 性能数据库 performance_schema 文件目录
    sys/ sys 数据库文件目录
    其他子目录 每个数据库对应一个文件目录,存储该数据库中的文件
    auto.cnf 当前服务器实例的 UUID,用于主从复制
    binlog.* 二进制日志 binary log 相关文件
    *.pem SSL 连接相关的证书和密钥文件
    ib_buffer_pool 缓冲区 buffer pool 中数据页的页号转储文件
    ibdata1 InnoDB 表空间文件
    ib_logfile0
    ib_logfile1
    InnoDB 事务日志(REDO)文件
    ibtmp1 InnoDB 临时表空间文件
    mysql.ibd 系统数据库 mysql 数据文件
    mysql.sock Unix 套接字文件
    undo_001
    undo_002
    InnoDB UNDO 表空间文件

    我们可以使用以下命令查看数据目录:

    mysql> show global variables like "%datadir%";
    +---------------+-----------------+
    | Variable_name | Value           |
    +---------------+-----------------+
    | datadir       | /var/lib/mysql/ |
    +---------------+-----------------+
    1 row in set (0.01 sec)
    

    配置文件

    MySQL 服务器进程和各种工具程序启动时,需要通过配置文件(my.cnf 或者 my.ini)读取各种参数。Linux 上使用 RPM 包安装的默认配置文件为 /etc/my.cnf,可以使用mysqld --verbose --help查看读取配置文件的顺序:

    [root@sqlhost ~]# mysqld --verbose --help | grep -A 1 'Default options'
    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
    

    服务器运行使用的所有配置选项都可以使用SHOW VARIABLES命令查看,例如以下命令可以查看 InnoDB 缓冲池相关的配置:

    mysql> show variables like '%buffer_pool%';
    +-------------------------------------+----------------+
    | Variable_name                       | Value          |
    +-------------------------------------+----------------+
    | innodb_buffer_pool_chunk_size       | 8388608        |
    | innodb_buffer_pool_dump_at_shutdown | ON             |
    | innodb_buffer_pool_dump_now         | OFF            |
    | innodb_buffer_pool_dump_pct         | 25             |
    | innodb_buffer_pool_filename         | ib_buffer_pool |
    | innodb_buffer_pool_in_core_file     | ON             |
    | innodb_buffer_pool_instances        | 1              |
    | innodb_buffer_pool_load_abort       | OFF            |
    | innodb_buffer_pool_load_at_startup  | ON             |
    | innodb_buffer_pool_load_now         | OFF            |
    | innodb_buffer_pool_size             | 8388608        |
    +-------------------------------------+----------------+
    11 rows in set (0.00 sec)
    

    除此之外,MySQL 还使用一些其他的文件:

    • 错误日志文件,例如 /var/log/mysqld.log;
    • 慢查询日志文件,例如 /var/lib/mysql/HOSTNAME-slow.log;
    • 服务器进程 PID 文件,例如 /var/run/mysqld/mysqld.pid;

    MySQL 逻辑结构

    MySQL 使用典型的客户端/服务器(Client/Server)结构,逻辑结构图如下所示:

    mysql logical
    MySQL 体系结构大体可以分为三层:客户端、服务器层以及存储引擎层。其中,服务器层又包括了连接管理、查询缓存 、SQL 接口、解析器、优化器、缓冲与缓存以及各种管理工具与服务等。

    具体来说,每个组件的作用如下:

    • 客户端,连接 MySQL 服务器的各种工具和应用程序。例如 mysql 命令行工具、mysqladmin 以及各种驱动程序等。
    • 连接管理,负责监听和管理客户端的连接以及线程处理等。每一个连接到 MySQL 服务器的请求都会被分配一个连接线程。连接线程负责与客户端的通信,接受客户端发送的命令并且返回服务器处理的结果。
    • 查询缓存 ,用于将执行过的 SELECT 语句和结果缓存在内存中。每次执行查询之前判断是否命中缓存,如果命中直接返回缓存的结果。缓存命中需要满足许多条件,SQL 语句完全相同,上下文环境相同等。实际上除非是只读应用,查询缓存的失效频率非常高,任何对表的修改都会导致缓存失效;因此,查询缓存在 MySQL 8.0 中已经被删除。
    • SQL 接口,接收客户端发送的各种 DML和 DDL 命令,并且返回用户查询的结果。另外还包括所有的内置函数(日期、时间、数学以及加密函数)和跨存储引擎的功能,例如存储过程、触发器、视图等。
    • 解析器,对 SQL 语句进行解析,例如语义和语法的分析和检查,以及对象访问权限检查等。
    • 优化器,利用数据库的统计信息决定 SQL 语句的最佳执行方式。使用索引还是全表扫描的方式访问单个表,多表连接的实现方式等。优化器是决定查询性能的关键组件,而数据库的统计信息是优化器判断的基础。
    • 缓存与缓冲,由一系列缓存组成的,例如数据缓存、索引缓存以及对象权限缓存等。对于已经访问过的磁盘数据,在缓冲区中进行缓存;下次访问时可以直接读取内存中的数据,从而减少磁盘 IO。
    • 存储引擎,存储引擎是对底层物理数据执行实际操作的组件,为服务器层提供各种操作数据的 API。MySQL 支持插件式的存储引擎,包括 InnoDB、MyISAM、Memory 等。
    • 管理工具,MySQL 提供的系统管理和控制工具,例如备份与恢复、复制、集群等。

    我们使用 mysql 客户端工具连接到 MySQL 服务器:

    [root@sqlhost ~]# mysql -h 192.168.56.104 -u root -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 18
    Server version: 8.0.19 MySQL Community Server - GPL
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> 
    

    以上方式是通过 TCP/IP 网络协议连接到 MySQL 服务器,需要提供服务器的 IP、端口以及用户名和密码等信息。如果提供的信息不正确,将会返回错误消息。另外,我们也可以通过命名管道或者 UNIX 套接字进行连接。

    连接成功之后就可以执行各种语句和命令,我们以一个查询语句为例:

    SEELCT * FROM employees;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SEELCT * FROM employees' at line 1
    

    以上语句通过 SQL 查询接口提交给服务器的处理线程,解析器进行语法检查时发现 SELECT 写成了 SEELCT,提示的是语法错误。示例表来自《SQL 入门教程》示例数据库

    如果语句没有问题,通过解析器之后生成解析树,然后发送给优化器;优化器判断是否进行查询重写,并且根据统计信息决定访问表的方式和顺序等。我们可以通过 EXPLAIN 命名了解优化器选择的执行计划:

    mysql> EXPLAIN SELECT * FROM employees;
    +----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
    | id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
    +----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
    |  1 | SIMPLE      | employees | NULL       | ALL  | NULL          | NULL | NULL    | NULL |  107 |   100.00 | NULL  |
    +----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
    1 row in set, 1 warning (0.00 sec)
    

    这里我们查询的是整个表的数据,因此 MySQL 采用全表扫描的方式(type = ALL)获取数据。关于执行计划的解释,可以参考这篇文章

    最后,由存储引擎获取表中的数据;如果数据已经被缓存,可以直接从缓冲区获取。

    MySQL 存储引擎

    插件式存储引擎是 MySQL 的一大特点体系结构,每个存储引擎都提供了各自的功能,用户可以根据业务或者应用场景为数据表选择不同的存储引擎。也就是说,存储引擎的设置是在表级别的;因此也被称为表类型(table type)。

    📝从 MySQL 5.5 之后,默认的存储引擎是 InnoDB。InnoDB 是一个通用的存储引擎,除非有特殊需求,推荐使用 InnoDB。

    MySQL 插件式存储引擎结构允许在 MySQL 服务器运行时装载和卸载一个存储引擎,使用SHOW ENGINES语句可以查看当前服务器支持的存储引擎:

    mysql> SHOW ENGINES;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
    | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
    | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
    | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
    | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)
    

    其中,Support 列显示了是否支持该存储引擎以及默认的存储引擎。MySQL 8.0 支持的存储引擎如下:

    • InnoDB:默认的存储引擎。InnoDB 是一个事务安全(ACID 兼容)的存储引擎,支持事务的提交、回滚以及故障恢复功能。InnoDB 行级锁(无需升级到更高粒度的锁)以及类似 Oracle 的一致性非锁定读功能能够增加多用户并发性和性能。InnoDB 使用聚集索引存储用户数据,减少了常见的基于主键查询时的 I/O 操作。为了维护数据完整性,InnoDB 还支持 FOREIGN KEY 参照完整性约束。
    • MyISAM:这种类型的表占用很少的磁盘空间。表级锁限制了它的并发读/写性能,因此通常用于只读或者以读为主的 Web 应用和数据仓库。
    • Memory:将所有数据存储在 RAM 中,用于需要快速查找的非关键数据。Memory 之前被称为 HEAP 存储引擎。它的使用场景越来越少;InnoDB 中的 buffer pool 内存区提供了将大部分或全部数据保留在内存中的一个通用持久性方法,NDBCLUSTER 为海量分布式数据集提供了快速的键-值查找。
    • CSV:这种类型的表实际上就是逗号分隔符文本文件。CSV 表可以导入或导出 CSV 格式的数据,用于脚本和应用程序之间的数据交换。由于 CSV 表不支持索引,通常可以在日常操作中将数据存储在 InnoDB 表中,只在导入或导出阶段使用 CSV 表。
    • Archive:这种压缩格式的无索引表主要用于存储和检索大量的很少使用的历史、归档或者安全审计数据。
    • Blackhole:Blackhole 存储引擎不会实际存储数据,类似于 Unix 中的 /dev/null 设备。查询永远不会返回数据。这种表可以用于特定的复制环境,DML 语句需要发送到从服务器,但是主服务器自身不保存数据。
    • NDB (也就是 NDBCLUSTER):这种集群数据库引擎主要用于对服务可用性要求极高的场景。
    • Merge:支持 MySQL DBA 或者开发人员将许多结构一致的 MyISAM 表作为一个逻辑对象使用。可以用于 VLDB 环境,例如数据仓库。
    • Federated:提供访问远程数据库的功能,可以将多个 MySQL 物理服务器组合成一个逻辑数据库。非常适合分布式环境或者数据集市。
    • Example:这是 MySQL 源代码中的一个示例存储引擎,用于演示如何编写新的存储引擎。它主要面向开发者,这种类型的表无法存储数据,也不会返回任何结果。

    存储引擎的设置不在服务器级别,也不在数据库(模式)级别;用户可以为不同的表指定不同的存储引擎。例如,一个应用程序大多数的表使用 InnoDB 存储引擎;同时创建一个 CSV 表,用于将数据导出到电子表格文件中;另外创建一些 MEMORY 表作为临时存储区。

    下表描述了 MySQL 中常见存储引擎支持的功能特性。

    功能特性 MyISAM Memory InnoDB Archive NDB
    B-树索引 ✔️ ✔️ ✔️
    备份/时间点恢复(1) ✔️ ✔️ ✔️ ✔️ ✔️
    集群数据库 ✔️
    聚集索引 ✔️
    压缩数据 ✔️ (2) ✔️ ✔️
    数据缓存 N/A ✔️ ✔️
    加密数据 ✔️ (3) ✔️ (3) ✔️ (4) ✔️ (3) ✔️ (3)
    外键 ✔️ ✔️ (5)
    全文搜索索 ✔️ ✔️ (6)
    空间数据类型 ✔️ ✔️ ✔️ ✔️
    空间数据索引 ✔️ ✔️ (7)
    哈希索引 ✔️ ❌ (8) ✔️
    索引缓存 ✔️ N/A ✔️ ✔️
    锁的粒度 表级 表级 行级 行级 行级
    MVCC ✔️
    复制 (1) ✔️ 有限(9) ✔️ ✔️ ✔️
    存储限制 256TB RAM 64TB 384EB
    T-树索引 ✔️
    数据库事务 ✔️ ✔️
    更新数据字典统计信 ✔️ ✔️ ✔️ ✔️ ✔️

    注释:

    1. 在服务器层实现,而不是存储引擎层。
    2. 只有使用行压缩格式才支持 MyISAM 压缩表。使用行压缩格式的 MyISAM 表属于只读表。
    3. 在服务器层通过加密函数实现。
    4. 在服务器层通过加密函数实现;MySQL 5.7 开始支持表空间静态数据(data-at-rest)加密。
    5. MySQL Cluster NDB 7.3 开始支持外键约束。
    6. MySQL 5.6 开始支持 InnoDB 的 FULLTEXT 索引。
    7. MySQL 5.7 开始支持 InnoDB 的空间数据索引。
    8. InnoDB 内部使用哈希索引实现自适应哈希索引(Adaptive Hash Index)特性。
    9. 内存表的复制

    下一篇我们来具体谈谈 InnoDB 存储引擎的体系结构。欢迎关注❤️、点赞👍、转发📣!

    展开全文
  • 数篇计算机体系结构论文打包下载

    千次下载 热门讨论 2008-06-21 21:08:57
    简介.pdf 一种适用于MIPS指令系统的分支预测方法.kdh 关于计算机...体系结构发展趋势分析.pdf 计算机体系结构的发展与变化.pdf 计算机体系结构的研究重点与发展方向分析.pdf 计算机发展与人类现代文明...
  • WPF经典教程之WPF体系结构

    千次下载 热门讨论 2014-10-03 12:35:07
    WPF的基础的体系结构 所引用的Assembly如下图所示: 关系图中的PresentationFramework PresentationCore 和 milcore是 WPF 的主要代码部分 在这些组件中 只有一个是非托管组件 – milcore milcore 是以非托管代码...
  • 任何不拿出干货的技术文档都是耍流氓,首先上体系结构图,如图所示,在整体体系结构上,微博推荐可以被划分为4层:前端展现层、应用层、计算层以及数据层,其中我们把数据日志、统计、监控以及评估也都...

    上一篇文章《【推荐架构day2】微博怎么给你推荐信息的:背后基本原理》介绍了推荐产品,给大家有一个初步的认识:微博推荐的目标和使命、推荐产品有哪些以及推荐的分类角度。本文将会给大家描述当前微博推荐的体系结构。

    任何不拿出干货的技术文档都是耍流氓,首先上体系结构图,如图所示,在整体体系结构上,微博推荐可以被划分为4层:前端展现层、应用层、计算层以及数据层,其中我们把数据日志、统计、监控以及评估也都分在数据层。接下来我会逐一介绍他们的目的,作用、技术与发展。更为细致的描述应该会在以后的博客中体现。

     


     

    1、推荐前端RFront

    RFront主要目的是展现以及渲染微博内容,由于当前微博推荐在web以及客户端都有相对应的产品,展现差异较大,但数据和方法却是通用的。那么,需要有这么易于维护、拥抱变化的一层高效地响应产品需求。当然在微博推荐实际业务中,由于产品形态的多样以及策略的负责性,RFront做了不少工作以及相关的应用技术很多,在接下来的文章中会有相关的同学着重介绍这一块工作。

     

    2、推荐应用RApp

    RApp主要目的是为前端提供候选以及起到部分排序功能。该层利用通用框架【nginx + lua 以及apache + python两个版本】提供应用接口服务。这些应用包括:内容、用户、服务、feed推荐频次以及辅助功能。

    在这里有一个工具叫做通用推荐框架(CRF, common recommon framework),它主要的作用是:融合推荐资源、规范推荐应用接口以及统一工作流。早期版本使用的是apache+mod_python的形式,后来在RApp的定位上,认为它是一个数据通路,同时需要获取各种协议的数据内容,因而将其扩展到nginx + lua的版本。

    CRF是一个二次开发框架,无论是早期的apache+mod_python版本还是nginx+lua版本,其核心思想是相似的,它们的目标都是为了较为快速进行推荐策略开发,快速的使用既有推荐存储数据。主要的体现在:

    • 通过透明化不同协议的存储数据获取方法,方面获取推荐资源。比如,获取mc、redis以及openapi的数据方式是一致的,get以及mget是一个标准的获取方法。
    • 通过建立project的概念,以继承的方式让二次开发者建立自己的项目,同时将project中work_core暴露出来,完成主体业务。当然其中也有一个小的技巧,比如global_data以及并行化获取数据等等。
    • 通过暴露出来的common_recom的核心接口来定义推荐的统一接口,我们整理和抽象了所有推荐的接口数据形式,在一定程度上进行了规范和定义,这样方面了进行接口管理以及对应。比如obj【多用来表示访问者】,tobj【多用来表示访问对象】,from【来源】,appkey【分配key】,num【数量】,type【类型,用来区分同一个项目中不同接口】,pid【区分项目】等等。

     

    以下图是其三层目录结构【apache+mod_python】:

    其中我们通过data_interface来实现数据透明化,通过work_interface来管理项目,my_interface二次开发者开发属于自己的project。同时需要配置文件【data以及project】进行数据和项目的对应。这样会带来一个好处,通过这个框架将所有的资源整合起来了,在推荐早期项目中起到了比较明显的作用:快速响应算法和产品策略、项目迭代比较迅速同时让业务人员在一定程度上关注业务,后来也推动了后来推荐存储架构的诞生。通过不断的优化,这个逐渐被lua以及c/c++版本的通用框架取代。

     

    3、推荐计算层RCompute

    推荐计算层的职责是做高效运算,比如二度关系运算、用户之间桥梁关系运算、CTR预估等等CPU密集型的功能模块。同时在RApp以及RFront有一些离线数据采用远程访问以前比较低效的,因此我们需要一个更加高效的通用框架来满足上述要求,lab_common_so孕育而生。

     

    Lab_common_so是基于woo框架的【感谢曾经的同事支持,这是一个轻型的通讯框架,通讯协议以及日志系统比较完善】一个业务流框架,同时兼有了CRF的特点——整合融入数据资源、规范业务流程、统一接口形态,还具有了数据本地化功能。其实在在线demo c/c++开发框架中有很多,在这里主要介绍一些自身特点:

    • 通过c++的一些特性,让二次开发者在工作流上尽可能减少关注其他架构以及通讯包括存储客户端的事情,下图是主要的类结构图【UML的一套傻傻的不会,大家凑合看吧。】

    • 通过global_data以及data的类实现获取数据的透明化
    • 在后期的改造中,将work独立出来,有开发方自己进行编写具体实现和具体类,进行so化支持线上更新

    在计算层中有一个模块是RTaining,主要用来进行模型更新以及线上学习的,前期主要用在点击反馈或者实时模型上。

     

     

    4、数据RStore

    推荐数据对于推荐而言是基础,决定了性能也决定了效果。因此在数据存储上花的精力较多。微博推荐存储的数据拥有以下特点:

    • 种类繁杂,比如需要存储挖掘的静态数据,还有用户实时行为的动态数据,有为提升性能而存储的属性缓存也有离线运算的直接结果数据
    • 存储选型上也不能一概而论,动态数据以及静态数据的要求是不一样,统一都用高效的内存存储浪费资源,不宜扩展,都用离线的静态存储又达不到性能要求
    • 多个外部门的数据,沟通和写作方式各式各样
    • 某些数据量较大,同时在某些数据的实时性要求上较高。

    针对上述特点,推荐抽象解决IN/OUT/STORE三部分。下图详细的描述了推荐数据的结构图:

     

    IN:输入的关键是解决统一和,因此通过建立基于ckestral的统一入口来解决数据规范的事情,同时在日志以及实时数据上也有相应的解决方案,统一入口为RIN。


    OUT:输出的关键是需要透明化,对于业务方而言不需要关系如何进行的服务器分配以及存储类型,而能够方面快速稳定地获取到数据就好。
    STORE:这一块主要解决数据类型繁杂的工作,推荐的经验是离线使用lushan以及mapdb,在线使用redis/mc,如果有特殊需求,比如批量高效压缩存储特征数据,也会使用一些自己定制的数据存储形式。


    在这里面,需要特别强调的是离线静态数据存储,在性能以及成本上找到一定的平衡点是推荐比较有特色的地方,lushan以及mapdb会在之后做专题介绍。同时在推荐发展的过程中,hadoop的引入在一定程度上解决了很多候选以及排序的问题,因此一些map-reduce的结果数据如何放置于线上,推荐系统的r9项目很好的解决了这个问题。

     

    5、数据值辅助工具:日志、监控、评估以及报警

    推荐日志系统主要为了解决离线数据分析以及在线监控使用。当前推荐系统针对离线的分析来自于两块,一个是来源于自己的日志系统,另外一个是来自于公司的hadoop集群【几乎涵盖了非业务方的全局数据】,也在考虑将这两部分进行整合归并。

    推荐监控系统是去年建设起来的,主要分为三部分:

    • 性能监控,主要查看应用、计算以及存储的性能服务指标,同时与报警体系联动,及早发现问题、解决问题。目标是实时以及准实时,现在是分钟级别的。
    • 效果监控,主要跟踪效果的优化和改进,当前重点业务线的效果均在监控系统中
    • 对比测试监控,主要针对线上的A/B测试,进行分维度数据展示和对比

    以下是我们监控的一些信息:

    曝光以及性能监控:

     

    效果监控:

    推荐评估系统,当前主要以demo实验、下线评估以及线上评估三个体系构成,其中线上评估体系主要跟着监控体系来的。而下线以及demo主要是一套前端的展示框架,几乎涵盖了推荐所有的接口以及对比测试数据。

     

    推荐报警体系,微博本身是有的,不过由于性能指标以及效果指标存在一定上的定制化需求,这一块正在花精力解决。

    好了,这一篇就到这里,推荐体系结构的介绍基本上告一段落了,其中涉及到的比较细节的工作将会在专题中进行介绍。也请大家多多捧场。

    还是老规矩:

     

    Simple is Beautiful! 设计复杂的系统不是难事,难的是用简单的东西满足复杂业务,大家共勉!

    via:wbrecom.com

     


    =>更多文章请参考《中国互联网业务研发体系架构指南》

    https://blog.csdn.net/Ture010Love/article/details/104381157

    =>更多行业权威架构案例、领域标准及技术趋势请关注微信公众号 '软件真理与光':

    公众号:关注更多实时动态
    更多权威内容关注公众号:软件真理与光

     

     

     

    展开全文
  • 计算机组织与体系结构:性能设计(第6版)

    千次下载 热门讨论 2008-07-23 14:53:25
    计算机组织与体系结构:性能设计(第6版) <br> 【原 书 名】 Computer Organization and Architecture:Designing for Performance,Sixth Edition 【原出版社】 Prentice Hall/Pearson 【作 者】(美...
  • 电脑里预装的win8很早之前用自带的软件做了一个系统映像放到同块磁盘的F盘下,然后前段时间升级到win8.1又做了一个映像,现在是还原 win8.1的映像提示”windows恢复环境的处理器体系结构或OS版本与所备份计算机的...
  • ARM处理器体系结构

    千人学习 2016-01-19 16:43:49
    本课程主要的内容是介绍ARM处理器的体系结构发展历史,工作模式,存储器组织基本知识。
  • 计算机体系结构.体系结构简介 什么是计算机体系结构 对于“Computer Architecture”,有些地方译为“计算机系统结构”,有些地方译为“计算机体系结构”。这两种翻译都对,只是经常会被混用。本文将以“体系结构”为...
  • Zookeeper体系结构

    千次阅读 2016-01-16 14:19:30
    上面我们已经讨论了zookeeper在应用程序中的一些操作,下面我们需要理解一下服务端的工作的原理。客户端是如何通过一个客户端的类库与服务端进行通信的,然后服务端又是如何回应客户端的。下面这张图显示了客户端和...
  • weblogic 体系结构

    千次阅读 2012-07-18 22:11:37
    如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行...
  • Docker体系结构

    千次阅读 2018-05-25 10:50:18
    什么是DockerDocker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup,namespace,Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程,这种运行时封装的状态称为容器。...
  • C++知识体系结构框图

    千次阅读 多人点赞 2016-09-04 20:43:52
    喜欢这张图的发送 “C++知识体系框图” 到 “2401503224@qq.com”,会发送给给你。
  • 计算机两大体系结构: 1.冯诺依曼体系结构 计算机系统由一个中央处理单元CPU和一个存储器组成。 存储器拥存储数据和指令,并且可以根据所给的地址对它进行读或写。 数据和指令都存储在存储器中的计算机被称为冯...
  • 计算机体系结构pdf

    千次下载 2007-07-04 11:20:11
    计算机体系结构,比较热的技术

空空如也

1 2 3 4 5 ... 20
收藏数 81,705
精华内容 32,682
关键字:

体系结构