From e75b4aad5d85defd0fca9bc2405c9c7a94db4043 Mon Sep 17 00:00:00 2001 From: Lei Jiang Date: Tue, 8 May 2018 14:25:13 +0800 Subject: [PATCH 01/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=BD=E5=A4=96?= =?UTF-8?q?=E6=95=99=E7=A8=8B=E7=BD=91=E7=AB=99Tutorialspoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 41dd251..649281b 100644 --- a/README.md +++ b/README.md @@ -2328,6 +2328,8 @@ TODO * 有部分中文电子书。 * [Cheatography](https://www.cheatography.com/) * Cheat Sheets 大全,单页文档网站。 +* [Tutorialspoint](https://www.tutorialspoint.com/index.htm) + * 知名教程网站,提供Java、Python、JS、SQL、大数据等高质量入门教程。 ## 在线课堂 From a816b46f28b0bb22b236dd4e153295b7559b9f38 Mon Sep 17 00:00:00 2001 From: zucig Date: Tue, 8 May 2018 15:55:38 +0900 Subject: [PATCH 02/21] Add web cache --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 41dd251..3ff4814 100644 --- a/README.md +++ b/README.md @@ -1047,6 +1047,13 @@ APM — Application Performance Management * [《H5 和移动端 WebView 缓存机制解析与实战》](https://mp.weixin.qq.com/s/qHm_dJBhVbv0pJs8Crp77w) ## 服务端缓存 + +### Web缓存 + +* [nuster](https://github.com/jiangwenyuan/nuster) - nuster cache +* [varnish](https://github.com/varnishcache/varnish-cache) - varnish cache +* [squid](https://github.com/squid-cache/squid) - squid cache + ### Memcached * [《Memcached 教程》](http://www.runoob.com/Memcached/Memcached-tutorial.html) * [《深入理解Memcached原理》](https://blog.csdn.net/chenleixing/article/details/47035453) From 97a7177c8b9fba75f31c935c45bb64364cb9a61c Mon Sep 17 00:00:00 2001 From: liangcao <229149339@qq.com> Date: Tue, 8 May 2018 16:13:19 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Java=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E4=B8=93=E9=A2=98=E6=96=87=E7=AB=A0=EF=BC=8C=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E7=82=B9=E6=9B=B4=E7=BB=86=EF=BC=8C=E6=9B=B4=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/README.md b/README.md index 41dd251..d5f4afb 100644 --- a/README.md +++ b/README.md @@ -548,6 +548,141 @@ KMP:Knuth-Morris-Pratt算法(简称KMP) # 并发 +1. **基础知识** + + 1.1 [并发编程的优缺点](https://juejin.im/post/5ae6c3ef6fb9a07ab508ac85) + + 知识点:(1)为什么要用到并发?(优点);(2)并发编程的缺点;(3)易混淆的概念 + + 1.2 [线程的状态和基本操作](https://juejin.im/post/5ae6cf7a518825670960fcc2) + + 知识点:(1)如何新建线程;(2)线程状态的转换;(3)线程的基本操作;(4)守护线程Daemon; + +2. **并发理论(JMM)** + + [java内存模型以及happens-before规则](https://juejin.im/post/5ae6d309518825673123fd0e) + + 知识点:(1)JMM内存结构;(2)重排序;(3)happens-before规则 + + +3. **并发关键字** + + 3.1 [让你彻底理解Synchronized](https://juejin.im/post/5ae6dc04f265da0ba351d3ff) + + 知识点:(1)如何使用synchronized;(2)monitor机制;(3)synchronized的happens-before关系;(4)synchronized的内存语义;(5)锁优化;(6)锁升级策略 + + 3.2 [让你彻底理解volatile](https://juejin.im/post/5ae9b41b518825670b33e6c4) + + 知识点:(1)实现原理;(2)happens-before的关系推导;(3)内存语义;(4)内存语义的实现 + + 3.3 [你以为你真的了解final吗?](https://juejin.im/post/5ae9b82c6fb9a07ac3634941) + + 知识点:(1)如何使用;(2)final的重排序规则;(3)final实现原理;(4)final引用不能从构造函数中“溢出”(this逃逸) + + 3.4 [三大性质总结:原子性,有序性,可见性](https://juejin.im/post/5aeb022cf265da0b722af7b8) + + 知识点:(1)原子性:synchronized;(2)可见性:synchronized,volatile;(3)有序性:synchronized,volatile + +4. **Lock体系** + + 4.1 [初识Lock与AbstractQueuedSynchronizer(AQS)](https://juejin.im/post/5aeb055b6fb9a07abf725c8c) + + 知识点:(1)Lock和synchronized的比较;(2)AQS设计意图;(3)如何使用AQS实现自定义同步组件;(4)可重写的方法;(5)AQS提供的模板方法; + + 4.2 [深入理解AbstractQueuedSynchronizer(AQS)](https://juejin.im/post/5aeb07ab6fb9a07ac36350c8) + + 知识点:(1)AQS同步队列的数据结构;(2)独占式锁;(3)共享式锁; + + 4.3 [再一次理解ReentrantLock](https://juejin.im/post/5aeb0a8b518825673a2066f0) + + 知识点:(1)重入锁的实现原理;(2)公平锁的实现原理;(3)非公平锁的实现原理;(4)公平锁和非公平锁的比较 + + 4.4 [深入理解读写锁ReentrantReadWriteLock](https://juejin.im/post/5aeb0e016fb9a07ab7740d90) + + 知识点:(1)如何表示读写状态;(2)WriteLock的获取和释放;(3)ReadLock的获取和释放;(4)锁降级策略;(5)生成Condition等待队列;(6)应用场景 + + 4.5 [详解Condition的await和signal等待/通知机制](https://juejin.im/post/5aeea5e951882506a36c67f0) + + 知识点:(1)与Object的wait/notify机制相比具有的特性;(2)与Object的wait/notify相对应的方法;(3)底层数据结构;(4)await实现原理;(5)signal/signalAll实现原理;(6)await和signal/signalAll的结合使用; + + 4.6 [LockSupport工具](https://juejin.im/post/5aeed27f51882567336aa0fa) + + 知识点:(1)主要功能;(2)与synchronized阻塞唤醒相比具有的特色; + + +5. **并发容器** + + 5.1 [并发容器之ConcurrentHashMap(JDK 1.8版本)](https://juejin.im/post/5aeeaba8f265da0b9d781d16) + + 知识点:(1)关键属性;(2)重要内部类;(3)涉及到的CAS操作;(4)构造方法;(5)put执行流程;(6)get执行流程;(7)扩容机制;(8)用于统计size的方法的执行流程;(9)1.8版本的ConcurrentHashMap与之前版本的比较 + + 5.2 [并发容器之CopyOnWriteArrayList](https://juejin.im/post/5aeeb55f5188256715478c21) + + 知识点:(1)实现原理;(2)COW和ReentrantReadWriteLock的区别;(3)应用场景;(4)为什么具有弱一致性;(5)COW的缺点; + + 5.3 [并发容器之ConcurrentLinkedQueue](https://juejin.im/post/5aeeae756fb9a07ab11112af) + + 知识点:(1)实现原理;(2)数据结构;(3)核心方法;(4)HOPS延迟更新的设计意图 + + 5.4 [并发容器之ThreadLocal](https://juejin.im/post/5aeeb22e6fb9a07aa213404a) + + 知识点:(1)实现原理;(2)set方法原理;(3)get方法原理;(4)remove方法原理;(5)ThreadLocalMap + + [一篇文章,从源码深入详解ThreadLocal内存泄漏问题](https://www.jianshu.com/p/dde92ec37bd1) + + 知识点:(1)ThreadLocal内存泄漏原理;(2)ThreadLocal的最佳实践;(3)应用场景 + + 5.5 [并发容器之BlockingQueue](https://juejin.im/post/5aeebd02518825672f19c546) + + 知识点:(1)BlockingQueue的基本操作;(2)常用的BlockingQueue; + + [并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解](https://juejin.im/post/5aeebdb26fb9a07aa83ea17e) + +6. **线程池(Executor体系)** + + 6.1 [线程池实现原理](https://juejin.im/post/5aeec0106fb9a07ab379574f) + + 知识点:(1)为什么要用到线程池?(2)执行流程;(3)构造器各个参数的意义;(4)如何关闭线程池;(5)如何配置线程池; + + 6.2 [线程池之ScheduledThreadPoolExecutor](https://juejin.im/post/5aeec106518825670a10328a) + + 知识点:(1)类结构;(2)常用方法;(3)ScheduledFutureTask;(3)DelayedWorkQueue; + + 6.3 [FutureTask基本操作总结](https://juejin.im/post/5aeec249f265da0b886d5101) + + 知识点:(1)FutureTask的几种状态;(2)get方法;(3)cancel方法;(4)应用场景;(5)实现 Runnable接口 + +7. **原子操作类** + + 7.1 [Java中atomic包中的原子操作类总结](https://juejin.im/post/5aeec351518825670a103292) + + 知识点:(1)实现原理;(2)原子更新基本类型;(3)原子更新数组类型;(4)原子更新引用类型;(5)原子更新字段类型 + +8. **并发工具** + + 8.1 [大白话说java并发工具类-CountDownLatch,CyclicBarrier](https://juejin.im/post/5aeec3ebf265da0ba76fa327) + + 知识点:(1)倒计时器CountDownLatch;(2)循环栅栏CyclicBarrier;(3)CountDownLatch与CyclicBarrier的比较 + + 8.2 [大白话说java并发工具类-Semaphore,Exchanger](https://juejin.im/post/5aeec49b518825673614d183) + + 知识点:(1)资源访问控制Semaphore;(2)数据交换Exchanger + +9. **并发实践** + + 9.1 [一篇文章,让你彻底弄懂生产者--消费者问题](https://juejin.im/post/5aeec675f265da0b7c072c56) + + +> JAVA并发知识图谱 + +**可移动到新窗口,放大查看效果更好或者查看原图** + +[知识图谱原图链接,如果有用,可克隆给自己使用](https://www.processon.com/view/5ab5a979e4b0a248b0e026b3?fromnew=1) + +![JAVA并发知识图谱.png](https://github.com/CL0610/Java-concurrency/blob/master/Java并发知识图谱.png) + + + ## 多线程 * [《40个Java多线程问题总结》](http://www.importnew.com/18459.html) From 6ec1fb2fa22266d40a255ee2e55b9e0916d9f017 Mon Sep 17 00:00:00 2001 From: Zou Xin Date: Wed, 9 May 2018 09:40:27 +0800 Subject: [PATCH 04/21] =?UTF-8?q?=E4=BE=9D=E6=87=92->=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 44dd107..9a741af 100644 --- a/README.md +++ b/README.md @@ -2271,7 +2271,7 @@ TODO * 权衡:权衡投入产出比;优先级和节奏控制; * [《关于架构优化和设计,架构师必须知道的事情》](http://www.infoq.com/cn/articles/architecture-optimization-and-design-the-architect-must-know) - * 要去考虑的细节:模块化、轻耦合、无共享架构;减少各个组件之前的依懒、注意服务之间依懒所有造成的链式失败及影响等。 + * 要去考虑的细节:模块化、轻耦合、无共享架构;减少各个组件之前的依赖、注意服务之间依赖所有造成的链式失败及影响等。 * 基础设施、配置、测试、开发、运维综合考虑。 * 考虑人、团队、和组织的影响。 From 18bff8440bd6a2979b9531c03257842f04291858 Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Thu, 10 May 2018 08:43:32 +0800 Subject: [PATCH 05/21] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a741af..0034646 100644 --- a/README.md +++ b/README.md @@ -466,7 +466,7 @@ TODO * [《【啊哈!算法】最快最简单的排序——桶排序》](http://blog.51cto.com/ahalei/1362789) * [《排序算法(三):计数排序与桶排序》](https://blog.csdn.net/sunjinshengli/article/details/70738527) * 桶排序将[0,1)区间划分为n个相同的大小的子区间,这些子区间被称为桶。 - * 每个通单独进行排序,然后再遍历每个桶。 + * 每个桶单独进行排序,然后再遍历每个桶。 ### 基数排序 From 8492936ef896923404da38c7f653f26eca18bec6 Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Sat, 12 May 2018 02:15:19 +0800 Subject: [PATCH 06/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20RocketMQ=20=E6=BA=90?= =?UTF-8?q?=E7=A0=81=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 0034646..91ab570 100644 --- a/README.md +++ b/README.md @@ -1266,6 +1266,7 @@ APM — Application Performance Management ### RocketMQ Java实现,推拉模式都是支持,吞吐量逊于Kafka。可以保证消息顺序。 * [《RocketMQ 实战之快速入门》](https://www.jianshu.com/p/824066d70da8) +* [《RocketMQ 源码解析》](http://www.iocoder.cn/categories/RocketMQ/?vip&architect-awesome) ### ActiveMQ 纯Java实现,兼容JMS,可以内嵌于Java应用中。 @@ -2530,3 +2531,5 @@ TODO ### VPS * [Linode](http://linode.com) + + From 65ddfc902205817e1f5eab4e4be65be0cf80efe8 Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Sun, 13 May 2018 15:23:24 +0800 Subject: [PATCH 07/21] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 91ab570..bd471d9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![GitHub forks](https://img.shields.io/github/forks/xingshaocheng/architect-awesome.svg?style=flat&label=Fork)](https://github.com/xingshaocheng/architect-awesome/fork) [![GitHub watchers](https://img.shields.io/github/watchers/xingshaocheng/architect-awesome.svg?style=flat&label=Watch)](https://github.com/xingshaocheng/architect-awesome/watchers) -**最后更新于20180502** +**更新于20180513** * [数据结构](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#数据结构) * [队列](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#队列) * [集合](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#集合) @@ -126,6 +126,7 @@ * [本地缓存](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#本地缓存) * [客户端缓存](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#客户端缓存) * [服务端缓存](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#服务端缓存) + * [Web缓存](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web缓存) * [Memcached](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#memcached) * [Redis](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#redis) * [架构](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#架构) @@ -341,6 +342,7 @@ * [代码托管](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#代码托管) * [文件服务](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#文件服务) * [综合云服务商](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#综合云服务商) + * [VPS](https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#vps) **(Toc generated by [simple-php-github-toc](https://github.com/xingshaocheng/simple-php-github-toc) )** From bef91a12af1eb4c983bea2c7d8649570b23681ec Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Sun, 13 May 2018 15:27:23 +0800 Subject: [PATCH 08/21] Update README.md --- README.md | 136 ++---------------------------------------------------- 1 file changed, 3 insertions(+), 133 deletions(-) diff --git a/README.md b/README.md index bd471d9..1197cfc 100644 --- a/README.md +++ b/README.md @@ -550,140 +550,10 @@ KMP:Knuth-Morris-Pratt算法(简称KMP) # 并发 -1. **基础知识** - - 1.1 [并发编程的优缺点](https://juejin.im/post/5ae6c3ef6fb9a07ab508ac85) - - 知识点:(1)为什么要用到并发?(优点);(2)并发编程的缺点;(3)易混淆的概念 - - 1.2 [线程的状态和基本操作](https://juejin.im/post/5ae6cf7a518825670960fcc2) - - 知识点:(1)如何新建线程;(2)线程状态的转换;(3)线程的基本操作;(4)守护线程Daemon; - -2. **并发理论(JMM)** - - [java内存模型以及happens-before规则](https://juejin.im/post/5ae6d309518825673123fd0e) - - 知识点:(1)JMM内存结构;(2)重排序;(3)happens-before规则 - - -3. **并发关键字** - - 3.1 [让你彻底理解Synchronized](https://juejin.im/post/5ae6dc04f265da0ba351d3ff) - - 知识点:(1)如何使用synchronized;(2)monitor机制;(3)synchronized的happens-before关系;(4)synchronized的内存语义;(5)锁优化;(6)锁升级策略 - - 3.2 [让你彻底理解volatile](https://juejin.im/post/5ae9b41b518825670b33e6c4) - - 知识点:(1)实现原理;(2)happens-before的关系推导;(3)内存语义;(4)内存语义的实现 - - 3.3 [你以为你真的了解final吗?](https://juejin.im/post/5ae9b82c6fb9a07ac3634941) - - 知识点:(1)如何使用;(2)final的重排序规则;(3)final实现原理;(4)final引用不能从构造函数中“溢出”(this逃逸) - - 3.4 [三大性质总结:原子性,有序性,可见性](https://juejin.im/post/5aeb022cf265da0b722af7b8) - - 知识点:(1)原子性:synchronized;(2)可见性:synchronized,volatile;(3)有序性:synchronized,volatile - -4. **Lock体系** - - 4.1 [初识Lock与AbstractQueuedSynchronizer(AQS)](https://juejin.im/post/5aeb055b6fb9a07abf725c8c) - - 知识点:(1)Lock和synchronized的比较;(2)AQS设计意图;(3)如何使用AQS实现自定义同步组件;(4)可重写的方法;(5)AQS提供的模板方法; - - 4.2 [深入理解AbstractQueuedSynchronizer(AQS)](https://juejin.im/post/5aeb07ab6fb9a07ac36350c8) - - 知识点:(1)AQS同步队列的数据结构;(2)独占式锁;(3)共享式锁; - - 4.3 [再一次理解ReentrantLock](https://juejin.im/post/5aeb0a8b518825673a2066f0) - - 知识点:(1)重入锁的实现原理;(2)公平锁的实现原理;(3)非公平锁的实现原理;(4)公平锁和非公平锁的比较 - - 4.4 [深入理解读写锁ReentrantReadWriteLock](https://juejin.im/post/5aeb0e016fb9a07ab7740d90) - - 知识点:(1)如何表示读写状态;(2)WriteLock的获取和释放;(3)ReadLock的获取和释放;(4)锁降级策略;(5)生成Condition等待队列;(6)应用场景 - - 4.5 [详解Condition的await和signal等待/通知机制](https://juejin.im/post/5aeea5e951882506a36c67f0) - - 知识点:(1)与Object的wait/notify机制相比具有的特性;(2)与Object的wait/notify相对应的方法;(3)底层数据结构;(4)await实现原理;(5)signal/signalAll实现原理;(6)await和signal/signalAll的结合使用; - - 4.6 [LockSupport工具](https://juejin.im/post/5aeed27f51882567336aa0fa) - - 知识点:(1)主要功能;(2)与synchronized阻塞唤醒相比具有的特色; - - -5. **并发容器** - - 5.1 [并发容器之ConcurrentHashMap(JDK 1.8版本)](https://juejin.im/post/5aeeaba8f265da0b9d781d16) - - 知识点:(1)关键属性;(2)重要内部类;(3)涉及到的CAS操作;(4)构造方法;(5)put执行流程;(6)get执行流程;(7)扩容机制;(8)用于统计size的方法的执行流程;(9)1.8版本的ConcurrentHashMap与之前版本的比较 - - 5.2 [并发容器之CopyOnWriteArrayList](https://juejin.im/post/5aeeb55f5188256715478c21) - - 知识点:(1)实现原理;(2)COW和ReentrantReadWriteLock的区别;(3)应用场景;(4)为什么具有弱一致性;(5)COW的缺点; - - 5.3 [并发容器之ConcurrentLinkedQueue](https://juejin.im/post/5aeeae756fb9a07ab11112af) - - 知识点:(1)实现原理;(2)数据结构;(3)核心方法;(4)HOPS延迟更新的设计意图 - - 5.4 [并发容器之ThreadLocal](https://juejin.im/post/5aeeb22e6fb9a07aa213404a) - - 知识点:(1)实现原理;(2)set方法原理;(3)get方法原理;(4)remove方法原理;(5)ThreadLocalMap - - [一篇文章,从源码深入详解ThreadLocal内存泄漏问题](https://www.jianshu.com/p/dde92ec37bd1) - - 知识点:(1)ThreadLocal内存泄漏原理;(2)ThreadLocal的最佳实践;(3)应用场景 - - 5.5 [并发容器之BlockingQueue](https://juejin.im/post/5aeebd02518825672f19c546) - - 知识点:(1)BlockingQueue的基本操作;(2)常用的BlockingQueue; - - [并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解](https://juejin.im/post/5aeebdb26fb9a07aa83ea17e) - -6. **线程池(Executor体系)** - - 6.1 [线程池实现原理](https://juejin.im/post/5aeec0106fb9a07ab379574f) - - 知识点:(1)为什么要用到线程池?(2)执行流程;(3)构造器各个参数的意义;(4)如何关闭线程池;(5)如何配置线程池; - - 6.2 [线程池之ScheduledThreadPoolExecutor](https://juejin.im/post/5aeec106518825670a10328a) - - 知识点:(1)类结构;(2)常用方法;(3)ScheduledFutureTask;(3)DelayedWorkQueue; - - 6.3 [FutureTask基本操作总结](https://juejin.im/post/5aeec249f265da0b886d5101) - - 知识点:(1)FutureTask的几种状态;(2)get方法;(3)cancel方法;(4)应用场景;(5)实现 Runnable接口 - -7. **原子操作类** - - 7.1 [Java中atomic包中的原子操作类总结](https://juejin.im/post/5aeec351518825670a103292) - - 知识点:(1)实现原理;(2)原子更新基本类型;(3)原子更新数组类型;(4)原子更新引用类型;(5)原子更新字段类型 - -8. **并发工具** - - 8.1 [大白话说java并发工具类-CountDownLatch,CyclicBarrier](https://juejin.im/post/5aeec3ebf265da0ba76fa327) - - 知识点:(1)倒计时器CountDownLatch;(2)循环栅栏CyclicBarrier;(3)CountDownLatch与CyclicBarrier的比较 - - 8.2 [大白话说java并发工具类-Semaphore,Exchanger](https://juejin.im/post/5aeec49b518825673614d183) - - 知识点:(1)资源访问控制Semaphore;(2)数据交换Exchanger - -9. **并发实践** - - 9.1 [一篇文章,让你彻底弄懂生产者--消费者问题](https://juejin.im/post/5aeec675f265da0b7c072c56) - - -> JAVA并发知识图谱 - -**可移动到新窗口,放大查看效果更好或者查看原图** - -[知识图谱原图链接,如果有用,可克隆给自己使用](https://www.processon.com/view/5ab5a979e4b0a248b0e026b3?fromnew=1) - -![JAVA并发知识图谱.png](https://github.com/CL0610/Java-concurrency/blob/master/Java并发知识图谱.png) - +## Java 并发 +* [Java 并发知识合集](https://github.com/CL0610/Java-concurrency) +* [JAVA并发知识图谱](https://github.com/CL0610/Java-concurrency/blob/master/Java并发知识图谱.png) ## 多线程 From 6b1d9ddd20eb1e4e444d94937ff2e76dd2e446da Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Sun, 13 May 2018 18:41:41 +0800 Subject: [PATCH 09/21] Update README.md --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1197cfc..35cc813 100644 --- a/README.md +++ b/README.md @@ -2022,11 +2022,22 @@ TODO ## Serverless -TODO +无需过多关系服务器的服务架构理念。 + +* [《什么是Serverless无服务器架构?》](http://www.jdon.com/soa/serverless.html) + * Serverless 不代表出去服务器,而是去除对服务器运行状态的关心。 + * Serverless 代表一思维方式的转变,从“构建一套服务在一台服务器上,对对个事件进行响应转变为构建一个为服务器,来响应一个事件”。 + * Serverless 不代表某个具体的框架。 + +* [《如何理解Serverless?》](http://www.infoq.com/cn/news/2017/10/how-to-understand-serverless) + * 依赖于 Baas ((Mobile) Backend as a Service) 和 Faas (Functions as a service) + + ## Service Mesh -TODO +* [《什么是Service Mesh?》](https://time.geekbang.org/article/2355) +* [《初识 Service Mesh》](https://www.jianshu.com/p/e23e3e74538e) * [《什么是Service Mesh?》](https://time.geekbang.org/article/2355) From ee3e89fe456093de2149a17653c8b29461612840 Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Sun, 13 May 2018 18:45:23 +0800 Subject: [PATCH 10/21] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 35cc813..15d0c11 100644 --- a/README.md +++ b/README.md @@ -2115,6 +2115,12 @@ XP - eXtreme Programming * [《结对编程》](http://www.baike.com/wiki/%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B) +## PDCA 循环质量管理 + +P——PLAN 策划,D——DO 实施,C——CHECK 检查,A——ACT 改进 + +* [《PDCA》](http://www.baike.com/wiki/PDCA) + ## FMEA管理模式 TODO From dc37af30ee85d95531cfa20c1993fa73c9f6de81 Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Mon, 14 May 2018 12:23:32 +0800 Subject: [PATCH 11/21] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 15d0c11..cb4ab69 100644 --- a/README.md +++ b/README.md @@ -1622,6 +1622,7 @@ TODO ### OAuth2.0 * [《理解OAuth 2.0》](http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html) +* [《一张图搞定OAuth2.0》](https://www.cnblogs.com/flashsun/p/7424071.html) ### 双因素认证(2FA) From c65dec416e1a7b4859444c5d86d20c8f7f5903f5 Mon Sep 17 00:00:00 2001 From: "Mr.Semaphore" Date: Mon, 14 May 2018 16:51:09 +0800 Subject: [PATCH 12/21] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=8D=95=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 动态slat --> 动态salt (动态盐值) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0034646..30163da 100644 --- a/README.md +++ b/README.md @@ -1684,7 +1684,7 @@ MyISAM 是非聚集,InnoDB 是聚集 ## 用户隐私信息保护 -1. 用户密码非明文保存,加动态slat。 +1. 用户密码非明文保存,加动态salt。 2. 身份证号,手机号如果要显示,用 “\*” 替代部分字符。 3. 联系方式在的显示与否由用户自己控制。 4. TODO From fd4ac4e04015e5548db5e4908194d0b1312e9625 Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Tue, 15 May 2018 21:07:15 +0800 Subject: [PATCH 13/21] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 42c5c25..be9eec4 100644 --- a/README.md +++ b/README.md @@ -2318,6 +2318,8 @@ TODO * 《淘宝技术这十年》[京东](https://union-click.jd.com/jdc?d=LwrDfD) [淘宝](https://s.taobao.com/search?q=淘宝技术这十年) * 《企业IT架构转型之道-中台战略思想与架构实战》 [京东](https://union-click.jd.com/jdc?d=89pAEm) [淘宝](https://s.taobao.com/search?q=企业IT架构转型之道) +* 《高可用架构(第1卷)》[京东](https://item.jd.com/12195481.html) [淘宝](https://s.taobao.com/search?q=高可用架构) + #### 技术管理方面 * 《CTO说》[京东](https://union-click.jd.com/jdc?d=zhTZyr) [淘宝](https://s.taobao.com/search?q=CTO说) * 《技术管理之巅》[京东](https://union-click.jd.com/jdc?d=LgRBUW) [淘宝](https://s.taobao.com/search?q=技术管理之巅) From 03c9c4d8ca3255e79a913b1b2b98b8b99bccf0a3 Mon Sep 17 00:00:00 2001 From: Robin Wang <6220861+MottoX@users.noreply.github.com> Date: Wed, 16 May 2018 17:06:46 +0800 Subject: [PATCH 14/21] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 不可剥夺->环形等待 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index be9eec4..7a69638 100644 --- a/README.md +++ b/README.md @@ -685,7 +685,7 @@ KMP:Knuth-Morris-Pratt算法(简称KMP) ### 死锁 * [《“死锁”四个必要条件的合理解释》](https://blog.csdn.net/yunfenglw/article/details/45950305) - * 互斥、持有、不可剥夺、不可剥夺。 + * 互斥、持有、不可剥夺、环形等待。 * [Java如何查看死锁?](https://blog.csdn.net/u014039577/article/details/52351626) * JConsole 可以识别死锁。 From 2d89378b4f5a7a5de13b1be8aa3eae15b1cbe793 Mon Sep 17 00:00:00 2001 From: BeoneMan Date: Thu, 17 May 2018 12:57:10 +0800 Subject: [PATCH 15/21] Signed-off-by: BeoneMan --- README.md | 2 +- test.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 test.txt diff --git a/README.md b/README.md index be9eec4..d575889 100644 --- a/README.md +++ b/README.md @@ -729,7 +729,7 @@ TODO ## 设计模式的六大原则 * [《设计模式的六大原则》](https://blog.csdn.net/q291611265/article/details/48465113) * 开闭原则:对扩展开放,对修改关闭,多使用抽象类和接口。 - * 里氏代换原则:基类可以被子类替换,使用抽象类继承,不使用具体类继承。 + * 里氏替换原则:基类可以被子类替换,使用抽象类继承,不使用具体类继承。 * 依赖倒转原则:要依赖于抽象,不要依赖于具体,针对接口编程,不针对实现编程。 * 接口隔离原则:使用多个隔离的接口,比使用单个接口好,建立最小的接口。 * 迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用,通过中间类建立联系。 diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..bd7b2c8 --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +ÕâÊDzâÊÔ From 32481f174580745e2687d822c1d778b11651ee42 Mon Sep 17 00:00:00 2001 From: BeoneMan <38913093+BeoneMan@users.noreply.github.com> Date: Thu, 17 May 2018 13:04:48 +0800 Subject: [PATCH 16/21] Delete test.txt --- test.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index bd7b2c8..0000000 --- a/test.txt +++ /dev/null @@ -1 +0,0 @@ -ÕâÊDzâÊÔ From 7fca18e75b8773be8b8ae19953dea52a8ba399d0 Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Thu, 17 May 2018 16:47:13 +0800 Subject: [PATCH 17/21] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1b65b87..5830f70 100644 --- a/README.md +++ b/README.md @@ -2251,6 +2251,8 @@ TODO * [国家数据](http://data.stats.gov.cn/) +* [TalkingData](http://www.talkingdata.com/) + ## 专项网站 * 测试: From 1ca2883c0347b707c122b57de006a2300b2abf01 Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Fri, 18 May 2018 00:43:41 +0800 Subject: [PATCH 18/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20Spring=20Cloud=20Gat?= =?UTF-8?q?way=20=E6=BA=90=E7=A0=81=E8=A7=A3=E6=9E=90=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5830f70..9217fa5 100644 --- a/README.md +++ b/README.md @@ -1248,6 +1248,7 @@ servlet 3.0 异步特性可用于配置中心的客户端 * [《谈API网关的背景、架构以及落地方案》](http://www.infoq.com/cn/news/2016/07/API-background-architecture-floo) * [《使用Zuul构建API Gateway》](https://blog.csdn.net/zhanglh046/article/details/78651993) +* [《Spring Cloud Gateway 源码解析》](http://www.iocoder.cn/categories/Spring-Cloud-Gateway/?vip&architect-awesome) * [《HTTP API网关选择之一Kong介绍》](https://mp.weixin.qq.com/s/LIq2CiXJQmmjBC0yvYLY5A) # 网络 From 56e427acf419c20a427d442973d73701f79e025c Mon Sep 17 00:00:00 2001 From: xingshaocheng Date: Sun, 20 May 2018 09:18:08 +0800 Subject: [PATCH 19/21] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9217fa5..b57e584 100644 --- a/README.md +++ b/README.md @@ -2416,7 +2416,7 @@ TODO ## 综合云服务商 * 阿里云 -* 腾讯云 +* [腾讯云](https://cloud.tencent.com/redirect.php?redirect=1012&cps_key=c2665015d90871c0cb20fef91b7afc3c) * 百度云 * 新浪云 * 金山云 From 96f290e3dd5809c360de9598e70ea0e303fcd4be Mon Sep 17 00:00:00 2001 From: YuaniV <> Date: Mon, 21 May 2018 01:21:07 +0800 Subject: [PATCH 20/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20Elastic-Job-Lite=20&?= =?UTF-8?q?&=20Elastic-Job-Cloud=20=E6=BA=90=E7=A0=81=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b57e584..c7ac128 100644 --- a/README.md +++ b/README.md @@ -1183,6 +1183,8 @@ Java实现,推拉模式都是支持,吞吐量逊于Kafka。可以保证消 * [《Quartz任务调度的基本实现原理》](https://www.cnblogs.com/zhenyuyaodidiao/p/4755649.html) * Quartz集群中,独立的Quartz节点并不与另一其的节点或是管理节点通信,而是通过相同的数据库表来感知到另一Quartz应用的 +* [《Elastic-Job-Lite 源码解析》](http://www.iocoder.cn/categories/Elastic-Job-Lite/?vip&architect-awesome) +* [《Elastic-Job-Cloud 源码解析》](http://www.iocoder.cn/categories/Elastic-Job-Cloud/?vip&architect-awesome) ## RPC From 36f6816f18f4173c1d83f9c81ce4bd384128c51a Mon Sep 17 00:00:00 2001 From: lwc398555797 <398555797@QQ.com> Date: Thu, 24 May 2018 11:04:20 +0800 Subject: [PATCH 21/21] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c7ac128..36a4b74 100644 --- a/README.md +++ b/README.md @@ -2057,7 +2057,7 @@ TODO ## 代码规范 -TODO +* [《阿里巴巴Java开发手册》](https://github.com/alibaba/p3c) ## 代码 Review