ftl文件中$是什么意思

经期可以喝茶吗2023-04-30  24

ftl是Freemarker模板的文件后缀名。

FreeMarker其实是一种比较简单的网页展示技术,说白了就是网页模板和数据模型的结合体。这种结合模式的好处就是,分离了网页界面设计人员和编程人员的工作,让他们各司其职。

FreeMarker大致的工作方式是,网页模板里面嵌入了数据模型中的数据、FreeMarker自定义流程控制语言、FreeMarker自定义的操作函数等等,在装载网页的时候,FreeMarker模板自动从数据模型中提取数据,并解释整个网页为我们熟知的HTML页面。

在B/S程式设计中,常常有美工和程序员二个角色,他们具有不同专业技能:美工专注于表现——创建页面、风格、布局、效果等等可视元素;而程序员则忙于创建程式的商业流程,生成设计页面要显示的数据等等。

模板引擎就是为了解决上面的问题而产生的。在设计HTML的时候,我们加入一些特定指令来指定要插入哪些数据,这些加了特殊指令的HTML或者其他文本,称为模板(Template)。而模板引擎会在输出页面时,用适当的数据替代这些代码,模板和嵌入JSP的HTML是不同的,模板指令只有很有限的编程能力,可以避免混入商业逻辑。

  FTL指Flash Translation Layer(闪存转换层),这玩意儿的本职工作是完成Host的逻辑地址到Flash的物理地址的转换。

  controller每把一笔数据写入Flash中时,便会记录下该数据的逻辑地址到物理地址的映射关系,这样当Host想要读取这笔数据时就会根据这个映射读取到真实的数据。

首先说明一下闪存的特性:

  针对闪存的以上特性,FTL在完成本职工作逻辑地址到物理地址转换的同时,还要具有十八般武艺:

  垃圾回收(Garbage Collection),磨损平衡(Ware Leveling),坏块管理,读干扰处理,数据保持处理等事情。

  映射有基于块映射、基于页映射和混合映射。

   基于块映射 Host在读写小尺寸数据(随机性能)时性能较差,一般用在U盘中(ps:不要惊讶,U盘中也用到FTL的),所以U盘不适合装系统,适合用来读写大尺寸数据的数据传输用。

   基于页映射 对小尺寸数据(随机性能)有很好的性能,但是由于闪存的页要比闪存块多的多,需要更多的空间来存放映射表。为了追求更好的随机性能(操作系统对这个很在意)所以SSD都采用页映射。

   混合映射 的性能介于上边二者之间,当然存放映射表所用的空间也介于二者之间。

SSD内部FW维护了一张逻辑地址到物理地址的映射表(Map Table)。用户每写入一个逻辑页就需要更改一次MT;当读取一个逻辑页时,SSD会查找映射表中该逻辑页对应的物理页,然后再访问Flash读取所要的数据。

  一般映射的逻辑页的大小为4KB,物理地址的大小为4Byte,那么一个256GB的SSD的映射表大小为: 256GB/4KB4B = 256MB ,也就是说映射表的大小是SSD容量的1/1024。

  为了存放这个映射表,SSD一般有两种设计方案:DRAM(带DRAM的)和DRAM-less(不带DRAM的)。带DRAM的一般会把缓冲数据和映射表统统存放在DRAM中,优点是查找更新映射表迅速,性能较好,劣势是多了一个DRAM,成本和功耗上升,当前的主流SSD是该方案;DRAM-less的会将少部分的映射表放在片内的SRAM上,其余部分的映射表则会放在Flash中,这种方案好处是节省了DRAM的成本和功耗,但是读写Flash要比读写DRAM要慢得多,所以速度上不如DRAM方案,性能较差,当前入门级的SSD多采用这种方案。

  一个小问题:我们都知道DRAM掉电数据是会丢失的,那么数据表怎么办?

答案是在SSD掉电之前,它会把映射表写入到Flash中去的,下次上电初始化时需要重新把映射表读出来放在DRAM或SRAM中。也就是说不管DRAM或DRAM-less,Flash中都需要储存映射表的。

  这年头收垃圾也成特色技能了,还是重要内功。。。哈哈

  垃圾回收,就是把某一个闪存块上的有效数据读出来,写入另一个数据块中,然后擦除原来的闪存块,使之可用。

  也许你会问,数据在原来的闪存块上待的好好的,为什么要费事吧连的读出来写入另外的块中呢?原因是原来闪存块上的垃圾(无效数据)太多了!如前文讲道,闪存块需要先擦除才能写入,不能覆盖写。如果一个块上只有一点点有效数据占着整个数据块,那么就需要把有效数据搬移出来,把这个块擦除掉使之变成可用状态,从而提高块的使用率。

  也许你又会问,为啥子数据会无效呢?原因还是因为闪存的特性导致的,为了延长每个闪存块的寿命,就需要均衡每个数据块的擦除次数,为了均衡每个数据块的擦除次数,数据写入时候就需要均衡的写入每个块,而不能照着一个块往死了写。当用户空间里的数据写满后,就需要把数据写备用空间(SSD的实际容量都比标称容量大,多出来的部分就是备用空间),因为备用空间对操作系统是不可见的,那么每往备用空间写一笔数据就会在用户空间产生一笔无效数据(垃圾)。

  江湖传言:SSD越用速度越慢。很不幸,这是真的,而且是有依据的。新盘没有垃圾可收,所以速度快!用久了产生的垃圾就多了,就需要用内功把垃圾逼出来,当然速度就慢下来了。

  其实在垃圾回收的时候已经提到磨损平衡的原因了:为了延长每个闪存块的寿命,就需要均衡每个数据块的擦除次数,为了均衡每个数据块的擦除次数,数据写入时候就需要均衡的写入每个块,而不能照着一个块往死了写。

那么,一个闪存块的寿命有多长呢?

SLC:10万次

MLC:1~10千次

TLC:几百次~2千次

QLC:< TLC

3D:< QLC

所以,磨损平衡很重要!接下来几个概念:

冷数据(Cold Data),热数据(Hot Data)

年老块(Old Block),年轻块(Young Block)

  所谓 冷数据 就是用户不常更新的数据,比如音视频,只读数据等;相反 热数据 就是频繁更新的数据,比如软件使用等,会产生很多垃圾。

  所谓 年老块 是指擦写次数比较多的块;相反 年轻块 则指擦写次数比较少的块。ps:每个块都有EC(Erase Count),年轻还是年老SSD一下就可以看出来。

  SSD一般有两种(Ware Leveling)算法:动态磨损平衡(Dynamic WL)和静态磨损平衡(Static WL)。动态磨损平衡算法基本原理是把热数据写到年轻块上;静态磨损平衡的基本思想是把冷数据写到年老块上。这里可以停下来先品味一下这样的做的原因。

DWL好理解:写数据时找年轻的块写,避免往老年块上写数据,各个块就能保持一个比较均衡的值。

SWL呢?冷数据基本不更新,它所占用的块擦写次数就不会增加,而其他块会被经常写入数据,块擦写次数是会增加,这样就导致了 擦除不均衡 ,SSD最不喜欢这个了。所以需要把冷数据搬到老年块上,让年轻块替代老年块的工作。

1、打开eclipse,点击window菜单,选择preferences。

2、选择General->Editors->File Association。

3、点击file types 右边的add按钮,出现如下图的对话框,输入ftl。

4、输入ftl后,点击ok,然后file types列表,会多出来一个ftl文件类型,选中。

5、点击Associated editors右边的add按钮,出现文件关联类型,选择JSP Editor。

6、设置好后,再打开刚才的页面进行注释。

如果是最新版本,四大FTL飞行方式特点如下:

曲速:到达星系边界即可使用,穿行速度慢,范围大,耗时一般。

超光速:到达星系边界即可使用,穿行速度非常快,范围小,受航道限制耗时小。

虫洞:到达星系边界充能后可使用,穿行速度非常快,范围大,受虫洞站范围限制耗时大。

跃迁(后期科技):虫洞的加强版,具有虫洞FTL的所有功能并且去掉了虫洞站的限制。

总结一下,曲速适合中程飞行,超光速适合短程飞行,虫洞适合远程飞行。如果是新手的话建议使用超光速,然后可以在游戏设置界面将FTL方式设置为“超光速唯一”这样一来AI也只能用超光速,你就可以通过超光速航道来更好地进行进攻和防御部署。

以上就是关于ftl文件中$是什么意思全部的内容,包括:ftl文件中$是什么意思、SSD之FTL技术、ftl格式文件的注释方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

转载请注明原文地址:http://juke.outofmemory.cn/read/3743724.html

最新回复(0)