使用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或者Map这种形式的集合时,你是否考虑在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,而不关心子线程的问题。     因为老婆大人不在家,我一个人闲着没事儿,在分析了这个案例原因之后分享一下导致问题的原因及解决此类问题的一般思路,以供以后有需要的朋友参考。     案...

java string常量池的那些'坑'

admin 发布于 [2014-06-05 22:43:58.0] string java常量池 反射 constant pool

    今天在一技术讨论群里,有一兄弟问了一个问题,大致如下: String s0="Hello World"; String s1=new String("Hello World"); Field field = String.class.getDeclaredField("value");   field.setAccessible(true);   char[] value = (char[])field.get(s0);   value[0]='a'; //打印出s1和s0的值是分别是什么?     了解java常量池的朋友看了这个代码,第一印象一般都是s0指向的是常量池中...

使用Commons Email组件开发java 邮件程序

admin 发布于 [2014-06-02 11:19:40.0] Commons Email java mail email java邮件

    记得我以前在使用java邮件API编写邮件发送程序时,都会感觉异常的繁琐:各种邮件相关的概念抽象,要花一个较长的时间去理解与领悟;写出来的程序特别的繁琐,可读性上也有很大的不足。所以就希望能在java mail api标准接口上做一个更加人性化的包装,让邮件相关程序开发工作变的更加方便,直到我了解了commons email这个小组件。     commons email是apache基金会commons项目下的一个子项目,是为了广大javaer更加方便的编写邮件程序而生的一个小组件,个人感觉这个小组件能极大的减少邮件程序代码量,方便开发人员更快的开发出稳健的邮件程序。如果你还在用ja...