处理问题的方式

1. 测试代码的时候,如果某段代码效率特别差,可以通过注释部分代码的方式以确定问题代码的位置。测试的时候一定保证只有一部分代码在执行,排除其他干扰。

2. 日志记录:

    1). 要有详细的日志记录,方便出错时查找。

    2). 在开发的时候可以将一些日志级别设为DEBUG,代码中增加一些debug级别的日志记录,方便调试。

         真正发布项目的时候再将日志级别改为info,那么debug级别的日志就不会记录下来。

    3). 为了防止代码中出异常,而导致相关日志没有记录。我们可以考虑将一些操作放到finally中。例如,在之前的代码中增加一个标识符,如:flag = false , 

         若出现异常,在异常捕获中将状态改为true ,最后在finally中统一处理。

3. 如果需要记录某些日志型内容到数据库或文件中,一个一个记录比较麻烦。可以考虑,批量记录。一般情况下:一个主线程执行任务,一个辅助线程定时来记录数据。

    这里要考虑数据在内存中的保留和同步问题,可以借助concurrent 包下面的一些类,如:BlockQueue类型的队列,来临时存储数据,供辅助线程使用。

4. 程序中如果使用线程,最好给线程一个名称,以方便监控。使用线程自己的命名可能会导致命名重复。

5. 为防止数据在传输过程中丢失,可以将考虑将数据放到一个中间件中,如:数据库,ActiveMQ

6. 缓存中数据的处理:为了提高代码效率,我们可以考虑将一部分数据库内容加载到内存中。但数据库会有插入、更新操作,为了防止这部分数据丢失。有两种方式处理:

    1). 当我们去缓存中查询不到想要的数据时,再去数据库中查询,看是否有想要的记录,如果有,获取并将数据放到缓存中。

    2). 定时任务更新缓存。

    上面两种解决方式中的问题,第一种方式,如果数据库中的数据被更新了,很可能导致缓存和数据库中数据不统一。第二种方式的时效性可能不太好。

7. 如果某一任务要频繁的连接数据库,可以考虑使用单例模式。

8. 获取文件路径的两种常用方式:

    1). System.getProperty("user.dir")          // 注意Tomcat下获取的是tomcat中的bin目录,直接使用jar文件的项目中可以考虑。

    2). Test.class.getResource("/").getPath()   // 获取Tomcat中部署项目的classes目录

9. 一个要一直运行的循环或程序中,要注意异常的处理。保证即使出现异常,也不要让程序停下来。

 

原文地址:https://www.cnblogs.com/Jtianlin/p/4264024.html