文章标题

来源:互联网 发布:北京淘宝客服简历模板 编辑:程序博客网 时间:2024/06/18 10:53

★★Maven_ssh整合构建★★

Subject to normal distribution [2017/7/3 17:13]

1,如果直接与间接依赖中包含有同一个坐标不同版本的资源依赖,以直接依赖的版本为准(就近原则)

2,如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的版本为准(就近原则)
TODO_list
1. 单点登录sso_jwt
2. hashmap的jdk1.7/1.8对比
3. https://tonydeng.github.io/page/4/

一 .新建crm_parent父工程出现错误,先clean 在install 或者直接build reindex

  1. 乱码解决
    *-Dfile.encoding=UTF-8
  2. service 调用dao层 先在父工程parent 上面install build success 后执行service testService.java 就可以成功了
  3. 或者进行重新索引在maven repository里面 build reindex
  4. service 中import dao层的配置文件.xml 在web 层里面不要dao 了,因为已经有了,maven 的生命周期是compile test install deploy
  5. 珍惜时间复习ssh_bobo/记得预习,记得预习,记得预习

二 .2. fail-fast

如果在使用迭代器的过程中有其他线程修改了map,那么将抛出ConcurrentModificationException,这就是所谓fail-fast策略。

这个异常意在提醒开发者及早意识到线程安全问题,具体原因请查看ConcurrentModificationException的原因以及解决措施

顺便再记录一个HashMap的问题:

为什么String, Interger这样的wrapper类适合作为键? String, Interger这样的wrapper类作为HashMap的键是再适合不过了,而且String最为常用。因为String是不可变的,也是final的,而且已经重写了equals()和hashCode()方法了。其他的wrapper类也有这个特点。不可变性是必要的,因为为了要计算hashCode(),就要防止键值改变,如果键值在放入时和获取时返回不同的hashcode的话,那么就不能从HashMap中找到你想要的对象。不可变性还有其他的优点如线程安全。如果你可以仅仅通过将某个field声明成final就能保证hashCode是不变的,那么请这么做吧。因为获取对象的时候要用到equals()和hashCode()方法,那么键对象正确的重写这两个方法是非常重要的。如果两个不相等的对象返回不同的hashcode的话,那么碰撞的几率就会小些,这样就能提高HashMap的性能。

三 .fail-fast 快速失败

fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。
要了解fail-fast机制,我们首先要对ConcurrentModificationException 异常有所了解。当方法检测到对象的并发修改,但不允许这种修改时就抛出该异常。同时需要注意的是,该异常不会始终指出对象已经由不同线程并发修改,如果单线程违反了规则,同样也有可能会抛出改异常。
诚然,迭代器的快速失败行为无法得到保证,它不能保证一定会出现该错误,但是快速失败操作会尽最大努力抛出ConcurrentModificationException异常,所以因此,为提高此类操作的正确性而编写一个依赖于此异常的程序是错误的做法,正确做法是:ConcurrentModificationException 应该仅用于检测 bug。[1]

原创粉丝点击