java语言概述

MarkDown语法

文本编辑器:Typora (免费的轻量级文本编辑器)自己去网上下载

文件后缀:xxx.md

(查看,勾选文件扩展名,新建个.txt文件将其后缀名改为.md)

计算机知识

计算机由硬件和软件组成。

计算机专业六大件:组成原理,操作系统,数据库,编译原理,计算机网络,数据结构, 其次还得加上分布式的基础知识,现在的系统都变成分布式的。

1,计算机组成原理

要理解冯诺依曼体系的结构,CPU和内存,硬盘,各种外设之间的关系,寄存器、缓存等知识。CPU有哪些指令,如何执行这些指令,如果实现数组,结构体,函数调用,这就涉及到汇编的知识。像原码,反码,补码,定点数、浮点数的表示和运算也是编程中必备的知识。现在很多语言都是在虚拟机上运行的,你只要是了解了计算机的组成原理,再去看哪些虚拟机,就会发现概念都是相通的。另外CPU中的缓存,缓存一致性协议,DMA的异步思想都会在应用层中有所体现。

2,操作系统

重点是掌握操作系统对外提供的抽象,包括进程、线程,文件,虚拟内存,以及进程间的通信问题。几乎所有的编程语言都会涉及到对多进程或者多线程编程的支持, 特别是多线程的并发编程,所以必须得搞明白他们的本质是什么,线程都有哪些实现方式。得真正地体会到“进程是资源分配的最小单位,线程是调度的最小单位。” 这句话的含义。几乎所有的编程语言都会涉及到锁和死锁,最好在最底层理解锁是怎么实现的。需要理解虚拟内存和物理内存直接的关系,分段和分页,文件系统的基本原理。对于进程的调度,页面分配/置换算法,磁盘的调度算法,I/O系统,我认为优先级比较低。

3,计算机网络

要理解这些:

  • 什么分组交换。
  • TCP可靠性传输原理,TCP/IP的协议细节, 三次握手,四次挥手,TCP状态转换。
  • 几个重要的协议DHCP,UDP, ARP, DNS。
  • 能够说出一个客户端如何在接入网络以后,通过这些协议,跨域网络和服务器通信的。
  • 和应用层结合非常紧密的Socket知识和网络安全(对称加密,非对称加密,Hash, 数字签名,以及集大成者Https)
  • 至于网络层的路由选择算法,链路层的各种协议,我认为优先级比较低。

以上这些知识在你学习Redis ,Ngnix, Tomcat, LVS等软件时将有极大的帮助。

4,数据库

包括最基本的SQL,各种范式,事务及其隔离级别,事务的实现方式,索引及其实现方式。

5,数据结构(推荐书籍“大话数据结构”)

6,编译原理

7,分布式的理论知识

计算机硬件:

一些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。

计算机硬件组成:运算器、控制器、存储器、输入设备、输出设备

CPU,内存,主板,电源、主机箱,硬盘,显卡,键盘、鼠标,显示器等。

CPU(最贵的,所有计算都由CPU执行的,即中央处理器,是电脑的核心,电脑处理数据的能力和速度主要取决于CPU),内存(Memory)(内存条,打开浏览器运行的程序游戏都要加载到内存中才能运行,程序去读取数据得到的执行结果最后都要放到内存),主板(Motherboard)(用电源连接CPU、内存,IO设备(输入输出设备),主板是安装在主机机箱内的一块矩形电路板,上面安装有电脑的主要电路系统。),显卡(整个图形界面的操作都离不开显卡,无论是哪个系统显卡都是不可少的)

冯.诺依曼体系结构:输入设备,存储器(运算器,控制器),输出设备

计算机软件:

1.计算机软件可以使计算机按照事先预定好的顺序完成特定的功能。

2.计算机软件按照其功能划分为系统软件与应用软件。

系统软件:

DOS(Disk Operating System)(DOS操作系统又叫磁盘操作系统,是早期的操作系统)

Windows,Linux,Unix,Max,Android,IOS

应用软件:

WPS,QQ,微信,迅雷等,我们学习Java就是要开发应用软件。

软件开发:借助开发工具和计算机语言去制作软件的过程

***软件人机交互分类:(图形化界面(GUI),命令行方式(DOS))***

Windows常用快捷键:

Ctrl+C:复制

Ctrl+V:粘贴(注意:复制和剪切后都可以粘贴)

Ctrl+A:全选

Ctrl+X:剪切

Ctrl+S:保存

Ctrl+Z:撤销 ,Ctrl+Y:恢复撤销

Alt+F4:关闭当前窗口,有的电脑F键失效了,就多按个Fn键就有用了。

Alt+F4+Fn:关闭当前窗口

Shift+Delete:永久删除某文件,不会将删除的此文件放回回收站。

Windows+E:打开我的电脑(计算机)

Windows+R:敲cmd,进入dos界面,敲命令行,快速搜索查询输入命令cmd。

Ctrl+Shift+Esc:打开任务管理器

Windows+Tab:快速切换窗口,打开所有软件窗口快速切换。

Windows+l 快速让电脑黑屏待机

Windows+D 快速回到桌面

Dos命令:

在系统搜索栏,输入cmd(或Windows+R:敲cmd)进入dos界面,敲命令。

在系统搜索栏,输入cmd,找到命令提示符应用,右击命令提示符应用,选择以管理员方式运行。

Dos命令:

java语言概述

命令 操作符号
盘符切换命令 盘符名: 如 d: 换D盘 不区分大小写字母,英文冒号
查看当前目录下的所有文件 dir
进入某个目录 cd 文件夹名 如 cd day01 进入D盘下的子目录day01
退回上一级目录 cd…
退出到磁盘根目录 cd\
清除屏幕 cls
退出终端 exit
进入多级文件夹 cd 文件夹1\文件夹2\文件夹3

Dos命令窗口鼠标右击是粘贴,可通过键盘上下建来查找历史指令

查看电脑IP:

直接敲命令:ipconfig

敲dos命令打开电脑中某些应用,如,敲calc,是打开计算器。mspaint打开画图工具。notepad打开记事本。

ping 命令:

ping网站得到一些网站的IP信息,如,ping www.baidu.com

ping命名一般用作测试网络是否正常上。

文件操作命令:

md 创建目录文件夹,

rd 移除删除目录文件夹,

cd>a.txt 创建a.txt文件,

del a.txt 是删除a.txt文件,

(如果一个文件夹中存在文件,是不能够直接删除文件夹,可以使用del 文件夹,直接删除文件夹中所有的文件。删除目录前得先删除文件。删除文件用del,如 del a.txt 是删除a.txt文件)

计算机语言发展史:

1.机器语言:

计算机的基本计算方式都是基于二进制的方式。

二进制:010111001010110010110100

这种代码是直接输入给计算机使用的,不经过任何的转换。

2.汇编语言(机器语言的助记符):

解决人类无法读懂机器语言的问题。

指令代替二进制。就是机器语言的助记符。

3.高级语言:

从大体上分为两大类:面向过程和面向对象。

C是典型的面向过程语言,C++、JAVA是典型的面向对象语言。

Python( 大数据分析,人工智能) PHP (快速构建一个网站) JAVA(服务器开发)

JAVA SE (标准版,桌面)JAVA EE(移动版,手机)JAVA EE(企业版,服务器)JAVA做大数据方向智慧城市

java开发工具:Eclipse,Idea

高级语言分类:

计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:1.编译 2.解释。 由此高级语言也分为编译型语言和解释型语言。

编译型语言:

编译型:

使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。

特点:

在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。

总结:
  1. 一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;

  2. 与特定平台相关,一般无法移植到其他平台;

  3. 现有的C、C++、Objective等都属于编译型语言。

解释型:

使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。

特点:

解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。

总结:
  1. 解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;

  2. 只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;

  3. Python等属于解释型语言。

    java是两者结合,比较接近解释型语言。

什么是Java语言

Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言。所谓编程语言就是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。面向过程的C语言和面向对象的JAVA语言。

Java语言发展历史

1995年Sun公司发布Java1.0版本

1997年发布Java 1.1版本

1998年发布Java 1.2版本

2000年发布Java 1.3版本

2002年发布Java 1.4版本

2004年发布Java 1.5版本

2006年发布Java 1.6版本

2009年Oracle甲骨文公司收购Sun公司,并于2011发布Java 1.7版本

2014年发布Java 1.8版本 (也称为8.0版本)

2017年发布Java 9.0版本

2017年发布Java 9.0版本

java语言能做什么

Java语言主要应用在互联网程序的开发领域。常见的互联网程序比如天猫、京东、物流系统、网银系统等,以及服务器后台处理大数据的存储、查询、数据挖掘等也有很多应用。

JAVA具有面向对象、与平台无关、安全、稳定和多线程等优良特性,JAVA不仅可以用来开发大型的应用程序,而且特别适合于Internet应用的开发。

java语言特点

1.简单。(语法类似c++)例如JAVA不再有指针的概念。

2.面向对象,基于面对对象的编程更符合人的思维方式,使人们更容易解决复杂的问题。

3.与平台无关,(平台指OS(操作系统)和CPU(处理器)),java语言和其他语言相比最大的优势就是编写的软件能在执行码上兼容,在所有的计算机上运行,是因为java可以在计算机的操作系统之上再提供一个java运行环境jre,jre由java虚拟机(jvm)、类库及一些核心文件组成,也就是说,只要平台提供了java运行环境,java编写的软件就能在其上运行。

与平台无关是指软件的运行不因操作系统、处理器的变化而无法运行或出现错误。像其他编程语言(c/c++)编写的应用程序都依赖平台,都需要经过操作系统和处理器来完成程序的运行,其编写的程序可能因为操作系统的变化、处理器的升级导致程序出现错误或无法运行。

java虚拟机与字节码。java语言和其他语言相比,最大的优势就是它的平台无关性。这是因为java可以在平台之上再提供一个java运行环境,该java运行环境jre=jvm+类库。java虚拟机的核心是所谓的字节码指令,即可以被java虚拟机直接识别、执行的一种由0、1组成的序列代码。字节码并不是机器指令,因为它不和特定的平台相关,不能被任何平台直接识别、执行。java针对不同平台提供的java虚拟机的字节码都是相同的,例如所有虚拟机都将11110000识别、执行为加法操作。

和c++/c不同的是,java语言提供的编译器不针对特定的操作系统和cpu芯片进行编译,而是针对java虚拟机把java源程序编译成称为字节码的“中间代码”,例如java源文件中的+号被编译成字节码指令11110000 字节码是可以被java虚拟机识别、执行的代码,即java虚拟机负责解释运行字节码,其运行原理是:java虚拟机负责将字节码翻译成虚拟机所在的平台的机器码,并让当前平台运行该机器码。

在一个计算机上编译得到的字节码文件可以复制到任何一个安装了java运行环境的计算机上直接使用。字节码由java虚拟机负责解释运行,即Java虚拟机负责将字节码翻译成本地计算机的机器码,并将机器码交给本地的操作系统运行。

4.内置对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速的切换,由于处理器的速度很快,远远超过了人接受信息的速度,所以给人的感觉好像是多个任务在同时执行。

C++没有内置的多线程机制,必须调用操作系统的多线程功能来进行多线程程序的设计。

5.动态。java程序的基本组成单元是类,有些类时自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得java可以在分布环境动态的维护程序及类库。C/c++编译时就将函数库或类库中被使用的函数、类同时生成机器码,那么每当其类库升级之后,如果c/c++程序想具有新类库提供的功能,程序必须重新修改、编译。

6.面向对象是一种程序设计技术,它将重点放在对象及对象之间的接口上,模拟的是人的思维去写程序。

在Java中,万物皆对象。Java具有可移植性(跨平台,这里平台指的是操作系统,一次编写到处运行Write Once,Run Anywhere)java里有个jvm,jvm就是个虚构的计算机,可以跑在任何平台上)

动态性(反射机制)多线程(边打游戏边听音乐边登Q)

异常机制,分布式(通过Java获取网络上一些资源就跟获取我的电脑上的资源一样简单)

生成机器码,那么每当其类库升级之后,如果c/c++程序想具有新类库提供的功能,程序必须重新修改、编译。

7.面向对象是一种程序设计技术,它将重点放在对象及对象之间的接口上,模拟的是人的思维去写程序。

在Java中,万物皆对象。Java具有可移植性(跨平台,这里平台指的是操作系统,一次编写到处运行Write Once,Run Anywhere)java里有个jvm,jvm就是个虚构的计算机,可以跑在任何平台上)

动态性(反射机制)多线程(边打游戏边听音乐边登Q)

异常机制,分布式(通过Java获取网络上一些资源就跟获取我的电脑上的资源一样简单)

二进制:

计算机中全部采用二进制数表示,它只包含 0、1两个数,逢二进一,1+1=10。每一个0或者每一个1,叫做一个bit(比特)。
java语言概述

什么是字节:

字节是我们常见的计算机中最小存储单元。计算机存储任何的数据,都是以字节的形式存储,右键点击文件属性, 就可以查看文件的字节大小。

位(bit):一个数字0或者一个数字1,代表一位。11001100是一个八位二进制数。

字节(Byte):每逢8位是一个字节,这是数据存储的最小单位。 1 Byte = 8 bit

8个bit(二进制位) 0000-0000表示为1个字节,写成1 byte或者1 B。

8 bit = 1 B 1024 B =1 KB 1024 KB =1 MB 1024 MB =1 GB 1024 GB = 1 TB