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 分钟

MWC2015,荣耀平板手机延续经典之作-荣耀X2

MWC是世界移动通信大会的英文缩写,其前身是3GSM展,由GSM Association发起并举办,于每年年初(通常为2月)举行,它是全球通信领域最具规模和影响的展会,众多从事通信产业的全球知名企业都将出席这一展会。2008年,3GSM大会正式更名为MWC大会。 MWC2014 华为发布了首款平板手机跨界之作荣耀X1,荣耀X1主打的是屏幕大,同时可以打电话,而且有3G 4G版本,后面又出了爱奇艺版本,囊括国内外电视剧,好莱坞影库,实属一个看片神器,一举打败小米平板 《你是选择小米平板还是华为荣耀X1?》 MWC2015在今年2月底开幕,华为2015年将要退出的旗舰机型,从时间安排上好像都不和本次展览吻合,根据2014年的情况,荣耀X1是2014年华为首款手机,那荣耀X2作为华为2015年首款机型,在本次展览上发布是有极大可能性的。 据媒体报道的关于荣耀X2的配置如下: CPU:麒麟925 内存3G 屏幕7寸,1080p 移动联通双4G 外观金属机身 售价依然1999 荣耀从去年7月就开始有传闻《7.22华为有新品 或为大屏荣耀X2》,并且有金属骨架曝光《CES2015国际消费类电子产品展览会上荣耀可能会发布X2?》,千呼万唤始出来,希望这次MWC2015,我们能看到荣耀平板手机延续经典之作-荣耀X2的真容。

2015年2月14日 · 1 分钟

tomcat配置gzip压缩compressionMinSize选项无效

配置tomcat的gzip压缩功能之后,配置有个compressionMinSize选项,表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩。但是有时候你会发现这个配置并不起作用,貌似只要客户端加了Accept-Encoding: gzip, deflate,响应就是压缩的,无论响应报文体有多大,这是怎么回事呢? 查看tomcat源码,关于压缩条件控制的地方:org.apache.coyote.http11.AbstractHttp11Processor类中: // Check if sufficient length to trigger the compression long contentLength = response.getContentLengthLong(); if ((contentLength == -1) || (contentLength > compressionMinSize)) { // Check for compatible MIME-TYPE if (compressableMimeTypes != null) { return (startsWithStringArray(compressableMimeTypes, response.getContentType())); } } 可以看到,tomcat判断是否压缩的的依据是根据你响应里的Content-length来的,如果没有Content-length或者Content-length大于compressionMinSize就进行压缩。如果你的报文小于compressionMinSize,却被压缩了,那就是你的响应报文中并不含有Content-length。 Content-length可以在往外写响应流之前手动设置,如果你不设置的话,在关闭响应流的时候,如果你的响应体没超过tomcat默认缓存区大小8*1024,它也会帮你设置Content-lenth,如果超过了缓存区大小,tomcat会以Transfer-Encoding: chunked的形式返回响应。 所以如果你的设置compressionMinSize的没有生效,很有可能是 你的设置的compressionMinSize超出了tomcat的缓冲区大小,响应默认是chunked的形式返回的,这种情况是肯定压缩的。这种情况,还是有部分响应<8k的响应是不压缩的。 如果你的响应无论什么大小都被压缩了,那很有可能就是你在代码中使用了OutputStream.flush(),或者PrintWriter.flush()。使用flush()的意思是响应开始往外写了,Content-length已经来不及写了,tomcat会默认使用Transfer-Encoding: chunked形式帮你返回消息,响应肯定是要被压缩的。

2015年2月9日 · 1 分钟

Jline实现java输入自动补全

java的控制台输入是很局限的,我们仅仅可得到它的输入,对于输入的过程是很难操控的,所以当我们想写一个人性化的输入体验的时候,是比较难实现的。还好java中有种jni的技术,它允许Java代码和其他语言写的代码进行交互。 Jline就是一个使用了C/C++实现的java类库,它可以让你更方便的处理控制台输入。 引入Jline,使用下面的maven配置 <dependency> <groupId>jline</groupId> <artifactId>jline</artifactId> <version>2.9</version> </dependency> 我们平常处理输入一般是这样的: BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; do { line = br.readLine(); if(line != null) { //todo } } while(line!=null && !line.equals("exist")) 在使用了Jline之后,一样的书写形式: ConsoleReader reader = new ConsoleReader(); String line = null; do { line = reader.readLine("input>"); if(line != null) { //TODO } } while(line!=null && !line.equals("exist")) 你便拥有了一个比较友好的输入体验了。它可以实现光标的移动,通过上下方向键切换历史命令等操作。 如果你希望有更强大的自动补全功能。你可以给ConsoleReader 设一个jline.console.completer.Completer接口实现类 public interface Completer int complete(String buffer, int cursor, List candidates); } 其中buffer是当前用户输入的内容,cursor表示光标的位置,candidates表示你想补全的候选项。返回值很重要,表示你要再哪个位置补全你的内容 假设用户的输入是ls my xxxxxx 目前用户的光标在my后面,你想帮用户补全为myfoler或者myfile。你要这么写: ...

2015年2月7日 · 1 分钟