随笔分类 - java
摘要:实现多线程的方式(runnable与Thread) Thread 和 Runnable 的相同点:都是“多线程的实现方式”。 Thread 和 Runnable 的不同点: Thread 是类,而Runnable是接口;Thread本身是实现了Runnable接口的类。我们知道“一个类只能有一个父类
阅读全文
posted @ 2021-06-08 19:53
弱水三千12138
摘要:线程的5种状态 线程共包括以下5种状态(java中定义的) 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。 2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的sta
阅读全文
posted @ 2021-06-07 22:46
弱水三千12138
摘要:Google的Java常用类库 Guava https://www.oschina.net/p/guava star:18414;fork:4327 Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库。
阅读全文
posted @ 2021-05-21 07:33
弱水三千12138
摘要:Arthas Arthas旨在帮助开发人员解决Java应用程序的生产问题,无需修改代码或重新启动服务器。 有了Arthas,你就可以在不重新启动JVM或需要额外的代码更改的情况下实时地对问题进行故障排除。 https://github.com/alibaba/arthas
阅读全文
posted @ 2021-05-19 08:03
弱水三千12138
摘要:一)成员内部类 成员内部类也是最普通的内部类,它是外围类的一个成员,所以他是可以无限制的访问外围类的所有成员属性和方法, 尽管是private的,但是外围类要访问内部类的成员属性和方法则需要通过内部类实例来访问。 public class OuterClass { private String st
阅读全文
posted @ 2021-04-19 11:36
弱水三千12138
摘要:Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢? Java中有 8 种基本数据类型,分别为: 6 种数字类型 :byte、short、int、long、float、double 1 种字符类型:char 1 种布尔型:boolean。 这八种基本类型都有对应的包装类分
阅读全文
posted @ 2021-04-08 09:05
弱水三千12138
摘要:字符串常量池 Java 中字符串对象创建有两种形式, 一种为字面量形式,如 String str = "abc";,另一种就是使用 new 这种标准的构造对象的方法,如 String str = new String("abc");, 这两种方式我们在代码编写时都经常使用,尤其是字面量的方式。然而这
阅读全文
posted @ 2021-04-07 20:04
弱水三千12138
摘要:ConcurrentHashMap 和 Hashtable 的区别 底层数据结构: JDK1.7 的 ConcurrentHashMap 底层采用 分段的数组+链表 实现,JDK1.8 采用的数据结构跟 HashMap1.8 的结构一样,数组+链表/红黑二叉树。Hashtable 和 JDK1.8
阅读全文
posted @ 2021-04-07 09:04
弱水三千12138
摘要:参考: comparable 和 Comparator 的区别 comparable 和 Comparator 的区别 comparable 接口实际上是出自java.lang包 它有一个 compareTo(Object obj)方法用来排序 comparator接口实际上是出自 java.uti
阅读全文
posted @ 2021-04-06 09:52
弱水三千12138
摘要:垃圾回收机制 背景知识 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导致内存溢出,所以对内存资源的管理是非常重要了。 Java语言的垃圾回收 为了让程序员更专注于代码的实现,而不用过多的考虑内存释放的问题,所以,在Java语言中,有了自动的垃圾回收机制,也
阅读全文
posted @ 2021-03-05 07:47
弱水三千12138
摘要:面试题:如何减少长时间的 GC 停顿? 垃圾回收是非常必要的,但是如果处理不好,它会成为性能杀手。采取以下步骤以确保 GC 停顿时间最少且最短。 长时间的 GC 停顿对应用程序是不利的,它会影响服务的 SLA,进而导致糟糕的用户体验,并对核心应用程序的服务造成严重损害。因此,在本文中,我列出了导致长
阅读全文
posted @ 2021-02-28 22:21
弱水三千12138
摘要:线上四台机器同一时间全部 OOM,到底发生了什么? 案发现场 昨天晚上突然短信收到 APM (即 Application Performance Management 的简称,我们内部自己搭建了这样一套系统来对应用的性能、可靠性进行线上的监控和预警的一种机制)大量告警 画外音: 监控是一种非常重要的
阅读全文
posted @ 2021-02-28 17:52
弱水三千12138
摘要:1. GC 基础原理 GC 调优目标 大多数情况下对 Java 程序进行 GC 调优,主要关注两个目标: 响应速度(Responsiveness):响应速度指程序或系统对一个请求的响应有多迅速 比如,用户订单查询响应时间,对响应速度要求很高的系统,较大的停顿时间是不可接受的。调优的重点是在短的时间内
阅读全文
posted @ 2021-02-26 20:39
弱水三千12138
摘要:为什么要分代? 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类
阅读全文
posted @ 2021-02-26 20:20
弱水三千12138
摘要:1.verbose:gc 表示,启动jvm的时候,输出jvm里面的gc信息。格式如下: [Full GC 178K->99K(1984K), 0.0253877 secs] 解读 :Full GC 就表示执行了一次Full GC的操作,178K 和99K 就表示执行GC前内存容量和执行GC后的内存容
阅读全文
posted @ 2021-02-26 19:43
弱水三千12138
摘要:java虚拟机栈介绍 对于每一个线程,JVM 都会在线程被创建的时候,创建一个单独的栈。 也就是说虚拟机栈的生命周期和线程是一致,并且是线程私有的。除了 Native 方法以外,Java 方法都是通过 Java 虚拟机栈来实现调用和执行过程的(需要程序技术器、堆、元空间内数据的配合)。 所以 Jav
阅读全文
posted @ 2021-02-26 19:29
弱水三千12138
摘要:堆区的介绍 我们先来说堆。堆是 OOM 故障最主要的发生区域。它是内存区域中最大的一块区域,被所有线程共享,存储着几乎所有的实例对象、数组。 所有的对象实例以及数组都要在堆上分配,但是随着 JIT 编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都
阅读全文
posted @ 2021-02-26 19:12
弱水三千12138
摘要:强引用 强引用是最普遍的一种引用,我们写的代码,99.9999%都是强引用 在实际的开发中,看到有一些对象被手动赋值为NULL,很大可能就是为了“特意提醒”JVM这块资源可以进行垃圾回收了 软引用 SoftReference<Student>studentSoftReference=new Soft
阅读全文
posted @ 2021-02-26 08:43
弱水三千12138
摘要:综合 程序计数器 程序计数器就相当于身份证一样,由于JVM也有自己的CPU,在执行多线程程序的时候,通过时间片轮转的方式,根据程序计数器来调度线程的执行。 程序计数器( Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 在
阅读全文
posted @ 2021-02-24 08:07
弱水三千12138
摘要:面试官问:Java序列化和反序列化为什么要实现Serializable接口 什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。 为什么我们公司强制弃坑Fastjson了?主推Jackson 再见,FastJson... Java 几种常用 JSON 库性能比较 色谈Java序
阅读全文
posted @ 2021-02-21 12:00
弱水三千12138

浙公网安备 33010602011771号