auto commit

This commit is contained in:
CyC2018 2018-04-03 09:54:51 +08:00
parent edeee57a99
commit 9a76762aa5
3 changed files with 5 additions and 17 deletions

View File

@ -771,19 +771,14 @@ public static String concatString(String s1, String s2, String s3) {
# 九、多线程开发良好的实践 # 九、多线程开发良好的实践
1. 给线程起个有意义的名字,这样可以方便找 Bug 1. 给线程起个有意义的名字,这样可以方便找 Bug
2. 因为锁花费的代价很高,应该尽可能减小同步范围 2. 因为锁花费的代价很高,应该尽可能减小同步范围
3. 多用同步类少用 wait 和 notify。首先CountDownLatch, Semaphore, CyclicBarrier 和 Exchanger 这些同步类简化了编码操作,而用 wait 和 notify 很难实现对复杂控制流的控制。其次,这些类是由最好的企业编写和维护在后续的 JDK 中它们还会不断优化和完善,使用这些更高等级的同步工具你的程序可以不费吹灰之力获得优化。 3. 多用同步类少用 wait 和 notify。首先CountDownLatch, Semaphore, CyclicBarrier 和 Exchanger 这些同步类简化了编码操作,而用 wait 和 notify 很难实现对复杂控制流的控制。其次,这些类是由最好的企业编写和维护在后续的 JDK 中它们还会不断优化和完善,使用这些更高等级的同步工具你的程序可以不费吹灰之力获得优化。
4. 多用并发集合少用同步集合。并发集合比同步集合的可扩展性更好,例如应该使用 ConcurrentHashMap 而不是 Hashttable。 4. 多用并发集合少用同步集合。并发集合比同步集合的可扩展性更好,例如应该使用 ConcurrentHashMap 而不是 Hashttable。
5. 多采用无锁编程减少上下文切换,如将数据的 ID 按照 hash 算法取模分段,每个线程处理特定分段的数据。
6. 多利用 CAS 算法来并发更新数据。如 Java 中的 Atomic 包。
7. 优先考虑 volatile而不是 synchronize。这样开销更小。
# 参考资料 # 参考资料
- BruceEckel. Java 编程思想: 第 4 版 [M]. 机械工业出版社, 2007. - BruceEckel. Java 编程思想: 第 4 版 [M]. 机械工业出版社, 2007.

View File

@ -127,13 +127,6 @@
<div align="center"> <img src="../pics//0ee0f61b-c782-441e-bf34-665650198ae0.jpg"/> </div><br> <div align="center"> <img src="../pics//0ee0f61b-c782-441e-bf34-665650198ae0.jpg"/> </div><br>
### 6.源地址哈希法(ip hash)
源地址哈希通过对客户端IP哈希计算得到的一个数值用该数值对服务器数量进行取模运算取模结果便是目标服务器的序号。
- 优点保证同一IP的客户端都会被hash到同一台服务器上。
- 缺点不利于集群扩展后台服务器数量变更都会影响hash结果。可以采用一致性Hash改进。
<div align="center"> <img src="../pics//2018040301.jpg"/> </div><br>
## 实现 ## 实现
### 1. HTTP 重定向 ### 1. HTTP 重定向

View File

@ -118,7 +118,7 @@ abc[^0-9]
**正则表达式** **正则表达式**
``` ```
[\w.]+@\w+.\w+ [\w.]+@\w+\.\w+
``` ```
[\w.] 匹配的是字母数字或者 . ,在其后面加上 + ,表示匹配多次。在字符集合 [ ] 里,. 不是元字符; [\w.] 匹配的是字母数字或者 . ,在其后面加上 + ,表示匹配多次。在字符集合 [ ] 里,. 不是元字符;
@ -130,8 +130,8 @@ abc[^0-9]
为了可读性,常常把转义的字符放到字符集合 [ ] 中,但是含义是相同的。 为了可读性,常常把转义的字符放到字符集合 [ ] 中,但是含义是相同的。
``` ```
[\w.]+@\w+.\w+ [\w.]+@\w+\.\w+
[\w.]+@[\w]+.[\w]+ [\w.]+@[\w]+\.[\w]+
``` ```
**{n}** 匹配 n 个字符,**{m, n}** 匹配 m\~n 个字符,**{m,}** 至少匹配 m 个字符; **{n}** 匹配 n 个字符,**{m, n}** 匹配 m\~n 个字符,**{m,}** 至少匹配 m 个字符;