游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

月光宝盒get用时间置换空间,聊聊稀疏数组的那些事儿

  背景
  数据结构是指带有结构特性的数据元素的集合。在数据结构中,数据之间通过一定的组织结构关联在一起,便于计算机存储和使用。从大类划分,数据结构可以分为线性结构和非线性结构,适用于不同的应用场景。
  线性结构:
  线性结构作为最常用的数据结构,它的特点是单个数据之间存在一对一的线性关系。包含两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。
  (线性结构)
  链式存储的线性表被叫做链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
  线性结构常见的有:数组、队列、链表和栈。
  非线性结构:
  除了线性结构,其他的数据结构均为非线性结构,特点是单个数据之间存在多个对应关系,常见的有:二维数组,多维数组,广义表,树结构,图结构
  (常见的非线性结构)稀疏数组(SparseArray)
  在各种各样的数据结构中,最基础、最常用的是数组。数组可以非常直观的表示数据在一维或多维空间中的关系,与现实中的情形更接近,所以被大多数程序员当做首选的数据结构,然而,在部分应用场景中使用数组存储数据时会出现各种各样的情况,这是就需要在数组的基础上,对数据结构进行优化,衍生出稀疏数组等新的数据结构。
  以五子棋局为例,我们应该如何存储棋盘上的落子情况呢?
  (使用二位数组存储五子棋盘)
  如果使用一个二维数组对棋盘落子进行存储,当我们拿到一个棋盘类数据内容时,大部分内容都是没有意义的0,有意义数据并不相邻,很多空间被浪费。对于五子棋来说,这个问题可能不是很明显,但如果棋盘足够大,被浪费的空间就会影响到软件的功能实现,此时引入稀疏数组(SparseArray)就具有了重要的意义。
  稀疏数组将数组中的内容进行压缩,存储在一个更为精练的二维数组中,稀疏数组的本质其实就是用时间置换空间。
  具体的处理的方法是:
  1。该数组之中一共有几行几列进行记录
  2。把相同元素内容忽略后,只记录具有不同内容单元的位置稀疏数组的实现
  节约存储空间显然是稀疏数组的一个优势,但是读取性能是否可以会比二维数组差很多?
  为了讲清这个问题,我们可以先看一下Android中SparseArray的实现逻辑。SparseArray内部是通过两个数组来进行数据存储的。一个存储key,另外一个存储value。我们从源代码中能够看到key和value各自是用数组表示:privateint〔〕mKeys;privateObject〔〕mValues;
  同时,SparseArray在存储和读取数据时候,使用的是二分查找法:publicvoidput(intkey,Evalue){intiContainerHelpers。binarySearch(mKeys,mSize,key);。。。}publicEget(intkey,EvalueIfKeyNotFound){intiContainerHelpers。binarySearch(mKeys,mSize,key);。。。}
  在put添加数据的时候,会使用二分查找法和之前的key比较当前我们添加的元素的key的大小,然后按照从小到大的顺序排列好。所以,SparseArray存储的元素都是按元素的key值从小到大排列好的。而在获取数据的时候,也是使用二分查找法判断元素的位置,这样可以使数据的获取变得更加高效。所以,在key的数据量(可以理解为棋盘上去掉空白后的棋子数量)不大时,稀疏数组读取性能是有保障的。典型应用场景
  做开发的都知道,想让系统变快有个最简单的办法就是加内存。对于程序可以做大量的缓存来加速,即所谓空间换时间。但是在特定环境,程序可使用的内存是有限的。
  在移动设备上,内存是个稀缺资源,例如iPhone7的内存为2G,而最新款的iPhone13也仅为4G。所以,稀疏数组这种时间换空间的技术最早被广泛应用在移动开发领域。
  除了移动端,另一个内存紧缺的运行环境是浏览器。虽然没有明文规定,但在业界的共同认知里,浏览器会对单一线程进行内存限制,例如64位的chrome,每个tab页的内存消耗不允许超过4G。这个限制,在单页面应用还不成熟的十几年前,不会成为问题。因为,那时大家所关注的,还是如何提升后端的处理性能,前端只是一种静态的网页表达方式。
  随着前端工程化的高速发展,各种前端工程脚手架日渐成熟,WebComponent标准被提上日程,企业开始由CS向BS应用转型。这就要求前端开发者,需要面对单页面处理复杂业务数据的挑战。前端程序从最开始设计以及整个开发过程中都需要考虑内存的使用情况,尽可能的降低内存占用,防止网页崩溃。以前端电子表格为例,我们通常需要为用户提供上百万个单元格(100列x1万行),但其中有数据的单元格可能只有几百个。为了减少数据模型占用的内存,我们最终的解决方式是将表格的数据存储方式由常规数组改成稀疏数组,内存占用可以降低到几十分之一,以确保浏览器内存不会被撑爆。
  (稀疏矩阵存储策略)不只是时间换空间
  相较于传统的链式存储或是数组存储,稀疏矩阵存储构建了基于索引Key的数据字典。在松散布局的表格数据中,稀疏矩阵只会对非空数据进行存储,而不需要对空数据开辟额外的内存空间。
  使用这种特殊的存储策略,除了可以降低内存占用,还使得数据片段化变得容易,可以随时框取整个数据层中的一片数据,进行序列化或反序列化,而无需处理同一数据结构内的其他数据。
  借用这样的特性,我们可以随时替换或恢复整个存储结构中的任何一个级别的节点,以改变引用的方式高效解决了表格数据回滚和恢复,而这一点也是电子表格支持在线协同的技术基础。
  总结
  本节为大家介绍了稀疏数组的基础知识,技术实现和应用场景,以前端电子表格为例,展示了这个技术在节约内存空间,实现回滚恢复等领域的优势
  在后续我们还会继续为大家介绍更多严肃和有趣的内容
  觉得不错点个关注再走吧葡萄城微信号:葡萄城社区。

iPadmini6基本确认,果粉买苹果今年的秋季发布会下月就来,除了iPhone13,还有不少小伙伴十分期待新款iPadmini6的到来。那么,iPadmini6到底啥样?现在已经基本确认了!今天,疯师傅……电视剧我的真朋友上海开机真橙cp杨颖angelababy邓伦电视剧《我的真朋友》上海开机真橙cp杨颖angelababy邓伦联手卖房近日,由杨颖angelababy、邓伦、朱一龙、许娣领衔主演,谭凯、李晓峰、李芯逸、张晚意联合主演……雪地娘子军发剧照回馈剧迷邱胜翊变白雪王子宛如画卷星关系2月19日讯近日,由张多福导演、由甲编剧,王笛、王子邱胜翊领衔主演的主旋律抗战剧《雪地娘子军》正在贵州卫视黄金档热播中。伴随着剧情的发展,王子邱胜翊饰演饰演的金家大少爷金……小欢喜学霸林磊儿登场海清黄磊照顾有加星关系8月5日讯现实主义题材电视剧《小欢喜》目前正于东方卫视、浙江卫视双台联播中。该剧既有中生代实力派演员黄磊、海清、陶虹、王砚辉、咏梅、沙溢担纲,又有青春洋溢的新生代刘家祎、……向往的生活番外催泪黄磊孙莉吴彼等暗恋老友齐聚星关系7月15日讯7。12日《向往的生活》播出了第12期和番外篇,《暗恋桃花源》剧组老友齐聚蘑菇屋,黄磊、何炅盛情招待,十分和谐。吴彼逗贫尽显,气氛轻松欢快。暗恋大家庭暖情的相……小欢喜豪华阵容首曝光黄磊海清领队高三天团备战高考星关系11月6日讯柠萌影业出品、伊犁长江联合出品,汪俊执导,鲁引弓原著,徐晓鸥任总制片人的现实主义题材大剧《小欢喜》今日发布首支高考誓师片花,曝光角色全阵容,戏骨搭新人的组合火……钟汉良空降快乐大本营特务J唱跳舞台超惊艳由钟汉良主演的古装家宅励志大剧《锦心似玉》火爆出圈,收官后热度不减,网友不舍徐令宜,纷纷呼唤续集。近日,观众终于等来锦心夫妇在《快乐大本营》合体,钟汉良与谭松韵变身史密斯夫妇,……iPhone13终于来了更强性能小刘海设计,价格竟然与12相距离9月份的到来已经非常接近了,据说苹果公司已经提前开始在录制秋季新品发布会视频,这也意味着iPhone13系列马上就要与大家彻底见面。今年的新iPhone作为去年12系列的改……抢矿大战愈演愈烈,锂钴稀土加速上行,有色金属前景可期随着国内外电动车市场共振向上,新能源汽车相关原材料的需求也明显大涨。5月份,国内外新能源汽车销售数据持续高增,国内5月份新能源汽车的产销分别是21。7万辆和21。7万辆,……暴跌1600元,索尼IMX6868GB128GB无线充电,体最近有网友私信我说,自己的预算比较有限,在网上看到小米10S的销量和口碑都不错,自己的预算只够买红米K40Pro,听说小米10S的体验会比红米K40Pro更加出色,问我该不该加……爱在星空下今日收官贾乃亮陈意涵坚守本心不负热爱当代都市暖情剧《爱在星空下》由贾乃亮、陈意涵领衔主演,陈小纭、傅孟柏、冉旭、梁超、彭博、梁小润、王璟彦等多位实力派演员倾力加盟,将于今日收官。该剧自开播以来,便以娱乐圈真实的幕……爱在星空下上头又下饭贾乃亮陈意涵欢喜冤家搞笑互怼当代都市暖情剧《爱在星空下》于昨日19:30已登陆浙江卫视,并在腾讯视频、爱奇艺、优酷同步播出。从定档到开播,该剧话题热度高居不下。爱在星空下定档、贾乃亮喊话爱在星空下赶紧播、……
家用吸尘器大比拼,小狗电器怎么样随着消费不断升级,国人对于家用吸尘器的需求与日俱增,市场上许多品牌纷纷踏入这一行业,其中比较受欢迎的就包括国产品牌小狗电器,那么小狗电器怎么样呢,今天小编我就整理了市面上几款吸……你有没有想过我们人类到底是归谁管理?归老天爷,老天爷要你生,你就生,老天爷要你的老命,勾你的簿子,要你今天死,不敢明天死,你敢不服气。我说的老天爷就是大自然,我们的口头禅不说要听从天命、顺其自然吗?归根结底……程序员如何快速成长?作为一名从业多年的IT人,我来回答一下这个问题。程序员在初入职场的前三年是成长的高速期,好好利用这三年时间对程序员来说非常关键,因为这三年往往能决定程序员未来的职场发展。……NFT市场火爆如何实现NFT从0到1?2021年链圈的C位属于NFT(NonFungibleToken,非同质化权益证明)。产业区块链赛道发展潜力与机会巨大,但是更诱人的蛋糕是风口中的NFT赛道。一幅画、一个……华为鸿蒙终于登场,2大家电巨头站了出来,4大国产手机选择沉默在遭受了近两年的质疑后,鸿蒙OS终于在6月2日登场,正式面向全体消费者。鸿蒙OS的问世,除了让华为夺回在软件层面的自主权外,还有一个重要意义,那就是从系统底层构建一个自己……泛微移动办公平台已适配华为鸿蒙6月2日晚8点,华为面向全球正式发布鸿蒙HarmonyOS2。0系统,泛微emobile和云OAeteams在鸿蒙HarmonyOS2。0上即时实现正常使用。鸿蒙系统作为……影谱科技AI赛事内容生成方案MoviebookSAiDT多维近日,影谱科技推出AI赛事内容生成方案MoviebookSAiDT,辅助赛事平台构建AI智能影像内容一站式平台,提供动态内容的增强视觉生成与运营,有效降低内容制作成本,提高多类……新款5G手机发布,120W快充5000mAh一亿像素,售价感作为国产四大手机厂商之一的小米,在iPhone13发布当天(北京时间)也发布了一款颇具亮点的安卓旗舰产品,某些配置方面可谓是打破行业记录,我们一起看看吧。小米发布的新款5……预算更多的用户,建议考虑这四款手机,基本一步到位换手机的时候,高端旗舰手机在外观设计、性能、影像等方面都能给用户带来很好的体验,也没有明显的短板,即使预算不够充足,那么一定要在千元机和次旗舰中选择那些性价比更高的产品,不要单……掌阅科技2022年一季度亏损1497。63万元北京商报讯(记者郑蕊)4月29日,掌阅科技发布2022年第一季度报告。报告期内,掌阅科技实现营业收入5。2亿元,同比减少6。06,归属于上市公司股东的净利润为亏损1497。63……我国开发出媲美人脑能效器件可构建神经网络计算系统据报道,中国科学技术大学李晓光教授团队在高性能类脑突触原型器件方面取得了重要进展。在前期研究基础上,该团队基于对铁电畴形态和翻转动力学的设计,在铁电量子隧道结中实现了亚纳秒电脉……全球首款V型双旋翼无人机50分钟续航7公里图传7999元零零科技正式发布了这V型双旋翼无人机VCoptrFalcon(猎鹰),单机售价7999元。可折叠V型双旋翼结构,同样可实现稳定悬停、一键起飞、自主悬停、一键返航。配……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网