Collectors.toMap的对null友好实现
令她反感的,远不是世界的丑陋,而是这个世界所戴的漂亮面具。——《不能承受的生命之轻》 我们在使用toMap时如果遇到null元素,经常会导致我们发生npe 很不方便 于是我给hutool提交了一个PR 完美解决了这个问题 使用方式: 升级到hutool-5.7.20 然后使用CollectorUtil 12Map<String, Integer> collect = Arrays.asList("ruben", "a chao", "vampire", "RUBEN", "VAMPIRE", null).stream().collect(CollectorUtil.toMap(Function.identity(), String::length, (l, r) -> l));System.out.println(collect); 即可
thymeleaf动态渲染html
君子忍人所不能忍,容人所不能容,处人所不能处。——邓拓 我们可以使用thymeleaf进行动态渲染html内容 假设我的整个页面都是字符串,例如如下格式: 123456789"<!DOCTYPE html>\n" + "<html>\n" + " <head>\n" + " <meta charset=\"utf-8\">\n" + " <title></title>\n" + " </head>\n" + " <body>\n" + " </body>\n" + "</html>" 那我们渲染的话,其实可以直接新建一个页面,用[(${page})]语法,例如 1[($...
设置并行流最大线程数
做你自己,因为别人都有人做了。——王尔德 我们可以使用如下方式获取并行流线程数 并行流线程数获取 如果我们需要更改,则可以设置系统属性: 1System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "8"); 例如此处设置为8 则再次获取 可以看到是8个子线程+1个主线程,也就是9个线程 还可以使用ForkJoinPool.getCommonPoolParallelism()直接获取ForkJoinPool中允许设置的最大线程数
hutool-bom
一个能思想的人,才真是一个力量无边的人。——巴尔扎克 官方文档 我们在使用hutool时可以像如下方式引入单独引入所需模块: 123456789101112131415161718192021222324252627282930313233343536373839<?xml version="1.0" encoding="UTF-8"?><project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <properties> <hutool.versi...
子线程中获取request
在这个世界上,一切都预先被谅解了,一切也就被卑鄙地许可了。——《不能承受的生命之轻》 写一个接口,用于测试: 123456789101112131415161718192021222324252627import cn.hutool.core.thread.AsyncUtil;import javax.annotation.Resource;import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;import java.util.concurrent.CompletableFuture;@RestController@RequestMapping("test")public class TestController { @Resource private HttpServletRequest request; @GetMapping("request") public String ...
小程序v-for中slot警告
她把左手的命运交给了右手,右手犹豫了一下,还是接住了。——宫白云 今天用了这样一个组件: 1234567891011121314151617181920212223<template> <div> <div v-for="(item, index) in list"> <slot :item="item" /> </div> </div></template><script>export default { data() { return {}; }, props: { list: { type: Array, default: [] } }};</script><style></style> 这里在v-for中放了slot 所以我在另一个页面使用的时候,小程序警告 1VM1103 W...
SqlSession
被温柔对待以后,自己也想变得温柔。——《夏目友人帐》。 参照我这个PR 在Mybatis中SqlSession类比于我们在使用原生jdbc时的Connection对象,用完需要释放。。。 我之前写的忘记释放了,导致druid监控到大量连接未释放,连接池经常占满 所以改成这种方式了 我们使用后一定要调用SqlSession#close释放连接。。。 血的教训啊,因为忘记释放导致连接池泄露,愈发让我明白自己写代码还有很多要学
druid连接池泄露
才华是刀刃,辛苦是磨刀石,很锋利的刀刃,若日久未磨,依旧会成为废韧——老舍 当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了 我们使用druid时,可以配置如下参数进行用来关闭长时间不使用的连接 1234567891011121314151617181920212223242526272829303132333435spring: # 数据源配置 datasource: druid: # 统计监控信息 web-stat-filter: enabled: true # 可视化展示Druid的统计信息 stat-view-servlet: enabled: true filter: # sql注入 wall: enabled: true db-type: mysql slf4j: enabled: true statement-sql-pretty-format: t...
druid监控配置
你的道路是什么,老兄?乖孩子的路,疯子的路,五彩的路,浪荡子的路,任何的路。到底在什么地方,给什么人,怎么走呢?——杰克·凯鲁亚克《在路上》 项目地址:https://github.com/alibaba/druid/wiki 这和fastjson一样也是温绍写的 首先引入gav 12345<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid-version}</version></dependency> 我当前引入的版本是1.2.8 在配置文件中开启统计监控和可视化面板 123456789101112131415161718# 应用名称spring.application.name=simple-druid# 应用服务 WEB 访问端口server.port=8787# ...
for of和for in
人生而自由,却无往不在枷锁中——卢梭《社会契约论》 我之前写过一篇for in的博客 for in是遍历对象key或者数组下标 前端还可以使用for of来遍历value 简单写一下两者区别和使用方式吧: 12let ruben = {name:'ruben', age:21}for(key in ruben) console.log(key) 然后是for of 提示对象并不是iterable(可迭代的) 因此for of并不能遍历对象的key 接下来看数组的: 12let list = [1,2,3,4,5,6]for(i in list) console.log(i) 可以看到是遍历获取出了下标并不是实际的值 而for of: 12let list = [1,2,3,4,5,6]for(i of list) console.log(i) 遍历出了我们的value
