wenwan 7 years ago
parent
commit
7494801c36

+ 1 - 1
README.md

@@ -117,7 +117,6 @@
 * [项目生命周期](project-management/项目生命周期.md)
 * [程序员素养](project-management/程序员素养.md)
 
-
 ### 运维
 
 *	[快速排查线上问题](ops/online-question.md)
@@ -137,6 +136,7 @@
 
 ### 其它
 
+*   [个人成长、职业规划](other/person.md)
 *   [读书单](other/book.md)
 *	[HTTPS 抓包工具(charles)](http://blog.vetcafe.net/2013/12/charlesproxyiphonehttps.html)
 *	[一致性hash算法](other/一致性hash.md)

+ 2 - 2
middle-software/Hbase.md

@@ -2,9 +2,9 @@
 
 ---
 
-#### 附录:
+### 附录:
 
-[Hbase安装](http://blog.csdn.net/itomge/article/details/9970833)
+* [Hbase安装](http://blog.csdn.net/itomge/article/details/9970833)
 
 -----
 

+ 14 - 13
middle-software/zookeeper.md

@@ -2,7 +2,7 @@
 
 ---
 
-**简介:**
+#### 简介
 
 zk为分布式应用提供了高效且可靠的分布式协调服务。用于解决数据同步、数据发布/订阅、集群管理、配置管理、分布式锁、命名服务、负载均衡等问题。最早由雅虎创建,具有以下特性:
 
@@ -34,7 +34,7 @@ zk支持单机、集群两种模式。
 *	Curator
 
 
-#### ZkClient 
+#### ZkClient 介
 
 ZkClient是github上一个开源的ZK客户端,在zookeeper原生API接口之上进行了包装,是一个更易用的ZK客户端。实现了如session超时重连、Watcher反复注册等功能,使得zookeeper客户端的繁琐细节工作对开发人员透明。
 
@@ -71,9 +71,9 @@ pom依赖
 </dependency>
 ```
 
-####代码示例:
+#### 代码示例:
 
-#####1.建立客户端连接
+##### 1.建立客户端连接
 
 ```
 /**
@@ -101,7 +101,7 @@ ZkClient 构造方法参数说明:
 |zkConnection|IZkConnection接口实现类,包含了增、删、改、查等一系列方法|
 
 	
-#####2.创建节点
+##### 2.创建节点
 
 ![image](img/3.png)
 
@@ -117,7 +117,7 @@ ZkClient 构造方法参数说明:
 zkClient.createPersistent("/root/provier", true);
 ```
 
-#####3.删除节点
+##### 3.删除节点
 
 ![image](img/4.png)
 
@@ -130,7 +130,7 @@ zkClient.createPersistent("/root/provier", true);
 zkClient.deleteRecursive("/root/provier");
 ```
 
-#####4.读取数据
+##### 4.读取数据
 
 * getChildren
 
@@ -193,7 +193,7 @@ zkClient.subscribeDataChanges("/root", new IZkDataListener() {
 ```
 
 
-#####5.更新数据
+##### 5.更新数据
 
 ![image](img/6.png)
 
@@ -203,14 +203,15 @@ zkClient.subscribeDataChanges("/root", new IZkDataListener() {
 |object|数据内容,可以是null|
 |expectedVersion|预期的数据版本,实现类似CAS的原子操作|
 
-#####6.检测节点是否存在
+##### 6.检测节点是否存在
 
 ```
 boolean isNodeExist = zkClient.exists("/root");
 ```
 
-**参考资料:**
+#### 资料
 
-https://github.com/apache/zookeeper
-
-https://github.com/llohellohe/zookeeper
+* https://github.com/apache/zookeeper
+* https://github.com/llohellohe/zookeeper
+* [zookeeper 入门系列 : 概述](http://mp.weixin.qq.com/s/pTXUAMgGpafhNNWfW2R_Cw)
+* [paxos 协议](http://mp.weixin.qq.com/s/a17RBmGABt8j_mmxgBN94w)

+ 21 - 1
open-source-framework/redis.md

@@ -342,7 +342,27 @@ Redis lists基于Linked Lists实现。这意味着即使在一个list中有数
 	对哈希中的某个key对应的值增加计数,线程安全。<br>
 	如果field不存在,初始值为0<br>
 
-	
+### lua 脚本
+
+如果一次业务请求需要执行多条命令,可以借助lua脚本批量提交执行
+
+```
+// key:缓存键值; seconds:过期时间
+public static String luaScript(String key, long seconds) {
+	return "local currIncr = redis.call('INCR', '" + key + "') "
+			+ "if tonumber(currIncr) == 1 "
+			+ "then "
+			+ "redis.call('EXPIRE', '" + key + "', " + seconds + ") "
+			+ "end "
+			+ "return currIncr";
+}
+
+//寻找目标节点
+Node target = redisClient.getNodeByKey(key);
+
+//执行lua脚本命令
+Long count = (Long) redisClient.eval(target, luaScript方法返回的字符串命令);
+```
 	
 ### 参考资料
 

BIN
other/.person.md.swp


+ 13 - 0
other/person.md

@@ -0,0 +1,13 @@
+
+---
+
+### 快速成长
+
+* [8年开发经验,网易Java开发工程师的成长感悟](http://mp.weixin.qq.com/s/Ck71qeyACk0Zn5j3ro87YQ)
+* [张一鸣:我遇到的优秀年轻人的5个特质](http://mp.weixin.qq.com/s/SayDuFnWFIRaKgVfd3Km7g)
+
+
+### 转型
+
+* [从纯技术到技术管理,那些跌宕起伏的转型经历](http://mp.weixin.qq.com/s/FWrhT2jl1TUq80d8gNinww)
+* [从普通程序员到三百人团队CTO,技术人成长的易与不易](http://mp.weixin.qq.com/s/tyTrBg9vk5Ft16oWEb4-bA)

+ 6 - 0
project-management/程序员素养.md

@@ -2,6 +2,12 @@
 
 ---
 
+#### 附录
+
+* [论架构师的自我修养](http://mp.weixin.qq.com/s/tc3hWHPw2JvqdnhXnWEGbQ)
+
+---
+
 在日常工作中肯定会遇到各种棘手问题,需要我们去查资料、认真思考,不断充实自己,提高自己。象大地之神盖亚的儿子——乌拉诺斯,每次跌倒都能站起来,并且拥有比之前更大的能量。
 
 

+ 1 - 1
system-architecture/架构师的职责与思考.md

@@ -23,7 +23,7 @@
 #### 架构师的职责
 <font color=red>架构师的职责应该是立足于技术和业务之间的中间角色或者平衡点</font>, 在针对业务深刻理解的基础上,针对业务中存在诸多变数,挑选适合的技术架构和技术方案;结合现有的技术团队的水平与特点,选择合适的技术栈进行落地和实现。
 
-架构师在做每一个决定之时都会受到诸多的因素的限制,比如高效的技术栈需要很高的学习曲线,在工期与人员素质之间需要权衡。精妙的技术架构并不能解决业务的快速迭代和变化,技术架构都是后知后觉的,无法准确的预知业务层面的变更与方向,故只能是跟随的角色,这样就必然会面临技术架构迭代和升级的需求,技术架构从来都不是建立了之后,就无需修改,可以承载各方的多重期望;事实上恰恰相反,<font color=red>技术架构是需要与时俱进的,是不断迭代和升级出来,根据不断变更的需求和团队情况来动态调整的。</font>
+架构师在做每一个决定之时都会受到诸多的因素的限制,比如高效的技术栈需要很高的学习曲线,在工期与人员素质之间需要权衡。精妙的技术架构并不能解决业务的快速迭代和变化,技术架构都是后知后觉的,无法准确的预知业务层面的变更与方向,故只能是跟随的角色,这样就必然会面临技术架构迭代和升级的需求,技术架构从来都不是建立了之后,就无需修改,可以承载各方的多重期望;事实上恰恰相反,<font color=red>技术架构是需要与时俱进的,是不断迭代和升级出来,根据不断变化的业务需求和团队情况来动态调整的。</font>
 
 #### 架构师的应变与坚持 
 

+ 57 - 14
system-architecture/经典案例.md

@@ -2,49 +2,92 @@
 
 ---
 
-
 ##### 电商
 
+* 淘宝
+	* [淘宝网系统架构分享](http://mp.weixin.qq.com/s/WkBavHJyfCQCo_P1Vmm03A)
+	* [阿里巴巴系统架构](http://mp.weixin.qq.com/s/kbAwChFavgfhyUZLEXea2w)
+	* [淘宝双11高可用架构演进之路](http://mp.weixin.qq.com/s/1BJ5SA0q4mkjxiLt0Sbq_w)
+	* [历经8年双11流量洗礼,淘宝开放平台如何攻克技术难关?](http://mp.weixin.qq.com/s/m6rlPeB46JbF3Dl49FE1xQ)
+	* [从淘宝到云端的高可用架构演进](http://mp.weixin.qq.com/s/_n1zSJ0uv9gNctXD9tyGsg)
+* 1号店
+	* [1号店大型电商微服务实践](http://mp.weixin.qq.com/s/_2Rw-4h4F4843c89tz-Z2Q)
+	* [1号店交易系统架构如何向「高并发高可用」演进](http://mp.weixin.qq.com/s/lzRZNWMx2KxeIyKXggl58w)
 * [有赞的交易系统架构困局以及破局之道](http://mp.weixin.qq.com/s/XLWq01U0mOWpGEmXeri2TQ)
-* [秒杀小结](案例-秒杀小结.md)
 * [订单系统分库分表实践](http://mp.weixin.qq.com/s/kauO45XNQaV40hxmSc3BpA)
+* [盘点电商大战背后的技术力量支撑](http://mp.weixin.qq.com/s/01rmXXkEz-cQaLBe7eGeQA)
+* [乐视电商云的整体架构与技术实现](http://mp.weixin.qq.com/s/gbVMGGneiSD7mhXtTH6QOg)
+
+##### 支付
+
+* [支付宝钱包系统架构内部剖析](http://mp.weixin.qq.com/s/wVjmK4Qh8LJIJ23toXdB6g)
+* [余额宝技术架构及演进](http://mp.weixin.qq.com/s/D3MAYfr4BpX8dONUfJ7LhQ)
+* [支付系统整体架构](http://mp.weixin.qq.com/s/LjxMFyG4K4301bNoH74ZWA)
+* [去哪儿网支付系统架构演进全历程](http://mp.weixin.qq.com/s/9V1VC2Fe9HdGzdvQ2A7wiA)
+
+##### 物流
+
+* [京东物流系统架构演进中的最佳实践](http://mp.weixin.qq.com/s/2HVkQCaXQQEQIqTrJZ01wA)
 
 
+##### 秒杀、抽奖
+
+* [秒杀小结](案例-秒杀小结.md)
+* [秒杀系统架构分析与实战](http://mp.weixin.qq.com/s/1BnygFm6ukEZcpakyEi9-Q)
+* [秒杀系统的架构解决之道](http://mp.weixin.qq.com/s/58y6YE2tQnQCugNJu9xOGA)
+* [1号店的抽奖系统架构实践](http://mp.weixin.qq.com/s/0vkLqt-zwXLAJTe6GBPlaw)
+* [微信红包系统架构的设计和优化分享](http://mp.weixin.qq.com/s/oQN31DA6VZiurNOX2yxI-w)
 
-##### 社区
+##### 社区、社交互动
 
+* [微博推荐架构的演进](http://mp.weixin.qq.com/s/wi3XqgEn7iCKhVhXAwlyJg)
+* [新浪微博技术架构分析](http://mp.weixin.qq.com/s/JI3xmM0eYjfJpObOcUSnPA)
 * [新浪微博与理财社区cache对比分析](案例-微博与理财社区cache分析.md)
+* [闲鱼社区技术架构演进](http://mp.weixin.qq.com/s/r_4SahpX9nAKf9OsPFQMQg)
 * [公众号增量消息同步改造](案例-公众号增量消息同步改造.md)
 * [社区稳定性之降级](社区稳定性之降级.md)
 * [社区计数器](案例-计数器.md)
 * [回复的楼层号如何控制并发?](案例-贴子楼层号.md)
 
-##### 支付
+##### 金融
 
-* [支付系统整体架构](http://mp.weixin.qq.com/s/LjxMFyG4K4301bNoH74ZWA)
+* [区块链技术与微服务架构之间有什么关系](http://mp.weixin.qq.com/s/9aFoptoI88n7hgZtxOe4Aw)
+* [200 行代码实现一个简单的区块链](http://mp.weixin.qq.com/s/cqi6mNVh2ZFZdNFIAQynjw)
+
+
+##### 大数据
+
+* [微博广告架构解密](http://mp.weixin.qq.com/s/sNHi05PTh4goOUMh68wr6g)
+* [小米品牌广告引擎与算法实践](http://mp.weixin.qq.com/s/VjRWHEKqursOg6ekzBMsBw)
+
+
+##### 直播
+
+* [淘宝直播在双11的互动实践](http://mp.weixin.qq.com/s/WcHvukClRSLA4KczRjDVaw)
+* [常见的几种直播连麦方案](http://mp.weixin.qq.com/s/Ej4QHRvF7e0i5d78hETrwg)
+* [如何开发10万在线级别的直播弹幕技术?](http://mp.weixin.qq.com/s/U4SKJbXSkd6JOx0R7yK-5g)
+
+##### 移动端相关
+
+* [蘑菇街移动端混合开发体系的研发与实践](http://mp.weixin.qq.com/s/mMMsuCMX27T1-ynVeJntUw)
+* [人人车Android客户端架构演进实录](http://mp.weixin.qq.com/s/h9UNSqnKjzFnXY2gMNAQ-g)
 
 ##### 搜索
 
 * [去哪儿网机票搜索系统的高并发架构设计](http://mp.weixin.qq.com/s/HErVN8x-s6MzgW-3XMvvAA)
 
-
 ##### 缓存相关
 
 * [携程开源其Redis多数据中心解决方案XPipe](http://mp.weixin.qq.com/s/YhrJprLWjoZa2tU3qY8XZw)
 
 
-##### 金融
+##### 其它
 
-* [区块链技术与微服务架构之间有什么关系](http://mp.weixin.qq.com/s/9aFoptoI88n7hgZtxOe4Aw)
-* [200 行代码实现一个简单的区块链](http://mp.weixin.qq.com/s/cqi6mNVh2ZFZdNFIAQynjw)
+* [网易美学平滑微服务化](http://mp.weixin.qq.com/s/4TmpzJEdiSzi5fLTLXAq2w)
+* [微服务架构如何实现网站服务垂直化拆分](http://mp.weixin.qq.com/s/muoJas1nayP6gY8KBwVLSw)
 
 
-##### 大数据
 
-* [微博广告架构解密](http://mp.weixin.qq.com/s/sNHi05PTh4goOUMh68wr6g)
-* [小米品牌广告引擎与算法实践](http://mp.weixin.qq.com/s/VjRWHEKqursOg6ekzBMsBw)
 
-##### 其它
 
-* [网易美学平滑微服务化](http://mp.weixin.qq.com/s/4TmpzJEdiSzi5fLTLXAq2w)