
读书笔记
文章平均质量分 97
镜子里的末班车
QQ:1972922090
展开
-
[JVM]12.垃圾回收
文章目录1.垃圾回收概述1.1 什么是垃圾1.2 大厂面试题1.3 为什么需要GC1.4 早期垃圾回收1.5 Java垃圾回收机制2. 垃圾回收相关算法2.1 标记阶段:引用计数算法2.2 标记阶段:可达性分析算法2.2.1 可达性分析算法(或根搜索算法、追踪性垃圾收集)2.2.2 GC Roots2.3 对象的finalization机制2.4 MAT与JProfiler的GC Roots溯源2.5 清除阶段2.5.1 标记-清除算法2.5.2 标记-清除算法2.5.3 标记-压缩(整理)算法2.5.4原创 2020-07-20 22:46:42 · 989 阅读 · 0 评论 -
[JVM]11.StringTable
文章目录1. String的基本特性2. String的内存分配3. String的基本操作4. 字符串拼接操作5.intern()的使用关于String.intern()的面试题6.StringTable的垃圾回收7.G1中的String去重操作7.1 实现7.2 命令行选项1. String的基本特性String:字符串,使用一对""引起来表示。String sl = “hello”;//字面量的定义方式String s2 = new String(“hello”) ;String声明为f原创 2020-07-17 20:23:48 · 482 阅读 · 0 评论 -
[JVM]10.执行引擎
文章目录1. 概述2. Java代码编译和执行过程3. 机器码、指令、汇编语言3.1 机器码3.2 指令3.3 指令集3.4 汇编语言3.5 高级语言3.6 字节码3.7 C、C++源程序执行过程4. 解释器4.1 解释器的工作4.2 解释器的分类4.3 现状5. JIT编译器5.1 Java代码的执行分类5.2 HostSpot JVM的执行方式5.3 案例5.4 JIT编译器5.4.1 概念解释5.4.2 热点代码及探测方式5.4.3 方法调用计数器5.4.4 回边计数器5.4.5 HotSpot VM原创 2020-07-16 22:41:14 · 464 阅读 · 0 评论 -
[JVM]09.对象
文章目录1. 对象的实例化1.1 创建对象的方式1.2 对象创建的步骤1.2.1 判断对象对应的类是否加载、链接、初始化1.2.2 为对象分配内存1.2.3 处理并发安全问题1.2.4 初始化分配到的空间1.2.5 设置对象的对象头1.2.6 执行init方法进行初始化2. 对象的内存布局2.1 对象头2.2 实例数据(Instance Data)2.3 对齐填充(Padding)2.4 小结3. 对象的访问定位4. 直接内存(Direct Memory) *1. 对象的实例化1.1 创建对象的方式原创 2020-07-16 17:05:35 · 473 阅读 · 0 评论 -
[JVM]08.方法区
文章目录1. 栈、堆、方法区的交互关系2. 方法区的理解2.1 方法区的基本理解2.2 Hotspot中方法区的演进3. 设置方法区大小与OOM3.1 设置方法区内存的大小3.2 方法区OOM3.2 如何解决方法区OOM4. 方法区的内部结构4.1 类型信息4.2 域信息(Field 成员变量)4.3 方法(Method)信息4.4 运行时常量池4.4.1 常量池4.4.2 运行时常量池5. 方法区使用举例6. 方法区的演进细节6.1 永久代为什么要被元空间替换6.2 StringTable 为什么要调整6原创 2020-07-15 21:52:54 · 533 阅读 · 0 评论 -
[JVM]07.堆
文章目录1.堆的核心概述1.1 内存细分2.设置堆内存大小与OOM2.1 堆空间大小的设置2.2 查看堆内存的大小2.3 OOM3. 年轻代与老年代4. 图解对象分配过程5.Minor GC、Major GC、Full GC5.1 收集方式5.2 最简单的分代式GC策略的触发条件6. 堆空间分代思想7. 内存分配策略8. 为对象分配内存(TLAB)9.堆空间的参数设置10. 堆是分配对象存储的唯一选择吗10.1 逃逸分析参数设置10.2 逃逸分析:代码优化10.2.1 栈上分配10.2.2 同步省略(消除)原创 2020-07-15 12:46:41 · 662 阅读 · 0 评论 -
[JVM]06.本地方法
1.本地方法接口1.1什么是本地方法?简单地讲,一个Native Method就是一个Java调用非Java代码的接口,该方法的实现可以为其他语言。用native关键字修饰的方法,在定义的时候,并不提供实现体,而是由非java语言在外部实现的。本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序。标识符native可以与其他所有的java标识符连用,但是abstract除外。/** * 本地方法 */public class IHaveNatives {原创 2020-07-12 17:47:05 · 515 阅读 · 0 评论 -
[JVM]05.虚拟机栈
文章目录1.虚拟机栈的背景1.1 虚拟机栈基本内容1.2 栈中可能出现的异常1.3 设置栈的内存大小2.栈的存储单位2.1 栈的运行原理2.2 栈帧的内部结构3.局部变量表(Local Variables)3.1 概述3.2 变量槽slot3.3 静态变量与局部变量的对比4. 操作数栈(Operand Stack)5 代码追踪6.栈顶缓存技术ToS(Top-of-Stack Cashing)7.动态链接(Dynamic Linking)8.方法的调用8.1 虚方法和非虚方法虚拟机中提供了以下几条方法调用指令原创 2020-07-12 15:56:24 · 479 阅读 · 0 评论 -
[JVM]04.程序计数器
文章目录1.程序计数器(PC寄存器)介绍2.面试常见问题1.程序计数器(PC寄存器)介绍JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)或更贴切(也称为程序钩子)。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。作用:PC寄存器是用来存储指向下一条指令的地址,也即将将要执行原创 2020-07-06 23:22:15 · 663 阅读 · 0 评论 -
[JVM]03.运行时数据区概述及线程
JVM运行时数据区划分内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区)(图源阿里)JDK8的元数据区+JIT编译产物 就是JDK8以前的方法区每个Java应用程序都有一个Runtime类的实例,该实例允许该应用程序与运行该应用程序的环境进行交互。 当前运行时可以从getRu原创 2020-07-06 22:35:28 · 522 阅读 · 0 评论 -
[JVM]02.类加载子系统
文章目录1.JVM架构2.类加载器与类的加载过程2.1 类加载器子系统作用2.2 类加载器ClassLoader角色2.2 类的加载过程3.类加载器分类3.1 虚拟机自带加载器3.2 用户自定义类加载器4.ClassLoader5.双亲委派机制6.其他6.1 JVM中表示两个class对象是否为同一个类6.2 对类加载器的引用6.3 类的主动使用和被动使用1.JVM架构2.类加载器与类的加载过程2.1 类加载器子系统作用类加载器子系统负责从文件系统或者网络系统中加载class文件,class文原创 2020-07-06 21:46:12 · 705 阅读 · 0 评论 -
[JVM]01.JVM与java体系结构
文章目录字节码虚拟机Java虚拟机JVM的整体结构Java代码执行流程JVM的架构模型JVM的生命周期虚拟机的启动虚拟机的执行虚拟机的退出HotSpot VM字节码字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。我们平常说的java字节码,指的是用java语言编译成的字节码。准确的说任何能在JVM平台上执行的字节码格式都是一样的,所以应该统称为JVM字节码。不同语言、不同的编译器可以编译出相同的字节码,字节码文件也可以在不同的JVM上运行(L原创 2020-07-04 21:37:15 · 742 阅读 · 0 评论 -
[Java]注解
文章目录1.什么是Annotation2.系统定义的Annotation3.自定义Annotation4.Retention和RetentionPolicy5.反射与Annotation7.@Target注解8.@Inherited注解1.什么是AnnotationAnnotation 注解,是代码里做的特殊标记,可以在编译,类加载,运行时在不改变原有逻辑的情况下,被读取,并执行相应的处理,通过使用Annotation,程序员可以在源文件中嵌入一些补充的信息。代码分析工具,开发工具和部署工具可以通过这些原创 2020-07-02 16:37:53 · 553 阅读 · 0 评论 -
[Java]多线程与并发
文章目录1.进程与线程1.1 进程1.2 进程的状态1.3 线程2.线程的基本使用3.线程休眠4.join与中断线程5.守护线程与yield7.线程同步7.1 多线程共享数据7.2 线程同步7.3 同步准则8.死锁9.生产者与消费者案例10.线程的生命周期11.线程池1.进程与线程1.1 进程程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。进程是一个具有一定独立功能的程序,一个实体,每一个进程都有它自己的地址空间。1.原创 2020-07-01 23:07:03 · 558 阅读 · 0 评论 -
[Java]集合
文章目录1.集合概述2.List2.1 ArrayList2.2 Vector2.3 LinkedList2.4 Vector和ArrayList和LinkedList的区别3.Set3.1 HashSet3.2 TreeSet3.3 LinkedHashSet4.集合的遍历5.Map5.1 HashMap5.2 Hashtable5.3 LinkedHashMap5.4 TreeMap5.5 JDK1.8添加的Map接口的新方法6.Collections工具类6.1 排序操作6.2 查找和替换6.3 同步原创 2020-06-30 17:17:53 · 497 阅读 · 0 评论 -
[java]文件与IO
文章目录1. File 类2.字节流3.字符流4.字节字符流转换5.缓冲流6.打印流7.对象流8.字节流数组9.数据流10.合并流、字符串流、管道流11. Properties 文件操作12.文件压缩与解压缩13.Path和Files1. File 类File类表示文件和目录路径名的抽象表示形式。可以实现文件的创建,删除,重命名,得到路径,创建时间等,是唯一与文件本身有关的操作类。操作方法:方法作用public File(String pathname)构造file类实例,传入原创 2020-06-26 17:42:09 · 664 阅读 · 0 评论 -
java零碎知识点笔记
文章目录1.访问权限2.组合和聚合3.“是一个”与“像是一个”4.前期绑定,后期绑定5.向上转型6.基本类型的存储7.finalize()8.垃圾回收器如何工作9.可变参数列表10.final11.类初始化和加载12.多态13.接口14.内部类15.嵌套类16.集合17.Lambda表达式18.异常1.访问权限三个显示关键字设置类中的访问权限:public private protected如果没有使用上述三个关键字设置权限,默认为default访问权限,则称为包访问,只有同一个包下的其他类成员可以访原创 2020-06-02 09:21:44 · 682 阅读 · 0 评论 -
Redis入门
文章目录一、概述1.1 简介1.2 安装1.3 配置1.4 Redis中的内存维护策略1.5 自定义配置Redis1.6 Redis关闭二、Redis命令三、数据类型3.1 String3.2 Hash类型3.3 List类型3.4 Set类型3.5 zset类型3.6 HyperLogLog四、Redis 发布订阅功能五、事务功能六、Redis缓存6.1 Redis持久化RDBAOF6.2 缓存...原创 2020-04-16 17:09:08 · 651 阅读 · 0 评论 -
MongoDB入门
文章目录一、简介1.数据库的分类2.MongoDB的安装3.基本概念1.数据库(database)2.集合(collection)3.文档(document)二、指令1.基本指令2.插入3.查询条件操作符AND 条件OR条件AND和OR联合使用4.修改5.删除6.其他$type操作符Limit()与Skip()方法sort()方法三、SpringBoot+mangoDB一、简介1.数据库的分类...原创 2020-04-15 00:10:09 · 643 阅读 · 0 评论 -
Nginx入门
文章目录nginx一、简介反向代理负载均衡动静分离nginx的安装二、常用命令三、配置文件四、配置反向代理location 指令说明五、 配置负载均衡六、动静分离七、配置高可用的集群原理nginx一、简介Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好反向代理正向代...原创 2020-04-13 21:19:28 · 517 阅读 · 0 评论 -
[spring]3.Spring中的AOP
文章目录1.AOP相关术语2. 使用xml配置AOP3.使用注解配置AOPAOP (面向切面编程) 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对...原创 2020-03-13 15:49:36 · 507 阅读 · 0 评论 -
[spring]2.Spring中的IoC
文章目录1. Spring的IoC核心容器根据xml配置文件,通过id获取对象2. spring对bean的管理细节1.创建bean的三种方式2.bean的作用范围3. bean对象的生命周期3. Spring中的依赖注入1.使用构造函数2.使用set方法(更常用)3.使用注解4.Spring的配置注解5.Spring 整合junit的配置1. Spring的IoC核心容器根据xml配置文件,通...原创 2020-03-12 14:26:53 · 599 阅读 · 0 评论 -
[spring]1.工厂模式解耦与IoC概念
文章目录1. 问题分析2.使用工厂模式解耦3.容器4.IoC(Inversion of Control)1. 问题分析代码目录如下:/** * 账户持久层接口 */public interface IAccountDao { /** * 模拟保存账户 */ void saveAccount();}/** * 账户持久层实现类 */pub...原创 2020-03-08 20:51:50 · 529 阅读 · 0 评论 -
jquery语法
文章目录jquery 效果隐藏、显示淡入淡出滑动动画stop()jquery Html获取设置添加删除CSS类尺寸jquery 遍历AJAXjquery 效果隐藏、显示$(selector).hide(speed,callback);$(selector).show(speed,callback);可选的 speed 参数规定隐藏/显示的速度,可以取以下值:"slow"、"fast" ...原创 2020-02-29 21:14:25 · 548 阅读 · 0 评论 -
yaml基本语法
1.语法规则与数据结构语法规则大小写敏感缩进表示层级关系缩进不允许用tab,只允许空格缩进的空格数无规定,只要保持相同层级的元素左侧对齐即可数据结构对象:键值对,又称为映射,哈希,字典数组:一组按次序排列的值,又称序列,列表纯量:单个、不可再分的值2.对象key: value 冒号后面要加一个空格也可用 key: {key1: value, key2: value2...原创 2020-02-26 22:54:56 · 668 阅读 · 0 评论 -
《漫画算法 小灰的算法之旅》阅读笔记
声明:本篇博客是博主阅读《漫画算法 小灰的算法之旅》所做的笔记,仅供学习,侵删,严禁转载!文章目录(一)、数据结构一、数组基本操作优缺点二、链表基本操作优缺点三、栈四、队列栈和队列的应用五、散列表/哈希表 hash table写操作读操作扩容六、二叉树二叉树的数组存储二叉树的应用二叉查找树二叉排序树二叉树的遍历1.深度优先遍历2.**广度优先遍历**七、二叉堆八、优先队列(二)、排序算法一、冒泡...原创 2020-01-28 12:26:20 · 1158 阅读 · 0 评论