当前位置: 首页 > news >正文

胡志明网站建设营销做得好的品牌

胡志明网站建设,营销做得好的品牌,巢湖网站建设,wordpress 全宽轮播API 初始化和实例获取: MMKV.initialize(Context context): 初始化MMKV库。通常在应用程序的入口点调用此方法。 MMKV.defaultMMKV(): 获取默认的MMKV实例。默认实例使用默认的存储路径和加密方式。 MMKV.mmkvWithID(String mmapID): 根据给定的ID获取MMKV实例。…
  • API

  1. 初始化和实例获取:

    • MMKV.initialize(Context context): 初始化MMKV库。通常在应用程序的入口点调用此方法。

    • MMKV.defaultMMKV(): 获取默认的MMKV实例。默认实例使用默认的存储路径和加密方式。

    • MMKV.mmkvWithID(String mmapID): 根据给定的ID获取MMKV实例。可以使用不同的ID创建多个MMKV实例,每个实例都有独立的数据存储。

  2. 存储数据:

    • putBoolean(String key, boolean value): 存储布尔类型的数据。

    • putInt(String key, int value): 存储整数类型的数据。

    • putLong(String key, long value): 存储长整数类型的数据。

    • putFloat(String key, float value): 存储浮点数类型的数据。

    • putDouble(String key, double value): 存储双精度浮点数类型的数据。

    • putString(String key, String value): 存储字符串类型的数据。

    • putBytes(String key, byte[] value): 存储字节数组类型的数据。

    • putParcelable(String key, Parcelable value): 存储实现了Parcelable接口的自定义对象数据。

  3. 读取数据:

    • getBoolean(String key, boolean defaultValue): 读取布尔类型的数据。

    • getInt(String key, int defaultValue): 读取整数类型的数据。

    • getLong(String key, long defaultValue): 读取长整数类型的数据。

    • getFloat(String key, float defaultValue): 读取浮点数类型的数据。

    • getDouble(String key, double defaultValue): 读取双精度浮点数类型的数据。

    • getString(String key, String defaultValue): 读取字符串类型的数据。

    • getBytes(String key): 读取字节数组类型的数据。

    • getParcelable(String key, Class<T> clazz): 读取实现了Parcelable接口的自定义对象数据。

  4. 删除数据:

    • remove(String key): 删除指定键的数据。

    • removeValues(String[] keys): 删除指定键数组的数据。

  5. 清除数据:

    • clear(): 清除所有数据。

  6. 其他操作:

    • contains(String key): 检查是否包含指定键的数据。

    • getAllKeys(): 获取所有键的数组。

    • synchronize(): 同步数据到磁盘。

  7. 高级功能:

    • encode(String key, Object value): 存储任意类型的数据,包括自定义对象。

    • decodeXXX(String key): 读取任意类型的数据,包括自定义对象。

    • setLogLevel(int level): 设置日志级别。

    • setCryptKey(byte[] key): 设置数据加密密钥。

import com.tencent.mmkv.MMKV;public class MMKVExample {public static void main(String[] args) {// 初始化MMKV库MMKV.initialize("/path/to/directory");// 获取默认的MMKV实例MMKV mmkv = MMKV.defaultMMKV();// 存储数据mmkv.putString("name", "John Doe");mmkv.putInt("age", 25);mmkv.putBoolean("isStudent", true);// 读取数据String name = mmkv.decodeString("name");int age = mmkv.decodeInt("age");boolean isStudent = mmkv.decodeBool("isStudent");// 输出读取的数据System.out.println("Name: " + name);System.out.println("Age: " + age);System.out.println("Is Student: " + isStudent);// 删除数据mmkv.remove("age");// 检查数据是否存在boolean containsName = mmkv.containsKey("name");boolean containsAge = mmkv.containsKey("age");System.out.println("Contains name: " + containsName);System.out.println("Contains age: " + containsAge);// 清除所有数据mmkv.clear();}
}
import com.tencent.mmkv.MMKV;public class MMKVExample {public static void main(String[] args) {// 初始化MMKV库MMKV.initialize("/path/to/directory");// 获取默认的MMKV实例MMKV mmkv = MMKV.defaultMMKV();// 检查是否包含指定键的数据boolean containsKey = mmkv.containsKey("name");System.out.println("Contains key: " + containsKey);// 获取所有键的数组String[] allKeys = mmkv.getAllKeys();System.out.println("All keys: ");for (String key : allKeys) {System.out.println(key);}// 同步数据到磁盘mmkv.synchronize();// 存储任意类型的数据,包括自定义对象CustomObject customObject = new CustomObject("John", 25);mmkv.encode("customObject", customObject);// 读取任意类型的数据,包括自定义对象CustomObject decodedObject = mmkv.decodeParcelable("customObject", CustomObject.class);System.out.println("Decoded object: " + decodedObject);// 设置日志级别MMKV.setLogLevel(MMKV.LogLevel.LevelInfo);// 设置数据加密密钥byte[] key = "encryptionKey".getBytes();mmkv.setCryptKey(key);}
// 自定义对象示例static class CustomObject {private String name;private int age;public CustomObject(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "CustomObject{" +"name='" + name + '\'' +", age=" + age +'}';}}
}

存储和读取原理(上文有提及)

  1. 存储原理:

    • MMKV使用mmap(内存映射文件)技术将数据存储在文件中。在初始化MMKV时,它会创建一个特定的文件,并将其映射到进程的地址空间中的一个字节数组。

    • 写入数据时,MMKV会将数据直接写入内存中的字节数组,而不是频繁地写入磁盘文件。这样可以避免磁盘IO的开销,提高了写入性能。

    • MMKV使用了Copy-on-Write(写时复制)技术,即在写入数据时,会先将要修改的数据复制到新的内存区域,然后进行修改。这样可以避免对原始数据的破坏,同时减少了数据复制的开销。

  2. 读取原理:

    • 读取数据时,MMKV会直接从内存中的字节数组中读取数据,而不需要进行磁盘读取操作。这样可以极大地提高读取速度,尤其在频繁读取大量数据的场景下效果显著。

    • 为了快速定位和读取指定键的数据,MMKV使用了索引结构。索引结构可以是哈希表、跳表或B+树等,它们都具有快速查找的特性,可以高效地从内存中的字节数组中定位和获取对应键的数据。

共享数据

两个进程中共享一个计数器

在A进程:

// 初始化 MMKV 实例
MMKV.initialize(context);
MMKV mmkv = MMKV.mmkvWithID("shared_data", MMKV.MULTI_PROCESS_MODE);// 写入初始值
int counterValue = 0;
mmkv.encode("counter", counterValue);// 递增计数器
counterValue = mmkv.decodeInt("counter", 0);
counterValue++;
mmkv.encode("counter", counterValue);

在B进程:

// 初始化 MMKV 实例
MMKV.initialize(context);
MMKV mmkv = MMKV.mmkvWithID("shared_data", MMKV.MULTI_PROCESS_MODE);// 读取计数器值
int counterValue = mmkv.decodeInt("counter", 0);
System.out.println("Counter value in Process B: " + counterValue);

进程 A 和进程 B 都使用相同的进程名 "shared_data" 来初始化 MMKV 实例,并将 MULTI_PROCESS_MODE 模式用于进程共享数据。

在进程 A 中,初始时将计数器的值设置为 0,并将其存储在 MMKV 中。然后,递增计数器的值,并将更新后的值再次存储在 MMKV 中。

在进程 B 中,通过相同的进程名初始化 MMKV 实例,并从 MMKV 中读取计数器的值。由于进程 A 和进程 B 共享相同的 MMKV 实例,进程 B 将能够读取到进程 A 更新后的计数器值。

序列反序列

MMKV 本身并不提供直接的对象序列化功能,但可以使用其他库(如 Gson、Jackson 等)将对象转换为字符串或字节数组进行存储和读取。

下面是一个示例,展示了如何使用 Gson 库将对象序列化为 JSON 字符串,并存储到 MMKV 中,然后再从 MMKV 中读取并反序列化为对象。

// 定义一个自定义对象
public class Person {private String name;private int age;// 省略构造函数、getter 和 setter 方法@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}
}// 序列化对象并存储到 MMKV
Person person = new Person("John", 25);
Gson gson = new Gson();
String json = gson.toJson(person);
mmkv.encode("person", json);// 从 MMKV 中读取并反序列化对象
String savedJson = mmkv.decodeString("person", null);
Person savedPerson = gson.fromJson(savedJson, Person.class);System.out.println("Saved Person: " + savedPerson);

在上述示例中,定义了一个名为 Person 的自定义对象,并使用 Gson 库将其转换为 JSON 字符串。然后使用 mmkv.encode("person", json) 将 JSON 字符串存储到 MMKV 中。

在读取时,使用 mmkv.decodeString("person", null) 从 MMKV 中获取存储的 JSON 字符串。然后使用 Gson 的 fromJson() 方法将 JSON 字符串反序列化为 Person 对象。

http://www.zhongyajixie.com/news/11243.html

相关文章:

  • 班级手机网站墨刀怎样做福州短视频seo平台
  • 购物网站开发的业务需求分析网站制作公司怎么找
  • 菜单宣传网站怎么做厦门关键词排名优化
  • 博客移动端网站模板广州专做优化的科技公司
  • 中文企业网站模板css网站seo什么意思
  • ppt超链接到网站怎么做北京疫情最新消息情况
  • 京东的电子网站建设seo优化网站源码
  • 东莞网站设计知名 乐云践新国际新闻头条最新消息
  • 郑州网站制作推广公司网站关键字排名优化
  • Java怎么做网站密码十大互联网广告公司
  • 做的最好的epub网站超云seo优化
  • 如何申请一个网站 做视频直播传媒公司
  • 专业做pc 手机网站小网站关键词搜什么
  • a站b站武汉seo技术
  • 天津h5模板建站百度商城官网
  • 南通网站制作哪个好seo零基础入门教程
  • 做导购网站 商品微信搜一搜seo优化
  • 做婚恋网站怎么样百度自助建站官网
  • 济南有做五合一网站公司百度最新秒收录方法2021
  • 佛山行业网站设计百度账户安全中心
  • 房山 网站建设合肥网站seo整站优化
  • 河南做网站公司报价百度官方优化指南
  • html网站列表怎么做南京百度seo代理
  • 网站建设要学哪些软件有哪些内容搜索引擎营销与seo优化
  • 网站建设 海口最火的推广软件
  • 网站备案主体撤销百度搜索排行seo
  • 特殊字体宁波seo在线优化哪家好
  • wordpress动漫网站模板舆情信息网
  • 网站开发论文题目审核表aso关键词排名优化是什么
  • 专做正品的护肤品网站如何网站seo