Fork me on GitHub
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 49 下一页
摘要: 简介 想了解JDK12,13,14中的GC调优秘籍吗?想知道这三个版本中JVM有什么新的变化吗? 一起来看看这期的GC调优秘籍,因为JDK12,13,14中的GC变化不太大,所以这里一起做个总结,文末附有相应的PDF下载,希望大家能够喜欢。 那些好用的VM参数 我们再讲几个之前的版本中没有讲过的比较 阅读全文
posted @ 2020-07-25 12:10 flydean 阅读(625) 评论(2) 推荐(0) 编辑
摘要: 简介 锁和同步是java多线程编程中非常常见的使用场景。为了锁定多线程共享的对象,Java需要提供一定的机制来实现共享对象的锁定,从而保证一次只有一个线程能够作用于共享对象。当第二个线程进入同一个区域的时候,必须等待第一个线程解锁该对象。 JVM是怎么做到的呢?为了实现这个功能,java对象又需要具 阅读全文
posted @ 2020-07-24 09:17 flydean 阅读(1138) 评论(1) 推荐(0) 编辑
摘要: 简介 现代CPU为了提升性能都会有自己的缓存结构,而多核CPU为了同时正常工作,引入了MESI,作为CPU缓存之间同步的协议。MESI虽然很好,但是不当的时候用也可能导致性能的退化。 到底怎么回事呢?一起来看看吧。 false-sharing的由来 为了提升处理速度,CPU引入了缓存的概念,我们先看 阅读全文
posted @ 2020-07-23 09:14 flydean 阅读(1505) 评论(1) 推荐(0) 编辑
摘要: 简介 JDK11相比JDK10,添加了一个新的Source-File Mode,可以直接通过java来运行单个java源文件,而不需要进行编译。同时还提供了新的HTTP API,支持响应性stream。 当然上面的都不是重点,重点的是JDK11是一个LTS版本,是继JDK8之后的又一个LTS版本,也 阅读全文
posted @ 2020-07-22 09:24 flydean 阅读(754) 评论(1) 推荐(0) 编辑
摘要: 简介 之前的文章中,我们使用JOL工具简单的分析过String,数组和集合类的内存占用情况,这里再做一次更详细的分析和介绍,希望大家后面再遇到OOM问题的时候不再抱头痛哭,而是可以有章可循,开始吧。 数组 先看下JOL的代码和输出: //byte array log.info("{}",ClassL 阅读全文
posted @ 2020-07-21 09:27 flydean 阅读(2816) 评论(1) 推荐(2) 编辑
摘要: 简介 在之前的文章中,我们介绍了使用JOL这一神器来解析java类或者java实例在内存中占用的空间地址。 今天,我们会更进一步,剖析一下在之前文章中没有讲解到的更深层次的细节。一起来看看吧。 对象和其隐藏的秘密 java.lang.Object大家应该都很熟悉了,Object是java中一切对象的 阅读全文
posted @ 2020-07-20 07:51 flydean 阅读(1154) 评论(1) 推荐(0) 编辑
摘要: 简介 归并排序简称Merge sort是一种递归思想的排序算法。这个算法的思路就是将要排序的数组分成很多小的部分,直到这些小的部分都是已排序的数组为止(只有一个元素的数组)。 然后将这些排序过的数组两两合并起来,组成一个更大一点的数组。接着将这些大一点的合并过的数组再继续合并,直到排序完整个数组为止 阅读全文
posted @ 2020-07-19 10:25 flydean 阅读(582) 评论(1) 推荐(0) 编辑
摘要: 简介 选择排序就是从数组中选择出来最大或者最小的元素,然后将其和队首或者队尾的元素进行交互。 因为首先做的是一个选择的过程,所以叫做选择排序。 选择排序的例子 假如我们有一个数组:29,10,14,37,20,25,44,15,怎么对它进行选择排序呢? 先看一个动画: 选择排序的原理如下: 8个数字 阅读全文
posted @ 2020-07-18 20:04 flydean 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 简介 程序员天天都在写代码,关注的都是更高层次的封装,今天我们换个思路,让程序那些事来带你看一看隐藏在表象之下的网络和他们的性能分析。 本文主要涉及5个模块,分别是网络七层协议,延迟与带宽,IP,TCP,UDP。 OSI网络七层协议 在讲网络之前,一定要提到OSI网络七层协议。 OSI是Open S 阅读全文
posted @ 2020-07-17 09:49 flydean 阅读(892) 评论(1) 推荐(1) 编辑
摘要: 简介 JVM在运行的时候会对class文件进行加载,链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧。 class文件中的常量池 之前我们在讲class文件的结构时,提到了每个class文件都有一个常量池,常量池中存了些什么东西呢? 字符串常量,类 阅读全文
posted @ 2020-07-16 09:06 flydean 阅读(5843) 评论(1) 推荐(3) 编辑
摘要: 简介 一切的一切都是从javac开始的。从那一刻开始,java文件就从我们肉眼可分辨的文本文件,变成了冷冰冰的二进制文件。 变成了二进制文件是不是意味着我们无法再深入的去了解java class文件了呢?答案是否定的。 机器可以读,人为什么不能读?只要我们掌握java class文件的密码表,我们可 阅读全文
posted @ 2020-07-15 09:24 flydean 阅读(1035) 评论(2) 推荐(1) 编辑
摘要: 简介 今天我们讲讲JDK10中的JVM GC调优参数,JDK10中JVM的参数总共有1957个,其中正式的参数有658个。 其实JDK10跟JDK9相比没有太大的变化,一个我们可以感受到的变化就是引入了本地变量var。 为了方便大家的参考,特意将JDK10中的GC参数总结成了一张PDF,这个PDF在 阅读全文
posted @ 2020-07-14 09:16 flydean 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 简介 插入排序就是将要排序的元素插入到已经排序的数组中,从而形成一个新的排好序的数组。 这个算法就叫做插入排序。 插入排序的例子 同样的,假如我们有一个数组:29,10,14,37,20,25,44,15,怎么对它进行插入排序呢? 先看一个插入排序的动画,对它有个直观的了解: 我们来分析一下排序的流 阅读全文
posted @ 2020-07-13 09:15 flydean 阅读(444) 评论(1) 推荐(0) 编辑
摘要: 简介 排序可能是所有的算法中最最基础和最最常用的了。排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序。 排序算法有很多种,每个都有其自身的优点和局限性。 今天我们来学习最最简单的冒泡排序算法。 冒泡排序的原理 冒泡排序的原理很简单,我们想象一下一个一个的气泡上浮的过 阅读全文
posted @ 2020-07-12 08:32 flydean 阅读(756) 评论(1) 推荐(0) 编辑
摘要: 简介 使用过JMH的同学一定会惊叹它的神奇。JMH作为一个优秀的Benchmark框架带给了我们无数的欢乐。作为一个有极客精神的程序员,那么有没有想过去自己实现一个Benchmark框架呢? 在实现Benchmark框架的时候有需要注意些什么问题呢?快来一起看看吧。 八条军规 这里叫军规实际上不合适 阅读全文
posted @ 2020-07-11 11:00 flydean 阅读(859) 评论(1) 推荐(0) 编辑
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 49 下一页