mapengpeng1999@163.com java之概述1

MarkDown语法

文本编辑器:Typora (免费的轻量级文本编辑器)自己去网上下载,https://pc.qq.com/search.html#!keyword=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操作系统又叫磁盘操作系统,是早期的操作系统)

操作系统,比如Window,Linux,Unix,Max,Android,IOS

应用软件:

我们安装的所有软件都属于应用软件,如微信,迅雷等,我们学习Java就是要开发应用软件。

  • C/S : 客户端,服务端程序,比如我们桌面应用程序(QQ,浏览器)等等,需要两套程序,一套是客户端,一套是服务器端
  • B/S : 浏览器,服务器,也是我们Java主流的开发模式,通过浏览器访问服务器程序,只需要开发一套代码,就是服务器端代码,比如学校的教务系统,淘宝…

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

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

  • 命令:对于程序员来说,掌握Linux的指令非常关键,因为Linux计 算机的物理位置一般离你相差十万八千里,所以都是通过远程指令的方 式进行操作的,我们完成的Java开发,几乎都是要部署到远端的Linux 计算机的。

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,找到命令提示符应用,右击命令提示符应用,选择以管理员方式运行。

命令操作符号
盘符切换命令盘符名: 如 d: 换D盘 不区分大小写字母,英文冒号
查看当前目录下的所有文件dir
进入某个目录cd 文件夹名 如 cd day01 进入D盘下的子目录day01
退回上一级目录cd…
退出到磁盘根目录cd\
清除屏幕cls
退出终端exit或quit
进入多级文件夹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 ME(移动版,手机)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获取网络上一些资源就跟获取我的电脑上的资源一样简单)

二进制:

计算机中全部采用二进制数表示,它只包含 0、1两个数,逢二进一,1+1=10。每一个0或者每一个1,叫做一个bit(比特)。
在这里插入图片描述

什么是字节:

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

位(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
在个人计算机上,总线搭建在主板上,主板是一个连接计算机各个部分的电路板。总线包含,中央处理器(CPU)、内存(主存)、存储设备(如磁盘、光盘、磁带)、输入设备(如键盘、鼠标)、输出设备(如显示器、打印机)、通信f备(如调制解调器、网卡)

中央处理器(CPU),是计算机的大脑,它从内存中获取指令,然后执行这些指令。CPU包括控制单元和算术/逻辑运算单元。控制单元:用于控制和协调其它组件的动作。算术/逻辑运算单元:用于完成数值运算(加减乘除)和逻辑运算(比较)。每台计算机都有一个内部时钟,该时钟以固定速度发射电子脉冲。时钟速度越快,在给定时间内执行的指令就越多,速度的计量单位是赫兹(HZ),1HZ相当于每秒1个脉冲,随着CPU速度不断提高,目前以千兆兹(GHZ)来表述。

存储设备:内存中的信息在断电时会丢失,可考虑将程序和数据永久的保存在存储设备上。当计算机需要这些数据时,再移入内存,因为从内存中读取比从存储设备读取要快很多。存储设备有三种,磁盘驱动器(每台计算机至少有一个硬盘驱动器,硬盘用于永久的保存数据和程序),光盘驱动器(CD和DVD)(CD容量可达700MB,DVD容量可达4.7GB),USB闪存驱动器(USB,通用串行总线,可以使用USB将打印机、鼠标、外部硬盘驱动器连接到计算机上,USB闪存驱动器很小,可用于存储和传输数据的设备。)最初一个CPU只有一个核(core),核是处理器中实现指令读取和执行的部分,一个多核CPU是一个具有两个或者更多独立核的组件,可提高CPU的处理能力。现在的CPU都是构建在一块小小的的硅半导体芯片上,这块芯片上包含数百万称为晶体管的小电路开关上,用于处理信息。

比特(bit)和字节(byte)

计算机就是一系列的电路开关。每个开关存在两种状态:关(off)和开(on)。如果电路是开的,它的值是1;如果电路时关的,它的值是0。

一个0或者一个1存储为一个比特(bit),是计算机中最小的存储单位。

计算机中最基本的存储单元是字节(byte),每个字节由8个比特构成。

计算机的存储能力是以字节来衡量的,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB

每个字节都有一个唯一的地址,使用这个地址确定字节的位置,以便于存储和获取数据。

内存(RAM):由一个有序的字节序列组成,用于存储程序及程序需要的数据。

一个计算机具有的RAM越多,它的运行速度越快,但是此规律是有限制的。

内存和CPU一样,也构建在表面嵌有数百万晶体管的硅半导体芯片上,但内存芯片更简单、更低速、更便宜。

一个程序和它的数据在被CPU执行之前必须移到计算机的内存中。要想CPU使用硬盘中的数据,必须先将硬盘中的数据加载到内存中。CPU读取硬盘中数据很慢,必须先将硬盘中的数据加载到内存中,CPU中读取的数据都来自于内存。但内存是带电存储的(一旦断电数据就会消失),而且容量有限,所以要长时间存储程序或数据就需要使用硬盘。内存在这里起了两个作用:1.保存从硬盘读取的数据,提供给CPU使用。2.保存CPU的一些临时执行结果,以便CPU下次使用或保存到硬盘。

计算机CPU和内存的交互是最频繁的,内存是高速缓存区,用户硬盘和CPU的交互,而CPU运转速度越来越快,硬盘远远跟不上CPU的读写速度,才设计了内存。

输入输出设备:

常见的输入设备:键盘、鼠标

常见的输出设备:显示器、打印机

显示器屏幕分辨率:是指显示设备水平和垂直方向上显示的像素(PX)数。

分辨率可以手工设置。分辨率越高,图像越清晰。

通信设备:计算机可通过通信设备进行联网。

常见的设备有:

拨号调制解调器:使用的是电话线,传输速度可达56000bps(bps:每秒比特)

DSL(数字用户线):使用的是电话线,传输速度是上面20倍

电缆调制解调器:利用有线电视电缆进行数据传输,速度比DSL快

网络接口卡(NIC):将计算机接入到局域网(LAN)的设备,局域网通常用于大学、商业组织,速度快。

无线网络:计算机可通过无线适配器连接到局域网或internet

操作系统:

操作系统是运行在计算机上最重要的程序,它可以管理和控制计算机的活动。

操作系统的主要任务:控制和监视系统的活动,分配和调配系统资源,调度操作。

万维网:简称为Web,分为web客户端和web服务器程序。www可以让web客户端(常用浏览器)访问浏览web服务器上的页面。是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为“资源”,并且由一个全局“统一资源标识符”(URL)标识,这些资源通过超文本传输协议(http)传送给用户,而后者通过点击链接来获取资源。

万维网是无数个网络站点和网页的集合,它们在一起构成了因特网internet最主要的部分(因特网也包括电子邮件、usenet及新闻组)。它实际上是多媒体的集合,是由超级链接连接而成的。我们通常通过网络浏览器上网观看的,就是万维网的内容。 互联网包含因特网,因特网包含万维网。

多用逆向思维、反证法、透过问题看本质。

程序设计语言,没有“最好”的语言,各有千秋。关键是学习如何使用程序设计方法来解决问题。

使用谷歌浏览器Chrome、火狐浏览器FireFox,笔记用Typora,播放器用迅雷,思维导图用Xmind。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值