请求类型
- GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
- PUT请求是向服务器端发送数据的(与GET不同)从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
- POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
- DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
返回一个空集合
public static List testNull(){
//return Collections.emptyList();
return Collections.EMPTY_LIST;
}
public void testEmptyList() {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
System.out.println(list);
list = Collections.emptyList();
System.out.println(list);
list.add(3);//异常:不支持的操作
}
订单30分钟后未支付失效
public void testTimerTask() throws IOException {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行成功");//先判断订单状态是否是未支付,如果是就回写库存操作
}
};
Timer timer = new Timer();
timer.schedule(task, 1000*5);//五秒后后执行
System.in.read();//避免程序退出,进行阻塞
}
状态机–订单修改
#状态机实现--版本号
#数据库的version默认为0修改订单时传入0我在mapper中对0加1并且重新赋值给version
#当版本号为0的时候我才可以修改订单状态
UPDATE goods_order
SET order_status = 4,
version = 0+1
WHERE
orderid = 100,AND version = 0
Java 8 Optional 类
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常。
@Test
public void optionalTest() {
Integer value1 = null;
Integer value2 = new Integer(10);
// Optional.ofNullable - 允许传递为 null 参数
Optional<Integer> a = Optional.ofNullable(value1);
// Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
Optional<Integer> b = Optional.of(value2);
System.out.println("第一个参数值存在: " + a.isPresent());
System.out.println("第二个参数值存在: " + b.isPresent());
// Optional.orElse - 如果值存在,返回它,否则返回默认值
Integer v1 = a.orElse(new Integer(0));
//Optional.get - 获取值,值需要存在
Integer v2 = b.get();
System.out.println("Sum =" + (v1 + v2));
}
@Test
public void test() throws Exception {
String str = null;
List<String> list = Arrays.asList("abc", "123", "123", "123", "123", "deg", "123", "4561234");
// Optional.ofNullable - 允许传递为 null 参数
Optional<String> s = Optional.ofNullable(str);
// Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
Optional<List<String>> l = Optional.of(list);
// 如果有值 输出
s.ifPresent(System.out::println);
// Optional.orElse - 如果值存在,返回它,否则返回默认值
System.out.println("s.orElse(\"orElse\") = " + s.orElse("orElse"));
// Optional.orElseGet - 如果存在该值,返回值, 否则触发other,并返回other调用的结果。
System.out.println("s.orElseGet(() -> \"orElseGet\") = " + s.orElseGet(() -> "orElseGet"));
String nullName = "12313";
// 没有值 抛出自定义异常
System.out.println(Optional.ofNullable(nullName).
orElseThrow(IllegalArgumentException::new));
// 有值 执行操作
Optional<List> optionalList = Optional.ofNullable(list);
optionalList.ifPresent(bean -> System.out.println(bean));
//Optional.get - 获取值,值需要存在
optionalList.get();
}