类型系统

强类型语言和静态类型语言有什么区别?

蹲街弑〆低调 提交于 2020-02-08 17:27:15
另外,一方是否意味着另一方? #1楼 强类型意味着类型之间的转换之间存在限制。 静态类型意味着类型不是动态的 - 一旦创建变量,就无法更改变量的类型。 #2楼 这经常被误解,所以让我澄清一下。 静态/动态打字 静态类型 是类型绑定到 变量的位置 。 在编译时检查类型。 动态类型 是类型绑定到 值的位置 。 在运行时检查类型。 所以在Java中例如: String s = "abcd"; s 将“永远”成为一个 String 。 在它的生命中它可能指向不同的 String (因为 s 是Java中的引用)。 它可能具有 null 值,但它永远不会引用 Integer 或 List 。 那是静态打字。 在PHP中: $s = "abcd"; // $s is a string $s = 123; // $s is now an integer $s = array(1, 2, 3); // $s is now an array $s = new DOMDocument; // $s is an instance of the DOMDocument class 这是动态打字。 强/弱打字 (编辑提醒!) 强类型 是一个没有广泛认同意义的短语。 大多数程序员使用这个术语来表示静态类型以外的东西,使用它来暗示存在由编译器强制执行的类型规则。 例如,CLU有一个强类型系统

Python之路 - Day1 - Python基础1

佐手、 提交于 2020-02-07 00:37:45
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是什么 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 一、 Python介绍 Python的创始人为吉多·范·罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范·罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 最新的TIOBE排行榜,Python占据第三,仅次于Java和C。 Python崇尚优美、清晰、简单,是一个优秀并被广泛使用的语言。 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(美国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发:

Hook学习

守給你的承諾、 提交于 2020-02-05 16:56:06
转载: 一、基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。 二、运行机制: 1、钩子链表和钩子子程: 每一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由系统来维护。这个列表的指针指向指定的,应用程序定义的,被Hook子程调用的回调函数,也就是该钩子的各个处理子程。当与指定的Hook类型关联的消息发生时,系统就把这个消息传递到Hook子程。一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息传递到下一个Hook子程或者目的窗口。最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。 Windows 并不要求钩子子程的卸载顺序一定得和安装顺序相反。每当有一个钩子被卸载,Windows 便释放其占用的内存,并更新整个Hook链表。如果程序安装了钩子

Redis系列(十)Redis对象系统

让人想犯罪 __ 提交于 2020-02-04 12:18:18
前言 介绍 类型 编码和底层数据结构 五种常见的对象类型 类型检查与命令多态 内存回收 对象共享 对象淘汰:空转时长 总结 参考文章 联系我 前言 其实关于本文,我犹豫再三。 对象系统值得写一篇文章吗?从技术上来讲,当然是值。但是对于我们大部分人来说,它都是隐身的。 写的话,顺序放在哪里?在 Redis 系列(九)底层数据结构之五种基础数据类型的实现 中其实就提到了,那么应该在此之前先介绍它吗? 结论:想那么多屁事,写就完事了。 介绍 正如上一篇文章提到的,Redis 不是生硬的使用前面介绍过的数据结构,来实现了字符串,列表,字典等等数据结构,而是精心打造了一个对象系统。 对于 Redis 来说,所有的所谓的数据类型,本质上都是一个对象,而且同一个类型的对象,底层实现编码不一样。 Redis 对象的定义为: // 类型 typedef type : 4 ; // 编码 unsigned encoding : 4 ; // 指向底层数据结构的指针 void * ptr ; . . . 类型 对象的 type 属性,记录了对象的类型,这个类型就是我们所熟知的 Reids 的数据类型了,比如字符串,列表,集合,有序集合,散列等。 对于 Redis 数据库中的键值对来讲,键值永远是一个字符串对象,值可以是很多种。 编码和底层数据结构 对象的 ptr 指针,指向对象的底层数据结构

部署虚拟环境之1红帽Linux系统

£可爱£侵袭症+ 提交于 2020-02-04 09:33:58
说在开头:文章是我通过查询资料后按照自己的理解总结出来的,所以如果有说法不对的地方,欢迎大佬指正~ 工具 系统:RedHatEnterpriseLinux [RHEL]7.0 ISO镜像文件下载地址:https://www.linuxprobe.com/tools 一、安装VMware Workstation Pro 这个我已经安装好了,我用的是15版本。如果没有安装的,可以去网上找找教程,其实基本上就是点“下一步”。 二、配置VM虚拟机 “新建虚拟机”,“典型”,“稍后安装操作系统”,类型选“Linux”,版本选“Red Hat Enterprise Linux 7 64位”,然后配置成以下样子: 三、安装RHEL 7 系统 教程里面选择的语言是英语,但我选择的中文,为了减少语言造成的困扰。 下面我只放了几个我觉得需要提一下的步骤: Kdump是一个内核崩溃转储机制。在系统崩溃的时候,Kdump将捕获系统信息,这对于诊断崩溃的原因非常有用。注意,Kdump需要预留一部分系统内存,且这部分内存对于其他用户是不可用的。 虽然我的系统语言选择的是中文,但是将系统的输入来源类型还是选择的英语: 以下就是系统的欢迎界面; 至此,RHEL 7 系统完成了全部的安装和部署工作。 来源: CSDN 作者: ISNS 链接: https://blog.csdn.net/u011785309

Java复习——基础知识

烈酒焚心 提交于 2020-01-31 00:56:28
对于 作者曹胜欢的专栏:Java程序员从笨鸟到菜鸟 https://blog.csdn.net/csh624366188/category_9260964.html?utm_source=zlmf2019 基本小结 基础知识 Java以;结尾。 Java的注释有 : // 行注释 /* / 一行或多行注释 / * */ javadoc 注释 Java合法命名规范 : 大小写字母或者美元符号或者下划线开头,不能以数字开头,不能用关键字。类名一般大写开头,变量和方法一般小写开头。 Java的基本数据类型 :byte字节(8位)1字节 、boolean布尔(1位)、char字符(16位)两字节、short短整型(16位)两字节、int整形(32位)4字节、long长整型(64位)8字节、float单精度浮点型(32位)、double双精度浮点型(64位) Java的特殊引用类型 : String 引用类型 :引用类型是一个对象类型的,他的值指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。 定义变/常量和变量的初始化 :常量需要用final 修饰 ,约定常量 一般全部使用大写字母。 switch运算符 : switch (expr) expr 必须是与int类型兼容的类型,即为byte,short,char,int其中的一个。 流程跳转语句-break

Java异常处理机制介绍

会有一股神秘感。 提交于 2020-01-29 13:51:58
摘要: 在Java中,常见的异常包括 error和exception类型。对于error类型的错误,JVM无法做出处理,遇到错误会程序停止执行。而exception是Java虚拟机中处理程序运行时的异常,运行过程中可能由于用户输入了不合法的参数或一些不符合要求的数据而抛出的异常。比如常见的除数不能为0 的ArithmaticException异常。异常和错误都继承自父类throwable接口。 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。 异常的基本语法结构: try{ 可能发生异常的代码块 } catch(异常子类 变量){ } finally{ 一定会执行的语句 } 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。 Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。 Error(错误

C#发现之旅第一讲 C#-XML开发

喜夏-厌秋 提交于 2020-01-26 16:40:39
C#发现之旅第一讲 C#-XML开发 袁永福 2008-5-15 系列课程说明 为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为“C#发现之旅”的技术讲座。考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用。目前规划的主要内容是图形开发和XML开发,并计划编排了多个课程。在未来的C#发现之旅中,我们按照由浅入深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进行软件开发,拓宽我们的视野,增强我们的软件开发综合能力。 本系列课程配套的演示代码下载地址为 http://www.cnblogs.com/Files/xdesigner/cs_discovery.zip 。 本系列课程已发布的文章有 C#发现之旅第一讲 C#-XML开发 C#发现之旅第二讲 C#-XSLT开发 C#发现之旅第三讲 使用C#开发基于XSLT的代码生成器 C#发现之旅第四讲 Windows图形开发入门 C#发现之旅第五讲 图形开发基础篇 C#发现之旅第六讲 C#图形开发中级篇 C#发现之旅第七讲 C#图形开发高级篇 C#发现之旅第八讲 ASP.NET图形开发带超链接的饼图 C#发现之旅第九讲 ASP.NET验证码技术 C#发现之旅第十讲 文档对象模型 课程说明 本课程介绍了使用C

理解 Android Build 系统

爷,独闯天下 提交于 2020-01-26 10:23:50
摘自: https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/index.html 前言 Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站: http://source.android.com/source/downloading.html 。 Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Make 文件,Shell 脚本以及 Python 脚本组成,其中最主要的是 Make 文件。 众所周知,Android 是一个开源的操作系统。Android 的源码中包含了大量的开源项目以及许多的模块。不同产商的不同设备对于 Android 系统的定制都是不一样的。 如何将这些项目和模块的编译统一管理起来,如何能够在不同的操作系统上进行编译,如何在编译时能够支持面向不同的硬件设备,不同的编译类型,且还要提供面向各个产商的定制扩展,是非常有难度的。 但 Android Build 系统很好的解决了这些问题,这里面有很多值得我们开发人员学习的地方。 对于 Android 平台开发人员来说,本文可以帮助你熟悉你每天接触到的构建环境。

软件测试的类型:具有详细信息的不同测试类型

我的未来我决定 提交于 2020-01-24 00:58:39
#1)Alpha测试 它是软件行业中最常用的测试类型。该测试的目的是在将其发布到市场或用户之前,确定所有可能的问题或缺陷。 Alpha测试在软件开发阶段的最后但Beta测试之前进行。尽管如此,作为此类测试的结果,可能会进行较小的设计更改。 Alpha测试是在开发人员的网站上进行的。可以为这种类型的测试创建内部虚拟用户环境。 #2)验收测试 的验收测试是由客户端和验证结束系统的流量到底是否是按照业务需求或不执行,如果是按照最终用户的需求。仅当所有功能部件均按预期工作时,客户端才接受该软件。 这是测试的最后阶段,此后该软件将投入生产。这也称为用户验收测试(UAT)。 #3)临时测试 名称本身表明该测试是在临时基础上执行的,即不参考测试用例,也没有针对此类测试的任何计划或文档。 该测试的目的是通过执行应用程序的任何流程或任何随机功能来发现缺陷并破坏应用程序。 临时测试是一种发现缺陷的非正式方法,项目中的任何人都可以执行。没有测试用例就很难识别缺陷,但是有时可能无法使用现有的测试用例来识别临时测试期间发现的缺陷。 #4)辅助功能测试 可访问性测试的目的是确定残疾人是否可以访问该软件或应用程序。 在这里,残疾是指聋哑,色盲,智障,盲人,老年和其他残疾群体。进行各种检查,例如用于视觉障碍的字体大小,用于色盲的颜色和对比度等。 #5)Beta测试 Beta测试是由客户执行的正式类型的软件测试