lambda小技巧
人类最不道德订户,是不诚实与懦弱。——高尔基 经常有朋友问我,老是遇到参数为一些lambda的函数,我怎么知道对应的lambda怎么写呢? 这函数式编程,真是一件美事啊~ 对于这种情况,我们依靠我们强大的idea即可 例如此处我写到这里写不会了 1234User user = new User();// idea提示下方参数,如果没显示,光标放到括号里按ctrl+p主动呼出 |Function<? super User,?> mapper|Opt.ofNullable(user).map() 这里idea为我们提示了参数类型,可这个Function我也不知道它是个什么 实际上,我们new一个就好了 123Opt.ofNullable(user).map(new Fun) |Function<User, Object>{...} (java.util.function) | <-戳我 ...
vue中props中值未监听
每段记忆都是零碎的,犹如残破的蛛丝,无声无息的藏在黑暗的角落里——桐华 我今天简短测试了一下: 编写一个组件,给它设置一个props属性user 这里给它一个默认值{ age: 21 } 12345678910111213141516<template> <div> <slot :user="user">默认内容</slot> </div></template><script>export default { props: { user: { type: Object, default: () => ({ age: 21 }) } }};</script> 然后我们在外部引用该组件并传入该props 编写一个方法来改变当前userInfo的值 123456789101112131415161718192021222324252627282930<templ...
vue中新增属性视图问题
计利当计天下利,求名应求万世名——于右任 我们在进行vue前端开发的时候,可能会遇到这种情况: 首先我们此处双向绑定了一个变量中的属性 12345<template> <div> <div>{{ myObject.newProperty }}</div> </div></template> 然后下面的data只有该对象变量,并无此属性 12345678<script>export default { data() { return { myObject: {} }; }</script> 此时我们调用一个方法,给它的新增变量赋值 1this.myObject.newProperty = 'ruben'; 可以看到外部是并未监听到,视图没有更新,导致我们页面没渲染上去该变量属性的值 此处我们当然可以使用vm.$forceUpdate去强制更...
js数组去重
最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 我们使用数组解构+Set去重: 12let list = [1,1,2,3]list = [...new Set(list)] 这里set是一个不重复的集合类,构造函数中我们传入了另一个list 如果是两个数组去重 123let list = [1,2,3]let array = [2,3]list = [...new Set([...list,...array])] 写法如下:
小程序 define is not defined
你如果认识从前的我,也许你会原谅现在的我。——《倾城之恋》 今天小程序报错define is not defined 结果是因为新项目默认用的最新的基础调试库。。。 改回调试库就好了
水波纹按钮动画
生活是种律动,须有光有影,有左有右,有晴有雨。——老舍 代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .login { display: flex; align-items: center; justify-content: center; margin-top: 200px; } ...
TTL的CRR操作
要有最朴素的梦想,即使明天天寒地冻,路远马亡。——海子 前段时间遇到的TTL(TransmittableThreadLocal)在异步编程中的上下文丢失问题,我是采用了直接更换线程池的方式 但今天抽空看了下官方文档,发现了: 所有TTL值的抓取、回放和恢复方法(即CRR操作) CRR:capture(快照)、replay(回放)、restore(备份) 自己简单写了个测试用例,用于在CompletableFuture和并行流场景下解决ThreadLocal的上下文丢失问题 大伙一定要复制到本地跑一下,需要的GAV是这个: 12345<dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-thread-local</artifactId> <version>2.12.4</version></dependency> 代码: 12345678910111213141516171819...
微信群聊头像组件
直起腰来,我看见蓝色的大海和帆影。——切·米沃什《礼物》 分享一个群聊头像组件 组件地址:https://ext.dcloud.net.cn/plugin?id=5456 效果: 示例代码: 123456789101112131415161718192021222324252627282930313233343536373839<template> <view> <button type="primary" @tap="cerate">创建群组头像</button> <canvas :canvas-id="canvasId" style="width: 120px; height: 120px; margin: 36px auto;"></canvas> </view></template><script> import createAvata...
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[($...
