国内推荐静态资源cdn加速服务
360 前端静态资源库
https://cdn.baomitu.com/ 
360 前端静态资源库是由奇舞团支持并维护的开源项目免费 CDN 服务,支持 HTTPS 和 HTTP/2,囊括上千个前端资源库和 Google 字体库。
本站静态资源库数据均同步于 cdnjs,如发现版本更新不及时或未收录,欢迎向 cdnjs 提交 PR。
BootCDN
http://www.bootcdn.cn/
稳定、快速、免费的前端开源项目 CDN 加速服务
https://cdn.baomitu.com/ 
360 前端静态资源库是由奇舞团支持并维护的开源项目免费 CDN 服务,支持 HTTPS 和 HTTP/2,囊括上千个前端资源库和 Google 字体库。
本站静态资源库数据均同步于 cdnjs,如发现版本更新不及时或未收录,欢迎向 cdnjs 提交 PR。
http://www.bootcdn.cn/
稳定、快速、免费的前端开源项目 CDN 加速服务
List<Student> list = Students.stream().collect( collectingAndThen(toCollection(() ->
new TreeSet<>(comparingLong(Student::getId))), ArrayList::new));

Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。
Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。
而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。
org.springframework.web.util.HtmlUtils 可以实现HTML标签及转义字符之间的转换。
String s = HtmlUtils.htmlEscape("<div>hello world</div><p> </p>");
System.out.println(s);
String s2 = HtmlUtils.htmlUnescape(s);
System.out.println(s2);
转义后如图所示:
json对象直接作为参数在地址栏中会被阶段,在转发到其它应用中无法直接打开,当然将对象的各个属性分开拼接也可以传参,但是稍微麻烦,最简单的方法是通过Base64编码方式传参。
从IE10+浏览器开始,所有浏览器就原生提供了Base64编码、解码方法,不仅可以用于浏览器环境,Service Worker环境也可以使用。
方法名就是 atob 和 btoa ,具体语法如下:
window.btoa('hello world') // 编码"aGVsbG8gd29ybGQ="
window.atob("aGVsbG8gd29ybGQ=") // 解码"hello world"
https://links.jianshu.com/go?to=https://github.com/dankogai/js-base64
开源的base64.js ,使用很简单,浏览器引入该JS文件,然后Base64编码这样:
Base64.encode('hello world'); // 编码"aGVsbG8gd29ybGQ="
解码就调用 decode方法,如下:
Base64.decode("aGVsbG8gd29ybGQ="); // 解码'hello world'
在工作区域右键:
右键Display Preferences,在Display Preferences界面,把show page delimiter勾选去掉即可。