2013年12月Reading Notes

December 08, 2013

如何处理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. 使用

    1
    <mvc:default-servlet-handler/>
    

    通过使用DefaultServletHttpRequestHandler来把静态资源文件丢给容器处理,和方式一做的事情一样,这种方式兼容多种web容器,ide友好。使用这个一般是在

    1
    DispatcherServlet
    
    映射为
    1
    /
    
    时,让静态资源继续交给容器处理。其实这种方式的性能不好,因为
    1
    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请求,方便测试

一次技术问答

## 一次技术问答最近一年多都没有写博客了,技术上做了很多有意义的事情,也有一些经验上的积累,逐步沉淀到博客上。今天回答某公司的技术上的一些疑问,把问题和回答贴上来。逐步`养`自己的技术观。### 1. 如何做数据安全防范?还有哪些支付安全需要注意?数据安全防范主要分为两个...… Continue reading

2016年05月Reading Notes

Published on August 10, 2016

2016年05月Reading Notes

Published on June 19, 2016