TreeMind树图在线AI思维导图

Java知识思维导图

  收藏
  分享
免费下载
免费使用文件
坤坤脑残粉 浏览量:32023-02-23 19:30:02
已被使用0次
查看详情Java知识思维导图

介绍Java知识

树图思维导图提供 Java知识 在线思维导图免费制作,点击“编辑”按钮,可对 Java知识  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:0ba7841d46e68b6500c18bafb64e4dc6

思维导图大纲

Java知识思维导图模板大纲

类加载机制

加载过程

加载

验证

准备

解析

初始化

类加载器

BootstrapClassLoader 启动类加载器

ExtensionClassLoader 扩展类加载器

ApplicationClassLoader 应用程序类加载器 (也称 系统类加载器)

双亲委派模型

好处

JVM参数

Xss

分析工具

jstack

runnable

jstat(JVM Statistics Monitoring Tool)

线程池

newCachedThreadPool

newFixedThreadPool

newSingleThreadExecutor

NewScheduledThreadPool

string

Immutable 不可变性

保证线程安全,无需同步。不可变对象可以被自由地共享

如果字符串是可变的,那么会引起很严重的安全问题。譬如,数据库的用户名、密码都是以字符串的形式传入来获得数据库的连接,或者在socket编程中,主机名和端口都是以字符串的形式传入。因为字符串是不可变的,所以它的值是不可改变的,否则黑客们可以钻到空子,改变字符串指向的对象的值,造成安全漏洞。

类加载器要用到字符串,不可变性提供了安全性,以便正确的类被加载。

因为字符串是不可变的,所以在它创建的时候hashcode就被缓存了,不需要重新计算。

代理模式

好处

为其他对象提供一种代理以控制对这个对象的访问

提供统一接口,在不影响系统调用的情况下进行扩展,即遵循开放封闭原则

代理类型

动态代理

cglib

被代理类不能有final修饰符,否则报错

被代理方法不能有final修饰符,否则代理无效

jdk

静态代理

常见线程安全问题

SimpleDateFormat

常见内存泄露类型

ThreadLocal

虽然Entry是弱引用,里面的key在gc发生时会被回收,但是对应的value还是会造成内存泄露

引用类型

强引用

软引用

弱引用

虚引用

并发

volatile

1. 保证了不同线程对这个变量进行操作时的可见性,即一个 线程修改了某个变量的值,这新值对其他线程来说是立即可见的。

2. 禁止进行指令重排序。

synchronized

反射

在运行状态中,对于任意一个实体类,都能够知道这个类 的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性

线程

wait与sleep

在等待时wait 会释放锁,而sleep 一直持有锁。 wait 通常被用于线程间交互,sleep 通常被用于暂停执行

实例方法thread.isInterrupted() 与 静态方法Thread.interrupted()

中断协议

interrupt ( )

可响应中断线程

wait

sleep

join

不可响应中断线程

InputStream

OutputStream

异常

throwable

Error

Exception

受检异常

RuntimeException

NullPointerException

ArrayIndexOutOfBoundsException

IndexOutOfBoundsException

ArithmeticException

ClassNotFoundException

IllegalAccessException

IllegalArgumentException

IllegalStateException

非受检异常

非运行时异常

IOException

SQLException

InterruptedException

IllegalAccessException

ClassNotFoundException

NoSuchMetodException

GC

判断对象是否存活的算法

引用计数法

可达性分析算法

垃圾收集算法

标记清除算法

效率问题,标记和清除两个过程的效率都不高

空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。

复制算法

标记整理算法

分代收集算法

内存溢出分析

java.lang.OutOfMemoryError: PermGen space

可能的原因

MaxPermSize设置过小(默认为4M)

tomcat热部署时没有清理之前加载的环境

引用了大量三方jar包

改进

将相同的第三方jar文件移置到tomcat/shared/lib目录下, 这样可以达到减少jar 文档重复占用内存的目的

StackOverFlowError

原因

存在递归调用

存在循环依赖

改进

尽量将递归调用铺平,减少栈深度

如果你确认递归实现是正确的,为了允许大量的调用,你可以增加栈的大小。依赖于安装的 Java 虚拟机,默认的线程栈大小可能是 512KB 或者 1MB。你可以使用 -Xss 标识来增加线程栈的大小。这个标识即可以通过项目的配置也可以通过命令行来指定

java.lang.OutOfMemoryError: java heap space

java.lang.OutOfMemoryError: unable to create native thread

ORM

Mybatis

Executor

SimpleExecutor

ReuseExecutor

BatchExecutor

延迟加载

插件运行原理

支持的四种接口

ParameterHandler

ResultSetHandler

StatementHandler

Executor

逃逸分析

线程逃逸

方法逃逸

高效优化

栈上分配

同步消除

标量替换

可重入锁

synchronized

ReentrantLock

不可重如锁

Servlet

生命周期

1.构造器

init()

service()

destroy()

实现

HttpServlet

doGet

doPost

doHead

doDelete

doPut

doOptions

doTrace

思维导图模板大纲

相关思维导图模板

Java基础思维导图思维导图

树图思维导图提供 Java基础思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 Java基础思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:61ba3e6091b2775461ca310c76669229

Java基础思维导图

树图思维导图提供 Java基础 在线思维导图免费制作,点击“编辑”按钮,可对 Java基础  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:8fefb5405bec5d084b65662c28c66706