草庐IT

《JVM调优》- Jstack指令详解

概述jstack命令用于打印指定Java进程、核心文件或远程调试服务器的Java线程堆栈的跟踪信息。换句话说,就是jstack能生成JVM当前时刻的线程快照,以此来定位线程出现长时间停顿的原因,最常见应用场景为:查看线程间死锁分析CPU过高原因针对这两个场景,后续会有实战案例~常用指令jstack[-option]pid>//打印某个进程的堆栈信息其他常用指令如下:指令说明-F当jstack指令无响应时,强制打印一个堆栈信息-m打印包含Java和C/C++帧的混合模式堆栈跟踪-l打印关于锁的其他信息,比如拥有java.util.concurrentownable同步器的列表-h/-help打印

Java多态与重写

系列文章目录Java继承与组合你知道为什么会划分数据类型吗?—JAVA数据类型与变量10>20&&10/0==0等于串联小灯泡?—JAVA运算符你真的知道怎样用java敲出HelloWorld吗?—初识JAVA目录系列文章目录1.多态1.1为什么会有多态1.2多态的概念1.3重写1.3.1什么是重写1.3.2方法重写的规则:1.3.3不能进行重写的情况1.4重写和重载的区别1.5多态实现条件1.6静态绑定与动态绑定2.向上转型和向下转型2.1向上转型2.2向下转型2.3重写、向上转型和动态绑定共同表现为多态3.多态的优缺点3.1多态的优势3.2多态的缺陷4.避免在构造方法中调用重写的方法1.多

Java多态与重写

系列文章目录Java继承与组合你知道为什么会划分数据类型吗?—JAVA数据类型与变量10>20&&10/0==0等于串联小灯泡?—JAVA运算符你真的知道怎样用java敲出HelloWorld吗?—初识JAVA目录系列文章目录1.多态1.1为什么会有多态1.2多态的概念1.3重写1.3.1什么是重写1.3.2方法重写的规则:1.3.3不能进行重写的情况1.4重写和重载的区别1.5多态实现条件1.6静态绑定与动态绑定2.向上转型和向下转型2.1向上转型2.2向下转型2.3重写、向上转型和动态绑定共同表现为多态3.多态的优缺点3.1多态的优势3.2多态的缺陷4.避免在构造方法中调用重写的方法1.多

【javaEE】阻塞队列、定时器、线程池

目录🌴一、阻塞队列1.概念2.生产者消费者模型3.阻塞队列的实现🏹二、定时器1.引出定时器2.定时器的实现🔥三、线程池1.引出线程池2.ThreadPoolExecutor构造方法3.标准数据库的4种拒绝策略【经典面试题】【重点掌握】4.线程池的实现🌴一、阻塞队列1.概念✨对于队列,首先我们想到 队列——先进先出——最朴素,最简单的队列      优先级队列——PriorityQueue——堆阻塞队列——带有阻塞特性——先进先出1.如果队列空,尝试出队列,就会阻塞等待,等待到队列不为空为止2.如果队列满,尝试入队列,也会阻塞等待,等待到队列不为满为止在Java标准库中内置了阻塞队列 1️⃣Bl

【javaEE】阻塞队列、定时器、线程池

目录🌴一、阻塞队列1.概念2.生产者消费者模型3.阻塞队列的实现🏹二、定时器1.引出定时器2.定时器的实现🔥三、线程池1.引出线程池2.ThreadPoolExecutor构造方法3.标准数据库的4种拒绝策略【经典面试题】【重点掌握】4.线程池的实现🌴一、阻塞队列1.概念✨对于队列,首先我们想到 队列——先进先出——最朴素,最简单的队列      优先级队列——PriorityQueue——堆阻塞队列——带有阻塞特性——先进先出1.如果队列空,尝试出队列,就会阻塞等待,等待到队列不为空为止2.如果队列满,尝试入队列,也会阻塞等待,等待到队列不为满为止在Java标准库中内置了阻塞队列 1️⃣Bl

JVM杂记

java之父:高斯林官方文档:https://docs.oracle.com/javase/specs/index.html官方在线PDF:https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf--->深入理解java虚拟机javaSE8:https://docs.oracle.com/javase/8/docs/硬件,软件,指令:高级语言-汇编语言-机器指令-CPUjava程序-字节码文件-JVM(win版,Linux版,Mac版)-操作系统-硬件虚拟机是虚拟机规范的一个实现,Oracle主推HotSpotJVM的位置: 一些关键事件:

泛型擦除机制

文章目录一、泛型的引入二、基本数据类型和对应包装类三、初使用泛型四、泛型的编译1擦除机制2为什么不能实例化泛型类型数组?3类型擦除,一定是把T变为Object吗?一、泛型的引入我们想求两个数的最大值publicstaticvoidfunc(intn,intm){System.out.println(n>m?n:m);}publicstaticvoidmain(String[]args){func(2,3);func(1.5,2.5);}但我们方法就写死了,只能求整形的最大值,那我们要求两个浮点数的呢,两个对象的呢?泛型的出现:集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型

泛型擦除机制

文章目录一、泛型的引入二、基本数据类型和对应包装类三、初使用泛型四、泛型的编译1擦除机制2为什么不能实例化泛型类型数组?3类型擦除,一定是把T变为Object吗?一、泛型的引入我们想求两个数的最大值publicstaticvoidfunc(intn,intm){System.out.println(n>m?n:m);}publicstaticvoidmain(String[]args){func(2,3);func(1.5,2.5);}但我们方法就写死了,只能求整形的最大值,那我们要求两个浮点数的呢,两个对象的呢?泛型的出现:集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型

JAVA 取出Map元素值 的三种方法

JAVA取出Map元素值的三种方法:(1)方法一:通过Map的keySet()方法获取key的set,迭代set元素(每个元素调再用Map的get()方法);(2)方法二:通过Map的entrySet()方法获取Entry的set,迭代set元素(每个元素再调用Entry的getValue()方法)(3)方法三:通过Map的values()直接获取value的集合,迭代集合元素即可;importjava.util.Collection;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map.Entry;impor

JAVA 取出Map元素值 的三种方法

JAVA取出Map元素值的三种方法:(1)方法一:通过Map的keySet()方法获取key的set,迭代set元素(每个元素调再用Map的get()方法);(2)方法二:通过Map的entrySet()方法获取Entry的set,迭代set元素(每个元素再调用Entry的getValue()方法)(3)方法三:通过Map的values()直接获取value的集合,迭代集合元素即可;importjava.util.Collection;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map.Entry;impor