Eliauk
SpringSecurity认证流程
SpringSecurity认证流程 最近几天比较闲把SpringSecurity的源码看了一下,这里先讲一下认证的流程,debug级别的讲解 注意此篇文章没有角色和鉴权,后续看完源码会发,还有如果不知道AuthenticationManager和ProviderManager还有AuthenticationProvider,可能有些地方会看不懂,后续会单独出一篇文章进行讲解 首先准备,创建一个springboot项目,然后引入必要的一些依赖 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId&g ...
spring-websocket实现聊天室功能
spring-websocket实现聊天室功能 最近看到有些人的博客中有聊天室的功能所以我也在我博客中写了一个,不过他们用的是java原生的,这里我使用了spring封装的spring-websocket Spring-WebSocket配置 我们第一步要先配置一下websocket 的基本信息 12345678910111213141516171819202122/** * @Author: ZVerify * @Description: TODO WebSocket相关配置 * @DateTime: 2022/9/6 14:21 **/@Configuration@EnableWebSocketpublic class ZVerifyWebSocketConfig implements WebSocketConfigurer { // 注册 WebSocket 处理器 @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegis ...
动态生成初始化条件构造器
在我没日没夜的写大量的增删改查的过程中意识到了一个问题,那就是我们在分页查询或者批量查寻的时候,通常会根据不同的场景去构造不同的QueryWrapper那就有一个问题, 对于我们后端很不友好,每次都是查询,只不过前端传过来的条件可能不一样,所以我就想有没有一种办法可以动态的去构造QueryWrapper这时候我就尝试造一个轮子 下面注释写的很详细,不过要使用这个构造器就要遵守我自己定的规范那么就是在RO对象上所有的属性添加ApiModelProperty注解并且其value值必须要为其数据库中对应的字段名 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455/** * @Author: ZVerify * @Description: 初始化查询条件构造 * @DateTime: 2022/9/4 16:41 **/public class SearchQueryInit { public static <T> ...
模板模式+策略模式优美的实现上传文件
前提 首先你在阅读我这篇文字的时候可能不是很懂模板模式和策略模式,你可以先去网上看一些文章也可以直接看我写的这篇,仔细看我相信你会明白的。这是一篇有关于实战的文字,我会尽可能说的详细一点,我写这篇文字的初衷, 自己总结一下昨天干了些什么 巩固一下设计模式 给需要的小伙伴分享一下 正文部分 准备 首先在yml配置文件中配置一下上传策略 1234567891011121314151617## 上传策略 可选 oss或local,如需自行扩展请创建impl并继承AbstractUploadStrategyImpl类upload: mode: oss local: # nginx映射本地文件路径,无域名则为 ip:83 url: http://你的文件上传子域名/ # 本地文件存储路径 path: /usr/local/upload/ ## 阿里云oss配置 oss: ## Region信息,就是你选择的地步分布,如:上海、杭州 endpoint: 'xxxxx' ## 阿里云账号AccessKey拥有所有API的访问 ...
代理模式
定义 代理模式又叫委托模式,是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。代理模式通俗来讲就是我们生活中常见的中介。 代理模式可以提供非常好的访问控制,应用比较广泛。 举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,帮我办理车辆过户流程,我只是负责选择自己喜欢的车,然后付钱就可以了。 角色 抽象主题角色:可以是抽象类,也可以是接口。抽象主题是一个普通的业务类型,无特殊要求。 具体主题角色:也叫做被委托角色或被代理角色,是业务逻辑的具体执行者。 代理主题角色:也叫做委托类或代理类。它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在具体主题角色处理完毕前后做预处理和善后处理工作。 静态代理 静态代理中,我们对目标对象的每个方法的增强都是手动完成的(后面会具体演示代码),非常不灵活(比如接口一旦新增加方法,目标对象和代理对象都要进行修改)且麻烦(需要对每个目标 ...
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 🍭🍭🍭
前往小窝
公告栏
我是Dromara社区的一员并且是Easy-ES、Stream-Query的Committer,热衷于Open Source。有什么疑问可以加我微信Cizai_讨论一些技术问题


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