vs2015 update2 有啥用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2015 update2 有啥用相关的知识,希望对你有一定的参考价值。

微软近期发布了Visual
Studio 2015 Update 2的首个预览版本。VS2015的第二个主要更新专注于修复在使用C++、C#和Visual
Basic这三种主要语言时所遇到的众多bug。如果开发者在使用VS2015时曾遇到过崩溃、内存溢出异常或是项目加载缓慢等现象,那么Update
2中引入的补丁应该对此有所帮助。此外,这次更新中还修复了多种在之前的安装过程中可能会遇到的无法安装或安装速度缓慢的情况。

对于在VS2015中使用Git的用户来说,新版本中引入的Git
LFS(大文件存储)是一个非常实用的功能。Git
LFS能够在使用者操作大文件时提供类似于Git的功能,它并没有在Git中直接保存大文件(例如视频、Photoshop文件等等),而是保存这些文件的指针,可以通过指针找到保存文件的实际位置。利用这一特性,二进制大文件也可以享受版本控制所提供的便利,而又无需将这些文件直接保存在Git中,因为传统的Git库并不适合于处理这一任务。除了对LFS的支持之外,VS2015中的Git还引入了其他功能扩展,可支持重置(git
reset,包括--hard与--mixed模式)、cherry-pick以及staging。

此外,VS2015的用户还能够感受到整体性的性能改进,包括以下场景:

打开Team Explorer并进行浏览
在安装了扩展的前提下,新版本启动速度的有所提高
在长时间保持打开由托管语言编写的项目的情况下,新版本的稳定性有所提高
能够在受版本控制的项目中使用长文件名路径
参考技术A 么有用

虚拟子类有啥用?

【中文标题】虚拟子类有啥用?【英文标题】:What's the usage of a virtual subclass?虚拟子类有什么用? 【发布时间】:2019-01-10 23:07:00 【问题描述】:
class AnimalMeta(type):
    def __instancecheck__(cls, instance):
        return cls.__subclasscheck__(type(instance))

    def __subclasscheck__(cls, sub):
        return (hasattr(sub, 'eat') and callable(sub.eat) and
                hasattr(sub, 'sleep') and callable(sub.sleep))


class Animal(object):
    __metaclass__ = AnimalMeta
    pass


class Dog(object):
    def eat(self):
        print "eat"
    def sleep(self):
        print "sleep"


dog = Dog()
dog.eat()

print isinstance(dog, Animal)
print issubclass(dog, Animal)

输出:

eat
True
True

我正在尝试理解 python 虚拟子类,示例如上所示。一个虚拟子类的实例根本不需要实现抽象方法。

虚拟子类的真正用例是什么?在我看来,虚拟子类的工作方式类似于鸭子类型和对象继承。

鸭子类型——虚拟子类——对象继承

【问题讨论】:

谢谢,改成文字 这个概念类似于 Java 的接口,但更灵活,主要用于处理抽象基类(参见 stdlib 中的 ABC 模块)和/或类型提示注解。 【参考方案1】:

我阅读了Interfaces in Python: Protocols and ABCs,它让我有了更好的理解。我们在 Python 中有鸭子类型:

如果它说话和走路都像鸭子,那么它就是鸭子。

但是,BirdAeroplane 都可以fly()。但它们不是一回事。因此,我们需要定义一个接口来区分它们。 (Python没有interface关键字,所以我们实际上是在使用抽象类)

让我举个例子:

我们的程序中有DuckMyPlane。他们都实现了fly() 方法。现在我们想从机库中选择一架飞机,让一些人登机,然后飞往另一个城市。显然,我们不能将人放在Duck 上,所以我们定义了一个名为(实际上是一个抽象类)Plane 的接口。我们让MyPlane 继承Plane

一切正常。当我们想选择一个平面时,我们检查它是否是Plane 的子类。然而,波音公司开发了一个包,它有一个Boeing747Plane。我们买了飞机(from boeing-airplanes import Boeing747Plane),但它不被识别为飞机。它确实有一个 fly() 方法,但它不是从我们的 Plane 类继承的,所以我们的 Python 解释器不会将它识别为平面。

好消息是 Python 是一种灵活的语言。感谢ABCMetaregister 方法,在我们做Plane.register(Boeing747Plane) 之后,Boeing747Plane 现在是Plane 的子类。我们可以使用第三方的Boeing747Plane,比如我们自己构建的Plane。万岁!

所以你看,当我们想从第三方包中创建一个类成为我们自己抽象类的子类时,就会使用虚拟类。我们希望它实现我们的接口,但我们不能更改它的代码,所以我们明确告诉解释器“它实现了我们的接口,请把它当作我们自己类的子类”。我认为通常我们不想使用它,但是当您需要时,请谨慎使用它。 正如 Luca Cappelletti 所说,这是 Python 允许的众多灵活性之一,遵循其“我们在这里是成年人”的理念。

【讨论】:

以上是关于vs2015 update2 有啥用的主要内容,如果未能解决你的问题,请参考以下文章

一VS2015update2环境下DirectX11编程说明(2016.5.5更新)

在 asp.net core vs2015 update2 情况况下创建 asp.net core web application 的问题

Qt5.natvis 在 VS 2015 更新 2 中不起作用

VS2015 Update 2 中指向非静态数据成员的指针不正确

Team Foundation Server 2015 Update 2.1 发布日志

Team Foundation Server 2015 Update 2.1 发布日志