浮躁要付出代价,需要回炉

request.getSession

request.getSession(false)

HttpServletRequest.getSession(ture) 等同于 HttpServletRequest.getSession()

HttpServletRequest.getSession(false) 等同于 如果当前request没有Session就为null;

经常会看见这样的

// a new session created if no session exists, 完蛋!如果session不存在的话又创建了一个!
HttpSession session = request.getSession(); 
String user_name = session.getAttribute("user_name");

除非确认session一定存在或者sesson不存在时明确有创建session的需要,否则尽量使用request.getSession(false)

用request.getSession(),通常在action中检查是否有某个变量/标记存放在session中

可能出现没有session存在的情况,正常的判断应该是这样:

HttpSession session = request.getSession(false);
if (session != null) {
    String user_name = session.getAttribute("user_name");
}

org.springframework.web.util.WebUtils.getSessionAttribute(HttpServletRequest request, String name)

public static Object getSessionAttribute(HttpServletRequest request, String name) {
    Assert.notNull(request, "Request must not be null");
    HttpSession session = request.getSession(false);
    return (session != null ? session.getAttribute(name) : null);
}

mysql filesort

内存不够,外部临时文件排序?

事实上Using filesort是一个非常差的命名。真实情况是,如果排序操作不能通过索引来完成,这次排序操作就叫做filesort,跟file没有任何关系。实现就是快排

serialVersionUID

反序列化对象时,确认类版本是否兼容。版本不一致,InvalidClassException

可序列化类没包含serialVersionUID,运行时根据类特征自动计算出一个serialVersionUID。默认的这个实现似乎更省事? 不同编译器实现可能计算出不同的serialVersionUID