2.7 编译型和解释型
2.7 编译型和解释型
前面我们使用java和javac命令把Hello,World!在控制台输出。那为什么输出,这里我们需要掌握两个知识点。编译型语言和解释型语言。在计算机的高级编程语言就分为编译型语言和解释型语言。而我们的Java既有编译型的特点也有解释型的特点。从字面意思来看,编译和解释都有翻译的意思,他们的区别就在于时机不同,比如一个中国人和一个美国人,两个人之间的文字是不一样的,如果他们想要看同一本书,比如三国演义,如果美国人想看我们可以采用两种方法
- 把整本三国演义全部翻译成英语,这样美国人就可以看了。
- 美国人找了一个翻译官,美国人要看一段,翻译官就给他翻译一段,他就可以一直跟着翻译官的进度走。但是如果翻译官那天没有工作,或者美国人想要回过头去翻看之前的章节,此时翻译官就需要往回走重新翻译一遍。
这两种方法都可以使美国人读我们的三国演义,当然这两种方法各有好处,第一种方法是把整本书从中文变成了英文,这个外国人就可以看完了,但是如果作者把书更新了,或者内容换了一下,此时外国人想要看,就需要再把一本书重新翻译一遍,此时外国人就需要花同样的价钱再去购买,如此一来代价是较大的,而第二种方法有一个翻译官实时翻译,此时书本如果改了,翻译官就可以立即翻译过来,就可以节省一些成本,所以说这两种方式各有好处。
我们继续回到编译型和解释型这边
编译型就类似于把一本中文书直接翻译成英文版进行出售,在程序里给我们的感觉就是他有一个负责翻译的程序,将我们自己写的源代码转换成一个计算机可以执行的代码,这个过程说的专业一点就叫做编译型即complie,这本书从中文到英文需要翻译或者编译,无论是人还是翻译官又或者程序,总归需要他们去翻译或者编译这段代码,在程序中负责编译的程序,我们称之为编译器
解释型,意思就是我说一句你解释一句,我写一段代码你解释一句,这样以来,程序的性能可能有一点损失,因为用一点编译一下,如果我要回头看一个东西你又要给我从新翻译
编译型和解释型这两种语言各有利弊,编译型直接将整本书进行了翻译,外国人就可以直接看了,如此以来执行速度就会更快,因为他把所有东西都已经翻译好了,电脑只用去执行即可,对计算机的操作系统要求比较低,比如我们开发的操作系统Windows、Linux、macOS都是用的编译型语言进行编写的,比如C语言、C++都是编译型的语言,如果我们想要运行他们编写的程序都需要对代码进行编译。而解释型就像我们平时看到的网页以及服务器的一些脚本,对速度要求不高,对速度要求不高我们就可以用这种解释型的语言,也就是边执行边解释,比如我们现在正在学习的Java,当然Java是两者的结合,除了Java还有一个脚本语言JavaScript,VBscript,Python等这些都是解释型语言,Java语言虽然比较接近解释型语言的特征,但是我们运行我们的.java文件生成了一个.class文件,这中间就是经历了一个编译的过程,它把javac的源文件通过Java的编译器变成了一个字节码文件,而真正被执行的文件是class字节码文件。所以说我们可以理解成java文件在执行之前经过了一次预编译,生成的代码就介于机器码和java源代码之间的字节码文件。如图
当字节码文件运行时就会走到JVM虚拟机,他会将.class字节码文件放到我们虚拟机的类装载器里面,如此以来,这个类就被加载到我们的JVM里了,加载进之后会到字节码校验器,它主要负责查看你的代码写的对不对,如果代码写错了就会告诉你你的代码出问题了,如果字节码校验器校验没有问题就通过解释器把代码解释给操作系统,走一步运行一步,走一步解释一步,如此以来程序就运行起来了。
随着技术以及硬件的发展,编译型和解释型的概念变得越来越模糊了,就像现在的电脑起步就是16G的内存,所以现在解释型的效率也是非常高了,因为我们的硬件已经提升,但这里我们需要知道的是,Java是先编译到操作系统在进行解释,因此这里我们要知道Java具有编译型和解释型的特征。
刚才我们已经说了程序的运行机制,我们的Java程序的源文件是通过一条javac命令把我们的Java文件编译成我们的class文件,在通过解释器告诉操作系统我们这段代码写了是干什么的,操作系统就按照我们的指令进行操作,这就是程序将一系列的指令按照有规律的操作进行执行,这里只是笼统的解释,这里我们要理解其中的原理,最起码我们要知道程序运行的流程。
相关文章:
2.7 编译型和解释型
2.7 编译型和解释型 前面我们使用java和javac命令把Hello,World!在控制台输出。那为什么输出,这里我们需要掌握两个知识点。编译型语言和解释型语言。在计算机的高级编程语言就分为编译型语言和解释型语言。而我们的Java既有编译型的特点也有…...
校园网自动登陆(河南科技学院)
1. 介绍 河南科技学院校园网自动登陆(新乡的很多系统相似,可能也可以用?),java版。可以实现电脑,路由器,软路由的自动认证wifi,后续会上传docker版本的。 源码地址 github:https://…...
C++11 override和final关键字
C11中的override和final关键字是为了增强代码的编译时类型检查和面向对象设计中的继承机制。 override关键字用于显示地表明派生类中的成员函数覆盖了基类中的虚函数。当派生类中的函数与基类中的虚函数签名不同或者没有使用override关键字时,编译器会给出警告或错…...
kafka的log存储解析
kafka的log存储解析——topic的分区partition分段segment以及索引等 引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定 的),每个…...
4.文件系统
组成 Linux:一切皆文件 索引节点(I-node) I-node(Index Node):文件系统的内部数据结构,用于管理文件的元数据和数据块。 文件的元数据:包括文件的权限、拥有者、大小、时间戳、索引…...
Shell脚本case in esac分支语句应用
记录:434 场景:Shell脚本case in esac分支语句应用。 版本:CentOS Linux release 7.9.2009。 1.case in esac格式 格式: case 值 in 模式1)expression;; 模式2)expression;; 模式n)expression;; esac 解析:case…...
【线性dp必学四道题】线性dp四道经典例题【最长上升子序列】、【最长公共子序列】、【最长公共上升子序列(maxv的由来)】【最长公共子串】
【最长上升子序列】、【最长公共子序列】、【最长公共上升子序列】 最长上升子序列f[i] 表示以i结尾的最长子序列 最长公共子序列f[i][j] 表示 a前i 和 b前j个 最长公共长度 最长公共上升子序列f[i][j]代表所有a[1 ~ i]和b[1 ~ j]中以b[j]结尾的公共上升子序列的集合 最长公共子…...
追寻幸福:探索幸福的关键特征和行为
目录 1. 积极的心态 2. 良好的人际关系 3. 自我接纳和自尊 4. 追求意义和目标 5. 健康的身心状态 6. 感知和实现个人价值 幸福是一个主观的感受,因此不同的人对于幸福的定义和追求方式可能会有所不同。然而,有一些共同的特点和行为模式,…...
Redis-02-集群
一、redis5搭建集群 1.1、案例:搭建6台redis主机,配置如下 redis并发量:https://www.gxlcms.com/redis-350423.html主机IP:192.168.168.60~65修改redis配置文件hash槽移动,槽内的数据也随之移动 [root60 ~]# vim /e…...
【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第三章——MindSpore云上调试调优
1.ModelArts云上调试调优 ModelArts密钥初始化 详细教程: 初始化OBS服务 创建训练作业 2.MindSpore IDE插件效率提升 通过智能代码块推荐、代码自动补全等特性,提升MindSpore脚本开发效率,对接ModelArts云服务,实现模型训…...
python笔记17_实例演练_二手车折旧分析p2
…… 书接上文 4.车辆等级维度 探查车龄为5年的车辆,折旧价值与车辆等级的关系。 # 筛选出车龄为5的数据创建新表 data_age5 data[data[age] 5] data_age5 # 分组聚合计算均值 data_car_level data_age5.groupby(car_level_name)[lowest_price].mean().reset…...
android 12.0长按Power弹出关机对话框去掉屏幕截图和紧急呼救功能
1.概述 在12.0的系统长按关机键,会弹出关机的对话框,关机对话框里面由关机重启截图和紧急呼叫等功能,而由于开发功能需求要求去掉屏幕截图和紧急呼叫等功能,所以就要先找到关机对框的代码 然后实现功能 功能分析: 长按电源键弹出关机对话框,通过adb shell命令发现 就是f…...
2023年下半年软考高级需要报班吗?
首先,对于软考高级考试报班与否的问题,需要根据自身的情况来做出决定。如果你有较强的自学能力,且具备丰富的实际工作经验和技术知识,那么不报班也完全可以自学备考。但如果你对软件工程的知识掌握程度较低,或者时间紧…...
使用WordPress提高企业敏捷性
喜欢WordPress的原因有很多:该平台非常适合内容管理以及控制预算。此外, 在 提高开发效率和简化项目管理方面,WordPress可以通过多种方式提供帮助。 对于任何企业业务,目标始终是在不影响质量的情况下更快地启动项目、发布修复和…...
SSM编程---Day 07
目录 SpringMVC 一、概念 二、springMVC的请求处理流程 三、mvc:annotation-driven 标签的作用 四、HandlerMapping、Handler和HandlerAdapter的介绍 五、SpringMVC 体系结构 六、SpringMVC的常用注解 七、view和controller之间的传值 SpringMVC 一、概念 1、 Spring…...
Seata术语
1.什么是Seata Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网 2.Seata能干嘛 一个典型的分布式事务过程 分布式事务处理过程的一ID三组件模型: Transaction ID XID 全局唯一的事务ID三组…...
【Axure教程】通过文本框维护下拉列表选项
下拉列表(Dropdown List)是一种常见的用户界面元素,用于提供一组选项供用户选择。它通常以一个展开的列表形式出现,用户可以点击或选择列表中的一个选项。一般来说,他的选项值是由系统代码组成的,所以一般是…...
【C++】基础知识--输入/输出(5)
前面部分的示例程序几乎没有提供与用户的交互(如果有的话)。他们只是在屏幕上打印简单的值,但标准库提供了许多其他方式通过其输入/输出功能与用户交互。本节将简要介绍一些最有用的方法。 cin标准输入cout标准输出cerr标准错误(输…...
经典文献阅读之--PIBT(基于可见树的实时规划方案)
0. 简介 作为路径规划而言,不单单有单个机器人自主路径规划,近年来随着机器人行业的兴起,多机器人自主路径规划也越来越受到关注,对于多智能体寻路(MAPF)。一般的操作会给定一个地图、机器人集群、以及它们的初始位置和目的地&am…...
SAP-MM-计算方案字段解析
01、 “步骤”:标识此条件类型在计算方案中的顺序编号,此编号会影响到后续业务中条件类型的排序,不同条件类型之间的编号最好间隔大一些,这样设置便于以后对计算方案进行扩展; 02、 “计数器”࿱…...
Unity Addressable本地HTTP服务器5分钟合规搭建指南
1. 为什么Addressable资源托管总卡在“本地跑不通”这一步? Unity Addressable Asset System(可寻址资源系统)上线这么多年,我见过太多团队在最后一步集体卡壳:资源打包没问题,加载逻辑写得滴水不漏&#…...
3DMAX傻瓜式插件SimpleRope:一键生成绳子软管螺旋线!
3MAX简单绳子插件SimpleRope,从样条线生成螺旋线网格(包括简单的绳子)。本教程将带你全面掌握SimpleRope插件的使用方法,从普通的绳子、柔性的软管,到参数可调的螺旋线,只需一条样条线路径,点击…...
MNIST识别项目复盘:除了准确率97%,我们更应该关注数据预处理与损失函数的选择
MNIST识别项目深度复盘:超越97%准确率的工程实践思考 在完成一个基础的MNIST手写数字识别项目后,很多开发者会满足于模型达到97%的准确率便止步不前。然而,真正有价值的机器学习实践远不止于调出一个高准确率的模型。本文将带您深入两个常被忽…...
LLM:大语言模型的主要任务
大语言模型(Large Language Model,LLM)是以深度学习为基础、通过大规模文本或多模态数据训练得到的生成式模型。它的核心能力并不是完成某一个固定任务,而是围绕语言理解、文本生成、信息处理、推理协助、代码生成、工具调用和多模…...
170家具身智能公司名单
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达具身智能:人工智能的下一个浪潮!今年再次被写入《政府工作报告》中,已经成为国家未来重点培育产业。市场方面,具身智能近一年融资更是爆火&…...
无服务器架构与Serverless
无服务器架构与Serverless 1. 技术分析 1.1 无服务器架构概述 无服务器架构是云计算的重要演进: Serverless特点无需管理服务器事件驱动按需付费自动伸缩Serverless服务:FaaS: 函数即服务BaaS: 后端即服务DBaaS: 数据库即服务1.2 FaaS工作原理 FaaS执行流程事件触发…...
实战指南:ComfyUI-Impact-Pack图像智能修复与细节增强解决方案
实战指南:ComfyUI-Impact-Pack图像智能修复与细节增强解决方案 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: …...
玩转谷歌开源 AI 终极端:在 Antigravity CLI (`agy`) 中无缝白嫖/调用 Claude
玩转谷歌开源 AI 终极端:在 Antigravity CLI (agy) 中无缝白嫖/调用 Claude 作为整天和终端打交道的开发者,如果你还没试过 Google 刚推出不久的 AI 终端 Agent —— Antigravity CLI (agy),那你真的错过了效率神器。 它最让我惊艳的不是能在…...
ClamAV更新失败真相:DNS TXT查询机制深度解析
1. 这不是网络连通性问题,而是ClamAV更新机制被误读的典型症状“Can’t query current.cvd.clamav.net”这个报错,我在过去八年维护超过200台Linux服务器(从CentOS 6到Ubuntu 22.04,从物理机到容器化部署)的过程中&…...
n8n高危RCE漏洞深度解析与生产环境加固指南
1. 这不是普通升级通知:n8n高危漏洞的本质威胁与真实影响面n8n自动化平台爆6个高危漏洞,4个RCE可致服务器完全接管——这句话在2024年Q2的DevOps和低代码运维圈里,不是标题党,是凌晨三点被PagerDuty叫醒后第一眼看到的告警摘要。我…...
