java唯一字符串ID生成方案

工作中经常会有生成唯一字符串的需求。通常最容易想到的是UUID。UUID的唯一性毋庸置疑,但是32位的长度也容易让人退避三舍。也曾经想过参考《短网址生成方案》来生成一串ID,但是试验了一下发现唯一性不太好。

最终采用的方案是时钟方案,简单来说就是用当前时间戳做唯一ID。

采用时间戳做ID,秒或毫秒都容易产生重复,换成纳秒在单节点上就没问题了。参考百度百科关于纳秒…

Java 抽象工具类

在SpringBoot的源码中有看到使用abstract关键字定义的工具类,如:

…

Java AES加密

做360广告的对接需要对密码进行AES加密,下面是点睛平台文档的描述:

(AES模式为CBC,加密算法MCRYPT_RIJNDAEL_128)对MD5加密后的密码实现对称加密。秘钥是apiSecret 的前16位,向量是后16位,加密结果为64位数字和小写字母。

用Java实现AES需要依赖Java加密扩展(The Java Cryptography Extension…

springboot入门10 – 修改banner

这个内容有点儿水了。但是将springboot启动时的banner修改一下是个蛮好玩的事情。比如,不知道什么时候,我们组的springboot应用的banner就被改成了这个样子:

…

springboot入门09 – 实现伪静态

最近想了下springboot前端路径的伪静态实现。

通过百度最容易找到的方案是使用urlrewritefilter这个依赖。不过一想到要为这么一件事情就添加一个依赖,还要再添加一个配置文件,还要挨个写一遍所有的路径映射就觉得头疼,所以pass。

跟踪了一下springboot WEB请求处理的过程,找到了一个关键类:UrlPathHelper。在获取Handle…

springboot学习01 – 自定义自动配置

概述

SpringBoot提供了自动配置能力。通过自动配置我们可以非常方便地启动相关的服务。

SpringBoot自动配置有两个核心模块:

  1. 自动配置模块(autoconfigure):主要负责读取配置相关的内容,并尝试启动服务;
  2. 启动模块(starter):提供具体的服务能力以及所有相关的依赖。

通常这两个模块是分开的。比如使用Caffeine缓存,缓存自动配置在一个…

SpringBoot探索02 – 启动过程之getSpringFactoriesInstances

最近计划整理下SpringBoot的启动过程以及API请求返回过程,以便支持后续的部分内容,也方便实现一周一文的计划。

先做SpringBoot启动流程分析。

初见

在SpringBoot启动代码的开头部分可以看到如下的内容:

…

springboot入门08 – 创建非web项目

概述

从开始使用SpringBoot到现在,一直都是在用SpringBoot开发web服务(API服务)。直到前段时间,需要帮其他组的同事写一个非web的简单服务时,才想到Springboot是不是也支持非web项目。

答案是肯定的:spring诞生之初就不是为web项目定制的,springBoot无非是在spring核心项目的基础上添加了一些方便开发者使用的组…