2013年12月Reading Notes

如何处理web静态文件

spring mvc 处理静态资源文件

在spring mvc中,通过三种方式来处理静态资源

  1. 激活Tomcat的defaultServlet来处理静态文件

    参考tomcat config目录下的web.xml,这种方式IDE不友好,IDE会报找不到default servlet

  2. 在spring3.0.4以后版本提供了mvc:resources

    可以读取WEB-INFO和jar包里面的资源文件,也可以控制浏览器缓存

  3. 使用<mvc:default-servlet-handler/>

    通过使用DefaultServletHttpRequestHandler来把静态资源文件丢给容器处理,和方式一做的事情一样,这种方式兼容多种web容器,ide友好。使用这个一般是在DispatcherServlet映射为/时,让静态资源继续交给容器处理。其实这种方式的性能不好,因为DispatcherServlet里执行了一大坨代码。

前端页面优化

前端页面优化,可以用yslow(yahoo强大的web团队推出的精品)、chorme audit、PageSpeed来评估

只用apache的童鞋可以考虑使用modpagespeed,结合apache的内存缓存,减少服务器IO开销。

比较理想的方式还是在web服务器加上一个反向代理服务器(varnish、nginx),它来缓存静态资源文件

开源的公共js、css库,可以考虑各种开源cdn服务,鉴于国内的网络情况,推荐两个国内的cdn:

避免Java应用中NullPointerException的技巧和最佳实践

http://www.importnew.com/7268.html

  1. 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象。
  2. 当valueOf()和toString()返回相同的结果时,宁愿使用前者。
  3. 使用null安全的方法和库(spring和guava都提供了相关工具)
  4. 避免从方法中返回空指针,而是返回空collection或者空数组。
  5. 使用annotation@NotNull 和 @Nullable(目前是想起了才用,得强迫自己加上了)
  6. 避免你的代码中不必要的自动包装和自动解包。
  7. 遵从Contract并定义合理的默认值。
  8. 定义数据库中的字段是否可为空。
  9. 使用空对象模式(Null Object Pattern)

如何优雅地使用 Windows 系统?

http://daily.zhihu.com/story/395

不离不弃windows很多年了,令人恶心的超级本天天让我纠结,下次一定换MAC。不过还是先将就下。

tomcat进程关闭时收集dump信息

https://gist.github.com/bohrqiu/6518715

给gist加个超链接

PhantomJS

http://phantomjs.org/

PhantomJS 是一个基于webkit的无界面浏览器,它提供了js api来实现dom操作、css选择器、json、canvas、svg

PhantomJS适用于下列场景:

貌似速度比Selenium快,用它来抓取页面数据应该很happy。官方有很多栗子,可以深入挖掘下。

Advanced REST client

https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

构造一个rest请求,有时候有点麻烦,借助Advanced REST client,可以很方便的chrome中构造一个REST请求,方便测试

给攻城狮一个小小的鼓励!