Java 锁系列(六)——StampedLock使用

StampedLock 是读写锁的实现,对比 ReentrantReadWriteLock 主要不同是该锁不允许重入,多了乐观读的功能,使用上会更加复杂一些,但是具有更好的性能表现。StampedLock 的状态由版本和模式组成。 获取锁方法返回一个标记,表示和控制与锁状态相关的访问; 这些方法的“尝试”版本可能会返回特殊值 0 来表示获取锁失败。 锁释放和转换方法需要标记作为参数,如果它们与锁的状态不匹配则失败。本文描述 StampedLock 的基础使用场景,入门教程。

Java 锁系列(三)——ReentrantLock源码分析

ReentrantLock 是一个可重入的独占锁,是基于 AQS(AbstractQueuedSynchronized,抽象队列式同步器)实现的,它有公平锁和不公平锁两种实现方式。简单查看源码,可以发现 ReentrantLock 其实是一个代理的模式,Reentranlock 的核心是其内部继承自 AbstractQueuedSynchronized 的抽象类 Sync,将 Sync 作为锁的同步基础,其中加锁/解锁等操作其实都是由 Sync 对象完成的,也是通过实例化 FairSync 或 NonfairSync 分别对应公平锁和非公平锁的实现。

RabbitMQ 镜像集群部署

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。本文主要讲解RabbitMQ安装,以及镜像集群的搭建。

Java 锁系列(一)——锁分类和基础概述

在多线程在获取资源的时候,锁用于保证资源获取的有序性和占用形,可以控制多个线程访问共享资源的顺序。Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对 java 主流的锁进行分类,梳理锁相关的基础知识。

领域驱动设计(DDD)知识点整理

Eric Evans的“Domain-Driven Design领域驱动设计”简称 DDD,DDD 是一套综合软件系统分析和设计的面向对象建模方法,相比于面向对象设计(OO),DDD 是一种更加注重业务边界的设计方法,OO 更加注重抽象,从差异中寻找共同点,然后进行抽象,这是两种不同的思维方式。可以简单的理解为 DDD 是一种业务+解耦的设计实现,DDD 的业务边界思维能够很好的支持微服务拆分,与近些年提出的微服务理论不谋而合 。本文将描述领域驱动设计(DDD)的基础知识,以及 DDD 项目的基础项目结构。

Spring Security系列(五)——Oauth2使用JWT生成Token无法指定授权范围的解决方法

写在前面Spring Oauth 提供了对 jwt 的支持,要实现 jwt 功能很简单,但是在指定授权范围时将会遇到无法指定授权范围的问题,本文主体描述的是如何解决这个问题。本文依赖环境:<!-- spring-security-oauth2 2.3.4.RELEASE --><d

hexo博客SEO进阶 - url设置和百度url提交、百度访问量统计

写在前面在前面的文章已经详细描述了怎么配置hexo、修改主题、发表文章等功能,本文主要描述一下hexo博客的有关链接提交和url的设置的内容,然后补充了个百度统计功能。随着我博客的使用可能会不断更新,文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用的东西win10电脑hexo 4.0.01

hexo-admin插件windows系统插入图片失败问题解决,hexo-admin汉化,以及插件的一点点优化

写在前面本人win10系统,在使用插件时插入图片遇到了图片插入裂图的问题,在网上找了一下教程都无法解决,只有说手动改路径,但是我觉得手动改太麻烦,于是开始翻源码,被我找到了问题所在,顺便根据个人喜好做了一点点修改。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。附带插件GitHub地址:hexo-

Git安装与配置

写在前面听说GitHub的Pages可以用来搭建个人博客,使用到了Git这个软件,所以我尝试了,写了一篇文章记录一下,以防以后忘记,也希望可以给有需要的朋友提供一点帮助。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用的东西win10系统的电脑Git 2.24.01.什么是Git?Git

Node.js安装和数据源的配置

写在前面本人并没有用到node.js进行什么开发,在使用GitHub+HEXO搭建个人博客时用到了这个东西,因为要设置国内镜像,所以记录一下,以防以后忘记了。 文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用的东西win10系统的电脑Node.js 12.13.11.下载与安装1.1下载N

Apache ignite笔记(二)——持久化

本文环境:Apache ignite 2.8.0jdk 1.8.0_241一、开启持久化java方式:// Ignite persistence configuration.DataStorageConfiguration storageCfg = new DataStorageConfigurat

JVM系列(一)——类加载器以及双亲委托机制

写在前面本文主要介绍了四种类加载器,以及算清委托机制。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用到的东西java1.类加载器1.1 类加载器作用:类加载器负责从文件或者网络中加载Class信息,加载的类信息存放于方法区的内存空间。1.2 启动类加载器(BootStrap ClassL

java取得对象占用的内存大小

Instrumentation类提供了编写Java编程语言代码所需的服务。 Instrumentation是将字节码添加到方法中,以收集工具使用的数据。由于这些更改纯粹是通过代理方式附加的,因此这些工具不会修改应用程序状态或行为。此类工具的示例包括监视代理、探查器、覆盖率分析器和事件记录器。

提交jar到Maven中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。 中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。 我们可以将自己开源的工具包上传到Maven中央库上,供开发人员使用,本文将详细描述如何进行Jar上传等步骤。

Shiro系列(一)——Shiro + Springboot + JWT 整合

本文的出现表示不再进行 Spring Security Oauth 实现的研究了,原因是原开源项目已经被废弃了不再更新了,而且 Oauth 实现的内容有些奇怪,新的项目 spring-authorization-server 目前才发布到 0.1.0,默认只提供了基于内存的实现,个人认为还不是很完善,不适合用到项目中。而且 Spring Security 的 Oauth 流程都实现了,要修改还得从新研究 spring-authorization-server 的实现逻辑,然后进行修改定制,太耗费精力了,不如使用 Shiro 自己实现 Oauth 的逻辑。 本文作为 Shiro 入门文章,主要描述 Shiro 如何整合 JWT 实现登录校验问题,还有 Shiro 的认证+授权模式对 JWT 并不是很友好。