加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_盐城站长网 (https://www.0515zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

程序员必知的六种隔离技术

发布时间:2021-03-13 13:24:15 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 节选自《Growth: 全栈增长工程师指南》 为了将我们的应用部署到服务器上,我们需要为其配置一个运行环境。从底层到顶层有这样的运行环境及容器: 隔离硬件:虚拟机 隔离操作系统:容器虚拟化 隔离底层:Servlet容器 隔离依赖版本:虚拟环境 隔离

最后一个要介绍的可能就是更加抽象的,但是也是更加实用的一个,JVM就是这方面的一个代表。在我们的编程生涯里,我们很容易就会遇到跨平台问题——即我们在我们的开发机器上开发的软件,在我们的产品环境的机器上就没有办法运行。特别是当我们使用Mac OS或者Windows机器上开发了我们的应用,然后我们需要在Linux系统上运行,就会遇到各种问题。并且当我们使用了一个需要重新编译的库时,这种问题就更加麻烦。

如下图所示的是JVM的架构示意图

程序员必知的六种隔离技术

JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它可以实现“编写一次,到处运行”。

换句话来说,它在底层实现了环境隔离,它屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

基于此,只要其他编程语言的编译器能生成正确Java bytecode文件,这个语言也能实现在JVM上运行。如下图所示的是基于JVM的Jython语言的架构图:

程序员必知的六种隔离技术

其底层是基于JVM,而编写时则是用Python语言,并且他可以使用Java的模块来编程。

常见拥有同样架构的工具,还有MySQL,如下图是所示的是MySQL的架构图:

程序员必知的六种隔离技术

MySQL在最顶层提供了一个名为SQL的查询语言,这个查询语言只能用于查询数据库,然而它却是一种更高级的用法 。它不像通用目的语言那样目标范围涵盖一切软件问题,而是专门针对某一特定问题的计算机语言,即领域特定语言。

6、隔离语言(DSL)

这是一门特别有意思也特别值得期待的技术,但是实现它并不是一件容易的事。

作为讨论隔离环境的一部分,我们只看外部DSL。内部DSL与外部DSL最大的区别在于:外部DSL近似于创建了一种新的语法和语义的全新语言。如下图所示是两中DSL的一种对比:

程序员必知的六种隔离技术

在这样的外部DSL里,我们有自己的语法、自己的解析器、类型检测器等等。最简单且最常用的DSL就是Markdown,如下图所示:

程序员必知的六种隔离技术

如果我们可以将我们的业务逻辑写成DSL,那么我们就不需要担心底层语言的变动过多地影响原有的业务逻辑。换句话说,这相当于创建了我们自己的语言隔离环境,我们不需要思考用何种语言来实用我们的业务。

(编辑:网站开发网_盐城站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!