数据中心类DataCenter(二)
数据中心类DataCenter(二)
前言
在上一集我们对数据中心类DataCenter做了以下内容,我们对他进行设置单例模式,我们讨论并写入了一些我们数据中心类需要管理的数据,重点介绍了我们验证码id的重要性,在最后我们还简单说明了我们为什么要使用数据中心类。
那么这一集我们就来简单写一下我们数据中心类的构造函数和析构函数,并讨论一下我们的后续数据需要持久化存储的相关事宜。
析构函数
我们可以直接复制代码粘贴即可。
DataCenter::~DataCenter()
{
//释放所有的成员
//针对nullptr的delete是合法行为,不必担心
delete myself;
delete friendList;
delete chatSessionList;
delete memberList;
delete applyList;
delete recentMessage;
delete unreadMessageCount;
delete searchUserResult;
delete searchMessageResult;
}
这里我们是不需要去判断我们的成员是否为nullptr,在C++中,我们去delete一个nullptr的变量的行为是合法行为,我们并不需要去担心,当然可以去判断!
构造函数
DataCenter::DataCenter()
{
/*
* 这里hash仅仅只是new出实例,QList类型都暂时不实例化
* 主要是为了nullptr表示非法状态
* 对于hash来说,不关心整个是否为nullptr,而是某个key的value是否存在
* 通过key是否存在也能表示该值是否有效
*/
memberList = new QHash<QString, QList<UserInfo>>();
recentMessage = new QHash<QString, QList<Message>>();
unreadMessageCount = new QHash<QString, int>();
}
我们这里暂时不实例化我们的QList,nullptr是表示我们的非法状态。hash不关心是否为nullptr,关心的是里面的key和value。
数据持久化
说是数据持久化,其实也就是将一些属性写入文件当中,需要的时候就拿出来读写。
我们需要持久化的数据为loginSessionId和unreadMessageCount。
存储我们的登录会话id,主要目的就是我们后续实现的功能中,可能要去实现在客户端重启后,能够不必重新登录。
存储未读消息,一旦某个会话收到了消息,此处就会有未读消息的数据。当重启客户端的时候,我们的未读消息还依然存在。
那么我们就要讨论我们的这个文件要放在哪里?
那么作为我们windows的程序,我们就可以放在我们windows的系统目录当中AppData里面!
AppData
我们简单介绍一下AppData。
AppData是Windows系统中的一个隐藏文件夹,用于存储应用程序的配置、缓存和用户数据。它通常包含三个子文件夹:
- Local:存放应用程序的本地数据。
- Roaming:存放跨设备同步的数据。
- LocalLow:存放低权限访问的数据。
这个文件夹通常位于C:\Users\[用户名]\AppData
路径下。
那么我们数据应该像什么样的形式进行存储?
我们选用JSON的模式进行存储!
JSON
我们也简单介绍一下JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但JSON是独立于语言的,这意味着它可以被多种编程语言读取和写入。
JSON的主要特点包括:
- 文本格式:JSON是一种纯文本格式,可以存储和表示结构化数据。
- 键值对:数据以键值对的形式存储,类似于字典或对象。
- 数据类型:支持多种数据类型,包括字符串、数字、数组、布尔值、null以及嵌套的对象。
- 易于解析:大多数编程语言都提供了解析和生成JSON的库。
- 广泛使用:在Web开发中广泛用于前后端数据交换,APIs和配置文件等。
那么我们已经规定好了数据持久化的相关事宜,那么下一集的内容就是把我们的数据持久化的内容给全部完成。那么我们下一集再见。
原文地址:https://blog.csdn.net/zhuzhu_YT/article/details/143693996
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!