docker镜像原理
镜像定义
- 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
Docker镜像加载原理
UnionFS(联合文件系统)
- Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union文件系统是Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
- 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。
docker基本介绍
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker和虚拟机的区别:
传统虚拟机是虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上运行软件;而容器没有自己的内核,也没有虚拟硬件,其中的应用是直接运行在宿主机的内核中的。
SpringBoot静态资源配置原理
SpringBoot中与静态资源配置有关的代码在自动配置类WebMvcAutoConfiguration里(org.springframework.boot.autoconfigure.web.servlet包下)。
1 | @Configuration(proxyBeanMethods = false) |
SpringBoot自动配置原理
@SpringBootApplication是一个复合注解或派生注解,在@SpringBootApplication中有三个重要注解,分别是@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。
MySQL锁机制
1、锁机制介绍
概念
- 锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,因此需要借助锁来解决数据并发访问的一致性、有效性。
锁的分类
从锁的粒度分:
- 行锁:是MySQL中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。有可能会出现死锁的情况。 InnoDB行锁是通过给索引项加锁实现的,如果没有索引,InnoDB会通过隐藏的聚簇索引来对记录加锁。
- 表锁:是MySQL锁中粒度最大的一种锁,表示当前的操作对整张表加锁,资源开销比行锁少,不会出现死锁的情况,但是发生锁冲突的概率很大。被大部分的MySQL引擎支持,MyISAM和InnoDB都支持表级锁,但是InnoDB默认的是行级锁。
- 页锁:是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。BDB支持页级锁。
nginx配置实例
1、实现反向代理
实例一:使用nginx反向代理,访问 http://www.abc.com 直接跳转到 http://127.0.0.1:8080。
①以访问本地8080端口的tomcat为例,先在本地启动tomcat,浏览器输入 http://127.0.0.1:8080 后成功访问到tomcat主页面,如下图:
nginx配置文件
nginx的配置文件在安装目录的conf目录下名为nginx.conf文件,如图: