关于解释型语言和编译型语言发起到处理请求全过程的思考

        以下解释型语言以PHP为例子,编译型语言则以Java为例。

解释型语言和编译型语言

        首先,什么叫解释型语言,什么叫编译型语言?我们现在所运用的编译语言都是高级语言,是机器看不懂的,在语言和机器中间,我们肯定是需要一个解释器的,可以把高级语言翻译成机器码给机器执行。

        解释型和编译型的不同就在这个翻译的过程中,解释型语言是翻译一句,执行一句,错误了就报错终止翻译。编译型语言则是先把代码都翻译了,翻译完了没有错误了再执行。这就是解释型语言和编译型语言最浅显的区别。

        理解了解释型和编译型语言后第一个思考的问题是,为啥PHP可以实现热更新,而Java则需要编译架包启动。一样都是需要翻译执行,难道Java翻译完之后就一直在执行了吗?确实如此,这里涉及到了一个常驻内存和非常驻内存的概念。

常驻内存和非常驻内存

        Java属于是常驻内存的,常驻内存就是指Java编译完后,它会一直挂在内存上运行,比如你扔了一个对象到容器里,那么你每次从容器里拿这个对象,都是这一个对象,如果你你在某个请求里改了这个对象的某个参数,其他请求进来,这个参数也是修改过的。

        PHP则是非常驻内存的,非常驻内存就是指每次PHP接收到请求时都会重新编译运行挂上一个新的进程到内存上,进程处理完后,进程结束,资源释放。每次请求的都是容器里的一个新对象,虽然这些对象本质上都是一样的,但是他们之间却不是同一个,也互不影响。

关于解释型语言和编译型语言处理请求

        其实解释型语言和编译型语言并不会主观的影响请求的处理方式,主要是由语言的自身决定的。如PHP是解释型语言,PHP自身没有内置Web服务,当服务器接收到请求时,需要转发给PHP进行词法语法分析,翻译成中间代码,在zend虚拟机运行处理,返回到服务器,服务器再返回给客户端进行渲染。像Java Springboot的话,自身就带有Web服务,启动Java的服务后,我们不用再去额外启动一个Apache去转发文件,翻译成class文件交给jvm执行处理返回。有没有内置Web服务并不是绝对的,Python是解释型语言,但是它也带有Web服务Flask,也能去响应处理请求,不需要经过转发。

        以上呢,就是我深入浅出后对解释型语言PHP和编译型语言Java处理请求的理解,如果有什么地方说的不对,请指出,我及时更正,避免误导他人,谢谢

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第一天才

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值