首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Jetpack组件之DataStore

首语 数据持久化指将哪些内存中的瞬时数据存到存储设备中,保证即使在手机或电脑关机的情况下,数据依然不会丢失。 Android系统中主要提供了三种方式来实现数据持久化功能。...即文件存储、SharedPreferences存储及数据库存储。其中SharedPreferences是使用键值对的方式来存储轻量型数据,使用比较简单,且程序卸载后也会一清除,不会残留数据。...Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。...plugins { id "com.android.application" id "kotlin-android" id "com.google.protobuf" version...protobuf { protoc { // //仓库下载 protoc 这里的版本号需要与依赖 com.google.protobuf:protobuf-javalite:xxx

1.1K10

Android Compose 新闻App(三)网络数据Compose UI显示加载、Room和DataStore使用

使用 Scaffold 时,您可以确保这些组件能够正确放置协同工作。...中,这里我们请求成功之后返回的是epidemicNews,如下图所示: 然后我们增加两行代码: 这里就是拿到数据之后保存到本地数据库中,为什么要先删除呢?...③ 使用   首先先说一下业务逻辑,通过一个缓存值记录当天是否有请求网络API接口,没有请求就从网络中返回数据,然后保存到数据库中,第二次请求这个缓存值就有效果了,那么就从本地数据库中返回数据。..., CODE, listOf(NewslistItem(App.db.newsItemDao().getAll(), null, null))) 一个是保存到数据库,一个是数据库中获取数据,这里是相当于构建了的...,那么再运行一次看看: 数据库中获取了数据

2.7K31

【面试黑洞】Android 的键值对存储有没有最优解?

正文 这是我在网上找到的一份 Android 键值对存储方案的性能测试对比(数越小越好): 可以看出,DataStore 的性能比 MMKV 差了一大截。...而键值对的存储方案,最传统也最广为人知的就是 Android 自带的 SharedPreferences。它里面的 -Preferences,就是偏好设置的意思,名字也能看出它最初的定位。...DataStore 比人家晚两年发布,可是性能却比人家差一大截?甚至,测试数据来看,它连要被它替代掉的 SharedPreferences 都比不过。这么弱?那它搞个毛啊!...(text) // 显示之前,先保存到磁盘 bubble.setText(text) 那么你想一下,这个「保存到磁盘」的行为,我应该做成同步的还是异步的?...但这就和 MMKV 的定位不符了:因为这种「同步」本质上就是一次存到磁盘的写入,并且是同步的写入;而 MMKV 是要高频写入的,如果在高频写入内存的同时,还要实时地把数据内存同步到磁盘,就会一下子把写入速度内存级别下降到磁盘级别

1.1K20

Android Jetpack组件 DataStore的使用和简单封装

正文   DataStore是Jetpack中的一个组件,用于做数据持久化,DataStore以异步、一致的事务方式存储数据,克服了SharedPreferences的一些缺点,DataStore基于Kotlin...二、数据存取   首先我们改一下activity_main.xml布局,里面的代码如下: <LinearLayout xmlns:android="http://schemas.android.com/...android:layout_height="wrap_content" android:text="存数据" /> <Button android:id="@...五、对象存取   其实我们刚才使用的是Preferences DataStore,是对数据进行操作,下面要操作的是Proto DataStore,官网上的说法是Proto DataStore数据作为自定义数据类型的实例进行存储...) 这里就用到了那个序列化器,然后会保存到study.pb下,下面来看存和取的方法,代码如下: //proto 存数据 binding.btnProtoPut.setOnClickListener

3.2K20

使用Kubernetes身份在微服务之间进行身份验证

因此,与其直接向datastore发出请求,不如直接通过身份验证服务,检索令牌使用该令牌对您对datastore的请求进行身份验证。...2.API向datastore进行身份验证的唯一方法是,如果它具有有效的令牌。API使用其凭据授权服务器请求令牌。 ? 1.API向datastore发出请求,附加令牌作为有效身份的证明。 ?...3.第二个应用程序请求中检索令牌,使用Keycloak对其进行验证。4.如果令牌有效,它将回复该请求。...datastore服务执行两项关键操作: 1.它X-Client-Id传入的请求中检索标头的值。2.然后,它调用Kubernetes令牌查看API来检查令牌是否有效。...因此,您将看到API组件如何读取ServiceAccount令牌并将其传递到datastore作为身份验证的一种方式。 datastore服务检索令牌使用Kubernetes API对其进行检查。

7.7K30

全网最细解析DataStore,SharedPreferences终结者

QueuedWork类在Android8.0以上和8.0以下的版本实现方式有区别: 8.0之前QueuedWork.java: public class QueuedWork {     private...这里需要注意一点:不能将上面的初始化代码写到Activity里面去,否则重复进入Actvity使用Preferences DataStore时,会尝试去创建一个同名的.preferences_pb文件...文件读取数据时,如果出现错误,系统会抛出IOExceptions。...id "com.google.protobuf" version "0.8.17" } android {     //.............其他配置..................     ...migrate里指定了下面两个参数: SharedPreferencesView:可以用于 SharedPreferences 中检索数据 BookProto.Book:当前数据 同样地在创建时如果传入了

1.6K40

Android开发笔记(一百七十八)更安全的数据仓库DataStore

为此Android官方推出了数据仓库DataStore,并将其作为Jetpack库的基础组件。...datastore-preferences-rxjava2:1.0.0" 数据仓库的用法类似于共享参数,首先要指定仓库名称,创建仓库实例,示例代码如下: private RxDataStore<Preferences...往数据仓库保存数据的代码示例如下: // 数据仓库中读取信息 private void readDatastore() { DatastoreUtil datastore = DatastoreUtil.getInstance...("update_time")); tv_data.setText(desc); } 数据仓库获取数据的代码示例如下: DatastoreUtil datastore = DatastoreUtil.getInstance...然后打开记录获取界面,看到记录获取结果如下图所示,说明成功实现了数据仓库的读写功能。 点此查看Android开发笔记的完整目录

87210

NLP 论文领读|无参数机器翻译遇上对比学习:效率和性能我全都要!

写在前面检索式增强在各种自然语言处理任务中被广泛应用,其主要目的是基于一定的检索范式来利用现存数据,影响模型最终得到的结果,从而降低模型参数的负担。...其包含两个主要的步骤:首先是创建数据库(Datastore),也就是使用基础模型来进行正向传播,利用在解码时候映射到词表前的特征和对应的目标词作为键值对存储在 Datastore 中,对应图 1 中 Datastore...正式翻译时,在每个具体的解码步骤中,使用相同位置的特征, Datastore 中进行向量检索,使用检索的结果以及对应的距离(Distances),结合温度超参数来计算得到最终的概率(对应公式 1),将得到的概率作为目标词概率按照一定比例融合到原始模型输出词表的概率分布上...时间延迟 因为 KNN 的向量检索是在每个解码步骤中进行的,随着 Datastore 的增大,向量检索的延迟会严重影响最终整体翻译的速度。...图 3 中也可以看到,不同的簇之间可能是会存在重叠的部分,因此就需要下面的第二个步骤。2. 对比训练。 不同的语义单元应该是互相不重合,因为重合会导致在检索时候的不准确问题,从而影响最终的翻译性能。

71820

DataStore —— SharedPreferences 的替代者 ?

以上吐槽来自 AndroidX 添加的新成员 DataStore 的类注释,地址如下: https://cs.android.com/androidx/platform/frameworks/support...DataStore 提供了一种存储轻量数据的安全稳定的方案,例如配置文件,应用状态等。它不支持局部更新:如果任何一个成员变量被修改了,整个对象都将被序列化持久化到磁盘。...名字就可以看出来,不支持多进程。看一下其中几个关键方法。...具体用法详见官方写的单元测试 SingleProcessDataStoreTest,地址如下: https://cs.android.com/androidx/platform/frameworks/support...---- 今天的文章就到这里了,我是一直坚持原创的秉心说,更多最新 Android 动态,扫码关注我的公众号吧 !

56520

DataNucleus JDO基础入门

DataNucleus JDO 提供了此 JDO 标准的实现,允许您(用户)将面向对象的数据持久保存到该标准的 RDBMS 数据存储中,而且还保存到范围广泛的其他数据存储中。... JDO 映射指南开始 JDO 的使用需要 PersistenceManagerFactory 来访问数据存储。...datanucleus-{datastore}.jar({datastore} 是 ‘rdbms’、’mongodb’、’cassandra’ 等):这为 JAR 所针对的特定类型的数据存储提供了持久性...最后一步很重要,整理与数据存储的任何连接,关闭 PersistenceManager 如果你想从持久存储中检索一个对象,像这样的东西将提供你所需要的。...这使用“查询”,检索价格低于 150.00 的所有 Product 对象,按升序对它们进行排序。

1.2K20

Go之Viper

远程配置系统(etcd或Consul)读取监控配置变化 从命令行参数读取配置 buffer读取配置 显式配置值 为什么选择viper 在构建现代应用程序时,你无需担心配置文件格式;你想要专注于构建出色的软件...而不是pflag检索值 在 Viper 中使用 pflag 并不阻碍其他包中使用标准库中的 flag 包。...这些值的优先级高于默认值,但是会被磁盘、flag或环境变量检索到的配置值覆盖。...Viper使用cryptK/V存储中检索配置,这意味着如果你有正确的gpg密匙,你可以将配置值加密存储自动解密。加密是可选的。...每个人都可以从不同的配置文件,key value存储区等读取数据。每个都可以从不同的配置文件、键值存储等中读取。

6.3K101

go语言中的配置管理神器 --viper 一

它支持:默认配置 JSON, TOML, YAML, HCL 和 Java 属性配置文件读取数据实时查看和重新读取配置文件(可选)环境变量中读取远程配置系统(etcd 或 Consul)读取数据监听变化从命令行参数读取...而不是pflag检索值在 Viper 中使用 pflag 并不阻碍其他包中使用标准库中的 flag 包。...viper 检索值...}Viper获取值在Viper中,有几种方法可以根据值的类型获取值。...每个人都可以从不同的配置文件,key value存储区等读取数据。每个都可以从不同的配置文件、键值存储等中读取。viper包支持的所有功能都被镜像为viper实例的方法。...配置文件发生变化后要同步到全局变量Confviper.OnConfigChange(func(in fsnotify.Event) {fmt.Println("夭寿啦~配置文件被人修改啦...")if

15910

Android 逆向】使用 DB Browser 查看修改 SQLite 数据库 ( Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )

文章目录 一、 Android 应用数据目录中拷贝 SQlite3 数据库文件 二、使用 DB Browser 工具打开 SQlite3 数据库文件 一、 Android 应用数据目录中拷贝 SQlite3...数据库文件 ---- 进入 /data/data/com.qidian.QDReader/databases 目录 , 拷贝 2 个 sqlite3 数据库文件到 sd 卡中 ; cp download.db.../sdcard/Pictures/ cp ywloginmta.db /sdcard/Pictures/ 将 SQlite 数据库文件拷贝到 Windows 文件系统中 , 二、使用 DB Browser...工具打开 SQlite3 数据库文件 ---- 将数据块文件拖动到 DB Browser 工具中 ; 数据库打开成功 ; 右键点击表中的第一个选项 , 选择浏览表 ; 可以查看表中的字段 ;

1.6K10

SAP ETL开发规范「建议收藏」

这些可以手动输入,数据库导入,或任何支持CWM(Common Warehouse Metamodel)的工具导入。...其次,工作流和数据流可以在多个作业中重复使用,并且通过声明本地变量和参数来中断对作业级别全局变量的依赖,这些全局变量已被配置分配了适当的值。...,尽可能多地在数据库上执行操作。...缓存的比较表 – 该选项的速度与排序的输入选项类似,但这意味着整个比较表将缓存到内存中。 使用“排序输入选项”的关键是确保传入的数据集已排序。...更好的方法是使用Query对象中的Where子句数据库中过滤需要的数据集,然后使用Case变换来拆分数据集并将数据路由到正确的路径。

2K10

Android MVVM框架搭建(三)MMKV + Room + RxJava2

Android MVVM框架搭建(三)MMKV + Room + RxJava2 前言 正文 一、添加依赖 二、MMKV 1. 初始化 2. 数据存取 3. 使用 三、Room 1....使用 五、源码 前言   在上一篇文章中,我讲述了怎么在MVVM框架中搭建网络访问框架,通过一个必应的每日壁纸做了一次请求接口的访问演示,这篇文章就需要来讲述Android端的本地数据库的使用和在MVVM...正文   本文说的是数据库,为什么要讲这个呢,因为在实际开发中,有一些数据并不需要实时更新,我们只需要在第一次打开应用的时候获取到,然后保存到手机本地数据库中即可,需要的时候数据库中获取。...二、MMKV   在Android系统中使用了多年的SharedPreferences ,终于被Google给放弃了,在JetPack的新组件中新增了一个DataStore,其实在DataStore出现之前已经有一些第三方的本地缓存处理库了...然后在db包下新建一个bean包,bean包下新建一个Image类,我们可以分析一下需要存到数据库中的值,是否所有数据都要存入,不要做没必要的事情,那是给自己找事。

1.1K31

Chatgpt-Retrieval-Plugin—GPT AI插件 真正联网的人工智能

检索插件 这是一个用于 ChatGPT 的插件,可以实现对个人或组织文件的语义搜索和检索。它允许用户通过自然语言提问或表达需求,数据源(如文件、笔记或电子邮件)中获取最相关的文档片段。...作为一个开源的自托管解决方案,开发人员可以部署自己的检索插件,并在 ChatGPT 中注册。检索插件支持多个矢量数据库提供商,开发人员可以列表中选择他们首选的提供商。...记忆功能 检索插件的一个显著功能是其能够为 ChatGPT 提供记忆。通过利用插件的 upsert 端点,ChatGPT 可以将对话中的片段保存到矢量数据库中以供以后参考(仅在用户提示时才这样做)。...但是,如果开发人员还希望 ChatGPT 具有记住后续操作的功能,可以使用 /upsert 接口将对话中的片段保存到向量数据库中。...•配置 Webhook payload,以包含所需的数据字段,根据您的检索插件的 API 要求进行格式化。•测试 Webhook,确保它能正确工作,并将数据按预期发送到您的检索插件。

72430
领券