2017.02.14

1.controller中,如果设置某个http接口,入参设置了required = true,那么如果在调用http接口时,没传参数。就会报404错误。因为你要求必须传参数了,这种情况下即使URL路径对,但没传参数,依然会报404错误,代表没有对应的路径。

2.ResponseStatusExceptionResolver

用来支持ResponseStatus的使用,处理使用了ResponseStatus注解的异常,根据注解的内容,返回相应的HTTP Status Code和内容给客户端。如果Web应用程序中配置了ResponseStatusExceptionResolver,那么我们就可以使用ResponseStatus注解来注解我们自己编写的异常类,并在Controller中抛出该异常类,之后ResponseStatusExceptionResolver就会自动帮我们处理剩下的工作。

这是一个自己编写的异常,用来表示订单不存在:

@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="No such Order") // 404
public class OrderNotFoundException extends RuntimeException {
// ...
}
这是一个使用该异常的Controller方法:

@RequestMapping(value="/orders/{id}", method=GET)
public String showOrder(@PathVariable("id") long id, Model model) {
Order order = orderRepository.findOrderById(id);
if (order == null) throw new OrderNotFoundException(id);
model.addAttribute(order);
return "orderDetail";
}
这样,当OrderNotFoundException被抛出时,ResponseStatusExceptionResolver会返回给客户端一个HTTP Status Code为404的响应。

3.刚在复习多线程的时候突然有个疑问:
我们都知道WEB容器对于每个请求都是启动一个多线程来处理,那不是所有业务层的代码都要考虑到同步问题。举两个场景:
1. 业务层类有个全局变量count,某个方法使count++,如果两个请求同时调用该方法,count不就有可能+2了,反正就是典型的同步问题。我的意思就是所有业务层代码都要考虑同步?

4.每次访问action都是重新new的,但是service都是用的同一个(典型的ssh场景),因此如果在service里定义了共享变量,就需要考虑同步问题。
5.1.在String类中的hashCode是根据String类中包含的字符串获取的,根据哈希算法获取到一个哈希码,那么只要我的字符内容是相等的,我的哈希码也是相同的。
3.Object类中的hashCode则和之前的不一样了,他是根据对象的内存地址经过哈希算法之后获取到的哈希码,由于每个对象的内存地址不相同,所以hashCode是不同的。
所以我们一般用string作为hashmap的key,这样能节省下来自己写hashcode。
只要key不一样,value可以随便相同的。因为要确保hashcode的key不一样。
hashTestClass.addToHashMap("1", user1);
hashTestClass.addToHashMap("2", user1);
这样是随便可以的。

6.hashmap怎样遍历?
Iterator<Entry<String, User>> iterator = usersHashMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, User> entry1 = iterator.next();
String nameString = entry1.getValue().getNameString();
logger.info(nameString);
}
效率高,以后一定要使用此种方式!
第二种:
  Map map = new HashMap();
  Iterator iter = map.keySet().iterator();
  while (iter.hasNext()) {
  Object key = iter.next();
  Object val = map.get(key);
  }
  效率低,以后尽量少使用!

原文地址:https://www.cnblogs.com/panxuejun/p/6402739.html