9 itlemon_

我要认证

年华易逝,且行且珍惜!

等级
TA的排名 1w+

RocketMQ源码之路(一)搭建RocketMQ源码环境

提到消息队列(Message Queue),大家都会想到常见的那几种,比如:Kafka、RabbitMQ、RocketMQ、ActiveMQ、ZeroMQ、MetaMQ等,当然还有很多企业内部自研了适用于公司业务的MQ系统。作为分布式系统的重要组件,MQ常用于系统间的解耦,以及削峰填谷、异步处理等场景。我们学习MQ,不仅要学会如何去使用,更要深入学习MQ的设计思想,以及MQ的实现原理。上述常见的MQ组件中,笔者推荐大家对阿里巴巴的RocketMQ进行深入学习,它是Java语言实现,并且经历了“双十一”巨..

2020-09-26 00:27:33

深入理解类加载机制:拨开迷雾见真章

Java语言将封装性表现的淋漓尽致,程序员在写Java代码的时候根本不用考虑自己写的代码在后期运行时是如何被JVM加载到内存中的,但是想告别CRUD,进阶为一名高级程序员的话,JVM的类加载机制必须了然于心,本文将详解JVM的类加载机制,文中涉及的代码均为JDK8版本,所涉及的Java虚拟机均指HotSpot。一、理解类加载机制我们平常写的Java代码是存储在.java文件中,这是一个文本文件,是不能直接执行的,但是这个文本文件可以被编译成为一个字节码文件(后缀为.class),这个字节码文件中描..

2020-08-31 20:19:30

走进高并发(四)深入理解Atomic类

从本篇文章开始,我们将对JDK并发包java.util.concurrent中相关类的源码进行分析,通过分析源码,能让我们尽快地掌握并发包中提供的并发手脚架,能让我们更好地利用这些并发工具写出更加好的代码。本篇文章的主角是AtomicInteger,接下来,请跟随文章的节奏一起分析AtomicInteger吧!...

2020-07-04 11:12:12

走进高并发(三)深入理解Java内存模型

多线程程序要比单线程程序复杂的多,单线程程序中,线程从内存中读取一个变量,如果这个变量的值本身就是1,那么线程读取到的值必然是1。但是在多线程程序中,如果多线程对变量的读写没有进行合理的控制,那么后续线程读取到的变量的值很可能是2,甚至是3等。所以有必要定义一种或多种规则,保证多线程下内存数据的一致性和准确性,Java内存模型(Java Memory Model,JMM)由此诞生。在讨论Java内存模型之前,这里先一起聊聊CPU、高速缓存以及主内存,在了解这些知识后,对理解Java内存模型会有很大的帮.

2020-06-22 20:04:00

Spring Security技术栈学习笔记(三)表单校验以及自定义校验注解开发

Hibernate不仅仅为操作数据库提供了解决方案,还为数据校验提供了解决方案——Hibernate Validator。本篇博客将介绍常用的Validator注解的使用以及在Validator不满足实际需求的情况下如何使用自定义Validator来实现数据校验。一、常见的数据校验注解首先我们需要在项目的POM文件中添加Hibernate Validator的依赖才可以使用它的...

2018-03-26 12:30:04

Spring Security技术栈学习笔记(四)RESTful API服务异常处理

当我们从浏览器访问不存在的Spring Boot的RESTful API的时候,往往会返回Spring Boot内置的404错误界面,但是作为前后端分离的应用,相同的API也许会在其他终端访问,比如手机APP等,那么也会是相同的处理方式吗?一、Spring Boot的默认处理方式分析从浏览器端访问启动Spring Boot项目,从浏览器访问一个不存在的API,如“/us...

2018-04-01 15:14:29

Spring Security技术栈学习笔记(五)使用Filter、Interceptor和AOP拦截REST服务

一般情况,在访问RESTful风格的API之前,可以对访问行为进行拦截,并做一些逻辑处理,本文主要介绍三种拦截方式,分别是:过滤器Filter、拦截器Interceptor以及面向切面的拦截方式AOP。一、使用过滤器Filter进行拦截使用过滤器进行拦截主要有两种方式,第一种是将自定义的拦截器标注为Spring的Bean,在Spring Boot应用就可以对RESTful风格的...

2018-04-02 00:26:34

Spring Security技术栈学习笔记(六)使用REST方式处理文件服务

Spring Boot实现文件的上传和下载十分便捷,之前已经写了一篇关于Spring Boot实现文件上传的博客,用的是浏览上传的,而本篇博客使用的是代码模拟上传,两种方式不一样,可以参考一下。一、文件上传通过RESTful API上传文件,代码如下:package com.lemon.security.web.controller;import cn.hutool...

2018-04-02 17:46:40

Spring Security技术栈学习笔记(七)使用Swagger自动生成API文档

由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot...

2018-04-03 15:17:06

Spring Security技术栈学习笔记(八)Spring Security的基本运行原理与个性化登录实现

正如你可能知道的两个应用程序的两个主要区域是“认证”和“授权”(或者访问控制)。这两个主要区域是Spring Security的两个目标。“认证”,是建立一个他声明的主题的过程(一个“主体”一般是指用户,设备或一些可以在你的应用程序中执行动作的其他系统)。“授权”指确定一个主体是否允许在你的应用程序执行一个动作的过程。为了抵达需要授权的店,主体的身份已经有认证过程建立。一、Spri...

2018-04-03 20:10:51

Spring Security技术栈学习笔记(九)开发图形验证码接口

在设计登录模块的时候,图形验证码基本上都是标配,本篇博客重点介绍开发可重用的图形验证码接口,该接口支持用户自定义配置,比如验证码的长度、验证码图形的宽度和高度等信息。本文的目标是开发一个图形验证码接口,该验证码支持用户自定义长度,以及生成图片后图片的宽度和高度、验证码的过期时间等。接下来按照整个设计思路介绍开发流程。一、开发图形验证码实体类及属性类1)图形验证码实体类...

2018-04-06 22:52:27

Spring Security技术栈学习笔记(十)开发记住我功能

“记住我”几乎在登陆的时候都会被用户勾选,因为它方便地帮助用户减少了输入用户名和密码的次数,本文将从三个方面介绍“记住我”功能,首先介绍“记住我”功能基本原理,然后对“记住我”功能进行实现,最后简单解析Spring Security的“记住我”功能的源码。一、Spring Security的记住我功能基本原理Spring Security的“记住我”功能的基本原理流程图如下所示...

2018-04-13 18:55:46

Spring Security技术栈学习笔记(十二)将短信验证码验证方式集成到Spring Security

短信登录作为一种常见的登录认证方式,在Spring Security中是没有的,本篇博客将继续在之前文章的基础上,建立一套短信登录验证机制,并将其集成到Spring Security中。一、短信登录验证机制原理分析在Spring Security中,我们最常用的登录验证机制是基于用户名和密码的,输入了用户名和密码以及图片验证码之后,就会进入一系列的过滤器链中,直到验证成功或者验证失败为止。...

2019-01-31 16:37:11

Spring Security技术栈学习笔记(十三)Spring Social集成第三方登录验证开发流程介绍

开发第三方登录,我们必须首先要了解OAuth协议,本文首先简单介绍OAuth协议,然后基于Spring Social来开发QQ登录验证。一、OAuth协议简介OAuth协议诞生背景举一个场景例子,有一个第三方服务提供方,可以给图片提供美化的服务,而你的图片存储在百度云盘上,那么如何做到使第三方服务提供者对你的图片进行美化呢?传统的做法是将自己的百度云盘账户和密码授权给第三方服务提供者,他...

2019-01-31 16:51:31

Spring Security技术栈学习笔记(十四)使用Spring Social集成QQ登录验证方式

上一篇文章《Spring Security技术栈开发企业级认证与授权(十三)Spring Social集成第三方登录验证开发流程介绍》主要是介绍了OAuth2协议的基本内容以及Spring Social集成第三方登录验证的基本流程。那么在前篇文章的基础上,我们在本篇文章中将介绍Spring Social集成QQ登录的一个完整的开发流程。...

2019-01-31 16:53:09

Spring Security技术栈学习笔记(十五)解决Spring Social集成QQ登录后的注册问题

上一篇文章主要完成了Spring Social集成QQ登录主要逻辑,但是最后还是遗留了一个问题,那就是授权登录后跳转到了/signup上,其实这是Spring Social注册逻辑,所以我们就一起用这节内容来共同探讨解决这个问题。一、分析为什么会跳转到/signup上为什么会跳转到/signup上,或者在上面情况下会跳转到/signup上呢?我们一起阅读源代码来查找原因。我们在此把社交登录...

2019-01-31 16:55:07

Spring Security技术栈学习笔记(十六)使用Spring Social集成微信登录验证方式

类似于QQ登录,微信登录也是许多网站采用的一种登录方式之一,本文将从代码中讲解微信的OAuth协议与标准的OAuth协议区别,将微信登录集成到Spring Social中。...

2019-02-03 12:11:22

Spring Security技术栈学习笔记(十一)开发短信验证码登录

短信登录也是一种常见的登录方式,但是短信登录的方式并没有集成到Spring Security中,所以往往还需要我们自己开发短信登录逻辑,将其集成到Spring Security中,使用Spring Security来进行校验。本文将介绍开发短信登录的方法,并将其加入到Spring Security的验证逻辑中。一、短信登录逻辑设计以及图片验证码代码重构在前面一篇博客《Sprin...

2018-05-07 19:50:33

Spring Security技术栈学习笔记(一)环境搭建

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减...

2018-03-19 14:37:00

Spring Security技术栈学习笔记(二)RESTful API详解

RESTful一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。本篇博客主要讲述使用Spring MVC开发RESTful风格的API。一、传统API和RESTful API传统的API和RESTful API如下表所示: 行为 传统A...

2018-03-22 18:22:39

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。