摘要:
前言 本文来自方腾飞老师《Java并发编程的艺术》第一章。 并发编程的目的是为了让程序运行得更快,但是并不是启动更多的线程就能让程序最大 限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬 件和软件的资源限 阅读全文
摘要:
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: 如果以后要用到LinkedList了,可能有些朋友就会用一样的方式去遍历LinkedList了: 请记 阅读全文
摘要:
什么是Socket Socket的概念很简单,它是网络上运行的两个程序间双向通讯的一端,既可以接收请求,也可以发送请求,利用它可以较为方便地编写网络上数据的传递。 所以简而言之,Socket就是进程通信的端点,Socket之间的连接过程可以分为几步: 1、服务器监听 服务器端Socket并不定位具体 阅读全文
摘要:
前言 这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写 ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清 楚ReentrantLock的原理的文章很少,本文就来研究一下ReentrantLo 阅读全文
摘要:
前言 Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。 这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。 阅读全文
摘要:
Unsafe 简单讲一下这个类。Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。 这个类尽管里面的方法都是public的,但是开发者是无法使用它的,JDK API文档也没有提供关 阅读全文
摘要:
前言 Java的部分有基础、设计模式、IO、NIO、多线程,之后有时间还会把集合这 部分补上去,这么多内容里面,难免有一些知识点遗漏,本文主要是讲解这些遗漏的知识点。这些知识点,不是特别大的难点,所以没有必要专门写一篇文章讲解; 但是这些知识点,也不是一两句话就说得清楚的,所以放在这里。查漏补缺系列 阅读全文
摘要:
前言 2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化。在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了。 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意 阅读全文
摘要:
前言 Java设计模式9:代理模式一 文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的。 本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口、代理内容,生成 阅读全文
摘要:
前言 在Java中,子类继承父类,类实现接口是属于常识性的内容了,作为一个Java 程序员应该也比较熟悉。不过子类继承父类,类实现接口中还是有一些小细节值得注意一下,本文就从个人工作、学习中入手,总结一些细节性的内容,以更进一步 地掌握继承、实现的关系。现在只是写一些目前碰到的内容,以后只要想到了、 阅读全文
摘要:
接口interface的作用 接口是对于行为的抽象,在小项目、小设计中接口带来的好处可能不会特别明显,但是项目一旦庞大起来,接口的优势就很明显会体现出来了: 1、对于一个庞大的项目,从设计的角度来说,接口的存在可以帮助理清楚业务,利用接口不仅可以告诉开发人员需要实现哪些业务,而且也将命名规范限制住了 阅读全文
摘要:
枚举 枚举是一个小功能,但是却带来了大方便。一个星期有七天,我们平时定义这七天为常量的时候,会这么写: 有了枚举之后,就可以换一种写法了: 这就定义了SUNDAY~SATURDAY的枚举了,使用枚举类型代替了常量,还提供了比常量更多的方法。枚举类型适用的数据有以下特点: 1、枚举值之间是有内在关联的 阅读全文
摘要:
异常概述 异常也称为例外,是在程序运行过程中发生的并且会打断程序正常执行的事件,比如算术异常、空指针异常、文件找不到异常。所以在程序设计时,必须考虑到可能发生的异常事件,并做出相应的处理。这样才能保证程序可以正常运行。 Java的异常处理机制也秉承着面向对象的基本思想,在Java中,所有的异常都是以 阅读全文
摘要:
内部类 最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类。 内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.c 阅读全文
摘要:
泛型初探 在泛型(Generic type或Generics)出现之前,是这么写代码的: 当然这是完全允许的,因为List里面的内容是Object类型的,自然任何对象类型都可以放入、都可以取出,但是这么写会有两个问题: 1、当一个对象放入集合时,集合不会记住此对象的类型,当再次从集合中取出此对象时, 阅读全文
摘要:
前言 一开始想学学自动拆箱和自动装箱是被这个名字吸引到,听上去好像很高端的样子,其实自动拆箱、自动装箱是很简单的内容。 自动拆箱和自动装箱 Java为每种基本数据类型都提供了对应的包装器类型。举个例子: 这个过程中会自动根据数值创建对应的Integer对象,这就是自动装箱。再看另外一段代码: 这个过 阅读全文
摘要:
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖。语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实 现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了。这些语法糖虽然不会提供实质 阅读全文
摘要:
反射的作用 Java反射描述的是,在运行状态中: 1、对于任意一个类,都能够知道这个类的所有属性和方法 2、对于任意一个类,都能够调用它的任意一个属性和方法 之所以强调属性、方法,是因为属性、方法是开发者对于一个类最关注的两个部分。实际上通过反射,不仅仅可以获知类的属性、方法,还可以获知类的父类、接 阅读全文
摘要:
WeakReference弱引用概述 http://www.cnblogs.com/xrq730/p/4836700.html,关于Java的四种引用状态具体请参看此文 Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。 阅读全文
摘要:
为什么要克隆 为什么要使用克隆,这其实反映的是一个很现实的问题,假如我们有一个对象: public class SimpleObject implements Cloneable { private String str; public SimpleObject() { System.out.pri 阅读全文