Java知识星球
Redis设置小key过期时间
场景 首先是一个这样的业务场景,我们要做一个注册的功能,我们会通过用户输入的邮箱进行发送一个验证码,并且验证码有效期是3分钟,但是我们要去使用redis保存验证码,但是又不想用string去做。用hash去怎么实现呢 做法 保存 在我们redis中可以通过hash做,但是呢redis只提供了hash类型的大key的过期时间,这个时候问题就来了,我就想使用一个大key,然后每个邮箱的地址小key,验证码为value,这个时候我们只需要在验证码之后拼接一个时间 此时就是获取我们的当前时间然后偏移三分钟转换为字符串之后拼接到验证码之后 验证 我们这样的话取出来的时候就可以先把我们保存的过期时间取出来,然后获得当前时间进行比较如果当前时间在过期时间之后就代表我们的验证码已经过期了,如果没有的话就说明还没有过期,进行下边的思路
Lambda表达式也能写递归吗
🍑当你点进这篇文章的时候可能会有些疑问,什么Lambda表达式也能写递归? 没错是这样的,我们在很多时候会用到递归树但是如果在数据库去写递归的SQL对数据库的压力就太大了,通常我们会一次性的都查出来在Java去进行递归的操作,我们这个操作要写好多代码而且思想基本都差不多,所以我们的Steam提供了这样一个方法toTree(),他可以定制的去进行集合转换为树的操作。 这里我感觉lambda能写递归感到这个思想很好玩所以这里给大家讲一下我写的源码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546/** * 将集合转换为树,自定义树顶部的判断条件,内置一个小递归(没错,lambda可以写递归) * 因为需要在当前传入数据里查找,所以这是一个结束操作 * * @param idGetter id的getter对应的lambda,可以写作 {@code Student::getId} * @param pIdGetter paren ...
MVCC底层原理
MVCC底层原理 假设现在有一个index表,只有一条数据 此时他是有两个隐藏列的,一个是trxid(事务id),一个是roll pointer(回滚指针) 此时新建三个会话,每个会话创建一个事务,我这里创建了 这三个依次进行一次更新操作,因为只有更新操作的时候才会生成事务id 所以要先去操作别的表一下以便生成事务id 我们在进行第三个事务的时候更新了一条数据在数据库底层会帮我们做这样一件事情 创建一条新数据然后将我们的旧数据放到回滚日志里边,并且将回滚指针指向它 此时我们进行一个查询会生成一个快照,他由指向查询时所有未提交事务id数组,和已创建事务id组成,查询数据需要跟read-view作对比从而得到快照结果 很明显此时查询结果为臧臧,这里就不做讲解 此时事务id为100的一次进行了3条更新操作 还会生成版本链 此时橙色的为最新数据,而黄色的为在版本日志里的数据 下面进行一个新的查询 因为我们研究的是可重复读的情况所以会沿用上一次生成的快照 此时查询出来的数据还会是臧臧,那么这是为什么呢,分析一下 先说一些readview比对规则 当执行查询sql时会生成一致性视图 ...
avatar
🐟认真摸鱼中
Eliauk
Future is now 🍭🍭🍭
前往小窝
公告栏
Eliauk:我目前就职于金山旗下的数科网维,是一名Java开发工程师


并且我是Dromara社区的一员并且是Stream-Query的Committer,热衷于Open Source。有什么疑问可以加我微信Cizai_讨论一些技术问题


Dromara 是由国内顶尖的开源项目作者共同组成的开源社区。提供包括分布式事务,流行工具,企业级认证,微服务RPC,运维监控,Agent监控,分布式日志,调度编排等一系列开源产品、解决方案与咨询、技术支持与培训认证服务。技术栈全面开源共建、 保持社区中立,致力于为全球用户提供微服务云原生解决方案。让参与的每一位开源爱好者,体会到开源的快乐。Dromara开源社区目前拥有10+GVP项目,总star数量超过十万,构建了上万人的开源社区,有成千上万的个人及团队在使用Dromara社区的开源项目。
小站资讯
文章数目 :
51
本站总字数 :
6.5w
本站访客数 :
本站总访问量 :
最后更新时间 :
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面