基础知识以及框架 说明:微服务单独另写
说明:微服务单独另写)
JAVA基础进阶复习(一阶段)
001.关于安装JDK时,额外弹出一个JRE安装问题?
在安装JDK1.8时候,安装完毕之后,会额外弹出一个单独的JRE安装,其实安装好的JDK里面已经涵盖了JRE,实际上是用Eclipse开发工具时候,需要对JRE进行单独扫描,一般在目录里面创建一个jre目录,单独把它下载放进去。安装JDK记得末尾最好把版本添加上1.8/
002.JAVA的API文档
API是java提供的基本编程接口,java语言提供了大量的基础类,因此甲骨文公司为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。图标为黄色问号!
003.JDK,JER,JVM三者之间的关系?
JDK=JRE+JAVA的开发工具(javac,exe编译,java.exe运行,Javadoc.exe生成网页版文档)
JRE=JVM+JAVA核心类库
004.JDK为什么要配置path环境变量?
因为想在任何文件的路径下CMD都可以执行java的开发工具(指令),所以才会配path!
005.变量按照数据类型来分?
基本数据类型:
整型 (byte/short/int/long) 浮点型(float/double) 字符型(char) 布尔型(boolean)
引用数据类型:
类(class)
接口(interface)
数组(array)
006.线程的生命周期?
1.新建状态(New)
当线程对象创建后就进入了新建状态.如:Thread t = new MyThread()
2.就绪状态(Runnable)
当调用线程对象的start()方法,线程即为进入就绪状态
3.运行状态(Running)
当CPU调度了处于就绪状态的线程时,此线程才是真正的执行,即进入到运行状态
4.阻塞状态(Block)
处于运状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入就绪状态才有机会被CPU选中再次执行
5.死亡状态(Dead)
线程执行完了或者因异常退出了run()方法,该线程结束生命周期
006.String的特性?
1.string类代表字符串,比如java程序中的所有字符串字面值(“abc”)都作为此类的实例实现。
2.string字符串是常量,它的值在创建之后不能更改,查看string的源码。
3.string实现了serializable接口,表示字符串是支持序列化(通过字节流传输)。实现了comparble接口,标志是string可以比较大小。
4.string对象的字符内容是存储在一个字符数组value[]中的。
举例子创建对象方式:
String str = “abc”; =>char[] str1={‘a’,‘b’,‘c’};
string对象的创建 (比较特殊)
第一种 string str=“hello”
第二种 string str2=new string();
面试相关:string创建对象问题
以下是string的实例化方式
string str1=“abc" 与 string str2=new string(“abc”)的区别?
前者是是字面量定义的方式,此方式str1的数据是在javaEE(java企业版)声明在方法区中的字符常量池中。
后者是数据在堆空间中开辟空间以后对应的地址值给到str1。
如果比较地址值是str1==str2。
问题:String s=new String(“abc”);在内存中创建几个对象?
答:创建了两个对象,一个是利用new关键字在堆空间中创建了一个对象,另一个是创建了char[ ]对应的常量池的数据。
String里面的StringBuffer和StringBuilder问题?
StringBuilder与StringBuffer都继承自AbstractStringBuilder类。AbstractStringBuilder中也是使用字符数组保存字符串char[ ]value,但是没有final关键字修饰,所以这两个可变。
线程安全
String 中的对象是不可变的**(底层final修饰)**,也就可以理解为常量,线程安全。
AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共⽗类,定义了⼀些字符串的基本操作,如 expandCapacity、 append、insert、indexOf 等公共⽅法。StringBuffer 对⽅法加了同步锁或者对调⽤的⽅法加了同步 锁,所以是线程安全的。StringBuilder 并没有对⽅法进⾏加同步锁,所以是⾮线程安全的。
性能
每次对 String 类型进⾏改变的时候,都会⽣成⼀个新的 String 对象,然后将指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进⾏操作,⽽不是⽣成新的对象并改变对象 引⽤。相同情况下使⽤ StringBuilder 相⽐使⽤ StringBuffer 仅能获得 10%~15% 左右的性能提升, 但却要冒多线程不安全的⻛险。
使用建议
操作少量的数据: 适⽤ String
单线程操作字符串缓冲区下操作⼤量数据: 适⽤ StringBuilder
多线程操作字符串缓冲区下操作⼤量数据: 适⽤ StringBuffer
在执行效率上,StringBuilder > StringBuffer > String
007.理解枚举类
类的对象只有有限个,确定的我们就叫做枚举类。
当需要定义一组常量时,强烈建议使用枚举类
008.理解注解
009.集合collection剖析
集合主要是解决数组储存数据的弊端,二者都是容器。
010.泛型使用剖析
011.反射技术使用
012.IO流使用指南
JAVA框架复习(二阶段)
001:Spring、SpingMVC、SpringBoot详解
先看Spring框架是什么?
Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。
Spring 框架的目标是使 J2EE 开发变得更容易使用。
Spring框架体系结构:
什么是Spring MVC?
Spring MVC是Spring的一个模块,是一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。
什么是Spring Boot?
Spring Boot实现了自动配置,降低了项目搭建的复杂度。因为Spring框架需要进行大量的配置,Spring Boot可以自动配置,让项目设置变得很容易。实现了开箱即用的原则,开发者只需要引入自己需要的第三方库即可,有的库也许需要一些小的配置,但是大部分的库都不用配置。
SpringBoot并不会替代Spring框架,相反Spring Boot紧紧依赖Spring框架,Sping Boot的出现是为了使开发者更注重业务的逻辑,简化了对开发环境的配置。对开发者来说,最明显的区别就是配置文件少了,把各个用户额外定义的配置文件合成一个配置文件(xml)了。
Spring Boot与Spring MVC的比较:
Spring Boot 简化了Spring MVC配置,Spring MVC的作用就是开发web应用,就像游戏里的ADC打输出一样,Spring Boot的功能就是简化Spring的配置,像是辅助。