跳至主要內容
Java Comparable和Comparator的区别

6.10 Comparable和Comparator的区别

在前面学习优先级队列的时候,我们曾提到过 Comparable和Comparator,那这篇继续以面试官的角度去切入,一起来看。

那天,小二去马蜂窝面试,面试官老王一上来就甩给了他一道面试题:请问Comparable和Comparator有什么区别?小二差点笑出声,因为三年前,也就是 2021 年,他在《二哥的Java进阶之路》上看到过这题😆。


沉默王二大约 6 分钟Java核心集合框架(容器)
Java 泛型深入解析:理解泛型原理与实际应用方法

6.13 Java泛型,深入解析

“二哥,为什么要设计泛型啊?”三妹开门见山地问。

“三妹啊,听哥慢慢给你讲啊。”我说。

Java 在 1.5 时增加了泛型机制,据说专家们为此花费了 5 年左右的时间(听起来是相当不容易)。有了泛型之后,尤其是对集合类的使用,就变得更规范了。

看下面这段简单的代码。

ArrayList<String> list = new ArrayList<String>();
list.add("沉默王二");
String str = list.get(0);

沉默王二大约 14 分钟Java核心Java重要知识点
栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈栈

6.4 栈Stack

讲真,Stack 这个类在 Java 应用中并不常用,但栈这个数据结构在整个计算机体系中却十分重要。所以我们还是放到集合框架里来讲一讲。

栈(stack),有些地方喜欢称呼它为堆栈,我就很不喜欢,很容易和 heap(堆)搞混,尤其是对于新手来说,简直就是虐心。

栈数据结构

栈是一种非常有用的数据结构,它就像一摞盘子,第一个放在最下面,第二个放在第一个上面,第三个放在第二个上面,最后一个放在最上面。


沉默王二大约 7 分钟Java核心集合框架(容器)
阿里开源的 Java 诊断神器 Arthas

第十六节:JVM 性能监控之 Arthas 篇

Arthas 是阿里开源的一款线上 Java 诊断神器,通过全局的视角可以查看应用程序的内存、GC、线程等状态信息,并且能够在不修改代码的情况下,对业务问题进行诊断,包括查看方法的参数调用、执行时间、异常堆栈等信息,大大提升了生产环境中问题排查的效率。

Arthas 的官方网站是 https://arthas.aliyun.com/doc/,目前最新的版本是 3.7.2。


沉默王二大约 7 分钟Java核心Java虚拟机
JVM 性能监控工具之可视化篇

第十五节:JVM 性能监控之可视化篇

前面我们已经讲了 JVM 性能监控工具之命令行篇,本篇我们来介绍一些可视化的性能监控工具,包括 JConsole、VisualVM、Java Mission Control 等,阿里的 Arthas 我们留到后面单独去讲。

可视化工具比命令行工具强大的地方就在于这些工具提供了更直观、更易于理解的性能数据视图,肉眼看上去,脑子就能快速 get 到问题所在,那这篇就来带大家看看这些工具的强大之处。


沉默王二大约 10 分钟Java核心Java虚拟机
JVM 性能监控工具之命令行篇

第十四节:JVM 性能监控之命令行篇

记得 2014 年我在写大宗期货交易平台的时候,遇到了一些棘手的问题,可能是因为我的并发编程知识掌握的不够扎实,导致出现了内存泄漏的问题。

当时排查了好久,用的工具就是 JDK 自带的 jconsole,之前也没有过类似的性能监控经验,就导致在查找问题的时候非常痛苦,至今印象深刻。

那今天我们就从工具篇出发,来看看这些命令行工具的具体使用方法,以及如何排查问题。

JDK 性能监控工具

除了我们的老朋友 java 和 javac 命令,在 Java 的 bin 目录下,还有很多其他的命令行工具,比如说用于性能监控的 jps、jstat、jinfo、jmap、jstack、jcmd 等等。


沉默王二大约 16 分钟Java核心Java虚拟机
Java 语法基础练习题

3.8 Java语法基础练习题

翻转整数

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321

沉默王二大约 3 分钟Java核心Java语法基础
深入理解 JVM 的垃圾收集器:CMS、G1、ZGC

第十一节:垃圾收集器

垃圾回收对于 Java 党来说,是一个绕不开的话题,工作中涉及到的调优工作也经常围绕着垃圾回收器展开。面对不同的业务场景,往往需要不同的垃圾收集器才能保证 GC 性能,因此,对于面大厂或者有远大志向的球友可以卷一下垃圾收集器。

就目前来说,JVM 的垃圾收集器主要分为两大类:分代收集器分区收集器,分代收集器的代表是 CMS,分区收集器的代表是 G1 和 ZGC,下面我们来看看这两大类的垃圾收集器。


沉默王二大约 16 分钟Java核心Java虚拟机
《二哥的JVM进阶之路》小册简介,GitHub星标10000+,共计 10 万余字,100+张手绘图

第零节:小册简介

大家好,我是二哥呀。

来介绍一下《二哥的 JVM 进阶之路》小册吧。小册主要围绕着 Java 中的 JVM 展开,一共 19 个小节,10 万+字,手绘图 100+张,耗费了巨大的心血,以下是小册的个人信息。

  • 小册名字:二哥的JVM进阶之路
  • 小册作者:沉默王二
  • 小册品质:该小册的内容来源于二哥在 GitHub 上开源的知识库《Java 进阶之路》,能在 GitHub 取得 10000+ star 可以说品质是有目共睹,尤其是国内还有不少小伙伴在访问 GitHub 的时候很不顺利。
  • 小册初衷:面试过小伙伴应该感受比较深,JVM 在 Java 岗的面试中占比挺大,尤其是去一些知名公司的话,像类加载机制、垃圾回收机制、Java运行时数据区、JIT 及时编译、字节码指令、性能优化等内容,都是面试中经常被考察的内容。另外,工作一两年后的初级程序员,如果想进阶为高级程序员,JVM的内容也是完全绕不开的,二哥之所以花大力气整理《JVM小册》的原因也在于此,就是希望能帮助大家轻松且深刻地掌握JVM方面的知识。
  • 小册简介:主要针对JVM进行讲解,包括JVM是什么、运行时数据区、类加载机制、垃圾回收、性能优化的面试题等,内容涵盖了 Java 虚拟机的方方面面,是一份非常适合 JVM 的学习资料。
  • 小册说明:小册算是《二哥的 Java 进阶之路基础篇》、《二哥的并发编程小册》的姐妹篇,可通过 GitHub 阅读或者二哥的网站在线阅读,同时提供 PDF 版本,10 万+字,手绘图 100+张,有亮白版、暗黑版和 epub 三个版本,前后耗费 2 个多月的时间,很不容易,希望你能好好珍惜。

沉默王二大约 10 分钟Java核心Java概述
2
3
4
5
...
17