存储 订阅
1、存储,把钱或物等积存起来。《清会典事例·户部·库藏》:“户部奏部库空虚,应行存储款项。”《清会典·户部仓场衙门·侍郎职掌》:“每年新漕进仓,仓场酌量旧存各色米多寡匀派分储,将某仓存储某年米色数目,造册先期咨部存案。”鲁迅《书信集·致李小峰》:“《旧时代之死》之作者之家族,现颇窘,几个友人为之集款存储,作孩子读书之用。”2、指积存的钱或物等。沙汀《医生》:“即或偶而想到自己的晚景,想到存储不多,他也能够叹口气就丢开。” 展开全文
1、存储,把钱或物等积存起来。《清会典事例·户部·库藏》:“户部奏部库空虚,应行存储款项。”《清会典·户部仓场衙门·侍郎职掌》:“每年新漕进仓,仓场酌量旧存各色米多寡匀派分储,将某仓存储某年米色数目,造册先期咨部存案。”鲁迅《书信集·致李小峰》:“《旧时代之死》之作者之家族,现颇窘,几个友人为之集款存储,作孩子读书之用。”2、指积存的钱或物等。沙汀《医生》:“即或偶而想到自己的晚景,想到存储不多,他也能够叹口气就丢开。”
信息
常见方式
DAS,NAS和SAN,分布式存储
拼    音
cún chǔ
存储媒介类型
硬盘、磁带、光盘、移动存储设备、分布式存储、企业级存储
含    义
把钱、数据或物等积存起来
中文名
存储
外文名
Storage
存储释义
1、把钱或物等积存起来。《清会典事例·户部·库藏》:“户部奏部库空虚,应行存储款项。”《清会典·户部仓场衙门·侍郎职掌》:“每年新漕进仓,仓场酌量旧存各色米多寡匀派分储,将某仓存储某年米色数目,造册先期咨部存案。”鲁迅《书信集·致李小峰》:“《旧时代之死》之作者之家族,现颇窘,几个友人为之集款存储,作孩子读书之用。”2、指积存的钱或物等。沙汀《医生》:“即或偶而想到自己的晚景,想到存储不多,他也能够叹口气就丢开。” 3、存储就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问,总的来讲可以包含两个方面的含义:一方面它是数据临时或长期驻留的物理媒介;另一方面,它是保证数据完整安全存放的方式或行为。存储就是把这两个方面结合起来,向客户提供一套数据存放解决方案。
收起全文
精华内容
下载资源
问答
  • 使用野火STM32-F103 指南者 开发板 EERPOM存储小数
  • 目前最广泛使用的数字储存装置是硬盘(HDD),但它受欢迎的程度正迅速下滑…  数字数据储存正历经强大的成长态势,2016年即已增加到超过10,000艾位元组(Exabyte;EB)或10皆位元组(Zettabyte;ZB)的电子数据。 ...
  • 在Android Q中引入了分区储存功能,在外部存储设备中为每个应用提供了一个“隔离存储沙盒”。其他应用无法直接访问应用的沙盒文件。由于文件是应用的私有文件,不再需要任何权限即可访问和保存自己的文件。此变更并...
  • 对于容量快速增长、日趋多元化的大数据,业界亟需开发可行性更好的存储工具。为满足大数据存储需求,存储机制已经形成从传统数据管理系统到NoSQL技术的结构化转移。然而,目前可用的大数据存储技术无法为持续增长的...
  • Docker 容器对存储的定义 Volume 与 Volume Plugin 摘要 Docker 技术自从诞生以来已经带来了一场云计算的革命其进展速度之快接受程度之高让人惊叹国内 已经有不少介绍 Docker 技术的文章它的生态网络管理构建应用都...
  • 大基金将成立中国储存芯片联盟长江存储/晋华/睿力或加入.pdf
  • 本实训项目帮助大家理解计算机中重要部件—存储器,要求同学们掌握存储扩展的基本方法,能设计 MIPS 寄存器堆、MIPS RAM 存储器。能够利用所学习的 cache 的基本原理设计直接相联、全相联,组相联映射的硬件 cache。
  • 主要介绍了Python 的字典(Dict)是如何存储的,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 如何装载项目数据到存储卡上?以便在没有 TIA Portal 的情况下,使用存储卡向 S7-1200 S7-1500CPU 传输程序
  • 主要介绍了JS实现本地存储信息的方法,基于localStorage与userData实现本地存储的功能,需要的朋友可以参考下
  • 随着视频监控系统规模越来越大, 以及高清视频的大规模应用, 视频监控系统中需要存储的数据和应用的复杂程度在不断提高, 且视频数据需要长时间持续地保存到存储系统中, 并要求随时可以调用, 对存储系统的可靠性...
  • 荣耀路由Pro即可以作为WiFi工具,也可以进行数据的传输和共享,本文中介绍的是通过这款路由使用USB存储设备传输共享文件的方法,需要的朋友不妨阅读本文进行参考
  • 英特尔rst驱动是一款快速存储技术驱动工具,主要用于Intel芯片组的磁盘管理、应用支持、状态查看等应用。使用SSD或者多硬盘的朋友们,安装这款驱动程序对性能是很有帮助的。欢迎下载。英特尔rst驱动简介Intel出品的...
  • 今天小编就为大家分享一篇Android之获取手机内部及sdcard存储空间的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • mysql存储引擎

    万次阅读 多人点赞 2019-07-31 19:28:44
    数据库存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还...

    数据库存储引擎

    数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。

    因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(Table Type,即存储和操作此表的类型)。

    如创建一个InnoDB类型的表:

    CREATE TABLE `brand` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `brand_name` varchar(64) NOT NULL,
      `brand_logo` varchar(255) NOT NULL,
      `description` varchar(255) NOT NULL,
      `parent_id` int(11) NOT NULL,
      `layer` int(11) NOT NULL DEFAULT '0',
      `enabled` int(11) NOT NULL DEFAULT '0',
      `path` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `brand_name` (`brand_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    mysql存储引擎

    MySQL给开发者提供了查询存储引擎的功能,执行以下sql即可查询到mysql中的存储引擎

    SHOW ENGINES

    我的mysql版本是5.7.22,下面是在Navicat中执行的结果

    InnoDB存储引擎

    InnoDB是事务型数据库的首选引擎,通过上图也看到了,InnoDB是目前MYSQL的默认事务型引擎,是目前最重要、使用最广泛的存储引擎。支持事务安全表(ACID),支持行锁定和外键。InnoDB主要特性有:

    1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合

    2、InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的

    3、InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上

    4、InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键

    5、InnoDB被用在众多需要高性能的大型数据库站点上

    InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。

    场景:由于其支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

    MyISAM存储引擎

    MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物和外键。

    MyISAM主要特性有:

    1、大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持

    2、当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成

    3、每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16

    4、最大的键长度是1000字节,这也可以通过编译来改变,对于键长度超过250字节的情况,一个超过1024字节的键将被用上

    5、BLOB和TEXT列可以被索引,支持FULLTEXT类型的索引,而InnoDB不支持这种类型的索引

    6、NULL被允许在索引的列中,这个值占每个键的0~1个字节

    7、所有数字键值以高字节优先被存储以允许一个更高的索引压缩

    8、每个MyISAM类型的表都有一个AUTO_INCREMENT的内部列,当INSERT和UPDATE操作的时候该列被更新,同时AUTO_INCREMENT列将被刷新。所以说,MyISAM类型表的AUTO_INCREMENT列更新比InnoDB类型的AUTO_INCREMENT更快

    9、可以把数据文件和索引文件放在不同目录

    10、每个字符列可以有不同的字符集

    11、有VARCHAR的表可以固定或动态记录长度

    12、VARCHAR和CHAR列可以多达64KB

    存储格式:

    1、静态表(默认):字段都是非变长的(每个记录都是固定长度的)。存储非常迅速、容易缓存,出现故障容易恢复;占用空间通常比动态表多。

    2、动态表:占用的空间相对较少,但是频繁的更新删除记录会产生碎片,需要定期执行optimize table或myisamchk -r命令来改善性能,而且出现故障的时候恢复比较困难。

    3、压缩表:使用myisampack工具创建,占用非常小的磁盘空间。因为每个记录是被单独压缩的,所以只有非常小的访问开支。

    静态表的数据在存储的时候会按照列的宽度定义补足空格,在返回数据给应用之前去掉这些空格。如果需要保存的内容后面本来就有空格,在返回结果的时候也会被去掉。(其实是数据类型char的行为,动态表中若有这个数据类型也同样会有这个问题)

    使用MyISAM引擎创建数据库,将产生3个文件。文件的名字以表名字开始,扩展名之处文件类型:frm文件存储表定义、数据文件的扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)。

    场景:如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。

    MERGE存储引擎

    MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,尽管其使用不如其它引擎突出,但是在某些情况下非常有用。说白了,Merge表就是几个相同MyISAM表的聚合器;Merge表中并没有数据,对Merge类型的表可以进行查询、更新、删除操作,这些操作实际上是对内部的MyISAM表进行操作。

    场景:对于服务器日志这种信息,一般常用的存储策略是将数据分成很多表,每个名称与特定的时间端相关。例如:可以用12个相同的表来存储服务器日志数据,每个表用对应各个月份的名字来命名。当有必要基于所有12个日志表的数据来生成报表,这意味着需要编写并更新多表查询,以反映这些表中的信息。与其编写这些可能出现错误的查询,不如将这些表合并起来使用一条查询,之后再删除Merge表,而不影响原来的数据,删除Merge表只是删除Merge表的定义,对内部的表没有任何影响。

    MEMORY存储引擎

    MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。MEMORY主要特性有:

    1、MEMORY表的每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度

    2、MEMORY存储引擎执行HASH和BTREE缩影

    3、可以在一个MEMORY表中有非唯一键值

    4、MEMORY表使用一个固定的记录长度格式

    5、MEMORY不支持BLOB或TEXT列

    6、MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列的索引

    7、MEMORY表在所由客户端之间共享(就像其他任何非TEMPORARY表)

    8、MEMORY表内存被存储在内存中,内存是MEMORY表和服务器在查询处理时的空闲中,创建的内部表共享

    9、当不再需要MEMORY表的内容时,要释放被MEMORY表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)

    MEMORY存储引擎默认使用哈希(HASH)索引,其速度比使用B-+Tree型要快,但也可以使用B树型索引。由于这种存储引擎所存储的数据保存在内存中,所以其保存的数据具有不稳定性,比如如果mysqld进程发生异常、重启或计算机关机等等都会造成这些数据的消失,所以这种存储引擎中的表的生命周期很短,一般只使用一次。现在mongodb、redis等NOSQL数据库愈发流行,MEMORY存储引擎的使用场景越来越少。

    场景:如果需要该数据库中一个用于查询的临时表。

    ARCHIVE存储引擎

    Archive是归档的意思,在归档之后很多的高级功能就不再支持了,仅仅支持最基本的插入和查询两种功能。在MySQL 5.5版以前,Archive是不支持索引,但是在MySQL 5.5以后的版本中就开始支持索引了。Archive拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩,所以它经常被用来当做仓库使用。

    场景:由于高压缩和快速插入的特点Archive非常适合作为日志表的存储引擎,但是前提是不经常对该表进行查询操作。

    CSV存储引擎

    使用该引擎的MySQL数据库表会在MySQL安装目录data文件夹中的和该表所在数据库名相同的目录中生成一个.CSV文件(所以,它可以将CSV类型的文件当做表进行处理),这种文件是一种普通文本文件,每个数据行占用一个文本行。该种类型的存储引擎不支持索引,即使用该种类型的表没有主键列;另外也不允许表中的字段为null。csv的编码转换需要格外注意。

    场景:这种引擎支持从数据库中拷入/拷出CSV文件。如果从电子表格软件输出一个CSV文件,将其存放在MySQL服务器的数据目录中,服务器就能够马上读取相关的CSV文件。同样,如果写数据库到一个CSV表,外部程序也可以立刻读取它。在实现某种类型的日志记录时,CSV表作为一种数据交换格式,特别有用。

    BLACKHOLE存储引擎(黑洞引擎)

    该存储引擎支持事务,而且支持mvcc的行级锁,写入这种引擎表中的任何数据都会消失,主要用于做日志记录或同步归档的中继存储,这个存储引擎除非有特别目的,否则不适合使用。

    场景:如果配置一主多从的话,多个从服务器会在主服务器上分别开启自己相对应的线程,执行binlogdump命令而且多个此类进程并不是共享的。为了避免因多个从服务器同时请求同样的事件而导致主机资源耗尽,可以单独建立一个伪的从服务器或者叫分发服务器。

    PERFORMANCE_SCHEMA存储引擎

    该引擎主要用于收集数据库服务器性能参数。这种引擎提供以下功能:提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)。 MySQL用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。

    场景: DBA能够较明细得了解性能降低可能是由于哪些瓶颈。

    Federated存储引擎

    该存储引擎可以不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。这种存储引擎非常适合数据库分布式应用。

    Federated存储引擎可以使你在本地数据库中访问远程数据库中的数据,针对federated存储引擎表的查询会被发送到远程数据库的表上执行,本地是不存储任何数据的。

    缺点:

    1.对本地虚拟表的结构修改,并不会修改远程表的结构

    2.truncate 命令,会清除远程表数据

    3. drop命令只会删除虚拟表,并不会删除远程表

    4.不支持 alter table 命令

    5. select count(*), select * from limit M, N 等语句执行效率非常低,数据量较大时存在很严重的问题,但是按主键或索引列查询,则很快,如以下查询就非常慢(假设 id 为主索引)

    select id from db.tablea where id >100 limit 10 ;

    而以下查询就很快:

    select id from db.tablea where id >100 and id<150

    6.  如果虚拟虚拟表中字段未建立索引,而实体表中为此字段建立了索引,此种情况下,性能也相当差。但是当给虚拟表建立索引后,性能恢复正常。

    7. 类似 where name like "str%" limit 1 的查询,即使在 name 列上创建了索引,也会导致查询过慢,是因为federated引擎会将所有满足条件的记录读取到本地,再进行 limit 处理。

    场景: dblink。

    存储引擎的选择

    功 能

    MYISAM

    Memory

    InnoDB

    Archive

    存储限制

    256TB

    RAM

    64TB

    None

    支持事物

    No

    No

    Yes

    No

    支持全文索引

    Yes

    No

    No

    No

    支持数索引

    Yes

    Yes

    Yes

    No

    支持哈希索引

    No

    Yes

    No

    No

    支持数据缓存

    No

    N/A

    Yes

    No

    支持外键

    No

    No

    Yes

    No

     

    展开全文
  • 本资源包含华中科技大学计算机组成原理实验一运算器设计的前五个实验,和储存系统设计的前两个实验,下载后解压为circ文件即可。可以通过educoder平台 包含实验名称:8位可控加减法电路设计,CLA182四位先行进位电路...
  • 存储系统是数据中心IT环境的核心基础架构,是数据中心数据访问的最终承载体。在过去的10年里,IT行业都已经发生了很大的变化,发展步伐令人难以捉摸,但是这一切也将会继续下去。存储在云计算、虚拟化、大数据等相关...
  • 贪心算法之磁盘文件最有储存,注释详细,python文件,用pycharm打开就能用 贪心算法之磁盘文件最有储存,注释详细,python文件,用pycharm打开就能用 贪心算法之磁盘文件最有储存,注释详细,python文件,用pycharm...
  • Labview数据实时采集和存储.vi是个人在实际项目中成功的应用,可实现数据的实时采集和存储,同时利用XY图实现波形图表中可设定缓存历史数据长度功能,供大家参考借鉴。
  • 新创公司SimpliVity推出一款在单一2U机箱中整合服务器、储存与连网的 OmniCube 系统。这款 OmniCube 系统采用VMware虚拟化软体提供可堆叠的系统,而无需传统丛集服务器所用的复杂分布式档案系统。  该系统在企业...
  • 数据结构课程实验报告 学号 姓名 实验日期 实验名称 图的存贮与遍历 一实验目的 掌握图这种复杂的非线性结构的邻接矩阵和邻接表的存储表示 以及在此两 种常用存储方式下深度优先遍历DFS^广度优先遍历BF卵作的实现 二...
  • 主要为大家详细介绍了微信小程序云开发之使用云存储,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 头歌实践教学平台计算机组成原理存储系统设计(HUST)1-7关
  • html5的两种存储技术的最大区别就是生命周期,接下来通过本文给大家分享HTML5 LocalStorage 本地存储刷新值还在问题以及使用方法小结,需要的的朋友参考下本文吧
  • IBM DS4000/FAStT Storage Manager 是在由IBM Corporation开发类别 Miscellaneous Shareware 软件。亲测能用!只支持64位系统!
  • 1.顺序存储结构 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从...

    其他二叉树知识!二叉树知识汇总


    目录

    前言:

    1.顺序存储结构

    2.链式存储结构

    3.二维数组直接存储

    4.邻接表存储


    前言:

    顺序存储和链式存储是经典讲解的内容,本文做简单理论介绍,而对于后两种:二维数组直接存储和邻接表存储,通过例题和代码做更深入更实用的讲解。

    1.顺序存储结构

    二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号,缺点是有可能对存储空间造成极大的浪费,在最坏的情况下,一个深度为k且只有k个结点的右单支树需要2k-1个结点存储空间。

    依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间的逻辑关系,这样既能够最大可能地节省存储空间,又可以利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。

    对于一般的二叉树,如果仍按从上至下和从左到右的顺序将树中的结点顺序存储在一维数组中,则数组元素下标之间的关系不能够反映二叉树中结点之间的逻辑关系,只有增添一些并不存在的空结点,使之成为一棵完全二叉树的形式,然后再用一维数组顺序存储。

    例子,如图a,b,c:

           (a) 一棵二叉树                                   (b) 改造后的完全二叉树

                          (c) 改造后完全二叉树顺序存储状态

    显然,这种存储对于需增加许多空结点才能将一棵二叉树改造成为一棵完全二叉树的存储时,会造成空间的大量浪费,不宜用顺序存储结构。

    2.链式存储结构

    struct Node{
    	int data;
    	Node* leftchild;
    	Node* rightchild; 
    };

        二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。

    通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。其结点结构为:

                                    

     其中,data域存放某结点的数据信息;lchild与rchild分别存放指向左孩子和右孩子的指针,当左孩子或右孩子不存在时,相应指针域值为空(用符号∧或NULL表示)。利用这样的结点结构表示的二叉树的链式存储结构被称为二叉链表。

    例子如图:

            

                       (a) 一棵二叉树                           (b) 二叉链表存储结构

     为了方便访问某结点的双亲,还可以给链表结点增加一个双亲字段parent,用来指向其双亲结点。每个结点由四个域组成,其结点结构为: 

      

     这种存储结构既便于查找孩子结点,又便于查找双亲结点;但是,相对于二叉链表存储结构而言,它增加了空间开销。利用这样的结点结构表示的二叉树的链式存储结构被称为三叉链表。

    3.二维数组直接存储

    若是题目直接给出了每个节点的左右孩子,可以直接用二维数组存储,不用建树,在遍历以及其他操作时,可以直接使用这个二维数组。

    例题:洛谷求二叉树的深度  https://www.luogu.com.cn/problem/P4913

    代码:

    #include<iostream>
    using namespace std;
    
    const int MaxN=1000050;
    int son[MaxN][2];
    
    int dfs(int x){
    	if (x==0) return 0;
    	int l=dfs(son[x][0]);
    	int r=dfs(son[x][1]);
    	return max(l,r)+1;
    }
    
    int main(){
    	int n;
    	cin>>n;
    	for (int i=1; i<=n; i++){
    		cin>>son[i][0]>>son[i][1];
    	}
    	cout<<dfs(1)<<endl;
    } 
    

    4.邻接表存储

    假设题目输入中,我们只知道 x , y 之间有一条边,但是并不知道 x , y 的父子关系的时候,可以使用邻接表的方法存储树。
    这时候把树看做一个图,建边要建双向边,然后在从根做dfs,确定每个节点的深度,顺便也可以求出每个节点的父亲节点,这样节点之间的父子关系就清楚了。

    例题:
    第一行输入N、root,表示这棵树有N个节点,根为root。
    接下来 N-1 行每行包含两个正整数 x, y,表示 x 结点和 y 结点之间有一条直接连接的边(数据保证可以构成树)。

    求每个节点的深度和每个节点的父亲节点。

    代码:

    #include<iostream>
    using namespace std;
    
    const int MaxN=500050;
    struct Edge{
    	int v;
    	int next;
    };
    Edge e[MaxN];
    int last[MaxN];
    int n,m,root,tot;
    int deep[MaxN];
    int f[MaxN];  
    
    void build(int x,int y){
    	tot++;
    	e[tot].v=y;
    	e[tot].next=last[x];
    	last[x]=tot;
    }
    
    //编号为x的节点,父亲是fa 
    void dfs(int x,int fa){
    	f[x]=fa;
    	deep[x]=deep[fa]+1;
    	for (int j=last[x]; j!=0; j=e[j].next){
    		int y=e[j].v;
    		if (y!=fa) dfs(y,x);		
    	}
    }
    
    
    int main(){
    	cin>>n>>root;
    	for (int i=1; i<=n-1; i++){
    		int x,y;
    		cin>>x>>y;
    		build(x,y);
    		build(y,x);
    	}
    	dfs(root,0);
    	for (int i=1; i<=n; i++) cout<<deep[i]<<" "; cout<<endl;
    	for (int i=1; i<=n; i++) cout<<f[i]<<" "; cout<<endl;	
    } 

    此种方法不仅适合二叉树,也适合多叉树。

    展开全文
  • 华为内存存储基础知识
  • uniapp本地存储和本地储存取值

    千次阅读 2021-03-26 13:38:37
    储存 uni.setStorage(object) object的参数 uni.setStorageSync(key, data) try{ uni.setStorageSync('token', '123456') } catch (e){ //错误 } 二.获取 uni.getStorage(OBJECT) 从本地存储中异步获取对应...

    uniapp本地存储

    需要注意:vue的本地存储方式, 小程序在浏览器测试时也可以实现, 但是在真机运行时不能实现

    一.储存

    uni.setStorage(object)

    • object的参数

    在这里插入图片描述
    uni.setStorageSync(key, data)

    try{
        uni.setStorageSync('token', '123456')
    } catch (e){
        //错误
    }
    

    二.获取

    uni.getStorage(OBJECT)
    从本地存储中异步获取对应可以对应的内容

    uni.getStorageSync(key)
    从本地缓存中同步获取指定key对应的内容

    try {
        const value = uni.getStorageSync("token");
        if(value) {
            console.log(value)
        }
    } catch(e){
        //错误
    }
    

    三.移除

    uni.removeStorage(object)
    从本地缓存中异步移除指定key

    uni.removeStorageSync(key)
    从本地缓存中同步移除指定key

    try {
        uni.removeStorageSync('storage_key')
    } catch(e){
        //错误
    }
    
    展开全文
  • 理解存储系统进行位扩展、字扩展的基本原理,能利用相关原理解决实验中汉字字库的存储扩展问题,并能够使用正确的字库数据填充,汉字字库存储芯片扩展实验,MIPS寄存器文件设计,MIPS RAM设计,直接相联cache设计
  • 储存、对象存储、文件存储的区别和联系

    万次阅读 多人点赞 2017-04-18 21:08:41
    储存、对象存储、文件存储的区别和联系 通常来讲,队友磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。 1. 块存储:DAS SAN a) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储...

    块储存、对象存储、文件存储的区别和联系

    通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。

    1. 块存储:DAS   SAN

    a) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储方式,每台服务器有独立的存储设备,每台主机服务器的存储设备无法互通,需要跨主机存取资料室,必须经过相对复杂的设定,若主机分属不同的操作系统,则更复杂。

    应用:单一网络环境下且数据交换量不大,性能要求不高的环境,技术实现较早。

    b) SAN(Storage Area Network): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCONFibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。

    应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。

     

    2. 文件存储

    通常NAS产品都是文件级存储。

    NAS(Network Attached Storage):是一套网络存储设备,通常直接连在网络上并提供资料存取服务,一套NAS储存设备就如同一个提供数据文件服务的系统,特点是性价比高。

    它采用NFSCIFS命令集访问数据,以文件为传输协议,可扩展性好、价格便宜、用户易管理。目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。

     

    3. 对象存储:

    总体上讲,对象存储同时兼具SAN高级直接访问磁盘特点及NAS的分布式共享特点。

    核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(OSD),构建存储系统,每个对象存储设备具备一定的职能,能够自动管理其上的数据分布。

    对象储存结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端)

    3.1 对象

    一个对象实际就是文件的数据和一组属性信息的组合。

    3.2 对象存储设备(OSD)

    OSD具有一定的智能,它有自己的CPU、内存、网络和磁盘系统。

    OSD提供三个主要功能:包括数据存储和安全访问

    (1)数据存储  (2)智能分布  (3)每个对象元数据的管理

    3.3 元数据服务器(Metadata Server , MDS)

    MDS控制ClientOSD对象的交互,主要提供以下几个功能:

    (1) 对象存储访问

    允许Client直接访问对象,OSD接收到请求时先验证该能力,再访问。

    (2) 文件和目录访问管理

    MDS在存储系统上构建一个文件结构,限额控制、包括目录、文件的创建、访问控制等

    (3) Client Cache 一致性

    为提高性能,在对象存储系统设计时通常支持ClientCache。因此带来了Cache一致性的问题,当Cache文件发生改变时,将通知Client刷新Cache,以防Cache不一致引发的问题。

     对象存储:

    一个文件包含了属性(术语叫matadata元数据,例如该文件的大小、修改时间、存储路径等)以及内容(简称数据)

    以往的文件系统,存储过程将文件按文件系统的最小块来打散,再写进硬盘,过程中没有区分元数据(metadata)和数据。而在每个块最后才会告知下一个块的地址,因此只能一个一个读,速度慢。

    而对象存储则将元数据独立出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象时,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD。假设反馈文件A存储在B,C,D三台OSD,那么用户就会再次访问三台OSD服务器去读取数据。

    这时三台OSD同时对外传输数据,因此传输的速度就加快了。OSD服务器数量越多,这种读写速度的提升就越大。

    另一方面,对象存储软件有专门的文件系统,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。

    因此对象存储的出现,很好的结合了块存储与文件存储的优点。

     

    为什么还要使用块存储和文件存储:

    1.有一类应用是需要存储直接裸盘映射的,比如数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对了裸盘进行格式化,因此不能采用其他已经被格式化为某种文件系统的存储。此类更适合块存储。

    2.对象存储的成本比普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了作文件共享的时候,直接用文件存储的形式就好了,性价比高。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,234,731
精华内容 2,493,892
关键字:

存储