我要投搞

标签云

收藏小站

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

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

深入理解计算机系统:存储器层次结构

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

  RAM分为两类:静态的和动态的。静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多。一个系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆字节。

  SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的。这个电路有这样一个属性:它可以无限期地保持在两个不同的电压状态之一。其他任何状态都是不稳定的,电路会迅速转移到两个稳定状态中的一个。

  DRAM将每个位存储为对一个电容的充电。和SRAM不同,DRAM单元对干扰非常敏感。

  如果断电,DRAM和SRAM会丢失它们的信息,从这个意义上说,他们是易失的。非易失性存储器即使在断电后仍然保存着他们的信息。

  可编程ROM(PROM)只能被编程一次。PROM的每个存储器单元有一种熔丝,他只能用高电流熔断一次。

  可擦写可编程ROM(EPROM)和电子可擦除PROM(EEPROM)可被多次编程。

  数据流通过总线在处理器和DRAM主存之间来回。总线是一组并行的数据线,能携带地址、数据和控制信号。

  局部性是指:一个编写良好的计算机程序倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

  在一个具有良好时间局部性的程序中,被引用过一次的存储器位置可能在不远的将来再被多次引用。

  在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。

  高速缓存(cache)是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。

  第k层的存储器被划分成较少的块,每个块的大小与第k层的块的大小一样。在任何时刻,第k层的缓存包含第k+1层块的一个子集的拷贝。

  当程序需要第k+1层的某个数据对象d时,它首先在当前第k层的一个块中查找d。如果d刚好缓存在第k层中,那么就是缓存命中。该程序直接从第k层读取d。

  另一方面,如果第k层中没有缓存数据对象d,那么就是我们所说的缓存不命中。此时,第k层的缓存从第k+1层缓存中取出包含d的那个块,如果第k层已满,可能就会覆盖现存的一个块。

  覆盖一个现存的块的过程称为替换或驱逐这个块。被驱逐的块有时也称为牺牲块,决定该替换哪个块是由缓存的替换策略控制的。

  如果第k层是空的,那么对任何数据对象的访问都会不命中,空缓存称为冷缓存,此类不命中称为强制性不命中或冷不命中。

  只要发生了不命中,第k层的缓存就必须执行某个放置策略,确定把它从第k+1层中取出的块放到哪里。对于接近CPU的中高层缓存,它们是用硬件实现的,通常使用更严格的放置策略:将第k+1层的某个块限制放置在第k层块的一个小子集中。例如:第k+1层的块i必须放在第k层的块(i % 4)中。

  然而,这种限制性的放置策略会引起冲突不命中,因为有些对象会映射到同一个缓存块。

  一个嵌套循环可能会反复访问同一个数组的元素,这个块的集合称为工作集,如果工作集的大小超过了缓存的大小,就会发生容量不命中。

  存储器层次结构的本质是:每一层存储设备都是较低一层的缓存。缓存管理的逻辑实现可以是硬件、软件,或是两者的结合。缓存管理负责将缓存划分成块,在不同的层之间传送块,并判断是否命中。

  早期的计算机系统的存储器层次结构只有三层:CPU寄存器、DRAM主存储器和磁盘存储。但由于CPU和主存之间逐渐拉大的差距,在CPU寄存器和主存之间插入了SRAM高速缓存存储器,称为L1高速缓存(一级缓存),后来又加入了L2高速缓存、L3高速缓存。

  每个存储器地址有m位,形成M=2^m个不同的地址,它被组织成一个有S=2^s个cache组的数组,每个组包含E个cache行。每个行包含一个B=2^b字节的数据块,一个有效位来指明该行是否包含有意义的信息,还有t=m-(b+s)个标记位。它们唯一标识存储在该cache行中的块。

  一般而言,高速缓存的结构可以用元祖(S,E,B,m)来描述,高速缓存的容量C指的是所有块的大小之和,标记位和有效位不包括在内,因此,C=S*E*B。

  当一个加载指令指示CPU从主存地址A中读一个字时,它将地址A发送到cache,如果cache正保存着地址A处那个字的拷贝,它就立即将那个字发回给CPU。那么cache如何知道它是否包含地址A那个字的拷贝的呢?

  参数S和B将m个地址分为三个字段,A中s个组索引位是一个到S个组的数组的索引,它告诉我们这个字必须存储在哪个组中。然后,A中t个标记位就指示了在这个组中的哪个行包含这个字。当且仅当设置了有效位并且该行的标记位与地址A中的标记位相匹配时,组中的这一行才包含这个字。一旦我们在由组索引标识的组中定位了由标记所指示的行,那么b个块偏移位就给出了在B个字节的数据块中的字偏移。

  根据每个组的高速缓存行数E,高速缓存被分为不同的类。每个组只有一行的cache称为直接映射cache。

  cache确定一个来自CPU的请求是否命中,然后抽取被请求的字的过程,分为三步:1)组选择,2)行匹配,3)字抽取。

  在这一步中,cache从地址中抽取s个组索引位,这些位被解释成一个对应于一个组号的无符号整数。这个组索引位就是以cache组为元素的一维数组的索引。

  在直接映射cache中,每个组只有一行,当且仅当设置了有效位,且行标记和地址A中的标记相匹配时,这一行中包含了A的一个拷贝。

  另一方面,如果有效位没有设置,或者标记不相匹配,那么我们就出现了缓存不命中。

  一旦命中,我们就知道A就在这个块中的某个地方。最后一步确定所需要的字在块中的哪里。块偏移位提供了所需要的字的第一个字节的偏移。

  我们把cache块看成一个字节的数组,而字节偏移是到这个数组的一个索引。

  如果缓存不命中,那么它需要从存储器层次结构中的下一层取出被请求的块,然后将新的块存储在索引位指示的组中的一个高速缓存行中。如果当前cache组的有效cache行已满,那么必须驱逐一个现存行。由于对直接命中cache来说,每个组只包含有一行,所以直接用新取出的行替换当前的行。

  组相连cache的每个组保存有多于一个的高速缓存行,一个1EC/B的cache通常称为E路组相连高速缓存。

  相比直接映射高速缓存,组相联高速缓存的行匹配稍复杂一些,因为它必须检查多个行的标记位和有效位,以确定所请求的字是否在集合中。我们可以将组相联存储器看做是key,value对的数组,以key为输入,返回与输入的key相匹配的(key,value)对中的value值。在这里key是标记和有效位,而value是块的内容。

  组相联高速缓存中行匹配的基本思想就是组中的任何一行都可以包含任何映射到这个组的存储器块。所以高速缓存必须搜索组中的每一行,寻找一个有效的行,其标记和地址中的标记相匹配。如果高速缓存找到了这样一行,那么我们就命中,块偏移从这个块中选择一个字。

  如果CPU请求的字不在组的任何一行中,那么就是缓存不命中,高速缓存会从存储器中取出包含这个字的块。那么,一旦高速缓存取出了这个块,该替换哪一行呢?当然,如果有一个空行,那它就是个很好的选择,但如果没有空行,那么就必须选择一个非空行,这样的选择会基于一种高速缓存替换策略,如最不常用(LFU)策略,最近最少使用(LRU)策略。所有这些策略都需要额外的时间和硬件,但是,越往存储器层次结构的下层、远离CPU,一次不命中的开销就会更加昂贵,用更好的替换策略使得不命中最少也变得更加划算。

  全相联高速缓存是由一个包含所有高速缓存行的组(即E=C/B)组成的。其结构如下:

  全相联高速缓存中的组选择非常简单,因为只有一个组,所以对应的地址没有组索引位,地址只被划分成了一个标记和一块偏移。

  全相联高速缓存中的行匹配和子选择与组相联高速缓存中的是一样的,它们之间的区别主要是规模大小的问题。因为高速缓存电路必须并行地搜索许多相匹配的标记,构造一个又大又快的相联高速缓存很困难,而且很昂贵。因此,全相联高速缓存只适合做小的高速缓存,例如虚拟存储系统中的翻译备用缓冲器(LTB),它缓存页表项。

  高速缓存对于读的操作很简单。首先,在高速缓存中查找所需字w的拷贝。如果命中,立即返回字w给CPU。如果不命中,从存储器层次结构中较低层中取出包含字w的块,将这个块存储到某个高速缓存行中(可能会驱逐一个有效的行),然后返回字w。

  那么对于写的情况呢?假设我们要写一个已经缓存了的字w**写命中。在高速缓存中更新了它的w拷贝之后,怎么更新w在层次结构中低一层中的拷贝呢?最简单的方法,称为直写**,就是立即将w的高速缓存块写回到紧接着的低一层中。虽然简单,但是直写的缺点每次写都会引起总线流量。另一种方法,称为写回。尽可能地推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把它写到紧接着的低一层中。由于局部性,写回能显著减少总线流量,但是缺点是增加了复杂性。高速缓存必须为每个高速缓存行维护一个修改位,表明这个高速缓存块是否被修改过。

  但如果写不命中呢?一种方法称为写分配,加载相应的低一层的块到高速缓存中,然后更新这个高速缓存块。写分配试图利用写的空间局部性,但是缺点是每次不命中都会导致一个块从低一层传送到高速缓存。另一种方法,称为非写分配,避开高速缓存,直接把这个字写到低一层中。直写高速缓存通常是非写分配的。写回高速缓存通常是写分配的。

  2016-10-16 朱洁 大数据和云计算技术RAM:随机存取存储器(randomaccessmemory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以...博文来自:人生重要的不是所站的位置,而是所朝的方向。

  1、存储器层次结构:2、静态RAM:3、动态RAM:4、DRAM阵列:5、南北桥:6、磁盘:7、对扇区的访问时间:8、格式化的磁盘容量:9、操作系统执行读数据到主存的底层:10、读文件时间:11、适配...博文来自:Remoa的休闲茶馆

  访问主存:数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传送都是通过一系列步骤来完成的,这些步骤称为总线事务。读事务从主存传送数据到CPU。写事务从CP...博文来自:无锡小徐的博客

  3存储器层次结构3.1内容概要简单的计算机系统模型为CPU执行指令,存储器系统为CPU存放指令和数据。在该简单的计算机系统模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存...博文来自:枫潇潇

  组成原理(三)存储器的层次结构 第三章存储器的层次结构3.1存储器分类按存储介质分类(1)半导体存储器:&am...博文来自:的博客

  本章重点是页式虚拟存储器映象及地址变换过程;LRU,FIFO的替换算法;LRU的堆栈分析过程;Cache组相联地址映象和LRU块替换;虚存,Cache的性能分析,要求达到综合应用的水平。本章是重点章。...博文来自:iwainfo的专栏

  本章主要讲解存储器的层次结构,因为它对应用程序的性能有着巨大的影响。主要是围绕着局部性(locality)这个基本属性展开。随机访问存储器(Random-AccessMemory,RAM)分为两类:静...博文来自:Ybt_c_index的博客

  前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理。这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的。这些东西都是...

  图的存储结构除了要存储图中各个顶点本身的信息,还要存储边的信息。常见的图的存储结构有邻接矩阵和邻接表。邻接矩阵是表示顶点之间相邻关系的矩阵。图的邻接矩阵是唯一的,适于存储边的数目较多的稠密图。无向图的...

  在简单的计算机系统模型,CPU执行指令,而存储器系统为CPU存放指令和数据。在简单模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器位置。 存储器系统是一个具有不同容量...

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

  下面首先介绍什么叫数据的存储结构,然后介绍四种存储方式。数据的存储结构:也称为数据的物理结构,是数据的逻辑结构在计算机中的实现。需要指出的是,数据的逻辑结构是从数据元素之间的逻辑关系来分析数据的,与数...

  存储技术    我们在买电脑时都会关注内存、处理器、硬盘等部件的性能,都想内存尽可能大,硬盘最好是固态的。    不知道你有没有遇到过自己写了大半天的文档,因为不小心突然关机了,自己辛苦忙活了几个小时...

  存储器层次结构      好的程序代码不仅要有好的算法,对计算机硬件的充分利用也是很关键的一步。      存储器系统(memorysystem)是一个具有不同容量、成本和访问时间的存储设备的层次结构...

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

  作为一名优秀的程序员,理解计算机中的存储系统-----即计算机的层次存储结构,有利于我们更好的利用程序的局部性原理编写出高效的代码,所以话不多说,先附上一张图说明情况。这就是我们计算机系统中真实的存储...

  第三章存储器的层次结构(一)存储器的分类按存储介质分类(1)半导体存储器:        TTL,MOS,SSD。        易失(2)磁表面存储器:        磁头,载磁体        非...

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

  一、分层设计的基本概念在分解复杂的软件系统时,软件设计者用的最多的技术之一就是分层。在计算机体系机构中,可以看到,到处都有分层的例子,最为典型的,就是存储器的层次结构,如图所示:图1:计算机存储器的层...

  存储容量的定义:存储容量是指主存能存放二进制代码的总位数存储器容量计算公式:  按位计算(b) :    存储容量=存储单元个数x存储字长  按字节计算(B):    存储容量=存储单元个数x存储字长...

  优化性能基本策略高级设计:选择合适的算法和数据结构基本编码原则:编写出编译器能够有效优化以转换成高效可执行代码的源代码消除连续的函数调用。在可能时,将计算移到循环外消除不必要的存储器引用。引用临时变量...

  一,简答题(30分)1,当前计算机系统一般会采用层次结构存储数据,请介绍下典型计算机存储系统一般分为哪几个层次,为什么采用分层存储数据能有效提高程序的执行效率?(10分)  所谓存储系统的层次结构,就...

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

  1、存储器层次结构中的缓存:2、高速缓存存储器:3、直接映射高速缓存:4、为什么用中间的位来做索引?5、i7的高速缓存层次结构:6、高速缓存行、组和块的区别:7、高速缓存友好问题:8、假设有一个如下属...

  第六章存储器层次结构在简单模型中,存储器系统是一个线性的字节数组,CPU能够在一个常数访问每个存储器位置。虽然是一个行之有效的模型,但没有反应现代系统实际工作方式。实际上,存储器系统(memorysy...

  转载地址:开篇编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内...

  I/O子系统的层次结构I/O软件涉及的面非常广,往下与硬件有着密切的联系,往上又与用户直接交互,它与进程管理、存储器管理、文件管理等都存在着一定的联系,即它们都可能需要I/O软件来实现I/O操作。为了...

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

  1)块的放置,在较高层中,一个块能够被放置在哪里?(该层表示存储结构层次)(2)块的标志,如果一个块在较高层中,如何找到它?(3)块的替换,如果块发生缺失,哪个块被替换?(4)写时策略.写操作时会发生...

  参考材料:深入理解计算机系统,第六章6.1.1随机访问存储器RAM1.静态RAM(SRAM)与动态RAM(DRAM)首先。要有的基本概念:SRAM存储一个位的结构要六个晶体管,DRAM存储一个位的结构...

  1DRAM和SRAM比较DRAMSRAM存储单元电容双稳态触发器集成度高低功耗低高价格低高速度慢快刷新有无2主存2.1主存的工作原理SDRAM的关键性能参数:tRCD:RowtoColumnDelay...

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

  存储之间的层级结构如下图:CPUCPU中含有运算器和控制器,他们之间包含大大小小的寄存器,累加寄存器、指令寄存器等等,这些寄存器也算是存储器中的一种,并且速度是整个计算器中存储最快的CacheCach...

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

  存储器山是一种综合研究存储器层次结构的工具。它反映了存储器层次结构中不同层次的带宽。也反映了具有不同的时间局部性与空间局部性的程序的性能。通过分析存储器山的数据,还可以看出存储器系统的部分硬件参数。T...

  本书的目的权衡:成本-性能-功耗新平台:个人移动设备和仓库级计算机新体系结构:多核和GPU关于第五版两个极端:以移动电话和平板电脑到的个人移动设备PMD为客户端,以提供云计算的仓库级计算机为服务器另一...

  存储器管理存储器管理存储器的层次结构程序的装入和链接存储器的层次结构多层结构的存储器系统存储器的多层结构。存储层次至少应具有三级:最高层为CPU寄存器,中间为主存,最底层是辅存。还可以根据具体的功能分...

  原文地址:的一般结构和读写过程1.RAM的一般结构它由三部分电路组成:1)行、列地...

  首先,RAM翻译为随机存取存储器,是个垃圾翻译,能说点人话吗? 依据我的经验,如果不明白一个东西是什么,那就去找英文资料来看, 英文适合描述准确的东西,而中文,适合描述不清不楚的东西,比如暧昧...

  MDR和MAR分别是数据寄存器和地址寄存器。所谓的主存就是内存。我们印象中很重要的硬盘只算辅存而已。CPU只能直接访问内存、缓存,只能通过IO设备间接访问辅存。...

  前言        我们大多数的编码者并不清楚存储器层次结构和编写程序到底如何联系起来,或者只是简单的以为程序的执行无非和内存或者磁盘有关系。的确,我们可以把程序的执行简单的理解为从磁盘加载,然后再到...

  首先介绍了下图的抽象数据类型;然后重点介绍了图的存储结构,主要是五种:邻接矩阵、邻接表、十字链表、邻接多重表和边集数组。邻接矩阵用一维数组存储顶点信息,用二维数组来存储边的信息;邻接表使用数组加链表的...

  即将迎来双十一,大学四年注定要一个人走完了。在做uboot移植时代码的重定向和mmu实验时对链接地址和物理地址的关系傻傻分不清,我联想到学习计算机组成原理中的虚拟存储器时有虚地址(逻辑地址)、实地址(...

  存储器系统(memorysystem)是一个具有不同容量、成本和访问时间

  之前写过一片文章介绍静态存储的,叫《深入理解“静态”和static关键字》,感兴趣的可以参考一下;本文的重点在于二者的存储特点,及从内存分配角度分析深入理解“静态”和static关键字本文纯属是一个总...

  最近很多人问,如何将内网的摄像机流媒体数据发布到公网,如果用公网与局域网间的端口映射方式太过麻烦,一个摄像机要做一组映射,而且不是每一个局域网都是有固定ip地址,即使外网主机配置好了每一个摄像机的映射...

  前提:     我下载的Python是windows版本的,演示过程是在win10 64位操作系统上安装的。 1、下载     进入官网

  对于J2EE项目导入导出Excel是最普通和实用功能,本工具类使用步骤简单,功能强大,只需要对实体类进行简单的注解就能实现导入导出功能,导入导出操作的都是实体对象. 请看一下这个类都有哪些功能:   ...

  原文地址:因为需要用,所以才翻译了这个文档。但总归赖于英语水平很有限,翻译出来的中文有可能...

  帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...

  练习1:实现 first-fit 连续物理内存分配算法 在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合并操作。提示:在建立空闲页块链表时,需要按照空闲页块起始地址来...

  相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。        常用的算法的时间复杂度和空间复杂度 一,求解算法的时间复杂度,其具体步骤是: ⑴ 找出算法...

  webService学习(二)—— 调用自定义对象参数 本文主要内容: 1、如何通过idea进行webService Client的简单实现(不再使用wsimport的方式,其实是ide帮我们做了...

  SSH是一种以安全、加密方式连接远程主机或服务器的方法。SSH服务器接受从有SSH的客户机的连接,允许操作者象在本地一样地登录系统。你可以用SSH从远程运行shell和X程序。它是一种服务器维护管理的...

  概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自...

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...

  我走小路的博客将Excel文件导入数据库(POI+Excel+MySQL+jsp页面导入)第一次优化

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...

  本文的目的是用C实现生成Gabor模版,并对图像卷积。并简单提一下,Gabor滤波器在纹理特征提取上的应用。 一、什么是Gabor函数(以下内容含部分翻译自维基百科)   在图像处理中,Gabor...

  Weka为一个Java基础上的机器学习工具,上手简单,并提供图形化界面,提供如分类、聚类、频繁项挖掘等工具,本篇文章主要写一下分类器算法中的J48算法及其实现。 一、算法 J4...

  目前市场上比较多的应用在用户卸载后会弹出意见反馈界面,比如360手机卫士,腾讯手机管家,应用宝等等,虽然本人不太认同其交互方式,但是在技术实现上还是可以稍微研究下的。其实要实现这个功能,最主要的就是监...

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...

  我们可能经常会用到这一功能,比如有时,我们不希望用户没有进行登录访问后台的操作页面,而且这样的非法访问会让系统极为的不安全,所以我们常常需要进行登录才授权访问其它页面,否则只会出现登录页面,当然我的思...

  沉默的鲨鱼的专栏jquery/js实现一个网页同时调用多个倒计时(最新的)

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...

  使用taocode作为SVN的服务器,地址在网站上注册和登录 新建一个项目 输入相关信息 复制这个地址,一会要用 下一步在MyEclipse中向SV...

  以下从Java角度解释面试常见的算法和数据结构:字符串,链表,树,图,排序,递归 vs. 迭代,动态规划,位操作,概率问题,排列组合,以及一些需要寻找规律的题目。 1. 字符串和数组 字符...

  自己整理编写的逻辑回归模板,作为学习笔记记录分享。数据集用的是14个自变量Xi,一个因变量Y的australian数据集。 1. 测试集和训练集3、7分组 australian ...

  一、概述最近在springboot项目引入thymeleaf模板时,使用非严格标签时,运行会报错。默认thymeleaf模板对html5标签是严格检查的。二、在项目中加NekoHTML库在Maven中...

  一、代理模式为某个对象提供一个代理,从而控制这个代理的访问。代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。代理类负责请求的预处理、过滤、将请求分配给委托...

  第五 添加数据库管理员数据与用户数据 这个比较无聊 用java拼接了一下sql语句 然后写入数据库 这个放在附件上传就好了 第六 管理员与用户的登入验证 1、验证码。验证码一般就是...

  花了一天!因为要用Keil,又苦于主题不好看,一个个换主题又嫌麻烦,就写了这个东西。代码有点多,先放出配置步骤,源码在文末。V1.0,没有图片预览功能,但是随插件附赠几个类似VS的配色方案。 本是按...

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