后端相关
blade后端技术学习使用
smileTimLi
一只站在树上的鸟儿,从来不会害怕树枝断裂,因为它相信的不是树枝,而是它自己的翅膀
展开
-
Spring的Event事件驱动 实现 日志系统相关记录 之 功能调用
如何使用自定义API日志下面我们使用blade-demo中的一个API接口来测试下API日志 增加@ApiLog注解,代码如下/** * 详情 */@ApiLog("Blog详情")@GetMapping("/detail")@ApiOperation(value = "查看详情", notes = "传入主键", position = 1)public R<Blog> detail(@ApiParam(value = "主键值") @RequestParam Intege原创 2020-06-16 18:01:07 · 304 阅读 · 0 评论 -
Spring的Event事件驱动 实现 日志系统相关记录
前言系统一大,就会拆分成多个独立的进程,比如使用微服务架构,也就成了分布式系统。 传统的日志系统比如log4j已经无法满足,我们需要将这些日志合并展示到一个统一的地方。 如此一来,分布式日志收集系统就登场了。 现在用的较多的技术组合为 ElasticSearch+ logstash(基于java)+kibana(基于JRuby, logstash已自带),也就是大家常说的ELK。 但是此系统较为重量级并不是很适合轻量级微服务架构,SpringBlade封装了一个相对好拓展的日志系统,下面我们来具原创 2020-06-16 17:43:19 · 609 阅读 · 0 评论 -
Stream API 下
Stream API 下Collector 收集收集器用来将经过筛选、映射的流进行最后的整理,可以使得最后的结果以不同的形式展现。collect方法即为收集器,它接收Collector接口的实现作为具体收集器的收集方法。Collector接口提供了很多默认实现的方法,我们可以直接使用它们格式化流的结果;也可以自定义Collector接口的实现,从而定制自己的收集器。归约流由一个个元素组成,归约就是将一个个元素“折叠”成一个值,如求和、求最值、求平均值都是归约操作。一般性归约...原创 2020-06-12 13:30:56 · 150 阅读 · 0 评论 -
Stream API 上
Stream API 上使用流创建流在使用流之前,首先需要拥有一个数据源,并通过StreamAPI提供的一些方法获取该数据源的流对象。数据源可以有多种形式:1. 集合这种数据源较为常用,通过stream()方法即可获取流对象:List<Person> list = new ArrayList<Person>(); Stream<Person> stream = list.stream();2. 数组通过Arrays类提供的静态函数st原创 2020-06-12 13:31:10 · 179 阅读 · 0 评论 -
SimpleDateFormat的线程安全问题与解决方案
SimpleDateFormat的线程安全问题与解决方案1. 线程不安全场景描述 SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交给Calendar引用来储存的. 这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread 之间就会共享...转载 2020-06-12 17:41:42 · 202 阅读 · 0 评论 -
Java获取N天前,N天后的日期(如3天)
一. JDK8之前 - CalendarJdk1.1 之后, 带来了java.util.Calendar工具类, 用于处理时间.1.1 某(3)天前:取负值Calendar calendar1 = Calendar.getInstance();SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");calendar1.add(Calendar.DATE, -3);String three_days_ago...转载 2020-06-12 18:00:39 · 15345 阅读 · 0 评论 -
Optional干掉空指针
简介空指针异常是导致Java应用程序失败的最常见原因。 为了解决空指针异常更加优雅,Java8 提供了Optional类库。 Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。 Optional提供很多有用的方法,这样我们就不用显式进行空值检测。代码示例1、Optional.of()或者Optional.ofNullable():创建Optional对象,差别在于of不允许参数是null,而ofNullable则无限制。// 参数不能是nullOptio..原创 2020-06-12 14:36:11 · 187 阅读 · 0 评论 -
Java8 函数式接口学习
Java8 函数式接口一览// Function<T, R> -T作为输入,返回的R作为输出 Function<String,String> fun = (x) -> {System.out.print(x+": ");return "Function";}; System.out.println(function.apply("hello world"));//Predicate<T> -T作为输入,返回的boolean值作为输出Predic原创 2020-06-12 14:42:38 · 143 阅读 · 0 评论