Home

Mockito使用

Maven依赖 <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>3.1.0</version> <scope>test</scope> </dependency> 常用例子 创建mock对象 UserMapper mockUserMapper = Mockito.mock(UserMapper.class); 对返回值stub Mockito.when(mockUserMapper.g...

Read more

Java8 函数式编程

方法接口 只有一个抽象方法的接口。方法接口存在的目的就是为了传递一个方法,例如 @FunctionalInterface public interface Runnable { public abstract void run(); } Java8后增加了注解@FunctionalInterface来指明一个接口是方法接口 实现方法接口的抽象方法 传统方法 定义子类 public class MyRunnable implements Runnable { @Override public void run() { System.out.println("hello"); } } 使用匿名内部类 Runn...

Read more

前端表单验证

JavaScript原生验证 <form>元素没有定义novalidate属性,且<input>元素通过一些验证有关的属性开启验证,例如定义required,max,min等属性,表单提交的时候默认自动验证。除此之外可以通过以下JS代码主动触发验证 document.getElementById('form').checkValidity() jQuery Validation 引入jQuery Validation <script src="../common/jQuery-3.4.1/jquery-3.4.1.min.js" th:src="@{/static/common/jQuery-3.4.1/jquery-3.4.1.min.js}...

Read more

SQL中delete和truncate

作用 都可以用于删除一张数据表的全部数据 -- 删除表a的全部数据 delete from a; truncate table a; 区别 delete属于DML,而truncate属于DDL truncate只能用于表,而delete可以用于表、视图等 delete可以加where子句限制条件,truncate不能 delete支持事务,truncate不支持 truncate删除效率比delete高 总结 一般来说,只有删除整张表的数据,表的数据量大,且无需考虑撤回的情况下,可以考虑使用truncate以提升性能

Read more

Java自定义注解

定义注解 @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented @Repeatable(ShowMessage.ShowMessages.class) public @interface ShowMessage { String message() default "hello"; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented @interface ShowMessages { ShowMes...

Read more

Java枚举类

枚举类解决的问题 解决使用常量存在的两个问题 无法检查值是否在合法范围内 常量是其它类型,例如int或String,无法检查是否超出了使用范围,即当作一个普通的int或String使用 语法糖的实质 定义一个枚举类 public enum Color { RED, GREEN, BLUE; } 实际编译后 public final class Color extends Enum { public static final Color RED = new Color(); public static final Color GREEN = new Color(); public static final Color BLUE =...

Read more

Java8 CompletableFuture使用

准备Executor 这里以ThreadPoolExecutor为例 ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 5, 1, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10), Executors.defaultThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy()); 异步执行任务 执行无返回值任务 CompletableFuture.runAsync(() -> System.out.println("a"), threadPoolExe...

Read more

Java8函数式接口

通用的函数式接口 Function 接收T类型,返回R类型 public interface Function<T, R> { R apply(T t); } Supplier 不接收,返回T类型 public interface Supplier<T> { T get(); } Consumer 接收T类型,不返回 public interface Consumer<T> { void accept(T t); } Predicate 接收T类型,返回boolean public interface Predicate<T> { boolean test(T t); } ...

Read more

Java8日期处理

日期处理相关的类的含义 类名 含义 LocalDate 不含时区信息的日期 LocalTime 不含时区信息的时间 LocalDateTime 不含时区信息的日期时间 Instant 不含时区信息的时间戳 ZoneId 一个时区 ZonedDateTime 含时区信息的日期时间 Period 以年、月、日描述的时间区间 ...

Read more

Java容器LinkedList源码完整注释

本文源码基于JDK8 LinkedList类继承关系 Iterator接口 public interface Iterator<E> { // 检测是否还有下一个元素 boolean hasNext(); // 返回下一个元素 E next(); // 将上一次next方法返回的元素删除 default void remove() { // 抛出异常 throw new UnsupportedOperationException("remove"); } // 对剩余的所有元素调用Consumer default void forEachRemaining...

Read more