自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

字母哥博客

让知识产生价值,让程序员改变世界

  • 博客(22)
  • 资源 (35)
  • 收藏
  • 关注

原创 结合开源软件kaptcha讲解登录验证码功能的实现

一、验证码生成之配置使用kaptcha使用google开源的验证码实现类库kaptcha,通过maven坐标引入<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3...

2019-11-29 13:37:31 1773

原创 图文详解应用登录验证码的多种实现方案

在本号的一系列Spring Security文章中,先后介绍了各种登录验证及授权中的知识点,如:spring-security简介并与shiro对比、 formLogin模式登录认证、动态数据登录验证与权限分配、账户多次登录失败锁定、RememberMe记住我功能,等等文章。笔者觉得以上的这些实际上都很简单,我们没有涉及到分布式应用。本节将以分布式的应用背景,讲解验证码实现的多种方式。本小节先从...

2019-11-29 07:51:32 1898

原创 Spring Security之多次登录失败后账户锁定功能的实现

在上一次写的文章中,为大家说到了如何动态的从数据库加载用户、角色、权限信息,从而实现登录验证及授权。在实际的开发过程中,我们通常会有这样的一个需求:当用户多次登录失败的时候,我们应该将账户锁定,等待一定的时间之后才能再次进行登录操作。一、基础知识回顾要实现多次登录失败账户锁定的功能,我们需要先回顾一下基础知识:Spring Security 不需要我们自己实现登录验证逻辑,而是将用户、角...

2019-11-28 07:44:56 5216 4

原创 SpringSecurity动态加载用户角色权限实现登录及鉴权

很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得。因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结合使用,这是一个先入为主的误区。后来我搞懂了:根本不用你自己去写Controller。你只需要告诉Spring Security用户信息、角色信息、权限信息、登录页是什么?登陆成功页是什么?或者其他...

2019-11-27 07:39:55 4112

原创 结合RBAC模型讲解权限管理系统需求及表结构创建

在本号之前的文章中,已经为大家介绍了很多关于Spring Security的使用方法,也介绍了RBAC的基于角色权限控制模型。但是很多朋友虽然已经理解了RBAC控制模型,但是仍有很多的问题阻碍他们进一步开发。比如:RBAC模型的表结构该如何创建?具体到某个页面,某个按钮权限是如何控制的?为了配合登录验证表,用户表中应该包含哪些核心字段?这些字段与登录验证或权限分配的需求有什么关系?...

2019-11-26 13:30:32 2249

原创 将Swagger2文档导出为HTML或markdown等格式离线阅读

网上有很多《使用swagger2构建API文档》的文章,该文档是一个在线文档,需要使用HTTP访问。但是在我们日常使用swagger接口文档的时候,有的时候需要接口文档离线访问,如将文档导出为html、markdown格式。又或者我们不希望应用系统与swagger接口文档使用同一个服务,而是导出HTML之后单独部署,这样做保证了对接口文档的访问不影响业务系统,也一定程度提高了接口文档的安全性。核...

2019-11-26 07:58:15 4314

原创 图文详解基于角色的权限控制模型RBAC

我们开发一个系统,必然面临权限控制的问题,即不同的用户具有不同的访问、操作、数据权限。形成理论的权限控制模型有:自主访问控制(DAC: Discretionary Access Control)、强制访问控制(MAC: Mandatory Access Control)、基于属性的权限验证(ABAC: Attribute-Based Access Control)等。最常被开发者使用也是相对易用、...

2019-11-25 12:22:10 4840

原创 SpringSecurity退出功能实现的正确方式

本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能。其实这是一个非常简单的功能,我见过很多的程序员在使用了Spring Security之后,仍然去自己写controller方法实现logout功能,这种做法就好像耕地,你有机械设备你不用,你非要用牛。一、logout最简及最佳实践其实使用Spring Security进行logout非常简单,只需要在s...

2019-11-25 07:50:00 2568 2

原创 结合Spring Security进行web应用会话安全管理

在本文中,将为大家说明如何结合Spring Security 和Spring Session管理web应用的会话。一、Spring Security创建使用session的方法Spring Security提供4种方式精确的控制会话的创建:always:如果当前请求没有session存在,Spring Security创建一个session。ifRequired(默认): Spring...

2019-11-22 07:40:12 1676

原创 使用Spring安全表达式控制系统功能访问权限

一、SPEL表达式权限控制从spring security 3.0开始已经可以使用spring Expression表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。Spring Security可用表达式对象的基类是SecurityExpressionRoot。表达式函数描述hasRole([role])用户拥有指定的角色时返回true (Spring sec...

2019-11-21 08:03:59 1692

原创 结合参数接收响应转换原理讲解SpringBoot常用注解

一、常用注解回顾1.1 @RequestBody与@ResponseBody//注意并不要求@RequestBody与@ResponseBody成对使用。public @ResponseBody AjaxResponse saveArticle(@RequestBody ArticleVO article)如上代码所示:@RequestBody修饰请求参数,注解用于接收HTTP...

2019-11-19 08:10:26 1704

原创 详解Spring Security的formLogin登录认证模式

一、formLogin的应用场景在本专栏之前的文章中,已经给大家介绍过Spring Security的HttpBasic模式,该模式比较简单,只是进行了通过携带Http的Header进行简单的登录验证,而且没有定制的登录页面,所以使用场景比较窄。对于一个完整的应用系统,与登录验证相关的页面都是高度定制化的,非常美观而且提供多种登录方式。这就需要Spring Security支持我们自己定制登录...

2019-11-16 10:30:05 6913 1

原创 java应用性能调优之详解System的gc垃圾回收方法

一、什么是System.gc()?System.gc()是用Java,C#和许多其他流行的高级编程语言提供的API。当它被调用时,它将尽最大努力从内存中清除垃圾(即未被引用的对象)。名词解释:GC,Garbage Collection,垃圾回收,下文会经常使用。二、谁可以调用System.gc()?System.gc()可以从应用程序堆栈的各个部分调用:您自己开发的应用程序可以显式的...

2019-11-13 07:50:24 1739

原创 参与国际化项目需遵循的java命名规范

笔者最近帮助一些朋友应聘远程工作(一般都是一些国外的项目),国外的项目负责人一般都会要求提供github账号或者一些源代码,很多朋友在这一关就被筛选掉了,其中不乏一些我认为技术非常厉害的行业大牛,他们都研发过很多的大型项目,经验与技术实力都非常不错。那究竟是为什么呢?我经过仔细的研究,发现他们都有一个共同点,就是命名规范不太严谨。我对这些在应聘远程项目第一关就被筛选掉了的程序员做了一个问卷调查:你...

2019-11-13 07:42:36 1526

原创 Java Stream函数式编程第三篇:管道流结果处理

一、Java Stream管道数据处理操作在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API。在使用的过程中分为三个阶段。在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图:第一阶段(图中蓝色):将集合、数组、或行文本文件转换为java Stream管道流第二阶段(图中虚线部分):管道流式数据处理操作,处理管...

2019-11-12 07:48:19 2054

原创 详解SpringBoot应用跨域访问解决方案

一、什么是跨域访问说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问。虽然跨域访问被禁止之后,可以在一定程度上提高了应用的安全性,但也为开发带来了一定的麻烦。比如:我们开发一个前后端分离的易用,页面及js部署在一个主机的nginx服务中,后端接口...

2019-11-11 08:23:32 1801

原创 对比讲解lambda表达式与传统接口函数实现方式

在本号之前写过的一些文章中,笔者使用了lambda表达式语法,一些读者反映说代码看不懂。本以为java 13都已经出了,java 8中最重要特性lambda表达式大家应该都掌握了,实际上还是存在大量的程序员没有使用java8,还有的使用了java8也不会使用lambda表达式。所以,写这篇文章还是有必要的,如果您觉得我的文章对您有帮助,期待您的关注。Lambda表达式是Java 8最流行最常用...

2019-11-08 07:55:58 1740

原创 使用Spring Data JPA进行数据分页与排序

一、导读如果一次性加载成千上万的列表数据,在网页上显示将十分的耗时,用户体验不好。所以处理较大数据查询结果展现的时候,分页查询是必不可少的。分页查询必然伴随着一定的排序规则,否则分页数据的状态很难控制,导致用户可能在不同的页看到同一条数据。那么,本文的主要内容就是给大家介绍一下,如何使用Spring Data JPA进行分页与排序。二、实体定义我们使用一个简单的实体定义:Article(...

2019-11-07 08:00:35 1948

原创 在SpringBoot中使用flyway进行数据库版本管理

本文大纲flyway是什么能帮助我们解决什么问题springboot环境下使用flywayflyway的工作原理一、flyway是什么Flyway是一个开源的数据库版本管理工具,并且极力主张“约定大于配置”,简单、专注、强大。可以使用SQL完成数据同步,或者基于特定数据库的语法(例如PL / SQL,T-SQL等)或Java代码(适用于高级数据转换或处理LOB)的方式编写。...

2019-11-05 08:47:40 2139

原创 持久层框架JPA与Mybatis该如何选型

一、现状描述目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis。JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernate实现),是基于Spring的数据持久层框架,也就是说它只能用在Spring环境内。Mybatis也是一个优秀的数据持久层框架,能比较好的支持ORM实体关系映射、动态SQL等。笔者在学习这两个框架的...

2019-11-04 08:40:54 2710 1

原创 如何在Spring Boot中使用Cookies

一、 导读本文大纲读取HTTP Cookie设置HTTP Cookie读取所有Cookie[]为Cookie设置过期时间Https与CookieHttpOnly Cookie删除CookieHTTP Cookie(也称为Web cookie,浏览器cookie)是服务器在用户浏览器中存储的小部分数据。服务器端应用程序在返回浏览器请求响应的时候设置cookie,浏览器存储...

2019-11-03 09:39:52 2267

原创 使用Java8 Stream API对Map按键或值进行排序

一、什么是Java 8 Stream使用Java 8 Streams,我们可以按键和按值对映射进行排序。下面是它的工作原理:将Map或List等集合类对象转换为Stream对象使用Streams的sorted()方法对其进行排序最终将其返回为LinkedHashMap(可以保留排序顺序)sorted()方法以Comparator作为参数,从而可以按任何类型的值对Map进行排序。...

2019-11-02 12:44:24 6025 1

流式结构化数据计算语言的进化与新选择.pdf

流式结构化数据计算语言的进化与新选择.pdf

2022-08-17

还在纠结报表工具的选型么?来看看这个.pdf

还在纠结报表工具的选型么?来看看这个.pdf

2022-08-17

[开源项目]可观测、易使用的SpringBoot线程池.pdf

[开源项目]可观测、易使用的SpringBoot线程池.pdf

2022-08-09

web项目访问引用jar内部的静态资源.pdf

web项目访问引用jar内部的静态资源.pdf

2022-08-09

使用IDEA远程管理docker镜像及容器服务.pdf

使用IDEA远程管理docker镜像及容器服务.pdf

2022-07-15

使用docker compose快速搭建wordpress博客.pdf

使用docker compose快速搭建wordpress博客.pdf

2022-07-15

docker镜像分层原理.pdf

docker镜像分层原理.pdf

2022-07-14

kubernetes灰度发布.pdf

kubernetes灰度发布.pdf

2022-07-14

查看SELinux状态及关闭SELinux.pdf

查看SELinux状态及关闭SELinux

2022-07-13

echarts配置项详细解释.pdf

apache echarts配置项详细解释

2022-07-13

java8-如何使用Stream API对Map类型元素排序.pdf

java8-如何使用Stream API对Map类型元素排序.pdf

2022-07-12

java8-Stream API终端操作.pdf

java8-Stream API终端操作.pdf

2022-07-12

java8-集合元素归约.pdf

Stream API为我们提供了Stream.reduce用来实现集合元素的归约。reduce函数有三个参数: Identity标识:一个元素,它是归约操作的初始值,如果流为空,则为默认结果。 Accumulator累加器:具有两个参数的函数:归约运算的部分结果和流的下一个元素。 Combiner合并器(可选):当归约并行化时,或当累加器参数的类型与累加器实现的类型不匹配时,用于合并归约操作的部分结果的函数。

2022-07-10

java8-Stream元素的匹配与查找.pdf

在我们对数组或者集合类进行操作的时候,经常会遇到这样的需求,比如: 是否包含某一个“匹配规则”的元素 是否所有的元素都符合某一个“匹配规则” 是否所有元素都不符合某一个“匹配规则” 查找第一个符合“匹配规则”的元素 查找任意一个符合“匹配规则”的元素 这些需求如果用for循环去写的话,还是比较麻烦的,需要使用到for循环和break!本节就介绍一个如何用Stream API来实现“查找与匹配”。

2022-07-10

java8-像使用SQL一样排序集合.pdf

java8-像使用SQL一样排序集合.pdf

2022-07-08

java8-函数式接口.pdf

java8-函数式接口.pdf

2022-07-08

java8-Stream的状态与并行操作.pdf

java8-Stream的状态与并行操作.pdf

2022-07-07

java8-Stream性能差?不要人云亦云.pdf

java8-Stream性能差?不要人云亦云.pdf

2022-07-07

Stream管道流Map操作.pdf

Stream管道流Map操作.pdf

2022-07-06

Stream的Filter与谓词逻辑.pdf

Stream的Filter与谓词逻辑.pdf

2022-07-06

Java8- Stream API的用法.pdf

Java8- Stream API的用法.pdf

2022-07-05

java8-lambda表达式的基础使用.pdf

java8-lambda表达式的基础使用.pdf

2022-07-05

跨平台桌面应用开发:基于Electron与NWjs

跨平台桌面应用开发:基于Electron与NWjs

2022-07-03

Kubernetes修炼手册 ((英)奈吉尔·波尔顿(Nigel Poulton)) .epub

Kubernetes修炼手册 ((英)奈吉尔·波尔顿(Nigel Poulton)) .epub

2022-07-02

ThinkPHP6.0完全开发手册-05311318.pdf

ThinkPHP6.0完全开发手册-05311318.pdf

2022-07-01

docker简明教程、docker简明教程

docker简明教程、docker简明教程

2022-07-01

consul_1.7.2_linux_amd64-zimug.7z

consul_1.7.2_linux_amd64-zimug.7z

2022-04-15

docker-compose-Linux-x86_64 1.29.2版本

docker-compose-Linux-x86_64 1.29.2版本

2022-04-07

使用Oracle 官方JDK11构建docker镜像的Dockerfile及源文件

1. 使用Oracle 官方JDK11构建docker镜像的Dockerfile及源文件 2. 构建Spring Boot项目的Dockerfile及测试文件 3. jdk-11.0.13_linux-x64_bin.tar.gz安装包

2022-04-03

Screenshot_2022-03-21-11-01-24-639_net.csdn.csdnplus.png

Screenshot_2022-03-21-11-01-24-639_net.csdn.csdnplus.png

2022-03-21

【大话云原生】负载均衡篇-小饭馆客流量变大了.pdf

【大话云原生】负载均衡篇-小饭馆客流量变大了.pdf

2022-03-14

颜值与实力并存-chiner数据建模软件.pdf

颜值与实力并存-chiner数据建模软件.pdf

2022-03-12

子线程任务发生异常,主线程事务如何回滚

子线程任务发生异常,主线程事务如何回滚

2022-03-10

【springboot】接口多实现类,选择性注入的4种解决方案.pdf

【springboot】接口多实现类,选择性注入的4种解决方案.pdf

2022-03-03

图解java反射机制及常用应用场景_字母哥博客

图解java反射机制及常用应用场景_字母哥博客

2022-03-02

kafka单机版自动安装shell脚本

kafka单机版自动安装shell脚本、kafka_2.13-2.8.0.tgz、apache-zookeeper-3.6.3-bin.tar.gz

2022-02-19

HTTP 超全汇总.pdf

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

2020-08-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除