Skip to content

Commit

Permalink
aa
Browse files Browse the repository at this point in the history
  • Loading branch information
aalansehaiyang committed Jun 29, 2016
1 parent fe404f0 commit 736ca8e
Show file tree
Hide file tree
Showing 7 changed files with 149 additions and 17 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)



Expand Down
2 changes: 1 addition & 1 deletion basic-knowledge/concurrent-class.md
Original file line number Diff line number Diff line change
Expand Up @@ -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不同的是,它可以循环重用。

Expand Down
1 change: 1 addition & 0 deletions basic-knowledge/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
* NIO
* ClassLoader
* [java修饰词](java修饰词.md)
* [各种坑](各种坑.md)


### 进阶
Expand Down
28 changes: 28 additions & 0 deletions basic-knowledge/各种坑.md
Original file line number Diff line number Diff line change
@@ -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.
15 changes: 0 additions & 15 deletions open-source-framework/Apache-common.md

This file was deleted.

60 changes: 60 additions & 0 deletions open-source-framework/commons-codec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## commons-codec

---

commons-codec是Apache下面的用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64,URL,Soundx等等。 不仅是编码,也可用于解码。


### pom依赖

```
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
```


#### 常用工具类:
* 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
Expand Down
57 changes: 57 additions & 0 deletions open-source-framework/commons-lang3.md
Original file line number Diff line number Diff line change
@@ -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依赖

```
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
```
#### 常用工具类:
内容虽然有点多,但我们使用最多还是一些有用的包含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
Expand Down

0 comments on commit 736ca8e

Please sign in to comment.