写在2019
说起来,我脸都有点红,回眸整个2018,对于我个人来说,能力值这一方面,几乎进步为0,当初制定的计划或者目标,完成地稀碎,甚是惭愧啊。
工作篇
2018的工作,一个词可以简明扼要的总结:跌宕起伏
大致可以分为3个阶段:
- NamiBank在4月份猝然夭折,树倒猢狲散(那现场的阵仗,比电影都精彩)
- 5月初,跟着几位大哥一起创业,理发共享经济方向,从当初的豪情万丈,到最后的黯然离场
- 9月初,加入到互联网教育平台,开启一段全新的旅程
我刚刚睡着,天刚刚破晓
在Web应用开发中,异常一般是不可避免的,但是每个异常可能都不尽相同,并且异常的内容也是五花八门。针对这种情况,就最好需要一个统一的异常处理,那么Spring Boot
提供了一个默认的映射:/error
,当抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。
例如以下代码
SPI(Service Provider Interface),就是为了使不同厂商针对同一个接口做出不同实现,比如最常见的就是JDBC
中 mysql和 postgresql,他们都提供了JDBC的实现方式,而SPI
机制可以为某个接口寻找到具体的实现。
为了使得服务的可插拔,在接口实现时,不能采取硬编码的方式。所以java的SPI
就派上了用场。
当服务的提供者提供了一种接口的实现方式,需要在classpath下的META-INFO/services/
目录里面创建一个以服务接口命名的文件(是接口的全路径名称),这个文件里面的内容就是接口的具体的实现类。当其他的程序需要这个服务的时候,就可以通过查找这个jar包(一般都是以jar包做依赖)META-INF/services/
中的配置文件,配置文件中有接口的具体实现类名,可以根据这个类名进行加载实例化,就可以使用该服务了。
JDK中查找服务的工具类是java.util.ServiceLoader
在jdbc4.0之前,我们创建数据库连接的时候,通常需要Class.forName("com.mysql.jdbc.Driver")
这句话进行驱动的加载,然后再获取连接。但是在jdbc4.0以后,就不需要这句话来加载驱动了,而是直接获取连接就行了,这个就是通过SPI
机制实现的。
从 GitLab 8.0 开始,GitLab CI 就已经集成在 GitLab 中,我们只要在项目中添加一个 .gitlab-ci.yml
文件,然后添加一个 Runner,即可进行持续集成。本文将介绍如何使用 GitLab CI 进行持续集成。
一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。
任何提交或者 Merge Request 的合并都可以触发 Pipeline,如下图所示:
Stages 表示构建阶段,说白了就是上面提到的流程。
我们可以在一次 Pipeline 中定义多个 Stages,这些 Stages 会有以下特点:
Gitlab是代码的在线托管工具,能够实现版本控制。
以下操作都是基于CentOS 7
|
|