StringBuilder和StringBuffer

原文链接

这两个类的方法基本是完全一样的,他们的实现代码也几乎一样,唯一不同的在于StringBuffer是线程安全的,而StringBuilder不是。

阅读全文

ThreadLocal

原文链接

基本概念

线程本地变量是说,每个线程都有同一个变量的独有拷贝,它们访问的虽然是同一个变量,但每个线程都有自己的独立的值,这就是线程本地变量的含义。

阅读全文

反射

原文链接

反射,是在运行时,而非编译时,动态获取类型的信息。比如接口信息、成员信息、方法信息、构造方法信息等,根据这些动态获取到的信息来创建对象、访问/修改成员、调用方法等。

阅读全文

数据结构-堆

原文链接

这里的堆指的是一种数据结构,堆可以非常高效方便的解决很多问题,比如说:

    阅读全文

    动态代理

    原文链接

    动态代理是一种强大的功能,它可以在运行时动态创建一个类,实现一个或多个接口,可以在不修改原有类的基础上动态为通过该类获取的对象添加方法、修改行为,这些特性使得它广泛应用于各种系统程序、框架和库中,比如Spring, Hibernate, MyBatis, Guice等。

    阅读全文

    抽象类

    原文链接

    抽象是相对于具体而言的,具体类有直接对应的对象,而抽象类没有,一般而言是比较上层的夫类。比如说,动物是抽象,而够是具体对象;水果是抽象,苹果是具体对象;图形是抽象,圆是具体对象。

    阅读全文

    类加载机制

    原文链接

    类加载器ClassLoader就是加载其他类的类,它负责将字节码文件加载到内存,创建Class对象。与之前介绍的反射、注解、和动态代理一样,在大部分的应用编程中,我们不太需要自己实现ClassLoader。

    阅读全文

    红黑树

    红黑树本质上是一种二叉查找树,但它在二叉查找树的基础上额外添加了一个标记(颜色),同时具有一定的规则。这些规则使红黑树保证了一种平衡,插入、删除、查找的最坏时间复杂度都为 O(logn)。

    它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。比如在 Java 集合框架中,很多部分(HashMap, TreeMap, TreeSet 等)都有红黑树的应用,这些集合均提供了很好的性能。

    阅读全文

    线程池

    原文链接

    线程池,顾名思义,就是一个线程的池子,里面有若干线程,它们的目的就是执行提交给线程池的任务,执行完一个任务后不会退出,而是继续等待或执行新任务。线程池主要由两个概念组成,一个是任务队列,另一个是工作者线程,工作者线程主体就是一个循环,循环从队列中接受任务并执行,任务队列保存待执行的任务。

    阅读全文

    设计模式

    原文链接

    开闭原则

    (1)对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。

    阅读全文