永久代和元空间都是 HotSpot 虚拟机中的概念,HotSpot 虚拟机是 Sun JDK 和 Open JDK 中自带的虚拟机,也是目前使用范围最广泛的 Java 虚拟机,当我们提到虚拟机时,大概率指的就是 HotSpot 虚拟机。 但从《Java 虚拟机规范》的层面来说,并没有所谓...
文件操作是每个项目中必备的一个模块,Hutool中的FileUtil类库封装了大多数文件操作,非常方便,今天给大家分享一下具体的使用示例。 1、pom.xml 导入依赖包 <dependency> <groupId>c...
线程竞争的资源可以是:锁、网络连接、通知事件,磁盘、带宽,以及一切可以被称作“资源”的东西。 在程序执行的时候,难免会遇到死锁的情况。 下面介绍一下如何排查Java中的死锁线程。 先来个死锁的例子: import java.util.concurrent.T...
一、问题 最近在写代码,有两个属性很相近的类,其中80%的属性(字段)都是一样的,剩下的才是各自不一样的,在设计的时候,采用了继承的方式,抽象除了一个父类,大概如下, 有FirstChild和SecondChild两个类,因为其中的属性name、code等是相同的...
其实异步的I/O的难点与不适,在NodeJs、甚至JavaScript中有着很具体的体现。 异常处理难 在处理异常时,我们经常使用try/catch/final的语句块进行异常捕获,但这对于异步编程不太实用。我们来看书中的一个经典示例。var async = function(callba...
什么是零拷贝 零拷贝是指计算机在执行IO操作的时候, CPU不需要将数据从一个存储区复制到另一个存储区, 进而减少上下文切换以及 CPU 拷贝的时间, 这是一种IO操作优化技术 零拷贝不是没有拷贝数据, 而是减少用户态, 内核态的切换次数 和 CPU拷贝次...
一、对象头、Mark Word、monitor、synchronized怎么关联起来 (1)首先java里面每个对象JVM底层都会为它创建一个监视器monitor,这个是JVM层次为我们保证的。这个监视器就类似一个锁,哪个线程持有这个monitor的操作权,就相当于获取到了锁 (2)...
前言 大家项目中如果有生成随机数的需求,我想大多都会选择使用Random来实现,它内部使用了CAS来实现。实际上,JDK1.7之后,提供了另外一个生成随机数的类ThreadLocalRandom,那么他们二者之间的性能是怎么样的呢? Random的使用 Random类是J...
有些时候我们需要把网站页面变成黑白色或灰色,特别是对于一些需要悼念的日子,以及一些影响力很大的伟人逝世或纪念日的时候,都会让网站的全部网页变成灰色(黑白色),以表示我们对逝者或者英雄的缅怀和悼念。 当大家看到全站的内容都变成了灰色,...
如果问你在日常开发中用到的最多的一个 Java? 类是什么,阿粉敢打赌绝对是 String.class?。说到 String? 大家都知道 String 是一个不可变的类;虽然用的很多,那不知道小伙伴们有没有想过怎么样创建一个自己的不可变的类呢?这篇文章阿粉就带大家来实践...
日常工作中 Map 绝对是我们 Java 程序员高频使用的一种数据结构,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,你经常使用的是哪一种? 通过 entrySet 来遍历 1、通过 for 和 map.entrySet() 来遍历 第一种方式是采用 for 和 M...
了解如何将数十种常见的图像文件类型(包括但不限于 PNG 和 JPG)分别转换为 GIF 和 WebP 格式。 如果我们准备在线为特定目的重新格式化图像,我们选择的新格式需要准确反映我们设想的用例。否则,我们会在不经意间扼杀我们自己的效率,最重要的是,冒...
这篇文章的内容将讲解以下知识点: for循环和while循环区别 ①for循环和while循环区别 · for(初始动作;条件;每轮的动作){} · for中的每一个表达式都是可以省略的 · for(条件;)==while(条件) 案例:阶乘 写...
最近工作需要研究了一会别人写的库,其中充满着各种"回调函数",因此把自己理解给记录下来,存档。 首先我们来看看回调函数 这个概念的具体由来,百度百科的示义如下: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为...
场景引入,问题初现 很多同学出去面试,都会被问到一个常见的问题:说说你对volatile的理解? 不少初出茅庐的同学可能会有点措手不及,因为可能就是之前没关注过这个。但是网上百度一下呢,不少文章写的很好,但是理论扎的太深,文字太多,图太少...
一、前言 Trie 的历史 字典树 Trie 这个词来自于 retrieval,于 1912 年,Axel Thue 首次抽象地描述了一组字符串数据结构的存放方式为 Trie 的想法。这个想法于 1960 年由 Edward Fredkin 独立描述,并创造了 Trie 一词。你看看,多少程序员为了...
在日常开发的过程中我们经常会需要调用第三方组件或者数据库,有的时候可能会因为网络抖动或者下游服务抖动,导致我们某次查询失败。 这种时候我们往往就会进行重试,当重试几次后依旧还是失败的话才会向上抛出异常进行失败。接下来阿粉就给大家演示...
一、前言 堆的历史 堆的数据结构有很多种体现形式,包括;2-3堆、B堆、斐波那契堆,而在 Java API 中最常用的是用于实现优先队列的二叉堆,它是由 JWJ Williams 在 1964 年引入的,作为堆排序算法的数据结构。另外在 Dijkstra 算法等几种高效的图...
前言 在之前的文章中,讲到了面向的 3 大特性(封装、继承、多态)和面向对象设计的 5 大原则(SRP、OCP、LSP、DIP、ISP)。此外,我们还讲了如何创建一个类,并且在创建类后如何构造一个对象。然后还介绍了类中的属性和方法,并对构造方法和引用也...
一、概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源。 在本教程中,我们将了解如何在运行 Java 进程的容器中设置 JVM 参数。本文将重点关注常见的 -Xmx 和-Xms 标志。 另外,我们还将研究使用某些 Java 版...