From 736ca8ead6c540d7ed66adfe74e4201e72aa6a23 Mon Sep 17 00:00:00 2001 From: wenwan Date: Wed, 29 Jun 2016 16:52:22 +0800 Subject: [PATCH] aa --- README.md | 3 +- basic-knowledge/concurrent-class.md | 2 +- basic-knowledge/java.md | 1 + .../\345\220\204\347\247\215\345\235\221.md" | 28 +++++++++ open-source-framework/Apache-common.md | 15 ----- open-source-framework/commons-codec.md | 60 +++++++++++++++++++ open-source-framework/commons-lang3.md | 57 ++++++++++++++++++ 7 files changed, 149 insertions(+), 17 deletions(-) create mode 100644 "basic-knowledge/\345\220\204\347\247\215\345\235\221.md" delete mode 100644 open-source-framework/Apache-common.md create mode 100644 open-source-framework/commons-codec.md create mode 100644 open-source-framework/commons-lang3.md diff --git a/README.md b/README.md index fda85727..9b5a350f 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,8 @@ * memcache * fastJson * log4J -* [Apache common](open-source-framework/Apache-common.md) +* [commons-codec](open-source-framework/commons-codec.md) +* [commons-lang3](open-source-framework/commons-lang3.md) diff --git a/basic-knowledge/concurrent-class.md b/basic-knowledge/concurrent-class.md index 81dae07e..4042426f 100644 --- a/basic-knowledge/concurrent-class.md +++ b/basic-knowledge/concurrent-class.md @@ -24,7 +24,7 @@ * CyclicBarrier - cyclicBarrier中的await方法会对count值减1,并阻塞当前线程,直到直到count==0时先调用CyclicBarrier内部的Runnable任务,然后当前线程才继续往下执行,然后进入下一轮循环。 + cyclicBarrier中的await方法会对count值减1,并阻塞当前线程(java.util.concurrent.locks.Condition.await()),如果count==0时先执行CyclicBarrier内部的Runnable任务(java.lang.Runnable.run()),然后唤醒所有阻塞的线程(java.util.concurrent.locks.Condition.signalAll()),count恢复初始值(可以进入下一轮循环)。 与CountdownLatch不同的是,它可以循环重用。 diff --git a/basic-knowledge/java.md b/basic-knowledge/java.md index a5db553e..e0373288 100644 --- a/basic-knowledge/java.md +++ b/basic-knowledge/java.md @@ -11,6 +11,7 @@ * NIO * ClassLoader * [java修饰词](java修饰词.md) +* [各种坑](各种坑.md) ### 进阶 diff --git "a/basic-knowledge/\345\220\204\347\247\215\345\235\221.md" "b/basic-knowledge/\345\220\204\347\247\215\345\235\221.md" new file mode 100644 index 00000000..6ec3995c --- /dev/null +++ "b/basic-knowledge/\345\220\204\347\247\215\345\235\221.md" @@ -0,0 +1,28 @@ +## 各种坑 + +--- + +#### 1. SimpleDateFormat 不是线程安全的 + +使用过程不要定义为静态全局变量。 + +**正确使用:** + +``` + /** + * 时间是否是今天 + */ + public static boolean isToday(Long second) { + if (second == null) { + return false; + } + SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); + String today = sf.format(System.currentTimeMillis()); + String compare = sf.format(new Date(second * 1000L)); + return StringUtils.equals(today, compare); + } + +``` + + +#### 2. \ No newline at end of file diff --git a/open-source-framework/Apache-common.md b/open-source-framework/Apache-common.md deleted file mode 100644 index 9ac10eed..00000000 --- a/open-source-framework/Apache-common.md +++ /dev/null @@ -1,15 +0,0 @@ -## Apache common - -=== -### pom依赖 - -``` - - -``` - -#### 常用工具类: - * DigestUtils工具类 - 可以为快照对象生成一个32字符的摘要,可以有效对快照去重,节省资源空间 * BeanUtils - 利用java反射机制为对象赋值 ##### 参考资料: - http://www.cnblogs.com/jackyrong/archive/2006/10/15/529599.html \ No newline at end of file diff --git a/open-source-framework/commons-codec.md b/open-source-framework/commons-codec.md new file mode 100644 index 00000000..07971b83 --- /dev/null +++ b/open-source-framework/commons-codec.md @@ -0,0 +1,60 @@ +## commons-codec + +--- + +commons-codec是Apache下面的用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64,URL,Soundx等等。 不仅是编码,也可用于解码。 + + +### pom依赖 + +``` + + commons-codec + commons-codec + 1.9 + +``` + + +#### 常用工具类: + * DigestUtils工具类 + + 提供了多种编码方式的静态方法,用于对String、byte[]、InputStream等类型的数据编码。 + +**案例场景:** + +电子商务平台,买家对一件商品下单后,为了便于后面的纠纷处理,需要对下单那一时刻的商品信息备份(因为卖家随时会修改自己的宝贝信息),命名为快照。如果为每一个订单都保存一次商品详情显然不现实,DigestUtils可以很好解决这个问题。每次对整个商品详情数据编码得到一个32字符摘要,作为唯一id并关联到用户订单,并保存到数据库中。可以有效对快照去重,节省资源空间。 + +``` +import org.apache.commons.codec.digest.DigestUtils; + +public class DigestTest { + + public static void encodeStr(String data) { + String encodeS = DigestUtils.md5Hex(data); + System.out.println(encodeS); + } + + public static void main(String[] args) { + String data = "网销投连险是保险公司的一款保险产品,在互联网金融上还是很常见的。" + "比如京东天天盈,网易有钱零钱++。这些保险削弱了保险的保障功能,降低成本,从而提高保险的理财功能提高理财收益。" + + "投连险基本和银行结构性理财产品一样,信息披露度不高,但是有保险公司兜底,不至于整个平台跑路。" + + "投资投连险可以想象为投资一个起点低的银行理财产品吧。网销投连险一般都受益在4-6%,不承诺保本。" + + "经常爆出保险公司的保障型长期投连险出现投资亏损新闻,但是网销短期投连险投资型投连险目前没有出现亏损,基本也能按照预期收益兑付。" + + "网销投连险安全性和收益性都比较居中,短期产品危险系数不高,但是在债券违约的大环境下,长期产品安全性没有太大保障。" + "不过好在保险公司没有跑路风险,至少不会把本金损失殆尽啊。"; + + encodeStr(data); + } +} + +``` + +**运行结果:** + +``` +9901d04398f5b2adc0049c8c751e7411 +``` ##### 参考资料: + +http://commons.apache.org/proper/commons-codec/userguide.html + +https://commons.apache.org/proper/commons-codec/apidocs/index.html + diff --git a/open-source-framework/commons-lang3.md b/open-source-framework/commons-lang3.md new file mode 100644 index 00000000..4b228af9 --- /dev/null +++ b/open-source-framework/commons-lang3.md @@ -0,0 +1,57 @@ +## commons-lang3 + +--- + +**主要是提供一些基础的操作和处理,归为以下几类:** + +* org.apache.commons.lang3(高度重用的Util类,常用的工具类静态方法;重点) + +* org.apache.commons.lang3.builder(忽略) + +* org.apache.commons.lang3.concurrent(忽略) + +* org.apache.commons.lang3.event(忽略) + +* org.apache.commons.lang3.exception(忽略) + +* org.apache.commons.lang3.math(数字类型转换、大小比较、是否数字 等相关工具类;重点) + +* org.apache.commons.lang3.mutable(包装值型变量,为基础数据类型扩展了更多方法) + +* org.apache.commons.lang3.reflect(反射相关,忽略) + +* org.apache.commons.lang3.text(文本相关) + +* org.apache.commons.lang3.time(处理日期和时间的功能;重点) + +* org.apache.commons.lang3.tuple(忽略) + + +### pom依赖 + +``` + + org.apache.commons + commons-lang3 + 3.4 + +``` + #### 常用工具类: + 内容虽然有点多,但我们使用最多还是一些有用的包含static方法的Util类。 + * StringUtils – 处理String的核心类,提供了相当多的功能; + * NumberUtils - 类型转换(String->Long);取最大最小值;比较大小。所有操作都不会抛出异常,如果转换不成功返回0,0.0d,0.0f等形式,转换操作也可以指定默认值。 + * DateUtils -日期相关;是否同一天;时间+x;字符串转换成Date * ArrayUtils – 用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等; + * SystemUtils – 在java.lang.System基础上提供更方便的访问,如用户路径、Java版本、时区、操作系统等判断; + * WordUtils – 用于处理单词大小写、换行等。 + +* StringEscapeUtils – 用于正确处理转义字符,产生正确的Java、JavaScript、HTML、XML和SQL代码; + +* CharRange – 用于设定字符范围并做相应检查; + +* ClassUtils – 用于对Java类的操作,不使用反射; + +* Validate – 提供验证的操作,有点类似assert断言; ##### 参考资料: + +https://commons.apache.org/proper/commons-lang/javadocs/api-release/ + +http://zhoualine.iteye.com/blog/1770014 \ No newline at end of file