docker容器自定义jdk镜像

前言

有官方的jdk镜像,为什么还要自定义jdk镜像?
当我们在官方镜像中找不到我们所需要的版本时,就可以单独下载指定版本的安装包,然后根据安装包自定义jdk镜像。

本文以jdk1.8.0_181为例,详细讲述自定义jdk镜像的步骤。

docker和docker-compose版本说明:

C:\Users\whwtr>docker -v
Docker version 20.10.17, build 100c701

C:\Users\whwtr>docker-compose -v
docker-compose version 1.29.2, build 5becea4c

C:\Users\whwtr>

说明:如果是Windows或macOS系统直接安装docker-desktop即可。

MyBatis多数据库支持databaseId为null问题解决

本文主要讲述MyBatis多数据库支持databaseId为null的问题如何解决,在此之前,我们先来看下Mybatis如何配置支持多数据库。

MyBatis多数据库支持

让一个项目支持不同的数据库在企业开发中是一个比较常见的需求,即一套代码兼容不同的数据库。由于不同的数据库支持的sql语法稍有差别,所以某些功能需要根据数据库的不同书写不同的sql语句。对于这种需求,首先能够想到的解决方案就是针对不同的数据库维护不同的mapper.xml文件,但是这种方案会严重增加开发和维护的成本。因为不同数据库支持的语法大部分都是相同的,不同的毕竟是少数,我们希望只重写不同的部分而重用相同的部分。

针对这种情况,MyBatis提供了解决方案,即databaseIdProvider和databaseId。通过MyBatis提供的这种功能,我们就只需要维护一套mapper.xml文件即可。

查看Linux系统是centos还是ubuntu的方法

前言

本文主要讲述如何查看Linux系统是centos还是ubuntu的4种方法。

常用Linux系统分两大类:
RedHat系列:主要有Redhat、Centos、Fedora等
Debian系列:Debian、Ubuntu等

总结4种区分centos和ubuntu的方法

1、lsb_release -a

使用lsb_release -a命令可以列出你的Linux系统是哪个Linux发行版,还可以列出具体是第几个版本。

2、cat /etc/redhat-release && cat /etc/lsb-release

redhat或centos对应命令:cat /etc/redhat-release
ubuntu对应命令:cat /etc/lsb-release

SpringBoot配置文件的优先级

本文主要详细介绍SpringBoot项目中配置文件的优先级。

优先级高的配置会覆盖优先级低的配置。

总体优先级

(1)命令行参数,比如--server.port=8081
(2)JVM系统属性,通过System.getProperties()方法获取;
(3)系统环境属性,通过System.getenv()方法获取;
(4)jar包外部的application-{profile}.properties/yml配置文件,如果没有指明激活的profile,则默认为default;
(5)jar包内部的application-{profile}.properties/yml配置文件,如果没有指明激活的profile,则默认为default;
(6)jar包外部的application.properties/yml配置文件;
(7)jar包内部的application.properties/yml配置文件;
(8)通过@Configuation注解类上的@PropertySource注解引入的配置文件;
(9)通过SpringApplication.setDefaultProperties指定的默认属性;

Windows服务设置依赖关系

语法:
sc config "服务名称" depend= "依赖的服务名称"

注意:depend=后必须有空格

如果有多个依赖项,则以“/”分割:
sc config "服务A" depend= "服务1"/"服务2"/"服务3"/......

示例:
sc config "smaple-admin" depend= "mysql"/"redis"

说明:
smaple-admin服务依赖mysql和redis服务,所以在启动smaple-admin服务之前,会先启动mysql和redis服务。