自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 NFT 这么火,你还不懂 ERC721 吗?

什么是非同质化代币(NFT)?在了解 ERC721 规范之前,我们需要弄懂 同质化代币和 非同质化代币的含义。同质化代币(FT):可以简单类比游戏中的金币 or 点券,我拥有的 100点券和你拥有的 100 点券 本质上并没有什么区别,都可以购买皮肤。非同质化代币(NFT):唯一标识具体某一个人或者物品,例如:我拥有齐白石的《群虾图》真品,全球仅此一份。什么是 ERC721 规范?ERC721 规范是为了实现 非同质化代币(NFT)而创建的标准;换言之,实现了 ERC721 规范的代币,每一份

2022-03-13 12:07:41 10647 1

原创 基于Redis+Lua的滑动窗口式限流方案

分布式限流方案概述分布式锁为什么要使用分布式锁分布式锁应该具备的条件分布式锁的实现方案基于数据库实现基于缓存redis实现无论是分布式锁还是常规的锁,其目的都是在于:让多个线/进程在竞争某一个资源的时候,获取访问的权限。分布式锁无非是将线程竞争的层面拔高到进程竞争。使用redis实现分布式锁的思想:获取锁的时候,使用set命令加锁,Redis有个事务锁,就是如下的命令,这个命令的含义是将一个value设置到一个key中,如果不存在将会赋值并且设置超时时间为30秒,如何这个key已经

2020-11-29 16:25:55 928 1

原创 分布式锁实现方案(二):基于Redis+Lua脚本的分布式锁

分布式限流方案概述分布式锁为什么要使用分布式锁分布式锁应该具备的条件分布式锁的实现方案基于数据库实现基于缓存redis实现无论是分布式锁还是常规的锁,其目的都是在于:让多个线/进程在竞争某一个资源的时候,获取访问的权限。分布式锁无非是将线程竞争的层面拔高到进程竞争。使用redis实现分布式锁的思想:获取锁的时候,使用set命令加锁,Redis有个事务锁,就是如下的命令,这个命令的含义是将一个value设置到一个key中,如果不存在将会赋值并且设置超时时间为30秒,如何这个key已经

2020-11-29 16:24:13 739

原创 Java集合概述篇——“上帝视角“全览集合框架

Java集合框架概述篇概述集合是Java中比较基础的模块,所有的集合类都处于 java.util包下,其中支持多线程的集合类位于 java.util.concurrent包下,有兴趣的朋友可以去看看相关的源代码。本文尝试以全局的角度,一窥Java集合框架的全貌;Java集合大致上可分 3 个部分,分别为: List、 Set、Map;文章会依次介绍三者各自的作用以及区别。话不多说,Let't Go!!!迭代器Iterator在开始介绍具体的容器之前,让我们先来看看迭代器为何物。迭代器提供了一种遍

2020-11-22 16:53:05 673 12

原创 Java集合List系列(二):LinkedList源码解析(JDK1.8)

Java集合List系列(二):LinkedList源码解析(JDK1.8)概述LinkedList是基于节点实现的 双向 链表的 List,每个节点都指向前一个和后一个节点从形成链表。类图从图中我们可以看出, LinkedList实现了4个接口和继承了1个抽象类,4个接口分别为:List接口,主要提供添加、删除、修改、迭代遍历等操作。Cloneable接口,代表 LinkedList支持克隆。Serializable接口,表示ArrayList支持序列化的功能。Deque

2020-11-16 19:10:38 2584 5

原创 并发编程基础系列篇(一):可见性、原子性、有序性讲解

并发编程基础系列篇(一):可见性、原子性、有序性讲解背景各自讲解缓存带来的可见性问题线程切换带来的原子性问题编译优化造成的有序性问题总结

2020-11-16 12:28:30 161

原创 树系列——二叉树的先序、中序、后序遍历(递归、迭代方式)

树系列——二叉树的先序、中序、后序遍历(递归、迭代方式)

2020-11-13 07:55:27 137

原创 Java集合List系列(一):ArrayList源码解析(JDK1.8)

JAVA集合List系列(一):ArrayList源码解析

2020-11-13 07:37:33 731 1

原创 权限篇:初探权限系统基本模型及 Spring Security 权限控制方案

初探 Spring Security 四种权限控制方案及权限系统基本模型Spring Security 主要的功能是 认证和 授权,认证系列篇基本完结,接下来将进入 Spring Security 的授权系列篇。本文主要介绍 常规权限系统的基本设计模型以及 Spring Security 的权限控制方案,话不多说,Let’s Go !!!常规权限系统设计模型系统应用不做权限管控,就犹如在大街上裸奔一般。至今为止最普及的权限模型是 RBAC模型,基于角色的访问控制(Role Based Access

2020-11-09 23:01:54 1267 1

原创 扩展篇:再探Spring Security过滤器链之SecurityContext

扩展篇:再探Spring Security过滤器链在 概述(一):SpringSecurity的前世今生 中我们曾提过Spring Security底层是通过一组过滤器链来实现的,当时简单的介绍了几个比较重要的过滤器;并且在后面的几篇认证文章中都有比较详细的讲解。但前几篇的系列文章更多的是关注 认证本身,对一些细枝末节没有额外的展开;而本篇文章的目的是再探 Spring Security 的过滤器链,完整的剖析全链路。经过 认证(一):基于表单登录的认证模式 的介绍,我们对认证的流程有了一个比较全面的

2020-10-25 23:53:45 1104

原创 扩展篇:Spring Security在前后端分离下的JSON交互方案

通过前几篇的文章, Spring Security的认证系列基本介绍完毕,前几篇的系列文章更多的是关注 认证本身,对一些细枝末节没有额外的展开,因此接下来的两篇文章会补充讲解一些额外的知识。本篇文章主要扩展讲解在前后端分离的架构下,Spring Security该如何处理 JSON 类型的数据交互。随着技术的发展,分工越来越明细;“让专业的人干专业的事” 是发展的主旋律。回到我们的登录认证上,即无论登录成功还是失败,服务端都返回一段 JSON 给前端,该跳转还是该展示就由前端自己决定;前端的事就让前端.

2020-10-18 18:18:00 595 3

原创 认证篇:Spring Security 自定义验证码登录(下)之登录流程讲解

认证(三)下篇:验证码登录流程讲解本篇为自定义验证码登录的下篇,主要会对自定义登录的流程进行讲解;我们曾在认证(二):表单登录的源码解析中对 Spring Security的认证流程有过比较详细的学习。“模仿不是创作,但创作不能不有模仿”————周谷城。我们可以从表单登录认证流程中寻找灵感,定制化开发出验证码登录认证。流程分析首先先回顾一下表单登录的认证流程:大致上有这么几个比较核心的类/接口:UsernamePasswordAuthenticationFilter过滤器,用以捕获表单登

2020-10-09 20:19:14 1559 2

原创 认证篇:Spring Security 自定义验证码登录(上)之验证码生成

概述总所周知,验证码方式的登录模式十分的普遍,不过 Spring Security并没有提供比较好的原生解决方案,但是我们可以 do it by ourself!,本文的篇幅相对比较长,因此分上下篇分别来介绍。上篇主要介绍:验证码的生成,下篇对自定义验证码登录的流程进行讲解。我们比较常见的验证码主要有两种:图形验证码以及短信验证码,相对来说不是特别的复杂。可能会有人有疑惑:为什么简单的验证码生成需要花费一整篇幅来介绍呢?原因当然是:身为菜鸟的我也有一个架构师的梦!验证码的生成会结合模板方法模式一起讲解.

2020-09-26 18:20:38 1017

原创 如何设计好API

“语言首先是写给人看的,只是恰巧(incidentally)能够运行” ——《计算机程序的构造和解释》。好的API应对客户端友好,换言之就是能够直接通过其方法签名而理解它做的事情,而不用深入去阅读方法的实现,甚至深入阅读API所在的整个类。单纯的介绍如何设计好API似乎如"海市蜃楼"般的虚无缥缈,因此本文从设计&实现的角度出发,针对我们在设计并实现API的过程中提出一些小意见。首先回顾一下API方法的组成模块:API注释访问修饰符返回值方法名称参数列表异常列

2020-09-26 15:21:34 1158

原创 认证篇:Spring Security 表单登录认证源码解析

认证(二):表单登录的源码解析原理讲解接上回分解,上回我们聊到了《基于表单登录的认证模式》【todo: 这里做一个文章的超链接】,正所谓:“知其然,然后知其所以然”;就让我们来一探究竟,瞅瞅 Spring Security到底是怎么实现表单登录的。首先我们先来回顾一下上篇文章我们制作的 Spring Security的表单认证的流程图:从流程图中我们可以简单的了解到,整个认证流程大致上分为3个模块:登录信息的封装认证收尾处理(成功&失败处理)核心模块为 认证模块,

2020-09-26 14:31:07 550 1

原创 认证篇:Spring Security 基于表单登录的认证模式

认证(一):基于表单登录的认证模式原理探讨当我们在项目中引入 Spring Security的相关依赖后,默认的就是表单登录形式;俗话说:“听人劝,吃饱饭”,既然 Spring Security已经给我们安排的明明白白了,我们就从表单登录开始吧。在开始之前,我们可以站在 Spring Security的角度上思考:如果我自己来实现表单登录的功能,那么我需要做哪些工作呢?就我个人而言,我可能会考虑以下几点:配置用户信息,存储如账号、密码等;密码不能以明文传输,需要加密功能执行校验认证

2020-09-13 16:44:13 695 1

原创 概述篇:SpringSecurity的前世今生

Spring Security的前世今生前世今生Spring Security的前身并非称呼为Spring Security,而是叫Acegi Security;但这并不意味着它与Spring毫无关系,它仍然是为Spring提供安全支持的。Acegi Security搭上了Spring的便车,摇身一变成为Spring Security,但即便如此其还是继承了Acegi Security的臃肿繁琐的配置,学习成本相对还是十分的高。直到有一天,Spring Boot横空出世,提出约定优于配置等理念,极大

2020-09-12 14:57:16 629

空空如也

空空如也

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

TA关注的人

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