首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将选定的联系人加载到回收视图中?通过使用broakenmedia / MultiContactPicker依赖

"如何将选定的联系人加载到回收视图中?通过使用broakenmedia/MultiContactPicker依赖"

首先,broakenmedia/MultiContactPicker是一个用于在Android应用程序中选择和加载联系人的开源库。它提供了一个方便的界面,允许用户从设备的联系人列表中选择一个或多个联系人。

要将选定的联系人加载到回收视图中,可以按照以下步骤进行操作:

步骤1:添加依赖 在你的Android应用程序的build.gradle文件中,添加以下依赖项:

代码语言:txt
复制
implementation 'com.github.broakenmedia:MCP:1.5.2'

步骤2:请求联系人权限 在你的AndroidManifest.xml文件中,添加以下权限:

代码语言:txt
复制
<uses-permission android:name="android.permission.READ_CONTACTS" />

步骤3:创建选择联系人的按钮 在你的布局文件中,添加一个按钮用于触发联系人选择器:

代码语言:txt
复制
<Button
    android:id="@+id/select_contacts_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="选择联系人" />

步骤4:在代码中处理联系人选择 在你的Activity或Fragment中,使用以下代码处理联系人选择:

代码语言:txt
复制
// 初始化联系人选择器
MultiContactPicker.Builder builder = new MultiContactPicker.Builder(MainActivity.this);
builder
    .disableSearchBar(false)
    .showTrack(true)
    .highlightColor(Color.parseColor("#FF00FF00"))
    .showPickerForResult(CONTACT_PICKER_REQUEST);

// 创建选择联系人的按钮点击事件
Button selectContactsButton = findViewById(R.id.select_contacts_button);
selectContactsButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 打开联系人选择器
        builder.build().start();
    }
});

// 处理联系人选择结果
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CONTACT_PICKER_REQUEST) {
        if (resultCode == RESULT_OK) {
            // 获取选定的联系人列表
            List<ContactResult> results = MultiContactPicker.obtainResult(data);
            
            // 将选定的联系人加载到回收视图中
            RecyclerView recyclerView = findViewById(R.id.recycler_view);
            recyclerView.setAdapter(new ContactsAdapter(results));
        } else if (resultCode == RESULT_CANCELED) {
            // 用户取消了联系人选择
        }
    }
}

在上述代码中,你需要根据自己的需求自定义联系人选择器的外观和行为。你可以禁用搜索栏、显示选中的联系人数量跟踪、设置高亮颜色等。然后,在点击选择联系人的按钮时,打开联系人选择器并在选择结果返回后将选定的联系人加载到回收视图中。

这只是一个简单的示例,你可以根据你的具体需求来定制代码和界面。关于broakenmedia/MultiContactPicker库的更多信息,请参考以下链接:

broakenmedia/MultiContactPicker

腾讯云相关产品:腾讯云提供了丰富的云计算产品和解决方案,包括计算、存储、数据库、人工智能等。在联系人相关的场景中,可能会用到以下腾讯云产品:

  • 腾讯云短信服务(SMS):用于发送短信通知、验证等,可在联系人选择器中通过短信验证码来验证用户的手机号。
  • 腾讯云COS(对象存储):用于存储联系人的头像、名字等信息,可以将联系人选择器返回的联系人信息保存到COS中。
  • 腾讯云云函数(Serverless):用于处理联系人选择器的选择结果,可以将联系人信息保存到数据库中或执行其他业务逻辑。

以上仅为举例,具体使用哪些腾讯云产品需要根据实际需求来决定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

以人为本 | Android 11 的消息通知

本文会针对消息推送分级的几个方面帮助大家理解通知栏是如何将用户信息进行优先推送的。 什么是通知?...从 Android 8 (Oreo) 开始,People notifications 就已经在下拉式通知栏的可视层级中得到了 "升格" 的 "待遇",其优先级仅次于正在进行的或者关键的通知消息 (如下图中显示...虽然 Android 强大的功能允许用户通过 通知渠道 设置通知的频率、可见性和重要性,但是如果没有遵循最佳实践,应用的价值和可信度就会降低,并且会对其在应用市场的信誉造成负面影响。...return rr; } 复制代码 相似度会随着下面几种情况而升高: 通知是否来自有效的联系人,有效联系人是否来自用户的通讯录,联系人是否被加星标注或者被用户收藏。...专门的会话区域和气泡提升了用户的专注体验 您可以看一下 Android 开发者文档中会话 (Conversation API) 页面中的相关介绍,只要通过遵循特定的指南,就可以使会话浮现在系统的各个位置

1.7K10

Win10 快捷键大全(史上最全)「建议收藏」

) Ctrl + A 选择文档或窗口中的所有项目 Ctrl + D(或 Delete) 删除选定项并将其移动到“回收站” Ctrl + R(或 F5) 刷新活动窗口 Ctrl + Y 重做操作 Ctrl...Ctrl + Shift 在提供了多个键盘布局时切换键盘布局 Ctrl + 空格键 打开或关闭中文输入法编辑器 (IME) Shift + F10 显示选定项的快捷菜单 Shift 加任意箭头键 在窗口中或桌面上选择多个项目...,或者在文档中选择文本 Shift + Delete 无需先将选定项移动到“回收站”,直接将其删除 向右键 打开右侧的下一个菜单,或者打开子菜单 向左键 打开左侧的下一个菜单,或者关闭子菜单 Esc 停止或退出当前任务...否则,删除命令行中光标左侧的所有字符。 Ctrl + End(历史记录导航) 如果命令行为空,则将视口移动到命令行。否则,删除命令行中光标右侧的所有字符。...Ctrl + R(在“相册”视图中) 删除相册 Ctrl + D 将选定项添加到相册 Ctrl + U 从相册中删除选定项 “写字板”键盘快捷方式 按此键 执行此操作 F3 在“查找”对话框中搜索文本的下一个实例

17.6K31
  • 【笔记】《计算机图形学》(7)——观察

    可以看到现在我们需要的就是投影变换的部分了,我们要将那个金字塔形的视体转为上面使用的规范视体的形式。...为什么视体和坐标系原点中间有一段距离? 如何将正交视体变换为上面的规范视体? 首先这里相机坐标系的z轴正方向和视体不在同一个方向上实际上是一个习惯问题。...我们通常使用的坐标系都是上图的右手坐标系,我们习惯了让x轴指向右侧,y轴指向上方,但是视体又必然是处于屏幕内侧的,这就导致了我们只能让z轴是指向屏幕外侧的,而视体处于z轴的负方向上。...计算机中的相机不会发生散焦等情况,因此在正交投影下调整焦距的效果类似于相机在移动 那么最后如何将正交视体变换为规范视体呢,很显然这也是一个缩放和移动仿射矩阵的情况,只是这一次我们无需忽略Z轴的值了,三轴都要进行移动和变换...但是前面我们一直以来的观察变换都在保持点的z轴深度值,这是为了后面的隐藏面消除操作,因此我们想要和之前一样通过给变换矩阵加一行来保留z值。

    2.1K20

    轻松玩转全链路监控

    应用总览 从应用列表进入应用总览页,首先呈现给使用者的是概览分析视图,在这个视图中,我们能够查询应用在指定时间的关键指标。...在外部调用视图中,会把下游应用每一个实例以IP+端口的形式进行呈现,我们可以通过这个视图快速定位下游应用是否有某个实例存在故障。...通过全局拓扑和应用拓扑视图,我们能够知道这个应用依赖于哪一些下游应用,这样就确定了与这次问题有可能发生关联的应用名单。...图:调用链路视图 在调用链路视图中,可以查看到整个调用链路中,所经历的每一个应用的调用类型、服务名、IP地址,以及耗时。通过右侧的时间轴,能一步定位到哪一个应用存在性能瓶颈。...创建联系人 报警规则被触发时会向指定的联系人分组发送通知,而在创建联系人分组之前必须先创建联系人。所以在创建报警规则前,我们需要预先确定报警的接收者,配置好联系人和联系人分组。

    1.5K11

    为什么HotSpot有‘对象’,因为他会垃圾分类和回收

    故,目前有三种情况对象可以进入老年代 第一种通过担保方式,上面刚提到 第二种就是大对象,jvm可以设定值,如果对象过大,或者数组啊,会直接放入老年代。...以上内容是否让大家明白了我们垃圾回收主要区域 ->堆 是什么样子了吧. 接下来就要说一下在这个堆里面到底使用了哪些算法。...到目前位置我们知道了 堆中年代堆分布结构 学习了垃圾收集的算法 接下来就来学习一下在真正的HotSpot中是如何将这些算法实现的。...安全点太少GC停顿时间会增加,安全点过多GC会很频繁,所以安全点的选定基本上是以程序是否具有让程序长时间执行的特征为标准进行选定的。...到目前为止,一个对象是否需要被回收,以及已经整个GC全过程就结束了。这部分内容也是HotSpot比较重要的内容之一,因为文章篇幅和笔者能力有限,很多细节没有说透,不过读者可以加微信私下探讨。

    40830

    Windows中的键盘快捷方式大全

    ) Ctrl + A 选择文档或窗口中的所有项目 Ctrl + D(或 Delete) 删除选定项并将其移动到“回收站” Ctrl + R(或 F5) 刷新活动窗口 Ctrl + Y 重做操作 Ctrl...加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本 Shift + Delete 无需先将选定项移动到“回收站”,直接将其删除 向右键 打开右侧的下一个菜单,或者打开子菜单 向左键 打开左侧的下一个菜单...“回收站” Shift + Delete 无需先将选定项移动到“回收站”,直接将其删除 F2 重命名选定项 Ctrl + 向右键 将光标移动到下一个字词的起始处 Ctrl + 向左键 将光标移动到上一个字词的起始处...Ctrl + Windows 徽标键+ Tab 通过 Aero Flip 3-D 使用箭头键循环切换任务栏上的程序 Alt + Esc 以项目打开的顺序循环切换项目 F6 在窗口中或桌面上循环切换屏幕元素...Ctrl + Windows 徽标键+ Tab 通过 Aero Flip 3-D 使用箭头键循环切换任务栏上的程序。

    5.7K21

    回到本真,代码是如何运行的?

    简单来看代码主要包含两部分: 指令部分:中央处理器CPU可执行的指令 数据部分:常量等 代码包含了指令,代码被转化为可执行二进制文件,被执行后加载到内存中,中央处理器CPU通过内存获取指令,图示如下。...到此为止,程序员把中央处理器CPU需要执行的指令,通过执行二进制代码文件加载到了内存中,接着问题来了: CPU如何获取下一个待执行的指令? 答:CPU中的控制单元负责获取、解析指令。...使用内存存储中间数据又面临新的问题: 指令执行完成之后内存如何回收? 这里就诞生了我们熟悉的「栈内存」,通常使用栈内存来存储指令执行过程中的临时数据。 栈内存 为什么称之为栈内存?...函数作用域外指令数据依赖 除此之外,假如函数test内变量是个指针且被函数外的代码依赖,如果对应变量内存被回收,这个指针就成了野指针不安全。怎么解决这个问题呢?...答:这就是「堆内存」的作用,比如Go语言在编译期会进行「逃逸分析」把分配在「栈」上的变量「分配到堆上去」。 堆内存 「堆内存」的问题函数执行完成之后不会被自动回收,所以通常通过「垃圾回收器」进行回收。

    68010

    JAVA高级面试总结-JVM篇

    2.JVM内存分布 程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。...由于多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,故该区域为线程私有的内存。...4.JVM垃圾回收算法 标记-清除算法:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 复制算法:将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。...:设置幸存区的目标使用率 7.JAVA类生命周期 Java类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载七个阶段。...开发者可以直接使用系统类加 双亲委派机制描述 :某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时

    1.1K90

    Java基础知识详细总结

    如果它们都没有加载到这个类时,则抛出ClassNotFoundException异常。否则将这个找到的类生成一个类的定义,并将它加载到内存当中,最后返回这个类在内存中的Class实例对象。...此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小。 newScheduledThreadPool 创建一个大小无限的线程池。...lock加的锁定解除,此时其它的线程可以有机会访问此变量 read:将主内存中的变量值读到工作内存当中 load:将read读取的值保存到工作内存中的变量副本中。...内存组成 堆(Heap) 运行时数据区域,所有类实例和数组的内存均从此处分配。Java虚拟机启动时创建。对象的堆内存由称为垃圾回收器 的自动内存管理系统回收。...News Generation(Young Generation即图中的Eden + From Space + To Space) Eden 存放新生的对象 Survivor Space 两个 存放每次垃圾回收后存活的对象

    69930

    干货:构建一个可实现CICD的tomcat容器应用镜像

    一个符合S2I/B2I的building image,在bin目录下,是需要包含如下四个脚本的: 1.assemble脚本: 这个脚本负责将外部代码库的代码下载到本地,并且进行编译打包。...save-artifacts的好处是可以加速构建的过程。 4 usage脚本 usage脚本是告诉使用者如果使用镜像。 在S2I的四个脚本中,通常我们只会用到assemble和run两个脚本。...查看hello.jsp中的代码: 第六步:根据选定的代码地址和builder image,构建应用镜像并部署 接下来,我们使用S2I的方式部署应用。...查看bc pod: 查看build的过程: 在下图中最后一行 WAR's copied,这其实就是assemble脚本执行成功后的输出: 镜像构建成功以后,会先push到docker registry...中: 然后会根据build成功的镜像,触发dc,也就是部署一个应用的容器: 应用部署完成以后,我们给它加一个route: 添加解析后,通过浏览器访问这个应用的地址,显示的内容就是第五步我们手工查看war

    1.4K40

    任何表面皆可触屏,无需传感器,超低成本投影虚拟显示器只需一个摄像头

    之前允许通过触摸操纵投影图像的工作大多依赖于特殊的输入设备、多个传感器或图像处理算法,难以处理混乱或令人困惑的视觉内容。...(a) Slope Disparity Gating 的概念图示,它允许相机捕获三维空间中的单个平面 [7]。(b) 成像选定区域。...虽然投影仪在透视投影中投射出被蓝线包围的图像,但该研究的成像技术使其能够仅捕获被红线包围的区域。 通过同步摄像头和投影仪这两个设备,可以让投影仪发出的光的水平面与相机接收的水平面相交。...此外,论文中详细描述了如何将这种设置与简单的图像处理算法结合,以跟踪用户手指相对于投影图像的位置,并且此跟踪信息可用作任何基于触摸的应用程序的输入。...参考链接:https://spectrum.ieee.org/any-surface-a-touchscreen 使用DTR和混合精度技术训练更大的模型 9月15日19:00-20:00,旷视研究院算法研究员肖少然和旷视

    1.1K10

    JVM原理最全、清晰、通俗讲解,五天40小时吐血整理

    在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令、分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。...28,java被编译成了class文件,JVM怎么从硬盘上找到这个文件并装载到JVM里呢? 是通过java本地接口(JNI),找到class文件后并装载进JVM,然后找到main方法,最后执行。...30,堆内存大小-Xms -Xmx设置相同,因为-Xmx越大tomcat就有更多的内存可以使用,这就意味着JVM调用垃圾回收机制的频率就会减少(垃圾回收机制被调用是jvm内存不够时自动调用的)可以避免每次垃圾回收完成后...然而下图中两个加1操作是并行的,不管是线程A还是线程B先flush计算结果到主存,最终主存中的Obj.count只会增加1次变成2,尽管一共有两次加1操作。...例如我们使用tomcat启动一个spring工程,通常启动过程中会加载数据库信息,配置文件中的拦截器信息,service的注解信息,一些验证信息等,其中的类信息就会率先加载到方法区。

    1.2K12

    【Nuxtjs】431- 简述Nuxt.js

    图中如果未使用缓存,就会导致每一个用户的对页面的请求,都使用服务去渲染一次,这对于服务器简直是灾难。...特别是渲染所依赖的node.js服务,不论是express还是koa又或者是像nuxt的封装,都绕不开渲染时对于服务器cpu产生压力。...最后笔者选定是接口缓存与页面缓存搭配使用,理由是我可以把那些类似于根据用户不同而不同的推荐组件放到客户端去获取数据并渲染,也就是公共部分用服务端渲染,差异部分用客户端渲染。...的文件,加入plugins配置中,这里的重点是文件命中一定要加server的标示,这样nuxt在加载这个插件的时候只会把它加载到服务端去。...这样一来,我们的ssr服务通过做缓存解决里cpu使用率的问题,然后又通过使用redis解决了本地内存膨胀的问题,ssr服务变的更专心于io。

    2.8K10

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    设计一个与应用的风格协调的活动指示器。可以的话,让活动指示器的尺寸和颜色与它所在的背景协调。 4.3.2 添加联系人按钮 添加联系人按钮让用户将现有联系人添加到文本框或者其它文字视图中。 ?...添加联系人按钮: 展示联系人列表 帮助用户将一个联系人添加到当前联系人按钮所在的视图中 使用添加联系人按钮让用户在不需要使用键盘的情况下就可以方便地访问到联系人。...由于添加联系人按钮属于键盘输入联系人方法的替代品,我们不推荐在不支持键盘输入的界面中使用添加联系人按钮。...一般来说,你会在一个表格视图中使用详情展开按钮来让用户知道更多关于这个列表项的信息。当然你也可以将这个按钮用在其它类型的视图中来为用户展示更多与特定项目相关的信息和功能。...用户可能会在打印机里使用步进器来确定打印份数,因为这个值的变化幅度通常并不大;而当用户需要选择打印的页码范围时,使用步进器就会让操作变得繁琐,因为用户很可能要点很多下才能选定页数。

    13.2K30

    Jprofile解析dump文件使用详解

    启动参数可以在发生内存outofmemory的时候自动生成dump文件,但是正式环境使用的时候不要加这个参数,不然在内存快满的时候总是会生成dump而导致jvm卡半天,需要调试的时候才需要加这个参数 注意...类追踪器 Class Tracker 类跟踪视图可以包含任意数量的图表,显示选定的类和包的实例与时间。...4.2 堆遍历 Heap Walker 使用背景 在视图中找到增长快速的对象类型,在memory视图中找到Concurrenthashmap—点右键----选择“Show Selectiion In Heap...通过创建分析该对象 如果还不能定位内存泄露的地方,我们可以尝试使用Allocations页签,该页签显示对象是如何创建出来的; 我们可以从创建方法开始检查,检查所有用到该对象的地方,直到找到泄漏位置;...记录的生产量 Recorded Throughput 显示一段时间累计的JVM生产和释放的活动时间表。 垃圾回收活动 GC Activity 显示一张关于垃圾回收活动的活动时间表。

    5.5K30

    深入浅出java虚拟机

    引用计数算法 引用计数算法的原理是这样的:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;在任何时刻计数器的值为0的对象就是不可能再被使用的,也就是可被回收的对象...在上图中,objectA、objectB、objectC是可达的,不会被回收;objectD、objectE虽然有关联,但是它们到GC Roots是不可达的,所以它们将会被判定为是可回收的对象。...虚拟机把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成可以被虚拟机直接使用的Java类型(Class对象),这就是虚拟机的类加载机制。...类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。,其中验证、准备和解析3个阶段统称为连接阶段。如图: ?...简单来说就是,通过类的包名加类名来定位到此类的class文件的位置,相当于一个资源定位的过程。 2、将这个字节流代表的静态存储结构转化为方法区的运行时数据结构。

    43120

    JVM学习笔记——垃圾收集器与内存分配策略(1)

    引用计数分析算法 一种简单的判断对象是否存活的方法:给对象添加一个引用计数器,当有一个地方引用它时,计数器加一;引用失效时,计数器减一。...在上图中,明显对象5,6,7是不可达的,会被判定为可回收的对象。...虚引用不会对对象的生存时间产生影响,也无法通过这样的引用来获取对象实例,设置虚引用的唯一目的就是在对象被垃圾回收时收到一个通知。可以通过phantomReference来设置虚引用。...但是当survivor空间不够用时,需要依赖其他对象进行分配担保,这对象将直接通过分配担保机制进入老年代。...安全点的选取以程序是否具备“让程序长时间执行”的特征为标准选定,长时间执行的最明显特征就是指令序列复用,如方法调用,循环跳转,异常跳转等。

    40620

    CAD2007操作教程下

    第十三课时 图层的使用与管理 《道德经》15.jpg 重点与难点: l 图层概述 l 图层的命名规则 l 设置图层的特性 l “特性匹配”的使用与效果 一、图层的概述 图层相当于图纸绘图中使用的重叠图纸...4、包含对象的图层 外部参照:文件之间的一个链接关系,某文件依赖于外部文件的变化而变化。...“文字颜色”下拉列表框:用于设置标注文字的颜色。 “文字高度”文本框:用于设置标注文字的高度。 “绘制文本边框”复选框:用于设置是否给标注文字加边框。...如何将单个视口变成四个视口方法 视口工具栏 中点击显示“视口”对话框 ,选四个相等视图,改为三维,在左上角为俯视图,右上角为主视图(前视图),左下角为左视图,右下角为--—等轴测。...移动面:沿指定的高度或距离移动选定的三维实体对象的面。一次可以选择多个面。 偏移面:按指定的距离或通过指定的点,将面均匀地偏移。正值增大实体尺寸或体积,负值减小实体尺寸或体积。

    8.6K30

    Java虚拟机(三)垃圾标记算法与Java对象的生命周期

    关于内存的划分和分配,目前Java虚拟机内存的划分是依赖于GC的的设计的,比如现在GC都是采用了分代收集算法来回收垃圾,Java堆作为GC主要管理的区域,被细分为新生代和老年代,再细致一点新生代又可以划分为...引用计数算法 引用计数算法的基本思想就是每个对象都有一个引用计数器,当对象在某处被引用的时候,它的引用计数器就加1,引用失效时就减1。当引用计数器中的值变为0,则该对象就不能被使用成了垃圾。...根搜索算法 这个算法的基本思想就是选定一些对象作为GC Roots,并组成根对象集合,然后从这些作为GC Roots的对象作为起始点,向下进行搜索,如果目标对象到GC Roots是连接着的,我们则称该目标对象是可达的...3.Java对象在虚拟机中的生命周期 当Java对象被类加载器加载到虚拟机中后,Java对象在Java虚拟机中有7个阶段。...这一阶段的对象至少要具有一个强引用,或者显式的使用软引用、弱引用或者虚引用。 3.不可见阶段(Invisible) 程序中找不到对象的任何强引用,比如程序的执行已经超出了该对象的作用域。

    67160

    手把手教 | 如何设计高性能数据库表

    第二范式和第三范式的区别 第二范式:非主键列是否依赖主键(包括一列通过某一列间接依赖主键),要是有依赖关系就是第二范式; 第三范式:非主键列是否直接依赖主键,不能是那种通过传递关系的依赖。...要是符合这种依赖关系就是第三范式。 通过对前三个范式的了解,我们知道 3NF 是 2NF 的子集,2NF 是 1NF 的子集。...从上图中可以观察到: 浮点数存在误差问题; 尽量避免进行浮点数比较; 对货币等对精度敏感的数据,应该使用定点数。...只能通过正则表达式进行模糊匹配,不但可能会返回错误的结果,而且无法使用索引提高性能。例如:查询指定产品的账号时,联合两张表将不能使用任何索引。...这意味着每个产品都可以通过交叉表和多个账号关联;同样地,一个账号也可以通过交叉表和多个产品关联。当我们“查询指定产品的账号”时,就可以直接使用下面的联合查询语句高效实现。

    3.1K23
    领券