java核心知识
java核心知识相关的介绍,包含异常、并发编程、注解、泛型、反射、jvm、gc、jdk8新特性、序列化以及jdk中重要源码的分析解读
applehub
这个作者很懒,什么都没留下…
展开
-
记录一次springboot自动任务线上突然不执行问题排查过程
其实问题排查过程不是很复杂,只是我们项目要远程,并且服务器是win,连jdk自带的一些工具都没有,arthas在windowns上兼容性也不好,浪费了很多时间。1、简述 首先,springboot的自动任务注解@EnableScheduling和@Scheduled底层原理是默认是单线程的,你也可以配置用自定义的线程池。所以,线上有自动任务突然不执行,肯定是有自动任务线程发生阻塞或者死锁,导致卡住了,其他自动任务都无法执行,对外呈现一个程序假死的情况。 首先简...原创 2020-06-18 18:36:07 · 2693 阅读 · 2 评论 -
JDK工具:jps/jmap/jstack等
在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能代码是在tools类库中实现的。命令行工具的好处是:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程telnet到服务器上都会受到限制。而借助tools.jar类库里面的接口,我们可以直接在应用程序中实现功能强大的监控分析功能。...转载 2020-06-11 17:20:41 · 642 阅读 · 0 评论 -
【并发】深入理解synchronized底层实现原理
引言我们都知道数据的同步需要加锁,在JAVA领域,最常用的是使用synchronized关键字,那么synchronized关键字在底层是如何实现同步的呢?synchronized的使用synchronized的使用方式有如下几种:synchronized 加在代码块中1public class SynchronizedDemo {23 public void add(Ob...原创 2019-09-30 12:01:46 · 446 阅读 · 0 评论 -
【JVM】 JVM的初步认识
1. 什么是JVM与JVM的初次见面,是在我们Java SE的开始,认识Java跨平台原理的时候.时隔多日,我们先来回顾一下.Java的广告语是,"编写一次,到处运行",而它凭借的就是JVM(Java Virtual Machine).而对于不同的平台,Windows,Linux,Mac OS等,有具体不同的JVM版本.这些JVM屏蔽了平台的不同,提供了统一的运行环境,让Java代码无需考...原创 2019-09-30 11:58:55 · 286 阅读 · 0 评论 -
【反射】java反射机制的核心原理
一、java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection):1、Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟机实现了平台无关性。2、Java垃圾回收(Garbage Collection):自动释放不...原创 2019-09-30 11:57:31 · 329 阅读 · 0 评论 -
【JVM】浅谈ClassLoader
ClassLoader 做什么的?顾名思义,它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流,字节码的本质就是一个字节数组 []byte,它有特定的复杂的内部格式。有很多字节码加密技术就是依靠定制 ClassLoa...转载 2019-09-30 11:49:08 · 722 阅读 · 0 评论 -
【注解】浅谈java注解
前言:Annotation中文释义注解之意。Java注解用于为Java代码提供元数据。元数据是指用来描述数据的数据,通俗一点,就是描述代码间关系,或者代码与其它资源(例如数据库表)之间内在联系的数据。在一些技术框架中,如Struts、hibernate就不知不觉用到了元数据。对于Struts来说,元数据指的是struts-config.xml;对hibernate来说就是hbm文件。以上阐...转载 2019-09-30 11:46:57 · 236 阅读 · 0 评论 -
【序列化】浅谈java序列化
一、基本概念1、什么是序列化和反序列化序列化是指将Java对象转换为字节序列的过程,而反序列化则是将字节序列转换为Java对象的过程。Java对象序列化是将实现了Serializable接口的对象转换成一个字节序列,能够通过网络传输、文件存储等方式传输 ,传输过程中却不必担心数据在不同机器、不同环境下发生改变,也不必关心字节的顺序或其他任何细节,并能够在以后将这个字节序列完全恢复为原来...原创 2019-09-30 11:44:34 · 291 阅读 · 0 评论 -
【并发】synchroized在1,6中有哪些优化?
前言在 JDK 1.6 之前,synchronized 性能令人担忧,但是 1.6 之后,JVM 团队针对 synchronized 做了很多的优化,让 synchroized 在性能层面相比较 ReentrantLock 不相上下。那么,JVM 团队做了哪些优化呢?首先说,怎么才能优化?我们知道,“锁” 其实是互斥同步的具体实现,而互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程...原创 2019-09-29 20:45:04 · 407 阅读 · 0 评论 -
【并发】Synchronized详解
1. synchronized简介在学习知识前,我们先来看一个现象:public class SynchronizedDemo implements Runnable { private static int count = 0; public static void main(String[] args) { for (int i = 0; i <...转载 2018-12-04 15:07:50 · 391 阅读 · 0 评论 -
【JVM】JVM的初步认识
1. 什么是JVM与JVM的初次见面,是在我们Java SE的开始,认识Java跨平台原理的时候.时隔多日,我们先来回顾一下.Java的广告语是,"编写一次,到处运行",而它凭借的就是JVM(Java Virtual Machine).而对于不同的平台,Windows,Linux,Mac OS等,有具体不同的JVM版本.这些JVM屏蔽了平台的不同,提供了统一的运行环境,让Java代码无需考...翻译 2018-12-04 14:25:30 · 385 阅读 · 0 评论 -
【反射】java反射机制的核心原理
一、java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection):1、Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟机实现了平台无关性。2、Java垃圾回收(Garbage Collection):自动释放不...翻译 2018-12-04 14:41:43 · 244 阅读 · 0 评论