MENU

Keep It Stupid Simple

判断字符串是否为指定日期格式

在做单表动态增删改查功能时产生了这样一个需求,判断传入的字符串是否符合指定数据库插入的格式要求;很简单的一个问题,但是没找到直接可用的判断方法。首先想到的是用SimpleDateFormat来parse字符串,如果抛出异常则为不符合,反之则符合,代码如下:

private static boolean isValidFormat(String format, String value) {
    boolean ok = true;
    DateFormat df = new SimpleDateFormat(format);
    try {
        df.parse(value);
    } catch (ParseException e) {
        ok = false;
    }
    return ok;
}

使用yyyy-MM-dd HH:mm:ss格式和2019-02-31 13:12:20进行测试,

@Test
public void test_1() {
    String format = "yyyy-MM-dd HH:mm:ss";
    String value = "2019-02-31 13:12:20";
    Assert.assertFalse(isValidFormat(format, value));
}

Read More

Vultr 端口问题排查

在Vultr服务器上安装的某软件突然出现连接问题,开始以为是IP被封了;发现ping xx.xx.xx.xx(替换真实IP)是通的,ssh登陆也没有问题;怀疑是vultr修改了服务器防火墙配置,执行

Read More

Spring Boot 与AOP

AOP(Aspect-oriented programming)译为面向切面编程,是的一种程序设计思想,它将横切关注点业务主体进行分离,以提高程序代码的模块化程度(解藕)。在现有代码基础上增加额外的Advice(通知)机制,对被声明为Pointcut(切点)的代码块进行统一管理;从核心关注点中分离出横切关注点是面向切面的程序设计的核心概念;像记录操作日志、记录执行时间、权限控制等功能,如果在代码实现上逐个方法去添加这些处理代码会造成代码冗余和代码入侵,也很难维护;而AOP就能很好的处理这些问题。

Read More

包含数字大小写字母特殊字符且不少于8位的正则

验证方法:

/**
 * 密码长度8到16位
 * 包含数字
 * 包含大写字母
 * 包含小写字母
 * 包含特殊字符
 */
public static boolean validatePassword(String password) {
    if (StringUtils.isBlank(password)) {
        return false;
    }
    Pattern pattern = Pattern.compile("(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\\w\\s]).{8,16}");
    Matcher matcher = pattern.matcher(password);
    return matcher.matches();
}

Read More