• 降低Java垃圾回收开销的5条建议

    2016-08-18
    保持GC低开销的窍门有哪些? 随着一再拖延而即将发布的 Java9,G1(Garbage First)垃圾回收器将被成为 HotSpot 虚拟机默认的垃圾回收器。从 serial 垃圾回收器到CMS 收集器, JVM 见证了许多 GC 实...
  • Java中关于String类型的10个问题

    2016-08-03
    1. 如何比较两个字符串?用=还是equals 简单来说,==是用来检测俩引用是不是指向内存中的同一个对象,而equals()方法则检测的是两个对象的值是否相等。只要你想检测俩字符串是不是相...
  • 用Java实现一个通用并发对象池

    2016-07-31
    这篇文章里我们主要讨论下如何在Java里实现一个对象池。最近几年,Java虚拟机的性能在各方面都得到了极大的提升,因此对大多数对象而言,已经没有必要通过对象池来提高性能了。...
  • Java 动态代理机制详解

    2016-07-28
    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的...
  • Java 线程池框架核心代码分析

    2016-07-12
    Java 线程池框架核心代码分析
    前言 多线程编程中,为每个任务分配一个线程是不现实的,线程创建的开销和资源消耗都是很高的。线程池应运而生,成为我们管理线程的利器。Java 通过 Executor 接口,提供了一种标准...
  • Java反射获取类和对象信息全解析

    2016-06-11
    反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题。 在两个人协作开发时,你只要知道对方的类名就可以进行初步的...
  • Java内存模型深度解读

    2016-05-12
    Java内存模型深度解读
    Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型又称为Java内存模型。 如果你想设计表...
  • Java NIO 之缓冲区

    2016-04-30
    Java NIO 之缓冲区
    一个 Buffer 对象是固定数量的数据的容器。通道是 I/O 传输发生时通过的入口,而缓冲区是这些数据传输的来源或目标。 缓冲区基础 所有的缓冲区都具有四个属性来 供关于其所包含的数...
  • Java 8中新的Date和Time类入门详解

    2016-04-28
    这篇文章主要是java8中新的Date和Time API的实战。新的Date和Time类是java开发者社区千呼万唤始出来的。Java8 之前存在的Date类一直都受人诟病,很多人都会选择使用第三方的date库joda-time。...
  • Java中创建不可变的类

    2016-04-23
    相信,学java的人,都应该知道class和object确切表示什么意思。 class :java中class确切的表示为一个类 object :java中object确切的表示为一个对象,也称为类的实例 其实,如果一个类被设计...
  • Java 注解全面解析

    2016-04-22
    1.基本语法 注解定义看起来很像接口的定义。事实上,与其他任何接口一样,注解也将会编译成class文件。 @Target(ElementType.Method) @Retention(RetentionPolicy.RUNTIME) public @interface Test {} 除了@符号...
  • Java CompletableFuture 详解

    2016-04-19
    Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用 isDone 方法检查计算是否完成,或者使用 get 阻塞住调用线程,直到计算完成返回结果,你也可以使用 cancel 方法停止任...
  • Java ThreadLocal深度解析

    2016-04-16
    首先, ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个...
  • 深入理解Java之线程池

    2016-04-06
    我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建...
  • 高性能Java解析器实现过程详解

    2016-04-04
    高性能Java解析器实现过程详解
    如果你没有指定数据或语言标准的或开源的Java解析器, 可能经常要用Java实现你自己的数据或语言解析器。或者,可能有很多解析器可选,但是要么太慢,要么太耗内存,或者没有你需...
  • Java四种线程池的用法分析

    2016-03-31
    1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 那你就out太多了,new Thread的弊端如下:...
  • Java 类加载机制详解

    2016-03-13
    Java 类加载机制详解
    一、类加载器 类加载器(ClassLoader),顾名思义,即加载类的东西。在我们使用一个类之前,JVM需要先将该类的字节码文件(.class文件)从磁盘、网络或其他来源加载到内存中,并对字...
  • Java常量池理解与总结

    2016-02-22
    一.相关概念 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 Class文件中的...
  • Java并发编程:性能、扩展性和响应

    2016-02-21
    1、介绍 本文讨论的重点在于多线程应用程序的性能问题。我们会先给性能和扩展性下一个定义,然后再仔细学习一下Amdahl法则。下面的内容我们会考察一下如何用不同的技术方法来减...
  • Java LinkedList源码分析

    2016-01-27
    简介 LinkedList 是一个常用的集合类,用于顺序存储元素。 LinkedList 经常和 ArrayList 一起被提及。大部分人应该都知道 ArrayList 内部采用数组保存元素,适合用于随机访问比较多的场景,而...
  • Java 反射机制详解

    2016-01-25
    Java 反射机制详解
    动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之...
  • 使用JDBC构建简单的数据访问层

    2016-01-19
    以下是如何使用JDBC构建一个数据访问层,包括数据转换(将从数据库中查询的数据封装到对应的对象中),数据库的建立,以及如何连接到数据库。 本教程的目的是使用Java编写的分离...
  • Java异常的深入研究与分析

    2016-01-13
    Java异常的深入研究与分析
    异常机制概述 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处...
  • 如何计算Java对象占用了多少空间?

    2016-01-09
    在Java中没有sizeof运算符,所以没办法知道一个对象到底占用了多大的空间,但是在分配对象的时候会有一些基本的规则,我们根据这些规则大致能判断出来对象大小。 对象头 对象的头...
  • Java中对象的深复制和浅复制详解

    2016-01-07
    1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的...