我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合特肖 > 访问局部性 >

计算机体系结构——存储体系

归档日期:07-19       文本归类:访问局部性      文章编辑:爱尚语录

  本章重点是页式虚拟存储器映象及地址变换过程;LRU,FIFO的替换算法;LRU的堆栈分析过程;Cache组相联地址映象和LRU块替换;虚存,Cache的性能分析,要求达到综合应用的水平。本章是重点章。要求掌握的基本概念有:LRU,FIFO ,全相联、直接映象,组相联,快表、命中率,地址变换,页式,段式,段页式管理,虚拟存储器,高速缓存等等。

  从大量的统计中得到的一个规律是,程序中对于存储空间90%的访问局限于存储空间的10%的区域中,而另外10%的访问则分布在存储空间的其余90%的区域中。这就是通常说的局部性原理。访存的局部性规律包括两个方面:

  2、空间局部性:如果一个存储项被访问,则该项及其邻近的项也可能很快被访问。

  人们为了解决存储器容量和速度的矛盾,应用了访问局部性原理,把存储体系设计成为层次化的结构以满足使用要求。在这个层次化存储系统中,一般由寄存器、高速缓存(Cache)、主存(内存)、外存(硬盘等)组成。其中寄存器是最高层次的存储部件,容量最小,速度最快。寄存器对程序员是不透明的,对它的访问需按寄存器名访问而不是按地址。

  由于存储体系采用了分层的结构,因此存储体系中各层次之间的数据访问如何的管理就显得相当重要。一般都把管理功能分布在各个层次上,每个层次的存储管理控制器控制这一层和与之相关一层的数据访问。层间传递数据的单位称为块或页。

  命中率指命中的访问次数和总访问次数之比、失效率是失效的访问次数和总访问次数之比。命中时间包括判断是否命中所需时间和对上层存储器访存所需时间,失效时间则包括对下层存储器的访问时间和将下层存储器中数据调入上层存储器所需时间(传输时间)

  存储器设计的目标是降低平均访问时间而不是单单提高命中率。也就是说层次化存储器的速度性能指标是访存的平均时间。另外还有带宽(频宽)、存储周期等指标。

  1.定位问题:数据块在较高层存储器中存放在哪个位置?怎样确定并且找到该块?这是块的标识和寻址问题。一般用查表法来映象块或页的定位、标识和寻址。

  2.替换问题:不命中时,要从下层调入上层数据块,若上层满,则此时如何将上层中的数据置换出去?什么方法好。这就是替换策略的问题。

  3.更新问题:在需要写访问时,何时将上层中得到的结果写到下层存储器中? 因为上层数据在经过运算后比下层的数据新,则这种写的方式就是为了解决上下层数据一致性的问题。

  本章的内容就是围绕着这三个问题的解决而展开的。解决好这三个问题,层次化存储体系管理的主要问题也就解决了。

  这一节的内容就是讲述关于Cache高速缓存如何解决上述三个问题展开的内容,其他各层的管理基本上与它的解决办法类似。

  高速缓存是位于CPU和主存之间的高层存储子系统。采用高速缓存的主要目的是提高存储器的平均访问速度,从而使存储器的速度也CPU的速度相匹配。

  Cache通常由两部分组成,块表和快速存储器。Cache的基本结构可见教材图7.4,其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映象机构借助查表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache。否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映象关系。

  从这个工作原理我们可以看出,它已经涉及到了两个问题。首先是定位、然后是替换的问题。

  Cache的存在对程序员是透明的。其地址变换和数据块的替换算法均由硬件实现。通常Cache被集成到CPU内以提高访问速度。

  因为处理机访问都是按主存地址访问的,而Cache的空间远小于主存,如何知道这一次的访问内容是不是在Cache中,在Cache中的哪一个位置呢? 这就需要地址映象,即把主存中的地址映射成Cache中的地址。让Cache中一个存储块(空间)与主存中若干块相对应,如此,访问一个主存地址时,就可以对应地知道在cache中哪一个地址了。地址映象的方法有三种:直接映象、全相联映象和组相联映象。

  直接映象就是将主存地址映象到Cache中的一个指定地址。任何时候,主存中存储单元的数据只能调入到Cache中的一个位置,这是固定的,若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去。

  全相联映象就是任何主存地址可映象到任何Cache地址的方式。在这种方式下,主存中存储单元的数据可调入到Cache中的任意位置。只有在Cache中的块全部装满后才会出现块冲突。

  组相联映象指的是将存储空间的页面分成若干组,各组之间的直接映象,而组内各块之间则是全相联映象。

  (5)若不相等,块失效,停止Cache访问。访主存,并调块(1)主存地址分成主存块号和块内地址

  (3)若相同,则取出Cache块号,Cache块号与块内地址拼接成Cache地址,访问Cache

  (4)若无相同的,则产生缺块、调块(1)主存地址分区号、组号、块号、块内地址

  Cache从主存读取数据块时有三种方式:需要时读取、预读取和选择读取。这三种方式各有优缺点,请注意比较。课本中提到共享的数据放在主存中比放在Cache中合适,特别是在多处理机系统中,因为共享的数据经常由别的处理过程改写,若放到cache中,则经常涉及到数据的一致性问题,因此放在主存中可保证其单一性,不致发生数据一致性错误的问题。

  在层次式的存储体系中,访问某层存储器的内容时将从该层取数据块层层复制到上层存储器中,而上层的存储器容量总比下层的少,则在复制到上层时,就会发生替换掉原有数据块的问题。若被替换的块中有新写入的数据(如计算结果)则这些数据还得先写到下层存储器的相应块中,这就涉及更新策略。

  在直接映象方式下,不存在块替换的算法,因为每一块的位置映象是固定的,需要哪一块数据就可直接确定地将该块数据调入上层确定位置。而其他两种映象就存在替换策略的问题,就是要选择替换到哪一个Cache块。即替换算法。

  选择替换算法的依据是存储器总体性能,主要是上层存储器的访问命中率。下面将常用的几种替换算法作一比较:

  对于块的替换策略,要掌握FIFO特别是LRU算法的替换过程,能画出其分配情况的表并作分析。

  为了保持Cache中数据和主存中数据的一致性,就要对Cache和主存的数据进写操作,一般的更新策略有两种:

  另外,当写不命中时(也就是写Cache块时,这块早被人替换出去而在Cache中找不到时)是不是要把这块再取回Cache中,有两个解决方法:一是不按写分配法,就是直接写到主存里,不再把该地址对应的块调回Cache中.二是按写分配法,就是写到主存,而且把这一块从主存中调入到Cache.一般写回法用按写分配法,全写法则采用不按写分配。

  将Cache分别用来存放数据和指令,则可分成上面两种Cache,一体化Cache则既存放数据又存放指令。一般来说,分离后的Cache命中率有所提高。

  Cache的命中率对计算机速度的影响很大。实践证明,Cache的尺寸越小,地址映象方法和替换策略对命中率的影响越大。

  当Cache的大小确定时,组的大小或块的大小将影响不命中率,由于块的内部是全相联的,因此块越大则命中率越高。

  我们知道,衡量存储系统的速度性能要以平均访存时间为指标,计算平均读访存时间的公式为:

  其中Hc是指命中率,Tc是命中时访问时间,Tm为访主存时间。若是多层Cache也可按此公式推出计算方法。即上层的存储器命中时间加上不命中时访问下层存储器的时间。

  存储器的主要性能指标是容量、速度和价格.存储器的速度指标包括访问时间、访存周期时间和带宽。提高主存带宽的措施主要有:

  存储器的多体交叉是提高其数据带宽的有效方法。这里用我自己的理解解释一下高位交叉存储器和低位交叉存储器:

  比如主存空间有8个存储单元(2的3次方,设得小一些好懂些,实际上的单元数比这大得多),那么整个存储空间地址就由一组3位二进制数组成:从000到111, 如果这个空间用两个存储体实现,有两种编址方法。

  一种是高位交叉编址,就是把地址的码的前一位数分配给两个存储体,第一个为0,第二个为1(如果有四个存储体的话,就要分给前面的两位数,依次类推)第一个存储体里面的单元就是以这个码开始的编码:000,001,010,011 (看到第一位数都是0了吗);第二个存储体的存储单元的四个地址是:100,101,110,111。

  这样,当访问两个地址相邻存储单元的数据时,比如110和111两个单元的数据,都放在第二个存储体中,只能在这个体中存取,而第一个存储体就闲着没人访问了。而一般在存放数据时,多是将数据存放在地址连续的内存区域中的。现在可以知道了,为什么高位交叉编址的存储器适合于多机系统,就是说,因为各处理机通常访问各自所需的数据,这些数据放在不同的存储体中时,两个存储器可以同时工作,也就加快了速度。

  另一种方法就是低位交叉编址。如上的例子,地址码的最后一位就是分配给存储体的地址码,第一个存储器里的存储单元就是000,010,100,110(最后一位总是0), 第二个存储器里的存储单元就是001,011,101,111,这种方法使得相邻地址的存储单元分布在不同的存储体中,所以在访问相邻单元的数据时,多个并行存储体可以同时工作进行存取,因此比较适于单处理机内的高速数据存取。

  增加存储器数据宽度的方法也是拓宽带宽的方法,一般采用单体多字方法。多体交叉的存储器的实际带宽比单体多字的高。

  虚拟存储器是主存的扩展,虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间。从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接近于主存的访问速度。

  虚拟存储器的访问也涉及到虚地址与实地址的映象、替换算法等,这与Cache中的类似,前面我们讲的地址映象以块为单位,而在虚拟存储器中,地址映象以页为单位。设计虚拟存储系统需考虑的指标是主存空间利用率和主存的命中率。

  虚拟存储器与Cache存储器的管理方法有许多相同之处,它们都需要地址映象表和地址变换机构。但是二者也是不同的,请注意比较。

  虚拟存储器的三种不同管理方式:按存储映象算法,分为段式、页式和段页式等,这些管理方式的基本原理是类似的。

  段式管理:把主存按段分配的存储管理方式。它是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间。段长可以任意设定,并可放大和缩小。

  系统中通过一个段表指明各段在主存中的位置。段表中包括段名(段号)、段起点、装入位和段长等。段表本身也是一个段。段一般是按程序模块分的。

  页式管理:是把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置。页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映象机构将虚页号转换成主存的实际页号。

  页式管理用一个页表,包括页号、每页在主存中起始位置、装入位等。页表是虚拟页号与物理页号的映射表。页式管理由操作系统进行,对应用程序员的透明的。

  段页式管理:是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行。段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

  (3)段表始址和段号找到其段表中相应表项,其中存有主存地址,装入位,访问位、段长、辅存地址等。

  (4)检查装入位是否为1(在主存),为1转(5),否则产生缺段中断,从辅存中调入一段到主存。

  (5)由主存地址+段内偏移形成真正物理地址。(1)多个程序分段编制,多个程序或并行编程,缩段编程时间;

  (4)便于共享和保护。(1)分段管理主存,主存利用率不是很高,大量零头;

  (4)由主存块号和页内偏移形成有效地址。(1)页表表项短,减少访表时间。

  页式虚拟存储器结构及其实现:主要要解决的问题是页面失效的处理及虚地址到实地址的变换速度。另外还有虚拟存储器的保护问题。

  虚拟存储器中进行地址变换时,需要虚页号变换成主存中实页号的内部地址变换,这一般通过查内页表实现,若页页失效,还需通过查外页表变换地址再从外存调入页面。 所以提高页表的访问速度是提高地址变换速度的关键。根据访存的局部性原理,将一部分使用概率高页表项放在快速硬件构成的表格中,而将整个表格放在主存中,这就引出了快表和慢表的概念。查表时,快表和慢表同时进行查找。快表的存在对所有的程序员都是透明的。

  ·对于多道程序系统和多用户系统,虚存的保护是必不可少的。存储系统的保护分存储区域的保护和访问方式的保护。对虚拟存储器的保护方式有映象表保护法、键保护法和环式保护法等。

  生活中的大部分物品,基本都满足“好的不一定是最贵的,但是最贵的一定是好的”。在计算机存储体系中,基本满足了上面这句话,就是存储速度越快,价格就会越贵。因为价格的限制,我们在存储器中,就得有个恰当的搭配...博文来自:iva_brother的博客

  大体分为四层:一.内存容量远远高于外存,速度远远高于外存,稳定性不高(断电内容消失)有关RAM和ROM:通常我们所说的内存,主存,仅指RAM。ROM是“固化的软件设备”,其固化的软件包括自检程序,基本...博文来自:chengtutu的博客

  1、计算机存储体系简介:1.1、计算机存储体系分四层:  1.1.1、外存:容量最大、速度最慢、稳定性最高;  1.1.2、内存:容量远小于外存,速度远高于外存,不稳定(断电内容消失);       ...博文来自:飞鸿踏雪泥的博客

  计算机存储结构分析图注:此图及其重要,它可以帮你很清晰的理解程序数据执行的流程,以及CPU的调度机制。一、寄存器寄存器:是中央处理器(CPU)中的一部分,有限存贮容量的高速存贮部件(空间比较小在kb级...博文来自:的博客

  一、引子在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达...博文来自:苏晓的专栏

  地址映象:是将每个虚存单元按某种规则装入实存,即建立多用户虚地址与实存地址之间的对应关系。地址变换:是程序按照这种映象关系装入实存后,在执行时,多用户虚地址如何变换成对应的实存地址。页面争用(实页冲突...博文

  很久没有在CSDN上面发文章了,最近复习机组的存储器,感慨自己这两年把知识都还给老师了,便做个笔记好好整理一下,也有了一些新收获。转载请著名来源:存储系统...博文来自:Lee.rw的博客

  一、存储器的层次结构1.1存储层次的性能参数(1)存储层次的平均每位价格C假设存储器M的容量、访问时间、每位价格为S,T,C,则存储层次的平均每位价格C(2)命中率H和不命中率F命中率是指CPU在访问...博文来自:JinbaoSite

  一、概念理解1.1基本概念1.**寄存器:**寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(I...博文来自:高自强的博客

  hibernate一级缓存和二级缓存的区别:主要的不同是它们的作用范围不同。一级缓存是session级别的。也就是只有在同一个session里缓存才起作用,当这个session关闭后这个缓存就不存在了...博文来自:hujutaoseu的博客

  在这个数据横行的时代,每个人的生活已经离不开数据信息。财富变成支付宝上的一串数字,一张身份证和一部手机就能行走天下,是因为我们能够随时随地取用数据属于我们自己的数据。那么,对于数据来说,存储系统的重要...博文来自:技术永无止境

  试想一下,我们编辑好HelloWord程序,如果是C/C++语言编写,一般是一个.c或者.cpp的文件,这是一个文本文件,你一般会把它放在你的硬盘里面,难道不是吗?比如桌面、D、E盘下,那当我们打算运...博文来自:奋斗的程序猿的博客

  引用:,并在原文基础上加上了相关信息存储,是我们码农每天都要打交道的事情,而当我们...博文来自:weixin_42238499的博客

  文章目录计算机存储结构计算机缓存产生原因实现原理工作原理缓存大小缓存分类参考文献计算机存储结构计算机缓存产生原因缓存又叫高速缓冲存储器,其作用在于缓解主存速度慢、跟不上CPU读写速度要求的矛盾。实现原...博文来自:u013617791的专栏

  储存系统的组成:1.按作用分类1高速缓冲存储器:位于主存和CPU之间,用来存放正在执行的程序段和数据,以便CPU能高速的访问它们。其速度可以和CPU速度相匹配。2主存储器:存放计算机运...博文来自:pan-ma的博客

  前言    一个计算机包含多种存储器比如:寄存器、高速缓存、内存、硬盘、光盘等,为啥有这么多种存储方式,对于不太了解的人,总是觉得云里雾里的,搞不明白原因,直接弄一个存储器不就得了?计算机主要的功能就...博文来自:younkerjqb的专栏

  我们的计算机中能够存储数据的东西有内存,外存等等内存的读写速度优于外存很多很多,但是由于其成本高的特点,一般只适用于做短时存储读取,也就是说,当我们的电脑关闭的时候,内存中的数据就全部消失了。与之相比...博文来自:英俊帅比林的博客

  随着CPU不断的升级和总线速度的不断提高,存储器的速度远远不能与之匹配,高速缓存的存取速度和CPU相匹配,但价格高,且容量小;内存由DRAM构成,速度比高速缓存慢,但容量大;辅助存储器速度比内存慢的多...博文来自:u011002533的博客

  一、存储器概述1.存储器分类2.存储器的层次结构二、主存储器(内存)1.主存储器概述2.半导体存储芯片3.随机存取存储器4.只读存储器5.存储器与CPU的连接6.存储器的校验7.提高访存速度的措施三、...博文来自:u012481172的专栏

  一、存储器的层次结构1.1存储层次的性能参数(1)存储层次的平均每位价格C假设存储器M的容量、访问时间、每位价格为S,T,C,则存储层次的平均每位价格C(2)命中率H和不命中率F命中率是指CPU在访问...博文来自:Jinbao

  一、存储技术      1、基本的存储技术包括随机存储器(RAM)、非易失性存储器(ROM)和磁盘。RAM分静态RAM(SRAM)和动态RAM(DRAM)。SRAM快些,也贵些,主要用做CPU芯片上的...博文来自:zhanghaodx082的专栏

  一、本课程设计的性质、目的、任务《计算机组成与系统结构课程设计》是计算机学院各专业集中实践性环节之一,是学习完《计算机组成与系统结构》课程后进行的一次全面的综合练习。其目的是综合运用所学计算机原理知识...博文来自:Fushicho_XF的博客

  高速缓存存储器:作为暂时的集结区域,用来存放cpu近期可能会需要的信息,       L1的容量有数万byte,访问速度几乎和寄存器文件一样快。      L2的容量数十万到数百万byte,通过一条特...博文来自:TTc s share

  局部性原理:利用上层存储器使用的“历史信息”(即考虑过去、现在、未来)。存储器的特点:(1)存取方式(2)存取大小(3)存取速度cache替换算法:(1)随机算法(RAND算法)(2)先进先出算法(F...博文来自:oceanstudy123的博客

  计算机系统中包含各种存储器,如CPU内部的通用寄存器组、CPU内的Cache(高速缓存)、CPU外部的Cache、主板上的主存储器、主板外的联机磁盘存储器以及脱机的磁带存储器和光盘存储器等。不同特点的...博文来自:is_Javaer的博客

  随着主机、磁盘、网络等技术的发展,数据存储的方式和架构也在一直不停改变,本文主要介绍目前主流的存储架构。存储的分类根据服务器类型分为:封闭系统的存储(封闭系统主要指大型机)开放系统的存储(开放系统指基...博文来自:乡下人

  对象存储概述什么是对象存储(OSD)?存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,而对象存储(Object-basedStorage)是一种新的网络存储架构,基于对象存储技...博文来自:宇宙无敌大帅锅

  使用场景:Web应用允许使用浏览器提供的API实现将数据存储到用户电脑上。这用客户端存储遵循“同源策略”,因此不同站点的页面是无法相互读取对方存储的数据,而同一站点的不同页面之间是可以相互共享存储数据...博文来自:IT_10的博客

  数据存储方式1 使用SharedPreferences存储数据;是Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码。其采用了Map数据结构来存储数据,以键值的方式存...博文来自:winnie_hu的博客

  前言   网络早期最大的问题之一是如何管理状态。简而言之,服务器无法知道两个请求是否来自同一个浏览器。当时最简单的方法是在请求时,在页面中插入一些参数,并在下一个请求中传回参数。这需要使用包含参数的隐...博文来自:的博客

  举个例子,起初硬盘某个分区是空白的,写入三个文件A、B和C。显然这个时候,三个文件都是顺次占用三个簇段(这个说明存放文件所用的文件系统应该是类似FAT这样的文件系统,具体参看注释1)。故而三个文件不会...博文来自:haiross的专栏

  1.什么是openstackopenstack,是目前最为流行的开源云操作系统框架。深入理解openstack需要围绕开源、云、操作系统、框架这几个关键词展开说明 1.云读者只需要明确,opensta...博文来自:shi8758317的博客

  主存储器的性能指标存储容量:指存储器可容纳的二进制信息量,描述存储容量的单位是字节或位。存储速度:由以下3个方法来衡量。存取时间(MemoryAccessTime--TA):指启动一次存储器操作到完成...博文来自:liudongdong_jlu

  本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源、提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用。但随着互联网企业的高速发展,这些企...博文来自:wendowswd的博客

  简介该篇blog只是存储系列文章中的第一篇,所有文章请参考:博客所有文章在工程架构领域里,存储是一个非...博文来自:子曰小玖的博客

  我们在选型开源分布式存储系统框架之前需要对不同的框架进行调研。所有的开源存储系统介绍链接存储系统对比目前比较热门的分布式文件系统有如下几种:Ceph,GlusterFS,Sheepdog,Lustre...博文来自:直到世界的尽头

  1、存储器:速度:寄存器----主存----辅存容量:辅存----主存----寄存器2、高速缓存和磁盘缓存:高速缓存:解决cpu与主存之间速度不平衡磁盘缓存:解决主存与磁盘之间速度不平衡,他是...博文来自:水野与小太郎的博客

  阿里妹导读:分布式存储系统是一个非常古老的话题,也是分布式系统里最难、最复杂、涉及面最广的问题之一。本文深入浅出,为大家详细解释相关的重要概念。对于分布式系统新人来说,这是一份不可多得的学习资料。分布...博文来自:阿里技术

  本次分享内容主要包括三部分:(一)分布式存储系统应该具备的能力;(二)阿里云分布式存储系统盘古的介绍;(三)分布式系统技术展望。分布式存储系统应该具备的能力大数据同生活息息相关,大量数据的出现对分布式...博文来自:京庐空间

  在“系统存储”专题中,我们将按照“从上至下”的顺序向读者介绍整个“系统存储”体系。在这个专题中我们将至少介绍机械硬盘的主要结构、硬盘阵列的分类、操作系统的EXT文件系统、NAS文件共享存储方案、分布式...博文来自:JAVA入门中

  业务模型变了,传统存储却无力改变一提到存储系统,大家首先想到的应该是性能是否足够高,先看性能,然后再说其他的。其实在看性能之前,大家往往先看的是规格,配了多少CPU,RAM,IO接口,最大接入硬盘数量...博文来自:大话存储

  之前收集了一些存储产品,最近又重新整理了一下,对他们进行了简单的分类。每个对存储的分类可能不仅相同,我的分类完全按照自己的喜好来分,如和您的分类不同,仅供参考。只是做了搜集和分类,少量产品加了写介绍,...博文来自:cadem的专栏

  第三章存储管理一、结构及概念 存储器是处理器处理的信息的来源于归宿。但任何一种储存设备都无法在速度与容量两个方面同时满足用户的需求。 存储器层次结构:   --gt;储存容量增加,成本减少 ...博文来自:weixin_40858938的博客

  hsluoyc:现在新推出了一个权限框架,叫Casbin.NET()。Casbin.NET采用了元模型的设计思想,支持多种经典的访问控制方案,如ACL、RBAC、ABAC,还支持对RESTful API的控制。现在已经支持C#,同时还支持Go、Java、Python、Node.js、PHP等语言

  bxc136901980:添加一个Windows控件库项目 请问这是个什么项目啊? 是添加一个添加一个Windows窗体控件库吗?新手路过!

本文链接:http://shawntierney.com/fangwenjubuxing/647.html