Issues List

  1. 文件监听
    使用文件监听时需要注意,接受到文件创建事件时。当前文件写入工作不一定完成。所以受关注的文件不应当直接在受监控的目录下创建,而应该创建临时文件然后copy到受监控的目录
  2. Base64
    将参数通过Base64编码然后提交到服务器,“+” 号被替换为空格
  3. 慎用File#renameTo
    File#renameTo不等同于mv,不能再不同文件系统间移动文件。例如:
//centos filesystem:xfs
Path tempFile = Files.createTempFile(null, null);
// write something to tempFile
// filesystem ext4 
File dest = new File("/data/something.txt");
boolean suc = tempFile.toFile().renameTo(dest)
//会返回false,文件移动失败

当遇到多文件系统的时候,请尽量避免使用File#renameTo(File)方法,可是使用apache的commons-io包去替换,避免一些潜在BUG。

  1. 注意Java8 多个 Stream 流同时执行时,顺序是不固定的
  2. Java8 Stream Collector.groupBy 默认采用HashMap收集结果,而HashMap是无序的。如果你对结果有顺序要求,请显示指定LinkedHashMap::new(可以记录插入的顺序)以确保集合顺序被延续到新的结果集。
//思考这样一段代码
List numList= Arrays.asList(1, 2, 2, 3, 3,3, 4,4,4,4)
Map numCountMap = numList.stream().collect(Collector.groupBy(w ->w, Collector.counting()))
// 期望结果
numCountMap << [{1, 1}, {2, 2}, {3, 3}, {4,4}]
// 实际上顺序是不能被保证的,你应该采用下面的方法保证numList的顺序被传递到numCountMap

Map numCountMap = numList.stream().collect(Collector.groupBy(w ->w, LinkedHashMap::new, Collector.counting()))
  1. 如果新引入的特性不能在短时间内验证,应该立即回归主线。

你可能感兴趣的:(Issues List)