perl ‘->’ 和 ‘::’ 的区别 | 方法和函数的区别

最近在看 PVE 源码时看到这样一段:

# old code uses PVE::RPCEnvironment::get(); 使用冒号表示调用函数
# new code should use PVE::RPCEnvironment->get(); 使用箭头表示法调用方法
sub get {
    return PVE::RESTEnvironment->get();
}

好奇两种调用方式是什么区别,经过研究,我在这篇文章1找到答案,两者差异在于:

  • 使用 冒号 表示 调用函数
  • 使用 箭头 表示 调用方法

以下是引用翻译:

我们知道在 Perl 中,Function 和 Subroutine 这两个名称是可以互换的。但是函数和方法的区别到底是什么呢?

表面上没有什么不同。它们都是使用 sub 关键字声明的。差异主要在于它们的使用方式。

总是使用箭头表示法调用方法。对象: $p->do_something($value) 或类: Class::Name->new

函数总是直接调用: 使用它的完全限定名: Module::Name::func_something($param) ,或者,如果函数是当前名称空间的一部分,则使用短名: func_something($param)

如果在调用它的对象的类中找不到方法, Perl 将转到父类并在那里寻找具有相同名称的方法。它将使用其内置的方法解析算法递归地执行它。如果根本找不到该方法,则它将放弃(或调用 AUTOLOAD )。另一方面, Perl 将只在单个位置查找函数(如果可用,则为 AUTOLOAD )。

方法总是将当前对象(或类名)作为其调用的第一个参数。函数永远不会得到对象。(除非您手动将其作为参数传递。)因此,方法通常作用于实例(对象) ,有时作用于整个类(然后我们称之为 class-method )。另一方面,函数从不作用于对象。尽管它可能会对班级产生影响。

最新 2021 Win10 LTSC 20H1 安装激活方法

我个人日常使用操作系统主要是 Linux 或 MacOS,但在一些特殊情况下,一些工作使用 Windows 桌面处理起来会方便一些(比如 Linux 环境时需要首发企业微信等),于是我会在公司内网云平台或是台式机上安装一个 Win10 桌面系统。

但原生的 Win10 系统过于臃肿,带有许多我用不上的功能,我只需要一个桌面环境+浏览器再安装我需要的软件即可。第三方的精简镜像安全性没有保障,这时官方提供的 LSTC 版系统镜像就很香了。

Windows LTSC,企业长期服务版,支持安全更新周期长达10年,为企业研制,官方精简版,没有商店小娜edge等UWP应用,但是缺点是不支持大版本的更新,比如装了1809版本,以后不可升级,只能重装新版本,或者一直用下去。

正常情况下安装好一直使用即可,不建议升级最新版,但是这次重装还是选择安装新版比较好。

微软于 11 月 17 日 正式推出 Windows 10 2021 年 11 月更新(21H2),与此同时,微软 Windows 10 企业版 LTSC 2021 正式版(长期服务频道)发布,基于 Windows 10 版本 21H2 打造。

之前写的文章已经过时,正好记录一下新版 LSTC 系统的安装激活步骤。

物料准备

首先需要准备安装镜像,可通过下面 MSDN 提供的链接下载,也可通过 @如有乐享 提供的地址下载:

- Windows 10 Enterprise LTSC 2021 (x64) - DVD (Chinese-Simplified)
    - 文件:SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO
    - 大小:4.7GB
    - MD5:2579B3865C0591EAD3A2B45AF3CABEEE
    - SHA1:C19D7DAFBAFEB26C36E31D97C465E87C7A6E8A4C
    - SHA256:C117C5DDBC51F315C739F9321D4907FA50090BA7B48E7E9A2D173D49EF2F73A3
    - 下载地址:
        - ED2K: ed2k://|file|SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO|5044211712|1555B7DCA052B5958EE68DB58A42408D|/
        - BT: magnet:?xt=urn:btih:366ADAA52FB3639B17D73718DD5F9E3EE9477B40&dn=SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO&xl=5044211712
- Windows 10 Enterprise LTSC 2021 (x86) - DVD (Chinese-Simplified)
    - 文件:SW_DVD9_WIN_ENT_LTSC_2021_32BIT_ChnSimp_MLF_X22-84401.ISO
    - 大小:3.37GB
    - MD5:A4F6F8F67D9A59AD462FF51506C5CD3A
    - SHA1:50ED6860535FDDF9D0418EFD99EF7F40DAA696F5
    - SHA256:9F855FCC4CB44C119F9CE73DABE569FCB7F4F4D85F922206BF2E108116A34F25
    - 下载地址:
        - ED2K: ed2k://|file|SW_DVD9_WIN_ENT_LTSC_2021_32BIT_ChnSimp_MLF_X22-84401.ISO|3621132288|F67BB339ADFEFCF6ED22400EAACBD068|/
        - BT: magnet:?xt=urn:btih:F8EC74BA352633CECF7A0D0AF1E98A7345C3C2FC&dn=SW_DVD9_WIN_ENT_LTSC_2021_32BIT_ChnSimp_MLF_X22-84401.ISO&xl=3621132288

激活步骤

安装过程就不赘述了,使用 libvirt + qemu 或是 Vmware, VirtualBox 等安装即可,安装好之后使用管理员权限运行 CMD ,输入以下命令即可:

slmgr.vbs /ipk M7XTQ-FN8P6-TTKYV-9D4CC-J462D
slmgr.vbs /skms kms.loli.beer
slmgr.vbs /ato

结束后就会看到激活水印消除,激活成功。

参考文献