摘要:CompletableFuture Java5引入了Future和 FutureTask,用于异步处理。Future可以通过get()方法获取异步的返回值。 在Java8引入了CompletableFuture,CompletableFuture不仅实现了Future接口, 还实现了Completi
阅读全文
摘要:Lambda表达式 lambda表达式,实际上就是匿名函数。 格式如下: ()里面是函数的参数,中间是箭头, 是函数的代码块,包含了函数的执行以及返回结果。 ()->{} 新建线程 不使用lambda: Runnable runnable = new Runnable() { @Override p
阅读全文
摘要:什么时候使用异步? 处理多个任务,某些任务比较耗时,可以用异步。 异步线程 新建一个类,实现Callable接口,重写call()方法。 异步任务的结果,通过call()方法返回。 实现Callable接口,call()结果就返回String类型。Object等其他类型同理。 如果不需要返回结果,可
阅读全文
摘要:StringJoiner可以用来拼接字符串。 字符串拼接 示例如下: public static void test1() { StringJoiner stringJoiner = new StringJoiner(""); stringJoiner.add("Hello"); stringJoi
阅读全文
摘要:常见查询的DSL: 首先是es常见的DSL语句: GET index名称/type名称/_search { "size" : 10000, "query" : { "bool" : { "must" : [ { "range" : { "范围查询字段" : { "from" : "2020-10-2
阅读全文
摘要:数据类型 Sonar提示: Use "BigDecimal.valueOf" instead. 解决方法:使用BigDecimal.valueOf()代替。因为这个方法内部会将参数转换为String,保证精度不丢失。 public static BigDecimal valueOf(double v
阅读全文
摘要:java8使用了LocalDateTime和DateTimeFormatter。比之前的Date和Carlendar有所改进。 DateTimeFormatter是线程安全的。DateTimeFormatter中很多属性使用了final修饰。 LocalDate: 只能设置仅含年月日的格式,表示没有
阅读全文
摘要:使用split的时候,要多注意下标。 split方法 继续往里看: split()方法内部,其实是用Pattern去处理的。 Pattern是一个正则表达式经编译后的表现模式。 Pattern compile(String regex) 表示将给定的正则表达式编译并赋予给Pattern类。 Patt
阅读全文
摘要:No.1:重复代码的提炼 重复代码是重构收效最大的手法之一,进行这项重构的原因不需要多说。它有很多很明显的好处,比如总代码量大大减少,维护方便,代码条理更加清晰易读。 它的重点就在于寻找代码当中完成某项子功能的重复代码,找到以后请毫不犹豫将它移动到合适的方法当中,并存放在合适的类当中。 小实例 cl
阅读全文
摘要:类型转换虽然很简单,但是还是有些小细节要多注意。 ### String转化为int: ``` String test="123"; int number=Integer.parseInt(test); ``` ### String转化为Integer: ``` String test="123";
阅读全文
摘要:大量判空的代码 实际中,对象不判空会导致空指针异常。 为了规避为指针,不得不写出这种非常冗长又丑陋的空指针判断。 public void tooMuchNull(Worker worker) { if (worker != null) { Address address=worker.getAddr
阅读全文
摘要:一、lambda表达式 语法: (parameters) -> expression 或 (parameters) ->{ statements; } parameters是参数,expression是表达式,statements是代码块。 lambda表达式,其实就是匿名函数。 ->左侧是方法参数
阅读全文
摘要:在进行单价、总价相关的计算时,就会用到BigDecimal。 在初始化时,一个不小心,就可能给自己挖坑。 示例如下: 运行之后,结果为: 源码注释 打开BigDecimal的构造方法,可以发现: 大体意思就是,BigDecimal(double val)这个构造方法有时是无法精确预料的, 传入0.1
阅读全文
摘要:一、List ArrayList 使用List时,最好初始化容量。 ArrayList的默认容量为10,每次扩容增0.5倍,假如要放置100个元素,需要多次扩容。 List<String> list=new ArrayList<>(100); String数组转List 使用Arrays.asLis
阅读全文
摘要:在平常开发中,如果涉及到计算,要求准确的精度,比如单价*数量=总价之类的计算,那么得用到BigDecimal。 ###初始化 如下: BigDecimal amount=new BigDecimal("5.33"); 注意,最好不要用double类型来初始化,数值并不准确。 比如 BigDecima
阅读全文
摘要:RedisTemplate 如果想要在java中使用Redis相关的数据结构,要先注入RedisTemplate。 @Autowired private RedisTemplate<K,V> redisTemplate; 其中K,V类型,可以使用具体的类型,比如String或者其他具体类。 @Aut
阅读全文
摘要:Request(请求) 1.获取并打印request的body中的参数。 这种获取请求中代码,一般都会封装成工具类。 如果不封装,写起来比较麻烦,类似如下: JSONObject res = new JSONObject(); String postData = null; try { postDa
阅读全文
摘要:1.使用HttpServletResponse的sendRedirect()方法。 示例: 2.返回"redirect:"加上url。 注意:这种方式,不能使用@RestController和@ResponseBody,否则只会返回一堆字符串。 如下: 参考资料: https://blog.csdn
阅读全文
摘要:在项目开发中,我们经常需要构建对象。常见的做法有getter/setter,或者构造器构建对象。 可能会有人写出类似如下的代码: Company company=new Company(); company.setAgentId(agentId); company.setAgentUserId(ag
阅读全文
摘要:FastJson依赖包: <!-- fastjson依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency>
阅读全文