03 # 类型基础:动态类型与静态类型
通俗定义
静态类型语言:在编译阶段确定所有变量的类型
- 编译阶段确定属性偏移量
- 用偏移量访问代替属性名访问
- 偏移量信息共享
动态类型语言:在执行阶段确定所有变量的类型
- 在程序运行时,动态计算属性偏移量
- 需要额外的空间存储属性名
- 所有对象的偏移量信息各存一份
所以动态类型语言无论在时间还是空间都有比较多的性能损耗。
静态类型与动态类型对比
静态类型语言 | 动态类型语言 |
---|---|
对类型极度严格 | 对类型非常宽松 |
立即发现错误 | Bug可能隐藏数月甚至数年 |
运行时性能好 | 运行时性能差 |
自文档化 | 可读性差 |
动态类型语言的支持者认为:
- 性能是可以改善的(V8引擎), 而语言的灵活性更重要
- 隐藏的错误可以通过单元测试发现
- 文档可以通过工具生成
其他定义
美国加州大学的讲义中对强类型语言的定义如下
强类型语言:不允许程序在发生错误后继续执行
按照上面的定义,C/C++就是弱类型语言,因为它们没有对数组越界进行检查,一旦发生错误,程序就会终止
争议: C/C++是强类型还是弱类型?
语言类型象限
相关文章:

03 # 类型基础:动态类型与静态类型
通俗定义 静态类型语言:在编译阶段确定所有变量的类型 编译阶段确定属性偏移量用偏移量访问代替属性名访问偏移量信息共享 动态类型语言:在执行阶段确定所有变量的类型 在程序运行时,动态计算属性偏移量需要额外的空间存储属性名所有对象的…...

Python编程——模块、包和__init__.py
1. 模块 Python中的一个文件即为一个模块(Module),一个模块引用另外一个模块的变量、函数或类时,使用import来导入。模块名即文件名。 如fibo.py 文件下有如下代码: def fib(n): # write Fibonacci series up to na, b 0, 1while a <…...
220kV110kV10kV变电站初步设计
摘要 由于国内人民生活水平的提高,科技不断地进步,控制不断地完善,从而促使变电站设计技术在电气系统领域占据主导权,也使得220kV/110kV/10kV变电站被广泛应用。在变电站系统设计领域中,220kV/110kV/10kV变电站成为目…...

Git企业开发级讲解(一)
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、Git初识1、提出问题2、如何解决--版本控制器3、注意事项 二、Git 安装1、Linux-centos2、…...
【微信支付通知】对resource解密 AEAD_AES_256_GCM算法工具类
微信支付JSPIA支付-支付通知中,对resource解密 import javax.crypto.Cipher; import javax.crypto.spec.GCMParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.Key; import java.util.Base64;public class AEADDecryption {public sta…...

JVM虚拟机:垃圾回收之三色标记
本文重点 在前面的课程中我们已经学习了垃圾回收器CMS和G1,其中CMS和G1中的mixedGC都存在四个过程,这四个过程中有一个过程叫做并发标记,也就是说程序一边运行,一边标记垃圾。这个过程最困难的是:如果在标记垃圾的时候,如果对象的引用关系发生了改变,此时应该如何处理?…...
唯坚持而已
写在前面 假如有一天我失业了: 大葱一毛二一斤,卖一三轮车三百斤还不到40块钱,我会回乡种大葱么? 小麦、玉米块儿八毛的一斤,亩产1000斤,五亩地,一年一茬小麦一茬玉米,才万把块钱&a…...

【大语言模型】Docker部署清华大学ChatGLM3教程
官方地址:https://github.com/THUDM/ChatGLM3 1 将代码保存至本地 方法1: git clone https://github.com/THUDM/ChatGLM3 方法2: https://github.com/THUDM/ChatGLM3/archive/refs/heads/main.zip 2 创建Docker文件 注:请先…...

详解 KEIL C51 软件的使用·设置工程·编绎与连接程序
详解 KEIL C51 软件的使用建立工程-CSDN博客 2. 设置工程 (1)在图 2-15 的画面中点击 会弹出如图 2-16 的对话框.其中有 10 个选择页.选择“Target” 项,也就是图 2-16 的画面. 图 2-16 在图 2-16 中,箭头所指的是晶振的频率值,默认是所选单片机最高的可用频率值.该设置值与单…...

小程序实现语音识别功能
不废话,直接上代码 <template><view><u-popupround"16" :show"recordShow" :close-on-click-overlay"false":safe-area-inset-bottom"false"close"close"open"open"><view clas…...
判断两层对象中是否有空的value值
1、方法 hasEmptyValue(obj) {for (var key in obj) {if (obj.hasOwnProperty(key)) {var value obj[key];// 检查第一层属性值是否为空if (value null || value undefined || value ) {return true;}// 检查第二层属性值是否为空if (typeof value object) {for (var inn…...

【SQLite】环境安装
SQLite - C/C SQLite简介 SQLite 是一种轻量级的嵌入式数据库引擎,它在程序中直接访问数据库文件而不需要独立的数据库服务器。以下是一些关于 SQLite 的简介信息: 嵌入式数据库引擎: SQLite 是一种嵌入式数据库引擎,这意味着它…...

【QT】飞机大战
0 项目简介 飞机大战是我们大家所熟知的一款小游戏,本教程就是教大家如何制作一款自己的飞机大战 首先我们看一下效果图 玩家控制一架小飞机,然后自动发射子弹,如果子弹打到了飞下来的敌机,则射杀敌机,并且有爆炸的特…...
linux最全基础入门命令(简单明了建议收藏)
Linux是一种开源的操作系统,它有许多强大的命令行工具,可以让用户对系统进行各种操作和管理。本文将介绍一些Linux最常见最全的命令,以及它们的用法和示例。 目录 ls:用于列出目录中的文件和子目录cd:用于切换当前工作目录pwd:于显示当前工作…...

dgl 的cuda 版本 环境配置(dgl cuda 版本库无法使用问题解决)
1. 如果你同时有dgl dglcu-XX.XX 那么,应该只会运行dgl (DGL的CPU版本),因此,你需要把dgl(CPU)版本给卸载了 但是我只卸载CPU版本还不够,我GPU 版本的dglcu依旧不好使,因此吧GPU版本的也得卸载…...
回文数和复利的威力(C#)
题目:回文数 回⽂数指正序(从左到右)和倒序(从右到左)读都是⼀样的整数。 输⼊⼀个数,判断是否是回⽂数 样例输⼊ 2397 输出no 样例输⼊ 2992 样例输出yes 输⼊的整数⼤于0,⼩于1000000。如…...
【Java】面向对象程序设计 课程笔记 Java核心类
🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:Java 💬希望你看完之后,能对你有所帮助࿰…...
16个值得推荐的.NET ORM框架
什么是ORM? ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型…...

Git 进阶使用
一. Git图形化操作 1.1.什么是图形化管理工具 图形化管理工具是一种通过可视化界面来操作计算机系统或应用程序的软件工具。在软件开发中,它通常用于管理和操作版本控制系统(如Git、SVN等)以及代码开发环境(如IDE)。与…...
【微软技术栈】C#.NET 泛型数学
本文内.NET 7 为基类库引入了新的数学相关泛型接口。 提供这些接口意味着可以将泛型类型或方法的类型参数约束为“类似于数字”。 此外,C# 11 及更高版本允许定义 static virtual 接口成员。 由于必须将运算符声明为 static,因此这一新的 C# 功能可用于在…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...