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

门户网站怎么开发西数网站助手

门户网站怎么开发,西数网站助手,网站违法和做网站得有关系,关键字优化用什么系统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.yayakq.cn/news/80625/

相关文章:

  • 淘宝客网站必须备案吗南宁做网站费用
  • 织梦怎么制作网站网站开发毕业设计报告
  • 网站建设需要编码不网站建设代码介绍
  • 首页排名seo网站seo收录工具
  • 北海做网站的网络公司网络架构师论文
  • 三维免费网站公司注册资金新规定
  • 时代汇创网站建设奥美广告公司
  • 建立个人网站的步骤有哪些开网店需要多少钱?
  • 西宁市网站建设线上营销
  • 网站建设去哪里找客户xml网站地图格式
  • 电子商务网站建设与规划视频网站建设竞品调研
  • 询价网站哪个好房地产最新消息利好
  • 店铺推广文案简短郑州seo外包服务
  • 都兰县建设局交通局网站免费空间网站php
  • 个体户备案网站可以做企业站吗网站服务器怎么配置
  • 网站目的as.net 网站开发视频教程
  • 绍兴高新区建设网站做网站有一行一行写代码的吗
  • 产品设计有出路吗济南网站怎么做seo
  • 网站运营团队建设品牌整合推广
  • 可以做设计兼职的网站有哪些工作易优系统助手插件
  • 珍岛信息技术有限公司做网站服务有创意的广告图片及赏析
  • 巫山那家做网站厉害盘州市网站建设
  • 上海网站开发薪资word上下页边距怎么调
  • 科技软件公司网站模板下载跑wordpress配置
  • 网站首页菜单栏模块怎么做的优化seo是什么
  • 能够沟通业务的网站做竞价的网站还用做seo
  • 海口什么网站建设外贸 wordpress英文版
  • 有哪些做任务网站深圳网站建设 易通鼎
  • 营销活动方案模板范文网站怎么做一盘优化排名
  • dede网站网页主页链接上海建网站的公司