java知识
文章平均质量分 57
码匠2016
为技术而生
展开
-
java Cast Exception
背景:interface A<T> { //T是泛型 void method(T data) ;}class B implement A<D> { void method(D data) { ... }}调用:class Caller { E data; // E是D的抽象类,为什么不直接用D呢,因为Caller自身是个共用类,所以原创 2016-04-11 19:40:03 · 931 阅读 · 0 评论 -
InputStream OutputStream 傻傻分不清
总是混淆他们的区别: InputStream is used for many things that you read from. OutputStream is used for many things that you write to.可以理解的是这个Input还是output 是以程序员为中心的, * 往外流的当然是我要写出去的,从而将数据交付给别人或者保存于某个文件。 *原创 2017-05-12 22:51:00 · 623 阅读 · 0 评论 -
【java】用户动态代理
何谓动态代理呢?先说说代理模式吧。 当调用某个代理对象方法的时候,其实它间接的去调用委托类的方法。代理模式的作用是:远程代理,就是为一个对象在不同地址空间提供局部代表,这样就可以隐藏一个对象存在不同地址空间的事实。android中的AIDL就是典型的例子。虚拟代理 代理类实例化的时间比较长,如加载图片,在图片还来不及加载的时候,虚拟代理替换真实的图片安全代理 控制访问代理类的权限按照代理的原创 2017-03-02 07:21:03 · 340 阅读 · 0 评论 -
【java基础】POJO和JavaBean的区别
说实在话,在印象里。这两个概念一直觉得是一样的,分不清他们的区别。今天特地在网上找了一篇文章(谢谢博主@lushuaiyin的分享),觉得讲的很不错。所以分享一下:什么是POJO 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。POJO的内在含义是指那些没有从任转载 2017-03-12 11:52:27 · 282 阅读 · 0 评论 -
【java新】Optional pk 空指针
空指针Person person = people.find("John Smith");person.doSomething();代码一如果没有对person进行判空,那么执行doSomething()方法的时候就会出现空指针问题。OptionalOptional person = people.find("John Smith");if (person.isPresent()) { per原创 2017-01-12 22:32:15 · 438 阅读 · 0 评论 -
【Java基础】四种Java引用类型
四种引用类型说明虚引用的补充说明“虚引用”顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。 虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它原创 2017-01-02 11:30:15 · 301 阅读 · 0 评论 -
【Java基础】异常
Java中什么是Exception?所有的异常都是通过Throwable衍生出来的。Throwable把错误进 一步划分为 java.lang.Exception 和 java.lang.Error. java.lang.Error 用来处理系统错误,例如java.lang.StackOverFlowError 或者 Java.lang.OutOfMemoryError 之类的。然后 Except原创 2016-08-14 21:50:12 · 536 阅读 · 0 评论 -
【Java高级】蛮荒时代
java class 文件 结构猜想原创 2016-07-04 23:59:01 · 296 阅读 · 0 评论 -
【Java并发编程】并发容器之CopyOnWriteArrayList
问题是什么?ArrayList 在使用iterator的时候会遇到ConcurrentModificationException的异常,就是由于遍历的时候,又进行写操作。 解决办法就是:可以通过同步锁来限制它们同时发生。自己加锁有些麻烦,有现成的方案吗?CopyOnWriteArrayList来看看其add方法:public synchronized boolean add(E e) {原创 2016-05-15 19:45:59 · 942 阅读 · 0 评论 -
【Java基础】对象拷贝
背景如果不关注对象引用传递,这必将带来的是悲剧,你将一个对象从一个模块交到了另一个模块而浑然不知,而当另一个模块在修改该对象的内容同时也默默的影响到之前的模块,这是很糟糕的,问题也很难找。对象拷贝原创 2016-07-02 23:37:08 · 284 阅读 · 0 评论 -
【Java基础】序列化之serialVersionUID
为什么需要serialVersionUID?序列化很大部分的作用是持久化到本地中,那么有个问题就是如果在还原也就是反序列化这些本地数据的时候,原先的类结构已经发生了改变,存在本地的数据代表着的是旧的数据结构,* 就如同安装一个高版本app到低版本机器上出现了不兼容,serialVersionUID可以认为该类数据结构的版本号*为什么没定义它也是ok的呢?如果不显式去定义serialVersionUI原创 2016-07-03 10:38:38 · 367 阅读 · 0 评论 -
【Effective Java】最佳实践 其他合集
避免创建无用对象;警惕自动装箱autoboxingLong sum = 0L;for(long i = 0 ; i < Integer.MAX_VALUE; i++) { sum += i;}上面的代码会隐含的创建MAX_VALUE个也就是2^31个Long对象,这造成严重的效率问题。 如果能用基本类型就不要使用装箱过的基本型类工具类应该保证其不被实例化private 其构造函数原创 2016-06-06 23:59:00 · 274 阅读 · 0 评论 -
【Effective Java】3.单例
传统单例private 构造函数最优单例实现:使用Enum1.无需担心序列化先说说传统单例,其如果序列化再反序列化产生的效果和构造一个新的对象差不多的。除非增加以下来阻止://readResolve to prevent another instance of Singleton private Object readResolve(){ return INSTANCE;原创 2016-06-06 23:24:21 · 334 阅读 · 0 评论 -
【Effective Java】1.静态工厂方法来替换构造函数
优点一:不像构造函数,它有具意的名称因为可以取具意的名称,更容易明白如何使用,可读性也更好,优点二:每次调用无需创建新的对象优点三:允许返回子类对象这些子类可以不为public ,这样可以打造出更加紧凑的API,虽然你有N种子类实现,这N种子类对于使用者来说是透明的,最终调用者拿到的是针对接口的对象,“interface-based framwork” == good practice;缺点一:只有原创 2016-06-05 23:53:12 · 333 阅读 · 0 评论 -
ArrayList之坑点
ConcurrentModificationException异常详细原因参见 http://www.cnblogs.com/dolphin0520/p/3933551.html缘起iterator简单来说:在iterator中遍历以及删除时都会去执行如下检查final void checkForComodification() { if (modCount != expec原创 2016-05-15 18:39:30 · 908 阅读 · 0 评论 -
java基础之泛型
泛型类public class Pair<T,U> { private T first; ....}上面的T被成为类型变量泛型字母类型 E 集合的元素类型. K,V 表的关键字与值的类型 T,U,S 任意类型 泛型类可看作普通类的工厂泛型方法class ArrayAlg{ public static <T> T getMiddle(T... a) {原创 2016-04-17 23:08:06 · 317 阅读 · 0 评论 -
谈谈何谓Stub
Stub桩为什么叫桩,我不知道。似乎更多的是一种测试概念,test stub 来看看Martin的说明吧: Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what’s programmed in for the test.原创 2017-05-14 15:28:49 · 3410 阅读 · 0 评论