Atitit.软件兼容性原理与实践 v3 q326.docx

1. 架构兼容性1

2. Api兼容性1

2.1. 新api  vs  修改旧的api1

3. Web方面的兼容性(js,html)1

3.1. Threadlocal2

4. 数据库表兼容性2

4.1. 2. 扩展表模式2

5. 兼容性策略2

5.1. Atitit.兼容性的“一加三”策略2

5.2. 3. 同时运行模式3

5.3. 3.1. 完美的后向兼容性3

5.4. 3.2. 虚拟机模式3

5.5. 3.3. 版本兼容性模式3

5.6. 4. 向前兼容(为升级预留足够余地)5

5.7. 5. “向前兼容”理念5

5.8. 6. 专门处理的软件列表5

6. ref5

1. 架构兼容性

2. Api兼容性

2.1. 新api  vs  修改旧的api

最好是增加新的api。。这样不用调整老的api..添加测试工作...

当然一些很小的的调整可以直接调整老的api

3. 接口兼容性

.接口和抽象类在C#和java中都差不多,这里提一下接口设计和抽象类设计的区别之处。如果你更改了一个接口的设计,比如增加了一个方法,使用你以前的代码的用户将不得不改变他们的代码,否则不能运行和编译。但是如果是一个抽象类,你可以提供一个含默认实现的方法,用户的代码则不需要改变。

批注:这个事实在Java和C#中都是一样的。但是,就接口和抽象类(即使包括骨架类)的选用依据可不是这个,这只是一个表现而已。再有,接口一旦发布了,就是你对外的一种承诺。之后即使是版本升级也不能再做任何改动,哪怕是增加新方法。那非要增加怎么办?如果同时提供的骨架类也控制在你的手里,可以通过在这个骨架类(其实就是抽象类的一种用法,骨架类实现接口,实际类再继承这个骨架类,骨架类中可以为实际类实现一些通用的、或默认的方法)提供一份新增方法的默认实现来达到目的。但这并不是明智的,因为版本升级时需要增加的新方法,往往是一些实实在在的干活儿的方法,在骨架类中给出一个默认实现往往没什么实际意义。更好的做法,是写一个新的接口去继承原来的接口,把新增的方法在子接口中声明。这样可以保持100%向前兼容,需要实现新方法的类属于伴随此次接口升级或日后要取实现的类。

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

4. Web方面的兼容性(js,html)

4.1. Threadlocal

它还有一些类似的方式用来使用,就是在框架级别有很多动态调用,调用过程中需要满足一些协议,虽然协议我们会尽量的通用,而很多扩展的参数在定义协 议时是不容易考虑完全的以及版本也是随时在升级的,但是在框架扩展时也需要满足接口的通用性和向下兼容,而一些扩展的内容我们就需要 ThreadLocal来做方便简单的支持。

简单来说,ThreadLocal是将一些复杂的系统扩展变成了简单定义,使得相关参数牵连的部分变得非常容易,以下是我们例子说明:

5. 数据库表兼容性

5.1. 2. 扩展表模式

6. 兼容性策略

6.1. Atitit.兼容性的“一加三”策略

“通过移除陈旧代码降低编译器维护成本,Java9 javac 将不再支持Java 1.5以及更早的代码。JDK9的“一加三”策略意味着该版本的javac会支持1.9/9, 1.8/8, 1.7/7和1.6/6 中的选项。该策略会在JDK10中延续。”

标题是我对新闻的解读。以下是我的理解。
这意味着,许多java最初的设计不合理会修改了。
将带来许多源代码级的不兼容性。
一些表达式,可能在早期编译结果false,以后可能变成true了。
比如String的==
也意味着Integer i = new Integer(0);Integer j = new Integer(0);
i==j以后也可能是true了。

作者::  ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

6.2. 3. 同时运行模式

 网上冲浪,用户用的最多的当然是浏览器,而Windows中内置的IE浏览器却着实让用户用的不爽,于是呼,在国内许多双核浏览器便大行其道。这 不,微软也觉得不好意思了,在Windows 10中新增加了一个浏览器-Spartan,这款整合了微软自家 Cortana 数字助理的新浏览器有桌面和移动两个版本,并深度融合了 Bing 搜索服务,让用户的搜索体验更加无缝。

  它将集成OneNote功能,方便用户进行记录,标注与分享,支持PDF文件显示,此外还有阅读模式等等的特性有消息称它将支持Chrome扩展程序。全新游览器开发代号“斯巴达”。

不过消息显示,新老浏览器初期将会共存,一方面是避免突然切换造成兼容性问题,另一方面也可以给用户更灵活的选择,直到微软确定新浏览器足以取代IE,才会彻底转换过去。

6.3. 3.1. 完美的后向兼容性

6.4. 3.2. 虚拟机模式

6.5. 3.3. 版本兼容性模式

6.6. 4. 向前兼容(为升级预留足够余地)

6.7. 5. “向前兼容”理念

所 以对于已经处于垄断地位的公司,要居安思危,更是要敢于革自己的命,方能迎来更长久的成功。比如早期的英特尔公司虽然在存储领域占有垄断地位,但是其看到 CPU市场更长久的未来,毅然投入到CPU的研发之中,才有了今天的成功。但是同样是英特尔公司,在CPU方面抱着“向前兼容”理念,让Atom芯片背着 枷锁而跳舞,在全球嵌入式芯片的市场,让ARM的芯片独领风骚。同样微软在移动操作系统领域,背着兼容Windows操作风格的负担,让微软的移动操作系 统远远落后于专为移动设备而设计的iOS和安卓系统。相反谷歌却是让人称道,其在保持自己在搜索领域优势的基础上,不仅成功推出了安卓操作系统,目前又在 机器人、智能汽车、可穿戴设备等领域提前布局。

6.8. 6. 专门处理的软件列表

 我首先是从一个流行的游戏-模拟城市的开发者那边听到这样的事情的。他说模拟城市有个很致命的bug:它在释放完内存之后便立刻重新使用内存。在DOS环境下,这样的做法幸好不会是个什么问题。但是,在Windows下面,一个程序释放的内存,很可能会立即被另一个程序获取并使用,所以这样的做法是绝对不允许的。Windows开发团队的测试人 员测试了若干个流行的应用程序,并且搞定了它们,但是模拟城市一直出现问题。他们将问题反映给了开发人员。后者将模拟程序给研究了个彻底,找出问题的根 源,并添加了特殊的代码去检查模拟城市是否有运行,如果有运行的话,便将内存管理器运行为特殊模式,在此模式下,程序能够使用释放过的内存。

  这并不是什么稀罕的事情。Windows的测试团队是庞大的,而他们最重要的责任就是要确保所有人都可以顺利的升级他们的操作系统,不管他们安装了哪些应用软件,无论这些应用软件是否使用了不公开的旧系统接口还是依赖有问题的系统资源。实际上,如果你去查阅Windows注册表中的软件兼容性部分,你会发现里面有很长的一个被专门处理的软件列表。新版Windows会专门模拟一些旧系统中的bug使得这些软件可以正常运作。

7. ref

Java中ThreadLocal无锁化线程封闭实现原理 – 码农网.htm

atitit.提升兼容性最佳实践 p825.doc - attilax的专栏 - 博客频道 - CSDN.NET.htm

读《C# 和 Java 的比较》有感 - 从Java看编程 - ITeye技术网站.html

atiend

Atitit.软件兼容性原理与实践 v3 q326.docx的更多相关文章

  1. Atitit.软件兼容性原理与实践 v5 qa2.docx

    Atitit.软件兼容性原理与实践   v5 qa2.docx 1. Keyword2 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法,新人新办法,只新增,少修改 ...

  2. Atitit Atitit.软件兼容性原理----------API兼容 Qa7

    Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...

  3. Atitit.ide技术原理与实践attilax总结

    Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...

  4. Atitit 软件国际化原理与概论

    Atitit 软件国际化原理与概论 语言和文化习俗因地域不同而差别很大.对某一特定的地域的 语言环境称为"locale".它不仅包括语言和货币单位,而且还包括 数字标示格式, 日期 ...

  5. Atitit s2018.2 s2 doc list on home ntpc.docx  \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat

    Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系  法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别   ...

  6. Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx  Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api

    Atitit s2018.6 s6  doc list on com pc.docx Atitit s2018.6 s6  doc list on com pc.docx  Aitit algo fi ...

  7. Atitit r2017 r6 doc list on home ntpc.docx

    Atitit r2017 r6 doc list on home ntpc.docx 驱动器 D 中的卷是 p2soft 卷的序列号是 9AD0-D3C8 D:\ati\r2017 v4 raf\r2 ...

  8. Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc dtS312 s2018 s3f doc compc\Atitit PathUtil 工具新特性新版本 v8 s312.docx s2018 s3f doc compc\Atitit 操作日

    Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc ...

  9. Atitit.提升api兼容性的方法 v3 q326

    Atitit.提升api兼容性的方法 v3 q326 1. Atitit.兼容性的“一加三”策略1 2. 2. 扩展表模式1 3. 3. 同时运行模式1 3.1. 3.1. 完美的后向兼容性2 3.2 ...

随机推荐

  1. NPOI 读写Excel

    实例功能概述: 1.支持Excel2003以及2007 2.支持Excel读取到DataTable(TableToExcel) 3.支持DataTable导出到Excel(TableToExcel) ...

  2. 使用Memcached提高.NET应用程序的性能

    在应用程序运行的过程中总会有一些经常需要访问并且变化不频繁的数据,如果每次获取这些数据都需要从数据库或者外部文件系统中去读取,性能肯定会受到影响,所以通常的做法就是将这部分数据缓存起来,只要数据没有发 ...

  3. Phone Gap [error] cmd: Command failed with exit code 1

    下投票 我不知道如何解决这个问题,但尝试了这一点,将解决肯定. 这是由于ANT工具找不到的tools.jar在JRE lib目录下.当我从复制的tools.jar JDK的lib目录下,以JRE li ...

  4. 查找SQL数据表或视图中的字段属性信息

    一.只支持表,非常牛逼的 SELECT a.name,(case when (SELECT count(*) FROM sysobjects WHERE (name in (SELECT name F ...

  5. 問題排查:.NETSystem.Runtime.Remoting.RemotingException: TCP 信道协议冲突: 应为报头。

    這個錯誤訊息是在一個 Web Serveice 的偵錯階段發生的 目前還未找到原因,環境如下: 作業系統:Windows 10 x64 企業版 (簡中) 開發工具:Visual Studio 2013 ...

  6. 专题:『Channel Bonding/team』——EXPERIMANTAL!!!

    Linux内核支持的多网卡聚合方法——bond.team bond 优点:经过长时间的实践检验,具有较高的稳定性:kernel-2.4及以上内核均广泛支持 缺点:需要通过sysfs或发行版定制的网卡配 ...

  7. C++变量的左值和右值

    变量和文字常量都有存储区,并且有相关的类型. 区别在于变量是寻址的,对于每一个变量,都有两个值与其相关联 1  它的数据值,存储在某个内存地址中.有时这个值也被称为对象的右值 文字常量和变量都可被用作 ...

  8. WebBrowser 中遍历所有的frames

    枚举所有iframe的IWebBrowser2 // Get the IDispatch of the document. // LPDISPATCH lpDisp = NULL; lpDisp = ...

  9. Java 第三章 选择结构1

    选择结构(一) 会使用基本的 if 选择结构 掌握逻辑运算符,掌握多重 if 选择结构 , 掌握嵌套 if 选择 结构 为什么需要 if 选择结构 例如: 如果张浩的 java 考试成绩大于 98分, ...

  10. Winpcap构建用户级网桥

    Winpcap构建网桥 根据winpcap sdk中的user-level-bridge用户级网桥 |机器1                 |                  |机器2   | | ...