MENU

Category: 有码

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

在做单表动态增删改查功能时产生了这样一个需求,判断传入的字符串是否符合指定数据库插入的格式要求;很简单的一个问题,但是没找到直接可用的判断方法。首先想到的是用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

Spring Boot 整合 RabbitMQ

Spring Boot整合RabbitMQ是非常容易的,下面将通过一个最简单的例子实现消息的发送和接收;仅引用spring-boot-starter-amqp这个starter即可完成rabbitMQ的整合。

首先,创建一个maven项目,pom.xml加入依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

额外增加pring-boot-starter-web是为了方便调用生产消息。

增加配置文件application.yml,配置RabbitMQ相关信息:

spring:
  rabbitmq:
    host: 66.66.66.66
    port: 5672
    username: wangxuesong
    password: 123456

Read More

String.valueOf(null)引出的两个问题

昨天有人在群里问了这么个问题:

System.out.println(String.valueOf(null));

会报空指针异常;而下面这样就可以打印null

Object obj = null;    
System.out.println(String.valueOf(obj));

debug代码会发现,两种方式执行了不同的重载方法,第一种执行了

public static String valueOf(char data[]) {
    return new String(data);
}

第二种执行了

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

如果对重载不熟悉,很难解释其中原因;当然null是另一个让人头疼的问。

重载

Java的重载解析过程是以两阶段运行的:

  • 第一阶段:选取所有可获得并且可应用的方法或构造器。

Read More