当前位置: 首页 > news >正文

Java基础笔记1-计算机基础

A、什么是计算机?


1453536487024035660.png

定义:接收用户输入指令和数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。

 

B、计算机硬件五大单元

1453536487076008836.png


输入单元:包括键盘、鼠标、触摸屏、扫描仪等。

Cpu:中央处理器,相当于大脑,具有特定功能的芯片,里面包含微指令集,含有算术逻辑、控制、记忆等单元。

内存:相当于大脑中的记录区块,cpu读取的数据都是从内存读取出来的,数据基本上都是流经过内存再转出去的。

输出单元:包括屏幕、打印机等。

外部存储设备:包括存储设备(硬盘、光盘等)、显示设备(显卡)、网络设备(网卡)。

 

 

硬盘:相当于大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些重要经验。

主板:相当与神经系统,通过cpu发布指令,通过主板传输下达。

显卡:相当于脑中影像

电源:相当于心脏,所有组件都要足够的电力供给才能正常运作。

 

C、计算机系统组成

 


计算机系统由硬件和软件组成

硬件:物理机器

软件:所有用来向计算机发送不同指令的不同类型程序称为软件

 

D、存储器

E、主存储器


1453536487892097185.png

计算机只认识0和1,记录的数据是用二进制的;

0和1的单位为我们称为bit,在存数据时会使用到8个bit大小类记录,也就是一个字节Byte;一个字节刚好可以存键盘上的一个字符,字节的编号称为地址address,

1Byte=8Bit;

文件以编码的形式存储在辅助存储器,当程序运行时,将程序从辅助存储器复制到主存储器中;

要存大份数据时,如果单个字节放不下,计算机会使用许多相邻字节;

为啥是0和1?只有两个稳定状态的物理设备比较容易制造,如果通电就是1,没有通电就是0,像一个开关按钮,这是一种约定,也可以用A和B,真或假,不过大家都遵守这个约定,在编程时不需要关心数据是编码为0和1,可以看成事字母、数字或字符直接存储到存储器中去。

 

F、文字编码系统

 

数据参考编码示意图


1453536488176095996.png


文本文件也是被记录为0和1的,而要取出来时,必须经过一个编码系统处理才行;

编码系统可以想成是一个字符的对照表;

写入文件的文字数据,会有编码对照表将文字转换为数字,再存入文件中;

读取文件内容时,也会经过编码对照表将数字转成对应的文字再显示出来;

常用的英文编码表为ASCII,每个符号占1B的记录,总共有2的8次方=256种变化;

中文编码有繁体编码big和简体gb2312,每个中文会占用2B,理论有2的16次方=65536,即最多可达6万多个中文字;

由于在读取数据经常会发生乱码,为解决这个问题,才有Unicode编码,也就是UTF8统一编码,如无特殊情况,程序文件编码格式最好设置成UTF8编码格式保存。

 

G、程序


1453536489464089144.png


程序只是计算机要遵循的一系列指令;

将数据作为程序的输入,输出来自程序的输出,计算机只是辅助程序运行而已;

操作系统本身就是一种监控程序,监控计算机的所有操作。

 

H、编程语言与编译器

 

编程语言分类:


1453536489528092269.png


编译器:

1453536490447086383.png


计算机无法解析高级语言,在运行高级语言编写的程序时必须编译成机器语言,这项工作称为编译程序;

编译器是一个程序,负责将java程序这样的高级语言翻译成计算机可以解析的语言编程的程序;

输入编译器程序(源程序或源代码)和从编译器程序中输出的(目标程序或目标代码)都是程序;

 

I、java虚拟机

 

Java编译器、虚拟机、计算机之间的关系:


编译并允许一个java程序的流程:




Java虚拟机(JVM)是在实际计算机上用软件实现的计算机模型,可以理解为一台假想的计算机,它有自己的虚拟的处理器、堆栈、寄存器等,还有相应的指令系统,负责翻译和运行java字节码;

Java虚拟机包括类下载器、字节码校验器、执行单元(解析器)组成;

 

Java编译器生成的目标代码不是面向具体处理器的代码,而是面向虚拟机的中间码,成为字节码(byte-code),字节码只能运行在java虚拟机上,可以理解为假想的计算机的机器语言;

Java编译器对字节码的翻译和执行是逐条运行的,而不是一次整个翻译;

 

Java是解析型的语言,解析执行的程序在运行速度上要比编译执行的程序慢一些。但对于支持即时编译(JIT---Just-In-Time complication)的java运行环境来说,其运行效率会提高很多,因为JIT在字节码被装载时,会将其编译成能够在客户端运行的本地代码,所以只有程序第一次加载的时候慢一点,在运行时和本地代码具有同样的运行速度;

 

在编写java程序时,很少将所有代码都写在一个文件里,通常由类的不同代码段组成,每个类都是分别编译的,这样每个类就会翻译成不同的字节码片段,要运行程序,就要将这些不同的字节码连接起来,这动作是交给类装载器来操作的,类似其它语言里的连接器;

 

为啥java不直接编译成计算机语言,反而编译成字节码额外多一步?大多数其它语言都生成机器码,通常运行速度更快些。但是java字节码保证了java的可移植性,在任何一台计算机上都可以使用java字节码,不需要重新编译,这样不必为不同类型的计算机编写不同的编译器,一种java编译器适用于所有计算机,但是为翻译字节码指令,每种类型的计算机必须有自己的字节码解析器,与编译器相比,解析器是很简单的程序。例如,c# 经常就会碰到32位计算机生成的dll在64位计算机跑,会有兼容性问题,好麻烦。





@注意:
本文由东亮博客提供
如需转载,烦请注明出处:http://www.lindongliang.cn/news76
有任何问题可以留言!

相关文章:

  • windows下JDK安装和配置
  • nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolC
  • 警告:不能读取 AppletViewer 的属性文件
  • JDK目录结构
  • IIS8.0, IIS7.0提示“请求筛选模块被配置为拒绝包含双重转义序列的请求”处理办法
  • linux、windows中ping大数据包的命令格式
  • IIS7中的自定义 404页面错误- 500.19
  • 关于struts2中action请求会执行两次的问题
  • 解决Mac OS lion下(ubuntu等linux也一样)启动tomcat的Cannot find ./catalina.sh 的问题
  • Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
  • 记录下mybatis中#{}和${}传参的区别
  • eclipse 内存不够用报错Internal Error
  • eclipse编译校验JS卡死解决办法
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • “大数据应用场景”之隔壁老王(连载四)
  • CentOS 7 防火墙操作
  • github从入门到放弃(1)
  • Javascript弹出层-初探
  • LeetCode29.两数相除 JavaScript
  • maya建模与骨骼动画快速实现人工鱼
  • Vue ES6 Jade Scss Webpack Gulp
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 工作中总结前端开发流程--vue项目
  • 机器学习学习笔记一
  • 基于HAProxy的高性能缓存服务器nuster
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端学习笔记之观察者模式
  • 使用 Xcode 的 Target 区分开发和生产环境
  • MyCAT水平分库
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • $(function(){})与(function($){....})(jQuery)的区别
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (七)理解angular中的module和injector,即依赖注入
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .describe() python_Python-Win32com-Excel
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net wcf memory gates checking failed
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .Net中间语言BeforeFieldInit