本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
Effective Scala
http://twitter.github.io/scala_school/zh_cn/index.html
Scala是Twitter使用的主要应用编程语言之一。很多我们的基础架构都是用scala写的,我们也有一些大的库支 持我们使用。虽然非常有效, Scala也是一门大的语言,经验教会我们在实践中要非常小心。 它有什么陷阱?哪些特性我们应该拥抱,哪些应该避开?我们什么时候 ...
博弈Java讲义 - Java线程之uncontrolled exceptions
前两天翻阅《Effective Java》发现一条提示慎用线程组。ThreadGroup提供的很多功能的实现是有瑕疵的。例如,我们可以调用activeCount获得该组中活动线程的数量,一旦这个数组进行了分配,并用enumerate方法遍历,如果线程数增加了,就有可能忽略掉调用activeCount后新增的线程。关于处理线程组逻辑,可以用线程池的executor代替。 也许ThreadGrou ...
获取maven完整/实际/生效(effective)的pom.xml文件
方法一
maven 命令行方式
mvn help:effective-pom -Doutput=EffectivePom.xml
我们都知道maven是约定大于配置,也就是默认有很多约定好的配置,如果你不改变,那么就使用这些配置,比如你的java源代码放置在src/main/java下, 资源文件放置在src/main/resources下, 所以当我们把源代码,资源按约定的结构建立起来后,po ...
《effective java》之十:序列化
第74条:谨慎地实现Serializable接口:
第75条:考虑使用自定义的序列化形式:
public final class StringList implements Serializable {
private transient int size = 0;
private transient Entry head = null;
// No longer ...
《effective java》之九:并发
第66条:同步访问共享的可变数据:
使用volatile可以在两个线程中通信
public class StopThread {
private static volatile boolean stopRequested;
public static void main(String[] args) throws InterruptedException {
Thread ...
《effective java》之八:异常
第57条:只针对异常情况才使用异常:
第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常:
第59条:避免不必要地使用受检异常:
第60条:优先使用标准异常:
第61条:抛出与抽象相对应的异常:
第62条:每个方法抛出的异常都要有文档:
第63条:在细节消息中包含能够捕获失败的信息:
第64条:努力使失败保持原子性:
第 ...
《effective java》之六:方法
第39条:必要时进行保护性拷贝:
第40条:谨慎设计方法签名:
避免过长的参数列表,目标是四个参数或者更少,如果多于四个了就该考虑重构这个方法了。
三种方法可以缩短过长的参数列表:
①,把方法分解成多个方法,每个方法只需要参数的一个子集,不推荐。
②,创建辅助类helper class,用来保存参数的分组。这些辅助类一般为静态成员类。
③,从对象构建到方法调用都采用Builde ...
《effective java》之五:枚举和注解
第30条:用enum代替int常量:
public enum Operation {
PLUS("+") {
double apply(double x, double y) {
return x + y;
}
},
MINUS("-") {
double apply(double x, double y) {
...
《effective java》之四:泛型
第23条:请不要在新代码中使用原生态类型:
Set<Object>是个参数化类型,表示可以包含任何对象的一个集合;Set<?>则是一个通配符类型,表示只能包含某种未知对象类型的一个集合,既不能从里面拿到一个元素去赋值,也不能增加一个元素,可以删除。
第24条:消除泛型的非受检警告 unchecked warning:
如果无法消除警告,同时可以证明引起警告的代 ...
《effective java》之三:类和接口
第13条:使类和成员的可访问性最小化:
实例域决不能是公有的。如果域是非final的,或者指向的是一个可变对象的final引用,那么一旦这个实例域变成公有,这个公有域就不是线程安全的了,很有可能出问题。
第14条:在公有类中使用访问方法而非公有域
第15条:使可变性最小化:
为了使类成为不可变,遵循下面5条原则:
* 不要提供任何会修改对象状态的方法 mutator
* ...
《effective java》之一:创建和销毁对象
第1条:考虑用静态工厂方法代替构造器:
public class Services {
private Services() {
} // Prevents instantiation (Item 4)
// Maps service names to services
private static final Map<String, Provider> ...
Effective Java读书笔记、感悟——2.2 其余Object通用方法
最近一直在忙着完成作业,看书和写博客的进度大大受到折扣。假期回去把最近Nachos的实验重新做一遍,好好总结、测试过后写份博客,中间还是学到了很多东西,虽然学不到什么API的使用。不多说了,继续Java,这才是正道(要遭批斗的言论)。这次的博客中有很多问题都没有注意到,只是做了简单的笔记记录和一些小地方的注释,着重说明了hashCode,尤其clone没有更深入的探究,但是使用过程中有时候只是 ...
Effective Java读书笔记、感悟——2.1对所有对象都通用的方法之equals
一:覆盖equals时请遵守通用约定
一直觉着equals挺实用也很简单,今天发现我大错特错了,包括以前的代码存在着很大的问题,以后使用equals必须要谨慎对待,因为此处带来的问题会。
1. 关于原则:
à不保证equals传入的是与自己相同的类的对象,一定要保证两个对象的equals返回相同的值,因此我们平时编程的时候才可以从不关注equals的参数是哪个。
à要 ...
Effective java: 覆盖equals时总要覆盖hashCode 的探究
在Effective Java中的第九条说:覆盖equals总要覆盖hashCode。
“一个很常见的错误根源在于没有覆盖hashCode方法,在每个覆盖了equals方法的类中,也必须覆盖hashCode方法。”
以下约定内容摘自Object规范[JavaSE6]:
1. 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 ...
Effective Java读书笔试之创建和销毁对象
Effective Java读书笔试之创建和销毁对象
1.考虑用静态工厂方法代替构造函数
静态工厂方法的第一个好处是,与构造函数不同,静态工厂方法有名字,接口有更好的类型表达能力。
静态工厂方法的第二个好处是,与构造函数不同,它每次被调用的时候,不要求非得创建一个新的对象,特别是对于不变对象而言,可以在被调用时返回同一个对象的引用,重用对象.
...