SLF4J(Simple logging facade for Java),不同于其他日志类库,它不是一个真正的日志实现,而是一个抽象层( abstraction layer),就比如JDBC一样,只是一种规则而已。它允许你在后台使用任意一个日志类库。
为什么要使用slf4j,为什么不适用具体的日志实现方案?想象一下下面的场景:
有一个别人写的很棒的类库,里面使用的是jdk自带的java.util.logging.Logger这个日志系统,现在你有一个程序需要用到这个类库,并且你自己的程序现在是使用apache的org.apache.log4j.Logger这个日志系统。那么问题来了,如果你的程序导入了这个类库,那么是不是必须两种日志系统都要支持,那么你是不是需要多配置一些东西,多维护一些东西?耗费了太多维护成本,你想死的心都有了吧?
解决方案就是:使用slf4j。
一篇非常好的find命令介绍,里面有15种find的常用方法.详见 妈咪,我找到了! – 15个实用的Linux find命令示例
关于正则表达式的介绍,浅显易懂. 正则表达式30分钟入门教程.
java native关键字. Java native 关键字
Java编码问题 深入分析 Java 中的中文编码问题
IBM MQ 教程 WebSphere MQ 教程
众所周知,Date(日期),Calendar(日历),DateFormat(日期格式)是Java一个非常重要的部分。但JAVA8之前,日期的处理太恶心了,先来吐糟一下.
1.很早之前,Date既要承载日期信息,又要做日期之间的转换,还要做不同日期格式的显示,职责较繁杂. 从jdk1.1开始,这3个职责分开了.
a. 使用Calendar类实现日期和时间字段之间转换.
b. 使用DateFormat类来格式化和分析日期字符串.
c. Date只用来承载日期和时间信息.
Apache log4j 官方API介绍类DailyRollingFileAppender,
有这样一段话DailyRollingFileAppender has been observed to exhibit synchronization issues and data loss.
。
参考文章:http://hellojavaer.iteye.com/blog/977599
下面来说明一下log4j的多进程同步问题.
CountDownLatch存在于java.util.concurrent包下, 这个类能够使一个线程等待其他线程完成各自的工作后再执行。
CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。