计算机原理
冯诺依曼体系结构
美籍匈牙利数学家冯·诺依曼于1946年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。
输入设备:比如键盘,鼠标等,它把数据传输给存储器,并由控制器控制,
存储器:比如(主存)内存,(辅存)硬盘等,它从输入设备获取数据,与运算器交换数据,把数据给控制器和输出设备(先从内存读取,如果内存没有,再从硬盘获取)
输出设备:数据从存储器获得,并由控制器控制
CPU:
- 运算器:只和存储器交换数据
- 控制器:只和存储器交互(从存储器获得指令流,并且控制存储器)
一定要记住数据流的走向
CPU读取数据时首先从内存中去读,如果内存中没有,再去辅助存储器(比如硬盘)读,把硬盘的读入到内存,然后才会被CPU读取到。
CPU运算后的结果,先存入内存,然后再存入硬盘。
保存数据是将内存的数据写入硬盘,只要硬盘不坏,数据就一直在硬盘里。
计算机软件
计算机软件可以使计算机按照事先约定好的顺序完成特定功能
计算机软件按运行层级可以划分为系统软件和应用软件
语言历史
- 机器语言
- 汇编语言
- 高级语言
- C(面向过程)(鼻祖)
- C++ (面向对象)
- JAVA (服务器开发)
- Python(大数据,人工智能)
- PHP(快速构造网站)
Java发展
- Java标准版(J2SE):(基础)桌面应用(桌面程序,控制台开发)
- Java移动版(J2ME):(不重要)嵌入式开发(手机应用,小家电)
- Java企业版(J2EE):(最广)E企业级开发(web端,服务器开发……)
Java特性:高可用,高性能,高并发
- 基于java开发平台、系统、工具
- 构建工具:Ant、Maven、Jekins
- 应用服务器:Tomcat、Jetty、Jboss、Websphere、weblogic
- Web开发:Struts、Spring、Hibernate、MyBatis
- 开发工具:Eclipse、Netbean、Intellij idea、Jbuilder
- 领域:Hadoop、Android
Java特性与优势
- 简单性
无需管理内存分配,指针等,更多时间专注业务开发
- 面向对象
- 可移植性 write once,run anywhere
- 高性能 (可能以后超过C++)
- 分布式 (url)
- 动态性 (反射)
- 多线程
- 安全性(防病毒,防篡改,捕获异常)
- 健壮性
JDK、JRE、JVM
- JDK:Java Development Kit (java 开发者工具)
- JRE:Java Runtime Environment
- JVM:Java Virtual Machine(java虚拟机 跨平台)
JDK环境搭建
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
不配置环境变量/etc/profile也能用,为啥?
- 检验
java -version
java version “1.8.0_121”
Java™ SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot™ 64-Bit Server VM (build 25.121-b13, mixed mode)
Hello,world!
- 编写程序
public class Hello{
public static void main(String[] args){
System.out.print("Hello World!");
}
}
- 编译java文件,会生成一个生.class文件
javac Hello.java
- 运行.class文件
java Hello
Hello World!%
疑问?为啥有个%,没百度出来
Java运行机制
- 先编译型 (全部编译后运行)
- 后解释型(一句一句运行)
Java这个语言很非凡。
一、你可以说它是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。
二、你可以说它是解释型的。因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。
三、但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。
像C、C++ 他们经过一次编译之后直接可以编译成操作系统了解的类型,可以直接执行的 所以他们是编译型的语言。没有经过第二次的处理 而Java不一样他首先由编译器编译成.class类型的文件,这个是java自己类型的文件 然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行,所以他是解释型的语言,而由于java对于多种不同的操作系统有不同的JVM所以 Java实现了真正意义上的跨平台!