精华内容
下载资源
问答
  • 什么叫向下兼容

    千次阅读 2014-06-25 21:41:51
    向后兼容(Backward Compatibility),又称作向下兼容(Downward Compatibility)。在计算机中指在一个程序或者类库更新到较新的版本后,用旧的版本程序创建的文档或系统仍能被正常操作或使用,或在旧版本的类库的...
    C++ had to be backwards-compatible with C
    向后兼容(Backward Compatibility),又称作向下兼容(Downward Compatibility)。在计算机中指在一个程序或者类库更新到较新的版本后,用旧的版本程序创建的文档或系统仍能被正常操作或使用,或在旧版本的类库的基础上开发的程序仍能正常编译运行的情况。
    向后兼容(Backwards compatibility)是一个以部件标准为基础的性能要求,是TIA最新的标准规范。向后兼容的组件既要符合其所属分类的性能要求,同时也要符合低于其分类的所有性能要求。比如USB 2.0规范是可以向后兼容版本更低的USB 1.1标准的。
    对于软件来说,向下兼容的意思是,较高版本的程序能顺利处理较低版本程序的数据。拿著名的动画制作软件 Flash的两个版本 Flash 5 与 Flash MX 2004 来说,这两个版本虽然保存出来的文件都是 .fla,可是文件内容的结构有所不同。尽管如此,Flash MX 2004 仍然能处理 Flash 5 保存的 fla 文件,我们就说 Flash MX 2004 是向下兼容的。
    但情况并不总是这样,有时为了考虑向下兼容会带来一些累赘,尤其是进行过较多升级后。Python 3.0 便是放弃向下兼容的一个例子。
    如果一个软件的旧的版本保存的文档不能被新版本读取,即使厂商提供了额外工具对旧文档进行不可逆转的转换,这也不能称作向下兼容。这可能是软件厂商的一种市场战略,强迫用户购买升级软件,随着升级用户逐渐增加,逐渐地使得旧软件能读取的文档越来越少
    展开全文
  • 向后(向下兼容

    2020-04-10 10:01:50
    或许有人也和我有过同样的疑问,明明是兼容以前的版本为什么兼容而不向前。这个疑惑在我学习神经网络的时候解开了,神经网络中有前传播和后(反向)传播,其中前传播就是从输入层到输出层的代价函数...

    或许有人也和我有过同样的疑问,明明是兼容以前的版本为什么是向后兼容而不叫向前。这个疑惑在我学习神经网络的时候解开了,神经网络中有前向传播和后向(反向)传播,其中前向传播就是从输入层到输出层的代价函数计算,反向传播便是输出层到输入层的梯度计算方向如下图所示:
    在这里插入图片描述
    所以,与前向比起来,我们就能理解为什么向后兼容的方向了。(ps:感觉造成这种困惑的主要是因为我们表达“未来”时用的有一个词是“以后”,就直觉性地定死“后”的方向了
    下面是百度百科解释:
    向下兼容又称向后兼容(Backwards compatibility),计算机术语。向下兼容常常是相对于向上兼容而言的,两者在兼容的方向性上是相反的,因此这两个概念是不同的。向下兼容(Downward Compatibility),又称作向后兼容(Backward Compatibility)。在计算机中指在一个程序或者类库更新到较新的版本后,用旧的版本程序创建的文档或系统仍能被正常操作或使用,或在旧版本的类库的基础上开发的程序仍能正常编译运行的情况。向下兼容可以使用户在进行软件或硬件升级时,厂商不必为新设备或新平台从头开始编制应用程序,以前的程序在新的环境中任然有效。

    展开全文
  • 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是 “忘记了”操作系统要求分配,也可能是程序自己在某个时候...
  • 关于GDT的理解

    2021-02-23 15:40:38
    其实在早期x86系统中是没有GDT的,GDT的引入是为了向下兼容和引入保护模式才出现的产物。我们知道当计算机加点时,CPU最开始是运行在实模式上的。要想从实模式运行到保护模式则需要引入GDT。 声明:以下关于GDT的...

    在网上看了挺多关于GDT的描述,大都花了大量的篇幅讲述其具体的结构,这里只是单纯从为什么需要GDT来分析GDT的出现。

    什么是GDT?

    GDT的全称叫做Global Descriptor Table,中文名叫全局描述符。其实在早期x86系统中是没有GDT的,GDT的引入是为了向下兼容和引入保护模式才出现的产物。我们知道当计算机加点时,CPU最开始是运行在实模式上的。要想从实模式运行到保护模式则需要引入GDT。

    声明:以下关于GDT的理解不涉及到其具体的内部数据结构,如GDT的内部数据存储格式等等。

    为什么会出现GDT?

    对于x86操作系统,由于电脑开机时是处于实模式状态下,在实模式状态下所有的内存都是允许被访问操作的,并且在实模式中只能操作20位的地址总线,也就意味着只能访问1MB大小的内存,而实模式下,使用的是16位的寄存器,所以在实模式下访问内存都需要一个16位段寄存器+16位偏移地址进行访问20位的地址空间。而到了32位系统时,则由于CPU无法访问高于1MB的内存就需要进行升级。此时就产生出了GDT。

    不考虑兼容性的情况下

    假设下,如果不考虑向下兼容,则首先需要32位的地址总线,并且需要一个可以进行寻址的32位段寄存,并且由于寄存器和地址总线的位数相同,完全可以直接用寄存器的值进行寻址,而不需要使用段模式寻址。但是,这样会导致之前所有的程序都无法使用,因为过去原有的程序的寻址方式都发生了改变。并且由于32位寄存器可以访问32位的所有地址(也就意味着进程可以访问任意的物理地址),所以只要能控制该寄存器就可以访问任意的地址,也就对内存没有保护的作用。

    GDT的产生

    ​ 为了能够保证向下兼容并且能够对内存进行保护和划分,全局描述符表就产生了。

    ​ 我们知道在实模式下只能访问1MB的内存,并且使用的段寄存器+偏移地址的方式进行寻址,并且这种访存方式是不存在限制的。为了能够对内存的操作加以限制(也就对内存进行保护),首先想到的方式就是通过查询一个中间表G1表G1存储了每个地址段的访问权限,例如程序A想要访问0x0F000的内存,则可以先查询表G1,查看该内存地址是否可以让程序A进行访问。通过这种方式就可以对内存进行保护,这样就解决了内存保护的问题。

    ​现在则需要在向下兼容的基础上访问更大的地址空间,由于向下兼容的缘故,所以段寄存器使用的是16位的,那么如何使用16位的段寄存器去寻址32位的内存空间呢?还是同样的方法,就是让段地址+偏移地址不在访问真实地址(这里指程序想要访问的物理地址),而是访问一个中间表G2,而G2则在内存中保存了想要访问的真实地址段,获取到真正的物理地址后由后续的32位寄存器进行访存操作就可以通过16位段寄存器完成4GB的内存访问。而将中间表G1中间表G2合并就是全局描述符表(GDT)。而此时的段寄存器就不再是用于存储段地址了(此时段寄存器变为段选择子),而是用于存储访问GDT的下标,所以GDT的最大长度取决于段寄存器使用多少位来表示下标。

    总结

    ​ GDT保存了内存的访问权限、拓展高地址段、段地址大小等数据。在x86中,每个GDT项大小为64位,而段选择子使用13位用于偏移查询,所以GDT有8192(2的13次方)个GDT项。当采用段式内存管理时,则此时GDT项中的地址存储的就是真正的物理地址。而在页式管理中,GDT中存储的数据就不再是物理地址了,而是页表的地址和偏移(所以也把这种地址叫做线性地址);之后再从页表获取到的地址则是真正的物理地址。

    展开全文
  • ECMAScript6语法

    2016-11-05 21:38:00
    ES6也ECMAScript2015,2015-6月正式发布,向下兼容ES5.1 ES6来编写Node.js程序 ES6让JavaScript语言能够开发复杂应用程序 严格模式 ES5中出现的模式 严格模式的目的: 消除Javascript语法的...
    • 为什么要学习ES6
      • ES6也叫ECMAScript2015,2015-6月正式发布,向下兼容ES5.1
      • ES6来编写Node.js程序
      • ES6让JavaScript语言能够开发复杂应用程序
    • 严格模式

      • ES5中出现的模式
      • 严格模式的目的:

        • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
        • 消除代码运行的一些不安全之处,保证代码运行的安全;
        • 提高编译器效率,增加运行速度;
        • 为未来新版本的Javascript做好铺垫
        • 参考

          严格模式的限制严格模式的限制

      • 开启严格模式

        • 在作用域的最上面 "use strict"
          • js文件的最开头
          • function的开头
    • 变量和常量

      • 变量 let

        • 没有变量提升,必须先定义再使用
        • 有块级作用域
        • 解决问题

          window.onload = function () {
                    var ul = document.getElementById("list");
          
                    var lis = ul.getElementsByTagName("li");
          
                    for(let i = 0, length=lis.length; i < length; i++) {
          
          //                (function (i) {
          //                    lis[i].onclick = function () {
          //                        console.log(i);
          //                    }
          //                })(i);
          
                        lis[i].onclick = function () {
                            console.log(i);
                        }
                    }
                }
          
      • 常量 const

        • 常量的一旦赋值,不能改变,比如:获取包的时候,用const来定义变量
        • 有块级作用域
        • 没有变量提升,先定义再使用
        • 不可以重复定义
        • 必须有初始值,否则报错

        • 在Node.js中,所有接收require()获得的对象都使用const修饰

    • string的扩展方法
      • includes() 返回布尔值,是否包含,第二个参数从第几个位置开始查找
      • startsWith() 返回布尔值,是否以...开头,第二个参数从第几个位置开始查找
      • endsWith() 返回布尔值,是否以...结尾,第二个参数, 前n个字符以...结尾
      • repeat() 重复次数
    • 模板

      • 示例1:
        let name = "steve jobs";
        let str = `hello ${name}`;
        
      • 示例2:

        let obj = {name:"jobs", age: 18, salary: 1};
        
        let template = `
          姓名:${obj.name}
        年龄:${obj.age}
        工资:${obj.salary}
        `.trim();
        
      • 示例3:生成页面

    • 箭头函数

      • 格式: => (读作:goesto) 左边是参数,右边是方法体
      • 演变:function f(x,y) {} -----> 演变成箭头函数
         (x, y) => {}
         语法格式简单
        
      • 箭头函数的几种形式:

        • 没有参数 () => console.log("hello");
        • 有一个参数 a => ++a;
        • 有多个参数 (a,b) => a + b;

        • 方法体有多条语句 (a,b) => { a=1; b=2; console.log(a+b)};

      • 箭头函数的注意事项
        • 箭头函数不会影响this的指向
        • 箭头函数根本没有自己的this,箭头函数内部的this就是外层代码块的this
        • 箭头函数中没有arguments对象,箭头函数内部的arguments指向外层函数的arguments
        • 不可以当做构造函数

    转载于:https://www.cnblogs.com/bici/p/6034122.html

    展开全文
  • c++多态

    2017-10-21 13:42:00
    多态应该是各种面试中都会问的问题了,那么多态肯定很重要,具体有什么作用呢?我在这里记录我的了解,以后不断补充 ... 派生类的功能可以被基类的方法或引用变量所调用,这叫向兼容,可以提高可扩充性...
  • Java复习之多态

    2020-06-22 14:56:55
    派生类的功能可以被基类的方法或引用变量所调用,这叫向兼容,可以提高可扩充性和可维护性。 //多态的真正作用,以前需要用switch实现 多态的分类 1、编译时多态,即方法的重载,从JVM的角度来讲,这是一种静态...
  • 5. 8086对存储器的管理为什么采用分段的办法? 答:8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围 (1MB,20位地址)。若不用分段方法,16位地址只能寻址64KB空间...
  • 实现上会保持向下兼容)。下面有如下选项,请投票: <ol><li>fragment。该选项没有s- prefix,如果标准增加了fragment标签,就又冲突了。该选项就是判断标准会不会增加fragment标签...
  • 13.什么叫应用程序域? 答:应用程序域可以理解一种轻量级进程。起到安全的作用。占用资源小。 14.CTS、CLS、CLR分别作何解释? 答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。 15.什么是...
  • AMI公司2006年开发的BIOS版本信息,华硕主板采用的CMOS并修正了 0507芯片,CPU 英特尔 酷睿技术双核 型号6400 主频2.13GHz,总共处理速度4.01GHz Press DEL TO run Setup 按del进入CMOS Press f8 for bbs ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    C#--微软.NET的第一语言 本书着重介绍语言本身,比较少涉及应用,不错的入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    <<page 1>> page begin==================== 目 目目 目 录 录录 ... 是 越今天各自营的 ... 超越今天各自营的超越今天各自营的 ... 超越今天各自营的 Web 站点 ...这一天 微软公司正式推出了其一代...
  • * [为什么要用 Docker]($ch3.2.md) * [第4章. 基本概念]($ch4.md) * [镜像]($ch4.1.md) * [容器]($ch4.2.md) * [仓库]($ch4.3.md) 然后保存。保存成功之后,程序会帮你创建如"第0章. 前言",并把文档标识设置为...
  • 1-8 什么叫二进制?使用二进制有何优点和缺点? 解: 二进制是基数2,每位的权是以2 底的幂的进制,遵循逢二进一原则,基本符号0和1。采用二进制码表示信息,有如下几个优点:1.易于物理实现;2.二进制数运算...
  • c#学习笔记.txt

    热门讨论 2008-12-15 14:01:21
    看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也不是什么新玩意儿,非Sun独创,有文证:华山论剑:C#对Java。另外他对我上一集中说...
  • CSS网站布局实录 (第二版)PDF版

    热门讨论 2012-12-10 18:46:01
    1.6.4 为什么不直接使用到XML 1.6.5 学习CSS布局比表格困难吗 1.6.6 CSS布局是否意味着必须手写代码 1.6.7 什么叫网站重构 1.6.8 使用Web标准之后就不再存在兼容性问题了吗 1.6.9 有没有Web标准方面的优秀图书或网站...
  • 作物丰茂,多层次的农业经济构架提供了有利的条件,又有得天独厚的贸易大港广州作依托,所以在两宋时代,珠三角洲的开发已初具规模,南宋时已成为岭南著名的粮食产区和经济作物基地,明代后期已开始商品化的方向...
  • 本书在个人电脑用户,系统而详细地讲解了电脑的常见故障,同时让读者更直接、更深刻地了解电脑故障产生原因和排除方法,从而达到能够自己解决电脑故障的目的。 本书分10章,共有1000多个实例,编写时从产生电脑...
  • windowsnt 技术内幕

    2014-04-09 20:47:17
    理解特殊访问权限 NTFS文件和文件夹的拷贝和移动 删除具有“禁止访问”权限的文件 为什么修改权限不能马上起作用 理解微软公司的打印术语 理解NT打印权限 设置打印机权限 创建一个新打印机 共享一个已经存在的打印机...
  • 一. 什么是蓝牙? 蓝牙的英文是Bluetooth,它是以11世纪那个"Blue- tooth"的丹麦国王而命名的。1998年5月,爱立信、IBM、Intel、诺基亚和东芝等公司共同提出了一项近距离无线数字通信的技术标准,即蓝牙(Bluetooth...
  • 电容是晶体的匹配电容,只有在外部所接电容匹配电容的情况,振荡频率 才能保证在标称频率附近的误差范围内。 最好按照所提供的数据来,如果没有,一般是30pF 左右。太小了不容易起 振。这里我们选择30pF 的瓷片...
  • java 面试题 总结

    2009-09-16 08:45:34
    为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...
  • 咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就Java怎杵,得到了其他人的赞同, 于是,Java这个名字就这样传开了。当然对于传说,了解一下就好了,不必过于认真 2:Java大事记 PDF文件使用" pdfFactory Pro"...
  • 3 |" ]' a: f6 V# D$ W运行活动目录安装向导将Windows 2000 Server升级域控制器以创建一个新域,或者现有的域添加其他域控制器。2 E5 K. u' s+ W: ?7 g7 L # u) H2 p, | f 1.安装域里的第一台域控制器 4 w9 {' z...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    本文以Mandrake Linux 9.1(Kenrel 2.4.21)例,介绍Linux的安装和登录命令。 immortality按:请用ctrl+f在本页中查找某一部分的内容或某一命令的用法。 ----------------------------------------------------...
  • SSO-WebDemo

    2013-08-12 20:25:57
    为什么说WEB-SSO比较容易实现呢?这是有WEB应用自身的特点决定的。 众所周知,Web协议(也就是HTTP)是一个无状态的协议。一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义。用户在浏览器的地址栏输入...
  • Proteus仿真—40个单片机初学程序.

    热门讨论 2009-04-13 13:00:56
    因此,只要把控制码建成一个表,而利用MOVC A,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如图所示: 5. 程序框图                       图4.5.2 7. C语言源程序 #...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    将移动终端的评价标准从硬件软件转变,极大的激发了软件开发者的热情。 � Android 的源代码遵循 Apache V2 软件许可,而不是通常的 GPL v2 许可。有利于商业开发。 � 具有强大的 Linux 社区的支持。 Android ...
  • Egret 的 童话 与 现实

    2021-01-03 14:33:25
    <p>7yue老师的文章里第一个阐述的问题就是 Egret 为什么选择 TypeScript ,总结一下有以下几点: <ol><li>TypeScript 是 ES6 的超集,将来ES6普及时,可以平滑的过渡到ES6</li><li>TypeScript 弥补了...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

为什么叫向下兼容