PC硬件术语经常被互换使用,其缩写被削减,或者对同一组件有多个词。以DRAM/RAM/memory为例。这三个词都是指同一个PC组件,它被安装在CPU插座旁边的瘦小插槽中--随机存取存储器。我们把CPU称为处理器,把GPU称为显卡,把主板称为主板--不一而足。
闪存和固态硬盘这两个术语有时也可以互换使用。但是,当你把每一个细分为细节时,有几个关键的区别,使它们彼此不同。与DRAM/RAM/内存不同,闪存和SSD指的不是同一种东西,尽管闪存被用于SSD,闪存也可以被认为是SSD。但用一个在谈论两者之间的差异时经常使用的比喻,把一个看作是鸡蛋,另一个看作是煎蛋。
闪存(Flash storage or Flash memory)是这个比喻中的 "鸡蛋 "部分。大多数SSD(固态硬盘)主要由闪存制成,就像煎蛋卷主要由鸡蛋制成一样,但闪存还可以用在很多其他方面。
让我们先来看看闪存和SSD存储的相似之处:两者都比HDD快,而且不像HDD那样有移动部件。两者也都是非易失性存储器的形式,所以即使在你关闭计算机后,它们也能保留保存在其中的任何信息(不像RAM,它只能暂时存储信息),而且闪存和SSD存储很容易重写。因此,如果你不断地卸载和重新安装游戏,或下载每一个新的模拟人生4游戏包,这两种类型的内存可以满足你的需求。
除了固态硬盘之外,闪存还可以用于许多其他设备或部件:手机、数码相机、计算器、USB驱动器(也叫闪存驱动器)。它曾经是超级昂贵的,但随着存储容量的增加,价格也随之下降。2006年,一个4GB的USB闪存驱动器的价格约为65美元,而今天一个128GB的闪存驱动器的价格约为25美元。更便宜的闪存意味着SSD也更便宜。
然而,闪存驱动器中的闪存通常比SSD中使用的闪存慢得多。另外,它的数量更少,控制器也更简单。
SSD存储是食谱中的煎蛋部分,它可能是你的PC或笔记本电脑的主要存储设备。作为主要存储设备的HDD几乎已经死亡,但仍然是一个伟大的二级存储解决方案。
然而,虽然大多数固态硬盘确实使用闪存,但并非所有的固态硬盘都是如此。称之为固态硬盘只是为了区分像HDD那样有移动部件的存储解决方案和没有移动部件的存储解决方案。任何不移动的存储类型都是固态硬盘,但尽管闪存在技术上可以被视为固态硬盘的一种,但将其与三星970 EVO这样的实际固态硬盘区分开来更为准确,因为闪存只是一种成分,而不是配方。闪存是固态硬盘的存储介质。
事实上,最早的固态硬盘并没有使用闪存,而是使用一种叫做EAROM(电可擦除只读存储器)的东西,这是一种早期的非易失性存储器,具有读/写功能,但处理数据的速度非常慢。从70年代到00年代,一些固态硬盘也是基于RAM的,以提高读/写速度,但这意味着你永远无法关闭你的电脑,除非你想失去所有的数据。基于闪存的固态硬盘直到90年代才进入市场,而且价格非常昂贵--1000美元或更多,而现在只有100美元。
一些制造商,如英特尔,也创造了一种闪存的替代品。英特尔的Optane固态硬盘采用了一种名为3D Xpoint的不同技术。
使用NAND闪存的现代固态硬盘与同样使用NAND闪存的micro-SSD卡之间的主要区别之一是访问闪存的方式。固态硬盘有高速控制器,可以以高达5GB/s的速度读写数据(7GB/s的型号也即将推出)。它们通过同时对多个闪存芯片进行读写来实现这一目标。固态硬盘通常有四个到多达16个通道,可用于访问闪存。八个通道,每个通道进行500MB/s的数据传输,就有4GB/s的潜在性能。
最快的固态硬盘也有DRAM缓存,以帮助存储经常访问的数据。例如,一个1TB的固态硬盘可能有一个256MB的DRAM缓存,用于保存映射表。闪存可能很快,但DRAM更快。另外,DRAM最终也不会磨损。
回到先前的比喻,闪存是鸡蛋。然后,SSD将这些鸡蛋放在一起,一次8个鸡蛋,再加上DRAM缓存和高速控制器等额外的味道和成分,做成美味的煎蛋。
参考原文:闪存和SSD存储之间有什么区别?
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?