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

用时间置换空间,聊聊稀疏数组的那些事儿

  背景
  数据结构是指带有结构特性的数据元素的集合。在数据结构中,数据之间通过一定的组织结构关联在一起,便于计算机存储和使用。从大类划分,数据结构可以分为线性结构和非线性结构,适用于不同的应用场景。线性结构:
  线性结构作为最常用的数据结构,它的特点是单个数据之间存在一对一的线性关系。包含两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。
  (线性结构)
  链式存储的线性表被叫做链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
  线性结构常见的有:数组、队列、链表和栈。非线性结构:
  除了线性结构,其他的数据结构均为非线性结构,特点是单个数据之间存在多个对应关系,常见的有:二维数组,多维数组,广义表,树结构,图结构
  (常见的非线性结构)稀疏数组(SparseArray)
  在各种各样的数据结构中,最基础、最常用的是数组。数组可以非常直观的表示数据在一维或多维空间中的关系,与现实中的情形更接近,所以被大多数程序员当做首选的数据结构,然而,在部分应用场景中使用数组存储数据时会出现各种各样的情况,这是就需要在数组的基础上,对数据结构进行优化,衍生出稀疏数组等新的数据结构。
  以五子棋局为例,我们应该如何存储棋盘上的落子情况呢?
  (使用二位数组存储五子棋盘)
  如果使用一个二维数组对棋盘落子进行存储,当我们拿到一个棋盘类数据内容时,大部分内容都是没有意义的0,有意义数据并不相邻,很多空间被浪费。对于五子棋来说,这个问题可能不是很明显,但如果棋盘足够大,被浪费的空间就会影响到软件的功能实现,此时引入稀疏数组(SparseArray)就具有了重要的意义。
  稀疏数组将数组中的内容进行压缩,存储在一个更为精练的二维数组中,稀疏数组的本质其实就是用时间置换空间。
  具体的处理的方法是:该数组之中一共有几行几列进行记录把相同元素内容忽略后,只记录具有不同内容单元的位置稀疏数组的实现
  节约存储空间显然是稀疏数组的一个优势,但是读取性能是否可以会比二维数组差很多?
  为了讲清这个问题,我们可以先看一下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的数据字典。在松散布局的表格数据中,稀疏矩阵只会对非空数据进行存储,而不需要对空数据开辟额外的内存空间。
  使用这种特殊的存储策略,除了可以降低内存占用,还使得数据片段化变得容易,可以随时框取整个数据层中的一片数据,进行序列化或反序列化,而无需处理同一数据结构内的其他数据。
  借用这样的特性,我们可以随时替换或恢复整个存储结构中的任何一个级别的节点,以改变引用的方式高效解决了表格数据回滚和恢复,而这一点也是电子表格支持在线协同的技术基础。
  总结
  本节为大家介绍了稀疏数组的基础知识,技术实现和应用场景,以前端电子表格为例,展示了这个技术在节约内存空间,实现回滚恢复等领域的优势。
  在后续我们还会继续为大家介绍更多严肃和有趣的内容
  觉得不错点个赞再走吧

人族三祖三皇五帝人族三祖是人族发展初期最重要的三个人,是他们带着原始的人族走出原始的生活。有两种说法:伏羲燧人神农燧人有巢缁衣(现代网络小说一般采用第二种说法)燧人氏,三祖之一,是……山西加油!特大暴雨侵袭山西,在救助过程中发生了很多暖心的事情从10月2日晚至今,山西连续遭遇特大暴雨、强降雨侵袭,短短一周的时间,下了一个月的雨量。导致全省大部分地区出现内涝、地质灾害、洪水等灾情,更是出现了四十年一遇的洪峰,山体……万达轻资产转型,有远见!王健林为何总是能抓住机遇?市场竞争无时无刻不在,任何人都不能放松警惕,那些原本的优势,只要稍有懈怠就会被削弱。如今我国的市场经济体制改革不断深入,开放程度也进一步扩大,因此各地都高招频出,采取措施招商引……容知日新国内工业设备运行监控前五风电周期向下其他应用崛起独立客观第三方研究,为您筛选优质上市公司证券代码:688768综合评级:A一、主营业务评分:751、业务分析:公司是一家工业设备智能运维整体解决方案提供商,简……商标热点丨小米申请37件小米有品华为注册华为山海等1、华为技术有限公司近日提交了多件华为山海、华为北冥、华为小菊灯、华为天池、华为小艺以及拼音HuaweiShanHai、HuaweiBeiMing等商标,很有华为的风格。……给儿子买了台红米note10pro去年618赶上家里正在装修,网上买了不少家具电器,今年正好孩子要上初中,想着也该给他买台手机了,借着618的东风1498买了台红米n10pro,天玑1100速度很快适合没耐心的……银河破裂者上线你想去太空探险吗?在今年9月17日举行的B站高能电玩节上,EXORStudios发行了新作《银河破裂者》的最新预告,同时也再次确定10月14日发售的定档信息。这款备受期待的建造类生存机甲RPG游……比亚迪海豚Vs欧拉好猫,起步价10万元左右的电动车,谁才是王随着比亚迪海豚紧锣密鼓的上市,又将人们的注意力吸引到高配入门级新能源车市场。而同样作为入门级新能源车,以比亚迪海豚为代表的产品已经将价位推进到了十万元以上。不得不说,在这一价格……关于房产税的个人预测大家好,我是老李。今天和大家聊聊房产税。接下来的文字都基于老李个人的预测,所以仅供参考,大家可以提出自己不同的意见,互相讨论,至于是否预测成功,就交给时间和读者们见……真快乐APP千万奖金挑战赛火爆全网热血battle一触即发万事皆可赛,生活有多少种可能,就有多少种赛道。从10月21日开始,全新改版试运营的真快乐APP发起千万奖金挑战赛,各种风趣脑洞大的赛事集体上线,引数万人涌进赛事间挑战他人……巴比伦健康与微信在中国的合作终止,承认人工智能短期内让人失望据彭博加拿大2月19日报道,巴比伦医疗集团首席执行官阿里帕尔萨表示,该公司在中国曾与腾讯控股有限公司旗下的微信建立了合作关系,但由于无法提出一种商业上可行的模式,该公司已经撤出……名企头条冒充老干妈员工行骗嫌疑人被批捕字节跳动回应交易禁令【余承东:消费者业务上半年收入2558亿元手机发货量1。05亿台】华为消费者业务CEO余承东透露,华为消费者业务上半年销售收入2558亿元,上半年华为手机全球发货量1。05亿台……
AKKO3108一致性分析,看机械键盘对大键力度的控制在不久前我们的一篇名为《8款入门级樱桃红轴机械键盘测试排名》的文章中,AKKO3108意外的成为大键一致性测试的末名得主。有些人觉得名副其实,而有人则不太相信,但不管如何,键盘……华东政法学生因1元流量费起诉小米广告获赔华东政法学生因1元流量费起诉小米获赔。原告范某要求小米公司停止发送广告。赔偿因触碰广告自动下载App而损失的数据流量费用1元。华东政法学生厉害啊,还在读书就能……呃,愿望落空了平时不让小灰自己出去溜达,除了怕它弄得脏兮兮回来,还带上跳蚤之类的,也有怕它一下子浪起来,被哪个玩意搞大肚子。我一直以为小灰和小二是天生一对可惜,小二不幸走了。遗憾的不要……杨天真上奇葩说当辩手,比起辩论她的职场干货更吸引我朋友,最近有看奇葩说嘛?作为生活调节可看可不看,毕竟大家都有自己的放松方式。但是作为职场人,错过这期,你就错过了和老板正面对杠的机会(bushi,是错过了和老板沟通……扫地茅主动维权索赔2000万,奈何专利反被宣告无效2020年7月28日,深圳市中级人民法院受理了科沃斯机器人股份有限公司起诉四家公司涉嫌制造、销售和许诺销售的产品侵犯其实用新型专利的案件,案号(2020)粤03民初3599号,……全新换代奔驰C级正式上市,内外饰全新升级全新一代奔驰C级上市,全新换代奔驰C级基于MRA平台打造,更符合国民喜欢空间的奔驰C级来了。奔驰C级外观方面,全新一代奔驰C级延续家族式设计,提供两种设计风格,分别……硬核推荐七键降临,6。18机械键盘可要买稳了最近两年,每个6。18我们都会关注一些型号的机械键盘的热度,它们多数是我们测试发现的不错键盘,但也不是全都卖得火。俗话说酒香不怕巷子深,其实不全对,因为现在不是巷子深浅的问题,……17万多起步,续航不到500km,这台车真的是靠信仰吗?随着新能源市场的不断发展,各大车企纷纷开始进军纯电领域,竞争非常激烈。其中不仅有特斯拉等造车新势力,很多合资企业也都开始崭露头角,VE1就是其中广汽本田基于缤智车型平台打造的一……LightRoom教程Lr预设如何导入xmp文件?安装lr预设总会遇见。xmp文件,对于lr新手来说可能有所疑惑,那么xmp预设怎么导入lr呢?MacW小编为大家带来lr预设xmp文件导入教程,感兴趣的朋友快跟着小编一起来看看……HiFi入门耳机体验之兴戈EM2R最近工作上面的事情比较多,视频也一直没有更新,非常抱歉!有网友让我帮忙听一下新EM2R怎么样,听了将近一周,顺便写一篇我的感受。其实我对兴戈的印象,始于铜雀,大概在……一款支持iPhone磁吸充电的无线充电宝南卡Power3在如今智能手机盛行的时代,手机除了性能、拍照等功能是我们大家主要关注的问题以外,手机的续航能力也是备受关注。毕竟性能,拍照等功能的使用都要建立在手机有电的情况下,假如说外出的时……苏伊士运河拥堵对于全球经济发展影响有多大?由于前几天一艘长大概400米的,悬挂着巴拿马国旗的重型集装箱货轮,因为搁浅而在当地时间23日堵在了苏伊士运河航道。苏伊士运河堵塞营救为什么这么难苏伊士运河作为全世界最重要……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网