[翻译]Elasticsearch重要文章之二:堆内存的大小和swapping

Elasticsearch默认安装后设置的内存是1GB,对于任何一个业务部署来说,这个都太小了。如果你正在使用这些默认堆内存配置,你的集群配置可能有点问题。 这里有两种方式修改Elasticsearch的堆内存(下面就说内存好了),最简单的一个方法就是指定ES_HEAP_SIZE环境变量。服务进程在启动时候会读取这个变量,并相应的设置堆的大小。举例,你可以用下面的命令设置它 export ES_HEAP_SIZE=10g 此外,你也可以通过命令行参数的形式,在程序启动的时候把内存大小传递给它: ./bin/elasticsearch -Xmx10g -Xms10g 备注:确保Xmx和Xms的大小是相同的,防止程序在运行时改变大小,这个是很废的。 一般来说设置ES_HEAP_SIZE环境变量,比直接写-Xmx10g -Xms10g更好一点。 把你的内存的一半给Lucene 一个常见的问题是配置一个大内存,假设你有一个64G内存的机器,我的天,你想把64G内存给Elasticsearch吗? 越大越好! 当然,内存对于Elasticsearch来说绝对是重要的,用于更多的内存数据提供更快的操作。而且还有一个内存消耗大户-Lucene Lucene的设计目的是把底层OS里的数据缓存到内存中。Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些段文件缓存起来,以便更快的访问。 Lucene的性能取决于和OS的交互,如果你把所有的内存都分配给Elasticsearch,不留一点给Lucene,那你的全文检索性能会很差的。 最后标准的建议是把50%的内存给elasticsearch,剩下的50%也不会没有用处的,Lucene会很快吞噬剩下的这部分内存。 不要超过32G 这里有另外一个原因不分配大内存给Elasticsearch,事实上jvm在内存小于32G的时候会采用一个内存对象指针压缩技术。 在java中,所有的对象都分配在堆上,然后有一个指针引用它。指向这些对象的指针大小通常是CPU的字长的大小,不是32bit就是64bit,这取决于你的处理器,指针指向了你的值的精确位置。 对于32位系统,你的内存最大可使用4G。对于64系统可以使用更大的内存。但是64位的指针意味着更大的浪费,因为你的指针本身大了。浪费内存不算,更糟糕的是,更大的指针在主内存和缓存器(例如LLC, L1等)之间移动数据的时候,会占用更多的带宽。 java 使用一个叫内存指针压缩的技术来解决这个问题。它的指针不再表示对象在内存中的精确位置,而是表示偏移量。这意味着32位的指针可以引用40亿个对象,而不是40亿个字节。最终,也就是说堆内存长到32G的物理内存,也可以用32bit的指针表示。 一旦你越过那个神奇的30-32G的边界,指针就会切回普通对象的指针,每个对象的指针都变长了,就会使用更多的CPU内存带宽,也就是说你实际上失去了更多的内存。事实上当内存到达40-50GB的时候,有效内存才相当于使用内存对象指针压缩技术时候的32G内存。 这段描述的意思就是说:即便你有足够的内存,也尽量不要超过32G,因为它浪费了内存,降低了CPU的性能,还要让GC应对大内存。 *我有一个1TB内存的机器 这个32GB的线是很很重要的,那如果你的机器有很大的内存怎么办呢?现在的机器内存普遍增长,你现在都可以看到有300-500GB内存的机器。 首先,我们建议编码使用这样的大型机 其次,如果你已经有了这样的机器,你有两个可选项: >你主要做全文检索吗?考虑给Elasticsearch 32G内存,剩下的交给Lucene用作操作系统的文件系统缓存,所有的segment都缓存起来,会加快全文检索。 >你需要更多的排序和聚合?你希望更大的堆内存。你可以考虑一台机器上创建两个或者更多ES节点,而不要部署一个使用32+GB内存的节点。仍然要坚持50%原则,假设 你有个机器有128G内存,你可以创建两个node,使用32G内存。也就是说64G内存给ES的堆内存,剩下的64G给Lucene。 如果你选择第二种,你需要配置cluster.routing.allocation.same_shard.host:true。这会防止同一个shard的主副本存在同一个物理机上(因为如果存在一个机器上,副本的高可用性就没有了)。 swapping是性能的坟墓 这是显而易见的,但是还是有必要说的更清楚一点,内存交换到磁盘对服务器性能来说是致命的。想想看一个内存的操作必须是快速的。 如果内存交换到磁盘上,一个100微秒的操作可能变成10毫秒,再想想那么多10微秒的操作时延累加起来。不难看出swapping对于性能是多么可怕。 最好的办法就是在你的操作系统中完全禁用swapping。这样可以暂时禁用: sudo swapoff -a 为了永久禁用它,你可能需要修改/etc/fstab文件,这要参考你的操作系统相关文档。 如果完全禁用swap,对你来说是不可行的。你可以降低swappiness 的值,这个值决定操作系统交换内存的频率。这可以预防正常情况下发生交换。但仍允许os在紧急情况下发生交换。 对于大部分Linux操作系统,可以在sysctl 中这样配置: vm.swappiness = 1 备注:swappiness设置为1比设置为0要好,因为在一些内核版本,swappness=0会引发OOM(内存溢出) 最后,如果上面的方法都不能做到,你需要打开配置文件中的mlockall开关,它的作用就是运行JVM锁住内存,禁止OS交换出去。在elasticsearch.yml配置如下: bootstrap.mlockall: true 原文地址:https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html.

2015年5月17日 · 1 分钟

博客正式迁入阿里云ECS

从今日起,我的博客正式迁入阿里云ECS服务器了。之前是用的西部数码west263的虚拟机。图的就是便宜。便宜没好货,服务器三天两头的出故障。 这是dnspod的部分监控信息: zhaoyanblog.com johnyannj.gotoip2.com. 01-29 17:21 01-29 17:39 17分钟 53秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-23 23:41 01-23 23:51 10分钟 27秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-21 01:01 01-21 01:05 4分钟 30秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-16 18:25 01-16 18:54 28分钟 29秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-12 11:05 01-12 11:24 19分钟 19秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-12 02:57 01-12 07:40 4小时 43分钟 52秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-11 20:50 01-11 21:14 24分钟 3秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-11 15:52 01-11 16:13 21分钟 5秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-11 11:51 01-11 12:08 16分钟 31秒 zhaoyanblog.com johnyannj.gotoip2.com. 01-11 05:55 01-11 07:49 1小时 54分钟 6秒 ...

2015年5月17日 · 1 分钟

[翻译]Elasticsearch重要文章之一:不要触碰这些配置

在Elasticsearch中有一些热点,人们可能不可避免的会碰到。我们所理解的,所有的调整就是为了优化,但是这些调整,你真的不需要理会它。因为它们经常会被乱用,从而造成系统的不稳定或者糟糕的性能,甚至两者都有可能。 垃圾收集器 在章节已经有一个简短的介绍,JVM使用一个垃圾收集器来释放不再使用的内存,这篇内容的确是上一篇的一个延续,但是因为重要,所以值得单独拿出来作为一节。 不要更换默认的垃圾收集器! Elasticsearch默认的垃圾收集器是CMS垃圾收集器。这个垃圾收集器因为可以和应用并行处理,所以有很小的暂停,当然它有两个stop-the-world阶段,处理大内存也有点吃力。 尽管这些缺点,它也是目前像Elasticsearch这样低延迟需求的软件的最佳垃圾收集器。官方建议使用CMS。 现在有一款新的垃圾收集器,叫G1垃圾收集器,这款GC设计目的是比CMS更小的暂停时间,以及对大内存的处理能力。它的原理是把内存分成许多区域,并且预测哪些区域最有可能需要回收内存。G1 GC通过首先收集这些区域,产生更小的暂停时间,从而能应对更大的内存。 听起来不错,很遗憾的是G1 GC还是太新,经常有bug爆出,这些bug大都是段错误那种,会导致硬盘崩溃。Lucene的测试套件对GC是很严格残酷的,好像G1 GC一直都无法完全胜任。 我们很希望在将来某一天推荐使用G1 GC,但是对于现在,它还不能足够稳定以满足Elasticsearch和luncene的要求。 线程池 许多人喜欢调整线程池,无论什么原因,人们好像都无法抵挡的想增加线程数。索引太多了?增加线程!搜索太多了,增加线程!节点空闲率低于95%? 增加线程! Elasticsearch默认的线程设置已经是很合理的了。对于所有的线程池(除了搜索的),线程个数是根据CPU核心数设置的。如果你有8个核,你可以同时运行8个线程,那么对于一些线程池,你设置8个线程是合适的。 搜索线程池设置的大一点,是核心数的3倍。 你可能争辩说,一些线程会堵塞在IO处,所以你才想加大线程的。对于elasticsearch来说,这不是问题,因为大多数IO的操作是由Lucene线程管理的,而不是Elasticsearch。 此外,线程池通过彼此之间的合作工作。你不需要担心网络相关的线程因为它在等待磁盘写入而堵塞。因为网络线程早已把这个工作交给另外的线程池,并且网络进行了响应。 最后,你的处理器的计算容量是有限的,拥有更多的线程会导致你的处理器频繁切换线程上下文。一个处理器同时只能运行一个线程,所以当它需要切换到其它不同的线程的时候,它会存储当前的状态(寄存器等等),然后加载另外一个线程。如果幸运的话,这个切换发生在同一个cpu核心,如果不幸的话,这个切换可能发生在不同的核心,这就需要在内核间总线上进行传输。 这个上下文的切换,会循环的带来管理调度开销,在现代的CPU上,估计高达30us,也就是说线程会被堵塞30us,如果这个时间用于线程的运行,估计早就结束了。 人们经常稀里糊涂的设置线程池的值,8个核的CUP,我们见过有人配了60,100甚至1000个线程,这些设置只会让CPU实际工作效率更低。 所以下次请不要调整线程池的线程数,如果真想调整,一定要关注你的CPU核心数,最多设置成核心数的两倍,再多了都是浪费。 原文地址:http://www.elastic.co/guide/en/elasticsearch/guide/current/_don_8217_t_touch_these_settings.html

2015年5月14日 · 1 分钟

华为荣耀联合四大电商5月11日出新品

@华为荣耀 官方微博和大家相约5月11日,并同时@了@华为商城 @天猫电器城 @京东手机通讯 @苏宁易购,四大电商平台。想必又要有一款新品发布,华为荣耀一向秉承无朋友不荣耀,且看@华为荣耀和四大电商微博附图: @华为荣耀: 这一场不期而遇的美好,5月11日,只想和你们一起揭晓!@华为商城 @天猫电器城 @京东手机通讯 @苏宁易购 @华为商城: 一场不期而遇的美好,敢不敢和我约一约?@华为荣耀 @天猫电器城: 一场不期而遇的美好,敢不敢和我约一约?@华为荣耀 转发微博,即有机会赢取新品华为荣耀畅玩4C一台。 @京东手机通讯: 一场不期而遇的美好,敢不敢和我约一约?@华为荣耀 @苏宁易购 一场不期而遇的美好,敢不敢和我约一约?[害羞]@华为荣耀

2015年5月8日 · 1 分钟

Elasticsearch配置官方建议

第一 有关内存 修改ES_MIN_MEM 和 ES_MAX_MEM 建议: in general, the more memory allocated to the process, the better(通常,越大越好) It is recommended to set the min and max memory to the same value, and enable mlockall.(建议设置成相同的值,并且开启mlockall) No more than 50% of available RAM (不要超过内存的一半) No more than 32 GB: If the heap is less than 32 GB, the JVM can use compressed pointers, which saves a lot of memory: 4 bytes per pointer instead of 8 bytes.(不要超过32G,因为对于JVM,小于32G的时候会使用压缩指针,这个会节省很大内存) Increasing the heap from 32 GB to 34 GB would mean that you have much less memory available, because all pointers are taking double the space. Also, with bigger heaps, garbage collection becomes more costly and can result in node instability.(从32G到34G,意味着你失去了更多的可用内存,因为所有的内存指针都变成了double,而且heap越大,GC花销越大,这将是不稳定因素) ...

2015年5月1日 · 2 分钟

荣耀4C能否再续传奇

华为荣耀掌门人赵明今日在全球互联网大会上做了主题为:“笨鸟”不等风的主题演讲,阐述了他对互联网,以及荣耀定位的看法。同时发布了华为荣耀三款产品。荣耀4C,荣耀畅玩平板以及荣耀畅玩平板Note。 其中最引人注意的是荣耀4C。也叫荣耀畅玩4C,以后除了正统的荣耀6以后的延续版本,其他荣耀出品的手机应该都会归入畅玩系列。荣耀4C是作为荣耀3C的延续产品发布的。荣耀3C作为荣耀品牌的第一款爆款,销量达到了1000万部,可以说是荣耀树立品牌的功臣。那么荣耀4C能否延续传奇呢? 对于荣耀4C的硬件配置应该是达到了我们所有想要的参数。 双4G,2G内存,8G空间,1300万像素,799的价格,黑白配中规中矩的外观。 对于热衷于1000元机的用户,应该是比较适合的一款手机。相信荣耀4C肯定会热销的。 虽然对于一款799的手机,我们不能渴求太多。但是我们可以期望。我在想荣耀4C如果再加上三点内容,我想会火的更久。 第一,nfc的功能加上,当前电信版本的是有这个功能的。 第二,屏幕改成1080P。720P的屏幕还是能辨识出颗粒度的 第三,摄像头周围的边框不要突出来。荣耀3C就有这样的缺陷。 荣耀4C已经发布,希望它能续写传奇,我更期待荣耀5C给我更多惊喜?

2015年4月28日 · 1 分钟

使用curl命令操作elasticsearch

第一:_cat系列 _cat系列提供了一系列查询elasticsearch集群状态的接口。你可以通过执行 curl -XGET localhost:9200/_cat 获取所有_cat系列的操作 =^.^= /_cat/allocation /_cat/shards /_cat/shards/{index} /_cat/master /_cat/nodes /_cat/indices /_cat/indices/{index} /_cat/segments /_cat/segments/{index} /_cat/count /_cat/count/{index} /_cat/recovery /_cat/recovery/{index} /_cat/health /_cat/pending_tasks /_cat/aliases /_cat/aliases/{alias} /_cat/thread_pool /_cat/plugins /_cat/fielddata /_cat/fielddata/{fields} 你也可以后面加一个v,让输出内容表格显示表头,举例 name component version type url Prometheus analysis-mmseg NA j Prometheus analysis-pinyin NA j Prometheus analysis-ik NA j Prometheus analysis-ik NA j Prometheus analysis-smartcn 2.1.0 j Prometheus segmentspy NA s /_plugin/segmentspy/ Prometheus head NA s /_plugin/head/ Prometheus bigdesk NA s /_plugin/bigdesk/ Xandu analysis-ik NA j Xandu analysis-pinyin NA j Xandu analysis-mmseg NA j Xandu analysis-smartcn 2.1.0 j Xandu head NA s /_plugin/head/ Xandu bigdesk NA s /_plugin/bigdesk/ Onyxx analysis-ik NA j Onyxx analysis-mmseg NA j Onyxx analysis-smartcn 2.1.0 j Onyxx analysis-pinyin NA j Onyxx head NA s /_plugin/head/ Onyxx bigdesk NA s /_plugin/bigdesk/ 第二:_cluster系列 1、查询设置集群状态 curl -XGET localhost:9200/_cluster/health?pretty=true pretty=true表示格式化输出 level=indices 表示显示索引状态 level=shards 表示显示分片信息 2、curl -XGET localhost:9200/_cluster/stats?pretty=true 显示集群系统信息,包括CPU JVM等等 3、curl -XGET localhost:9200/_cluster/state?pretty=true 集群的详细信息。包括节点、分片等。 3、curl -XGET localhost:9200/_cluster/pending_tasks?pretty=true 获取集群堆积的任务 3、修改集群配置 举例: ...

2015年4月25日 · 2 分钟

中兴向华为提出专利诉讼

中兴努比亚公司的官方微博 @nubia智能手机 在华为P8发布会当天发表微博,说有关P8侵犯努比亚专利已经向华为提出诉讼请求: 针对努比亚向华为发律师函称其荣耀X2和P8涉嫌侵权问题,华为发声明称其没有使用中兴提到的专利。 以下为华为官方声明全文: 1.华为没有使用友商在所谓律师函里提到的专利。慢速快门或者多帧合成是一种拍照的基础技术,通用称呼叫B门,不同厂商可能采取不同的实现技术来实现B门拍摄。 2. 华为在最近发布荣耀X2以及华为P8中采用自主研发的算法以及更加新型的技术实现了B门拍摄的效果,对光轨和周边环境的融合有更好的解决效果,我们已经申请多项专利。 3.华为一贯倡导知识产权保护及有偿共享技术创新,致力于构建公平健康的商业环境。我们非常重视保护自己的知识产权,同时也非常尊重他人的知识产权。 博主认为华为一向注重知识产权,早期华为在专利问题上和思科、爱立信等国际电信巨头也有过专利交锋。不可能这样明显的侵犯友商专利。 华为22日下午在中国上海发布华为P8,中兴在这个时候提出专利诉讼,想必是一场宣传噱头。我们静观其变。

2015年4月23日 · 1 分钟

#天生急性子#华为荣耀将推新品

2015年4月15日以来,@华为荣耀手机 官方微博 每天一副关于[#天生急性子#怎能忍]话题海报,根据惯例,当@华为荣耀说出不能忍的时候,是时候推出新品了。本博客将连续转载@华为荣耀手机 #天生急性子#系列海报。每张海报里,都隐藏着新机型的特点,有人猜是荣耀7要来了,有人猜是荣耀5X,有人猜是荣耀4C:我们且猜且等待: 4月15日海报:下一秒破极限,谁让我是#天生急性子#! 说明:这是一款性价比极高的手机。 4月16日海报:天啊,一GB就够大么?#天生急性子#怎能忍?! 说明:内存至少2GB 4月17日海报:伪双4G?不能再2!#天生急性子#怎能忍?! 说明:是一款真双4G手机 4月18日海报: 没自主心,终究是刍!#天生急性子#怎能忍?! 说明:仍然使用华为自主研发的麒麟芯片,有可能是新型号的64位芯片。 4月19日海报: 电量小,生气有用吗?#天生急性子#怎能忍?! 说明:估计采用不小于3000mA的大电池。 4月20日海报:800万怎能一目了然?#天生急性子#怎能忍?! 说明:摄像头应该是1300W像素。 #天生急性子#就是爱剧透,明儿有挺急的事er要说,不止一件哦~ 说明:4月21日就要公布了~

2015年4月18日 · 1 分钟

华为P8凭什么这么贵?

2015年4月15日晚上10点,华为在英国伦敦的时尚艺术殿堂Old,Billingsgate发布了2015年首款旗舰机型-华为P8。华为P8在欧洲售价:标准版499欧元(相当于3313元人民币),高配版599欧元(相当于3977元人民币)。华为P8max:标准版:549欧元(相当于3645元人民币),高配版649欧元(相当于4309元人民币)。 华为P8为何可以卖这么贵,和三星、苹果等高端手机PK。看了以下华为P8的独特之处,你就知道了。 第一、外观: 华为P系列手机一向走的就是简约时尚设计路线,从P1、P6、P7,在外观设计上一向是独树一帜,与众家不同的,P8也是一样。P8整体外观纯净,一体化金属机身。超精细纳米注塑。精密四轴CNC机床加工,打造硬朗高光线条,钻切棱边,抛光处理,又有一定的手握弧度。菱形颗粒喷砂工艺,突显金属质感。皓月银、流光金、烟云灰及苍穹黑四种配色,彰显高贵气质。前后平整,无摄像头突出。厚度只有6.4mm。1.6mm超窄边框、78.3%屏占比设计,机身极致紧凑。 第二、配置: 华为P系列,美、时尚、高品质是所追求的,一直不盲目的堆砌器件,但是他的配置也是相当给力,P8使用海思麒麟930/935 64位高端芯片,屏幕采用IPS-NEO负向液晶屏,对比度高达1500:1。内存3G。电池2680mAh,如果你追求大电池,可以选P8max,电池容量4360mAh 第三、拍照 华为P8在拍照上面是下个苦功夫的: 1、P8不仅高达1300万像素,而且也是世界上首款搭载4色RGBW传感器的手机,在高对比度环境下成像效果亮度提升32%,在低光的环境下噪点降低78%。 2、P8支持OIS光学防抖,光学成像稳定性在同级别手机中表现最佳,拥有1.2度的防抖角度,在低光环境下拍照及视频拍摄时,优势尤为明显! 3、P8还搭载了媲美单反级别的独立图像处理器(ISP),从源头上减少图像噪点,还在高对比度环境下实现了智能场景识别。并进一步优化了人脸识别功能,使肤色更自然。 4、P8新增“流光快门”功能、“大导演”功能、魅我模式。玩转相机。 第四:技术创新 1、凭借业界独有的Signal+技术,通过小巧而强大的双天线设计和无缝切换技术,P8可智能识别使用场景。当一端天线被手握住导致信号衰减的情况下,能即 刻自动切换到另一端天线,时刻保证良好的通信信号。即便在高铁上时速超过300公里的条件下,仍能保持稳定连接,增加通话接通率。 2、P8采用的WiFi+技术,能够根据基于WiFi连接历史记录和位置智能连接到真正高质量的网络,还能实现在3G/4G/WiFi间的自动识别与自由切换。 3、P8基于欧洲、北美、拉美、澳洲、亚洲20多个国家和地区的国际漫游数据进行测试,针对4G网络下漫游时长优化性能,通过Roaming+技术使得漫游搜网时间缩减了2/3!简单来说,就是漫游时手机网络接入速度更快。 4、P8采用了双卡槽设计,可以不分制式支持随意盲插,SD卡SIM卡共用卡槽。.(这个可是华为的专利) 5、指关节截屏。用指关节随意在屏幕上划一个区域,即可轻松截出该区域的屏幕内容。如果用指关节轻轻双击屏幕,即可截取全屏。 6、P8采用了业界领先的数字音频处理芯片Hi6402和smart PA智能功放,播放音乐时增大音量,也能保持高保真音质。此外,P8有着高灵敏度麦克风和动态扬声器,开启超级免提,支持半径2米范围内高质量免提通话。华为Voice+ 独特的大音量模式,可使音量峰值提升58%;在强风噪环境下,P8连接耳机通话可消除90%的风噪,即便使用单麦克耳机,也能感受到近乎零噪声的通话体验。你可以预设语音唤醒手机,只需要呼唤“你好,小E,你在哪?”P8就会用播放语音或者用音乐的方式来回应你,不用担心找不到手机了。 第五:配件 1、TalkBand B2手环解锁 2、电子墨水屏后壳可供选购,装上之后,金属背面一秒变身电纸书。 3、创新点阵式皮套,四种颜色可选,不用开窗即可显示来电,同时规避了传统透明窗皮套容易留下指纹、污渍的问题 再问华为P8凭什么卖这么贵,一款手机如果有以上创新和亮点,难道它不是一款创意之作吗? 2015年4月16-22日在华为商城全球独家首发,华为P8值得拥有。

2015年4月16日 · 1 分钟

2015年4月15日今晚10点余承东在伦敦发布华为P8

爱奇艺提供在线直播,直播地址: http://www.iqiyi.com/marketing/huaweip8live.html #华为P8#即将到来,美,将以创意继续传承…… 一起期待“8”……

2015年4月15日 · 1 分钟

有了自己域名的专属邮箱

从今天开始,本站长就有了自己的专属邮箱了zhaoyan@zhaoyanblog.com。因为是买了万网的域名,赠送的10G企业邮箱,一直没有用。现在用起来了。以后再也不用担心垃圾广告了。 如果你看到我的博客,有什么疑问,或者发现不对的地方,欢迎你给我发邮件,或者微博给我留言一起交流技术问题。

2015年4月10日 · 1 分钟

快速系统的掌握正则表达式

第一部分:原子匹配,所有的可见的不可见的字符都可以直接书写用于匹配, 注意1:对于不可见的字符和正则表达式的使用的特殊字符使用反斜杠转义。 注意2:对于中文最好使用unicode编码 第二部分:原子筛选 1点:“|” 表示前后都匹配,或者 ab|bc ab和bc都可以匹配成功。 2点:[abc] 匹配其中任何一个。 (注:"-" 表示区间,例如a到z所有字母可以写成[a-z]) 3点:[^abc] 不包含任何一个。 第三部分:原子集合(类似于快捷键一样) 第1点:. 匹配换行符之外的所有字符 第2点:\d 匹配数字和[0-9]等价 \D是\d的补集,等价[^0-9] 第3点:\s 匹配不可见的字符和[\r\n\t\f\v]等价,\S是\s的补集 第4点:\w 匹配字母数字和下划线和[0-9a-zA-Z_]等价,\W是\w的补集 第四部分:量词(修饰匹配前面的原子的个数) 第1点:{n} 恰好出现n次 第2点:{n,} 大于等于n次 第3点:{n,m} 大于等于n次,小于等于m次 第4点:* 匹配0次 1次或者多次,相当于{0,} 第5点:+ 匹配1次或者多次,相当于{1,} 第6点:? 匹配0次或者1次,相当于{0,1} 第五部分:边界控制和模式单元 第1点:^表示以后面的原子作为开头,前面没有任何东西 第2点:$表示以前面的原子作为结尾,后面没有任何东西 第3点:() 括起来的内容作为一个原子例如(ab){2},就表示匹配2个ab,(aa|bb)cd, 就表示匹配aacd或者bbcd 第六部分:修正类型(为了消除正则表达式的歧义) 修正类型有好多种,我觉得最重要一个就是关于贪婪模式和懒惰模模式的修正,也是和第四部分相关的。 例如: 正则表达式是:(ab){2,3},匹配对象是:ababab 那匹配的结果是abab, 还是ababab呢,前面的就是懒惰模式,后面的就是贪婪模式。 为了消除这种歧义,你要指定你所使用的模式。不同的正则引擎,指定方式不一样: 例如: php的是在正则表达式后面加个U或者u,分别表示懒惰模式和贪婪模式 例如’/[0-9]*/U' java使用的正则引擎是支持在有歧义的量词后面加个?表示懒惰模式,默认是贪婪模式。 例如 [0-9]+? 就表示匹配到尽量少的内容就返回。 正则表达式还有一些其它内容和细节,但是我觉得掌握这些概念,在实际应用中可以构造任何想要的匹配形式了。

2015年4月6日 · 1 分钟

elasticseach日常维护之shard管理

elasticseach的数据分片shard,在创建索引之后,在生命周期内就不可改变了,所以在索引开始创建的时候,要根据预估的数据规模合理的设置shard数目。在集群中让shard分布均匀,可以有效的均衡集群负载,所以我们要尽量保证shard的在集群中分布均匀。 每个shard都有自己的编号,从1往后数。你可以通过 curl -XGET ‘http://192.168.1.1:9200/_cat/shards’ 来查看shard分布情况: index_1 100 p STARTED 44217999 12.3gb 192.168.1.1 Strongarm index_1 100 r STARTED 44217999 12.3gb 192.168.1.2 Agony index_1 109 p STARTED 39394176 10.7gb 192.168.1.3 Captain America index_1 109 r STARTED 39394176 10.6gb 192.168.1.1 Smuggler index_1 103 p STARTED 42910705 11.9gb 192.168.1.2 Alyssa Moy index_1 103 r STARTED 42910716 11.9gb 192.168.1.1 Chi Demon index_1 169 r STARTED 40889958 11.4gb 192.168.1.2 Milos Masaryk index_1 169 p STARTED 40889958 11.3gb 192.168.1.1 Sergeant Fury index_1 55 r STARTED 44243841 12.2gb 192.168.1.3 Milos Masaryk index_1 55 p STARTED 44243841 12.1gb 192.168.1.3 Whiteout index_1 214 r STARTED 43512570 12gb 192.168.1.1 Mekano index_1 214 p STARTED 43512570 12gb 192.168.1.2 Sergeant Fury index_1 97 r STARTED 45660486 12.7gb 192.168.1.1 Pathway index_1 97 p STARTED 45660486 12.7gb 192.168.1.2 Mekano ...

2015年4月3日 · 2 分钟

华为荣耀将请明星做代言

4月1日 华为荣耀将有疯狂的事情发生,其中一件就是聘请一位明星作为荣耀代言人,也就是#荣耀星伙伴# 连日 @华为荣耀 官方微博给出该明星黑白肖像画,让网友猜测。 第一张: 如果你想走得快,就一个人走;如果你想走得远,就一起走。在2015年,我们邀请了一位 “星伙伴“加入荣耀大家庭,和我们一起走向荣耀之路下一站。才华横溢,从容自如;追随内心的想法,演绎自己的故事。Ta是#荣耀星伙伴#,Ta是______。 第二张: 谜样人生,万分清醒,突破自我的演绎,都是真实的表达。Ta是#荣耀星伙伴#,Ta是_______。 第三张: 且歌且行,观心自在,勇敢唱响前行路,一起追逐荣耀梦!Ta是#荣耀星伙伴#,Ta是______。 第四张: 荣耀之路,结伴同行,让每一个脚步都坚实有力,在行走中发掘内心的力量。Ta是#荣耀星伙伴#,Ta是______。 我猜这个人是陈坤,理由如下, 第一:陈坤会唱歌,会演戏,有颜值,有演技,外形酷似上述图片,且其人符合上方描述 第二:2014年末华为荣耀一周年及荣耀6 Plus发布会上,陈坤曾经来过。当时的PPT是这样描述他的,完全符合荣耀#勇敢做自己#的精神。

2015年3月31日 · 1 分钟