Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

继承Thread类继承Thread类,重写run()方法。 1234567891011public class ExtendThread extends Thread { @Override public void run() { super.run(); System.out.println("this is sub ...

什么是线程池线程池,和连接池、常量池一样,是一种池化思想。大概意思是预先把线程都创建好,放到一个池子里,用的时候就去拿,用完了再给下一个任务用,以达到一种资源的高效利用。 为什么要有线程池为什么要有线程池?和这个问题相对应的一个问题是不用线程池行不行?答案是可以的。比如我们在想使用多线程的时候直接new一个Thread也是可以的,那么这两种方式有什么区别呢?每用一次new一次这样性能是很差的...

提到MySQL索引,都会讲到B树和B+树,今天来梳理一下。 最开始是二叉查找树,但是这种树不平衡,有时候会退化成一条链表,使得查找时间边长,于是就有了二叉平衡树。 理论上讲,二叉平衡树已经能满足一些查找需求了,为什么还要有B树呢? 因为数据库在磁盘中,而查找的时候需要读一部分数据到磁盘中,这就涉及到了IO,IO的时候是以磁盘块为单位读取的,或者说是以页为单位。我们使用树这种数据结构,一个磁盘...

本文开门见山,直接讨论Spring IoC容器的初始化过程。 关于Spring容器,有一个最基本的接口,叫做BeanFacotory, 它提供了容器最基本的一些特性。所有的容器都是基于它的。还有一个较为高级一点的容器接口,叫做ApplicationContext,它在BeanFactory的基础上,又提供了其他一些高级特性,比如访问资源。 本文以ApplicationCont...

十种常见经典排序 比较排序: 通过比较来决定元素间的相互顺序 非比较排序: (冒泡排序,快排,插入,选择,基数,桶,希尔,归并,堆) 冒泡排序算法思想相邻元素两两比较,将较大(较小)的交换到后面。 代码123456789101112public int[] bubbleSort(int[] arr){ for(int i=0; i<arr.length; i++...

为什么要有泛型它的一个主要目标是将运行时才能发现的错误转移到编译期。 泛型是什么所谓泛型,就是将类型参数化,即把类型也作为一种参数。如何做到这点呢?通过解耦类或方法与所使用的类型之间的约束。 表面使用泛型类1234567891011121314151617181920212223242526public class GenericsDemo <T> { priva...
Java

海量数据相关的面试题已经是个老生常谈的话题了。相比于小量数据,海量数据存在两点限制:内存装不下或者读取太慢。 关于海量数据的面试题一般有一下几种: 寻找出现次数最多/最少/没有出现的数 对于海量数据的处理方式也不外乎以下几种: 分而治之(将大文件拆分成小文件) hash bitmap 题目1. 海量日志数据,提取出某日访问百度次数最多的那个IP思路 这是一道关于统计次数的题,...

finalize是什么finalize()是定义在Object类中的一个方法,用于垃圾回收。 finalize原理当JVM的GC打算回收某个对象时,如果这个对象覆盖了finalize()方法,并且finalize()方法没有被执行过,会把这个对象放在一个叫做F-Queue的队列中,稍后由一个由虚拟机自动建立的,低优先级的Finalizer线程去触发finalize的执行。稍后GC将对F-Qu...
Java

参考 Java提高篇——Java 异常处理
Java