自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Anumbrella

雄关漫道真如铁 而今迈步从头越

原创 Java并发包中锁原理剖析(一)

今天介绍一下Java并发包中锁相关的原理分析,重点分析一下Java并发编程中使用到的锁相关知识。一、Java中并发编程基础知识介绍二、LockSupport工具类三、抽象同步队列AQS概述待续。。。。

2020-07-31 22:27:51 31

原创 一文深入理解搞懂Java中的魔法类-Unsafe

Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个类。Unsafe类位于JDK的rt.jar包中,它提供了硬件级别的原子性操作,Unsafe类中的方法都是native方法,它们使用JNI的方式访问本地C++实现库。因此Unsafe类主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。...

2020-07-05 18:28:56 306 1

原创 浅谈分布式ID生成方案

复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。而我们在实际应用中ID的生成也有多种解决方案,那么我们究竟应该如何选择?各种方案有什么区别或者有啥使用场景,今天我们就来讲解一下分布式ID的生成解决方案。...

2020-05-31 23:13:53 142

原创 JWT认证了解和实践

今天讲解一下JWT的相关知识,1、JWT是什么Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必...

2020-04-30 21:29:26 257

原创 Maven插件开发(三)——Java中Processor使用与maven-compiler-plugin的结合使用

在前面几篇博客中我们讲解了简单的自定义插件开发工作,今天我们讲解一下扩展maven-compiler-plugin的processor功能。一、maven-compiler-plugin我们知道Maven只是个项目管理工具,如果要编译Java代码是不行的,而maven-compiler-plugin这个是Apache官方提供的Maven编译Java源码的功能插件,我们在项目中经常使用到,也就是...

2020-03-22 19:29:41 682

原创 Maven插件开发(二)

在上一篇博客中我们讲解了简单的自定义插件开发工作,今天我们继续讲解一下自定义插件开发中可能涉及到的其他内容。比如传参、自定义类加载、扩展maven-compiler-plugin的processor等功能。在前面一篇博客中我们简单入门了解了Maven插件开发的相关流程,具体操作是读取文件然后显示出来。如果忘了,可以先去复习一下——自定义Maven插件开发(一)。在实际应用中我们可以通过mave...

2020-01-31 20:50:32 201

原创 Maven插件开发(一)

今天和大家聊一聊Maven中插件开发,在实际工作中,我们经常会用到Maven的插件,但是当一些基本插件功能无法完成我们的需要时或者我们要定制某种需求时,就需要通过自定义Maven插件来完成相关需求,接下来我们便聊聊Maven插件开发。一、什么是Maven插件对于Java开发者而言,Maven的使用再熟悉不过了,我们通过Maven进行编译,打包,上传等操作,其实这些都是Maven插件的功能。用官...

2019-12-31 23:21:58 396

原创 OAuth2学习(三)——OAuth2信息持久化存储

在上一篇文章中我们简单介绍了OAuth2的基本案例和简单使用——OAuth2学习(二)——OAuth2实战,但是配置信息都是基于内存当中进行设置的,这在我们实际应用中很少使用,一般我们都需要进行持久化设置。今天我们就来聊聊OAuth2中信息持久化存储。...

2019-11-30 22:38:05 1236 3

原创 Spring Boot日志格式化JSON方案

在工作中需要对Spring Boot日志进行JSON格式化,主要是为了传递给ELK做日志收集平台分析。考虑了以下几种方案:自定义Converter实现重新覆写Appender和Layout类,自定义实现使用logstash-logback-encoder来实现最后使用logstash-logback-encoder来实现,今后也方便扩展,在这里总结一下。...

2019-10-29 23:25:13 2068

原创 OAuth2学习(二)——OAuth2实战

在上一篇文章中我们讲解了OAuth2的一些基本概念,对OAuth2有了基本的认识。这一节内容我们就讲解一下OAuth2实战,围绕

2019-09-30 23:42:13 1871 2

原创 OAuth2学习(一)——初识OAuth2

今天我们来讲解一下OAuth2,在平时应用中我们经常能够见到它的身影。比如,当微信小程序获取你的用户名和头像时需要你授予权限,以及当我们在网站上使用微信或QQ登录时也是使用到了OAuth2。接下来我们便来讲解一下OAuth2。一、什么是OAuth2OAuth 2.0是目前最流行的授权机制,用来授权第三方应用,获取用户数据。OAuth(开放授权)是一个关于授权的开放标准,允许用户授权第三方移动...

2019-08-27 23:16:46 9714

原创 CAS单点登录(十三)——客户端前后端分离接入

最近在工作上遇到CAS前后端分离接入,后端是使用的GO,前端则是Ant Design,通过Restful Api进行数据交互,最后是同域下完成接入,始终感觉不理想,打算仔细研究一下前后端分离接入CAS方案,并进行总结如下。果真问题是学习的好老师,有疑问才能去解决。前面一些列的文章介绍CAS,具体原理我就住在这里复述了,如果读者还不太熟悉原理,可以去翻翻前面的文章——CAS单点登录(一)——初识S...

2019-07-07 09:02:14 8323 9

原创 Elasticsearch学习(四)——Logstash安装与使用

在前面我们讲解了Elasticsearch的Kibana插件,对于我们实际使用来说可能Kibana并不会使用到,但是Logstash插件大部分的情况下都会使用,那Logstash到底是啥?今天我们就来介绍一下。一、Logstash1、Logstash是什么?官方介绍说Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中...

2019-06-22 23:25:36 531

原创 CAS单点登录(十二)——集群部署

通过前面一系列的文章介绍,关于CAS的基本知识点大致介绍完了,今天讲解一下CAS中集群的部署。我们知道当访问量越来越来多时,我们需要对CAS服务的性能进行提升,而通过集群的方式提高CAS的服务性能是比较直接的。在部署的服务中,通过使用nginx来实现负载均衡分发到CAS具体的服务上,但是我们知道前端每次访问时是随机访问分配的,所以就会出现session共享问题,同时在不同CAS中的TGT分配的t...

2019-05-26 19:08:11 1929 6

原创 Elasticsearch学习(三)——Kibana安装与使用

在前面两节的文章中,我们介绍了Elasticsearch的搭建和基本常用插件的安装,今天我们介绍一下官方文档中推荐的Kibana和X-Pack组件集合。一、Kibana1、Kibana是什么?Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中...

2019-05-18 16:15:55 1084

原创 前端跨域及常见解决方案总结

最近的项目中,在前端项目中访问另一个前端页面,同时还有数据的交互,在使用iframe中总是提示跨域请求,在解决问题中,查看了很多资料,同时了解了一下前端跨域的原因,以及常见的解决方案,进行总结如下,防止今后再次遇到。一、跨域我们定义JS跨域是指通过JS在不同的域中进行相互通信或者数据传输。这里的域一般是指协议、域名(或主机地址)、端口,只要有其中一个不同,都会被当作是不同的域。而这个域是通过浏...

2019-05-07 23:34:20 834

原创 Elasticsearch学习(二)——常用插件安装

在前一篇文章中,我们讲解了elasticsearch的基本概念和安装教程,对elasticsearch的基本功能有了一定的了解,对它的基本用途有了基本的知晓。今天我们讲解一下elasticsearch中插件的使用,我们知道在elasticsearch中提供了很多的插件,包括官方的和其他第三方社区开发的插件。正是通过这些丰富的插件,elasticsearch的功能才变得更加丰富和好用。Elasti...

2019-04-21 22:24:44 2172

原创 Elasticsearch学习(一)——入门基础

开源的Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。最近在工作上使用到了Elasticsearch全文搜索引擎,打算系统学习一下,出一个系列相关的文章,欢迎大家一起讨论。一、简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布...

2019-04-13 20:48:58 2703

原创 CAS单点登录(十一)——单点退出

在前面我们讲解了CAS的单点登录客户端接入,对于CAS的登录有了更清楚的了解,今天我们讲解一下在CAS中的单点退出问题。首先我们要明白单点退出(单点注销)与注销的区别:其实官方文档也给我们详细的解释了:注销: 1. 应用程序注销 - 结束单个应用程序会话 2. CAS注销 - 结束CAS SSO会话请注意,在简单的情况下,每种情况下的注销操作对另一种情况都没有影响。而单点注销(SL...

2019-04-07 15:45:29 3220 6

原创 CAS单点登录(十)——通过Restful协议请求认证和退出

前面我们讲解了一些列的CAS文章,对CAS有了很多了解。今天我们讲解一个现在服务常用的REST协议来完成CAS的登录、认证,不需要我们手动登录跳转到CAS的登录页面就可以完成CAS的一些列操作。我们知道CAS认证支持包括多种协议去认证,包括CAS、OAuth、SAML1、SAML2、REST Protocol等协议,这里我们采用REST协议去获取TGT,然后获取到TGT后获取到ST,最后拿到ST...

2019-03-30 17:11:35 9148 11

原创 RabbitMQ学习(八)——做WebSocket消息代理,集成Spring Boot实现消息实时推送

在前面我们讲解了RabbitMQ消息的

2019-03-17 17:35:19 4734 1

原创 CAS单点登录(九)——客户端接入

在前面的CAS系列文章中,我们讲解了CAS从搭建到具体的自定义配置,但针对的都是CAS服务端的知识,今天我们讲解一下CAS的客户端知识点。

2019-03-01 10:07:55 6371 9

原创 MyBatis学习——高级结果映射

前面我们讲解了一下关于MyBatis的动态SQL查询,对MyBatis的基本用法有了大致的了解,如果忘记了可以去复习一下,MyBatis学习——动态SQL。今天我们将讲解一下MyBatis的高级查询知识点。前言:在关系型数据库中,我们经常要处理一对一 、一对多的关系。在面对这种关系的时候,我们可能要写多个方法分别查询这些数据,然后再组合到一起。这种处理方式特别适合用在大型系统上,由于分库分表,这...

2019-01-17 20:08:21 430

原创 MyBatis学习——动态SQL

最近在学习MyBatis相关知识,觉得有必要总结一下,因此会有相关几篇文章介绍一下MyBatis知识点,如果文章有错欢迎大家指正!我们知道MyBatis的强大特性之一便是它的动态 SQL。 使用过JDBC或其他类似框架的人都会知道, 根据不同条件拼接SQL 语句时不仅不能忘了必要的空格, 还要注意省略掉列名列表最后的逗号, 处理方式麻烦且凌乱。 MyBatis的动态SQL 则能让我们摆脱这种痛苦...

2019-01-05 17:08:02 480

原创 CAS单点登录(八)——多属性返回

在前面我们讲解了在CAS中关于如何自定义验证码以及自定义错误信息的配置,对于CAS的自定义有了更进一步的了解,如果忘记了,可以去复习一下CAS单点登录(七)——自定义验证码以及自定义错误信息。今天我们讲解一下在CAS中的多属性返回使用。关于CAS多属性的返回,其实在前面CAS单点登录(四)——自定义认证登录策略有大致的讲解,在那里我们使用了JDBC认证中自定义返回信息的策略。但是当时我们讲解的...

2018-12-20 22:38:15 3628 6

原创 RabbitMQ学习(七)——权限管理

今天我们讲解一下RabbitMQ中权限管理,主要包括在RabbitMQ中用户添加、用户角色分配、权限设置等知识,以及如何通过代码去设置权限的分配等。RabbitMQ中的用户角色在RabbitMQ中的用户角色主要分为五类:超级管理员(administrator)、监控者(monitor)、决策制定者(policymaker)、普通管理者(management)和其他(none)。每个角色对应...

2018-11-04 15:31:38 871

原创 CAS单点登录(七)——自定义验证码以及自定义错误信息

在前面我们讲解了CAS单点登录(六)——自定义登录界面和表单信息,知道了如何去实现页面和表单信息的自定义信息提交,就像我们提交表单的信息可能包括手机、邮箱等等,这些都能以我们前面的知识点去解决。但平时登录我们会发现除了必填的信息外,还需要填写一下验证码。这是为了流控、暴力破解、降低数据库压力等等原因,今天我们就讲解一下如何在CAS中添加验证码。注意:这一节的内容需要上一节的知识点,其中不会再次介...

2018-10-19 21:12:31 4493 11

原创 CAS单点登录(六)——自定义登录界面和表单信息

在上一节我们讲述了CAS中的Service配置及管理,对于添加CAS中的服务到注册的表中有了一定的了解,如果不是很熟悉,可以去复习一下CAS单点登录(五)——Service配置及管理。今天,我们接着前面没有讲解完的文章继续讲解,关于CAS中如何自定义表单信息提交以及如何自定义用户相关页面的知识点。一、自定义用户界面在上一节中我们讲解了关于Service配置和管理,在Service的配置...

2018-09-16 21:50:04 5073 7

原创 CAS单点登录(五)——Service配置及管理

在上一节我们讲述了CAS中关于自定义认证登录策略,对CAS中关于自定义登录配置的方案,校验策略有了一定的了解,如果忘记了可以去复习一下——————CAS单点登录(四)——自定义认证登录策略。这节本来该介绍自定义表单信息的知识,但是考虑到使用自定义表单知识涉及到Service配置方面的知识,所以这一节介绍一下在CAS中Service配置及管理。首先我们要明白CAS中的Service的概念是什么,...

2018-08-29 01:21:45 15389 15

原创 认识Java中的线程

前言:最近在看Java中的并发,做了笔记,但是还是觉得记录一下比较好。加深理解,这个模块可能有很多篇文章更新,笔者会抽时间更新,如果文章中有错误,欢迎指正!!在进入正文前,,我们先来讲解一下基本的概念,线程是什么?进程又是啥?一、线程与进程1、进程是程序运行资源分配的最小单位进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘IO等,同一进程中的多条线程共...

2018-08-18 18:22:51 1059

原创 CAS单点登录(四)——自定义认证登录策略

在上一节中我们使用了CAS的自定义认证完成了多种方式的登录认证,也就是我们主要是使用CAS为我们封装的多种不同的认证方案,基本上能够满足我们多种需求的认证,如果对自定义认证不是很了解,可以先去复习一下原文——CAS单点登录(三)——自定义认证。但是如果还是不能满足我们的需要,比如我们不仅需要用户名和密码,还要验证其他信息,比如邮箱,还有在一段时间内同一IP输入错误次数限制等。这里就需要我们自定...

2018-08-14 22:58:10 8979 6

原创 RabbitMQ学习(六)——消息确认机制(Confirm模式)

在上一篇文章中我们讲解了RabbitMQ中的AMQP事务来保证消息发送到Broker端,同时我们可以在事务之间发送多条消息(即在channel.txSelect()和channel.txCommit()之间发送多条消息,通过使用事务来保证它们准确到达Broker),如果忘记了事务的使用,可以复习一下上一篇文章——RabbitMQ学习(五)——消息确认机制(AMQP事务)。但是使用事务虽然可以保...

2018-08-04 17:21:40 22605 6

原创 CAS单点登录(三)——多种认证方式

今天我们讲解一下CAS的自定义认证,在上一篇文章中我们讲解了CAS基础服务的搭建,完成了CAS认证服务中心的简单部署,如果忘记了话,可以先去复习一下——CAS单点登录(二)——搭建基础服务。CAS自定义认证方式有多种方式,我们可以根据自己的需求来实现。在前一篇文章中搭建服务中我们其实就把CAS的JDBC自定义认证讲解了,在读取用户名我们可以指定为从数据库的表中读取数据。一、JDBC认证...

2018-07-22 15:24:19 14208 8

原创 CAS单点登录(二)——搭建基础服务

前一篇文章中,我们对CAS及SSO(单点登录)有了大致的了解,今天我们开始讲解如何搭建一个简单的CAS服务认证中心,如果你对CAS中单点登录的概念忘记了,可以先去复习一下先前的文章——CAS单点登录(一)——初识SSO,再开始接下来的内容。一、搭建CAS基础服务1、准备首先CAS官方文档地址:https://apereo.github.io/cas/5.3.x/index.html...

2018-07-14 18:33:35 12137 43

原创 Docker三剑客——Compose

前面介绍了Docker三剑客中的两个,今天我们介绍一下三剑客中的最后一个——docker-compose。

2018-07-07 17:28:06 15588 4

原创 CAS单点登录(一)——初识SSO

前言:其实好早就想把CAS的这一套知识整合一下,在工作上也应用到了这块,只是最近才在工作上接触到CAS,所以刚好把这些知识总结一下。这块可能是一个比较大的模块知识点,所以会有多篇文章进行逐一展开,笔者会尽量抽空更新,当然如果文章中存在错误,期望大家指出。一、初识CAS首先我们来说一下CAS,CAS全称为Central Authentication Service即中央认证服务,是一个企...

2018-06-29 00:02:04 56147 9

原创 RabbitMQ学习(五)——消息确认机制(AMQP事务)

在前面的文章中,我们对RabbitMQ的消息分发机制做了探究,知道RabbitMQ消息的分发机制,包括公平分发和轮询分发,如果忘记了可以去复写一下RabbitMQ学习(四)——消息分发机制 。我们知道可以通过持久化(交换机、队列、消息持久化)来保障我们再服务器崩溃时,重启服务器消息数据不会丢失。但是我们无法...

2018-06-19 23:33:08 8290 8

原创 Docker三剑客——Machine

在上一篇文章中,我们介绍了docker三剑客中的Swarm,对使用docker集群方式管理容器有了一定的了解,如果忘记了该内容,可以先去复习一下。Docker三剑客——Swarm。 今天我们开始介绍docker三剑客中的另一个——Machine。...

2018-06-13 22:30:15 2794

原创 Docker三剑客——Swarm

swarm

2018-05-28 23:37:13 7922 1

原创 RabbitMQ学习(四)——消息分发机制

在前面的一篇博文中,我们对RabbitMQ中的交换机有了大致的了解,同时结合Spring boot的实例,让我们对RabbitMQ的用法有了更清晰的认识。如果忘记了可以去复习一下,RabbitMQ学习(三)——探索交换机(Exchange),结合SpringBoot实战。今天我们将要对RabbitMQ的消息机制进行更详细的探究,在上一篇文章中其实也涉及到了该消息机制的问题。只是没有深入探究,今...

2018-05-24 00:00:30 4024 8

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