cassandra日常维护之nodetool repair

前提 cassandra的根据分区key的操作是很快的,这也是它的优势,但是它的多条件查询是很弱的,特别是如果你有删除操作的话,就更坑爹了。cassandra的删除操作,实际上并不是真的删除,它是执行的插入操作,插入的数据叫做tombstone(墓碑),记录了被删除记录的信息和删除时间。当你根据条件查询的时候,如果它会把满足条件的记录查询出来,包括tombstone。然后过滤掉删除的记录,再把结果返回给你。 现象 如果你的表mykeyspace.t_table有3个副本,主键是(a,b,c) 。你插入4000条数据(a=1),然后再删除掉3999条,你再根据a=1去查询,你会在cassandra的日志中发现一条警告日志. WARN [ReadStage:18926] 2015-02-05 07:18:02,869 SliceQueryFilter.java Read 1 live and 11997 tombstoned cells in mykeyspace.t_table (see tombstone_warn_threshold).... 这个警告信息是根据你的cassandra.yaml里配置的tombstone_warn_threshold决定的。也就是说它搜索了11997=3999*3条数据,才搜到一个1个live。这就是墓碑的危害。当你删除的数据更多的时候。到达配置项tombstone_failure_threshold的值,这次查询就失败了。你会看到下面的ERROR日志。 ERROR [ReadStage:219774] 2015-02-04 00:31:55,713 SliceQueryFilter.java (line 200) Scanned over 100000 tombstones in mykeyspace.t_table; query aborted (see tombstone_fail_threshold) ERROR [ReadStage:219774] 2015-02-04 00:31:55,713 CassandraDaemon.java (line 199) Exception in thread Thread[ReadStage:219774,5,main] java.lang.RuntimeException: org.apache.cassandra.db.filter.TombstoneOverwhelmingException at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1916) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.cassandra.db.filter.TombstoneOverwhelmingException at org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:202) 真实的数据实实在在的被删除,发生在两个时期: 第一个时期是新的SSTable文件生成的时候。而且它只删除gc_grace_seconds之前插入的tombstone。 gc_grace_seconds是表结构的一个额外参数,可以通过alter table进行修改。所以说如果你的某个节点挂了,挂的时间超过gc_grace_seconds。可能导致删除的数据又出现了。 第二个时期就来自日常的Nodetool repair操作。每个gc_grace_seconds周期内至少repair一遍。 解决 普通repair nodetool repair基本语法是这样的: nodetool -h host repair [keyspace] [cfnames] 它会修复keyspace.cfnames这个表分区主键token值落在这个节点上的数据(包括master和slave数据)。等你把所有的节点repair一遍, 如果你有三个副本,你相当于repair了三遍数据,所以这个时间会很长。 ...

2015年2月6日 · 2 分钟

HTTP中的GZIP压缩实现

HTTP协议中关于压缩传输的规定 第一:客户端传输到服务器请求中带有:Accept-Encoding:gzip, deflate 字段,向服务器表示,客户端支持的压缩格式(gzip或者deflate),如果不发送改消息头,服务器是不会压缩的。 第二:服务端在收到请求之后,如果发现请求头中含有Accept-Encoding字段,并且支持该类型的压缩,就对响应报文压缩之后返回给客户端,并且携带Content-Encoding:gzip消息头,表示响应报文是根据该格式压缩过的。 第三:客户端接收到请求之后,先判断是否有Content-Encoding消息头,如果有,按该格式解压报文。否则按正常报文处理。 服务端实现报文压缩 一般http容器都有配置实现压缩的,不需要代码实现 [nginx实现压缩,在nginx.conf中配置] #开启缓存 gzip on; #启动压缩的最小报文大小 gzip_min_length 1k; #压缩所使用的缓存 gzip_buffers 4 16k; #压缩等级1表示最快,9表示最好 gzip_comp_level 2; #压缩支持的content-Type类型 gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss; [apache实现压缩,在httpd.conf中配置] #启动deflate模块 LoadModule deflate_module modules/mod_deflate.so #配置压缩等级和压缩类型 DeflateCompressionLevel 6 AddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript [tomcat配置压缩] 参考《Tomcat配置gzip提高js文件下载速度》 客户端实现报文解压缩 [浏览器] 浏览器在访问一个网站的时候,默认都是带着Accept-Encoding:gzip, deflate头信息的,当收到响应的时候,如果是压缩的格式,也会自然解压。这一般不需要我们关系的。 [JAVA代码实现] java中访问一个url,一般使用apache的HttpClient,加上它的连接池管理,参考《JAVA的那些池子》 获得一个HttpClient实现类对象: HttpClient httpClient = new DefaultHttpClient(connectionManager, params); 使用它去发送http请求。这个httpclient发出去的http请求是默认不带Accept-Encoding:gzip, deflate头信息的。自然返回的响应也不会是压缩的。如果你希望实现接收压缩,进行解压缩的功能,你可以使用org.apache.http.impl.client.DecompressingHttpClient,它只是对Httpclient进行了一个包装。构造方法如下 HttpClient httpClient = new DefaultHttpClient(connectionManager, params); httpClient = new DecompressingHttpClient(httpClient); 后面就和之前发http请求,一样使用这个httpClient了,对压缩解压缩的功能,对你写代码而言是完全透明的。

2015年2月3日 · 1 分钟

[新闻]华为2015年所有旗舰机型曝光

华为2015年新旗舰机型Mate8,一直是大家热议的对象,多次曝光谍照,配置,发布时间,定价等等。 没想到有的媒体竟然拿到了华为2015年所有旗舰机型的配置和发布时间表,不知真假: 根据这次贴吧曝光的华为2015年新机终端表格显示,荣耀品牌将会有四款新机主攻中低端市场,而华为品牌则是三款机型抢占中高端市场。 消费者最关心的机型应该是荣耀旗舰-荣耀7,以及高端商务旗舰-Mate8。 从图上看这次荣耀7相较荣耀6,在基础配置上包括CPU\内存\屏幕方法没有多大改进。通过荣耀6和Mate8上的成功,华为此次应该在外观、照相、续航等方面在荣耀7上进行提升。 例如金属机身设计,双摄像头不知是否会继续保留,使用新的麒麟930芯片,应该在功耗上会有进一步提升,当然这只是目前可以预见的,产品出来的时候肯定还会有别的亮点。否则一部新旗舰的所有特点在未发布前几个月就曝光了,实在是不应该的。 华为的三7四G战略,Mate7 和 P7都是很成功的,唯独G7不温不火,虽然G7的外观设计和Mate8类似,但是配置就低了,屏幕720p,没有指望识别,只有背部和边框是金属的,售价和荣耀6、6Plus是一样的,属于中端机型,消费者在这个价位有更多的选择,G7自然不是那么成功。这次华为改为演进自己的D系列,之前只出过两款D1、D2,都主张高性能,主打高端。这次直接跃升到D8,自然有质的飞跃,就目前这张表上看,性能就已经很强劲了,2K屏,麒麟950,4G内存 金属机身,蓝宝石屏幕,哇塞~ 让我们期待华为2015年一波又一波的新品发布会吧。

2015年1月28日 · 1 分钟

从2K屏话题看两个企业的不同追求

这两天余总和小米关于2K屏幕的微博论战中,我们可以感受到华为和小米他们更看重的是什么,它们追求的是什么。 余总的微博: 余总的微博很浅显易懂,客观的描述。就是说在小尺寸屏幕下,2k屏幕相比于1080p,并不能带来多大的体验提升。也有微博用户@酷玩强哥 从理论角度分析了,在6寸以下屏幕上人眼是很难分辨出1080P和2k屏幕之间的差别的。 相反高分辨率肯定会带来更多的电能损耗,而且小米Note的电池只有3000mA,肯定造成续航方面的牺牲。 再看小米方面的的回复: 不是一味的嘲讽,就是混淆概念,转移话题,小米Note在5.7寸屏幕上就使用2K分辨率的屏幕,而且电池没有提升,余总说的就是这个2k屏幕带来的续航问题,小米方面没有直接从正面回答这个问题,一味的强调2K是顶配,或者说人家夏普的屏幕多么多么好。小米各个微博帐号同时发力,狂轰乱炸,试图掩盖这个事实。我们不再次佩服小米方面的营销能力。 从两家企业这次骂战可以看到两家企业的不同追求和核心价值观: 华为讲究的是技术创新,不断的通过技术创新,改进手机性能,质量,用户体验,发热,续航。这也是华为一直强调的核心价值观:“以客户为中心,以奋斗者为本” 而小米考虑的又是什么呢?怎么样把最顶配的器件捏合在一起,让它赚足眼球,在器件量产之前提升人气,在量产之后,价格下降再出货。小米没有任何一代手机的设计工艺是从上一代产品中继承来的。雷军的小米发布会更多的是介绍里面的元器件有什么什么优点,频率多么高,性能多么好,那里面到底有多少小米自己的科技成分呢? 一个科技企业的核心竞争力是不断的技术创新和质量追求。从而获取丰厚的利润回报,然后再投入不断的技术创新,从而进入良性循环。一个企业没有自己的核心竞争力,它是走不远的。不可否认小米把世界上最顶级的配置捏合在一起,让更多的用户用到了更好的屏幕,更快的CPU,更大的内存的手机。但是这些都是可以模范的,例如锤子手机,一加手机,什么大可乐手机,它们都可以开发出一套基于安卓的ROM, 拿到最顶配的器件组装成一部手机。相反它们无法生产出自己的CPU,无法达到最佳的省电技术,很好的控制手机温度稳定不发烫,保证稳定强劲的信号。而这些只有华为这样的企业可以。 我支持余总,支持华为,支持荣耀。

2015年1月25日 · 1 分钟

防止垃圾评论的有效方法还是验证码

本博客在上线之初,就受垃圾评论的骚扰,有一种wordpress评论机器人,每天都自动寻找wordpress站点,进行自动评论,每天都收到大量这样的垃圾评论: 我不想关闭评论功能,或者是只允许注册之后评论,因为我自己的博客,没必要,我也不想开放注册功能的。我一开始的解决方法是屏蔽这些IP,见文章:《如何屏蔽恶意访问IP》 可是屏蔽了一部分IP,过几天又有新的ip出现。目前已经屏蔽了数个IP段: 199.30.24.* 199.30.25.* 112.111.189.* 112.111.191.* 112.111.184.* 但是老是这样屏蔽也不是办法,有可能把正常用户的ip给屏蔽了。今天才想到了这个问题,在防止垃圾评论上,屏蔽IP太不专业了,垃圾评论是机器人所为,而在计算机的世界里,验证码才是自动区分计算机和人类行为的专业行为。 好了,搜索CAPTCHA,安装一个验证码wordpress插件,设置一下,ok了,再也不用担心垃圾评论的问题了。

2015年1月21日 · 1 分钟

cassandra新版驱动,使用SchemaBuilder进行表的操作

在cassanda的官方驱动cassandra-driver-core-2.1.3.jar之前,创建表、修改表、创建索引操作,只能通过拼CQL语句,然后通过session去执行的方式。可能会经常导致语法格式错误。 在最新版的驱动cassandra-driver-core-2.1.3.jar中,提供了一种更方便的对表的修改方式。类似于用于增删改查操作的com.datastax.driver.core.querybuilder.QueryBuilder类,它提供了一个com.datastax.driver.core.schemabuilder.SchemaBuilder类用于对表的操作。 这个类可以构建几乎所有关于对表的操作,这里举例常用的操作: 先引入jar包: <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>2.1.3</version> </dependency> 然后你就可以像写cql语句一样,流畅的使用SchemaBuilder了。其中省略了session的生成,可以参考《java实现cassandra的增删改查》 //创建表 Create createTbale = SchemaBuilder.createTable("mykeyspace", "mytable") .addPartitionKey("pk1", DataType.cint()) .addColumn("col1", DataType.text()) .addColumn("col2", DataType.bigint()); session.execute(createTbale); //增加一列 SchemaStatement addColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .addColumn("col3") .type(DataType.cdouble()); session.execute(addColumn); //删除一列 SchemaStatement dropColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .dropColumn("col2"); session.execute(dropColumn); //修改一列 SchemaStatement alterColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .alterColumn("col1") .type(DataType.cdouble()); session.execute(alterColumn); //列更改名字 SchemaStatement renameColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .renameColumn("col1") .to("col4"); session.execute(alterColumn); //增肌索引 SchemaStatement createIndex = SchemaBuilder.createIndex("idx_col4") .onTable("mykeyspace", "mytable") .andColumn("col4"); session.execute(createIndex); //删除索引 Drop dropIndex = SchemaBuilder.dropIndex("mykeyspace", "idx_col4") .ifExists(); session.execute(dropIndex); //删除表 Drop dropTable = SchemaBuilder.dropTable("mykeyspace", "mytable") .ifExists(); session.execute(dropTable);

2015年1月15日 · 1 分钟

媳妇熬成婆,本网站在百度也有了站点信息

今日早上习惯性的在百度site了一下自己的网站,惊喜的发现本站在百度也有站点信息了,截图如下: 不仅仅如此,另外一个小站也有了站点信息: 众所周知,百度推出site显示一个站点的备案等信息的功能,也就几个月时间,应该是为了识别出稳定可靠,有价值,健康的网站,以便把那些临时的,违法的网站剔除掉。在之初只有大型的门户网站以及一些出名的网站才会显示站点信息,慢慢扩大范围,据猜测,只有建站年限、收录量、访问量等一些参数满足了百度的相关条件才会被收录。 本站建站有一年有余,虽然不是每天都有更新,但也是持续到现在,本站百度收录量从只收录首先到现在三四百页,访问量从个位数的PV发展到每天近200PV,我想这是让百度信任的首要条件,其次就是本站从建站初期就使用百度统计、后来加入了百度联盟广告,这也是贴近百度的一种方式,我的第二个站也被百度显示了站点信息,但是访问量并不大,想想可能就是用了百度统计,百度联盟广告的原因,或者是沾了第一个网站的光了。 写博客是我的个人爱好,也是为了分享,博客被更多的人看到,总是高兴的,谢谢大家浏览我的博客,也希望其中的内容能对你所帮助。

2015年1月10日 · 1 分钟

比较容易理解的bash多线程实现方式

一直在找一个bash实现的多线程,虽然这个方法看着不怎么高明,但是比那个fifo的写法,看着明白点。这里面也限制了最多线程数,类似于线程池,记录在此,以备后用。 #!/bin/bash MAX_THREAD_NUM=10; thread_pids=() #执行线程 function hello_thread(){ echo "print $1" sleep 5; } #检查是否有完成的线程,把pid剔除调 function check_current_thread(){ if [ ${#thread_pids[@]} -ne 0 ]; then for pid_idx in ${!thread_pids[*]}; do pid_val=${thread_pids[$pid_idx]} kill -s 0 $pid_val &>/dev/null || unset thread_pids[$pid_idx] done thread_pids=("${thread_pids[@]}") fi; } for i in {1..100}; do #如果当前执行的线程数少于10个,就加一个任务 if [ ${#thread_pids[@]} -lt $MAX_THREAD_NUM ]; then hello_thread $i & thread_pids=("${thread_pids[@]}" "$!"); else sleep 1; check_current_thread; fi done #等待最后的任务结束 while [ ${#thread_pids[@]} -ne 0 ]; do check_current_thread; sleep 1; done;

2015年1月8日 · 1 分钟

[新闻/转载]阻击小米,华为荣耀399元低端机曝光

昨日小米发布红米2,相当于小米2的造型再翻出来,加上个4G的噱头,1G的内存,着实没啥亮点。 售价699,在这个价格附近,在荣耀里面可以随便挑出几款手机与之对阵。 小米是低端路线走到底了,据悉后面要发布一款399元的机器。 为了阻击小米,华为荣耀积极应战,华为荣耀品牌走的就是中低端路线。 工信部上显示了一款编号20141110的华为手机,如果不出意外它就是那款应对小米399元的新机型。 传闻也是399元(也可能是398元哟) 从照片上看,这款机型属于荣耀系列,前黑后白,四周圆润。 据传闻这款机型: 支持TD-LTE/TD-SCDMA/GSM网络,支持双卡双待,内存为1GB,分辨率为1280*720,预计售价399元。另外前后置摄像头估计为500万和200万。 如果这款手机发布,估计是市面上价格最便宜的4G手机了吧。

2015年1月5日 · 1 分钟

cassandra 2.1.2版本的一个bug

最近从cassandra 2.0.8升级到2.1.2,在考察2.1.2的时候,发现了一个2.1.2版的一个bug,一直怀疑是java驱动的原因,后来发现只要满足特定条件,就可以重现,用cqlsh客户端也可以。 bug重现步骤: 首先创建keyspace space1和space2. 在space1里创建一个表table3 在space2里创建两个表table1,table2 在table3里插入一条记录 删除表table1 删除table3插入的那条记录 删除表table2 再根据主键,在tbale3里查询,会发现之前那条记录并未删除。 CREATE KEYSPACE space1 WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3}; CREATE TABLE space1.table3(a int, b int, c text,primary key(a,b)); CREATE KEYSPACE space2 WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3}; CREATE TABLE space2.table1(a int, b int, c int, primary key(a,b)); CREATE TABLE space2.table2(a int, b int, c int, primary key(a,b)); INSERT INTO space1.table3(a,b,c) VALUES(1,1,'1'); drop table space2.table1; DELETE FROM space1.table3 where a=1 and b=1; drop table space2.table2; select * from space1.table3 where a=1 and b=1; you will find that the row (a=1 and b=1) in space1.table3 is not deleted ...

2015年1月4日 · 1 分钟

slf4j、logback的使用

使用slf4j配合log4j打日志已经使用很长时间了,已经习惯了log4j的properties文件配置了。 具体参考:《slf4j、log4j 的使用》 虽然从log4j换到logback也不费劲,性能上提升在常规业务上也不是多么明显,但是作为处女座的我,还是想从log4j换到logback来。logback log4j 和slf4j都是同一作者。根据作者宣称的: slf4j的出现是为了替代commons-logging logback的出现是为了替代log4j,用作者的话,叫:“picking up where log4j leaves off" logback比log4j会有更高的性能,和更多的功能支持。 如果你之前是使用slf4j+log4j的组合打日志的话,你只要换个jar包和配置文件就可以了。 之前需要的jar包是: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> 现在需要的jar包是: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.2</version> </dependency> logback-classic的pom会自动引入logback-core包 一般都是sl4j和log4j一起使用的,很少有人直接用log4j的logger打日志。如果你已经那样做了,也不必要修改代码。 只要引入log4j-over-slf4j的桥接包,删掉log4j包,以前log4j打印的日志,会自动桥接到slf4j进而使用logback的logger打印日志。 <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> <version>1.7.7</version> </dependency> 配置文件使用XML格式配置:logback.xml 基本的示例: <!--60秒检查一次配置文件是否有修改,即时生效--> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <property name="ROOT_LOG_PATH" value="/disk/log" /> <!--设置变量--> <appender name="STDOUT"> <!-- 打印到控制台的appender --> <encoder> <pattern>%d{HH:mm:ss.SSS}%-5level %logger{36}-%msg%n</pattern> </encoder> </appender> <appender name="FILE"> <!--打印到文件,20M滚一个,最多20个--> <file>test.log</file> <rollingPolicy> <fileNamePattern>${ROOT_LOG_PATH}/my.log.%i</fileNamePattern> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy> <maxFileSize>20MB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS}%-5level %logger{36}-%msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <!--根日志--> <appender-ref ref="FILE" /> </root> <!--设置包com.zhaoyanblog的日志级别, 设置是否也打印一份到它的父logger(这里是root)设置的appender里--> <logger name="com.zhaoyanblog" level="INFO" additivity="false"> <appender-ref ref="STDOUT"/> </logger> <!--设置包com.zhaoyanblog.test的日志级别--> <logger name="com.zhaoyanblog.test" level="ERROR" /> </configuration> 以上是对logback的简单配置,平常足够使用了,如果你已经习惯了log4j的properties形式的配置文件,想使用更高效的logback,又不想去学习logback的配置形式。logback为你这种懒人提供了一个log4j.properties在线自动转logback.xml的页面: http://logback.qos.ch/translator/

2015年1月3日 · 1 分钟

CES2015国际消费类电子产品展览会上荣耀可能会发布X2?

最近有媒体称,华为内部传出消息,将在CES2015国际消费类电子产品展览会发布X系列新机型X2 并透露了详细的主体参数: 分辨率 1920×1200 7英寸 麒麟925超八核处理器 3GB内存,5000mAh电池 甚至售价都给出了1999元 一切源于一个叫@包子玩机 的微博用户的爆料,他甚至给出了荣耀X2的金属骨架图: 荣耀X1是华为在巴塞罗那举办的2014 MWC大会上发布的一款7寸平板手机跨界大作,荣耀X1将面向全球市场。发布时间是去年2月,从发布时间,发布形式,面向的市场看,以及爆出的手机外形尺寸上看,这款即将在CES2015上展示的手机很有可能是荣耀X1的后续之作-荣耀X2. 荣耀X系列,属于大屏平板手机,适合喜欢看电影的用户使用,如果你喜欢用手机看电影,这款手机你应该有所期待了。。。

2014年12月31日 · 1 分钟

荣耀6 Plus值得买的三大理由

12月16日晚,华为荣耀终于发布了2014年最最旗舰机型-荣耀6 Plus。那么荣耀6 Plus有那些优势值得你去购买呢。本站长总结如下: 1、基本配置顶配 CPU 麒麟925 8核 华为最快的CPU 内存3G 5.5寸大屏,1080P 3600mA电池 2、珠圆玉润的外表 荣耀6的边框是塑料模拟金属,一直被用户诟病,这次荣耀6 Plus进行了一次完美升级。绝对金属边框,完美的弧度,不留遗憾,再加上78%的屏占比,美丽的翎羽后盖。这次荣耀6 Plus还是挺让人无可挑剔的。特别是白色,我觉得用珠圆玉润这个词形容荣耀6 Plus再合适不过了 3、双眼看世界 前置800万像素相机,完美自拍。后置一双800万像素的摄像头,拍照功能惊人,不但能达到1300像素的效果,而且可以在F0.95-16之间调节光圈值。此外双摄像头还完美解决了1300万像素摄像头突出的问题。 华为是一家科技创新性公司,这次荣耀6 Plus,包含了众多科技创新,例如后盖的材料,功耗的控制,发热的控制等等诸多细节。以上三点仅仅是用户最普遍感知的方面。当你真的入手荣耀6 Plus,你会发现荣耀6真的物超所值。

2014年12月17日 · 1 分钟

随荣耀6 Plus一起发布的还有一款荣耀电力猫

随荣耀6 Plus发布的已经证实有多款产品,除了荣耀盒子,还有一款荣耀电力猫 电力猫可以把电线当做信号传输线,可以解决wifi信号隔着几堵墙无法到达的问题。 从海报上看,荣耀电力猫小巧好用,并且有“黑”山妖、“蓝”精灵、“绿”毛怪、“白”胡子四种颜色可选。如果你家里有多个房子,而又不想扯更多的网线,这款产品绝对用得上。荣耀电力猫也将在12月16日荣耀发布会和大家见面。拭目以待哟~

2014年12月15日 · 1 分钟

伴随荣耀6 Plus,荣耀盒子将一同发布

荣耀新旗舰荣耀6 Plus,即将于12月16日发布,手机业界一向很少一场发布会只发布一款产品,这样隆重的年度发布会,肯定还会有其它新品一同发布,据悉荣耀盒子就是其中之一。 这一消息已经在@华为秘盒MediaQ 官方微博得到证实,并且于12月6号推出了“你吐槽我买单,这样的电视机顶盒不能忍” 赠送荣耀盒子的盖楼活动。 据媒体报道,这次华为推出的荣耀盒子,是与已经与广电授权牌照商—银河互联网电视有限公司合作,能够提供持续稳定的正版内容服务,荣耀盒子将使用华为自己的海思芯片,支持4K视频。这款4K盒子还将支持H.265视频编码标准。相比目前主流的H.264编码,H.265可以在同等画质下将视频体积大大压缩,更便于存储和流媒体播放,这也应该是这款盒子的核心卖点之一。

2014年12月14日 · 1 分钟