1. 监控内存使用情况的时候,可能某个时间点,内存突然降下来了,这可能是因为垃圾回收器回收的作用。
2. su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。
3. linux 中,日志在打印,并不一定还未发送完毕,有可能只是日志还未打印完成。
4. 文件备份:上传文件:fileName_date.tar.gz 备份文件:fileName_date_backup.tar.gz
5. Thread休眠写代码上面,或写finally中。防止代码错误疯狂的打印错误日志。
6. 数据是无状态还是有状态,考虑使用数据库过渡
7. 保证数据不丢失,可以考虑使用集群,不要把数据放到JVM队列中,JVM停了数据可能会丢失。
8. 缓存一般缓存有效数据
9. 软件实在找不到问题,考虑硬件的问题
10. 数据库连不上储存,让系统工程师去查硬盘的问题
11. 分布式,防止数据丢失,横向扩展,纵向扩展
12. Charset charSet = StandardCharsets.UTF_8;
Charset charSet = Charset.forName("GB2312");
CharBuffer charBuf = charSet.decode(buf); // 解码
charSet.encode(charBuf) // 编码
13. 编码错乱导致CRT死机
14. 通过VNC获得图形界面环境。
15. 有些时候项目启动不了,打印完日志后就停了或报错。出错的地方可能是刚打印出日志部分,也可能是即将要打印日志部分。
16. 把程序中的一些内容写到配置文件中,一般可采用绝对路径,直接定位到某一位置。
17. 考虑使用单例模式,避免每次建立带来的资源消耗,如:数据库连接。
18. 数据库中表比较大,查询比较慢时,可以考虑缓存。缓存包括缓存到内存和硬盘(文件)。
19. 学会思考,你的项目的关键点在哪,效率的关键点。
20. 数据库版本不同,使用的jar包不同,可能会导致很多问题。可以去安装好的数据库文件中找jar包。
21. 有些机房可能不想外部用户能直接访问所有服务器,一般会开放一台公网,作为与外界交互的中转站。我们可以通过CRT建立通道来访问这些服务器。
22. 直接将linux上的文件拉下来,可能里面的文件属性(如:可执行等)可能会失效。所有一般应该打tar包后拷贝出来。
23. 使用反编译工具反编译jar包和class文件。
24. 硬盘如果有问题,可能会导致系统装不上。如果配置好网络后,始终连不上,可以考虑检测网线是否连好。
25. 在linux打tar.gz包的时候,如果有文件在变化,可能会出错。可以考虑先拷贝一份或者停止所有服务,然后再打tar包。
26. 某些时候数据库中数据不断累积会产生很多无用数据,我们可以启动定时任务删除这些数据。但删除之前可能需要统计这些数据,而在统计和删除之前还有新的数据在
不断的进入。为了避免统计和删除之间新数据进入的影响,我们可以考虑删除和统计当前时间五分钟之前或其他时间段是之前的数据。
27. 测试代码发送消息有时候有回复,有时候没有。有可能是消息被别的程序接收了。可以通过 :netstat -a|grep pid ,来查看某个监听的所有链接。
28. 出现错误去找日志,不要自己在那空想。
29. 写代码时,遇到暂时处理不了的问题或测试时加测试代码,标记为TODO。问题解决或测试完后,记得删除测试代码。
30. 遇到问题和异常,不要去猜,去日志和网上找答案。
31. 实体类中增加toString方法,方便记录日志