简介

本文介绍了QT框架中可用于缓存的几个数据类型各自的特点;通过本文读者可以了解到为什么有QHash和QMap,还设计了QCache和QContiguousCache?

目录

QHash和QMap有哪些不足?

QCache有什么优点?

QContiguousCache有什么优点?

正文

QHash和QMap有哪些不足?

对于key-value类型的数据在内存中的表达,QT框架中提供了QHash和QMap,QMultiHash、QMultiMap,C++1X中也有类似的数据类型。在一些对缓存没有什么复杂需求的情况下,这些类型往往可以用来直接当作缓存类型来使用。如果对缓存有略微复杂一点的需求,直接使用QHash和QMap就搞不定了。

QT框架之QHash

QT框架之QMap

QCache有什么优点?

QCache在构造的时候指定了缓存中允许的最大成本,也就是如下构造函数中的参数maxCost。

QT框架之QCache
在向QCache中插入新的数据时,也可以指定对应的成本;如果总成本大于允许的最大成本,就会自动将缓存中最古老的一些数据删除掉,使得总成本仍然小于或者等于允许的最大成本。因此,如果考虑到缓存数据的成本,那么使用QCache就会比QHash和QMap方便很多。

QContiguousCache有什么优点?

QContiguousCache这种类型用于表示一个索引序号连续的缓存,也就是无论怎么插入和删除,操作之后缓存中剩下的元素的索引序号必须保持连续,否则就会操作失败。这个条件使得QContiguousCache的删除操作显得很特别,比如只能删除最前面和最后面的那个元素,而无法删除中间的元素。插入时则可以在任意位置插入新元素,但是插入时指定的元素索引序号必须使得插入之后缓存中所有元素的索引序号依然是连续的,否则插入失败。

另外,如果QContiguousCache已经满了,那么当在一端插入一个数据时,在对应的另一端就会自动删除一个数据。

QT框架之QContiguousCache

QT框架之QContiguousCache

QT框架之QContiguousCache

QT框架之QContiguousCache

总结

本文介绍了QT框架中QHash和QMap,QCache和QContiguousCache这些可用于缓存的数据类型的各自的特点。

如果您认为这篇文章对您有所帮助,请您一定立即点赞+喜欢+收藏,本文作者将能从您的点赞+喜欢+收藏中获取到创作新的好文章的动力。如果您认为作者写的文章还有一些参考价值,您也可以关注这篇文章的作者。

QT框架中的缓存:为什么有QHash和QMap,还设计了QCache和QContiguousCache?的更多相关文章

  1. MVC 框架中的缓存

    在程序中加入缓存的目的很多是为了提高程序的性能,提高数据的查找效率,在MVC框架中也引入了非常多的缓存,比如Controller的匹配查找,Controller,ControllerDescripto ...

  2. Qt5的插件机制(1)--Qt 框架中的插件载入机制概述

    概述 Qt的源代码中通过 Q<pluginType>Factory.Q<pluginType>Plugin 和 Q<pluginType> 这三个类实现了Qt的插件 ...

  3. 漫谈 GOF 设计模式在 Spring 框架中的实现

    原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 漫谈 GOF 设计模式在 Spring ...

  4. 设计模式在 Spring 框架中的良好应用

    在开始正文之前,请你先思考几个问题: 你项目中有使用哪些 GOF 设计模式 说一说 GOF 23 种设计模式的设计理念 说说 Spring 框架中如何实现设计模式 假设我是面试官问起了你这些面试题,你 ...

  5. Castle框架中的IOC和AOP机制

    反转控制(IOC)和面向切面编程(AOP)技术作为当前比较流行的技术,其优势已受到广泛关注,但是这两项新技术在实际项目上的应用研究却很落后,而且在.NET平台下实现这两项技术没有形成可以广泛套用的框架 ...

  6. 【阿里云产品公测】在Laravel4框架中使用阿里云ACE的缓存服务

    作者:阿里云用户dvbhack 受论坛排版和格式限制,这篇帖子的格式不是很利于阅读,如果你看帖子觉得不那么舒服,可以看我发表在自己博客上的原文:http://www.ofcss.com/2014/04 ...

  7. 【阿里云产品公测】在Laravel4框架中使用阿里云OCS缓存

    作者:阿里云用户 supechina Laravel 是我最近用得非常多而且越用就越喜欢的一款PHP框架,由于没有向下兼容的历史包袱,完全面向对象的风格,借助 Facades 优雅的 IoC Cont ...

  8. C#开发微信门户及应用(48) - 在微信框架中整合CacheManager 缓存框架

    在我们的很多框架或者项目应用中,缓存在一定程度上可以提高程序的响应速度,以及减轻服务器的承载压力,因此在一些地方我们都考虑引入缓存模块,这篇随笔介绍使用开源缓存框架CacheManager来实现数据的 ...

  9. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)

    一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...

  10. JavaWeb_(Hibernate框架)Hibernate中一级缓存

    Hibernate中一级缓存 Hibernate 中的缓存分为一级缓存和二级缓存,这两个级别的缓存都位于持久化层,并且存储的都是数据库数据的备份.其中一级缓存是 Hibernate 的内置缓存,在前面 ...

随机推荐

  1. Python 插件式程序设计与开发实践总结

    插件式程序设计与开发实践总结 By:授客 QQ:1033553122 开发环境 win 10 python 3.6.5 代码结构

  2. ngnix简介和基础

    一.Nginx简介 Nginx 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器 是一个模块化软件 [1].安装nginx 使用源码包编译安装 cd /opt ...

  3. Python用shp文件裁剪多个遥感影像的方法

      本文介绍基于Python中ArcPy模块,基于矢量数据范围,对大量栅格遥感影像加以批量裁剪掩膜的方法.   首先,话不多说,本文所需要的代码如下所示. # -*- coding: utf-8 -* ...

  4. Java代码实现七夕魔方照片墙

    创建一个七夕魔方照片墙是一个相对复杂的任务,涉及到前端展示和后端数据处理.在这里,我会提供一个简化的Java后端示例,用于生成一个模拟的"照片墙"数据模型,并给出一个基本的前端HT ...

  5. 我用Awesome-Graphs看论文:解读GraphBolt

    GraphBolt论文:<GraphBolt: Dependency-Driven Synchronous Processing of Streaming Graphs> 前面通过文章&l ...

  6. 【BatchProgram】 读取文本批量创建目录

    NameList.txt文件内容 FILE-NAME-A FILE-NAME-B FILE-NAME-C ... 根据上面文件批量创建对应的目录,且附加序号 CMD代码: @ECHO OFF SETL ...

  7. 【Docker】05 容器操作

    [查看容器 Check Container] 查看所有容器: docker ps 查看所有正在运行的,或者运行过的容器: docker ps -a 查看单个指定的容器完整信息: docker insp ...

  8. [rCore学习笔记 021]多道程序与分时任务

    写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 导读 ...

  9. 全球首颗车规5纳米 高性能智驾芯片蔚来神玑NX9031 流片成功

    地址: https://weibo.com/tv/show/1034:5060774108790867 https://www.bilibili.com/video/BV1JG411r7LR/

  10. python报错:pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"

    运行python代码报错: 问题发现: 问题其实十分的狗血,这个代码是在服务器上运行的,运行之前其实并没有看具体的代码情况,git clone 下载下来就直接运行了,原来这个代码需要进行图片绘制,说直 ...