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

第一部分:原子匹配,所有的可见的不可见的字符都可以直接书写用于匹配, 注意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 分钟

4月1日愚人节,华为荣耀将要有大动作

在华为荣耀新掌门人赵明在印度参加完荣耀发布会之后,就说会有一个疯狂的事情告诉大家。然后就是@华为荣耀 官方微博的一些列海报: 全文海报全是关于疯狂的强调,一点也让人琢磨不出4月1日将有什么活动,花粉们的猜测有以下几种: 1、荣耀新机发布 2、当天购买不限量 3、麒麟新芯片发布 4、更新荣耀WLAN 什么事情才算是最疯狂的呢?这次荣耀官方是一点信息也没有透露,那你最期待这次疯狂的事情是什么呢?最终答案只能等4月1日揭晓了。

2015年3月29日 · 1 分钟

荣耀新掌门赵明要告诉大家一件疯狂的事

互联网上真的有一群人专门黑这个,黑那个。华为荣耀新掌门前天发布了一篇微博: 赵明的微博表达很清楚:荣耀6 Plus的双摄像头的性能还没有释放它所有的潜能,华为荣耀会在后面的软件优化的中提供更多的惊喜,让拍照速度进一步提升。这篇微博无可厚非。 但是好事之徒就是把这篇微博问题放大,歪曲为:“华为没研发好,就推向市场,把消费者当小白鼠”。 再有一篇赵明对一个网友的评论,认为手机有取代单反的趋势。即有人讽刺他为“赵大嘴”。其不知赵明是站在华为强大研发能力基础上的。别的公司想必也不敢说这样的话。 今日赵明微博表示,其刚刚参加了华为荣耀印度发布会,即将告诉大家一件疯狂的事情,让我们拭目以待。

2015年3月24日 · 1 分钟

cassandra日常维护之nodetool cleanup

nodetool cleanup 官方的解释是:cassandra在扩容一个节点到新集群的时候,有些数据会复制一份到新节点,然后属于新节点的数据仍然存在那些老节点上。它自己不会主动的去删除。所以在每次扩容之后,你需要在每个老节点上执行cleanup操作。 根据实践: cleanup操作在执行过程中可能会生成一些临时文件,并且导致IO利用率少许上升,机器负载少许增加, cleanup是单线程操作,整体上影响不大,不需要关闭压缩。 cleanup是单机行为,也不需要限制节点stream传输。 只要不是业务特别繁忙的时间,尽可放心的逐节点执行。 在执行cleanup之后,节点数据明显减少。 cleanup在扩容之后随时可以执行。也可以指定只cleanup某个keyspace或者columnFamily nodetool -h 192.168.1.1 [keyspace [cfnames]]

2015年3月19日 · 1 分钟

[新闻]华为P8定于四月发布

@华为终端官方微博 近日连续发图片微博,以#期待4月,再等等8#为话题开展线上互动。并且华为消费者BG总裁余承东转发了相关微博,一切表明华为2015年第一款旗舰机要来了。 为什么是P8,不是Mate8呢。首先这个8是一定的,@华为终端官方微博连续发了四张带8的宣传图片,来暗示新机型可能的关注点: 首先华为P系列,一直是以外观取胜,华为高端机型就是以P1打开的市场,主打纤薄,时尚,漂亮。 从上面宣传的点上,都是质量和外观上,没有特别突出的功能,依次可看是P8无疑。 其次最后一张图片,表示这款手机有更实惠的价格,在华为高端机里只有P系列是最便宜的了,Mate7 最低配的版本也要2999的。 最后P7是2014年上半年发布,MATE7是2014年下半年发布,现在依旧卖的很火,从发布时间上P系列应该退出新产品了。 P系列从P1到P7 一直给人惊喜,让我们一起等待这个“有史以来,最值得期待的四月”。

2015年3月13日 · 1 分钟

maven关于打包的那些插件

在工作中使用maven创建java工程,管理jar包依赖,方便快捷。根据需要,需要把工程打包成各种需要的形式,这些打包插件就用到了。 现将各种打包用到的插件总结到这里,你可以参考官方文档,修改或者增加适合你的参数。 第一个:打源码包 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> 第二个:打全量包 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.zhaoyanblog.Launcher</mainClass> </transformer> <!--防止spring多个包同名配置文件覆盖--> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer </transformers> </configuration> </execution> </executions> </plugin> 第三个:copy依赖jar包 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <includeScope>runtime</includeScope> <outputDirectory>target/lib/</outputDirectory> </configuration> </execution> </executions> </plugin> 第四个:指定main方法,修改manifest文件 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib</classpathPrefix> <mainClass>com.zhaoyanblog.Launcher</mainClass> </manifest> <manifestEntries> <Class-Path>conf/</Class-Path> </manifestEntries> </archive> <finalName>tools-${project.version}</finalName> </configuration> </plugin> 第五个:打压缩包。 ...

2015年3月12日 · 1 分钟

使用Spring最简单的定时任务

我不喜欢用注解,我也不喜欢用quartz,我就要一个类似于Linux下面crontab的定时任务的功能。 下面的方式,我认为是最简单最直接的方式: 配置文件 <?xml version="1.0" encoding="UTF-8"?> 写一个定时任务 package com.zhaoyanblog class Myjob { public void run() { //TODO } } 注意: 第一:cron是六个位置,和linux下面的crontab 不一样,多了一个秒位。 第二:任务是阻塞式的,当前面的一个任务没有完成,或者scheduler线程数被占光了,都会导致后面的任务阻塞。

2015年3月8日 · 1 分钟

怎么开发一款elasticseach的插件

工作需要开发一款elasticsearch插件,来完成某项工作,根据其它插件的源码,依瓢画葫芦,总结一下开发一个elasticsearch插件的流程: 第一步:首先创建一个java的maven工程,依赖elasticsearch的jar包 org.elasticsearch elasticsearch 1.2.1 provided 第二步:在类文件下创建一个es-plugin.properties文件,指定插件加载入口 plugin=org.elasticsearch.plugin.zhaoyanblog.myplugin 第三步:创建MyPlugin类,继承org.elasticsearch.plugins.AbstractPlugin。 package org.elasticsearch.plugin.zhaoyanblog; import org.elasticsearch.common.collect.ImmutableList; import org.elasticsearch.common.inject.Module; import org.elasticsearch.plugins.AbstractPlugin; import org.elasticsearch.zhaoyanblog.MyModule; public class MyPlugin extend org.elasticsearch.plugins.AbstractPlugin { //我们的插件Module private static final Collection<Class<? extends Module>> modules = ImmutableList.<Class<? extends Module>> of(MyModule.class); /** * {@inheritDoc} */ public String name() { //插件名字 return "my-plugin"; } /** * {@inheritDoc} */ public String description() { //插件描述 return "my first plugin"; } @Override public Collection<Class<? extends Module>> modules() { return modules; } } 第四步:创建自定义的Module。继承org.elasticsearch.common.inject.AbstractModule。注入我们的服务类。 ...

2015年3月8日 · 1 分钟

[资讯]荣耀再添新品-荣耀路由

虽然华为的路由器型号众多,但是这一款随着荣耀X2一起发布的路由器,是首款以荣耀命名的路由器,正式加入荣耀家族。那么荣耀路由有哪些亮点呢? 官方给出的整体的描述是:强大、稳定、友好、省心、安全 具体细节包括: 第一:内置天线 荣耀路由摒弃了传统的外置天线,将天线优雅的隐藏起来,大小只有90mm×90mm×90mm。内置双频巴伦天线,支持2.4G/5G。天线倾角设计,可以实现整体空间的全覆盖。支持波束成形。 第二:性能强大的海思双核芯片 和某些厂商仅仅是买来器件组装不同,荣耀路由有一颗自主研发的高性能双核芯片,有独立的WIFI传输引擎,性能是比传统路由器更强大,wifi传输更高效。 第三:双路由器一键扩展wifi 两个相同的路由器一键自动同步配置,实现wifi中继,可以很轻松的让多个房间共享wifi。 第四:睡眠模式 这个一般路由器是没有的,进入睡眠模式之后,wifi功率会降低为50%,省电环保。 第五:安全 荣耀路由的安全由华为安全实验室验证。 这款路由器只要188元,有了这款路由器,你还会去卖底端的小米路由器MINI,和昂贵的小米路由器吗?

2015年3月4日 · 1 分钟

荣耀X2比荣耀X1有哪些升级

于巴塞罗那当地时间3月3日下午华为荣耀品牌发布了大屏平板手机荣耀X2。 荣耀X2沿袭荣耀X1一贯的大屏风格。7寸。再荣耀X1的基础上,主要有以下几点升级: 第一:CPU,使用华为海思 Kirin 930八核64位芯片,也就是支持Cat6 300M的4G下行速度。GPU从Mali-450 MP4升级为Mali-T628 MP4 第二:有3G内存版本,存储也有32G版,最大扩展由32G,升级到128G。 第三:智能wifi天线设计,支持2.4G、5G双频。 第四:纳米独立音腔设计,配备独立SmartPA 第五:移动联通双4G支持。 第六:外观承袭大家钟爱的Mate 7,给人高大上的感觉。 附图:

2015年3月4日 · 1 分钟

linux环境下根据统计数据生成柱状图文件

工作中有一项工作就是一个监视脚本,把数据的增量信息,每天以邮件的形式发送给相关人员,但是每天的增量信息并不能直观的带来可用信息,比较有用的是近一段时间数据的增长趋势。 如果描述近一段时间的增长趋势,比较直观的做法,就是生成图像,虽然email支持html,但是它毕竟不是在浏览器中浏览,没法使用一些画图js。最后想到的就是生成图片格式的文件。 根据数据生成图片文件,首先想到的是Graphviz,之前用过它的dot命令。可以生成流程图。仔细研究了下这个软件包,貌似它只局限于关系图的表达,并不擅长图表领域。 再继续找,便找到了大名鼎鼎的gnuplot。记得大学时候用的仿真软件RSOFT,都内带了这款画图软件,说明gnuplot在专业绘图领域还是很出名的。 简单的示例,生成一个柱状图。 数据文件 data.txt 1月 22 2月 23 3月 20 4月 26 5月 32 6月 13 7月 22 8月 23 9月 20 10月 26 11月 32 12月 42 再写个脚本文件:plot.sh #!/bin/bash echo " set terminal png truecolor set output \"my.png\" set grid set style data histograms set style fill solid 1.00 border -1 set xlabel \"date\" set ylabel \"num\" plot \"data.txt\" using 2:xtic(1) title \"my data\" " | gnuplot 你也可以把echo的内容输入到一个文件里,然后使用gnuplot命令执行这个文件。 执行之后,生成的my.png文件如下,很不幸,不支持中文,不过网上有解决的方法。 ...

2015年3月3日 · 1 分钟

[资讯]MWC2015,华为再出发,首发三款智能穿戴设备

北京时间2015年3月1日晚,华为在西班牙巴塞罗那举办的MWC 2015上召开新品发布会,推出旗下三款可穿戴设备。 第一款:TalkBand B2 智能手环,蓝牙和手环的完美结合。相对B1,B2的重量更轻,更加贴切手腕,手环有多种材质供选择;配备一块0.73寸的PMOLED触摸屏幕,机身采用可分离设计,分为蓝牙耳机和手环两部分,二者可以相互定位,此外内置Smartphonepager功能,通过蓝牙实现手机的防丢失功能;B2配有六轴陀螺仪以及更多传感器,支持智能运动追踪、自我学习模式和与手机的无缝连接;B2具有双麦降噪功能,通话质量得以改进。除适配安卓4.0以上系统外,B2也可以适配iOS7以上系统。 第二款:TalkBand N1 一款蓝牙耳机,并且可以通过机身控制音乐播放功能。同时这款入耳式耳机本身也提供了一些基本的运动追踪功能,同时内置了4GB的存储空间可以保存1000首音乐。另外,这款耳机的重量非常轻,只有不到18克,可以连续使用7小时,并且提供了金色、灰色和粉色三种版本。另外值得一提的是,这款TalkBand N1耳机还支持防汗和防尘设计。 第三款:Huawei Watch 作为华为首款智能手表,Huawei Watch秉承“回归手表本质”的设计理念,期望带给消费者最恒久、最贴心的佩带体验。不仅遵循传统高级腕表的经典外观、加工工艺及用材,同时整合智能可穿戴设备一系列领先功能,如运动监测,健康监测等,同时与智能手机搭配使用,能够收发信息、查看天气、股市及播放音乐等。消费者可根据自己的需要,随心所欲的更换40多种不同风格表盘,包括经典风格表盘、数字风格表盘以及运动风格表盘。

2015年3月2日 · 1 分钟

刘江峰将离职 华为荣耀业务部总裁由赵明接任

快过年的时候(2月17日),我还在火车上,从内部微信群里得到消息,说网上有传闻,刘江峰将要离职。还没来得及去搜索相关,又有人留言说余总已经发微博证实了这个传闻,赶紧去微博查看余总的博客,果然,和蔼可亲的江总要离开我们了,根据华为规定,离职需要提前一个月申请,完成工作交接,流程结束,才能离开,刘总将在公司呆到3月份。赵明将成为新一任荣耀掌门人。 华为公司一直追求的,个别人的离开,不会影响公司的大方向。所以任总才会选择一个团队来接班,当然刘江峰的离职不会造成荣耀部门以及华为终端的大方向和决定,但是新领导上任势必会引起内部一定结构的调整,和当前的布局。还是希望华为荣耀能健康稳定的发展,祝福刘总。

2015年2月22日 · 1 分钟