jq eq
要知道对好事的称颂过于夸大,也会招来人们的反感轻蔑和嫉妒。——培根 我们使用jquery选择器时如果有多个结果,我们可以使用eq函数选择指定下标的元素 例如此处 1234567891011121314151617<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <script src="https://www.jq22.com/jquery/jquery-3.3.1.js"></script> </head> <body> <div class="ruben">vampire</div> <div class="ruben">ruben</div> <script type="text/javascript"&...
在线websocket调试
生活就像海洋,只有意志坚强的人,才能到达彼岸。——马克思 分享一个在线websocket测试网站: http://coolaf.com/tool/chattest 我在进行websocket测试时使用了一下,感觉还可以 把上面的地址换成你自己的,点击连接就可以发送了 旁边还提供了在线POST和GET请求调试之类的常用工具,非常方便
Collectors.mapping
胜人者有力,自胜者强。——先秦《老子》 今天发现了Collectors.mapping的正确姿势 使用场景如下: 我想要对一个List<User>进行groupBy 1234567891011121314151617181920212223242526272829class User { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Inte...
nvue中list组件下拉刷新后无法上拉加载更多
倘能生存,我当然仍要学习。——鲁迅 组件官网地址:https://uniapp.dcloud.io/component/list 今天在使用list组件时,发现下拉刷新一次后,就不能上拉加载更多了 最后发现官方文档: loadmore 事件 如果列表滚动到底部将会立即触发这个事件,你可以在这个事件的处理函数中加载下一页的列表项。 如果未触发,请检查是否设置了loadmoreoffset的值,建议此值设置大于0 如何重置 loadmore 1234567891011121314151617181920212223<template> <list ref="list"> <cell v-for="num in lists"> <text>{{num}}</text> </cell> </list></template><script> export defaul...
GenerateAllSetter
每段记忆都是零碎的,犹如残破的蛛丝,无声无息的藏在黑暗的角落里。——桐华 我们在开发中经常会遇到给POJO设置值,而对于属性非常多的话,我们使用setter设置值,就很不方便,容易弄丢某个属性或者设置多次等 这里介绍一款插件:GenerateAllSetter 使用方式也很简单: 生成效果: 包括建造者模式 这个是生成不要默认值的setter
Collectors.toMap空指针问题
社会上崇敬名人,于是以为名人的话就是名言,却忘记了他所以得名是那一种学问和事业。 —— 鲁迅 对于Collectors.toMap,我们使用时如果value为空,则会抛出空指针,因为底层调用的Map.merge函数 如果我们想避免该问题,就可以使用collect去处理,例如我给hutool提交的这个PR一样 原先: 1StreamUtil.of(collection, isParallel).collect(Collectors.toMap(key, value, (l, r) -> l)); 现在: 1StreamUtil.of(collection, isParallel).collect(HashMap::new, (HashMap<K, V> m, E v) -> m.put(key.apply(v), value.apply(v)), HashMap::putAll); 完整函数: 12345678910111213141516/** * @param collection 需要转化的集合 * @param key E类型转...
命令模式
向没有开辟的领域进军,才能创造新天地。——[美]李政道 命令模式的最大优势为将应用分层处理,避免各层耦合 这里举个例子 在市中心逛了很久的街后, 你找到了一家不错的餐厅, 坐在了临窗的座位上。 一名友善的服务员走近你, 迅速记下你点的食物, 写在一张纸上。 服务员来到厨房, 把订单贴在墙上。 过了一段时间, 厨师拿到了订单, 他根据订单来准备食物。 厨师将做好的食物和订单一起放在托盘上。 服务员看到托盘后对订单进行检查, 确保所有食物都是你要的, 然后将食物放到了你的桌上。 那张纸就是一个命令, 它在厨师开始烹饪前一直位于队列中。 命令中包含与烹饪这些食物相关的所有信息。 厨师能够根据它马上开始烹饪, 而无需跑来直接和你确认订单详情。 我们如果不使用命令模式,写出来的代码就如下: 1234567891011121314private static void withoutCommandMode() throws InterruptedException { // 在市中心逛了很久的街后, 你找到了一家不错的餐厅, 坐在了临窗的座位上。 // 一名友善...
Promise
人活在世,不过一场美丽的寄居。——简嫃 在前端开发中经常会使用异步方法 这里介绍Promise函数 定义方式: 12345// Promise内部构造参数为一个闭包,闭包中传入你想要异步处理的逻辑new Promise((resolve,reject)=>{ // 这里resolve表示正常处理异步逻辑后传送回调,reject则是异常逻辑或错误逻辑时执行,当异步方法中抛出异常,会自动调用reject,这里也可以手动调用 resolve(1)}) 然后定义完了,我们就可以开始调用 调用写法如下: 12345678new Promise((resolve,reject)=>{ // 假设我这里异步方法处理完后得到的结果为1,我就传入一个1 resolve(1)}).then(res=>{ // 然后异步方法执行完了,我再对结果进行异步处理,让得到的1再加一个1 console.log(res+1)}) 使用then可以执行异步方法后续处理,将异步方法的回调的结果作...
mysql重置自增主键坑
商人的兴趣就在那些能找到财富的地方。——埃伯克 今天重置mysql自增主键时遇到个坑,明明sql执行了 1ALTER TABLE table_name AUTO_INCREMENT= 1; 但还是修改失败了 后来发现原来是因为当前表最大id比我设置的自增id大导致的 而且这种情况还不报错,提示sql正常执行,就挺坑的 最后把表内数据调整了,成功重置自增id 可以通过 1SHOW TABLE STATUS WHERE NAME = 'user'; 查看表状态
uniapp播放音频
人们不太看重自己的力量——这就是他们软弱的原因。——高尔基 播放音频的代码很简单: 123const innerAudioContext = uni.createInnerAudioContext(); innerAudioContext.src = '/img/oss/picGo/kuangstudy9664a946-42a5-4111-80e7-65e735932ef7.wav'; innerAudioContext.play(); 官方文档: https://uniapp.dcloud.io/api/media/audio-context 除了播放、暂停、停止等也都能实现 完整代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980<template> <view class=...
