自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序那些事

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在程序那些事!

  • 博客(37)
  • 资源 (27)
  • 收藏
  • 关注

原创 JVM系列之:通过一个例子分析JIT的汇编代码

文章目录简介一个简单的例子使用jitWatch进行分析分析字节码分析汇编代码总结简介我们知道JIT会在JVM运行过程中,对热点代码进行优化,传说自然是传说,今天我们通过一个简单的例子来具体分析一下JIT到底是怎么进行优化的。一个简单的例子说干就干,我们先准备一个非常简单的例子:public class AddTest { static int a = 1; static int b = 2; static int c = 3; public static void

2020-07-31 10:09:34 9156 4

原创 看动画学算法之:双向队列dequeue

文章目录简介双向队列的实现双向队列的数组实现双向队列的动态数组实现双向队列的链表实现双向链表的时间复杂度简介dequeue指的是双向队列,可以分别从队列的头部插入和获取数据,也可以从队列的尾部插入和获取数据。本文将会介绍一下怎么创建dequeue和dequeue的一些基本操作。双向队列的实现和普通队列项目,双向队列可以分别在头部和尾部进行插入和删除工作,所以一个dequeue需要实现这4个方法:insertFront(): 从dequeue头部插入数据insertLast(): 从deque

2020-07-30 15:04:15 21088 3

原创 JVM详解之:HotSpot VM中的Intrinsic methods

文章目录简介什么是Intrinsic Methods内置方法的特点多样性兼容性java语义的扩展Hotspot VM中的内置方法intrinsic方法和内联方法intrinsic方法的实现Graal总结简介内置方法是什么呢?它和inline method有什么关系呢?内置方法是怎么实现的呢?所有的问题都可以在本文找到答案。什么是Intrinsic Methods什么是内置方法呢?维基百科给出的定义是这样的:在计算机软件中,按照编译器理论,固有方法(或内置方法)是可在给定编程语言中使用的方法,该编

2020-07-30 08:14:06 20079 2

原创 看动画学算法之:队列queue

文章目录简介队列的实现队列的数组实现队列的动态数组实现队列的链表实现队列的时间复杂度简介队列Queue是一个非常常见的数据结构,所谓队列就是先进先出的序列结构。想象一下我们日常的排队买票,只能向队尾插入数据,然后从队头取数据。在大型项目中常用的消息中间件就是一个队列的非常好的实现。队列的实现一个队列需要一个enQueue入队列操作和一个DeQueue操作,当然还可以有一些辅助操作,比如isEmpty判断队列是否为空,isFull判断队列是否满员等等。为了实现在队列头和队列尾进行方便的操作,我们

2020-07-29 14:11:30 20765 3

原创 JVM详解之:汇编角度理解本地变量的生命周期

文章目录简介本地变量的生命周期举例说明优化的原因总结简介java方法中定义的变量,它的生命周期是什么样的呢?是不是一定要等到方法结束,这个创建的对象才会被回收呢?带着这个问题我们来看一下今天的这篇文章。本地变量的生命周期在类中,变量类型有类变量,成员变量和本地变量。本地变量指的是定义在方法中的变量,如果我们在方法中定义了一个变量,那么这个变量的生命周期是怎么样的呢?举个例子:public void test(){ Object object = new Object(); d

2020-07-29 09:09:20 21213 2

原创 看动画学算法之:栈stack

文章目录简介栈的构成栈的实现使用数组来实现栈使用动态数组来实现栈使用链表来实现简介栈应该是一种非常简单并且非常有用的数据结构了。栈的特点就是先进后出FILO或者后进先出LIFO。实际上很多虚拟机的结构都是栈。因为栈在实现函数调用中非常的有效。今天我们一起来看学习一下栈的结构和用法。栈的构成栈一种有序的线性表,只能在一端进行插入或者删除操作。这一端就叫做top端。定义一个栈,我们需要实现两种功能,一种是push也就是入栈,一种是pop也就是出栈。当然我们也可以定义一些其他的辅助功能,比如top

2020-07-28 14:05:04 21072 10

原创 JVM系列之:String.intern的性能

文章目录简介String.intern和G1字符串去重的区别String.intern的性能举个例子简介String对象有个特殊的StringTable字符串常量池,为了减少Heap中生成的字符串的数量,推荐尽量直接使用String Table中的字符串常量池中的元素。那么String.intern的性能怎么样呢?我们一起来看一下。String.intern和G1字符串去重的区别之前我们提到了,String.intern方法会返回字符串常量池中的字符串对象的引用。而G1垃圾回收器的字符串去重的功

2020-07-28 08:39:24 20169 2

原创 看动画学算法之:doublyLinkedList

文章目录简介doublyLinkedList的构建doublyLinkedList的操作头部插入尾部插入插入给定的位置删除指定位置的节点简介今天我们来学习一下复杂一点的LinkedList:doublyLinkedList。和LinkedList相比,doublyLinkedList中的节点除了next指向下一个节点之外,还有一个prev之前的一个节点。所以被称为doublyLinkedList。 doublyLinkedList是一个双向链表,我们可以向前或者向后遍历list。今天我们来学习一下d

2020-07-27 13:49:38 20437 1

原创 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载

5万字长文详解介绍Stream和Lambda表达式最佳实践,干货实在太多,最后附上PDF下载,方便大家查阅!

2020-07-27 07:40:16 21266 6

原创 看动画学算法之:linkedList

文章目录简介linkedList的构建linkedList的操作头部插入尾部插入中间插入删除节点简介linkedList应该是一种非常非常简单的数据结构了。节点一个一个的连接起来,就成了linkedList。今天我们使用动画的方法一起来看看linkedList是怎么插入和删除的。linkedList的构建linkedList是由一个一个的节点构成的。而每个节点只需要存储要保存的数据和下一个节点的引用即可。linkedList本身需要一个head节点,所以我们的linkedList可以这样构建:

2020-07-26 11:47:16 20866 2

原创 JVM系列之:String.intern和stringTable

文章目录简介intern简介intern和字符串字面量常量分析intern返回的String对象分析实际的问题G1中的去重功能总结简介StringTable是什么?它和String.intern有什么关系呢?在字符串对象的创建过程中,StringTable有起到了什么作用呢?一切的答案都在本文中,快来看看吧。intern简介intern是String类中的一个native方法,所以它底层是用c++来实现的。感兴趣的同学可以去查看下JVM的源码了解更多的内容。这里我们主要谈一下intern的作用。

2020-07-26 11:25:57 20637 2

原创 看动画学算法之:排序-基数排序

之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过大,使用count排序是不现实的,其时间复杂度会膨胀。而解决大范围的元素排序的办法就是基数排序。

2020-07-25 13:07:35 20297 2

原创 一文了解JDK12 13 14 GC调优秘籍-附PDF下载

想了解JDK12,13,14中的GC调优秘籍吗?想知道这三个版本中JVM有什么新的变化吗?一起来看看这期的GC调优秘籍,因为JDK12,13,14中的GC变化不太大,所以这里一起做个总结,文末附有相应的PDF下载,希望大家能够喜欢。

2020-07-25 12:07:46 20856 2

原创 看动画学算法之:排序-count排序

今天我们介绍一种不需要作比较就能排序的算法:count排序。count排序是一种空间换时间的算法,我们借助一个外部的count数组来统计各个元素出现的次数,从而最终完成排序。

2020-07-24 09:30:49 21158 2

原创 JVM系列之:对象的锁状态和同步

文章目录简介java对象头java中锁状态的变化偏向锁biased locking轻量级锁thin lock重量级锁三种锁状态的不同简介锁和同步是java多线程编程中非常常见的使用场景。为了锁定多线程共享的对象,Java需要提供一定的机制来实现共享对象的锁定,从而保证一次只有一个线程能够作用于共享对象。当第二个线程进入同一个区域的时候,必须等待第一个线程解锁该对象。JVM是怎么做到的呢?为了实现这个功能,java对象又需要具备什么样的结构呢?快来一起看看吧。java对象头Java的锁状态其实可以分

2020-07-24 09:14:07 20763 3

原创 JVM系列之:Contend注解和false-sharing

文章目录简介false-sharing的由来怎么解决?使用JOL分析Contended在JDK9中的问题padded和unpadded性能对比Contended在JDK中的使用总结简介现代CPU为了提升性能都会有自己的缓存结构,而多核CPU为了同时正常工作,引入了MESI,作为CPU缓存之间同步的协议。MESI虽然很好,但是不当的时候用也可能导致性能的退化。到底怎么回事呢?一起来看看吧。false-sharing的由来为了提升处理速度,CPU引入了缓存的概念,我们先看一张CPU缓存的示意图:C

2020-07-23 09:11:24 20822 2

原创 看动画学算法之:排序-快速排序

快速排序也采用的是分而制之的思想。那么快速排序和归并排序的区别在什么地方呢?归并排序是将所有的元素拆分成一个个排好序的数组,然后将这些数组再进行合并。而快速排序虽然也是拆分,但是拆分之后的操作是从数组中选出一个中间节点,然后将数组分成两部分。左边的部分小于中间节点,右边的部分大于中间节点。然后在分别处理左边的数组合右边的数组。

2020-07-22 18:31:38 22399 4

原创 一张PDF了解JDK11 GC调优秘籍-附PDF下载

JDK11相比JDK10,添加了一个新的Source-File Mode,可以直接通过java来运行单个java源文件,而不需要进行编译。同时还提供了新的HTTP API,支持响应性stream。当然上面的都不是重点,重点的是JDK11是一个LTS版本,是继JDK8之后的又一个LTS版本,也可能是大家日后使用的最多的一个版本。所以JDK11的JVM参数吸收了JDK9,JDK10的新特性和改动,并在他们的基础上进行了微调。同样在文章最后,我也将JDK11的GC调优秘籍做成了一张PDF,欢迎大家下载

2020-07-22 09:20:34 20991 2

原创 JVM系列之:String,数组和集合类的内存占用大小

文章目录简介数组StringArrayListHashMapHashSetLinkedListtreeMap总结简介之前的文章中,我们使用JOL工具简单的分析过String,数组和集合类的内存占用情况,这里再做一次更详细的分析和介绍,希望大家后面再遇到OOM问题的时候不再抱头痛哭,而是可以有章可循,开始吧。数组先看下JOL的代码和输出://byte arraylog.info("{}",ClassLayout.parseInstance("www.flydean.com".getBytes())

2020-07-21 09:24:49 22328 3

原创 JVM系列之:详解java object对象在heap中的结构

文章目录简介对象和其隐藏的秘密Object对象头数组对象头整个对象的结构简介在之前的文章中,我们介绍了使用JOL这一神器来解析java类或者java实例在内存中占用的空间地址。今天,我们会更进一步,剖析一下在之前文章中没有讲解到的更深层次的细节。一起来看看吧。对象和其隐藏的秘密java.lang.Object大家应该都很熟悉了,Object是java中一切对象的鼻祖。接下来我们来对这个java对象的鼻祖进行一个详细的解剖分析,从而理解JVM的深层次的秘密。工具当然是使用JOL:@Slf4j

2020-07-20 08:16:21 21781 3

原创 看动画学算法之:排序-归并排序

文章目录简介归并排序的例子归并排序算法思想归并排序的java实现归并排序的时间复杂度简介归并排序简称Merge sort是一种递归思想的排序算法。这个算法的思路就是将要排序的数组分成很多小的部分,直到这些小的部分都是已排序的数组为止(只有一个元素的数组)。然后将这些排序过的数组两两合并起来,组成一个更大一点的数组。接着将这些大一点的合并过的数组再继续合并,直到排序完整个数组为止。归并排序的例子假如我们有一个数组:29,10,14,37,20,25,44,15,怎么对它进行归并排序呢?先看一个动画

2020-07-19 10:20:58 14801 3

原创 看动画学算法之:排序-选择排序

文章目录简介选择排序的例子选择排序的java代码实现选择排序的第二种java实现选择排序的时间复杂度简介选择排序就是从数组中选择出来最大或者最小的元素,然后将其和队首或者队尾的元素进行交互。因为首先做的是一个选择的过程,所以叫做选择排序。选择排序的例子假如我们有一个数组:29,10,14,37,20,25,44,15,怎么对它进行选择排序呢?先看一个动画:选择排序的原理如下:8个数字,我们需要进行7轮排序。以第一轮为例,我们对对所有的数据进行比较,找到其中最小的那个10,然后把10放在数

2020-07-18 20:04:25 11966 1

原创 计算机揭秘之:网络分类和性能分析

程序员天天都在写代码,关注的都是更高层次的封装,今天我们换个思路,让程序那些事来带你看一看隐藏在表象之下的网络和他们的性能分析。本文主要涉及5个模块,分别是网络七层协议,延迟与带宽,IP,TCP,UDP。

2020-07-17 09:47:11 13693 2

原创 JVM详解之:运行时常量池

JVM在运行的时候会对class文件进行加载,链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧。

2020-07-16 09:04:10 12762 4

原创 JVM详解之:java class文件的密码本

一切的一切都是从javac开始的。从那一刻开始,java文件就从我们肉眼可分辨的文本文件,变成了冷冰冰的二进制文件。变成了二进制文件是不是意味着我们无法再深入的去了解java class文件了呢?答案是否定的。机器可以读,人为什么不能读?只要我们掌握java class文件的密码表,我们可以把二进制转成十六进制,将十六进制和我们的密码表进行对比,就可以轻松的解密了。下面,让我们开始这个激动人心的过程吧。

2020-07-15 09:21:52 11482 4

原创 一张PDF了解JDK10 GC调优秘籍-附PDF下载

JDK10 GC调优秘籍,一张PDF就能搞定的事情,还不快来看看!

2020-07-14 09:13:32 11505 4

原创 看动画学算法之:排序-插入排序

文章目录简介插入排序的例子插入排序的java程序插入排序的时间复杂度简介插入排序就是将要排序的元素插入到已经排序的数组中,从而形成一个新的排好序的数组。这个算法就叫做插入排序。插入排序的例子同样的,假如我们有一个数组:29,10,14,37,20,25,44,15,怎么对它进行插入排序呢?先看一个插入排序的动画,对它有个直观的了解:我们来分析一下排序的流程。八个数字,我们分为7轮。第一轮,假设29是已经排好序的数组,从第二个元素开始,向排好序的数组插入新的元素。 也就是说向数组[29]插

2020-07-13 09:12:54 11791 2

原创 看动画学算法之:排序-冒泡排序

排序可能是所有的算法中最最基础和最最常用的了。排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序。排序算法有很多种,每个都有其自身的优点和局限性。今天我们来学习最最简单的冒泡排序算法。

2020-07-12 08:29:36 12167 3

原创 如果你想写自己的Benchmark框架

使用过JMH的同学一定会惊叹它的神奇。JMH作为一个优秀的Benchmark框架带给了我们无数的欢乐。作为一个有极客精神的程序员,那么有没有想过去自己实现一个Benchmark框架呢?在实现Benchmark框架的时候有需要注意些什么问题呢?快来一起看看吧。

2020-07-11 11:03:13 12380 5

原创 JVM中栈的frames详解

文章目录简介JVM中的栈FrameLocal Variables本地变量Operand StacksDynamic Linking动态链接方法执行完毕简介我们知道JVM运行时数据区域专门有一个叫做Stack Area的区域,专门用来负责线程的执行调用。那么JVM中的栈到底是怎么工作的呢?快来一起看看吧。JVM中的栈小师妹:F师兄,JVM为每个线程的运行都分配了一个栈,这个栈到底是怎么工作的呢?小师妹,我们先看下JVM的整体运行架构图:我们可以看到运行时数据区域分为5大部分。堆区是存储共享对象

2020-07-10 08:34:37 12561 3

原创 小师妹学JVM之:Dirty cards和PLAB

文章目录简介分代收集器中的空间划分Write barrier和Dirty cardsPLABold space分配对象总结简介分代垃圾回收器在进行minor GC的时候会发生什么操作呢?有没有什么提高效率的手段呢?今天我们和小师妹一起来了解一下垃圾回收中的Dirty cards和PLAB分代收集器中的空间划分小师妹:F师兄,能再讲讲分代垃圾收集器中的空间划分吗?分代垃圾回收器中的Eden,Old和Survivor space几个大家应该都很熟悉的分代技术。Young Gen被划分为1个Eden

2020-07-09 09:01:18 12044 4

原创 小师妹学JVM之:JVM中的Safepoints

java程序员都听说过GC,大家也都知道GC的目的是扫描堆空间,然后将那些标记为删除的对象从堆空间释放,以提升可用的堆空间。今天我们会来探讨一下隐藏在GC背后的一个小秘密Safepoints。

2020-07-08 09:15:46 12173 4

原创 小师妹学JVM之:cache line对代码性能的影响

文章目录简介一个奇怪的现象两个问题的答案CPU cache lineinc 和 add总结简介读万卷书不如行万里路,讲了这么多assembly和JVM的原理与优化,今天我们来点不一样的实战。探索一下怎么使用assembly来理解我们之前不能理解的问题。一个奇怪的现象小师妹:F师兄,之前你讲了那么多JVM中JIT在编译中的性能优化,讲真的,在工作中我们真的需要知道这些东西吗?知道这些东西对我们的工作有什么好处吗?um…这个问题问得好,知道了JIT的编译原理和优化方向,我们的确可以在写代码的时候稍微注

2020-07-07 09:05:11 12131 2

原创 JIT的Profile神器JITWatch

简介老是使用命令行工具在现代化社会好像已经跟不上节奏了,尤其是在做JIT分析时,使用LogCompilation输出的日志实在是太大了,让人望而生畏。有没有什么更加简便的方法来分析JIT日志呢?快来和小师妹一起来学习JITWatch吧。什么是JIT小师妹,F师兄,JIT就是Just In Time compilers。能不能再总结一下JIT到底是做什么的呢?当然没问题,JIT主要有两个作用,第一个作用大家应该已经知道了,就是在运行时将byte code编译成为机器码,提高程序的执行速度。第二个作用

2020-07-05 17:13:50 12966 2

原创 深入理解编译优化之循环展开和粗化锁

文章目录简介循环展开和粗化锁分析Assembly日志禁止Loop unrolling总结简介之前在讲JIT的时候,有提到在编译过程中的两种优化循环展开和粗化锁,今天我们和小师妹一起从Assembly的角度来验证一下这两种编译优化方法,快来看看吧。循环展开和粗化锁小师妹:F师兄,上次你讲到在JIT编译的过程中会进行一些编译上面的优化,其中就有循环展开和粗化锁。我对这两种优化方式很感兴趣,能不能展开讲解一下呢?当然可以,我们先来回顾一下什么是循环展开。更多精彩内容且看:区块链从入门到放弃系列教程

2020-07-04 09:04:03 12406 4

原创 小师妹学JVM之:JIT中的PrintAssembly续集

文章目录简介JDK8和JDK14中的PrintAssemblyJDK8中使用AssemblyJDK14中的Assembly在JMH中使用Assembly总结简介上篇文章和小师妹一起介绍了PrintAssembly和PrintAssembly在命令行的使用,今天本文将会更进一步讲解如何在JDK8和JDK14中分别使用PrintAssembly,并在实际的例子中对其进行进一步的深入理解。JDK8和JDK14中的PrintAssembly小师妹:F师兄,上次你介绍的PrintAssembly的自测命令,怎

2020-07-03 09:02:42 11972 2

原创 小师妹学JVM之:逃逸分析和TLAB

逃逸分析我们在JDK14中JVM的性能优化一文中已经讲过了,逃逸分析的结果就是JVM会在栈上分配对象,从而提升效率。如果我们在多线程的环境中,如何提升内存的分配效率呢?快来跟小师妹一起学习TLAB技术吧。

2020-07-01 09:03:23 6898 2

Stream和Lambda表达式最佳实践

Stream和Lambda表达式是Java 8引入的两个重要特性,它们极大地简化了集合处理和函数式编程的复杂性。以下是关于Stream和Lambda表达式的最佳实践介绍: Lambda表达式 Lambda表达式允许我们以简洁的方式表示匿名函数。最佳实践包括: 保持简洁:Lambda表达式应尽可能简洁,避免冗长的代码块。 避免副作用:Lambda表达式通常不应修改外部状态或具有副作用,以保持其纯函数性质。 类型推断:尽量利用Java的类型推断功能,避免显式指定Lambda表达式的参数类型。 Stream API Stream API提供了一种高效且声明式的方式来处理集合数据。最佳实践包括: 链式操作:利用Stream的链式操作,可以流畅地组合多个转换和过滤操作。 并行处理:对于大型数据集,考虑使用并行流(parallel streams)来加速处理。但要注意,并非所有操作都适合并行化,需要根据具体情况进行选择。 中间操作与终止操作:明确区分Stream的中间操作和终止操作。中间操作会返回一个新的Stream,而终止操作会生成一个结果或副作用。

2024-04-24

JAVA IO-NIO 详解

在Java中,IO(输入/输出)是程序与外部世界进行交互的重要桥梁,而NIO(非阻塞IO)则是Java IO的一个重要扩展,它提供了更为高效、灵活的数据处理方式。 传统的Java IO是阻塞式的,即当程序进行读写操作时,如果数据没有准备好,线程会阻塞等待,这在高并发场景下会导致线程资源的浪费。而NIO则是非阻塞式的,它允许线程在等待数据准备好的同时,继续执行其他任务,从而提高了系统的整体吞吐量和响应速度。 NIO的核心组件包括Channel(通道)、Buffer(缓冲区)和Selector(选择器)。Channel是数据传输的通道,它替代了传统IO中的流;Buffer是数据的容器,它可以在Channel和程序之间进行数据的读写操作;Selector则用于监控多个Channel的状态,实现单线程处理多个Channel的目的。

2024-04-24

JAVA高质量并发详解,多线程并发深入讲解

是一本深入探讨Java并发编程的经典之作。本书全面解析了Java并发编程的核心概念、原理和实践,帮助读者深入理解多线程并发编程的精髓,提升编程能力和系统性能。 书中首先介绍了并发编程的基础知识,包括线程的基本概念、线程的生命周期、线程安全等问题。接着,深入讲解了Java并发编程的核心API,如synchronized关键字、Lock接口、Condition接口、Semaphore等,帮助读者掌握Java并发编程的基本工具和方法。 除了基础知识和API的讲解,本书还重点介绍了Java并发编程的高级特性和设计模式。例如,通过讲解线程池、Future模式、Fork/Join框架等,帮助读者解决复杂的并发问题,提高系统的响应能力和吞吐量。此外,书中还深入剖析了并发编程中的常见问题,如死锁、活锁、饥饿等,并提供了相应的解决方案和最佳实践。 本书注重理论与实践相结合,通过大量的示例代码和案例分析,帮助读者更好地理解和掌握并发编程的技巧和精髓。同时,书中还提供了丰富的练习和思考题,帮助读者巩固所学知识,提升编程实践能力。

2024-04-24

java-io-all-in-one.pdf

和小师妹一起,从零开始,掌握java中最核心的IO和NIO技巧吧!

2021-08-05

java-collection-all-in-one.pdf

详细讲解java中集合的分类和使用,并介绍了java集合中一些不为人知的小秘密。还详细介绍了java并发包中的集合特性。

2020-10-26

JDK14GC-cheatsheet.pdf

JDK14 GC调优秘籍 JDK14 GC cheatsheet, 一张PDF包含所有的调优参数! 为了方便大家的参考,特意将JDK14中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8-13的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-07-24

JDK13GC-cheatsheet.pdf

JDK13 GC调优秘籍 JDK13 GC cheatsheet, 一张PDF包含所有的调优参数! 为了方便大家的参考,特意将JDK13中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8-12的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-07-24

JDK12GC-cheatsheet.pdf

JDK12 GC调优秘籍 JDK12 GC cheatsheet, 一张PDF包含所有的调优参数! 为了方便大家的参考,特意将JDK12中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8-11的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-07-24

JDK11GC-cheatsheet.pdf

JDK11相比JDK10,添加了一个新的Source-File Mode,可以直接通过java来运行单个java源文件,而不需要进行编译。同时还提供了新的HTTP API,支持响应性stream。 当然上面的都不是重点,重点的是JDK11是一个LTS版本,是继JDK8之后的又一个LTS版本,也可能是大家日后使用的最多的一个版本。 所以JDK11的JVM参数吸收了JDK9,JDK10的新特性和改动,并在他们的基础上进行了微调。 同样在文章最后,我也将JDK11的GC调优秘籍做成了一张PDF,欢迎大家下载。

2020-07-22

JDK10GC-cheatsheet.pdf

为了方便大家的参考,特意将JDK10中的GC参数总结成了一张PDF,这个PDF在之前的JDK9的基础上进行了增减和修正,欢迎大家下载。

2020-07-16

JDK9GC-cheatsheet.pdf

JDK9 GC调优秘籍 JDK9 GC cheatsheet, 一张PDF包含所有的调优参数! 今天我们讲讲JDK9中的JVM GC调优参数,JDK9中JVM的参数总共有2142个,其中正式的参数有659个。好像比JDK8中的参数要少一点。 为了方便大家的参考,特意将JDK9中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-06-26

JDK8GC-cheatsheet.pdf

JVM的参数有很多很多,根据我的统计JDK8中JVM的参数总共有1853个,正式的参数也有680个。 这么多参数带给我们的是对JVM的细粒度的控制,但是并不是所有的参数都需要我们自己去调节的,我们需要关注的是一些最常用的,对性能影响比较大的GC参数即可。 为了更好的让大家理解JDK8中 GC的调优的秘籍,这里特意制作了一张PDF,遇到问题就看两眼,不美吗?

2020-06-22

Spring5.1中文参考指南.pdf

最新版Spring5.1参考指南中文版,带全部标签,可能是全网最好的PDF了,欢迎大家下载! 除了Spring之前的功能介绍之外,增加了Spring5最新的webflux技术,让你的程序更快更强更好

2019-11-30

Android编程入门教程

Android编程入门教程. android 入门教程, 非常适合新手。赶紧来下载吧。

2015-06-25

Android编程权威指南

Android编程权威指南 想要精通安卓的快来看看啊, 绝对是不可多得的一本好书。

2015-06-25

Android应用开发详解.pdf

Android应用开发详解, 非常牛逼的书。 必看

2015-04-03

概观C++程序设计语言.chm

概观C++程序设计语言.chm

2007-04-21

Inside C++ Object Model.chm

Inside C++ Object Model.chm<br/>Inside C++ Object Model.chm

2007-04-20

高质量C、C++编程指南.pdf

高质量C、C++编程指南.pdf

2007-04-20

spring live 中文版

spring live 中文版<br/>好东西

2007-04-20

Hibernate原理与配置快速入门.pdf

Hibernate原理与配置快速入门.pdf

2007-04-20

j2ee 1.4 API

j2ee 1.4 API

2007-04-19

UML ROSE

Uml 的好帮手

2007-04-19

CSS 2.0

CSS 2.0 页面设计必备

2007-04-19

struts in action

struts in action

2007-04-13

struts-api

struts-api

2007-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除