The burden is justified if the exceptional condition cannot be prevented by proper use of the API and the programmer using the API can take some useful action once confronted with the exception. ask yourself how the programmer will handle the excepti…
String s = new String("stringette"); // Don't do this. This will create an object each time Vs String s = "stringette"; class Person { private final Date birthDate; // Other fields, methods, and constructor omitted /** * The starting a…
Principle To avoid liveness and safety failures, never cede control to the client within a synchronized method or block. Do as little work as possible inside synchronized regions. You should make a mutable class thread-safe (Item 70) if it is intende…
NOTE Never do anything time-critical in a finalizer. Never depend on a finalizer to update critical persistent state. There is a severe performance penalty for using. "Finalizer chaining" is not performed automatically. The subclass finalizer mu…
Principle Strings are poor substitutes for other value types. Such as int, float or BigInteger. Strings are poor substitutes for enum types. As discussed in Item 30. Strings are poor substitutes for aggregate types. A better approach is simply to wri…
Thread groups were originally envisioned as a mechanism for isolating applets for security purposes. They never really fulfilled this promise, and their security importance has waned to the extent that they aren't even mentioned in the standard work…
Reason The float and double types are particularly ill-suited for monetary calculations because it is impossible to represent 0.1 (or any other negative power of ten) as a float or double exactly. // This will print 0.6100000000000001 System.out.prin…
Benefits to reuse preexisting exceptions It makes your API easier to learn and use. Programs using your API are easier to read. Fewer exception classes mean a smaller memory footprint and less time spent loading classes. Common Exceptions Exception O…
Hi guys, I am happy to tell you that I am moving to the open source world. And Java is the 1st language I have chosen for this migration. It's a nice chance to read some great books like "Effective Java 2nd Edition" and share the note for what I…
Chapter 9 Exceptions Item 57: Use exceptions only for exceptional conditions 这条item的意思就是,千万不要用exception来控制control flow的终止,比如: // Horrible abuse of exceptions. Don't ever do this! try { int i = 0; while(true) range[i++].climb(); } catch(ArrayIndexOutO…
<Effective Java>目录摘抄. 我知道这看起来很糟糕.当下,自己缺少实际操作,只能暂时摘抄下目录.随着,实践的增多,慢慢填充更多的示例. Chapter 2 Creating and Destroying Objects Consider static factory methods instead of constructors Consider a builder when faced with many constructor parameters Enforce the s…
Java写了很多年,很惭愧,直到最近才读了这本经典之作<Effective Java>,按自己的理解总结下,有些可能还不够深刻 一.Creating and Destroying Objects Consider static factory methods instead of constructors (factory方法可以拥有名称,可以避免重复创建,比如单例模式) Consider a builder when faced with many constructor parameter…
67.  明智审慎地进行优化 有三条优化的格言是每个人都应该知道的: (1)比起其他任何单一的原因(包括盲目的愚钝),很多计算上的过失都被归咎于效率(不一定能实现) (2)不要去计算效率上的一些小小的得失,在97%的情况下,不成熟的优化才是一切问题的根源. (3)在优化方面,我们要遵守两条规则: 规则一:不要进行优化 规则二(仅针对专家):还是不要进行优化,也就是说,在你还没有绝对清晰的优化方案之前,请不要进行优化. 努力编写好的程序,而不是快的程序:速度自然会提高.但是在设计系统时一定要考虑性…
记得当年在程序员杂志上看出这次访谈,10多年过去了, 这件事儿最近被重提了, 原因是 Kotlin. 1.对Checked Exceptions特性持保留态度 (译者注:在写一段程序时,如果没有用try-catch捕捉异常或者显式的抛出异常,而希望程序自动抛出,一些语言的编译器不会允许编译通过,如Java就是这样.这就是Checked Exceptions最基本的意思.该特性的目的是保证程序的安全性和健壮性.Zee&Snakey(MVP)对此有一段很形象的话,可以参见: http://www.b…
Three kinds of throwables Throwables Checked Recoverable checked exceptions Y Y runtime exceptions N N errors N N Principle Use checked exceptions for conditions from which the caller can reasonably be expected to recover. Code that parses the string…
本文参考 本篇文章参考自<Effective Java>第三版第六条"Avoid creating unnecessary objects" avoid creating unnecessary objects by using static factory methods in preference to constructors on immutable classes that provide both 若一个类同时提供了静态工厂方法和构造方法,尽量使用静态工厂方法,…
<Effective Java>阅读笔记,用适合自己理解的方式提炼该书内容.<Effective Java>是一本很实用的书,阅读方法应该是快速的领会,总结,然后应用.而非,一个字一个字去推敲,研究.所以,书呆子们一般都很xx,在我眼里. 2016.07.24作 1,用静态方法替代构造器,下面是很好的例子: public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE…
Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用实例域,例如: 1 /** 2 * 枚举类型错误码 3 * Created by yulinfeng on 8/20/17. 4 */ 5 public enum ErrorCode { 6 FAILURE(0), 7 SUCCESS(1); 8 9 private final int code;…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 条目1. 考虑使用静态工厂方法替代构造方法 一个类允许客户端获取其实例的传统方式是提供一个公共构造方法. 其实还有另一种技术应该成为每个程序员工具箱的一部分. 一个类可以提…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 6. 避免创建不必要的对象 在每次需要时重用一个对象而不是创建一个新的相同功能对象通常是恰当的.重用可以更快更流行.如果对象是不可变的(条目 17),它总是可以被重用. 作…
<Effective Java(中文第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382186 Java(中文第二版)>[PDF]"  TITLE="<Effective Java(中文第二版)>[PDF]" /> 编辑推荐 <Sun 公司核心技术丛书:EffectiveJava中文版(第2版)>内容全面,结构清晰,讲解详细.可作为技术人员的参考用书.编码平添乐…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 22. 接口仅用来定义类型 当类实现接口时,该接口作为一种类型(type),可以用来引用类的实例.因此,一个类实现了一个接口,因此表明客户端可以如何处理类的实例.为其他目的…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用.  30. 优先使用泛型方法 正如类可以是泛型的,方法也可以是泛型的. 对参数化类型进行操作的静态工具方法通常都是泛型的. 集合中的所有"算法"方法(如b…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 44. 优先使用标准的函数式接口 现在Java已经有lambda表达式,编写API的最佳实践已经发生了很大的变化. 例如,模板方法模式[Gamma95],其中一个子类重写原…
原文地址:http://literatejava.com/exceptions/checked-exceptions-javas-biggest-mistake/ 仅供参考,毕竟我四级都没过 Checked exceptions have always been a controversial feature of the Java language. 检查型异常一直是Java语言当中有争议的特性 Advocates claim they ensure checking & recovery f…
来源:sjsdfg/effective-java-3rd-chinese <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. (译者)在这里第一时间翻译成中文版.供大家学习分享之用. 本书的源代码见 jbloch/effective-java-3e-source-code. 目录 0…
本文参考 本篇文章参考自<Effective Java>第三版第一条"Consider static factory methods instead of constructors" 另外参考了其它几篇文章的解读: https://www.cnblogs.com/dyj-blog/p/8867028.html https://blog.csdn.net/u014129886/article/details/89670049 前言 第一条的篇章来自"Creating…
Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类(HashMap,HashSet等)将不能正常工作. 8.覆盖equals时请遵守通用约定 无需覆盖equals的情形: 类的每个实例本质上是唯一的.类代表的是活动实体而不是值的概念.(例如,类Thread) 不关心类"逻辑相等"的功能,从Object继承的equals实现已经足够.(例如,…
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并发.JVM.分布式之类的.在今年面试的时候深受打击,到处都是问分布式.集群的?难道现在工作两三年的都这么牛逼了?都在搞分布式.集群之类的? 2016书单如下: 1.深入理解Java虚拟机:JVM高级特性与最佳实践---(已看,预计今年看三遍) 2.Oracle查询优化改写技巧与案例---(已看) 3…
从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段代码块(伪代码) String output(double num){//double类型的参数num由DAO层提供 String result=null; if(num等于num的整数部分)//例如12.0000等于12,13.0001不等于13 result=(将num的小数位全部删去,返回相应…