java高级笔记汇总【复习&背诵】

一、理论知识背诵汇总篇

1、Java常用类

  1. System类
  2. Date类(日期类)
  3. DateFormat类(日期格式化类)
  4. SimpleDateFormat类
  5. Math类
  6. Random类
  7. BigInteger(大整数)类
  8. BigDecimal(大小数)类
  9. Timer定时器

2、枚举(将类的对象固定下来)

只能使用它的对象,而不能增加和修改枚举的属性

3、单例模式

一个类中只允许产生唯一的一个对象
image

3.1 实现步骤:

  1. 定义一个属性,保存当前类的静态对象(单例对象)
  2. 将构造方法私有
  3. 创建一个静态get()方法返回这个单例对象
    (1)懒汉模式:创建实例的过程在get()方法中
    • 优点:使用的时候才创建实例,避免内存浪费
    • 缺点:线程不安全,无法保证绝对的单例
      image
      (2)饿汉模式:直接在属性中实例化,类加载的时候单例对象就准备好了
    • 优点:线程安全,执行效率高
    • 缺点:不需要的时候也会创建实例,会导致内存浪费
      image
      image

4、字符串

4.1 包装类

装箱:将基本数据类型转换为包装类型
拆箱:包装类转基本数据类型
基本类型->包装类型:

  • byte -> Byte
  • short -> Short
  • int- > Integer
  • long -> Long
  • float -> Float
  • double -> Double
  • char -> Character
  • boolean -> Boolean
    image

自动装箱和自动拆箱:
image
image

7、数据库操作

1、查询:

select * from stu;

2、增加:

insert into stu(id,name,age,sex) Values(1003,”王五”,13,”女”);

3、删除:

delete from stu where name=”李四”;

4、更新/修改:

update stu set name=”张三” where id=1001;

5、模糊查询:

select * from stu where name like ‘%李%’

6、分组查询:

select * from stu group by age;(按年龄分组)

7、集合函数:常与group by一起使用

  • count():统计记录数
  • sum():求和
  • avg():平均值
  • max():最大值
  • min():最小值

8、连接查询

image
image

  • 内连接:inner join
    Select * from stu inner join class On stu.class.id=class.id;
  • 左外连接:left join
    Select * from stu Left join class On stu.class.id=class.id;
  • 右外连接:right join
    Select * from stu Right join class On stu.class.id=class.id;

8、JDBC连接数据库

image
image
image
image
image
image
image
image

9、Web开发和服务器(Tomcat服务器)

1、Tomcat服务器:

将项目部署到Tomcat中,启动项目,用户就可以访问了。

2、部署项目:

要将java项目装成war包拷贝到webapps中即可

11、JSP技术(动态网页开发技术)

1、jsp通过网页表单获取用户输入数据、访问数据库或其他数据源,然后动态地创建网页

2、Servlet与Jsp的区别:

  • Servlet:在java代码中嵌套html
  • Jsp:在html中嵌套java代码(本质上是servlet)

3、JSP语法结构:

三种形式结构:

  • JSP脚本:<%java 代码%>
    编写具体业务逻辑,也可以定义局部变量或调用方法,但不能定义方法
  • JSP声明:<!java 代码>
    声明全局变量或方法
  • JSP表达式:<%=java 变量或表达式%>
    将已经声明的变量或表达式输出到网页上

4、JSP指令:设置与整个JSP页面相关的属性

  • <%@page...%>:定义页面的依赖属性(引入java类...),写在jsp开头
  • <%@include... %>:包含其他文件,一般是其他前端页面
  • <%@taglib...%>:引入标签库的定义,可以使自定义标签

5、JSP四大作用域

  • Page(页面作用域):代表当前网页,只在当前页面有效
  • request(请求作用域):在当前请求中有效
  • session(会话作用域):在当前会话中有效,浏览器关闭则失效
  • application(应用程序作用域):在服务器开启期间都有效
    除page外,其他对象都可以通过setAttribute赋值和getAttribute取值。

6、EL表达式:获取作用域中的数据(取值)

语法:${作用域名+Scope.数据的属性名}

例:${requestScope.name}——request中的数据

7、JSTL标准标签库:对集合进行遍历

核心标签库:

  1. <c:if>:和if语句一样
  2. <c:forEach>:基础迭代标签
  3. <c:choose>:相当于if
  4. <c:when>:条件
  5. <c:otherwise>:相当于else

12、多线程

1、并发执行和并行执行:

  • 并发执行:多个进程使用同一个CPU,每个进程独占CPU一会,然后让出CPU资源,给其他进程使用
  • 并行执行:多个进程,在同一时刻,每个进程都有一个CPU进行运算

2、进程和线程

  • 进程:程序的一次动态执行过程
  • 线程:是CPU调度和分派的基本单位,可与同一个进程的其他线程共享资源

进程和线程的关系:

  1. 进程的产生,肯定会产生至少一个线程
  2. 进程关闭,该进程内所有线程全部销毁
  3. 线程销毁,进程未必会关闭

3、多线程:一个进程内的多个任务并发执行

多线程的实现

  1. 继承Thread类,重写run()方法
  2. 实现Runnable接口,实现run()方法

4、线程同步(同步指协同、协助、互相配合):

定义:当有一个线程对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作

5、用synchronize给对象加互斥锁的两种实现方式:

  1. 给代码块加锁(锁定对象)
  2. 给方法加锁(锁定方法实现的过程)

6、线程死锁:不同的线程都在等待那些根本不可能被释放的锁

避免死锁技巧:保证每个线程都按照同样的顺序去访问资源

13、网络编程

1、socket(套接字)使用TCP提供了两台计算机的通信机制。

当连接建立时,服务器会创建一个socket对象。客户端和服务器可以通过socket对象的写入和读取进行通信

2、socket通信三种模式:

  1. 流式套接字:提供一个面向连接,可靠的数据传输服务,数据无差错,无重复发送,且按发送顺序接收(TCP:传输数据前要先建立连接)
  2. 数据报式套接字:面向无连接,数据报以独立形式发送,不提供无差错保证,数据可能丢失或重复,接受顺序无序(UDP:不用建立连接)
  3. 原始式套接字:允许对较低层次协议,如IP直接访问

3、IP和端口号

IP地址:计算机的唯一标识号
端口号:不同的应用程序通过端口号区分

4、TCP协议(客户端、服务端)的三次握手过程:

  1. 客户端向服务端发出连接请求,等待服务器确认

  2. 服务器向客户端回送一个响应,通知客户端收到了连接请求

  3. 客户端再次向服务器发送连接确认信息,确认连接

5、UDP通信和TCP通信

  1. UDP通信(发送端、接收端)
    DatagramPacket:封装UDP通信中的数据
  2. TCP通信(客户端、服务端)
    ServerSocket类:表示服务器端
    Socket类:表示客户端

6、TCP和UDP的一个主要区别:

UDP只有发送端和接收端,不区分客户端和服务器端,计算机之间可以任意发送数据;
TCP严格区分客户端和服务器端,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器不可以主动连接客户端

14、反射

1、反射:

定义:对于任意一个类,都能够通过对象等信息知道这个类的所有属性和方法

2、相关实现类:

  • Class类:反射的核心类,获取类的属性方法等成员信息
  • Field类:获取和设置类中属性
  • Method类:调用类的方法
  • Constructor类:调用类的构造方法

3、获取类信息的三种方法

  1. 通过对象名获取类信息
  2. 通过类名获取类信息
  3. 通过路径获取类信息
    image

15、垃圾回收机制(回收垃圾对象所占用的内存空间):

  • 调用System类的gc()静态方法:System.gc()
  • 调用Runtime对象的gc()实例方法:Runtime.getRuntime.gc()
    image
    image
    image

二、总体重要笔记汇总篇

1、程序三层架构

image
image

2、Java常用类

(1)system类

image

(2)Date类

image

(3)DateFormat类:日期格式化

image
image

(4)SimpleDateFormat类:提供日期和字符串的转换【实际开发用的非常多】

image
image

(5)Math类:提供一系列数学操作的方法(比如求绝对值等),Math方法都是静态方法,直接由类名调用

image

(6)Random类:随机数

image
image
image

(7)Biglnteger类:大整数类

image

(8)BigDecimal类:超大 小数类

image

(9)对象克隆

image
image
image
image

(10)Time定时器

image
image
image
image
image
image
image

(11)枚举:只可以使用其对象,不能增加和修改枚举的属性

image
image

4、字符串和基本类型转换

image
image

5、深入了解字符串

image
image
image
image

6、字符串操作

image
image
image
image
image
image
image
image

7、正则表达式(Pattern类):定义了字符串的模式,定义了字符串的各种匹配规则,可以用来搜索、编辑或处理文本

image
image
image
image
image

8、StringBuffer和StringBuilder:实现字符串的直接修改,而不是用之前的“+”拼接等低效率方法

image
image
image
image

9、集合

1、List、Set、Map区别

(1)List集合:有序可重复

  • ArrayList:
    • 读取快,增删慢;
    • 线程不安全;
    • 初始大小是10,扩充时扩充50%
  • LinkedList
    • 读取慢,增删快;
    • 线程不安全;
    • 没有扩容机制,使用首尾添加操作addFirst()和addLast()
  • Vector
    image
    (2)Set集合:无序不重复
  • HashSet:散列存放,无序
  • TreeSet:有序存放,自然排序

hashCode:散列码是由对象导出的一个整型值。散列码是没有规律的。类的hashCode()方法继承自Object类,因此每个对象都有一个默认的散列码,他的值为对象的存储地址(由对象的物理存储地址通过散列转换来的)

HashSet原理
存对象时,首先取得hashCode值与hash表的值比较;如果不存在则可以存入集合并把hashCode存入hash表中;
否则通过“==”和equals()方法判断跟集合中的对象是否为同一对象,都为false才能添加成功。

TreeSet原理
存放时调用CompareTo()方法,根据返回值比较元素大小,然后进行“升序”排列。

(3)Map集合:以键值对形式存储数据

  1. HashMap、HashTable、TreeMap的区别:
  • HashMap:
    • 线程不安全;
    • 无序;
    • 允许Key出现一次null,Value允许null;
  • HashTable:
    • 线程安全;
    • 无序;
    • Key和Value都不允许null;
  • TreeMap:
    • 线程不安全;
    • 自然升序;
    • Key不允许null,Value允许null;

10、Iterator迭代器

迭代器:不管索引和类型都能够将类型遍历出

迭代器实现步骤:

  • 使用iterator()方法要求容器返回一个Iterator
  • 调用next()从第一个往后获取序列的元素
  • 使用hasNext()检查是否还有元素
  • 使用remove()方法将迭代器新返回的元素删除
    image

11、泛型:代替那些定义时还不明确的参数类型

image
image
image

12、IO流

image
image
image
image
image

13、文件相关操作

image
image

14、字节输入流、字节输出流、字符输入流、字符输出流

image
image
image
image
image

15、缓冲流、打印流

image
image
image
image
image

16、对象输出流、对象输入流

image
image

20、eclipse中配置Tomcat

image
image
image
image
image
image
image
image
image
image
image
image
image
image

7、请求转发和重定向:

定义

请求转发: servlet将客户端请求直接交给另一个servlet或某个页面
重定向: servlet设置客户端重新发送一个新请求到另一个servlet或某个页面

请求转发和重定向的区别

  • 请求转发是一次请求,重定向是两次请求
  • 请求转发可以共享请求参数,重定向之后就获取不了共享参数了

21 Servlet

(1)作用:使用Servlet,可以收集来自网页的用户输入,呈现来自数据库或者其他源的纪录,还可以动态创建网页。

(2)一个类继承HttpServlet就成了一个Servlet

21.1 Servlet入门案例

image
image
image

21.2 Servlet获取请求参数

image

21.3 Servlet获取表单数据

image
image

21.4 Servlet主要任务:

  1. 读取客户端(浏览器)发送到后台的数据;
  2. 处理数据并生成结果;
  3. 发送响应数据(即文档)到客户端(浏览器)

22、Cookie

定义:由服务端产生,再发送给客户端保存的一组数据
作用:客户端访问服务端,第一次访问结束后,就会产生一个Cookie,把这个Cookie保留到客户端,下次可以直接访问
image
image

23、Session

定义:由服务端产生的一组数据用于会话跟踪,保存在服务端
image

24、Cookie和Session的比较

  1. 存储位置不同:
  • Cookie的数据信息存放在客户端浏览器上;
  • Session的数据信息存放在服务器上。
  1. 存储容量不同:
  • 单个Cookie保存数据<=4KB;
  • Session没有上限。
  1. 存储方式不同:
  • Cookie只能保管ASCII字符串;
  • Session可存储任何数据。
  1. 隐私策略不同:
  • Cookie对客户端可见,不安全;
  • Session存储在服务器上,不存在敏感信息泄露风险。
  1. 生命周期不同:
  • Cookie在设置的有效期内,无论是否关闭窗口都依然存在;
  • Session关闭窗口就会失效。

25、文件上传

image
image
image

26、请求转发和重定向

image
image
image
image
image
image

27、JSP入门案例

image
image
image
image

27.1 JSP语法结构和注释

image
image
image
image
image
image
image

27.2 JSP内置对象、四大作用域和EL表达式、JSTL标准标签库

image
image
image
image
image
image
image
image
image
image
image
image

27.3 JSP的if标签、choose标签、foreach标签

image
image
image
image
image
image
image
image

28、多线程

image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image

29、网络编程

image
image
image
image
image
image
image
image
image
image
image
image
image
image

30、反射机制

image
image

30.1 反射:获取类的信息

image
image

30.2 反射:获取构造方法

image
image

30.3 反射:获取普通方法

image
image

30.4 反射:invoke调用方法

image

30.5 反射:获取属性

image
image

31、JDK新特性

31.1 JDK8新特性:接口方法、函数式接口、lambda表达式

image
image
image
image
image
image

31.2 JDK9&10新特性

image

31.3 JDK12新特性:switch表达式

image

32、java内部类

image
image
image
image
image
image
image

33、Lambda表达式

定义:表示只有一个抽象方法的接口【函数式接口】
image
image
image
image
image
image
image
image
image
image
image

34、垃圾回收机制

image
image
image
image

35、JDK 8 聚合操作

image
image
image
image
image

36、对象序列化

定义:因为在java中数据是保存在对象中,如果要长久保存在磁盘中,要将java对象转换为I/O流中的字节序列(对象序列化)
image
image
image

37、NIO(New I/O)

定义:改进的用于处理输入/输出的新功能
image
image
image
image
image
image
image
image
image

posted @ 2023-12-11 15:51  "贼*.猫"贼*.帅`  阅读(93)  评论(0编辑  收藏  举报