2017年9月24日
摘要: 1.线程池的实现原理?简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程 阅读全文
posted @ 2017-09-24 11:23 蒋闯 阅读(600) 评论(0) 推荐(0) 编辑
  2017年8月12日
摘要: 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 1 public native int hashCode(); 1 public native int hashCode(); 1 public native int  阅读全文
posted @ 2017-08-12 13:23 蒋闯 阅读(267) 评论(0) 推荐(0) 编辑
  2017年8月11日
摘要: 一、HashMap概述 二、HashMap的数据结构 三、HashMap源码分析 1、关键属性 2、构造方法 3、存储数据 4、调整大小 5、数据读取 6、HashMap的性能参数 7、Fail-Fast机制 阅读全文
posted @ 2017-08-11 16:55 蒋闯 阅读(278) 评论(0) 推荐(0) 编辑
  2017年8月10日
摘要: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 阅读全文
posted @ 2017-08-10 15:05 蒋闯 阅读(338) 评论(0) 推荐(0) 编辑
  2017年8月8日
摘要: 1.大对象:所谓的大对象是指需要大量连续内存空间的java对象,最典型的大对象就是那种很长的字符串以及数组,大对象对虚拟机的内存分配就是坏消息,尤其是一些朝生夕灭的短命大对象,写程序时应避免。 2.长期存活的对象:虚拟机给每个对象定义了一个对象年龄(Age)计数器,如果对象在Eden出生并经过第一次 阅读全文
posted @ 2017-08-08 17:07 蒋闯 阅读(6296) 评论(3) 推荐(1) 编辑
  2017年8月7日
摘要: 内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用。产生内存碎片的方法很简单,举个例: 假设有一块一共有100个单位的连续空闲内存空间,范围是0~99。如果你从中申请一块内存,如10个单位,那么申请出来的内存块就为0~9区间。这时候你继续申请一块内存,比如说5个单位大,第二 阅读全文
posted @ 2017-08-07 13:57 蒋闯 阅读(4566) 评论(0) 推荐(0) 编辑
摘要: 广泛地说,JVM堆内存被分为两部分——年轻代(Young Generation)和老年代(Old Generation)。 年轻代 年轻代是所有新对象产生的地方。当年轻代内存空间被用完时,就会触发垃圾回收。这个垃圾回收叫做Minor GC。年轻代被分为3个部分——Enden区和两个Survivor区 阅读全文
posted @ 2017-08-07 12:31 蒋闯 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 介绍如下6个组成部分 1.程序计数器:一块较小内存区域,指向当前所执行的字节码。如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是Native方法,这个计算器值为空。 2.Java虚拟机栈:线程私有的,其生命周期和线程一致,每个方法执行时都会创建一个栈帧用 阅读全文
posted @ 2017-08-07 12:30 蒋闯 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 对于年轻代,刚开始创建的对象都是放置在eden区的,而将年轻代分成3个部分,主要是为了生命周期短的对象尽量留在年轻代。当eden区申请不到空间的时候,进行minorGC,把存活的对象拷贝到survior。年老代主要存放生命周期比较长的对象,比如缓存对象。具体jvm内存回收过程描述如下: 1、对象在E 阅读全文
posted @ 2017-08-07 12:29 蒋闯 阅读(149) 评论(0) 推荐(0) 编辑
  2017年5月24日
摘要: 思路一:先找出一个字符串中所有子串,再找出所有子串中最长的那一个; 思路二:每次找出的子串长度都比上一次的子串长,则最后的子串即是最长子串的长度数。 我选择的是第二种方法。 阅读全文
posted @ 2017-05-24 20:26 蒋闯 阅读(900) 评论(0) 推荐(0) 编辑