为什么总说不要循环调用dao
我要让全世界都记住我的温柔。——曼德拉
上次咱们测试过了单表多次查询和连表一次查询的性能比较
这次咱们又抽了点时间进行了一次 循坏调用dao查询性能测试
同样是那一百万条数据,最后测试结果出乎意料
@Testpublic void cycleTest() { long startTime = System.nanoTime(); List<Film> films = filmMapper.selectList(Wrappers.lambdaQuery()); List<Map<String, Object>> collect = films.stream().map(film -> { Language language = languageMapper.selectById(film.getLanguageId()); Language language1 = languageMapper.selectById(film.getLanguageId()); M ...
isPrimitive
常制不可以待变化,一涂不可以应万方,刻船不以索遗剑。一一东晋·葛洪《抱朴子》
常制不可以待变化,一涂不可以应万方,刻船不以索遗剑。一一东晋·葛洪《抱朴子》
在Class中有这样一个函数isPrimitive
可以判断我们的class是否为基本类型
package com.ruben;/** * @author <achao1441470436@gmail.com> * @since 2021/6/8 0008 22:00 */public class ClassDemo { public static void main(String[] args) { Class<Integer> integerClass = int.class; System.out.println("int.class是否为基本类型:" + integerClass.isPrimitive()); Class<Integer> boxIntegerClass = Integer. ...
idea启动时默认选择项目
决定我们成为什么样的人,不是我们的能力,而是我们的选择。——J·K·罗琳
取消此处的勾选即可
下次打开即会进入选择项目列表
uniapp微信小程序获取用户手机号
价值产生信心,信心产生热忱,而热忱则征服世界。——华特·H·柯亭姆
我们在uniapp开发中有时会需要获取用户的手机号
可以在官方文档找到对应的方法
这里注意一点,只能通过button进行点击获取
但我们这样获取到后还需要解密
比如我这里获取到的
<template> <view><button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">点我获取手机号</button></view></template><script>export default { data() { return {}; }, methods: { getPhoneNumber(e) { console.log(e.detail.errMsg); console.log(e.detail.iv); console.log(e ...
Json Web Token
我以为人们在每一个时期都可以过有趣而且有用的生活。我们应该不虚度一生,应该能够说,“我已经做了我能做的事”,人们只能要求我们如此,而且只有这样我们才能有一点欢乐——居里夫人
项目源码
校验逻辑如下:
我们客户端在每个需要登录的请求带着token访问我们的接口,在服务端的LoginInterceptor中进行校验token
登录逻辑如下:
1.登录校验用户名密码
2.生成token:通过jwt工具类,使用用户名和密码生成token,然后把token存redis,设置过期时间
刷新token逻辑如下:
token过期后返回 “token过期对应的code”,客户端使用一个大于token过期时间的refreshToken去调用刷新token的接口,refreshToken通过校验之后,直接生成新的token
我这里设置的两倍,这样在超过token有效期一倍,小于两倍时,期间可以刷新token,再超时就需要重新登录了
项目大家可以拉下来玩一玩
appendTo
人类经常把一个生涯发生的事,撰写成历史,在从那里看人生;其实,那不过是衣服,人生是内在的——罗曼。罗兰
我们可以使用jquery中的appendTo函数在一个标签追加到另一个标签内部的结尾
例如我博客这里
我们再执行
$("<span>ruben</span>").appendTo(".navbar-brand")
执行完成后效果如下
<span>ruben</span>追加到我们的”阿超”后面了
js动态调用函数
兵无常势,水无常形,能因敌变化而取胜者,谓之神。——孙子
我们可以使用变量名['函数名']()去调用一个函数
<script> var ruben = { run() { console.log("ruben中的run被调用啦!") } } ruben['run']()</script>
可以用于动态调用函数场景
关于wx.getUserInfo获取到匿名数据的坑
生命的黎明是乐园,青春才是真正的天堂。——华兹华斯
今天搞了很久,发现使用wx.getUserInfo获取到的用户昵称一直是:“微信用户”,并且头像也是默认的。。。
然后官方文档里发现
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html
打开后是这个页面
然后我们看wx.getUserProfile的文档:
wx.getUserProfile只能在页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo,详见 用户信息接口调整说明。
注意desc是必填
我们配置好appid后
调用wx.getUserProfile
代码如下
<template> <view style="width:100%;height: 100%;" @tap="getUserProfile( ...
uniapp中textarea坑
幼稚是会成长,会成熟的。只要不衰老,腐败,就好。——鲁迅
今天在使用uniapp进行开发的时候,发现一个关于textarea标签的坑
代码如下:
<template> <view style="width:100%;height: 100%;"> <textarea style="width:100%;height: 100%;" value=" 一般来讲,我们都必须务必慎重的考虑考虑。 带着这些问题,我们来审视一下阿超。 总结的来说, 每个人都不得不面对这些问题。 在面对这种问题时, 阿超因何而发生? 带着这些问题,我们来审视一下阿超。 所谓阿超,关键是阿超需要如何写。 从这个角度来看, 德谟克利特说过一句富有哲理的话,节制使快乐增加并使享受加强。我希望诸位也能好好地体会这句话。 那么, 培根曾经提到过,阅读使人充实,会谈使人敏捷,写作使人精确。这不禁令我深思。 问题的关键究竟为何。 康德在不经意间这样说过,既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。这启发了我, 在这种困 ...
flatMap
君子成人之美,不成人之恶。小人反是。——《论语》
在Stream中有这么一个函数
它和map不一样的是,map你输入多少个,输出就是多少个
例如我要生成一个集合,装着26个小写字母和26个大写字母
用flatMap可以一行实现
List<String> abc = Stream.iterate('a', i -> ++i).map(String::valueOf).limit(26).flatMap(i -> Stream.concat(Stream.of(i), Stream.of(i).map(String::toUpperCase))).sorted().collect(Collectors.toList());System.out.println(abc);
马上这时候就有人跳出来说,我不用flatMap还不是可以!!!不信你看
List<Character> ab = Stream.iterate('A', i -> ++i).limit(58).filter(i -> i &l ...