All
扑克牌中的顺子-剑指Offer LeetCode61
2022 年 03 月 23 日
题目描述 链接: https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/
从若干幅扑克牌中随机抽5张牌, 判断是不是一个顺子, 即这五张牌是不是连续的. 2~10为数字本身, A为1, J为11, Q为12, K为13. 大小王为0, 并且可以看出任意数字
示例1:
输入: [1,2,3,4,5]
输出: true
示例2:
输入: [0,0,1,2,5]
输出: true. 由于两个0可以代替为3和4, 所以可以构成顺子
GitTag
2022 年 03 月 09 日
Java Class Loader
2021 年 10 月 14 日
Class Loader 站在Java虚拟机的角度来看,只存在两种不同的类加载器:
一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分;
另外一种就是其他所有的类加载器,这些类加载器都由Java语言实现,独立存在于虚拟机外部,并且全都继承自抽象类java.lang.ClassLoader。
站在Java开发人员的角度来看,类加载器就应当划分得更细致一些。自JDK 1.2以来,Java一直保 持着三层类加载器、双亲委派的类加载架构,尽管这套架构在Java模块化系统出现后有了一些调整变动,但依然未改变其主体结构。
Java类加载机制
2021 年 10 月 10 日
类加载机制 定义 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最 终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。
类的生命周期 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类型的加载过程必须按 照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始, 这是为了支持Java语言的运行时绑定特性(也称为动态绑定或晚期绑定)。
GC-经典垃圾收集器
2021 年 09 月 25 日
经典垃圾收集器 Serial收集器 Serial收集器是最基础、历史最悠久的收集器. 这个收集器是一个单线程工作的收集器, 在他进行垃圾收集时, 必须暂停其他所有工作线程, 直到它收集结束.
它是HotSpot虚拟机运行在客户端模式下的默认新生代收集器, 它简单高效, 额外内存消耗最少.
GC-垃圾回收算法
2021 年 09 月 20 日
垃圾回收算法 从如何判定对象消亡的角度出发, 垃圾收集算法可以划分为“引用计数器垃圾收集”(Reference Counting GC)和“追踪式垃圾收集”(Tracing GC)两大类. 这两类也常被称作“直接垃圾收集“和”间接垃圾收集“. 但是引用计数式垃圾收集算法在主流Java虚拟机中均为涉及.
GC-垃圾收集器
2021 年 09 月 15 日
垃圾收集器 垃圾收集需要完成三件事情:
哪些地方的内存需要回收? 如何判断能否回收? 如何回收?
Java OOM异常分析
2021 年 09 月 10 日
Java OOM异常分析 OOM异常分析 Java堆溢出 Java堆内存的OutOfMemoryError异常是实际应用中最常见的内存溢出异常情况. 出现Java堆内存溢出时, 异常堆栈信息“java.lang.OutOfMemoryError”会跟随进一步提示“Java heap space“
可能的原因有:
内存泄漏
内存溢出
需要从代码上检查是否存在某些对象生命周期过长、持有状态时间过长、存储结构设计不合理的情况, 尽量减少程序运行期的内存消耗
要处理这个内存区域的异常, 常规的处理方法是通过内存映像分析工具对Dump出来的堆转储快照进行分析.
JVM中Java对象的创建、内存布局、访问定位
2021 年 09 月 01 日
Java对象创建 当Java虚拟机遇到一条字节码new指令时, 首先将去检查这个指令的参数能否在常量池中定位到一个类的符号引用, 并且检查这个符号引用代表的类是否被加载, 解析和初始化. 如果没有则会先执行相应的类加载过程.
对象的创建过程大致分为以下四步:
为新生对象分配内存 虚拟机将分配到的内存空间(不包括对象头)都初始化为零值 对对象进行必要的设置, 例如这个对象是哪个类的实例, 如果找到这个类的元数据信息, 对象的GC分代年龄等, 这些信息存放在对象的对象头之上 执行Class文件额init方法
JVM运行时数据区域
2021 年 08 月 28 日
JVM运行时数据区域 Java虚拟机所管理的内存包括以下几个运行时数据区域: