【思维导图】Java后端学习笔记-算法和数据结构-脑图
数据结构——图思维导图-高清简单脑图模板-知犀思维导图
数据结构——图图的定义和基本术语
定义是由一个顶点集V和一个顶点间的关系集合组成的数据结构
分类
有向图
无向图
基本术语
有(无)向网弧或边带权的图
子图
完全图含有e=n(n-1)/2条边的无向图
有向完全图含有e=n(n-1)条弧的有向图
稀疏图边或弧的个数<nlogn
稠密图边或弧的个数>=nlogn
度(入度+出度)
入度以顶点v为弧尾的弧的数目
出度以顶点v为弧头的弧的数目
路径长度路径上边的数目
连通图图中任意两个顶点之间都有路径相通
图的遍历
深度优先搜索DPS
类似于先序遍历
实质对每个顶点查找其邻接点的过程
广度优先搜索BFS实质通过边或弧找邻接点的过程
图的存储结构
邻接矩阵
有向图:对称统计第i行1的个数可得顶点i的出度
无向图:不对称统计第j列1的个数可得顶点j的入度
邻接表只存储图中已有的弧或边的信息
有向图的十字链表将有向图的邻接表和逆邻接表结合起来的一种链
图的应用
最小生成树
普里姆(Prim)算法
贪心算法
最短路径
Dijkstra算法
Floyd算法
拓扑排序
关键路径。
Java程序设计(基础)思维导图-简单高清脑图_知犀思维导图思维导图-简单高清脑图_知犀
Java程序设计(基础)概述特点面向对象平台可移植性分布式多线程安全性工作方式开发工具JDKjavacjava javadocIDElntelliJEclipse NetBeans术语JDK JREJVM API源程序结构package管理类解决命名冲突import class 注释行注释//块注释/*…*/文档注释/**…*/@author @param@return @throws基本语法关键字有特殊含义的单词(50)能用的(48)不能用的(2)gotoconst 标识符给类、接囗、方法、变量等起的名字命名规则字母、数字、下划线和$,数字不能开头大小写敏感不能跟关键字和保留字(null、true、false)冲突见名知意驼峰标识类名每个单词首字母大写变量和方法名从第二个单词开始每个单词首字母大写命名常量全大写,多个单词用下划线隔开运算符分类算术运算符赋值运算符关系运算符短路运算符条件运算符(三目运算符)自增/自减运算符正负号运算符移位运算符布尔运算符位运算符new 创建对象instanceof运行时类型识别()强制类型转换改变运算优先级[]下标运算符.取成员运算符优先级搞不清楚优先级直接加()结合性从左向右从右向左赋值运算自加自减条件运算正负号字面量整型字面量:100、100L浮点型字面量:3.5、3.5F、3.123e2字符字面量:'a'、'\t'、'\123'布尔型字面量:true、false引用字面量:null类型字面量:String.class、int.class分隔符数据类型基本类型整叙byteshortintlong小数floatdoublecharboolean 枚举类型enum引用类型String数组自定义的类或接囗面向对象基本概念类对象的蓝图和模板类与类之间的关系IS-A:继承泛化实现HAS-A:关联关联聚合合成USE-A:依赖定义类[访问修饰符] [修饰符] class类名 [extends 父类] [implements 接囗1,接口2,...] {}属性:数据抽象方法:行为抽象构造器创建对象:new构造器()对象一切皆为对象对象都有属性和行为对象都是唯一的对象都属于某个类消息调用对象的方法就是给对象发送了一个消息一个对象能够接受某种消息,就意味着该对象向外界提供了某种服务三大支柱封装隐藏一切可隐藏的实现细节,只暴露最简单的编程接囗继承从已有类创建新类的过程提供继承信息的类叫父类(基类、超类)得到继承信息的类叫子类(派生类)子类可以继承到父类中public、protected的属性和方法Java中的继承是单继承Object类是所有类的父类多态定义解释1:同样的引用调用同样的方法却做了不同的事情解释2:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但对A系统来说是透明的实现方法重写:不同的子类对父类的同一方法给出不同的实现版本对象造型:用父类型的引用引用子类型的对象相关内容访问修饰符类public默认方法、属性、内部类public protected默认private抽象类如果一个类有抽象方法,这个类必须被声明为抽象类抽象类中可以没有抽象方法,抽象类也可以有自己的构造器抽象类不能实例化(不能创建对象)强烈建议:将被继承的类设计成抽象类接囗接囗是约定:实现接囗的类必须重写接口中所有方法,否则就要声明为抽象类接囗代表能力:实现了接囗的类就具备了接囗所描述的能力接囗是一种角色:一个类可以实现多个接囗,一个接囗也可以被多个类实现Java中的接囗单方法接囗:这个唯一的方法通常都是回调方法ActionListener Runnable Comparable标识接囗:没有方法,但是表示了某种能力CloneableSerializable常量接囗:这是接囗最不正确的用法内部类相当于外部类中的一个属性内部类可以访问外部类的私有成员设计原则单一职责原则专业化模块化开闭原则抽象是关键封装可变性依赖倒转原则里氏替换原则接囗隔离原则合成聚合复用原则迪米特法则字符串String创建字符串对象String s="Hello";s引用静态区的字符串字面量String s=new String(Hello")s引用堆上的字符串对象字符串的方法长度:length()取字符:charAt(int)变大/小写:toUpperCase()/toLowerCase()连接:concat(String)比较:equals(String)/compareTo(String)判断开头/结尾:startsWith(String)/endsWith(String)模式匹配:indexOf(String,[int])/lastlndexOf(String,[int]取子串:substring(int,[int])修剪左右两边空白:trim()替换:replace(String,String)/replaceAII(String,String拆分:split(String)String代表的是不变字符串可以被修改的字符串StringBuilder 适用于单线程环境StringBuffer适用于多个线程操作同一个字符串的场景方法在指定位置插入字符串:insert(int,String)删除指定位置的字符:delete(int,int)倒转:reverse()追加:append(String)方法[访问修饰符] [修饰符]返回类型方法名([参数列表])[异常声明]访问修饰符public protected默认private修饰符static abstractfinal修饰变量,变量变成常量修饰类,类不能被继承修饰方法,方法不能被重写synchronizednative方法调用静态方法:类名.方法名(实参列表)非静态方法:对象.方法名(实参列表)递归数组基本用法数组的定义数组的初始化new静态初始化length属性下标运算Arrays工具类sort:排序toString:将数组变成字符串copyOf:数组拷贝equals:比较数组元素是否相同二维数组一个普通数组,每个元素又是一个数组应用表格矩阵2D游戏中的地图棋盘流程控制循环结构分类while循环do…while循环for循环for-each循环相关关键字breakcontinue分支结构if...elseswitch...case...default顺序结构。
《Java高并发核心编程(卷2):多线程、锁、JMM、JUC、》读书笔记PPT模板思维导图下载
1.2.3 进程与线 程的区别
1.3.1 Thread类 详解
1.3.2 创建一个 空线程
1.3.3 线程创建 方法一:继承 Thre...
1.3.4 线程创建 方法二:实现 Runn...
1.3.5 优雅创建 Runnable线程...
1.3.6 通过实现 Runnable接口...
1.3.7 线程创建 方法三:使用 Call...
05
2
06
2.9.6 需要在 synchro nize...
第3章 CAS原理与JUC原子类
01
3.1 什 么是CAS
02
3.2 JUC 原子类
03
3.3 对 象操作的 原子性
04
3.4 ABA 问题
05
3.5 提 升高并发 场景下 CAS操作 的性能
02
2.2 synchro nized关 键字
03
2.3 生 产者-消 费者问题
04
2.4 Java对 象结构与 内置锁
05
2.5 偏 向锁的原 理与实战
06
2.6 轻 量级锁的 原理与实 战
2.8 偏向锁、轻 量级锁与重量级
锁的对比
2.7 重量级锁的 原理与实战
2.9 线程间通信
2.1.1 自增 运算不是线
06
5.2.6 CLH自旋 锁
05
5.2.5 CAS可能 导致“总 线风暴”
5.3.1 非公 平锁实战
5.3.2 公平 锁实战
5.4.1 锁的 可中断抢占
5.4.2 死锁 的监测与中 断
5.5.2 共享锁 Semaphore
5.5.1 独占锁
5.5.3 共享锁 CountDownLa...
大一计算机思维导图知识点
大一计算机思维导图知识点计算机思维导图是一种以图形形式表达和展示信息关系的工具,在大一的计算机学习中具有重要的作用。
本文将介绍一些大一计算机课程中常用的思维导图知识点,帮助学生更好地理解和记忆相关概念。
一、计算机基础知识计算机基础知识是大一计算机学习的起点,包括计算机硬件、软件、操作系统等方面的内容。
在思维导图中可以用中心主题表示计算机基础知识,并通过分支主题展开以下内容:1. 计算机硬件- 中央处理器(CPU)- 内存- 硬盘- 显卡- 输入输出设备等2. 计算机软件- 操作系统- 应用软件- 开发工具等3. 操作系统- Windows- macOS- Linux等二、编程语言在大一的计算机学习中,编程语言是非常重要的一部分。
以下是一些常见的编程语言:1. C语言- 基本语法- 数据类型- 控制结构- 数组与指针等2. Java语言- 类与对象- 继承与多态- 异常处理- 输入输出等3. Python语言- 基本语法- 字符串操作- 列表与元组- 文件操作等三、数据结构与算法数据结构与算法是计算机学习中的核心内容之一,对于学习和理解数据处理和算法设计非常重要。
以下是一些常见的知识点:1. 数据结构- 数组- 链表- 栈与队列- 树与图等2. 算法- 排序算法(冒泡排序、插入排序、快速排序等)- 查找算法(顺序查找、二分查找等)- 图算法(广度优先搜索、深度优先搜索等)四、数据库数据库是计算机存储和管理数据的重要工具,以下是一些常见的数据库相关知识点:1. 数据库基础- 数据库概念- 关系型数据库与非关系型数据库- 数据库的三范式等2. SQL语言- 基本语法- 数据库的增删改查操作- 数据库的连接与关联查询等3. 数据库设计- 实体关系模型(ER模型)- 数据表设计与规范化等五、计算机网络计算机网络是现代计算机通信的基础,以下是一些常见的计算机网络知识点:1. 网络基础- 互联网的基本概念- 网络协议与标准- IP地址与子网划分等2. 网络通信- TCP/IP协议- HTTP协议- DNS解析等3. 网络安全- 防火墙- VPN- 加密与解密等六、操作系统操作系统是计算机的核心软件之一,以下是一些常见的操作系统知识点:1. 操作系统基础- 进程管理- 内存管理- 文件系统等2. Windows操作系统- 常用命令- 系统配置与优化- 用户管理等3. Linux操作系统- 常用命令- 文件与目录管理- 用户与权限管理等以上是大一计算机思维导图知识点的简要介绍,学生可以根据个人需要在思维导图中添加更详细的内容。
java思维导图笔记
Java思维导图笔记1. 什么是思维导图思维导图是一种用于展示思维和概念之间关系的图形工具。
它能够帮助我们整理、组织和表达思维。
在学习和思考过程中,使用思维导图可以更清晰地将复杂的信息归类和记录,提高信息的理解和记忆。
2. Java基本语法2.1 数据类型Java提供了一系列的数据类型,包括基本数据类型(如整数、浮点数、字符、布尔值)和引用数据类型(如类、接口、数组等)。
常见的基本数据类型有: - 整数类型:byte、short、int、long- 浮点数类型:float、double - 字符类型:char - 布尔类型:boolean引用数据类型: - 类(class):是面向对象编程中的基本概念,用来封装数据和方法。
- 接口(interface):是一种抽象的数据类型,用来定义类的行为规范。
- 数组(array):用来存储一组相同类型的元素。
2.2 控制流程语句控制流程语句用于控制程序的执行流程。
Java提供了三种主要的控制流程语句:顺序结构、选择结构和循环结构。
顺序结构是最简单的控制流程,指按照代码的先后顺序执行。
选择结构用于根据条件选择不同的执行路径。
常见的选择语句有:- if语句:用于根据一个条件判断选择是否执行某个代码块。
- switch语句:用于根据一个表达式的值选择执行不同的代码块。
循环结构用于重复执行某个代码块直到满足退出条件。
常见的循环语句有: - while语句:在循环开始之前,先判断条件是否满足,如果满足则执行循环体,然后再次判断条件。
- do-while语句:先执行一次循环体,然后再判断条件是否满足,如果满足则继续执行循环体。
- for语句:在循环开始之前,先执行初始化表达式,然后判断条件是否满足,如果满足则执行循环体,并在每次循环结束后执行更新表达式。
2.3 方法方法是一种可重复使用的代码块,用于执行特定的任务。
在Java 中,每个方法都有名称和参数列表,有时也有返回值。
Offer来了:Java面试核心知识点精讲(框架篇)
3 2.3 Spring
Cloud Eureka
4 2.4 Spring
Cloud Consul
5
2.5 Spring Cloud Feign
2.7 Spring Cloud Zuul
2.6 Spring Cloud Hystrink的 应用
作者介绍
这是《Offer来了:Java面试核心知识点精讲(框架篇)》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
读书笔记
我不清楚作者是为了凑篇幅还是什么,API相关的内容居多,原理性的东西不足。
- spring:原理/应用 IoC AOP MVC事务 MyBatis缓存 - spring cloud:原理/应用 boot config eureka consul hystrix zuul链路监控 - netty:原理/应用 - zk:原理/应用选举机制数据模型应用场景 - kafka:原 理/应用组成数据存储设计生产者并发设计 - Hadoop:原理/应用 HDFS MapReduce YARN - HBase:原理/应用列 式存储架构组成数据读写流程 - Cassandra:原理/应用数据模型 Gossip协议 NWR理论一致性hash副本策略/读 写机制 - ES:原理/应用数据模型分布式架构数据读写原理段合并 - spark:原理/应用特点模块组成运行机制 RDD/Streaming/SQL/DataFrame/DataSet - Flink:原理/应用核心概念架构事件驱动模型数据分析应用基于状 态的内存计算。
Offer来了:Java面试核心知识点精 讲(框架篇)
读书笔记模板
01 思维导图
03 读书笔记 05 目录分析
目录
JAVA学习路线图.doc
JA V A学习路线图Java 基础Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的oop 特性:封装、继承、多态。
此外还有泛型、反射的特性,很多框架的技术都依赖它,比如Spring 核心的Ioc 和AOP,都用到了反射,而且Java 自身的动态代理也是利用反射实现的。
此外还有Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在Web 开发中无处不在,也是面试经常会被问到的,所以在自学Java 后端之前,不妨先打好这些基础,另外还有Java8 的一些新特性,也要重点关注,比如Lambda 表达式、集合的Stream 流操作、全新的Date API 等等,关于新特性,我也写了几篇关于这方面的博客,请自行找吧,就不贴出来了。
关于书籍推荐,我是不建议初学者一开始就拿着「Java 编程思想」啃的,因为当初我就是那个当天下午决定自学Java,晚上就抱着这本书啃的人,说实话,我当时真的不懂它在说啥,因为我没有一点的面向对象语言编程的基础,而这本书又写得太博大精深了,在当时的我来说,完全是天书,但是我认为它仍然是Java 界的圣经,每读一次都有所收获。
我在这里推荐你们一开始先看「Java 核心技术」,这本书讲得比较通俗易懂,初学者比较能接受。
关于视频推荐,我当初就是听某客的毕向东老师讲的Java 基础教程(可以关注我的微信公众号获取),毕老师讲的实在是太生动有趣了,不知不觉把我带进Java 的坑里无法自拔,有时候我会听他视频时笑出声来,也许是我那段自学阶段最有趣的时刻了。
数据库关于sql 方面:SQL 教程、MySQL 教程我是了解了一些基础语法之后,就直接跟着视频的老师做一些表操作实战练习了,比如单表查询、多表查询等。
我建议学sql 切勿眼高手低,需多加练习,不要只看懂了就行,因为工作中写得一手简练的sql 是非常重要的。
在这里我说下我在项目一直秉承着sql 语句是能避免多表查询就避免多表查询,能够分开多条语句就分开多条语句,因为这里涉及到多表查询性能和数据库扩展的问题。
《大话数据结构》第二章:算法(思维导图)
2. 算法定义算法是解决特点问题求解步骤的描述, 在计算机中表现为指令的有限序列, 并且每条指令表示一个或多个操作。
没有通用的算法, 就像没有万能药一样。
特定的问题,有特定的对应的算法。
特性输入算法具有0个或多个输入。
输出算法至少有1个或多个输出。
有穷性指算法在执行有限的步骤之后, 自动结束而不会出现无限循环, 并且每个步骤在可接受的时间内完成。
确定性算法的每一步骤都具有确定的含义, 不会出现二义性。
可能性算法的每一步都必须是可行的, 也就是说每一步都能够通过执行有限次数完成。
设计算法的要求正确性指算法至少应该具有输入、输出和加工处理无歧义性、能正确反应问题的需求、能够得到问题的正确答案。
可读性算法设计的另一目的是为了便于阅读、理解和交流。
健壮性当输入数据不合法时, 算法也能做出相关处理, 而不是产生异常或莫名其妙的结果。
时间效率高和存储量低算法最好用最少的存储空间,花费最少的实际,办成同样的事。
算法的度量方法事后统计方法通过设计好的测试程序和数据, 利用计算机计时器多不同算法编制的程序的运行时间进行比较, 从而确定算法效率的高低。
具有很大缺陷:编号程序后才能发现程序的运行时间, 若算法很糟糕,不就是竹篮打水一场空。
不同计算机硬件和软件各有不同会造成结果的不同。
(操作系统、编译器、运行框架、处理器的不同)很难设计算法的测试数据, 小的测试数据往往无法测试出算法的真正的效率。
事前分析估算方法在计算机程序编制前, 一句统计方法对算法进行估算。
对于运行时间的影响因素:算法采用的策略、方法编译产生的代码指令问题的输入规模(指输入量的多少)机器执行指令的速度时间复杂度如何推导大O阶?1. 用常数1取代运行时间中所有加法常数(忽略加法常数)2. 在修改后的运行次数函数中, 只保留最高阶项。
3. 如果最高阶项存在且不是1, 则去除与这个项相乘的常数。
得到的结果就是大O阶。
常数阶O(1)线性阶O(n)对数阶O(logn)平方阶O(n^2)用的时间复杂度所耗费的时间从小到大依次是:。
Java学习路线图--Java语言进阶
Java学习路线图--Java语言进阶Java学习路线图的第二部分是Java语言进阶学习,在学完了第一阶段的Java 语言入门后,大家对Java语言学习有了初步的认识。
我根据黑马程序员的Java学习路线图把Java学习的第二部分分为九个阶段:面向对象阶段,常见API,异常,集合,IO,多线程,网络编程,Lambda以及反射。
下面介绍的是Java学习第二阶段的技术要点,跟着学一定会有所收获。
如果在被某个知识点卡住了,请不要轻易放弃,继续往下面学,等学到一定时候你会对不懂的知识点恍然大悟。
面向对象进阶1.面向对象特性之继承2.继承的好处和弊端3.super关键字的作用4.继承时子父类的访问特点5.super的内存分析6.方法的重写(Override)7.package关键字的作用8.import关键字的作用9.final关键字的作用10.final修饰局部变量的注意事项11.static关键字的作用12.面向对象特性之多态13.多态的好处和弊端14.接口的概述15.接口的特点和注意事项16.类、抽象类、接口之间的关系17.内部类的概述18.成员内部类的使用19.局部内部类的使用20.匿名内部类的使用21.匿名内部类在开发中的应用黑马程序员视频库网址:(海量热门编程视频、资料免费学习)学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 1679806262常用API1.Math类及其常用方法2.System类及其常用方法3.Object类的toString()和equals()方法4.Arrays类及其常用方法5.冒泡排序的原理分析及代码实现6.基本类型的包装类7.自动拆箱和自动装箱8.日期Date类型及其常用方法9.日期格式化类SimpleDateFormat10.日期工具类的编写11.日历Calendar类的使用异常1.异常的概述2.JVM默认处理异常的方式3.异常处理方式之try..catch4.异常处理方式之throws5.Throwable的常用方法6.异常的分类和区别7.自定义异常的使用黑马程序员视频库网址:(海量热门编程视频、资料免费学习)学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 1679806262集合1.集合体系结构2.单列集合体系的详细讲解3.迭代器的使用4.增强for循环的使用5.并发修改异常的产生原因和解决办法6.数据结构之栈和队列7.数据结构之数组和链表8.数据结构之哈希表9.HashSet保证元素唯一的源码分析10.TreeSet的自然排序和比较器排序11.泛型的使用12.泛型通配符的使用13.可变参数的使用和注意事项14.双列集合体系的详细讲解15.Map集合的遍历方式16.集合的嵌套操作17.集合练习之斗地主案例IO1.File类对文件的操作2.递归的应用和注意事项3.IO流的概述和分类4.字节流写数据的方式5.字节流读数据的方式6.字节流完成图片的复制7.字符缓冲流的使用8.编码表9.字符流写数据的方法10.字符串读数据的方法11.字符缓冲流的特有方法12.点名器案例13.IO流完成文件夹的复制14.标准输入输出流15.打印流的使用16.对象序列化流17.serialVersionUID&transient18.Properties的用法黑马程序员视频库网址:(海量热门编程视频、资料免费学习)学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 1679806262多线程1.进程和线程的区别2.Java实现多线程的两种方式3.线程优先级的设置和获取4.线程的控制5.线程的生命周期6.线程的安全问题7.同步代码块8.同步方法9.Lock锁10.生产者消费者问题网络编程1.网络编程的概述2.网络编程的三要素3.InetAddress类的操作4.端口和协议的详细解释5.UDP协议发送与接收数据6.TCP协议发送与接收数据7.模拟客户端与服务端数据传输8.多线程下文件的上传Lambdambda表达式的标准写法mbda的省略规则mbda和匿名内部类的区别4.JDK8和9对接口组成的更新5.方法引用的介绍6.函数式接口7.Stream流的中间操作8.Stream流的终结操作9.Stream流的收集操作反射1.类加载过程2.类加载器3.反射机制的概述4.获取Class类的对象5.反射获取构造方法并使用6.反射获取成员方法并使用7.反射获取成员变量并使用8.反射之泛型翻越9.模块化的概述10.模块服务的使用黑马程序员视频库网址:(海量热门编程视频、资料免费学习)学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 1679806262。
数据结构概述思维导图-高清简单脑图模板-知犀思维导图
数据结构
概述
数据
数据元素是基本单位
数据项是数据的最小单位
算法
特征
有穷性正确性
可行性输入
输出
设计要求
正确性可读性
健壮性
效率与低存储需求
时间复杂度空间复杂度
线性表
顺序表
结构特点
存在唯一的第一个数据元素
存在最后一个数据元素
除第一个,每个都有一个前驱除第一个,每一个都有一个后继顺序表示和实现单链表
结点插入
结点删除
静态链表循环链表
双向链表
结点插入
结点删除受限线性表
栈
队列
树和二叉树
基础概念
结点
似
结点的子树数叶子结点
度为0的结点
森林
尽
二叉树
五种基本形态
空二叉树
仅有根结点的二叉树左右子树均非空的二叉树
右子树为空的二叉树左子树为空的二叉树
性质
存储结构
链式存储结构
遍历先序遍历先访问根结点中序遍历中间访问根结点后序遍历
最后访问根结点
线素化及其存储结构一般树
树和二叉树的转化遍历
先跟遍历
后跟遍历
森林
森林与二叉树的转化遍历
先序遍历
中序遍历
最优二叉树
数组和广义表
存储
对称矩阵的压缩。
Java工程师学习之路思维导图
Java⼯程师学习之路思维导图前⾯看Hollis的微信公众号更新了Java⼯程师成神之路的⽂档,感觉⾥⾯的内容清晰、齐全,可以⽤来审视⾃⼰,也能够知道⾃⼰在那些⽅⾯可以继续前⾏,想着有时间分享出来。
⼀、基础篇JVMJVM内存结构堆、栈、⽅法区、直接内存、堆和栈区别Ja va内存模型内存可见性、重排序、顺序⼀致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定JVM参数及调优Ja va对象模型oop-klass、对象头H o tSpo t即时编译器、编译优化类加载机制classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw)虚拟机性能监控与故障处理⼯具jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, btrace、TProfiler编译与反编译javac 、javap 、jad 、CRFJava基础知识阅读源代码String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSetJa va中各种变量类型熟悉Ja va Str ing的使⽤,熟悉String的各种函数JDK 6和JDK 7中substring的原理及区别、replaceFirst、replaceAll、replace区别、String对“+”的重载、String.valueOf和Integer.toString的区别、字符串的不可变性⾃动拆装箱Integer的缓存机制熟悉Ja va中各种关键字transient、instanceof、volatile、synchronized、final、static、const 原理及⽤法。
JVM原理速记复习Java虚拟机总结思维导图面试必备
JVM原理速记复习Java虚拟机总结思维导图⾯试必备良⼼制作,右键另存为保存JVM喜欢可以点个赞哦Java虚拟机⼀、运⾏时数据区域线程私有程序计数器记录正在执⾏的虚拟机字节码指令的地址(如果正在执⾏的是Native⽅法则为空),是唯⼀⼀个没有规定OOM(OutOfMemoryError)的区域。
Java虚拟机栈每个Java⽅法在执⾏的同时会创建⼀个栈桢⽤于存储局部变量表、操作数栈、动态链接、⽅法出⼝等信息。
从⽅法调⽤直到执⾏完成的过程,对应着⼀个栈桢在Java虚拟机栈中⼊栈和出栈的过程。
(局部变量包含基本数据类型、对象引⽤reference和returnAddress类型)本地⽅法栈本地⽅法栈与Java虚拟机栈类似,它们之间的区别只不过是本地⽅法栈为Native⽅法服务。
线程公有Java堆(GC区)(Java Head)⼏乎所有的对象实例都在这⾥分配内存,是垃圾收集器管理的主要区域。
分为新⽣代和⽼年代。
对于新⽣代⼜分为Eden空间、FromSurvivor空间、To Survivor空间。
JDK1.7 ⽅法区(永久代)⽤于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
对这块区域进⾏垃圾回收的主要⽬的是对常量池的回收和对类的卸载,但是⼀般难以实现。
HotSpot虚拟机把它当做永久代来进⾏垃圾回收。
但很难确定永久代的⼤⼩,因为它受到很多因素的影响,并且每次Full GC之后永久代的⼤⼩都会改变,所以经常抛出OOM异常。
从JDK1.8开始,移除永久代,并把⽅法区移⾄元空间。
运⾏时常量池是⽅法区的⼀部分Class⽂件中的常量池(编译器⽣成的字⾯量和符号引⽤)会在类加载后被放⼊这个区域。
允许动态⽣成,例如String类的intern()JDK1.8 元空间原本存在⽅法区(永久代)的数据,⼀部分移到了Java堆⾥⾯,⼀部分移到了本地内存⾥⾯(即元空间)。
元空间存储类的元信息,静态变量和常量池等放⼊堆中。