这里介绍如何获得与你搜索匹配或者部分匹配的联系人列表,主要通过以下技术:

联系人名字匹配

获得与搜索的联系人名字匹配或者部分匹配的联系人列表。Contacts Provider允许多个相同的联系人名字,所以可能会返回一个列表。

特定数据类型匹配,如电话号码匹配

获得与搜索的指定的数据类型匹配,比如电话号码,email等。返回匹配的列表

所有数据类型匹配

获得与搜索的字符匹配的列表,包括名字,电话号码,街道名,email等。通过这个技术,可以得到与你搜索字符匹配的联系人列表,只要联系人其中一项数据域字符匹配,就符合条件。

注意:在这里都是通过CursorLoader从Contacts Provider获得数据。CursorLoader在独立于UI进程的另一个进程中进行查询,这样保证查询不会影响UI的反应速度和影响用户体验。关于更多在独立进程中下载数据,请参阅Loading Data in the Background。


Request Permission to Read the Provider (请求相应权限以便读取Provider内容)

通过Contacts Provider搜索联系人,你的app必须有READ_CONTACTS权限,可以通过下列代码获得访问权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />

Match a Contact by Name and List the Results (通过名字匹配联系人信息并列出结果)

你需要一个ListView来显示搜索的结果,所以在main layout中定义包括ListView的UI,外加一个layout file来填充ListView的每一行。比如,你可以通过下面代码定义main layout file,文件名为contacts_list_view.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemes.android.com/apk/res/android"android:id="@+id/list"android:layout_width="match_parent"android:layout_height="match_parent" />

在上面的XML文件中使用android内置的ListView

通过下面代码定义另一个layout来充当ListView的每一行,文件名为contacts_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemes.android.com/apk/res/android"android:id="@+id/text1"android:layout_width="match_parent"android:layout_height="wrap_content" android:clickable="true"/>


注意:这里没有关于用户输入查找的字符串的UI,因为有可能这个字符串有其他来源,比如你可能会取短信中的一个字符串来查询

上面两个layout文件定义了显示搜索结果的UI,接下来就是如何编写代码实现显示搜索结果。


Define a Fragment that displays the list of contacts ( 定义一个Fragment来显示联系人列表)

为了显示联系人列表,可以通过Activity 来加载一个Fragment, 因为除了用一个Fragment来显示联系人列表外,还有可能会用另一个Fragment来显示用户选择的联系人的详细信息。使用这种方法,就可以和Retrieving Details for a Contact结合起来。

更多关于在activity使用Fragment可以借鉴Building a Dynamic UI with Fragments.

为了便于开发者通过Contacts Provider 进行查询,android框架提供了一个类ContactsContract,类里面定义了一些有用的常量和函数。当你使用这个类时,你就不需要自己定义常量用于content URIS,table names 或者columns。通过下面代码就可以使用这个类:

import android.provider.ContactsContract;

由于使用CursorLoader从provider 获得数据,因此必须实现接口LoaderManager.LoaderCallbacks。再者为了方便删除用户选择的联系方式,实现adapter 接口AdapterView.OnItemClickListener:

...
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.widget.AdapterView;
...
public class ContactsFragment extends Fragment implementsLoaderManager.LoaderCallbacks<Cursor>,AdapterView.OnItemClickListener {

Define global variables (定义全局变量)

定义在其它地方用到的全局变量


...
/** Defines an array that contains column names to move from* Cursor to the ListView.*/@SuppressLint("InlinedApi")private final static String[] FROM_COLUMNS = {Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?Contacts.DISPLAY_NAME_PRIMARY : Contacts.DISPLAY_NAME};/** Defines an array that contains resource ids for the layout views* that get the Cursor column contents. The id is pre-defined in* the Android framework, so it is prefaced with "android.R.id"*/private final static int[] TO_IDS = {android.R.id.text1};// Define global mutable variables// Define a ListView objectListView mContactsList;// Define variables for the contact the user selects// The contact's _ID valuelong mContactId;// The contact's LOOKUP_KEYString mContactKey;// A content URI for the selected contactUri mContactUri;// An adapter that binds the result Cursor to the ListViewprivate SimpleCursorAdapter mCursorAdapter;...		


注意:由于Contacts.DISPLAY_NAME_PRIMARY 需要android 3.0或更高版本,所以当设置app的minSdkVersion小于等于10的时候会产生警告,为了消除这个警告,特加上@SuppressLint("InlinedApi")。

Initialize the Fragment (初始化Fragment)

初始化Fragment,添加空的构造函数,在onCreateView()函数添加Fragment的对象UI。

    // Empty public constructor, required by the systempublic ContactsFragment() {}// A UI Fragment must inflate its View@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the fragment layoutreturn inflater.inflate(R.layout.contacts_list_layout, container, false);}


Set up the CursorAdapter for the ListView (设置CursorAdapter,以便操作ListView)

通过设置SimpleCursorAdapter将搜索的结果与ListVIew绑定。通过调用在parent activity调用函数Activity.findViewById()函数来获得ListView对象。调用ListView的setAdapter()来绑定SimpleCursorAdapter。

    public void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);...// Gets the ListView from the View list of the parent activitymContactsList = (ListView) getActivity().findViewById(R.layout.contact_list_view);// Gets a CursorAdaptermCursorAdapter = new SimpleCursorAdapter(getActivity(),R.layout.contact_list_item,null,FROM_COLUMNS, TO_IDS,0);// Sets the adapter for the ListViewmContactsList.setAdapter(mCursorAdapter);}

Set the selected contact listener (为联系人选项设置响应函数)

当你已经将查找的联系人信息展示时,你往往想让用户选择其中的一条联系人信息进一步的操作。比如,当用户单击一条联系人信息时,你可以将此联系人的地址显示在地图上。为了完成这个功能,你的Fragment需要实现接口AdapterView.OnItemClickListener,这个已经在上面做好了。

接下来就是通过ListView的函数setOnItemClickListener将ListView与当前Fragment绑定起来。

    public void onActivityCreated(Bundle savedInstanceState) {...// Set the item click listener to be the current fragment.mContactsList.setOnItemClickListener(this);...}

由于你将当前的Fragment设置成ListView的OnItemClickListener,你需要实现函数onItemClick()。下面会讲。


Define a projection (定义一个投射)

定义一个常量,里面包含你想要从查询返回的选项。在ListView的每项将会显示联系人的名字。在android3.0以后,联系人的姓名所在的列为Contacts.DISPLAY_NAME_PRIMARY,在之前的版本中是Contacts.DISPLAY_NAME.

另外一列Contacts._ID是用来和SimpleCursorAdapter绑定。Contacts._ID 和LOOKUP_KEY是用来为选择的联系人构造对应的content URI。

...
@SuppressLint("InlinedApi")
private static final String[] PROJECTION ={Contacts._ID,Contacts.LOOKUP_KEY,Build.VERSION.SDK_INT>= Build.VERSION_CODES.HONEYCOMB ?Contacts.DISPLAY_NAME_PRIMARY :Contacts.DISPLAY_NAME};

Define constants for the Cursor column indexes (为Cursor的列定义常量索引)

从Cursor的某个列获取数据,你需要这个列在Cursor对应的索引。你可以为Cursor的每个列定义索引常量,索引的值跟在之前投射数组中列出现的顺序一样。

// The column index for the _ID column
private static final int CONTACT_ID_INDEX = 0;
// The column index for the LOOKUP_KEY column
private static final int LOOKUP_KEY_INDEX = 1;


Specify the selection criteria (指定选择标准)

为了指定需要的数据,你可以创建一些变量来保存你想要的数据类型的文本表达式,通过这些变量告诉provider该搜索哪些数据列。

对于文本表达式,可以定义一个常量包含想要查找的列。虽然这个表达式可以包含数值,但是最好的方法是将想要的值外加一个“?”占位符。

    // Defines the text expression@SuppressLint("InlinedApi")private static final String SELECTION =Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?Contacts.DISPLAY_NAME_PRIMARY + " LIKE ?" :Contacts.DISPLAY_NAME + " LIKE ?";// Defines a variable for the search stringprivate String mSearchString;// Defines the array to hold values that replace the ?private String[] mSelectionArgs = { mSearchString };

Define the onItemClick() (定义onItemClick()函数)

在前面部分,你已经为ListView设置好单击的响应函数。现在实现在这个函数AdapterView.OnItemClickListener.onItemClick()里面完成相应的动作:

    @Overridepublic void onItemClick(AdapterView<?> parent, View item, int position, long rowID) {// Get the CursorCursor cursor = parent.getAdapter().getCursor();// Move to the selected contactcursor.moveToPosition(position);// Get the _ID valuemContactId = getLong(CONTACT_ID_INDEX);// Get the selected LOOKUP KEYmContactKey = getString(CONTACT_KEY_INDEX);// Create the contact's content UrimContactUri = Contacts.getLookupUri(mContactId, mContactKey);/** You can use mContactUri as the content URI for retrieving* the details for a contact.*/}

Initialize the loader (初始化loader)

由于你使用CursorLoader来获取数据,你必须初始化这个后台进程和其它控制异步获取的变量。可以在函数onActivityCreated()中进行初始化,这个函数在Fragment UI出现之前就会被调用:

public class ContactsFragment extends Fragment implementsLoaderManager.LoaderCallbacks<Cursor> {...// Called just before the Fragment displays its UI@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// Always call the super method firstsuper.onActivityCreated(savedInstanceState);...// Initializes the loadergetLoaderManager().initLoader(0, null, this);

Implement onCreateLoader() (实现onCreateLoader()函数)

当你调用initLoader()时,loader framework马上会调用函数onCreateLoader()。

在onCreateLoader()函数中,设置搜索的字符串样式。为了使得字符串成为pattern,可以插入%来表示一串任何字符,也可以用_来表示一个字符。比如pattern:“%Jefferson%"与”Thomas Jefferson"和“Jefferson Davis"都匹配。

在这个函数返回一个新的CursorLoader,对于contentURI参数,用Contacts.CONTENT_URI,这个URI指向整个表格:

    ...@Overridepublic Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {/** Makes search string into pattern and* stores it in the selection array*/mSelectionArgs[0] = "%" + mSearchString + "%";// Starts the queryreturn new CursorLoader(getActivity(),Contacts.CONTENT_URI,PROJECTION,SELECTION,mSelectionArgs,null);}


Implement onLoadFinished() and onLoaderReset() (实现函数onLoadFinished()和onLoaderReset())

当Contracts Provider返回查询的结果时,loader framework会调用onLoadFinished()函数。在可以函数中,可以将最终的Cursor赋值给SimpleCursorAdapter,这样会自动更新ListView的查找结果。

    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {// Put the result Cursor in the adapter for the ListViewmCursorAdapter.swapCursor(cursor);}

当loader framework发现最终的Cursor包含陈旧的数据是,会调用函数onLoaderReset()函数。可以在这个函数中取消SimpleCursorAdapter对当前Cursor的引用。如果你不这样做,那么loader framework将不会回收Cursor,这样会导致内存泄露。

    @Overridepublic void onLoaderReset(Loader<Cursor> loader) {// Delete the reference to the existing CursormCursorAdapter.swapCursor(null);}

Match a Contact By a Specific Type of Data (根据特定数据类型匹配联系人)

这个技术允许你根据你指定的数据类型来匹配联系人。例如通过联系人的名字来查找联系人就是一种,你也可以指定联系人其他部分信息,比如email等来进行匹配。比如,你可以获得指定的邮政编码的联系人,在正中情况下,查找的字符串必须与邮编。

为了实现这个技术,可以通过以下步骤实现:

请求读取Provider的权限

定义ListView和item layout.

定义一个显示联系人信息的Fragment

定义全局变量

初始化Fragment

为ListView设置CursorAdapter

为选择的联系人设置响应函数

定义Cursor行索引常量

虽然你从不同的表获得数据,但是表的行顺序和投射前是一样的,所以你可以在Cursor中使用相同的索引

定义对应的响应函数onItemClick()

初始化loader

实现onLoadFinished()和onLoaderReset()

下面的步骤叫你如何添加额外的代码以便通过指定查找的数据类型来找到想要的联系人信息。

Choose the data type and table (选择数据类型和table)

为了查找特定的数据类型,你必须知道这个数据类型对应的MIME类型。那个数据类型都有唯一的MIME类型,定义在ContactsContract.CommonDataKinds中,以CONTENT_ITEM_YTPE为后缀。比如email的数据类型就是ContactsContract.CommonDataKinds.Email, 对应的MIME类型是Email.CONTENT_TIEM_TYPE。

可以使用ContactsContract.Data表格用于你的查找,在这边表格中有你需要的投射, 选择规则,排序规则。

Define a projection (定义投射)

可以从ContactsContract.Data或者此类的继承类中选择相应的数据类型作为投射数组。

    @SuppressLint("InlinedApi")private static final String[] PROJECTION ={/** The detail data row ID. To make a ListView work,* this column is required.*/Data._ID,// The primary display nameBuild.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?Data.DISPLAY_NAME_PRIMARY :Data.DISPLAY_NAME,// The contact's _ID, to construct a content URIData.CONTACT_ID// The contact's LOOKUP_KEY, to construct a content URIData.LOOKUP_KEY (a permanent link to the contact};

Define search criteria (定义查找规则)

可以通过下面选择规则来查找特定的数据类型:

查找的数据类型所在的列应包含在查找的字符串中。这个列名随着数据类型而不同,所以你需要从ContactsContract.CommonDataKinds的子类中找到对应的数据类型的列明。比如当查找email地址是,对应的列名为Email.ADDRESS。

查找的字符串应包含”?“

查找的字符串应包含MIME类型,如上面提到,这个MIME类型定义在ContactsContract.CommonDataKinds的子类中,以CONTENT_ITEM_TYPE作为后缀。这个MIME必须用单引号包括来说明常量的边界,要不然provider回见这个值解析成一个变量名,而不是字符串。由于这个MIME是常量,因此你不需要在定义对应的常量。

    /** Constructs search criteria from the search string* and email MIME type*/private static final String SELECTION =/** Searches for an email address* that matches the search string*/Email.ADDRESS + " LIKE ? " + "AND " +/** Searches for a MIME type that matches* the value of the constant* Email.CONTENT_ITEM_TYPE. Note the* single quotes surrounding Email.CONTENT_ITEM_TYPE.*/Data.MIMETYPE + " = '" + Email.CONTENT_ITEM_TYPE + "'";

接下来就是定义变量来保存选择的参数:

    String mSearchString;String[] mSelectionArgs = { "" };

Implement onCreateLoader() (实现onCreateLoader()函数)

现在你已经指定了你想要查找的数据,并定义好如何查找的字符串,接下来就是在onCreateLoader实现查找,在这个函数中,返回一个以你的投射数组,选择文本表达式,选择数组作为参数的CursorLoader。

    @Overridepublic Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {// OPTIONAL: Makes search string into patternmSearchString = "%" + mSearchString + "%";// Puts the search string into the selection criteriamSelectionArgs[0] = mSearchString;// Starts the queryreturn new CursorLoader(getActivity(),Data.CONTENT_URI,PROJECTION,SELECTION,mSelectionArgs,null);}

上面这些代码可以帮助你如何查找一个特定数据类型的联系人信息。


Match a Contact by Any Type of Data (通过与任意数据类型匹配查找联系人)

与上部分不同,这里只要求联系人的任何一个信息与搜索的字符串匹配,包括名字,email,邮编,电话号码等,那么这个联系人就符合要求。比如当查找”Doe"是,联系人的名字是“John Doe”或者联系人的地址是“Doe Street"都符合要求。

可以通过下列步骤来实现:

请求读取Provider的权限

定义ListView和item layout.

定义一个显示联系人信息的Fragment

定义全局变量

初始化Fragment

为ListView设置CursorAdapter

为选择的联系人设置响应函数

定义投射数组

定义Cursor行索引常量

虽然你从不同的表获得数据,但是表的行顺序和投射前是一样的,所以你可以在Cursor中使用相同的索引

定义对应的响应函数onItemClick()

初始化loader

实现onLoadFinished()和onLoaderReset()

下面步骤叫你如何改上面代码实现这个功能

Remove selection criteria (删除选择规则)

在这里就不用定义SELECTION常量了。

Implement onCreateLoader() (实现onCreateLoader())

通过函数onCreateLoader()返回新的CursorLoader。由于Contacts Provider自动地将查找字符串转换成patter,因此你不需要这样弄了。使用Contacts.CONTENT_FILTER_URI作为基本的URI,并调用Uri.withAppenddedPath()将这个URI添加到查找的字符串中,这样可以自动触发去遍历所有的数据类型。

    @Overridepublic Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {/** Appends the search string to the base URI. Always* encode search strings to ensure they're in proper* format.*/Uri contentUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,Uri.encode(mSearchString));// Starts the queryreturn new CursorLoader(getActivity(),contentUri,PROJECTION,null,null,null);}








查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 大规模知识图谱数据存储实战解析

    本文转自公众号PlantData知识图谱实战(ID:KGPlantData),本文摘录自上海海翼知信息科技有限公司胡芳槐博士4月14日在北京理工大学分享的《大规模知识图谱数据存储》PPT。 作者对知识图谱的存储进行了全面的介绍,内容包括:什么是知识图谱,知识图谱的适用场景,知识图谱数据…...

    2024/4/17 7:07:06
  2. 荐书:《深入分布式缓存》

    感怀一本历时2年的书即将出版难免有些激动,同时亦有些忐忑。激动在于这是一次有意义的社会实践,诸多作者参与其中。至完稿时,作者与发起计划时已有些不同。一些朋友因为各种原因退出了,所以从坚持的角度看,完成就意味着第一层面的成功。忐忑在于从初心出发,通读全稿仍有不…...

    2024/4/17 7:06:30
  3. Spring + Mybatis 项目实现动态切换数据源

    项目背景:项目开发中数据库使用了读写分离,所有查询语句走从库,除此之外走主库。 最简单的办法其实就是建两个包,把之前数据源那一套配置copy一份,指向另外的包,但是这样扩展很有限,所有采用下面的办法。 参考了两篇文章如下: http://blog.csdn.net/zl3450341/article/…...

    2024/4/1 8:37:33
  4. 如何在淘宝发起知识产权投诉?

    如何发起知识产权侵权投诉?一、关于知识产权淘宝网尊重他人的知识产权,我们也期望我们的用户秉持同样的原则。淘宝网提供的是网络交易服务平台,不参与买卖过程本身,所有商品信息均为会员在其电脑终端自行上传,因此,淘宝网不是侵权主体。淘宝网要求会员保证所发布的商品信…...

    2024/4/17 7:07:00
  5. Android之联系人处理

    联系人处理 Android联系人数据存储框架 联系人数据存储在联系人数据源组件ContactsProvider2中,与一般的数据源存储组件相比,ContactsProvider2更复杂。其中的数据库包含多个表,提供的Uri也更丰富。 联系人数据由3部分组成,联系人基本信息表,如姓名,联系人账号记录表,每…...

    2024/4/17 7:07:00
  6. Randao 可证公平随机数(VRF)白皮书

    Randao 可证公平随机数白皮书 randao.org September 11, 2017Abstract Randao 基于区块链技术,提供开源的、去中心化的、社交化的、可证公平的随机数生成服务。Randao 继承了常用随机数发生器的不可控制性及不可预测性,同时具备其所不具有的可参与性及可证公平性。Randao 通过…...

    2024/4/17 7:06:30
  7. 分库分表是什么?

    分库分表是什么? 分库分表就是将本应该存到一个库的,一个表中的数据分到多个库,多个表进行存储,将一个库分成多个库,将一个表分成多个表 为什么要分库分表? 当数据库存储大量的数据时,(出于性能考虑mysql的单表数据量不要超过一千万),查询的速率会随着数据的增多变慢…...

    2024/4/18 5:37:32
  8. 文件流转换为base64码 和 base64码转换为文件流

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 例子说明一切先写单元测试吧:单元测试的代码如下:package test.com.cs;import com.cs.Bas…...

    2024/4/17 7:06:36
  9. 网络方面的书籍推荐

    Table of Contents1. 计算机网络,谢希仁版 2. 计算机网络,自顶向下方法 3. TCP/IP 卷详解一 4. UNP 5. 补充材料 – 鸟哥的linux私房菜 5. 结尾还是那句话,我只推荐自己读过的那些好书,其余的不做太多的评价。计算机网络,谢希仁版这本算是我们本科时候的教材,写得确实很好…...

    2024/3/31 20:35:03
  10. Android中获取系统通讯录联系人并解决Android6.0权限问题

    标题 ## Android中获取系统通讯录联系人并显示在EditText 1.需求 一个EditText 点击button的时候转到系统通讯录,选中其中一个通讯录item返回当前界面且把 选中的联系人号码用户名显示在EditText 上。 2.示例3.代码 AddressList.java public class AddressList extends CheckP…...

    2024/4/17 7:07:00
  11. bootStrap高级进阶 表格合并 可编辑 删除添加行 监听事件在onclick $element.blur(function(

    下拉框 https://www.jb51.net/article/119929.htm 一。有框线 class=“table-bordered” <div class="col-sm-12 select-table table-bordered"><table id="bootstrap-table" data-mobile-responsive="true" style="white-space:…...

    2024/4/18 5:30:33
  12. OpenJWeb(v1.2)快速开发平台技术白皮书发布

    OpenJWeb(v1.2版)技术白皮书QQ:29803446 Msn:baozhengw999@hotmail.com Email:baozhengw@netease.com目 录一、 关于OpenJWeb.. 4 二、OpenJWeb的技术选型.... 4 三、 OpenJWeb(v1.2)现有功能.... 6 3.1数据字典类型和数据字典定义... 6 3.2表结构定义及生成工具... 6 3.…...

    2024/4/17 7:06:48
  13. 解决Eclipse中无法直接使用Base64Encoder的问题

    Base64的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder的sun.misc.BASE64Encoder/BASE64Decoder类。这个类是sun公司的内部方法,并没有在java api中公开过,不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。但是在Eclipse和MyEclipse中直接使用,却找…...

    2024/4/17 7:07:06
  14. contacts模块功能分析(较全面)

    联系人功能分析(较全面,比较好) 转载自http://blog.csdn.net/lksodit_yiyi/article/details/7887296 1. 简介 本文基于MTK6516代码进行分析联系人模块的功能及数据库操作的流程。 联系人是手机功能中不可缺少的模块,主要记录用户的联系人数据,方便用户快捷的操作和使用…...

    2024/4/20 18:05:10
  15. 知识图谱概念篇

    随着互联网的发展,网络数据内容呈现爆炸式增长的态势。由于互联网内容的大规模、异质多元、组织结构松散的特点,给人们有效获取信息和知识提出了挑战。知识图谱(Knowledge Graph) 以其强大的语义处理能力和开放组织能力,为互联网时代的知识化组织和智能应用奠定了基础。最近…...

    2024/4/18 16:59:58
  16. 2011年读书年度小结

    今天是大年初七,很多人已经开始回到了自己的工作岗位上,相信大家都会和我一样,每到这个时间都会像以往那样说,唉,时间过得真快啊,春节又结束了。每个长假结束时都是这个感受,无一例外。我今年这个春节过得很充实、很欢乐,第一,是在这短短的几天里,在每天吃喝之外挤出…...

    2024/4/17 7:06:48
  17. 根链平台(RootStock)——基于比特币驱动的智能合约白皮书

    根链平台——基于比特币驱动的智能合约白皮书(第9版)日期:2015年11月19日作者:Sergio DemianLerner译者:黄世亮日期:2016年9月2日目录1.引言2.为什么说根链是比特币经济生态里的重要一部分?2.1 比特币经济里利益相关者和其价值保护2.2 治理模式2.3 保护比特币矿工投资2.…...

    2024/4/4 22:37:05
  18. 人工智能 = 物联网,大数据 + 云计算

    人工智能 = 物联网,大数据 + 云计算 今天想写一下我对人工智能,物联网,大数据,云计算这几个当下比较热门技术关系的理解 首先,是物联网和大数据的关系,按照我的理解。大数据,其实就是其字面的意思,也就是海量的数据。其来源就是各种存储媒介中存储的信息。大数据也可以…...

    2024/4/18 13:14:12
  19. Android 添加同名通讯录自动合并的问题

    在开发添加本地通讯录的过程中发现,同名的联系人信息总会被合并。查阅信息后发现,Android确实是智能合并的情况,而且默认是开启的。 所以要手工修改起模式,修改代码如下: values.put(RawContacts.AGGREGATION_MODE,RawContacts.AGGREGATION_MODE_DISABLED);转载于:https:/…...

    2024/4/17 7:07:42
  20. android Contacts/Acore进程经常被Kill,导致联系人开机后丢失怎么办?

    Contacts/Acore进程,在内存较少和开机进程过多的情况下会经常被 ActivityManager Kill 掉, 导致Sim卡联系人开机后未导入或者只导入一部分,造成联系人丢失的现象,但是重新开机后可以恢复正常。 遇到这样的问题可以采用以下方法提供Contacts/Acore进程的优先级,降低被Activ…...

    2024/4/24 12:26:28

最新文章

  1. 《深入解析WIndows操作系统》第9章读书笔记

    1、闪存类型&#xff1a;常见的闪存类型有NOR和NAND。NOR闪存在操作上最接近RAM&#xff0c;它的每个字节都可以被独立地寻址&#xff0c;而NAND闪存则被组织成以块为单位&#xff0c;就像磁盘一样。NOR类型的闪存用来设计保存计算机主板上的BIOS&#xff0c;而NAND类型的闪存被…...

    2024/4/30 18:18:12
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. javaWeb网上零食销售系统

    1 绪 论 目前&#xff0c;我国的网民数量已经达到7.31亿人&#xff0c;随着互联网购物和互联网支付的普及&#xff0c;使得人类的经济活动进入了一个崭新的时代。淘宝&#xff0c;京东等网络消费平台功能的日益完善&#xff0c;使得人们足不出户就可以得到自己想要的东西。如今…...

    2024/4/30 1:38:10
  4. Finetuned Language Models Are Zero-Shot Learners

    Abstract 本文探索了一种简单的方法来提升语言模型的零样本(zero-shot)学习能力。我们发现 指令微调(instruction tuning) 显著提高了未见任务的零样本性能。 指令微调:即在一组通过指令描述的数据集上对模型进行微调我们对一个 137B 参数的预训练模型在 60 个 NLP 任务上…...

    2024/4/30 10:28:48
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/29 14:21:50
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57