hello,各位很久不见啦。因为换工做,找房子这一系列事情都推在了一块儿,因此最近停更了一个多月。如今全部的事情都已尘埃落定,我也能够安安静静的码字(装X)啦。正则表达式
从这周开始,多了一个系列是每周的总结,今天是第一期哦。每周总结主要是平时工做中遇到的问题,有时候百度了很久才找到的答案,不记录一下,下次又要花时间百度啦。算法
话很少说,咱开始啦。bash
首先来讲一下背景,须要查询名称为“XXXX”的数据,而且为第二级路径,他的路径bh为String类型的,以"."隔开。数据结构简化以下:数据结构
作法一目了然啊,先经过名称查询全部知足条件的记录,而后for循环这个list,若是路径用split生成的String数据长度为2,那就是要找到的记录。ide
因而我就愉快的写代码(bug)啦,而后就华丽丽的踩坑了。ui
找到了名称为“XXXX”的数据list,接下来就是遍历啦。而后我发现split出来的length始终为0。this
迅速百度,找到了答案。spa
里面的参数要的是正则表达式,点在正则表达式中.是有意义的 正则表达式,原本是要写成\.,但由于是JAVA中,\又是转义符,因此要再加一个,就成了 \\.
因此用.split("\\.")或者[.]就行。code
今天群里贴了一张图,说线上环境报错了,我一看,就是我写的bug啊,但是本地跑的,没啥问题的。具体问题以下图。cdn
百度了一波,知道了原来我本地使用的jdk1.6的版本,而线上环境使用的是jdk1.7的版本,这个报错正好是jdk1.7以上版本会出现的。
下面举个例子:
@Override
public int compareTo(xxx o) {
return this.getPublishTime().getTime() < o.getPublishTime().getTime() ? 1 : -1;
}复制代码
上图的代码在jdk1.6的版本是正确的,由于1.6的版本没有对排序大小进行严格的校验,只有1和-1,没有0。而1.7的版本使用了新的排序算法timsort,是对排序大小进行严格校验的。简单来讲,这个算法在实现过程当中明确须要用严格的单调递增或者递减来保证算法的稳定性。
因此在上述代码加上判断,多返回0值就行。