当你完成了对数据库的操作(例如你的 Activity 已经关闭),需要调用 SQLiteDatabase 的 Close() 方法来释放掉数据库连接。...很多诸如select, add, delete, modify等操作我们都使用一种特殊的URI来进行,这种URI由3个部分组成, “content://”, 代表数据的路径,和一个可选的标识数据的ID。...content://contacts/people/45 这个URI返回单个结果(联系人信息中ID为45的联系人记录) 尽管这种查询字符串格式很常见,但是它看起来还是有点令人迷惑。...(name, phoneNo)的方式来向联系人信息簿中添加联系人姓名和电话号码。...第五种: 网络存储数据 前面介绍的几种存储都是将数据存储在本地设备上,除此之外,还有一种存储(获取)数据的方式,通过网络来实现数据的存储和获取。
当你完成了对数据库的操作(例如你的 Activity 已经关闭),需要调用 SQLiteDatabase 的 Close() 方法来释放掉数据库连接。...很多诸如select, add, delete, modify等操作我们都使用一种特殊的URI来进行,这种URI由3个部分组成, “content://”, 代表数据的路径,和一个可选的标识数据的ID。...将返回设备上的所有联系人信息 content://contacts/people/45 这个URI返回单个结果(联系人信息中ID为45的联系人记录) 尽管这种查询字符串格式很常见,但是它看起来还是有点令人迷惑...(name, phoneNo)的方式来向联系人信息簿中添加联系人姓名和电话号码。...第五种: 网络存储数据 前面介绍的几种存储都是将数据存储在本地设备上,除此之外,还有一种存储(获取)数据的方式,通过网络来实现数据的存储和获取。
搜索引擎中的步骤 在Elasticsearch中,搜索引擎的进度基于分析器,该分析器包含三个较低级别的构建块:字符过滤器,标记器和令牌过滤器。...通过Elasticstatic文档,定义是: 甲字符过滤器接收原始文本字符的流,并且可以通过添加,移除,或改变字符变换流。...您可以手动安装和通过Docker安装。最简单的方法是使用Docker执行以下步骤: 安装Docker 请参阅此处。...要同时使用标准文档行为和Elasticsearch API,程序员需要使用Elasticsearch扩展。...Elasticsearch可以通过NoSQL文档和搜索引擎帮助Java EE世界。
目标组件一般要通过Intent来声明自己的条件,一般通过组件中的元素来过滤。...Intent在寻找目标组件的时候有两种方法:第一,通过组件名称直接指定;第二,通过Intent Filter过滤指定 Intent启动不同组件的方法 组件名称 方法名称 Activity...被删除 Intent的Action和Data属性匹配 Action属性 Data属性 说明 ACTION_VIEW content://contacts/people.../1 显示id为1的联系人信息 ACTION_DIAL content://contacts/people/1 将id为1的联系人电话号码显示在拨号界面中 ACITON_VIEW tel...2,data/type,你可以用Uri 来做为data,比如Uri uri = Uri.parse(http://www.google.com); Intent i = new Intent(Intent.ACTION_VIEW
联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地址http://code.msdn.microsoft.com...本文主要介绍OData的查询和分页支持。...OData开放数据协议是微软针对Google的GData推出的,旨在推广Web程序数据库格式标准化的开放数据协议,微软将 OData 定义为基于 HTTP、AtomPub 和 JSON 的协议,增强各种网页应用程序之间的数据兼容性...Open Data Protocal (OData) 指定查询字符串参数让 Client 能使用它去排序与过滤结果。...$filter=substringof(Name, 'Ed') eq true $orderby 指定的属性来排序结果 http://localhost:port/api/contacts?
抛开性能因素,这些操作已经严重影响了代码的整洁,这种代码也没有几个人愿意来读。 那么,有没有什么好的办法来解决这种现状呢?毕竟集合最为最常用的操作,难道Java语言的设计者没有意识到这一点吗?...中的新成员,它允许你以声明的方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现),你可以把它看成是遍历数据集的高级迭代器。...更重要的是,在复杂业务中你用不着为了让某些数据处理任务并行而去操心线程和锁了,Stream API都替你做好了!...通过上面Stream操作流水线、实例,Stream操作大体上分为两种:中间操作符和终止操作符。 1. 中间操作符 对于数据流来说,中间操作符在执行指定处理逻辑后,数据流依然可以传递给下一级的操作符。...下一篇,将会提到Stream的终极操作——Collectors,让集合也能像数据库SQL一样,来完成复杂的分组、连接、汇总等,真正让你好用到飞起来。
对于某些存储引擎,例如MyISAM甚至可以通过OPTIMIZE命令使得索引完全顺序排列,这让简单的范围查询能使用完全顺序的索引访问。...mysql5.5和更早的版本也总是会回表获取数据行,尽管并不需要这一行且最终会被过滤掉。...这是底层存储引擎API的限制。MySQL5.5和更早的版本只允许在索引中做简单的比较操作(等于、不等于及大于)。...也有办法解决上面所说的两个问题,需要重写查询并巧妙设计索引。...例如,people表中last_name字段有一个二级索引,虽然该索引的列不包括主键id,但也能够用于对id做覆盖查询: select id,last_name from people where last_name
Web SQL Database 存储机制提供了一组 API 供 Web App 创建、存储、查询数据库。 下面通过简单的例子,演示下 Web SQL Database 的使用。...Android 也提供了 API 来操作 SQLite。Web SQL Database 存储机制就是通过提供一组 API,借助浏览器的实现,将这种 Native 的功能提供给了 Web App。...一般 Value 都是通过 Key 来存取的。 IndexedDB 提供了一组 API,可以进行数据存、取以及遍历。这些 API 都是异步的,操作的结果都是在回调中返回。...File System API 提供了一组文件与文件夹的操作接口,有同步和异步两个版本,可满足不同的使用场景。下面通过一个文件创建、读、写的例子,演示下简单的功能与用法。...任何需要通过文件来管理数据,或通过文件系统进行数据管理的场景都比较适合。 到目前,Android 系统的 Webview 还不支持 File System API。
经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。...语句执行过程中有没有用到表的索引,可以通过explain一个语句的输出结果来看KEY的值不是NULL。 我们看下 explain select * from t;的KEY结果是NULL ?...我们再来看一个例子: 如果你的执行语句是 select * from t_people where name='张三' and age=8 t_people表上有一个索引是姓名和年龄的联合索引,那这个联合索引的过滤性应该不错...但是查询的过滤性和索引的过滤性可不一定是一样的,如果现在你的需求是查出所有名字的第1个字是张,并且年龄是8岁的所有小朋友,你的语句会怎么写呢? 你的语句要怎么写?...我们可以考虑把名字的第一个字和age来做一个联合索引。这里可以使用MySQL5.7引入的虚拟列来实现。
联系人列表只更新存储收发双方的最新一条消息,不存储两人所有的历史消息 消息索引表的使用场景一般用于查询收发双方的历史聊天记录,是聊天会话维度 联系人表的使用场景用于查询某一个人最近的所有联系人,是用户全局维度...联系人的对方UID为李四的UID,和这个联系人最新的一条消息ID是1001 有过聊天记录 则只需更新张三和李四的最新的一条聊天消息ID为1001,同样的办法再更新一次李四的联系人列表 2 消息收发通道...API接口,客户端需发送消息时,调用该接口把消息发给IM服务端 客户端和IM服务端维护一个TCP长连接,客户端有消息发送时,以私有协议封装这条要发送的消息,然后通过TCP长连接把消息发给IM服务端...IM服务端提供消息发送的API,发送方可通过任意方式调用到这个API,把消息发出去。...IM服务端进行完消息存储和未读变更后,会通过接收通道把消息推送给接收方,接收通道一般是通过IM服务端和消息接收方之间维护的长连接来实现,还会使用第三方操作系统级别的辅助通道,来提升“自建的长连接不可用“
据悉,这个BUG的本质是Google+ People API允许用户访问自己和朋友的个人资料数据,这无意中也允许第三方应用程序删除未被标记为公开的个人资料,包括姓名、电子邮件地址、职业和性别等。...这些年来,我们一直在加强和完善我们的权限控制和政策条款来应对定期的内部审核,用户反馈以及日益增长的对于数据隐私和安全的关注。...需要强调的是,作为我们Project Strobe审核的一部分,我们在其中一个Google+ People API中发现了一个错误: 用户可以通过API向Google+应用授予对其个人资料数据及其朋友的公开个人资料信息访问权限...这不包括你发布或连接在Google+或任何其他服务的任何其他数据,例如Google+信息,消息,Google帐户数据,电话号码或G Suite内容。 我们在2018年3月发现并立即修补了此错误。...措施 4:我们会对应用程序获取 Android 设备上通话记录和短信记录的权限做一些限制,并且不再允许通过 Android Contacts API 获取到通话交互数据。
今天我们就从这个问题开始来聊一聊索引和慢查询。 另外插入一个题外话,个人认为团队要合理的使用ORM。...语句执行过程中有没有用到表的索引,可以通过explain一个语句的输出结果来看KEY的值不是NULL。...我们再来看一个例子: 如果你的执行语句是 select * from t_people where name='张三' and age=8 t_people表上有一个索引是姓名和年龄的联合索引,那这个联合索引的过滤性应该不错...但是查询的过滤性和索引的过滤性可不一定是一样的,如果现在你的需求是查出所有名字的第1个字是张,并且年龄是8岁的所有小朋友,你的语句会怎么写呢? 你的语句要怎么写?...我们可以考虑把名字的第一个字和age来做一个联合索引。这里可以使用MySQL5.7引入的虚拟列来实现。
经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。...语句执行过程中有没有用到表的索引,可以通过explain一个语句的输出结果来看KEY的值不是NULL。...我们再来看一个例子:如果你的执行语句 select * from t_people where name='张三' and age=8 t_people表上有一个索引是姓名和年龄的联合索引,那这个联合索引的过滤性应该不错...但是查询的过滤性和索引的过滤性可不一定是一样的,如果现在你的需求是查出所有名字的第1个字是张,并且年龄是8岁的所有小朋友,你的语句会怎么写呢?...我们可以考虑把名字的第一个字和age来做一个联合索引。这里可以使用MySQL5.7引入的虚拟列来实现。
今天我们就从这个问题开始来聊一聊索引和慢查询。 另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考 ORM的权衡和抉择。...语句执行过程中有没有用到表的索引,可以通过explain一个语句的输出结果来看KEY的值不是NULL。...你可以用全表扫描来表示一个查询遍历了整个主键索引树; 也可以用全索引扫描,来说明像select a from t;这样的查询,他扫描了整个普通索引树; 而select * from t where id...我们再来看一个例子: 如果你的执行语句是 select * from t_people where name='张三' and age=8 t_people表上有一个索引是姓名和年龄的联合索引,那这个联合索引的过滤性应该不错...我们可以考虑把名字的第一个字和age来做一个联合索引。这里可以使用MySQL5.7引入的虚拟列来实现。
今天我们就从这个问题开始来聊一聊索引和慢查询。...语句执行过程中有没有用到表的索引,可以通过explain一个语句的输出结果来看KEY的值不是NULL。 我们看下 explain select * from t;的KEY结果是NULL ? ...我们再来看一个例子: 如果你的执行语句是 select * from t_people where name='张三' and age=8 t_people表上有一个索引是姓名和年龄的联合索引,那这个联合索引的过滤性应该不错...但是查询的过滤性和索引的过滤性可不一定是一样的,如果现在你的需求是查出所有名字的第1个字是张,并且年龄是8岁的所有小朋友,你的语句会怎么写呢? 你的语句要怎么写?...我们可以考虑把名字的第一个字和age来做一个联合索引。这里可以使用MySQL5.7引入的虚拟列来实现。
列裁剪和分区裁剪 Hive在读数据的时候,只读取查询中所需要用到的列,而忽略其它列。...例如,若有以下查询: SELECT age, name FROM people WHERE age > 30; 在实施此项查询中,people表有3列(age,name,address),Hive只读取查询逻辑中真正需要的两列...但就算设置成more,也只有部分sql语句会不走MapReduce程序,那有没有什么办法可以优化这个问题呢?这就不得不提本地模式了。...,或者无效的on连接条件,Hive只能使用1个reducer来完成笛卡尔积。...可以通过配置参数mapred.job.reuse.jvm.num.tasks来进行JVM重用。
通过创建一个简单的示例应用程序,它向你展示了如何: 在.proto中定义消息格式 使用protocol buffer编译器 使用Go protocol buffer API读写消息 这并不是protocol...为什么使用Protocol Buffer 我们要使用的例子是一个非常简单的“通讯录”应用程序,它可以从文件中读写联系人的信息。通讯录中每个人都有一个姓名、ID、邮箱和练习电话。...消息只是一个包含一组类型化字段的聚合。许多标准简单数据类型都可用作字段类型,包括bool、int32、float、double和string。...你也可以通过使用其他消息类型作为字段类型来为消息添加更多结构。...Protocol Buffer API 生成的addressbook.pb.go为你提供了下面这些有用的类型: 包含People字段的AddressBook结构体 包含Name、Id、Email和Phones
前言 经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。...读者福利:整理好的MySQL实战笔记 语句执行过程中有没有用到表的索引,可以通过explain一个语句的输出结果来看KEY的值不是NULL。...你可以用全表扫描来表示一个查询遍历了整个主键索引树; 也可以用全索引扫描,来说明像select a from t;这样的查询,他扫描了整个普通索引树; 而select * from t where id...我们再来看一个例子: 如果你的执行语句是 select * from t_people where name='张三' and age=8 t_people表上有一个索引是姓名和年龄的联合索引,那这个联合索引的过滤性应该不错...我们可以考虑把名字的第一个字和age来做一个联合索引。这里可以使用MySQL5.7引入的虚拟列来实现。
例如,内置的people应用程序里,用户详细信息列表上列出了该用户使用的社交应用,用户可以通过社交应用上的"添加联接"按钮调用 invite intent 连接两个人的社会网络。...WifiP2pManager包括API,允许您: 1、您P2P连接的应用程序通过调用initialize 2、探索通过调用附近的设备discoverPeers 开始通过调用P2P连接connect...你还可以通过getEngines()来查询可用的TTS引擎,这个方法返回一个TextToSpeech.EngineInfo对象的集合,改对象包含引擎的图标、标签和包名等信息。...通过查询工具类型,您的应用程序可以根据从手指或鼠标输入不同的方式来分别处理输入。 你也可以通过MotionEvent中的getButtonState()方法,来查询鼠标或者按钮的状态。...您可以通过向getAxisValue()输入AXIS_DISTANCE , AXIS_TILT ,和AXIS_ORIENTATION 几个Axis Codes来查询这些信息。
我使用了Google的搜索索引系统,为每个三元组分配了一个Id,并构建了三个索引,分别为S,P和O.另外,索引允许附件,所以我附上了每个实体的类型信息(即演员,书,人等等)。...当需要查询的先前部分的结果集来执行其后续部分时,一个连接就被建立了。典型的连接将涉及一些SELECT操作,即来自通用数据集的某些结果中的过滤器,然后使用这些结果来过滤数据集的另一部分。...如果第一步有一百万个结果(所有旧金山人口),那么第二步需要将每个结果放入查询中,检索他们的饮食习惯,然后通过过滤器过滤出符合条件的人。 分布式系统工程师通常通过广播来解决这个问题。...这实际上允许了查询执行任意深度连接,同时避免扇出广播问题。比如查询[people in SF who eat sushi],会导致数据库内最多进行两次网络调用,无论集群规模大小。...Dgraph为所有对象分配了整数ID,并对其进行排序并存储在发布列表结构中,以便快速对这些发布列表求进行交叉计算。这些创新将在连接期间加快过滤速度,还可以用来查找公共引用等。
领取专属 10元无门槛券
手把手带您无忧上云