当前位置: 代码迷 >> 综合 >> javaSE基础篇-知识点总结一
  详细解决方案

javaSE基础篇-知识点总结一

热度:56   发布时间:2024-02-20 13:17:51.0

1.java语言三种不同的技术架构

JavaEE(标准版)

适用于开发桌面级的应用程序,比如QQ,PC版微信,迅雷

基于C/S架构和p2p架构

此类软件通常需要先从网上将程序下载安装到本地磁盘中,启动之后,会有一套独立的软件界面运行在操作系统中

JavaSE(企业版)

适用于企业级应用程序的开发,比如淘宝,京东,百度,网易...

不需要下载和安装,直接通过浏览器个网络,就能访问的应用程序

基于B/S架构

JavaME(微缩版)

适用于嵌入式设备,移动端设备的开发,比如机顶盒,车载导航..

2.软件系统的三种体系结构

C/S(Client-Server)

客户端对服务器模式,一台主机充当服务的提供者,连接多台客户端,客户端之间不能进行通信,所有的请求都必须通过服务器进行转发

优点:充分利用了客户端PC机的运算能力,数据在用户的电脑上进行处理再发给服务器

缺点:必须进行下载和安装客户端软件,版本更新、升级很麻烦

B/S(Browser-Server)

浏览器对服务器模式,对客户端进行了一个统一,使用浏览器来访问应用程序

B/S和C/S并不是完全不同的两种架构,B/S是在C/S基础上进行改良,可以说B/S是一种 特殊的C/S架构

优点:使用应用程序比价方便,无需下载和安装,只要有浏览器和网络即可

          客户端基本“零成本维护”,服务器更新代码,客户端访问的永远是最新版本

缺点:无法利用客户端PC的运算能力,所以在图形界面方面略逊一筹

           所有的计算几乎都发生在服务端, 服务端的压力较大

pear to pear/point to point

点对点模式/端对端模式,网络中的所有节点既是客户端也是服务器,也就是说,如果使用p2p软件去下载一些资源的时候,参加下载的每一台计算机同时在作为服务器向别人发送资源的时候,也作为客户端接收着别人发来的资源

优点:下载一个资源的人越多,每个人的下载速度就越快

缺点:这些下载工具,对本地磁盘造成的伤害很大,尽量少用

3.java语言的优点

提供了一个解释执行的环境(JVM)

加速开发

一次编译,处处运行(Write once, run anywhere ),这句话可以理解成:java代码的编译和运行都是平台无关的,实现了跨平台,消除了平台的差异性

简单易懂的多线程操作

实现动态更新

提供了一个更简单的编程方式

更健壮:代码层面取消了指针机制,和内存机制

面向对象编程:只需要关心谁能完成这件事,完成的结果如何,不需要关心事情实现的过程

4.java为什么能够实现跨平台性

java的编译运行过程是比较复杂的 

先编译生成class字节码文件,然后交给jvm虚拟机,翻译成对应平台的机器码,生成的代码和字节码是平台的无关的,但是存在不同版本的 jvm,不同版本的jvm会把相同的字节码文件翻译成不同平台对应的机器指令。

面试题:两种常见的垃圾回收算法?

1.标记清理法

"哪里脏了,扫哪里",GC会对内存中的垃圾位置进行标记,有针对性的释放被标记的单元

适用某块内存中垃圾较少的情况

2.内存搬移法

找到一块内存空间中有用的内存,然后将数据完整的搬移到这块内存中,将剩余的区域全部回收

5.java的生命周期

编译阶段

java代码编译形成class字节码文件

运行阶段

类加载器把class字节码文件加载到jvm内存当中

进行字节码验证

将字节码交给解释器,解释器逐条翻译成cpu执行

6.字节码验证内容

代码必须符合jvm的规范

代码 不能破坏系统的完整性

不能的造成堆栈的上溢和下溢

参数类型必须正确

类型转换必须正确

面试题:HelloWorld.java编译的结果,是否一定会生成HelloWorld.class?

不一定,源代码文件和字节码文件明见名称没有直接的关系。源代码文件是类存放的一个容器,而一个类都会生成一个字节码文件,字节码文件的名称和类名是一致的。如果一个源代码文件有多个类,就会生成多个字节码文件

笔试题:java中最基本的编程单元是?

类

编写一个java代码,最少需要创建一个类,无论是代码,变量,还是方法,都不可能脱离类而单独存在

笔试题:一个Java程序想要实现一项功能,是否最少需要用到两个类?

是

java程序实现一个功能,本质上是依赖于各种类之间的相互配合使用

7.需要用到某一个类的时刻

使用java.exe启动某个类的时候

创建类对象的时候

用到类的静态变量和静态方法的时候

用Class.forName()得到类的类镜像的时候

8.双亲委托机制/双亲委派机制

向上委派

当一个自定义的类需要被加载的时候,首先本地类加载器接到请求不会直接加载,他会先去查找自己的缓冲区,看是否加载过此类,如果加载过,直接拿出来使用,如果没用,本加载器没有加载过这个类,它则会把加载请求委托给父类加载器-扩展类加载器进行处理

扩展类加载器接到委托,会查看自己的缓冲区,看是否加载过此类,如果加载过,拿出来使用,没有的话,再向上委派给启动类加载器

启动类加载器接到委托,先查看自己的缓冲区,是否加载过此类,如果加载过,拿出来使用,如果没有,则说明本系统第一次下载这个类

向下加载

然后,启动类加载器会在自己的类加载路径中查看是否有字节码文件,如果有,则执行加载,并将该类信息保存到缓冲区中,类加载成功,如果没有,它会向下通知子加载器

扩展类加载器接到通知,查看自己的类加载路径中是否有字节码文件,如果有,则执行加载,并将该类信息保存在自己的缓冲区中,类加载成功,如果没有,则继续通知本地类加载器

本地类加载器接到通知,查看自己的类加载器路径中是否有字节码文件,如果有,执行加载,并将该类信息保存在自己的缓冲区中,类加载成功,如果没有,说明类加载失败,抛出ClassNotFoundException

 

 

  相关解决方案