以下的经验是在开发统计模型项目的时候总结在自己笔记本上的,现在总结一下传到线上。
1)开发时,要特别注意线程池的创建,不要每次new出新的线程池实例,最好是定义一个static的固定大小的线程池。
2)对于共享数据的使用,尽可能地减少数据冗余;如果非要对同一份数据进行备份,那么需要处理好两份数据的同步关系。如果数据是只读的,那可以多次备份。
3)对请求使用的线程池,慎用shutdown方法,shutdown只是将线程池的状态设置为SHUTWDOWN状态,正在执行的任务会继续执行下去,没有被执行的则中断,线程池不再接受新的任务。
4)对于涉及流程的应用,流程相关的数据处理、保存于业务数据的处理保存应当保持相对独立,最好将业务数据的操作封装在独立的方法中。因为流程和业务往往是可以独立存在的,两者不应该有着紧密的耦合。
5)Spring相关
1.Spring初始化时会为每一个controller实例注入属于它们各自的service实例。(同一个service被不同的controller注入时,会生成不同的实例)
2.对于同一个controller而言,每次请求调用的service实例都是同一个。所以,对于service实例中的成员变量的修改会被不同请求共享。如果需要每个请求能够独享一个service实例中的成员变量,则不能通过@AutoWired来注入service, 而应该用new关键字。
6)统计模型项目
1.对于不同的统计主体,可以抽象一个父类,包括数据id,主体id, 名称,统计时间等属性。