首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeScript 的逆、协和双向协

在类型系统,属性更多的类型是子类型。 在集合论,属性更少的集合是子集。 也就是说,子类型是父类型的超集,而父类型是子类型的子集,这是直觉上容易搞混的一点。...通过协和逆原则 协与逆(covariance and contravariance)是在计算机科学,描述具有父/子型别关系的多个型别通过型别构造器、构造出的多个复杂型别之间是否有父/子型别关系的用语...但在TS,参数类型是双向协的(详见下文3.1小节),如果项目里开启了"strict": true,意味着,会来带开启 strictFunctionType ,此时,才按照逆处理 双向协 在老版本的...TS ,函数参数是双向协的。...也就是说,既可以协又可以逆,但是这并不是类型安全的。在新版本 TS (2.6+) ,你可以通过开启 strictFunctionTypes 或 strict 来修复这个问题。

1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux系统创建可执行文件软链接

这里我们使用的案例是通过TMalign这个蛋白质打分文件,在编译好可执行文件之后,可以使用建立软链接的方法快捷的使用该可执行文件。...Mac可能需要去掉static): $ g++ -static -O3 -ffast-math -lm -o TMalign TMalign.cpp 编译之后就会在当前路径下生成一个名为TMalign的可执行文件...,有时候会遇到想把可执行文件放在特定的路径下的问题,比如放到/usr/bin目录下,这样可以全局可调用,又不需要手动添加各种乱七八糟的系统路径。...这就需要使用到Linux的软链接的功能,通常使用ln -s的指令即可。...本文顺带介绍了蛋白质结构评分软件TMalign的源码下载和安装使用的基本方法,编译成一个可执行文件后,可以建立一个软链接,在系统各处都可以使用,是一个比较基础的操作。

2.8K20

Manjaro Linux平台用pyinstaller打包python可执行文件

对于使用场景不是很复杂的,我们可以直接做成一个可执行文件,这样开发者只需要维护可执行文件的功能正常,以及对于各种平台的兼容性较好,这就可以了。...如果觉得这份官方的帮助文档过于冗余,可以参考下一个章节的缩略版帮助文档。...那么最后还缺一步,就是我们如果想要通过项目名 -参数表示 参数这样的方法来运行我们的项目的话,就需要把这个可执行文件添加到系统路径。...最常用的方法其实是直接将该可执行文件拷贝到/usr/bin/目录下,这样该可执行文件就可以直接使用,BLACKPINK不需要在前面加上路径就能运行。...总结概要 通过pyinstaller我们可以将一个python项目打包编译构建成一个可执行文件,然后将该可执行文件放置到一个系统路径下,使得系统可以不需要路径也能够识别到这个可执行文件,这样我们就可以仅配置一些输入文件或者命令行的入参

2.7K00

可执行文件包含 install 或 setup

问题描述 在 Windows Vista+ 系统下,若 EXE 文件名包含有「install」、「update」或「setup」等字样,可能出现如下问题: 每次软件运行完退出后会弹出「程序兼容性助手」...完全相同的两个 EXE 文件,名字不一样: 问题分析 简而言之,上述现象发生的原因是 Windows Vista+ 系统的「安装程序检测」机制认为文件名包含「install」、「update」或「setup...,如果它没有在「添加或删除程序」创建一个条目,那「程序兼容性助手」会认为该安装包没有成功完成,在安装包结束后即弹出「程序兼容性助手」提示用户该程序可能安装不正确。...二、为可执行文件添加类似如下的 Manifest 文件,指定程序兼容 Win7 与 Vista(或更高版本的当前系统)。 <?...HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted 下写入以可执行文件全路径为名

68610

Manjaro Linux平台用pyinstaller打包python可执行文件

对于使用场景不是很复杂的,我们可以直接做成一个可执行文件,这样开发者只需要维护可执行文件的功能正常,以及对于各种平台的兼容性较好,这就可以了。...如果觉得这份官方的帮助文档过于冗余,可以参考下一个章节的缩略版帮助文档。...那么最后还缺一步,就是我们如果想要通过项目名 -参数表示 参数这样的方法来运行我们的项目的话,就需要把这个可执行文件添加到系统路径。...最常用的方法其实是直接将该可执行文件拷贝到/usr/bin/目录下,这样该可执行文件就可以直接使用,不需要在前面加上路径就能运行。...总结概要 通过pyinstaller我们可以将一个python项目打包编译构建成一个可执行文件,然后将该可执行文件放置到一个系统路径下,使得系统可以不需要路径也能够识别到这个可执行文件,这样我们就可以仅配置一些输入文件或者命令行的入参

2.9K20

Linux可执行文件与进程的虚拟地址空间

Linux可执行文件与进程的虚拟地址空间 一个可执行文件被执行的同时也伴随着一个新的进程的创建。...Linux会为这个进程创建一个新的虚拟地址空间,然后会读取可执行文件的文件头,建立虚拟地址空间与可执行文件的映射关系,然后将CPU的指令指针寄存器设置成可执行文件的入口地址,然后CPU就会从这里取指令执行...Proc目录下的进程虚拟地址空间布局 Linux在装载可执行文件的时候,会将这些segment映射到进程的地址空间中。映射的时候,这里面的segment会对应一个VMA。...在ELF,把这些属性相似的,又连在一起的段叫做一个“segment”,而系统正是按照“segment”而不是“section”来映射可执行文件的。...再来看一下这个ELF可执行文件BSS段的大小。 ? 可以看到,BSS段的大小正好是十进制的32,。

4.1K30

『Python』Python编译成计算机可执行文件(Windows计算机可执行文件exe,Linux 计算机可执行文件elf,Mac计算机可执行文件mach-O)

,并且打包所需要库文件,只需要点击一个可执行文件运行,而无需安装Python和相关库文件。...PyInstaller将 Python应用程序冻结(打包)在Windows,GNU / Linux,Mac OS X,FreeBSD,Solaris和AIX下的独立可执行文件。...这意味着,使用PyInstaller,使外部软件包正常工作所需的所有技巧已 集成在PyInstaller本身,因此无需用户干预。您将不需要在Wiki寻找技巧,也可以对文件或设置脚本进行自定义修改。...进入工作目录,即所编译.py文件的路径 右键点击Python文件,属性即可获得路径。 ? 利用cd命令进入工作目录: cd C:\Users\张小胖\Desktop ? 3....也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径 -n NAME,--name=NAME 指定项目(产生的 spec)名字。

3.3K10

python3种调用可执行文件.exe

方法一、os.system()  会保存可执行程序的打印值和主函数的返回值,且会将执行过程要打印的内容打印出来 import os main = "project1.exe" r_v = os.system...(main)  print (r_v ) 方法二、commands.getstatusoutput()  会保存可执行程序的打印值和主函数的返回值,但不会将执行过程要打印的内容打印出来 import...subprocess.getstatusoutput(main) print (rc) print ('*'*10) print (out) 方法三、popen()  会保存可执行程序的打印值...,但不会保存主函数的返回值,也但不会将执行过程要打印的内容打印出来 import os main = "project1.exe" f = os.popen(main) data = f.readlines...() f.close() print (data) 另外,上面提到的三种方式,实际上都是在python执行命令,因此他们不只是用来执行可执行文件,也可以用来执行linux系统别的指令

6.1K20

可执行文件包含 install 或 setup

问题描述 在 Windows Vista+ 系统下,若 EXE 文件名包含有「install」、「update」或「setup」等字样,可能出现如下问题: 每次软件运行完退出后会弹出「程序兼容性助手...问题分析 简而言之,上述现象发生的原因是 Windows Vista+ 系统的「安装程序检测」机制认为文件名包含「install」、「update」或「setup」等字样,且没有在 Manifest...」创建一个条目,那「程序兼容性助手」会认为该安装包没有成功完成,在安装包结束后即弹出「程序兼容性助手」提示用户该程序可能安装不正确。...二、为可执行文件添加类似如下的 Manifest 文件,指定程序兼容 Win7 与 Vista(或更高版本的当前系统)。 <?...HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted 下写入以可执行文件全路径为名

57310

c#4.0的不变(invariant)、协(covariant)、逆(contravariant)小记

不变/协/逆,4.0的这几个概念越念越象绕口令,如果单纯死记硬背,就算记住了,时间长了还是会忘记的。...园子里已经有不少高手撰文写过这个话题:比如“装配脑袋”的NET 4.0的泛型协和反 (2008年他就已经搞明白了这个概念)、偶像Artech的“C# 4.0新特性-"协"与"逆"以及背后的编程思想...而在4.0,上面的代码可正常编译运行,如果研究下4.0Func的原型,会发现多了二个关键字: public delegate TResult Func(T arg...(儿子是人类,父母当然也是人类,不可能是畜生,呵) 这时,我们称T为逆(ContraVariant)量,而TResult则为协(CoVariant)量。...记忆方法:向上转型称协(因为这种转型肯定是安全的,比较“和谐”),向下转型称逆(因为不一定能转型成功,有出错的可能,称逆) 最后:in,out这二个关键字不仅能用于泛型委托,同样也适用于泛型接口(

791100

详解 Linux 可执行文件 ELF 文件的内部结构

linux 可执行文件、Object文件、动态库文件都是ELF格式文件,他相当于 windows 操作系统的 PE 文件。 通过 readelf 命令可以读取 ELF 文件的内容。 3....这里提到了“节”的概念,上一篇文章,我们在汇编中使用了 section 关键字,就是指定了对应代码块的 section 类型,linux 支持下面的三种 section: .text — 代码段,用来存放代码...可执行文件, 3....Elf32_Word sh_addralign; // 该节固定表项长度 Elf32_Word sh_entsize; } Elf32_Shdr; 下图展示了上篇文章可执行文件...了解了上面的结构信息,你就会发现,事实上与我们的目标直接相关的是 ELF 文件的 Program Header 部分,他描述了可执行文件中有那几个段,每个段需要被载入到内存的哪个位置,而每个段包含多少个节

2.5K20

Linux下,使用nm命令输出可执行文件的符号表

可执行文件的符号表(symbol table)记录了某个可执行文件的函数名、全局变量、宏定义等符号信息,这些信息对于我们调试十分重要。...目前,我正在DragonOS上开发内核栈traceback程序,因此需要导出内核文件的符号表.这个时候就需要用到Linux的nm命令。...nm命令属于GNU binutils的功能,能够输出可执行文件的符号表。它的用法是这样的: 用法:nm [选项] [文件] 列举 [文件] 的符号 (默认为 a.out)。...最左侧一栏指的是符号在内核文件的地址,中间一栏表示符号类型,最右侧的表示符号的名称。...这些符号通常被特定目标文件用于某些特殊处理,当包含在正常符号列表时通常不起作用。

2.2K30

C#4.0新增功能03 泛型的协和逆

由于这些接口只具有逆类型参数,因此这些类型参数只用作接口成员的参数类型。 下面的示例阐释了逆类型参数。...泛型委托的类型参数的协方差和逆的效果类似于普通委托绑定的协方差和逆的效果(请参阅委托的差异 (C#) 和委托的差异 (Visual Basic))。...协类型参数用 out 关键字(在 Visual Basic 为Out 关键字,在 + MSIL 汇编程序 为)标记。 可以将协类型参数用作属于接口的方法的返回值,或用作委托的返回类型。...逆类型参数用 in 关键字(在 Visual Basic 为In 关键字,在 - MSIL 汇编程序 为)标记。 可以将逆类型参数用作属于接口的方法的参数类型,或用作委托的参数类型。...Visual Basic 和 C# 不允许违反协和逆类型参数的使用规则,也不允许将协和逆批注添加到接口和委托类型之外的类型参数

1.3K20

哲思片段 | 设计与不变

无论它在内存存储的状态如何变化,该实例的对象标识依旧是保持不变的。显然,与不变是相对的。 切换到DDD的命题中,所谓“实体”就是那种具有唯一的可识别可跟踪ID的对象。...这就衍生出面向对象设计的Immutable模式。例如Java和C#的String类型,皆为Immutable模式的实现。 可若放在函数式编程,这种模式就显得有些可笑了。...这是赫拉克利特终极的哲学观,即万物随时在。软件系统就是这样一条河流,它无时无刻不在变化,正如水不断的流动,需求也总是在变化。...这个要素就是Monad的Identity(幺元或单位元)。...这个Identity表达了单一、恒等的概念,例如Int类型中加减法运算半群(SemiGroup)的Zero,就是一个Identity,因为半群的任何元素a与Zero结合,依然是元素a本身。

1.2K70
领券