精彩博客

【Spring Security】如何在登录认证中添加验证码

前面介绍了spring security 基础配置,并没有对认证逻辑进行过多的改动,现在我们就来介绍一下自定义认证逻辑,无论是添加登录验证码还是修改登录数据库格式,都需要对认证逻辑作出调整。在我们完成自定义认证之前,我们需要再了解一下认证流程。 认证流程简析 AuthenticationProvider 定义了 Spring Security 中的验证逻辑,我们来看下 AuthenticationProvider 的定义: public interface AuthenticationProvider { Authe...

2021/05/06 22:10
202
0
【Spring Security】Spring Boot + Spring Security 实现自动登录功能

spring security 如何实现安全的自动登录 自动登录是我们在软件开发时一个非常常见的功能,很多网站我们在登录的时候都会有记住密码选项,毕竟总让用户输入用户名密码是一件很麻烦的事。自动登录功能就是,用户在登录成功后,在某一段时间内,如果用户关闭了浏览器并重新打开,或者服务器重启了,都不需要用户重新登录了,用户依然可以直接访问接口数据。作为一个常见的功能,我们的 Spring Security 肯定也提供了相应的支持,本...

2021/05/02 16:09
143
0
【Spring Security】 如何将用户数据存入数据库?

Spring Security 如何将用户数据存入数据库? Spring Security 介绍到现在,我们还没连上数据库呢。真正的项目中,大部分情况下,我们都是自己设计权限数据库。不过,Spring Security 也给我们提供了一个它自己设计好的权限数据库,这里我们先来看看这是怎么回事!我们先来学这个简单的,然后我们再去看复杂的。 1.UserDetailService Spring Security 支持多种不同的数据源,这些不同的数据源最终都将被封装成 UserDetailsServi...

2021/04/27 18:41
124
0
【Spring Security】 做前后端分离配置,通过JSON进行数据交互

Spring Security 做前后端分离,通过 JSON数据交互 前后端分离开发后,认证这一块到底是使用传统的 session 还是使用像 JWT 这样的 token 来解决呢?这确实代表了两种不同的方向。传统的通过 session 来记录用户认证信息的方式我们可以理解为这是一种有状态登录,而 JWT 则代表了一种无状态登录。可能有小伙伴对这个概念还不太熟悉,我这里就先来科普一下有状态登录和无状态登录。 1. 无状态登录 1.1 什么是有状态 有状态服务,...

2021/04/27 18:40
153
0
【Spring Security】手把手带你捋一遍 Spring Security 登录流程

背景 为什么想和大家捋一捋 Spring Security 登录流程呢?这是因为之前小伙伴们的一个提问:如何在 Spring Security 中动态修改用户信息?如果你搞清楚了 Spring Security 登录流程,这其实不是问题。 我们先来大致描述一下问题场景: 你在服务端的安全管理使用了 Spring Security,用户登录成功之后,Spring Security 帮你把用户信息保存在Session 里,但是具体保存在哪里,要是不深究你可能就不知道,这带来了一个问题,如果用...

2021/04/27 18:39
95
0
vo、po、dto、bo、pojo、entity、mode如何区分

Java Bean:一种可重用组件,即“一次编写,任何地方执行,任何地方重用”。满足三个条件 类必须是具体的和公共的 具有无参构造器 提供一致性设计模式的公共方法将内部域或暴露成员属性 VO value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收 和PO一样也是仅仅包含数据而已,但应是抽象出的业务对象,可以和表对应,也可以不是 PO persistant object:持久层对象 是ORM(Objevt Relational Mapping)框架中...

2021/04/14 20:51
5.2K
0
如何批量修改Jenkins job的配置?

背景:jerkins 有100多个job,但是运行机器下线了,需要修改所有job的机器配置,手工一条条修改的话会疯掉的,所以想到写一个脚本进行批量修改。 思路:第一步:获取Jenkins的所有jobname 第二步: 遍历jobname,获取每个job的配置文件config.xml 第三步:将获取到的xml类型字符串转化为document对象,然后修改机器节点的值,然后将修改的document对象写入一个新的xml文件 第四步:将新的修改后的xml文件作为参数传给job 好了,上...

2021/04/12 11:04
2K
0
Ubuntu的apt命令详解()deepin linux是在Ubuntu基础上开发的

apt-cache和apt-get是apt包的管理工具,他们根据/etc/apt/sources.list里的软件源地址列表搜索目标软件、并通过维护本地软件包列表来安装和卸载软件。 查看本机是否安装软件: whereis package_name 或者 which package_name 1.搜索软件 sudo apt-cache search package_name 其中还可以使用正则表达式 sudo apt-cache search sof* 这样就可以搜索到源上面所有以sof开头的软件包。 2.查看软件包信息 sudo apt-cache show pack...

2021/04/10 14:47
3.3K
0
linux apt-get autoremove千万别乱用

使用linux下的apt-get autoremove命令的心得体会 前几天在实验室搭建要做人工智能项目的环境时, 由于未解决python2.7和python3.6共存时,只利用python2.7版本的库文件,在卸载python3.6时被一个帖子坑了,用了apt-get autoremove 命令,然后重启之后电脑就各种出问题,桌面上所有东西全部消失不见了,而且桌面处于不断刷新的状态。 然后就各种进行google,百度进行了多次修复未果,包括重新安装nvidia显卡驱动,修改屏幕分辨率...

2021/04/10 14:47
6.2K
0
mybatis中LIKE模糊查询的几种写法以及注意点

mybatis中对于使用like来进行模糊查询的几种方式: (1)使用${...} 注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'VARCHAR' in 'class com.utry.ucsc.dao.bean.KnowledgeLibraryBean' 弊端:可能会引起sql的注入,平时尽量...

2021/04/06 15:03
2.2K
0
mybatis中LIKE模糊查询的几种写法以及注意点

mybatis中对于使用like来进行模糊查询的几种方式: (1)使用${...} 注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'VARCHAR' in 'class com.utry.ucsc.dao.bean.KnowledgeLibraryBean' 弊端:可能会引起sql的注入,平时尽量...

2021/04/06 15:02
2.2K
0
mybatis中LIKE模糊查询的几种写法以及注意点

mybatis中对于使用like来进行模糊查询的几种方式: (1)使用${...} 注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'VARCHAR' in 'class com.utry.ucsc.dao.bean.KnowledgeLibraryBean' 弊端:可能会引起sql的注入,平时尽量...

2021/04/06 15:02
2.2K
0
Feign Client 传递数组和列表参数的区别

在方法的参数上,使用@RequestParam(“sort”) 时,如果参数是数组 new String[]{“a,desc”,”b”,”c,desc”},则请求的url是http://xxx?sort=a,desc,b,c,desc这样的格式,如果使用的是List参数,则请求的url是http://xxx?sort=a,desc&sort=b&sort=c,desc这样的格式 当使用 spring mvc 来组装Pageable对象的时候,传递sort参数应该使用list这样的方式,需要让每个sort参数在url中出现多次...

2021/04/05 14:42
1W
0
Gradle 国内镜像地址

华为云(最新是6.8,一直在更新): https://mirrors.huaweicloud.com/gradle/ 阿里云(最新是5.6.2,长期不更新了): http://mirrors.aliyun.com/gradle/

2021/04/05 14:42
2.1K
1
EasyMock 学习笔记 (一)

介绍 EasyMock 的作用主要是方便在编写单元测试时,可以使用可以模拟出方法执行结果的对象,引导单元测试执行到所关心的代码,判断执行的结果。 引入依赖 maven 方式: <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>4.2</version> <scope>test</scope> </dependency> 也可以下载独立的jar包 easymock-4.2.jar 放到classpath下,如果测试中需要对类进行mock,可以引入Obj...

2021/04/05 14:42
5K
0
Java Object 对象的 wait() 和 notify()、notifyAll()

在一个线程中通过一个对象来获得锁,调用wait()函数,线程进入阻塞状态。 另一个线程通过也锁定此对象,调用对象的notify()方法通知其中给一个调用wait的对象结束等待状态。如果是调用notifyAll()通知的是前面所有调用此对象wait()方法的线程继续执行。 测试代码: public class ObjectNotifyTestMain { public static void main(String[] args) { testNotify(); testNotifyAll(); } private static void testNo...

2021/04/05 14:42
4.9K
0
BlockingQueue 阻塞队列

BlockingQueue 是一个接口,意思是这个队列在放入元素或者取出元素的过程中允许阻塞。 存入元素时,如果没有剩余容量则会阻塞,取出元素时,如果队列为空则会阻塞。 BlockingQueue方法有四种形式,用不同的方法处理操作,不能立即满足,但可以满足在未来:第一类抛出一个异常,第二类返回一个特殊的值(或null或false,这取决于操作),第三类当前线程无限期直到操作能成功,和第四种在一个给定的最大期限后放弃操作。这些方法总结如下表:...

2021/04/05 14:42
4.9K
0
线程的中断

中断是对线程的一个指示,它应该停止正在做的事情并做其他事情。由程序员决定线程如何响应中断,但是线程终止是很常见的。这是本节课要强调的用法。 线程通过在要被中断的线程对象上调用interrupt来发送中断。为了让中断机制正常工作,被中断的线程必须支持自己的中断。 Supporting Interruption 线程如何支持自己的中断?这取决于它当前正在做什么。如果线程频繁地调用抛出InterruptedException的方法,它只需在捕获该异常后从r...

2021/04/05 14:42
4.8K
0
线程和锁

虽然前面章节的大部分讨论只涉及一次执行单个语句或表达式时的代码行为,也就是说,通过单个线程,Java虚拟机可以同时支持多个线程执行。这些线程独立地执行对共享主内存中的值和对象进行操作的代码。线程可以通过拥有多个硬件处理器、对单个硬件处理器进行时间切片或对多个硬件处理器进行时间切片来支持。 线程由类表示。用户创建线程的唯一方法是创建该类的对象;每个线程都与这样一个对象相关联。当在相应的线程对象上调用sta...

2021/04/05 14:42
5K
0
【Spring Cloud Alibaba】分布式消息中间件 Spring Cloud Stream 事件驱动

1. 简介 事件驱动架构(Event-driven 架构,简称 EDA)是软件设计领域内的一套程序设计模型。这套模型的意义是所有的操作通过事件的发送/接收来完成。举个例子,比如一个订单的创建在传统软件设计中服务端通过接口暴露创建订单的动作,然后客户端访问创建订单。在事件驱动设计里,订单的创建通过接收订单事件来完成,这个过程中有事件发送者和事件接受者这两个模块,事件发送者的作用是发送订单事件,事件接受者的作用的接收订单事...

2021/04/05 13:21
301
0

没有更多内容

加载失败,请刷新页面

如何使用 Kubernetes 实现应用程序的弹性伸缩

本篇文章利用 KEDA 使用 Prometheus 采集 APISIX 暴露出来的指标作为伸缩器,进而实现基于流量的应用程序弹性伸缩。 作者张晋涛,API7.ai 云原生工程师,Apache APISIX PMC。 原文链接 介绍 ...

2023/02/23 17:18
5K
0
API 网关策略的二三事

作者暴渊,API7.ai 技术工程师,Apache APISIX Committer。 近些年随着云原生和微服务架构的日趋发展,API 网关以流量入口的角色在技术架构中扮演着越来越重要的作用。API 网关主要负责接收所...

2023/01/30 15:58
1.3W
3
盘点微服务架构下的诸多身份验证方式

联合作者:罗泽轩,API7.ai 技术专家、Apache APISIX PMC 成员 联合作者:赵士瑞,API7.ai 技术工程师,Apache APISIX Committer 身份认证是授予用户访问系统并授予使用系统的必要权限的过程...

2023/01/10 17:00
1.6W
2
Java的jmap命令使用详解

jmap命令简介 jmap(Java Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。除此以外,jmap命令还可以查看finalize执行队列、Java堆和方法...

2022/03/19 13:22
1.9W
2
Service Mesh与Istio简述

前情提要 前段时间去QCon深圳2020大会围观了一下,听了一下大厂们现在在干的事情,后端这一块主流都在讨论云原生,当中美团分享了他们在Service Mesh架构上面的实践,个人觉得挺有价值,写篇...

2021/03/20 22:20
7.6K
1
SpringCloud LoadBalancer灰度策略实现

如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案 快速上手 SCL 如果项目中想使用 SCL,则...

2021/01/15 10:11
3.9W
4
「Spring Boot 2.4 新特性」一键构建Docker镜像

背景 在我们开发过程中为了支持 Docker 容器化,一般使用 Maven 编译打包然后生成镜像,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便。docker-maven-plugin 插件就是为...

2020/11/17 09:21
6W
6
HttpTunnelServer,从源码看Springboot如何实现双向数据交互

Tunnel是什么? Tunnel存在的意义,就是使用http协议来传输非http协议的内容,在使用fiddler4抓包的时候,常常会看见Tunnel这样的包,打开之后会发现里面没有标准http协议的模式,没有http头...

2020/11/03 16:00
1.1W
0
解Bug之路-记一次线上请求偶尔变慢的排查

解Bug之路-记一次线上请求偶尔变慢的排查 前言 最近解决了个比较棘手的问题,由于排查过程挺有意思,于是就以此为素材写出了本篇文章。 Bug现场 这是一个偶发的性能问题。在每天几百万比交易...

2020/09/27 10:41
4.3W
15
JDK 15安装及新特性介绍

JDK 15已经于2020年9月15日如期发布。本文介绍JDK 15新特性。 发布版本说明 根据发布的规划,这次发布的 JDK 15 将是一个短期的过度版,只会被 Oracle 支持(维护)6 个月,直到明年 3 月的 ...

2020/09/23 00:20
6.5W
7
最全总结!聊聊 Python 操作PDF的几种方法(合并、拆分、水印、加密)

一、前言 大家好,有关Python操作PDF的案例之前已经写过一个👉PDF批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是PDF处理很实用的模块PyPDF2,本...

2020/09/15 10:24
2.1W
2
从一段 Dubbo 源码到 CPU 分支预测的一次探险之旅

每个时代,都不会亏待会学习的人。 大家好,我是 yes。 这次本来是打算写一篇 RocketMQ 相关文章的,但是被插队了,我也是没想到的,对了本号也有留言了哟。 说来也是巧最近在看 Dubbo 源码,...

2020/09/13 17:52
1.2W
9
Executors使用不当引起的内存泄漏

线上服务内存溢出 这周刚上班突然有一个项目内存溢出了,排查了半天终于找到问题所在,在此记录下,防止后面再次出现类似的情况。 先简单说下当出现内存溢出之后,我是如何排查的,首先通过j...

2020/09/08 19:38
1.5W
4
给DPVS加上SESSION同步功能

给DPVS加上SESSION同步功能 前言 DPVS是一款爱奇艺开源的基于DPDK的优秀软件(https://github.com/iqiyi/dpvs)。利用DPDK工作在用户空间的特性,相比于内核空间的LVS,我们可以使用用户空间的一...

2020/08/27 10:16
1.8W
2
Kubernetes如何改变美团的云基础设施?

本文根据美团基础架构部王国梁在KubeCon 2020云原生开源峰会Cloud Native + Open Source Virtual Summit China 2020上的演讲内容整理而成。 一、背景与现状 Kubernetes是让容器应用进入大规模...

2020/08/14 14:32
2.1W
3
悄咪咪提高团队幸福感 & Surprise!

前言 本文的灵感是在几个月以前工作不忙(摸鱼)时想到的,老是自己一个人往前冲冲冲也没啥意思,需要想一点办法,来提高团队的效率,提高团队的幸福感(效率起来了,单位时间内代码写的更多...

2020/08/13 09:26
3.7W
26
JVM的入门知识

前言:巴拉巴拉,今天给大家分享一点java三剑客(jre,jvm,jdk)中的jvm,纯理论教科书篇。 非原创,里面摘取了多个博客里面的内容 1 JDK、 JRE、JVM 的关系是什么? 我们学习JVM的之前,简...

2020/08/11 22:17
2.9W
5
解Bug之路-Nginx 502 Bad Gateway

解Bug之路-Nginx 502 Bad Gateway 前言 事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻。当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在脑中闪现。甚...

2020/07/25 20:30
4.4W
13
动手实现 LRU 算法,以及 Caffeine 和 Redis 中的缓存淘汰策略

我是风筝,公众号「古时的风筝」。 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。 那天我在 LeetCode 上刷到一道 LRU 缓存机制的问题,第 146 题,难...

2020/07/16 09:41
2.9W
8
写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上。 一般来说,我们学Java之前,第一步就是安装JDK环境。这个...

2020/07/16 09:26
4.5W
8

没有更多内容

加载失败,请刷新页面

返回顶部
顶部