Fork me on GitHub
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 52 下一页
摘要: 简介 选择排序就是从数组中选择出来最大或者最小的元素,然后将其和队首或者队尾的元素进行交互。 因为首先做的是一个选择的过程,所以叫做选择排序。 选择排序的例子 假如我们有一个数组:29,10,14,37,20,25,44,15,怎么对它进行选择排序呢? 先看一个动画: 选择排序的原理如下: 8个数字 阅读全文
posted @ 2020-07-18 20:04 flydean 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 简介 程序员天天都在写代码,关注的都是更高层次的封装,今天我们换个思路,让程序那些事来带你看一看隐藏在表象之下的网络和他们的性能分析。 本文主要涉及5个模块,分别是网络七层协议,延迟与带宽,IP,TCP,UDP。 OSI网络七层协议 在讲网络之前,一定要提到OSI网络七层协议。 OSI是Open S 阅读全文
posted @ 2020-07-17 09:49 flydean 阅读(907) 评论(1) 推荐(1) 编辑
摘要: 简介 JVM在运行的时候会对class文件进行加载,链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧。 class文件中的常量池 之前我们在讲class文件的结构时,提到了每个class文件都有一个常量池,常量池中存了些什么东西呢? 字符串常量,类 阅读全文
posted @ 2020-07-16 09:06 flydean 阅读(6183) 评论(1) 推荐(3) 编辑
摘要: 简介 一切的一切都是从javac开始的。从那一刻开始,java文件就从我们肉眼可分辨的文本文件,变成了冷冰冰的二进制文件。 变成了二进制文件是不是意味着我们无法再深入的去了解java class文件了呢?答案是否定的。 机器可以读,人为什么不能读?只要我们掌握java class文件的密码表,我们可 阅读全文
posted @ 2020-07-15 09:24 flydean 阅读(1055) 评论(2) 推荐(1) 编辑
摘要: 简介 今天我们讲讲JDK10中的JVM GC调优参数,JDK10中JVM的参数总共有1957个,其中正式的参数有658个。 其实JDK10跟JDK9相比没有太大的变化,一个我们可以感受到的变化就是引入了本地变量var。 为了方便大家的参考,特意将JDK10中的GC参数总结成了一张PDF,这个PDF在 阅读全文
posted @ 2020-07-14 09:16 flydean 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 简介 插入排序就是将要排序的元素插入到已经排序的数组中,从而形成一个新的排好序的数组。 这个算法就叫做插入排序。 插入排序的例子 同样的,假如我们有一个数组:29,10,14,37,20,25,44,15,怎么对它进行插入排序呢? 先看一个插入排序的动画,对它有个直观的了解: 我们来分析一下排序的流 阅读全文
posted @ 2020-07-13 09:15 flydean 阅读(469) 评论(1) 推荐(0) 编辑
摘要: 简介 排序可能是所有的算法中最最基础和最最常用的了。排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序。 排序算法有很多种,每个都有其自身的优点和局限性。 今天我们来学习最最简单的冒泡排序算法。 冒泡排序的原理 冒泡排序的原理很简单,我们想象一下一个一个的气泡上浮的过 阅读全文
posted @ 2020-07-12 08:32 flydean 阅读(775) 评论(1) 推荐(0) 编辑
摘要: 简介 使用过JMH的同学一定会惊叹它的神奇。JMH作为一个优秀的Benchmark框架带给了我们无数的欢乐。作为一个有极客精神的程序员,那么有没有想过去自己实现一个Benchmark框架呢? 在实现Benchmark框架的时候有需要注意些什么问题呢?快来一起看看吧。 八条军规 这里叫军规实际上不合适 阅读全文
posted @ 2020-07-11 11:00 flydean 阅读(882) 评论(1) 推荐(0) 编辑
摘要: 简介 我们知道JVM运行时数据区域专门有一个叫做Stack Area的区域,专门用来负责线程的执行调用。那么JVM中的栈到底是怎么工作的呢?快来一起看看吧。 JVM中的栈 小师妹:F师兄,JVM为每个线程的运行都分配了一个栈,这个栈到底是怎么工作的呢? 小师妹,我们先看下JVM的整体运行架构图: 我 阅读全文
posted @ 2020-07-10 08:37 flydean 阅读(1567) 评论(3) 推荐(2) 编辑
摘要: 简介 分代垃圾回收器在进行minor GC的时候会发生什么操作呢?有没有什么提高效率的手段呢?今天我们和小师妹一起来了解一下垃圾回收中的Dirty cards和PLAB 分代收集器中的空间划分 小师妹:F师兄,能再讲讲分代垃圾收集器中的空间划分吗? 分代垃圾回收器中的Eden,Old和Survivo 阅读全文
posted @ 2020-07-09 09:04 flydean 阅读(935) 评论(1) 推荐(0) 编辑
摘要: 简介 java程序员都听说过GC,大家也都知道GC的目的是扫描堆空间,然后将那些标记为删除的对象从堆空间释放,以提升可用的堆空间。今天我们会来探讨一下隐藏在GC背后的一个小秘密Safepoints。 GC的垃圾回收器 小师妹:F师兄,GC的垃圾回收器的种类为什么会有这么多呀?使用起来不是很麻烦。并且 阅读全文
posted @ 2020-07-08 09:17 flydean 阅读(977) 评论(1) 推荐(0) 编辑
摘要: 简介 读万卷书不如行万里路,讲了这么多assembly和JVM的原理与优化,今天我们来点不一样的实战。探索一下怎么使用assembly来理解我们之前不能理解的问题。 一个奇怪的现象 小师妹:F师兄,之前你讲了那么多JVM中JIT在编译中的性能优化,讲真的,在工作中我们真的需要知道这些东西吗?知道这些 阅读全文
posted @ 2020-07-07 09:08 flydean 阅读(871) 评论(2) 推荐(0) 编辑
摘要: 简介 比特币网络是中本聪作为一个实验性的网络提出来并运行的。没想到的是这一个实验性质的网络,居然成了现在虚拟货币世界的龙头老大。这个结局估计是中本聪本人都没有想到过的。 既然是一个实验性的网络,那么比特币网络中又隐藏着哪些痛点呢?快来看看吧。 攻击比特币网络 比特币网络是基于P2P架构的。在整个比特 阅读全文
posted @ 2020-07-06 08:59 flydean 阅读(710) 评论(1) 推荐(0) 编辑
摘要: 简介 老是使用命令行工具在现代化社会好像已经跟不上节奏了,尤其是在做JIT分析时,使用LogCompilation输出的日志实在是太大了,让人望而生畏。有没有什么更加简便的方法来分析JIT日志呢?快来和小师妹一起来学习JITWatch吧。 什么是JIT 小师妹,F师兄,JIT就是Just In Ti 阅读全文
posted @ 2020-07-05 17:17 flydean 阅读(1237) 评论(2) 推荐(0) 编辑
摘要: 简介 之前在讲JIT的时候,有提到在编译过程中的两种优化循环展开和粗化锁,今天我们和小师妹一起从Assembly的角度来验证一下这两种编译优化方法,快来看看吧。 循环展开和粗化锁 小师妹:F师兄,上次你讲到在JIT编译的过程中会进行一些编译上面的优化,其中就有循环展开和粗化锁。我对这两种优化方式很感 阅读全文
posted @ 2020-07-04 09:01 flydean 阅读(915) 评论(0) 推荐(1) 编辑
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 52 下一页