1. int i = 016; 打印 i 结果是14
可能的场景:访问一个ip,数字前多了一个0时...
2. MD5加密:只要明文一样,加密后的值也是一样的
拼接的字符串作为key,如果字符串过长,可以用MD5加密后作为Key,保证长度一致
3. 使用readLine()一定要注意:
- 读入的数据要注意有/r或/n或/r/n
- 没有数据时会阻塞,在数据流异常或断开时才会返回null
- 使用socket之类的数据流时,要避免使用readLine(),以免为了等待一个换行/回车符而一直阻塞
4. String temp = null; String s = String.valueOf(temp);
5. 优先使用TimeUnit类中的sleep()
TimeUnit.SECONDS.sleep(
4
);
TimeUnit.MINUTES.sleep(
4
);
TimeUnit.HOURS.sleep(
1
);
TimeUnit.DAYS.sleep(
1
);
"knownObject"
.equals(unknownObject)
StringUtils.isEmpty(
null
)
StringUtils.isAllUpperCase(
null
)
StringUtils.isNumeric(
null
)
StringUtils.isBlank(
null
)
List result = Collections.EMPTY_LIST;
return
result;
transient
volatile
int
modCount;
),当你调用它的next()方法来获取下一个元素时,迭代器将会用到这个计数器8. transient 和 volatile
File fout = new File(file_location_string); FileOutputStream fos = new FileOutputStream(fout); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos)); out.write("something");
FileWriter fstream = new FileWriter(file_location_string); BufferedWriter out = new BufferedWriter(fstream); out.write("something");
FileOutputStream是用来输出原始字节流的,如图像数据。 若要输出字符流,则使用FileWriter (FileWriter是典型的装饰者模式)
11. 字符串连接 参考:http://www.blogjava.net/javagrass/archive/2010/01/24/310650.html
当你连接2或3个String时,使用String.concat()。
如果你要连接多于3个String(不含3),并且你能够精确预测出最终结果的长度,使用StringBuilder/StringBuffer,并设定初始化容量。
如果你要连接多于3个String(不含3),并且你不能够精确预测出最终结果的长度,使用StringBundler。
如果你使用StringBundler,并且你能预测出要连接的String数量,使用指定初始化容量的构造函数。
12. replace和replaceAll区别 参考:http://hi.baidu.com/yyyj11/item/ca68207c0cab163c6f29f643
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\d", "*")把一个字符串所有的数字字符都换成星号;
13. 为什么要加上logger.isInfoEnabled()?
在高并发和复杂log信息拼接的情况下,使用这种标准的方法输出log能够省去不小的系统开销,
另:只要判断logger.isDebugEnabled和logger.isInfoEnabled方法,ERROR及其以上级别的log信息是一定会被输出的