【Tomcat】三.Tomcat启动(下)
上一篇的时序图:
一. StandardRoot启动
1 | public class StandardRoot extends LifecycleMBeanBase implements WebResourceRoot { |
上一篇的时序图:
1 | public class StandardRoot extends LifecycleMBeanBase implements WebResourceRoot { |
上一篇的时序图:
[toc]
相信一直默默耕耘在 JavaWEB
的同学,肯定不会不认识 Tomcat
。这可是世界一个著名的 Web服务器
之一,在之前动态 Web服务
还没有那么盛行的时候,Tomcat
依靠对 Servlet
的实现,让 Web开发
变得简单,JSP诞生
也是目前 动态页面
的始祖。 我不知道现在的同学还记不记得 servlet
的开发方法:
HttpServlet
,覆写 doGet
doPost
doPut
等不同 HTTP Method
的方法实现;WEB项目
的 web.xml
文件中配置 servlet
的请求路径信息;war
包,丢进 Tomcat/webapp
;Tomcat
服务器,Tomcat
端口映射成功以后请求相对应的路径,即可访问到我们刚刚写的 servlet
中。
数据库最主要的特性是 持久性
,即修改了数据库数据以后,无论发生什么事情,数据都不会丢失。MySQL-InnDB
就利用 REDO LOG
来满足持久性。REDO LOG
中文称为 重做日志
,那也可以简洁一点叫做 REDO 日志
。是数据库启动的时候,用于读取计算 BufferPool
中脏页数据的方式,这样可以避免由于其他原因导致数据库掉线但是脏页未刷新到硬盘,而导致数据丢失的尴尬局面。
由于 REDO 日志
存在的意义就是,重启数据库的时候能够重新将数据恢复回来。所以在数据库没有发生重启或者异常宕机的时候,他是没有任何意义的,甚至还多了一些开销…
所以为了减少开销,REDO 日志
应当尽量轻巧,记录一些必要的信息就可以了,比如:某个区,某个页号,的某一行,修改成xx
。第二个减少开销的方式就是顺序写入硬盘,先发生的事务,REDO 日志
先被写入硬盘,后边的排队顺序追加到后面去。
首先明白一点,REDO 日志
所携带的数据是 MySQL_InnoDB
在重启系统的时候,需要调用某些函数进行恢复时所需要的参数。不过,为了减少容量的开销,又做了一些事情。
该文章采用先各个概念理解然后在最后可以配置各个不同参数的方式。所以如果想要配置的时候,可以直接看最后一个章节。
之前在 MySQL-InnoDB体系结构 中有说过,InnoDB
有一个一直在运行的后台线程在跑,目的简单的说就是 异步的同步内存中的数据到硬盘上去
。 那进一步说为啥要同步,因为内存中的数据已经发生修改,所以这就是接下来的内容,从修改数据开始讲起。但是之前我们需要先了解一下 BufferPool
的出现。