Java_006_计算机知识体系结构

计算机体系结构

计算的目的

  • 解决数学问题
    • 表达式 a + b
    • 逻辑判断 if else
  • 现实问题

    • 现实问题-> 数学问题 -> 计算问题
  • 完成计算

  • 计算的基本结构
    • 表达式
    • 逻辑判断
    • 流程控制
    • 读取和存储
  • 基本构造
    • 计算
    • 存储

编程的本质

  • 把现实问题抽象成编程语言中的数据类型(存储)
  • 通过组合编程语言基本元素来表达数据的结构和对数据的转换和操作(计算)
  • 编程就是使用编程语言对现实进行理解和表达

编程语言基本结构

  • 基本数据类型
    • int
    • String
    • boolean
    • float
  • 语句和语法
    • const
    • a = 1+2
    • if
    • for while
    • 函数和方法
  • 执行环境
    • 编译器/jvm
  • 类型模型和类型系统
  • 编程范式
    • 过测式
    • 面向对象
    • 函数式
    • 泛型

程序的执行环境

  • 编译器:将某种语言的源代码转换成目标代码
    • 计算机和人类理解程序代码不同 它只认0和1
  • 解释器:解释执行代码的程序,产生我们要的结果
    • jvm
    • js解释器(浏览器,v8)
  • 编译时和运行时

面试题:静态类型 vs 动态类型 和 强类型 vs 弱类型

  • 静态类型 vs 动态类型
    • 静态:编译时能确定一个变量的类型
    • 动态:运行时才能确定一个变量的类型
  • 强类型 vs 弱类型
    • 强类型:一个对象只有一种解释方式
    • 弱类型:一个对象可以被解释成不同的类型
  • java是静态类型和强类型语言
  • 类型系统是程序语言的一种限制机制,动态类型和弱类型语言更加灵活,但是更容易出错,静态类型和强类型更加容易理解,减少出错的肯能性。

分布式系统

随着互联网的发展,越来越多人有个人设备。一台电脑无法承受数以亿计的访问量

  • 计算 -> 分布式
  • 存储 -> 分布式
  • 把原来在单机上的计算“分布”到多台机器上,单台计算机上的存储“分布”到多台机子上
  • 带来什么问题?
    • 沟通
    • 协作
    • 误差
    • 同步
    • 效率损失
  • 分布的机器数据一致
  • 分布的机器计算协调
  • 分布的机器交流和协作

横向的分布式(计算分到不同机器上)

  • 把计算分到不同机器去执行
  • 把存储数据分布到不同机器
  • 例子:MapReduce
    1
    2
    3
    4
    5
    6
    100T数据 一台机子存不了
    只能分两台 一台50T

    100T数据 里面都存了很多 单词
    如果在一台机子上查很慢
    把文件拆成两半放在两台机子上 同时查

竖向分布式(按功能分)

  • 一组机器负责计算
  • 一组机器负责存储
    • 例子:Lamada ,Casandra 和 Kafka(非常值得学习)

扩展