wenwan 8 năm trước cách đây
mục cha
commit
f64bf15375

+ 5 - 3
README.md

@@ -2,11 +2,13 @@
 
 ---
 
-有人认为编程是一门技术活,要有一定的天赋,非天资聪慧者不能及也。其实不然,笔者虽是计算机专业出身,但工作年限并不长,对于技术这碗饭有一些心得体会,大多数人成为领域专家可能有些难度,但应付日常工作,甚至成为业务主力骨干,其实并不难。
+有人认为编程是一门技术活,要有一定的天赋,非天资聪慧者不能及也。其实不然,笔者虽是计算机专业出身,但工作年限并不长,对于技术这碗饭有一些心得体会,大多数人成为领域专家可能有些难度,但应付日常工作,甚至成为团队骨干,其实并不难。
 
-**github.com很重要,里汇集了全球工程师的智慧!**
+**多读书、多看报,github.com很重要,里汇集了全球工程师的智慧!**
 
-下面列举工作了中常用的一些技术,以及如何培养架构能力。由于每个技术市面上基本都有对应的书籍资料,所以本文只是少篇幅列举工作中用到的核心知识点,更多是抛砖引玉,属于进阶型,不适用初学者。
+言归正传,下文会列举工作中常用的一些技术,以及如何锻炼提升自己的架构能力。
+
+由于每块技术市场上基本都有对应的网络资料或书籍,所以本文只是少篇幅列举工作中用到的核心知识点,抛砖引玉,属于进阶型,不适用初学者。
 
 ### 基础知识
 * 	[java](basic-knowledge/java.md)

+ 43 - 1
middle-software/elasticsearch.md

@@ -10,7 +10,7 @@
 
 安装非常简单,http://www.elasticsearch.org/download/ 下载最新版本的Elasticsearch,其中zip包可直接解压使用。
 
-**启动:**
+**如何启动:**
 
 ```
 ./bin/elasticsearch
@@ -73,10 +73,52 @@ curl 'http://192.168.3.216:9200/forum/user_member/_mapping'
 * 	导入源数据build索引(可以采用api接口形式)
 * 	多维度组合查询条件,搜索查询(可以采用api接口形式)
 
+
+**应用场景:**
+
+* 基本查询
+
+	* 词条查询。仅匹配在给定字段中含有该词条的文档,而且是确切的、未经分析的词条。
+	* 多词条查询。匹配那些在内容中含有某些词条的文档。可以通过设置minimum_match的值来说明想至少保证有多少个词同时被匹配上。
+	* match_all查询。匹配索引中的所有的文件。
+	* 常用词查询。考虑到查询条件的词越多,查询性能越低。所以将词分为两类:一类,是重要的词,出现的频率较低;另一类,是出现频率较高,如:”的”,但不那么重要的词。
+	* match查询
+	* multi_match查询。基本与match一样,不同的是它不是针对单个字段,而是针对多个字段的查询。
+	* query_string查询
+	* simple_query_string查询
+	* 标识符查询
+	* 前缀查询。配置与词条查询类似。如:查询所有的name字段以tom开始的文档。
+	* fuzzy_like_this查询
+	* fuzzy_like_this_field查询
+	* fuzzy查询
+	* 通配符查询。允许我们在查询值中使用*和?等通配符。如“cr\*me”,表示字段里以cr开头me结尾的文档。
+	* more_like_this查询
+	* more_like_this_field查询
+	* 范围查询。查询某一个字段值在某一个范围里的文档,字段可以是数值型,也可以是基于字符串的。比如找到年龄在20到30之间的学生。
+	* 最大分查询
+	* 正则表达式查询
+	
+* 复合查询
+
+	* 布尔查询
+	* 加权查询
+	* constant_score查询
+	* 索引查询
+
+* 过滤器。过滤器不影响评分,只是选择索引中的某个子集。过滤器很容易被缓存,从而进一步提高过滤查询的性能。另外过滤器提供了十几种不同类型,如:范围过滤器、脚本过滤器等等,可以根据不同场景选择合适的。
+	
+* 基于poi经纬度地理位置的查询
+
+	* 基于距离的排序。按照与给定地点的距离来对结果排序。
+	* 边界框过滤。搜索条件提供左上及右下的坐标,搜索被矩形框住的选定区域。
+	* 距离的限制。把结果限定为离基准点一个选定的距离之内,比如把结果限定为离巴黎半径500公里以内。
+
 	
 
 **参考资料:**
 
+《Elasticssearch服务器开发(第二版)》
+
 https://github.com/elasticsearch-cn/elasticsearch-definitive-guide
 
 http://es.xiaoleilu.com/010_Intro/10_Installing_ES.html

+ 25 - 4
open-source-framework/redis.md

@@ -6,10 +6,15 @@
 
 *	[redis缓存与memcache的区别](redis缓存与memcache的区别.md)
 *	[redis原生命令api](http://www.runoob.com/redis/redis-sorted-sets.html)
+*	[redis 命令参考](http://doc.redisfans.com/index.html)
 
 
 ---
 
+redis服务器是核心业务采用单线程模式,无锁竞争且基于内存操作,执行效率非常高。
+
+如果开启备份机制,会fork子线程来处理。
+
 ```
 用的比较多的redis客户端jedis:
 https://github.com/xetorthio/jedis
@@ -232,23 +237,34 @@ Redis lists基于Linked Lists实现。这意味着即使在一个list中有数
     排名以0为底,也就是说,score值最小的成员排名为0
 
 	
-*	Set<String> zrange(String key, int start, int end)
+*	Set\<String> zrange(String key, int start, int end)
 
 	返回索引区间之间的元素,最小元素索引号为0,[start,end]
 	
-*	Set<String> zrangeByScore(String key, double min, double max)
+*	Set\<String> zrangeByScore(String key, double min, double max)
 
 	返回分数之间的元素,[min,max]
 	
+*	Set\<String> zrangeByScore(String key, double min, double max, int offset, int count)
+
+	分数由小到大的顺序,取[min,max]之间的数据,offset表示取数据的开始位置(O:表示最小分数的那个位置),最多返回count个结果
+
+	
 *	long zrevrank(String key, String member) 
 
 	返回有序集key中成员member的排名。其中有序集成员按score值递减(从大到小)排序<BR>
     排名以0为底,也就是说,score值最大的成员排名为0
 
-*	Set<String> zrevrange(String key, int start, int end)
+*	Set\<String> zrevrange(String key, int start, int end)
 
 	返回索引区间之间的元素,最大元素索引号为0,[start,end]
 
+*  Set\<Tuple> zrevrangeByScoreWithScores(String key, double max,
+                                          double min, int offset, int count)
+   
+   分数按大到小的顺序,取[min,max]之间的数据,offset表示取数据的开始位置(O:表示最大分数的那个位置),最多返回count个结果,Tuple包含分数、value值等信息。                       
+                                   
+                                                                
 
 ###### 5.Hash
 
@@ -314,6 +330,11 @@ Redis lists基于Linked Lists实现。这意味着即使在一个list中有数
 	
 **参考资料:**
 
+ 
+http://zhangtielei.com/posts/server.html
+
+https://www.zhihu.com/question/19764056
+
 http://www.redis.cn/
 
-http://ifeve.com/category/redis/
+http://ifeve.com/category/redis/

+ 1 - 1
system-architecture/架构经验.md

@@ -4,7 +4,7 @@
 
 **CPU运算速度>>>>>内存的读写速度>>磁盘读写速度**
 
-**架构要把复杂的问题抽象简单化**
+**架构其实就是把复杂的问题抽象化、简单化**
 
 
 ```