2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > "Navicat" "mysql" "xxx.war" "tomcat" “JDK" "JRE" 都是什么?请

"Navicat" "mysql" "xxx.war" "tomcat" “JDK" "JRE" 都是什么?请

时间:2021-01-25 01:45:39

相关推荐

"Navicat"   "mysql"   "xxx.war"   "tomcat" “JDK" "JRE" 都是什么?请

1:"Navicat" , "mysql" , "xxx.war" , "tomcat",“JDK","JRE" ,”配置环境变量“分别是什么? 它们的功能分别是什么?

Navicat:是mysql的一种客户端,方便用户可视化的使用mysql。和sql server 查询分析器一样。

mysql:是一个轻量化的数据库。用于存储数据,信息等等。

xxx.war:是java web开发出来的部署包,通俗点讲就是一个网站的压缩包,放在 tomcat 指定目录就可以用了。

tomcat:是Java web 诚寻运行指定的容器一种。就是服务器程序,有了这个,网站才能顺利访问。

JDK:是java的开发环境。一般是开发展使用这个。

JRE:是java的运行环境。

————

配置环境变量,是为了让系统能够便捷的访问到以上程序,将路径等信息配置到环境变量中。

————

2:部署一个平台,上面这几个东西"Navicat" , "mysql" , "xxx.war" ,"tomcat",“JDK","JRE" ,”配置环境变量“ ,它们的顺序和关系是什么?

没有指定的顺序,但是需要先安装JRE或者JDK(包含JRE),然后安装mysql,tomcat,部署xxx.war。至于Navicat,只是用来分析sql用的,一般正式环境就不需要了。

至于关系。你访问一个网站,这个网站接收到请求,通过tomcat里的XXX.war程序,访问mysql数据库,然后返回结果。

3:曾经还看见过一个PHP MYSQL,这个PHP MYSQL 是什么?

PHP 是另外一种开发语言,和刚才的Java不同,PHP是轻量级的开发语言,而Java则适合大型应用。 MYSQL 作为数据库,提供一个接口,只要开发语言支持,都可以访问到mysql的数据库。

4:原来还见到过ORACLE,一般有同事,一看到一个网站之类的,就问是用什么做的。

有人回答ORACLE 或者 其它的,请问ORACLE和网站平台是什么关系?还有什么其它的吗?

oracle 是甲骨文公司的英文名称,这里一般是指数据库。oracle是一个重量级的数据库,和mysql一样部署在后台,共应用程序访问。性能和结构都要比mysql好很多,对于大型程序,一般选用oracle。其他的还有如 sqlserver, DB2, derby等等。

5:JAVA ,PHP , C , 这三个分别是什么 ?他们之间有什么关联吗?

都是程序开发语言。

java 基于虚拟机,可以做桌面程序和网站程序。

PHP 基于一个容器(服务器),适合做网站程序。

C基于系统,适合做本地客户端程序,桌面程序。

他们之间没有必要的关联。但是C作为程序基础,是大多数程序员入门首选。

6:基于”Navicat" , "mysql" , "xxx.war" , "tomcat",“JDK","JRE" ,”配置环境变量“部署一个平台,是所谓单机版的吗?部署的顺序和流程是?请讲下每一个的作用。

部署完毕以后,本机即可以访问,如果外网可以访问到本机的IP,那么,外网也可以访问到这个程序。

流程顺序和作用上面已经叙述。

其实,你平常经常访问的淘宝啊,各类视频网站啊,百度啊,都是这类应用:WEB 应用。他们运行于一个容器上,然后供互联网用户访问使用。

希望可以帮助你。

传统情况

我们先回顾一下,在没有 "立刻加列" 功能时,加列操作是怎么完成的。我们也借此来熟悉一下本期的图例:

当进行 加列操作 时,所有的数据行 都必须要 增加一段数据(图中的 列 4 数据)

如上一期图解所讲,当改变数据行的长度,就需要 重建表空间(图中灰蓝的部分为发生变更的部分)

数据字典中的列定义也会被更新

以上操作的问题在于 每次加列 操作都需要重建表空间,这就需要大量 IO以及大量的时间

立刻加列

"立刻加列" 的过程如下图:

请点击输入描述

请点击输入描述

"立刻加列" 时,只会变更数据字典中的内容,包括:

在列定义中增加 新列的定义

增加 新列的默认值

"立刻加列"?后,当要读取表中的数据时:

由于 "立刻加列" 没有 变更行数据,读取的行数据只有 3 列

MySQL 会将 新增的第 4 列的默认值,追加到 读取的数据后

以上过程描述了 如何读取?在 "立刻加列" 之前写入的数据,其实质是:在读取数据的过程中,"伪造"?了一个新列出来

那么如何读取?在 "立刻加列" 之后?写入的数据呢 ? 过程如下图:

当读取 行 4 时:

请点击输入描述

请点击输入描述

通过判断?数据行的头信息中的instant?标志位,可以知道该行的格式是 "新格式":该行头信息后有一个新字段?"列数"

通过读取?数据行的?"列数"?字段,可以知道 该行数据中多少列有 "真实" 的数据,从而按列数读取数据

通过上图可以看到:读取?在"立刻加列"?前/后写入的数据是不同的流程

通过以上的讨论,我们可以总结?"立刻加列"?之所以高效的原因是:

在执行?"立刻加列"?时,不变更数据行的结构

读取 "旧" 数据时,"伪造"?新增的列,使结果正确

写入 "新" 数据时,使用了新的数据格式(增加了instant标志位 和?"列数"?字段),以区分新旧数据

读取 "新" 数据时,可以如实读取数据

那么?我们是否能一直 "伪造"?下去"伪造"?何时会被拆穿 ?

考虑以下场景:

用 "立刻加列" 增加列 A

写入数据行 1

用 "立刻加列" 增加列?B

写入数据行?2

删除列?B

我们推测一下 "删除列 B" 的最小代价:需要修改 数据行中的instant标志位或?"列数"?字段,这至少会影响到?"立刻加列"?之后写入的数据行,成本类似于重建数据

从以上推测可知:当出现 与?"立刻加列"?操作不兼容 的 DDL 操作时,数据表需要进行重建,如下图所示:

请点击输入描述

请点击输入描述

扩展思考题:是否能设计其他的数据格式,取代instant标志位和?"列数"?字段,使得 加列/删列 操作都能 "立刻完成" ?(提示:考虑 加列?- 删列?- 再加列 的情况)

使用限制

在了解原理之后,我们来看看?"立刻加列"?的使用限制,就很容易能理解其中的前两项:

"立刻加列"?的加列位置只能在表的最后,而不能加在其他列之间

在元数据中,只记录了 数据行 应有多少列,而没有记录 这些列 应出现的位置。所以无法实现指定列的位置

"立刻加列"?不能添加主键列

加列 不能涉及聚簇索引的变更,否则就变成了 "重建" 操作,不是 "立刻" 完成了

"立刻加列"不支持压缩的表格式

按照 WL 的说法:"COMPRESSED is no need to supported"(没必要支持不怎么用的格式)

总结回顾

我们总结一下上面的讨论:

"立刻加列" 之所以高效的原因是:

在执行 "立刻加列" 时,不变更数据行的结构

读取 "旧" 数据时,"伪造"?新增的列,使结果正确

写入 "新" 数据时,使用了新的数据格式?(增加了?instant 标志位?和 "列数" 字段),以区分新旧数据

读取 "新" 数据时,可以如实读取数据

"立刻加列"?的 "伪造" 手法,不能一直维持下去。当发生?与 "立刻加列" 操作不兼容?的 DDL?时,表数据就会发生重建

回到之前遗留的两个问题:

"立刻加列" 是如何工作的 ?

我们已经解答了这个问题

所谓 "立刻加列" 是否完全不影响业务,是否是真正的 "立刻" 完成 ?

可以看到:就算是 "立刻加列",也需要变更 数据字典,那么 该上的锁还是逃不掉的。也就是说 这里的 "立刻" 指的是 "不变更数据行的结构",而并非指 "零成本地完成任务"

"Navicat" "mysql" "xxx.war" "tomcat" “JDK" "JRE" 都是什么?请指导 谢谢

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。