【转】泛型的美与丑

admin 发布于 [2014-07-13 15:09:28.0] java泛型

‍‍ 你理解泛型了吗         随便看一下你就会发现Java的许多框架中都用到了泛型。从WEB应用框架到Java集合框架本身。这个话题已经有不少人讲过了,这里我只列出一些我认为比较有价值的资源,以及一些别人没有提及过的东西,或者是没有讲得那么细的。因此如果你不太了解泛型的核心概念的话,你可以参考一下下面这些资料: SCJP Sun Certified Programmer for Java 6 Exam 对我而言,这本书主要是为了准备Oracle的OCP认证考试的。不过后来我发现书中介绍泛型的部分,对于想了解泛型和学习如何使用的人非常有帮助。非常值得一读,不过该书是基于Java 6的,要

ngCloak 实现 Angular 初始化闪烁最佳实践

admin 发布于 [2014-07-07 22:59:16.0] angularjs ngCloak 闪烁

    在做angular的SPA开发时,我们经常会遇见在如Chrome这类能够快速解析的浏览器上出现表达式({{ express }} ),或者是模块(div)的闪烁。对于这个问题由于JavaScript去操作DOM,都会等待DOM加载完成(DOM ready)。对于angular会在DOM ready完会才回去解析html view Template,所以对于Chrome这类快速的浏览器你会看见有闪烁的情况出现。而对于IE7,8这类解析稍慢的浏览器大部分情况下是不会出现这个问题的。     在angular中为我们提供了ng-cloak来实现纺织闪烁的方案,我们只需要在需要的地方加上ng-

使用nginx rewrite功能

admin 发布于 [2014-07-06 23:58:08.0] nginx rewrite www

    一段时间以来,小站一直可以通过coolskill.net和www.coolskill.net访问,不过我不太喜欢对同一个文章有两个看起来不同的URL地址,所以决定将请求都路由到www.coolskill.net上去。这里就用到了nginx的rewrite的功能。具体的做法就是修改nginx的配置文件,如下:     server   {         server_name coolskill.net;         return  301 $scheme://www.coolskill.net$request_uri;   }     通过上面的配置,就可以直接将host

tomcat源码阅读之request(一)

admin 发布于 [2014-07-05 17:44:43.0] tomcat 乱码 源码 getParameter setCharacterEncoding

    周末没啥事儿,打开很早之前下载的tomcat 7.52源码,随意打开几个以前没有阅读过的类走马观花式的看了看。在看HttpServletRequest tomcat实现的时候发现一个关于setCharacterEncoding字符集的挺有意思的小细节,记录一下。     平时大家如果在遇到乱码的时候,都会使用request.setCharacterEncoding这个方法来设置一下代码编码格式。今天在看这个类代码的时候,发现如下细节:     setCharacterEncoding方法的部分代码如下,就是验证一下字符集是否有效,并将新的字符集参数设置到解码器需要的地方:     pu

【转】javascript知识之this

admin 发布于 [2014-07-05 17:22:54.0] javascript javascript_this

    JavaScript 是一种脚本语言,因此被很多人认为是简单易学的。然而情况恰恰相反,JavaScript 支持函数式编程、闭包、基于原型的继承等高级功能。本文仅采撷其中的一例:JavaScript 中的 this 关键字,深入浅出的分析其在不同情况下的含义,形成这种情况的原因以及 Dojo 等 JavaScript 工具中提供的绑定 this 的方法。可以这样说,正确掌握了 JavaScript 中的 this 关键字,才算迈入了 JavaScript 这门语言的门槛。   在 Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象。一般在编译期确定下来,

guava使用介绍之EventBus

admin 发布于 [2014-06-22 10:25:18.0] guava EventBus

    EventBus,事件总线,guava基于观察者模式的优雅实现。对于事件监听和发布订阅模式,使用guava eventbus可以省去开发人员很多事情,不用在去定义那些复杂的类或接口来实现事件发布与订阅。在guava eventbus中,开发人员只需要在订阅方法上添加上@Subscribe注解就可以了,这样一来就省去了大量共用的编码工作。guava eventbus提供了同步或者异步消息发布的实现,用户可以根据需要编写相关的代码。使用异步消息时需要通过一个Executor来辅助。     EventBus中的事件可以了是任意类型的,事件分发的时候只需要根据订阅参数类型来分发消息,如果编码

使用guava 实现java的一致性hash

admin 发布于 [2014-06-21 10:58:41.0] 一致性hash Consistent-hashing 线性同余 lcg

    一致性hash算法,顾名思义,尽量让hash结果能一致。可以应用在分布式、集群环境中的请求分发,分布式缓存等场景之中。为了在集群节点的动态调整的时候,不会在rehash的时候导致大量的前后hash运算结果不同问题,这就是要解决的hash一致性问题,而hash一致性算法要解决的就是这种动态调整hash容器大小这后保证尽可能小的影响到hash结果。关于这个问题的一些基本概念可以参考 http://en.wikipedia.org/wiki/Consistent_hashing 上的解释,本文介绍一种源自guava中的实现,看了代码后,整体思路特别简单,和大家分享一下。     通过guav

guava collections 专题

admin 发布于 [2014-06-19 22:58:33.0] google-collection guava

    在日常编码中,大量的使用诸如Map<K, List>或者Map<K, Set>这种形式的集合时,你是否考虑在java collection的基础之上在封装些更加合适的集合类型呢?日常编码中有没有遇到过一些不可变的集合呢?同样,你一样可能需要一种双向map来实现key-value的互相映射。上面的这些小小的功能需求,其实都可以通过guava collection来实现。这里我只是简单的介绍一下在guava中我们可以怎么样优美的实现前面的需求: Immutable Collections     在immutable collections方面,java Collections 框架提供了

java AccessController.doPrivileged

admin 发布于 [2014-06-15 23:19:28.0] java AccessController doPrivileged

    在各种开源框架中,都会存在使用AccessController.doPrivileged方法的代码,代码形式如下:             CACHE_SIZE = AccessController.doPrivileged(                     new PrivilegedAction() {                     @Override                     public Integer run() {                         return Integer.valueOf(            

junit测试多线程的某些"坑"

admin 发布于 [2014-06-07 21:25:48.0] junit 多线程 子线程

    晚上在OSC上看到有个javaer问了一个关于多线程的小问题,导致问题的原因是他使用了junit进行了多线程程序的测试,结果忽视了junit框架测试的一些制约因素,在我的机器IDE(eclipse 4.2/org.eclipse.jdt.junit.runtime_3.4.300.v20120523-1257)环境中,junit会在普通的test案例方法执行完成后,直接调用System.exit退出JVM,而不关心子线程的问题。     因为老婆大人不在家,我一个人闲着没事儿,在分析了这个案例原因之后分享一下导致问题的原因及解决此类问题的一般思路,以供以后有需要的朋友参考。     案