[新闻]P7昨晚发布,再现华为精致做工

5月7日下午,华为在世界时尚之都法国巴黎召开发布会,正式发布了旗下年度旗舰机型华为P7,华为P7在继承了时尚外观设计的同时,也在硬件配置上进行了全方面的升级。 1、外观: 超薄的6.5mm机身,双面康宁玻璃,具有非常靓丽的镜面效果,机身中框采用金属材质,整体质感非常出色 2、屏幕 5英寸1080p全高清屏幕,ppi高达445。 3、CPU 内存 1.8GHz海思Kirin 910T四核处理器,内建2GB RAM和16GB ROM 4、相机 800万+1300万像素组合,其中主镜头为索尼最新堆栈式镜头,有着F2.0超大光圈 5、制式 广泛支持LTE 4G标准 华为P7 卓尔不群,最后让你欣赏一段展现华为完美做工的视频,超赞~

2014年5月8日 · 1 分钟

Spring使用占位符可配加密字符串

一个项目肯定会多少有些配置项,例如jdbc的一些配置,Spring的占位符,简化了对配置文件的读取,用起来极其方便。 1、假设你的配置项如下: jdbc.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF8 jdbc.username=user jdbc.password=password jdbc.validationQuery=select 1 jdbc.maxActive=20 jdbc.initialSize=1 jdbc.minIdle=1 jdbc.maxWait=60000 jdbc.timeBetweenEvictionRunsMillis=3000 jdbc.minEvictableIdleTimeMillis=300000 jdbc.testWhileIdle=true jdbc.testOnReturn=false jdbc.testOnBorrow=false jdbc.defaultAutoCommit=true 写在配置文件config.properties中 2、你只要在Spring配置文件中配上如下bean <bean id="propertyConfigurer"> <property name="location" value="classpath:config.properties"/> </bean> 3、就可以在spring中自由注入你的配置项了 <bean abstract="true"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxActive" value="${jdbc.maxActive}" /> <property name="initialSize" value="${jdbc.initialSize}" /> <property name="maxWait" value="${jdbc.maxWait}" /> <property name="minIdle" value="${jdbc.minIdle}" /> <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /> <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /> <property name="validationQuery" value="${jdbc.validationQuery}" /> <property name="testWhileIdle" value="${jdbc.testWhileIdle}" /> <property name="testOnBorrow" value="${jdbc.testOnBorrow}" /> <property name="testOnReturn" value="${jdbc.testOnReturn}" /> <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}"/> </bean> 4、如果你有些配置项是要加密的,在使用的时候需要解密。 这时你可以继承PropertyPlaceholderConfigurer,重写它的convertPropertyValue或者convertProperty方法进行解密 @Override protected String convertPropertyValue(String originalValue) { return 解密(originalValue); } @Override protected String convertProperty(String propertyName, String propertyValue) { return 解密(originalValue); } 然后把id=“propertyConfigurer"的class换成你自己的class。 这样就可以在配置文件中按你的格式配置密文了。

2014年5月8日 · 1 分钟

[新闻]2014年5月15日 '耀'你好看

重磅来袭,5月15日 华为荣耀将带给你一个好消息,具体什么好消息呢,515再告诉你。 这里总结一下网上的一些猜测: 猜测一、荣耀3X升级版 华为荣耀3X可谓是一款性价比不错的手机,不过在上个月华为推出了荣耀3X畅玩版之后,1698元的荣耀3X抢购的热度明显下降了。而究其原因,自然是荣耀3X与荣耀3X畅玩版的配置拉不开差距,但是售价差距过大。华为为了解决此问题,或许将推出一款升级版的荣耀3X。有人猜测荣耀3X升级版,屏幕分辨率将由720P升级到1080P,存储空间也有8G升级为16G,采用皮质后盖 猜测二、荣耀3C 4G版 荣耀3c 上市已经有一段时间了,荣耀3C是华为进入低端市场的排头兵,一站成名,但是随着相似配置的同类产品涌现,荣耀3C也需要升级一下了,随着4G来袭,有网友猜测,5月15日,荣耀3C可能会坐上4G快车。 猜测三、智能手环TalkBand B1正式推出 TalkBand B1在二月份发布,一直受到广泛关注,这款穿戴产品,该手环采用1.4英寸英寸屏幕,具备NFC、防水等功能,内置有多种传感器,可以计步、监测睡眠等,同时配备的小屏幕还能显示来电、久坐提醒等功能,,很有可能本次发布会,华为荣耀将正式发布TalkBand B1。备注:目前华为商城正在预约荣耀手环Halo的公测。 尚不明确TalkBand B1是否就是荣耀Halo 还是两款不同的产品。 相信华为品质,荣耀总给你惊喜,美好的事情又要发生了,敬请期待……

2014年5月6日 · 1 分钟

SEO我做了哪些优化(续)

7、百度URL主动提交 百度是收录是一个漫长的过程,即便它把你的网站所有内容都编入的索引,你也搜不到你的文章。除了 sitemap 之外,登陆百度站长工具还有“URL提交”的工具,你可以主动提交你认为是你原创的文章。百度如果判断认为你的文章符合收录条件,一般一两天就出现在site:zhaoyanblog.com搜索结果里了。 8、关键字优化 你的网站,你的网站要有一个主题比较集中的方向,然后首页固定几个关键字。 其次你的文章中也要有独自的关键字,当然你的文章核心要围绕你的首页的几个关键字。 假设你很多文章是围绕关键字‘荣耀3c’的内容,并且被百度收录了,那么当用户搜‘荣耀3c’的时候,搜到你的文章的几率就会大一点,再假设用户搜到‘荣 耀3c’,点击你的文章的次数多一点,你的排名就会靠前。假设排到100名以内,那么你的百度权重就来了,百度权重就是这么定义的,关键字搜索的排名。注 意关键字要是有百度指数的关键字才行。 最近发现文章的名字也很重要,百度真的特别喜欢‘十大原因’、‘八大方法’、‘三个技巧’之类的文章。 百度指数:http://index.baidu.com/ 9、有质量的反链 不要在一些垃圾网站上发一些你的网站的链接,你可以在csdn,博客中国等知名博客上开一个博客网站,每次你有新的文章的时候都在这些网站上发表一篇博客,然后引用部分文章内容,然后贴上你那篇文章的url,一般这些知名网站的收录是比较快的,会对你的文章的收录有一点好处的。 10、尽量少的外链 尽量少的外部链接,这个对网站的收录是没有任何好处的,而且如果外部链接很垃圾的话,甚者会影响网站的收录,特别是一些访问很慢的网站,广告等,也会拖慢你网站的访问效率。如果你的网站访问很慢,甚者无反应的,google是很敏感的,你在google注册的网站站长工具会很快收到一条警告。

2014年5月5日 · 1 分钟

elasticsearch的java搜索语法

elasticsearch作为开源的搜索引擎,支持复杂的搜索,本文示例用java客户端实现的搜索。 1、maven引入依赖jar包 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>1.1.0</version> </dependency> 2、产生client Settings settings = ImmutableSettings.settingsBuilder() .put("client.transport.sniff", true) .build(); TransportClient client = new TransportClient(settings); 3、使用query查询 SearchResponse actionGet = client.prepareSearch("indexName") .setTypes("typeName") .setQuery( QueryBuilders.boolQuery().must(QueryBuilders.termQuery("attr1", "value1")) ).execute().actionGet(); SearchHits hits = actionGet.getHits(); List<Map<String, Object>> matchRsult = new LinkedList<Map<String, Object>>(); for (SearchHit hit : hits.getHits()) { matchRsult.add(hit.getSource()); } 查询条件有好多种形式,都可以通过QueryBuilders来构建组合: QueryBuilders.inQuery("attr1", new String[{"value1","value2","value3"}); QueryBuilders.rangeQuery("attr1").gt("value1")//gt lt eq gte lte; 查询的形式和意思都可以根据方法名猜测的出来。 4、使用filter查询 filter和query的使用方式类似,它是使用FilterBuilders来构建查询条件。 不过比query多了or、and关系查询 FilterBuilders.orFilter(FilterBuilders.termFilter("attr1", "value1"),FilterBuilders.termFilter("attr2", "value2")); FilterBuilders.andFilter(FilterBuilders.termFilter("attr1", "value1"),FilterBuilders.termFilter("attr2", "value2")); 是通过 .setPostFilter(filter) 指定给search; 5、分页查询 一种方式是指定from/size ...

2014年5月4日 · 1 分钟

JAVA泛型之我见

java在1.5之前是没有泛型的,是后来加的,加了之后用起来感觉和C++的泛型差不多,但是原理是不一样的,C++的泛型是有宏演变而来的,虽然对泛型的处理不包含在预编译阶段 ,但是对泛型的处理也是简单的替换操作,也就是说泛型就相当于一个模版,在编译过后,编译器会帮你生成一个个具体的类。 java不同,java的模版类就是一个类,里面的参数T 不过是它的一个成员变量而已,只不过在构造示例的时候,以模版类型的方式传递。举个例子说: class Template<T>{} 它就是一个类,Template<String>(); 就是一个实例,String只不过是构造方法(可以这样理解)的一个参数而已,java编译器不会帮你生成一个新的类。 java的泛型在设计之初就是因为Object当作“任意”类型的时候,编译阶段无法进行类型检查,而引入了一个T参数,让你在构造对象的时候,强制你指定类型,它就可以做一些类 型检查了,你也可以进行对一个“任意”类型的功能实现,达到代码重用的目的。 对于Template<T> 这样的类型的实现子类,例如: class MyTemplate1 extend Template<String>{} class MyTemplate2 extend Template<Integer>{} 对于MyTemplate1和MyTemplate2的父类都是Template.class 但是又有所不同,上文说过Template本身就是一个类型,不是一个类的模版。所以为了描述MyTemplate1和MyTemplate2 的父类型的不同。 jdk又引入了一个ParameterizedType类型,它和Class 一样继承于Type类型。 它包含了一个泛型实例( Template<Integer>())的类型信息。 如果你想得到一个这样的类型,你只有通过泛型类型的子类得到,也就是说MyTemplate1的父类型才是这样的类型。 你通过Template<Integer> instance = new Template<Integer>()是得不到的这样的类型的。 你只有通过MyTemplate2的才可以得到: ParameterizedType type = (ParameterizedType)MyTemplate2.class.getGenericSuperclass(); 或者是通过一个匿名类 ParameterizedType type = new Template<Integer>(){}.getClass().getGenericSuperclass(); 可以通过ParameterizedType 的getActualTypeArguments()方法 拿到里面的Integer类型。 所以你在用各种json工具的时候,你会发现他们当把Json转成一个对象的时候,它都要求你传入一个Type类型,而不是一个Class类型 因为一个Class类型是无法描述Map<String,String>()这种类型全部信息的,那些json工具是无法通过一个Map.class帮你把把字符串转成一个具体的map的。 而且Map<String,String>()也不是一个类, 这时你可以传入一个ParameterizedType类型。 这样你就可以理解为什么像fastjson那样会提供下面这样一个类了: public class TypeReference<T> { private final Type type; protected TypeReference(){ Type superClass = getClass().getGenericSuperclass(); type = ((ParameterizedType) superClass).getActualTypeArguments()[0]; } public Type getType() { return type; } public final static Type LIST_STRING = new TypeReference<List<String>>() {}.getType(); } 解释一下 new TypeReference<List<String>>() {} 是TypeReference<List<String>>的一个匿名子类。 它的getGenericSuperclass() 就是TypeReference<List<String>> 这种类型(ParameterizedType)。 它的参数也就是List<String> 也是一个ParameterizedType类型。

2014年4月30日 · 1 分钟

[新闻]华为荣耀发布新品荣耀手环Halo

4月23日 华为举行发布会,除了如大家所想的荣耀X1 4G版外,华为发布了一款荣耀家族新成员–荣耀手环Halo 荣耀手环Halo支持手机App、运动记录、睡眠监测、蓝牙耳机、云端同步,号称真正炫酷好玩又健康的玩具。 荣耀手环在华为商城vmall官网已经开启预约,预约时间是:4月29日11:00-5月6日18:00 下面提前一睹它的芳容,心动的就去预约吧:http://mm.vmall.com/halo.html

2014年4月29日 · 1 分钟

荣耀家族制式说明

荣耀3c 1G移动版 支持移动3G TD-CDMA 移动联通2G GSM 1G电信版 支持电信3G CDMA2000 电信2G CMDA 移动联通2G GSM 2G移动版 支持移动3G TD-CDMA 移动联通2G GSM 2G联通版 支持联通3G WCDMA 移动联通2G GSM 1G移动4G版 支持移动4G TDD-LTE 移动3G TD-CDMA 移动联通2G GSM 2G移动4G版 支持移动4G TDD-LTE 移动3G TD-CDMA 移动联通2G GSM 1G联通4G版 支持移动4G TDD-LTE 联通3G WCDMA 移动联通2G GSM 2G联通4G版 支持移动4G TDD-LTE 联通3G WCDMA 移动联通2G GSM 荣耀3c畅玩版 1G移动版 支持移动3G TD-CDMA 移动联通2G GSM 1G联通版 支持联通3G WCDMA 移动联通2G GSM 荣耀3x、荣耀3x Pro 支持移动3G TD-CDMA 联通3G WCDMA 移动联通2G GSM ...

2014年4月28日 · 2 分钟

java实现cassandra的增删改查

cassandra使用cql语言作为操作语言,cassandra在2.0之后,在操作上越来越像sql数据库的操作,这样想从传统关系型数据库,切换到cassandra的花,上手成本也越来越低。使用官方java驱动操作cassandra 非常简单。 maven引入驱动包 <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>2.0.1</version> </dependency> 1、创建应用的唯一session。 Cluster cluster = Cluster.builder() .addContactPoint("192.168.22.161") .build(); 这里构建一个集群对象,“192.168.22.161” 是cassandra的种子节点(seed node). Session session = cluster.connect(); 你也可以针对一个特定的keyspace获取一个session Session session = cluster.connect("mykeyspace"); session是线程安全的,所以一个应用中,你可以只有一个session实例,官方建议一个keyspace一个session。 2、session可以直接支持执行cql语句。 String cql = "select * from mykeyspace.tablename;"; session.execute(cql); 你完全可以用这种方式完成任意操作,记住cql语句后面一定要带分号。 3、如果你不想繁琐的去拼字符串,你可以用com.datastax.driver.core.Querybuilder。 insert 一条记录String cql = “insert into mykeyspace.tablename(a,b) values(1,2);” 你可以这样写: session.execute( QueryBuilder.insertInto("mykeyspace", "tablename") .values(new String[]{"a","b"}, new Object[]{1,2})); delete 记录String cql = “delete from mykeyspace.tablename where a=1”; 你可以这样写: session.execute(QueryBuilder.delete() .from("mykeyspace", "tablename") .where(QueryBuilder.eq("a", 1))); update 记录String cql = “update mykeyspace.tablename set b=2 where a=1” ...

2014年4月27日 · 1 分钟

cassandra关于集合类型的操作

举例: create table test( a int, b list<text>, c set<text>, d map<text,text>, primary key(a) ); 插入使用下面的形式 insert into test(a,b,c,d) values(1,[’listtext1’,’listtext2’],{‘settext1’,‘settext2’},{‘mapkey1’:‘mapvale2’,‘mapkey2’:‘mapvalue2’}); 第一: list类型 增加元素: update test set b=b+[’listtext3’,’listext4’] where a=1; 删除第i个元素: 你可以使用 delete b[i] from test where a=1; 或者 update test set b[i]=null where a=1; 注:后者的方法是可行的,不过官方文档没有说明 删除内容为listtext1和listtext2的元素 update test set b = b-[’listtext1’,’listtext2’] where a=1; 第二: Set类型 增加元素 update test set c=c+{‘settext3’,‘settext4’} where a=1; 删除元素 update test set c=c-{‘settext1’,‘settext2’} where a=1; ...

2014年4月25日 · 1 分钟

荣耀X1土豪小资必备的五大优势

荣耀X1,生来就不是为平常小厮们所准备的,它处处透着土豪的气质,不自觉的大气上档次,下面是荣耀X1突出的N个特点 1、屏大 荣耀X1的屏不是一般的大,在手机界,已经找不出比它还大,即便未发布的三星note 4,传闻也就是6.3寸屏,而荣耀X1的屏达到了7寸,采用LTPS技术,全贴合屏,1920 x 1200的像素,史无前例,就是平板电脑的范儿。 2、4G全制式 虽然荣耀X1外观大小可比平板电脑,但是它还是一部手机,而且是一部4G手机,无论是TDD-LTE还是FDD-LTE的4G标准,无论是WCDMA TD-CDMA的3G标准 还是GSM的2G标准,它通吃。在家当平板,出门做电话,倍有面啊。 3、高配置 配置是强劲的,没话说,4核处理器,2G内存,足够的配置,PC机也不过这样的配置。这样的大的屏幕,配的是5000mA的大电池。1300万/500万相机,F2.2大光圈。 4、极致外观 极其方正的外观,典雅朴素,是我的菜。航空铝材金属机身,2.99mm窄边框,7.1mm的超薄机身,只有239g 5、高性价比 3G版的1799 4G版的1999. 等同于同时拥有了一部手机,一部平板,荣耀X1,土豪小资值得拥有。

2014年4月23日 · 1 分钟

提高alexa排名就是这样简单

第一步: 自己安装一个alexa工具条,浏览下自己的网站,此时你就有了最初始的排名。可能是几千万之后。 第二步: 每天都浏览一下自己的网站,你会发现你的排名很容易的在前进,不过在进入几百万名的时候,提升就相当缓慢了。 第三步: 加入elexa排名显示代码: <script> document.write("<script src=‘http://xslt.alexa.com/site_stats/js/t/b?url=zhaoyanblog.com’></script>");</script> 显示效果如下: 这样即便不安装alexa工具条的人,访问你的网站,也会有助于提升alexa排名。 第四步: 如果你的用户量不多的话,你的排名还是徘徊在百万名范围内。所以要刷流量,不能用代码刷,必须用真实的客户端。 百度的加速乐测速工具,使用全国分布的真实客户端进行测速,你只要每天测个两下,你的流量就上去了。 测速地址;http://jiasule.baidu.com/tools/realtime_speed/ 亲身体验,上述方法可以让你的网站排名达到几十万,国内排名2万以内。 不过本站使用的是廉价的虚拟机,这样的测试对服务器冲击较大,就不再去刷排名了,本来这个博客就是玩玩而已嘛~~~

2014年4月20日 · 1 分钟

荣耀3c为什么能完胜红米手机

目前看更多的用户青睐于荣耀3c手机,在没有荣耀3c之前,用户青睐于红米手机的原因,可能在于红米手机的性价比。虽然红米手机赢得了很多粉丝,但是对于红米手机用户来说,他们在小米圈子里是被瞧不起的。因为红米手机一出来就给贴上了一个低端机的标签,山寨的外观,塑料感十足的外壳,一系列国产的低端配置,包括只有130万像素的前置摄像头,1G不变的内存,俗气的红色都注定了红米手机上不了档次。 反正在我身边周围,真的没有发现一位使用红米手机的人,即便在人群密集的地铁中。 再看荣耀3c,前黑后白的大气外观,一出生就决定它的不平凡,尽管市场定位荣耀3c可能是一款低端产品,但是华为是认真对待了这款手机,并且把最新的EMUI2.0版本的第一次奉献给了这部手机,让人眼前一亮的感觉,1G、2G内存可选,前置500万摄像头,5寸大屏,金属边框,拿在手里相当的大气高端上档次。没有任何低端机的感觉。价格当时仍然比红米手机便宜1块钱,足可以看出华为对消费者的一片诚心。 荣耀3c横空出世,横扫低端市场,大败红米手机,即便是荣耀3c发布后的5个月,仍然炙手可热,荣耀3c绝对值得拥有,周围的同事朋友都在使用荣耀3c,地铁里公交上,时不时响起华为经典的手机铃声。在荣耀3c之后,又有了荣耀3x 荣耀x1 荣耀3x畅玩版,正在逐渐形成了一个强大无比的荣耀家族!!! 最后看一下,两大手机资讯网站关于荣耀3c和红米手机的评分对比: 网站名称 评分者 荣耀3c(移动1G版) 红米手机(移动版) 中关村在线 ZOL点评 4 4 网友点评 4.4 3.5 太平洋 编辑评分 3.9 3.9 用户评分 4.3 3.1 相差不是一点两点啊,用户的眼睛是雪亮的啊~

2014年4月18日 · 1 分钟

slf4j、log4j 的使用

驱动和桥接 log4j是一个日志系统。 slf4j是一个日志系统的封装,对外提供统一的API 使用slf4j需要下载 slf4j-api-x.x.x.jar 它提供对外一致的API接口,其本身不提供日志实现。 假设我们选择log4j作为我们的日志实现,需要下载 log4j-x.x.x.jar 如果想把slf4j绑定log4j,则需要下载slf4j对log4j的相应”驱动”。 slf4j-log4j12-x.x.x.jar 这样就可以使用slf4j提供的API,用log4j实现打日志了。 所谓驱动,就是实现了slf4j的一些接口,用你喜欢的日志系统打日志。 slf4j还支持好多日志系统,并提供了相应的“驱动”包 例如: slf4j-jdk14-x.x.x.jar是为java.util.logging提供的驱动 slf4j-simple-x.x.x.jar直接绑定System.err lf4j-jcl-x.x.x.jar是为commons-logging提供的驱动 logback-classic-x.x.x.jar是为logback提供的驱动 如果你引入了一个第三方jar包或者你之前的工程使用了commons-logging打日志。你想换成slf4j,你不需要更改代码,你需要使用桥接,你可以引入jcl-over-slf4j.jar,同时去掉commons-logging.jar包,这样之前打的日志会自动切换到你的slf4j中来了。同样还有log4j-over-slf4j.jar and jul-to-slf4j.jar等用于使用其它日志系统的应用自动切换到slf4j统一打日志。 logger,Appender Logger:日志对象,用来写日志的对象,每个Logger都会有一个名字,除了root Logger。root Logger是log4j始终存在的一个Logger. root Logger只能用Logger.getRootLogger()来获取,其它Logger可以用名字来得到Logger.getLogger(name); 每个Logger都可以设置它的输出日志的最低LEVEL和Appender。 LEVEL有 TRACE,DEBUG,INFO,WARN,ERROR FATAL几种。 Appender可以理解为日志的一个输出方式。每个Logger可以有多个Appender。 Logger之间根据名字,对输出日志的最低LEVEL和Appender有继承关系。 rootLogger<<Logger(“DEBUG”) rootLogger<<Logger(“INTERFACE”) rootLogger<<Logger(“com.zhaoyanblog”)<<Logger(“com.zhaoyanblog.xml”) 对于LEVEL的继承: 如果一个Logger没有设置最低LEVEL,它会继承它的直接父Logger的最低LEVEL。 对于Appender的继承:一个Logger除了配置给它的Appender之外,它会继承它所有父Logger的Appender,除非它的Additivity属性设为false。 log4j的配置方式。 log4j的配置方式有两种: 第一种:properties键值对的 方式 log4j默认配置文件为classpath下的log4j.properties #设置等级和Appender。 log4j.rootLogger=debug,appender1,apppender2 log4j.logger.com.huawei=error,apppender2 #定义appender和它的属性 #控制台输出的appender log4j.appender. appender1= org.apache.log4j.ConsoleAppender log4j.appender. appender1.layout=org.apache.log4j.PatternLayout log4j.appender. appender1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n #文件输出的appender log4j.appender. appender2=org.apache.log4j.RollingFileAppender log4j.appender.apppender2.File=example.log log4j.appender.appender2.MaxFileSize=100KB log4j.appenderappender2.MaxBackupIndex=1 log4j.appender.appender2.layout=org.apache.log4j.PatternLayout log4j.appender.appender2.layout.ConversionPattern=%p %t %c - %m%n #输出日志的格式和信息都是可配可选的。 #设置Logger是否继承父logger的appender log4j. Additivity.com.zhaoyan=false 第二种:XML方式 ...

2014年4月16日 · 1 分钟

cassandra2.0 如何实现分页查询

本文用到的cassandra的版本是2.0.6版 1、前提和约束 create table test(a int,b int,c int, d string,e string,primary key(a,b,c)); create index on test(d); cassandra的查询具有以下约束: 第一主键 只能用=号查询 第二主键 支持= > < >= <= 但是必须后面加 ALLOW FILTERING 索引列 只支持=号 2、分页查询 首先使用limit 关键字来限制查询结果的条数 进行分页。 进行翻页是个比较复杂的过程。 需要明确查询出来的结果是按token(a) 来排序的,其次是按(b,c)来排序的。 假设无任何查询条件的查询,第一次查询语句是 select * from test limit 10; 出来的第10条记录的主键需要记录下来,假设为 a10 b10 c10 那么进行第二次查询的时候,语句应该这样写: select * from test where token(a)=token(a10) and (b,c)>(b10,c10) limit 10; 假设查出来只有6条, 那么需要继续查出来4条,语句应该这样写: select * from test where token(a)>token(a10) limit 4; 如果后面扔有数据,第20条记录的主键也要记录下来,假设为 a20 b20 c20 ...

2014年4月12日 · 1 分钟