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

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

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

 

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

22. 扩展表模式1

33. 同时运行模式1

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

3.2. 3.2. 虚拟机模式2

3.3. 3.3. 版本兼容性模式2

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

55. “向前兼容理念3

66. 专门处理的软件列表3

7api  vs  修改旧的api4

8Threadlocal4

9ref5

 

 

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/

 

2. 2. 扩展表模式

3. 3. 同时运行模式

 

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

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

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

 

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

3.2. 3.2. 虚拟机模式

3.3. 3.3. 版本兼容性模式

 

 

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

5. 5. “向前兼容理念

 

 

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

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

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

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

 

 

7. api  vs  修改旧的api

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

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

 

 

8. Threadlocal

 

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

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

 

9. ref

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

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109106.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BZOJ 2049: [Sdoi2008]Cave 洞穴勘測 LCT[通俗易懂]

    BZOJ 2049: [Sdoi2008]Cave 洞穴勘測 LCT

    2022年2月3日
    52
  • String字符串转JSONObject顺序不对,解决「建议收藏」

    String字符串转JSONObject顺序不对,解决「建议收藏」StringgoodsSpec={“21445″:”套装德绒紫”,”21447″:”S”}普通模式JSONObjectjsonObject=JSONObject.parseObject(json);或JSONObjectgoodsSpecs=jsonObject.getJSONObject(goodsSpec);转换返回{“21447″:”S”,”21445″:”套装德绒紫”}原因JsonObject内部是用Hashmap来存储的,所以输出是按key的排序来的,如果要让J

    2022年8月23日
    6
  • git 修改用户名以及邮箱_注册github账号

    git 修改用户名以及邮箱_注册github账号1、查看命令gitconfig–local–list2、查看当前用户名gitconfiguser.name3、查看邮箱gitconfiguser.email4、修改用户名gitconfiguser.namexxx5、修改邮箱gitconfiguser.emailxxx

    2022年9月6日
    2
  • mysql timestamp[通俗易懂]

    mysql timestamp[通俗易懂]一般建表时候,创建时间用datetime,更新时间用timestamp。这是非常重要的。【1】timestamp字段所在行更新时,timestamp字段会被更新成当前时间(1.1)一个表中出现了两

    2022年7月2日
    23
  • IDEA 热部署设置(JRebel插件激活)「建议收藏」

    IDEA 热部署设置(JRebel插件激活)「建议收藏」1.打开File>>setting,选择Plugins>>BrowseRepositories2.搜索Jrebel找到JRebelforIntelliJ,选择install安装                            3. 打开File->setting,选择JRebel>>…

    2022年6月11日
    152
  • FPN网络详解

    FPN网络详解特征图金字塔网络FPN(FeaturePyramidNetworks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。另外虽然也有些算法采用多尺度特征融合的方式,但是一般是采用融合后的特…

    2022年6月12日
    211

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号