0%

前言

ant是一种常用的打包构建工具,支持在构建过程中根据属性值判断选择构建的的步骤,本文将以condition中的equals标签为例,说明ant中的条件判断的用法。

阅读全文 »

概述

JDK中的bin目录除了javac和java这两个经常用于编译和运行java程序的工具外,还有许多用于监控虚拟机和故障处理的工具,包括命令行工具jps、jstat、jinfo、jmap、jhat、jstack和可视化工具jconsole、jvisualvm。本文主要介绍jps、jstat、jinfo、jmap、jhat、jstack这几个命令行工具。他们的主要作用如下

名称 主要作用
jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程
jstat JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据
jinfo Configuration Info for Java,显示虚拟机配置信息
jmap Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件)
jhat JVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
jstack Stack Trace for Java,显示虚拟机的线程快照
阅读全文 »

概述

虚拟机将内存区域划分为新生代和老年代,在新生代中又划分成一个Eden和两个Survivor区域。对象的内存分配,主要是在新生代的Eden区上进行分配,部分比较大的对象会直接分配在老年代中。虽然对象的分配根据使用的垃圾回收器不同而有所区别,但是总体上而言,主要有以下几个分配原则:对象优先分配在Eden区、大对象直接分配在老年代、长期存活的对象将进入老年代、动态对象年龄判定、空间分配担保。

阅读全文 »

概述

java虚拟机的垃圾回收器多种多样,因不同的厂商、版本而不同。本文主要介绍在HotSpot虚拟机中常用的几种垃圾回收器:Serial、ParNew、Parallel Scavenge、CMS、Serial Old、Parallel Old、G1。这几种垃圾回收器关系如下图所示,其中连线表示两个垃圾回收器可以结合使用。

垃圾回收器关系图

说明:此图参考《深入理解Java虚拟机:JVM高级特性与最佳实践》画出

阅读全文 »

概述

jvm中有多种垃圾回收算法,不同的虚拟机采用的回收方法也不同,本文主要介绍其中几种常见的回收算法,包括:标记清除算法、复制算法、标记整理算法、分代收集算法。

阅读全文 »

概述

java虚拟机会自动进行内存管理和垃圾回收,在进行垃圾回收之前,需要先判定对象是否存活,只有对象“死去”(这里并不是指对象消失,而是指根据算法判定对象可以进行垃圾回收)才能被垃圾回收器进行回收。这里主要有两种对象存活判定算法:引用计数法和可达性分析算法。

阅读全文 »

问题描述

给出一个数组和一个数字k,要求找出数组中数字出现频率最高的k个数字。如果按照出现频率从高到低取数字时,发现在某个频率有 m 个相同的数字,在该频率前面共有 n 个数字,且 n + m > k,则从m个数字中任意取 k - n个数字,这 k - n个数字无顺序要求,也无特定数字要求。

此题要求时间复杂度小于O(nlog n),其中 n 是数组的长度

阅读全文 »

问题描述

给定一个无重复整数的升序的循环数组(例如:[1,2,3,4,5] 或 [4,5,6,1,2,3]),要求以O(log n)的时间复杂度查找一个数字是否在这个数组中,如果存在,则返回该数字的下标,否则返回-1。题目链接:**点我**

阅读全文 »

定义

组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
                                                                                                                ——《Head First 设计模式》

也就是说,组合模式是用来呈现树状结构的,利用组合模式,让叶子节点和非叶子节点继承同一个基础类,可以让叶子节点对象和组件(非叶子)节点对象之间的差异得以忽略,从而为客户程序提供更简单统一的调用方式。

阅读全文 »