最近想研究一下公司的缓存,然后看到一点关于Java锁的东西,然后查阅了一些资料,学一点,记一点。
今天修改一个bug,需要取一个List和一个Set的交集,使用了双重循环。想着提高循环效率,每加入一个交集中的元素,就将List中的元素删除,减少不必要的循环。结果直接调用了List的remove()方法,抛出了java.util.ConcurrentModificationException异常。这时才忽然记起之前看过的List循环中使用remove()方法要特别注意,尤其是forEach的循环。
工作中碰到需要批量下载HTTP文件的需求,在实现过程中出现了一些问题,如下载的文件损坏、循环下载多个文件却只能下载到第一个文件。分析了一下问题,但是研究得不够深入,先记录。
工作上的项目可能又要经历一次重构,因为作为上游业务,我们做了太多控制下游业务逻辑的事情,使得项目之间的耦合很高,不利于功能的扩展和维护。因此想到了观察者设计模式,上游业务只负责通知,而不去控制下游怎么做,解除功能上的耦合。
使用IntelliJ IDEA还是有点水土不服,在写配置文件和访问服务器的路径上面吃了些亏,花了两天才将项目跑起来。搭建一个框架,需要注意的地方实在是太多了,一点不明白的地方,出了问题就不知道怎么解决,暂时我就先记下与SpringMVC整合的过程和碰到的一些问题。
按照网上的教程进行的整合,主要是将数据源datasource和sqlsession交给Spring去管理,数据源体现在将datasource的配置从原来的mybatis-config.xml文件中移到了spring的配置文件application.xml中,sqlsession体现在将写在测试方法中的session移到了spring的配置文件application.xml中。