一卓的博客

怕什么真理无穷,
进一寸有一寸的欢喜。

0%

从 Java EE 5 规范开始,Servlet 中增加了两个影响 Servlet 生命周期的注解(Annotion);@PostConstruct 和@PreDestroy。这两个注解被用来修饰一个非静态的 void() 方法 。写法有如下两种方式:

1
2
@PostConstruct
Public void someMethod() {}

或者

1
public @PostConstruct void someMethod(){}

被@PostConstruct 修饰的方法会在服务器加载 Servle 的时候运行,并且只会被服务器执行一次。PostConstruct 在构造函数之后执行,init() 方法之前执行。PreDestroy()方法在 destroy() 方法执行执行之后执行

今天把以前记录的 Cron 表达式的笔记整理为博客。

Cron 表达式,由七个字段组成:

  • Seconds
  • Minutes
  • Hours
  • Day-of-Month
  • Month
  • Day-of-Week
  • Year (Optional field)
阅读全文 »

本文使用简单的例子来说明 Predicate 的用法。

本文示例使用 Stream Api :

1
Stream<T> filter(Predicate<? super T> predicate);

使用 Predicate 来过滤 list :

例如我们有个数据 List 如下:

1
List<String> names = Arrays.asList("Jack", "Tom", "James", "Dwight Howard");

单条件过滤:

1
2
3
4
5
6
7
private static void listFilter(List<String> names) {
List<String> result = names.stream()
// 此处实际使用 Predicate
.filter(name -> name.startsWith("J"))
.collect(Collectors.toList());
System.out.println("listFilter startsWith J :" + result);
}
阅读全文 »

前言

Oracle 12C 新特性——CDB 与 PDB

Oracle 12C 引入了 CDB 与 PDB 的新特性,在 ORACLE 12C 数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB 全称为 Container Database,中文翻译为数据库容器,PDB 全称为 Pluggable Database,即可插拔数据库。在 ORACLE 12C 之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入 ORACLE 12C 后,实例与数据库可以是一对多的关系。

在阅读本文之前,需要先注册 Docker hub 账号。因为 Oracle 12c 的官方镜像需要登陆 Docker hub。

阅读全文 »

前言:随着2015年6月 ECMAScript 6.0 发布以来,有几个新的变量声明方式进入前端开发者的视线,即 let、const、import 和 class 命令,而这些新的声明方式之中有两个容易和 var 混淆,那就是 let 和 const。那这两个新的声明方式和我们之前使用的 var 声明方式有什么不同呢,那么是什么原因导致 ES6 推崇新的声明方式摒弃传统的声明方式呢,让我们通过这篇文章一探究竟。

阅读全文 »

想使用 https 需要认证机构颁发的电子证书。本文介绍一个免费的 https 的证书 Let’s Encrypt。

Let’s Encrypt 和其他认证机构的区别:

  • 免费,Let’s Encrypt 提供期限是90天的免费电子证书
  • 提供工具 certbot 自动生成电子证书文件

Let’s Encrypt 证书不仅是免费的,而且支持通配符证书,通配符证书指的是一个可以被多个子域名使用的公钥证书,多个子域名使用起来十分方便。申请和配置的流程都非常简单,虽然每次的有效期为 90 天,但可以通过脚本去更新证书,只要配置好了,几乎可以一劳永逸。

阅读全文 »

Docker 通过从一个 Dockerfile 文本文件中读取指令来自动构建镜像,该文本文件按顺序包含构建给定镜像所需的所有命令。Dockerfile 遵循特定的格式和指令集。

Docker 镜像由只读层组成,每个只读层代表一个 Dockerfile 指令。这些层是堆叠的,每个层都是与上一层相比变化的增量。

例如:

1
2
3
4
FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

每条指令创建一层:

  • FROMubuntu:18.04Docker 镜像创建一个图层。
  • COPY 从 Docker 客户端的当前目录添加文件。
  • RUN 使用 make 构建您的应用程序。
  • CMD 指定在容器中运行什么命令。

运行图像并生成容器时,可以 在基础层之上添加一个新的可写层(“容器层”)。对运行中的容器所做的所有更改(例如写入新文件,修改现有文件和删除文件)都将写入此可写容器层。

阅读全文 »