自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 资源 (6)
  • 收藏
  • 关注

原创 期权-期权交易策略

期权-期权交易策略

2022-06-07 10:18:13 4722 1

原创 期权-期权概述

期权,是指一种合约,源于十八世纪后期的美国和欧洲市场,该合约赋予持有人在某一特定日期或该日之前的任何时间以固定价格购进或售出一种资产的权利。期权定义的要点如下:1、期权是一种权利。期权合约至少涉及买家和出售人两方。持有人享有权利但不承担相应的义务。2、期权的标的物。期权的标的物是指选择购买或出售的资产。它包括股票、政府债券、货币、股票指数、商品期货等。期权是这些标的物"衍生"的,因此称衍生金融工具。值得注意的是,期权出售人不一定拥有标的资产。期权是可以"卖空"的。期权购买人也不一定真的想购买资产标的物。因此

2022-06-07 10:08:39 2862

原创 深入理解Mysql索引底层数据结构与算法

一、索引数据结构二叉树,Hash,B+树详解什么是索引?面试的时候大家基本都回答,索引就像是字典的目录,通过定位的目录迅速的就能找到所对应的内容,这样回答可能比较片面。在我理解,索引是一种提高搜索效率散列存储的一种数据结构为什么要使用索引?在不使用索引的情况下,当一个表里面有上百万行数据的时候,查询某一条数据会导致扫描全表,一行数据一行数据的遍历,导致查询时间变长效率变低。而使用索引,我们知道索引是一种数据结构,如果以id作为索引字段,把id放在树上,那么就可以通过二分法快速的查询出来,提高效率。

2021-08-18 18:19:29 297

原创 九、编发编程之Future&Fork&Join框架原理分析

任务性质类型CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时, 系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的 时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率至小数点一千位以下的程序,在执行的过程当中绝大部份时 间用在三角函数和开根号的计算,便是属

2021-02-22 18:05:00 380

原创 八、并发编程之Executor线程池原理与源码解读

线程池“线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不 仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、 调优和监控线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行 处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上

2020-12-31 17:48:12 267

原创 七、并发编程之Condition详解&Queue体系分析

一、BlockingQueue阻塞队列多线程环境中,通过队列可以很容易实现数据共享,比如经典的“生产者”和“消费者”模型中,通过队列可以很便利地实现两者之间的数据共享。假设我们有若干生产者线程,另外又有若干个消费者线程。如果生产者线程需要把准备好的数据共享给消费者线程,利用队列的方式来传递数据,就可以很方便地解决他们之间的数据共享问题。但如果生产者和消费者在某个时间段内,万一发生数据处理速度不匹配的情况呢?理想情况下,如果生产者产出数据的速度大于消费者消费的速度,并且当生产出来的数据累积到一定程度的时候,

2020-12-03 18:48:19 419

原创 六、并发编程之Atomic&Unsafe魔法类详解

原子操作原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得 有点复杂。本文让我们一起来聊一聊在Inter处理器和Java里是如何实现原子操作的。1、相关术语2、处理器如何实现原子操作32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。1)处理器自动保证基本内存操作的原子性首先处理器会自动保证基本的内存操作的原子性。处理器保证从系统内存当中

2020-11-20 18:45:16 332

原创 五、并发编程之Tools&CountDownLatch&Semaphore详解

SemaphoreSemaphore字面意思是信号量,它的作用是控制访问特定资源的线程数目,Semaphore在实例化时传入一个int值,也就是指明信号数量。主要方法有两个:acquire()和release()。acquire()用于请求信号,每调用一次,信号量便少一个。release()用于释放信号,调用一次信号量加一个。信号量用完以后,后续使用acquire()方法请求信号的线程便会加入阻塞队列挂起。Semaphore对于信号量的控制是基于AQS(AbstractQueuedSynchronize

2020-11-10 17:23:45 431

原创 四、并发编程之AQS详解

并发之父 Doug Lea生平不识Doug Lea ,学懂并发也枉然Java并发编程核心在于java.concurrent.util包而juc当中的大多数同步器 实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获 取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS,AQS定 义了一套多线程访问共享资源的同步器框架,是一个依赖状态(state)的同步器。AQS具备的特性:阻塞等待队列公平/非公平独占/共享可重入允许中断例如Ja

2020-11-05 17:35:41 747 1

原创 三、并发编程之synchronized详解

设计synchronized同步器的意义在多线程编程中,可能会出现多个线程访问同一个共享,可变的资源,这个资源就是所谓的临界资源,这个资源可能是,变量,对象,文件等共享:资源可同时被多个线程访问可变:资源在生命周期内可以被改变由此引发的问题:由于线程的执行是不可控的,所以需要同步机制来协同对可变资源的访问。那怎么去解决此类的问题:实际上,我们所有的并发模式在解决线程安全问题时,采用的都是序列化的访问临界资源,就是在同一时刻,只有一个线程访问临界资源,也称作同步互斥访问Java提供了两种同步互

2020-11-04 18:40:30 379 1

原创 二、并发编程之volatile详解

1、并发编程的可见性,原子性与有序性问题原子性原子性指的是一个操作是不可中断的,即使是在多线程环境下,一个操作一旦开始就不会 被其他线程影响。在java中,对基本数据类型的变量的读取和赋值操作是原子性操作有点要注意的是,对于 32位系统的来说,long类型数据和double类型数据(对于基本数据类型, byte,short,int,float,boolean,char读写是原子操作),它们的读写并非原子性的,也就是说如 果存在两条线程同时对long类型或者double类型的数据进行读写是存在相互干扰的

2020-11-02 00:26:04 438

原创 一、并发编程之JMM详解

1、现代计算机理论模型与工作原理现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下 来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指 令。程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的 操作是计算机最基本的工作模型。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提 出来的,故称为冯

2020-10-31 14:31:16 772

原创 六、Dubbo协议模块原理源码解析

课程概要:RPC协议基本组成RPC协议报文编码与实现详解Dubbo中所支持RPC协议与使用RPC协议基本组成RPC 协议名词解释在一个典型RPC的使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件,其中RPC协议就指明了程序如何进行网络传输和序列化 。也就是说一个RPC协议的实现就等于一个非透明的远程调用实现,如何做到的的呢?协议基本组成:地址:服务提供者地址端口:协议指定开放的端口报文编码:协议报文编码 ,分为请求头和请求体两部分。序列化方式:将请求体序列化成

2020-09-06 23:10:59 744

原创 五、调用模块源码分析

概要:一、Dubbo 调用非典型使用场景二、调用内部实现源码分析一、Dubbo 调用非典型使用场景泛化提供&引用泛化提供是指不通过接口的方式直接将服务暴露出去。通常用于Mock框架或服务降级框架实现。public static void doExportGenericService() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(

2020-09-02 22:56:15 489

原创 四、Dubbo调用模块详解

概要:一、Dubbo 调用模块基本组成二、调用内部实现源码分析一、Dubbo 调用模块基本组成Dubbo调用模块概述:dubbo调用模块核心功能是发起一个远程方法的调用并顺利拿到返回结果,其体系组成如下:透明代理: 通过动态代理技术,屏蔽远程调用细节以提高编程友好性。负载均衡: 当有多个提供者是,如何选择哪个进行调用的负载算法。容错机制: 当服务调用失败时采取的策略调用方式: 支持同步调用、异步调用透明代理:参见源码:com.alibaba.dubbo.config.Refe

2020-09-01 11:08:59 1058

原创 三、Dubbo注册和订阅原理解析

课程概要:分布式项目开发与联调控制管理后台使用Dubbo注册中心详解一、分布式项目开发与联调接口暴露与引用在一个RPC场景中 ,调用方是通过接口来调用服务端,传入参数并获得返回结果。这样服务端的接口和模型必须暴露给调用方项目。服务端如何暴露呢?客户端如何引用呢?接口信息、模型信息、异常暴露接口的通常做法是 接口与实现分离,服务端将 接口、模型、异常 等统一放置于一个模块,实现置于另一个模块。调用方通过Maven进行引用。自动化构建与协作当项目越来越多,服务依懒关系越发复杂的

2020-08-30 00:25:37 1429

原创 二、快速掌握Dubbo常规应用

概要:Dubbo 快速入门Dubbo 常规配置说明一、Dubbo 快速入门Dubbo核心功能解释dubbo 阿里开源的一个SOA服务治理框架,从目前来看把它称作是一个RPC远程调用框架更为贴切。单从RPC框架来说,功能较完善,支持多种传输和序列化方案。所以想必大家已经知道他的核心功能了:就是远程调用。快速演示Dubbo的远程调用实现步骤 创建服务端项目 引入dubbo 依赖 编写服务端代码 创建客户端项目 引入dubbo 依赖 编写客户端调用代码dubb

2020-08-28 23:33:07 487

原创 一、从0到1整体认知分布式系统

概要:分布式架构的发展历史与背景如何着手架构一套分布示式系统**Dubbo 架构与设计说明 **一、分布式架构的发展历史与背景理解分布式架构:分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。以下是百度百科关于分布式系统的解释,有点复杂,我们可以简单点理解就是一个节点来干的活,先在分成多个节点来干?为什么

2020-08-27 15:21:49 599

原创 二叉树详解-Java实现二叉树数据结构

树的由来我们知道对于有序数组,查找很快,并介绍可以通过二分法查找,但是 想要在有序数组中插入一个数据项,就必须先找到插入数据项的位置,然后将所有插入位置后面的数据 项全部向后移动一位,来给新数据腾出空间,平均来讲要移动N/2次,这是很费时的。同理,删除数据 也是。然后我们介绍了另外一种数据结构——链表,链表的插入和删除很快,我们只需要改变一些引用值 就行了,但是查找数据却很慢了,因为不管我们查找什么数据,都需要从链表的第一个数据项开始,遍 历到找到所需数据项为止,这个查找也是平均需要比较N/2次。那么

2020-08-26 16:01:31 1681

转载 redis是整合google guava的布隆过滤器

为什么要使用布隆过滤器?布隆过滤器(bloomfilter)有两大作用,一是为了防止缓存穿透,二是为了在百万级数据里快速高效的去重什么是布隆过滤器?1,布隆过滤器是用来判断一个元素是否出现在给定集合中的重要工具,具有快速,比哈希表更节省空间等优点,而缺点在于有一定的误识别率(false-positive,假阳性),亦即,它可能会把不是集合内的元素判定为存在于集合内,不过这样的概率相当小,在大部分的生产环境中是可以接受的;2,其原理比较简单,假设S集合中有n个元素,利用k个哈希函数,将S中的每个元素映

2020-08-11 11:34:01 1787

原创 DO转DTO映射MapStruct生产环境使用

什么是MapStruct?MapStruct是用于生成类型安全的bean映射类的Java注解处理器。你所要做的就是定义一个映射器接口,声明任何需要映射的方法。在编译过程中,MapStruct将生成该接口的实现。此实现使用纯Java的方法调用源对象和目标对象之间进行映射,并非Java反射机制。与手工编写映射代码相比,MapStruct通过生成冗长且容易出错的代码来节省时间。在配置方法的约定之后,MapStruct使用了合理的默认值,但在配置或实现特殊行为时将不再适用。与动态映射框架相比,MapStru

2020-07-01 14:21:24 1665

原创 dubbo的调用原理及泛化调用

简单介绍dubbo是阿里开源出来的一个rpc框架,主要是用于微服务分布式项目的远程调用,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现,下面是调用的原理图:dubbo框架的整体设计:图例说明:1,图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。2,图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Confi

2020-06-20 17:59:08 4447

原创 spring容器Bean的生命周期及BeanPostProcessor的使用

生命周期流程1~2创建实例。创建实例就是:这里就是把配置文件中的bean信息化作一个bean读取到容器里面3~4是注入依赖关系,3是对bean实例化之后做一些操作,4是配置文件中的bean属性设置到bean中5是bean初始化之前的处理,应用开发者需要把容器中实例化的bean拿出来用,这个拿出来的过程就是初始化注意实例化与初始化的区别,instantiation 和initialization6~7 如果bean实现了InitializingBean,那么将调用InitializingBean的

2020-06-16 11:42:52 1009

原创 链表-Java实现链表数据结构

链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上 一个/或下一个节点的位置的链接(“links”)链表(Linked list):是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数 据,而是在每一个节点里存到下一个节点的指针(Pointer)。使用链表结构可以克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较.

2020-06-08 19:08:07 2608

原创 分治法思想递归解决汉诺塔问题

分治思想当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思想。汉诺塔问题汉诺塔问题是由很多放置在三个塔座上的盘子组成的一个古老的难题。如下图所示,所有盘子的直 径是不同的,并且

2020-06-08 18:43:13 1223

原创 SpringBoot自动装配源码解析

前言还记得就在去年大学刚毕业那会儿,第一次去面试被问到,SpringBoot为什么可以自动装配的时候,当时伙计憋了半天憋出一个@SpringBootApplication然后就没有了,面试官似笑非笑的跳过了这个话题,今天突然想起这件事,那我们就来看看springboot自动装配到底是个什么牛鬼蛇神springboot全局配置文件我们都知道在使用springboot的时候除了start还有一个全局的配置文件,application.yml或application.properties,这里面可以配置日志

2020-06-06 19:32:38 905

原创 工作笔记开篇

为什么要写工作笔记?之前看过很多大厂开发大佬的博客,都说工作笔记对我们的提升非常有帮助,在工作中我们除了日常工作的crud外,很多时候也会遇到难题,会对场景给出相应的解决方案,这个过程,我们可能会查阅很多知道,参考人家的祖传代码,学习相关的知识,与同事研究讨论才能够完美解决,不过好记性真不如烂笔头,时间越来越久,能记住的东西就越来越少,很多时候都会给自己一个错觉,好像我这段时间以来的确很忙,但好像也没有做什么,好像也没有学到什么,这样子就把时间荒废了,所以我们需要写工作总结。工作总结需要写哪些东西?

2020-06-06 16:09:51 860

原创 浅谈Spring的循环依赖

什么是循环依赖?其实就是在IOC容器初始化对象的时候,A对象的创建依赖B对象 A—>B ,B对象的创建又依赖A对象,B—>A,所以这样子就产生了对象的循环依赖。基于构造器的循环依赖先上基于构造器的循环依赖例子:@Componentpublic class A { private B b; public A(B b) { this.b = b; }}@Componentpublic class B { private A a

2020-05-29 16:50:29 1184

原创 LRU算法缓存淘汰策略

LRU算法是什么?按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常著名的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用基于这个思想, 会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数。在计算机中大量使用了这个机制,它的合理性在于优先筛选热点数据,所谓热点数据,就是最近最

2020-05-29 14:53:30 1939 1

原创 分布式唯一Id:snowflake雪花算法

snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0为什么使用snowflake?其实呢如果只是想保证分布式id的唯一性,那么使用UUID是完全可以没问题的,UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,它是由以太网卡地址、

2020-05-28 18:21:40 2719

原创 BitMap算法及实现点赞功能

BitMap简介bitmap听起来是位图的意思,其实就一种基于位的映射,bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此可以大大节省存储空间。为什么要使用bitmap?举个例子,有一个无序有界int数组{1,2,5,7},初步估计占用内存44=16字节,这倒是没什么奇怪的;但是假如有10亿个这样的数呢,10亿4/(102410241024)=3.72G左右。如果这样的一个大的数据做查找和

2020-05-27 16:35:30 2220 2

原创 Mybatis Plus条件构造器QueryWrapper,UpdateWrapper

1,条件构造器的方法以及格式说明:wapper介绍 :1,Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示2,AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件3,AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。4,LambdaQ...

2020-05-07 15:10:06 13946

原创 Spring的隐式注入

当我们在使用依赖注入的时候,通常有三种方式:1.通过构造器来注入;2.通过setter方法来注入;3.通过filed变量来注入;Constructor@Controller@RequestMapping("/app")public class APPController { private AppService appService; public APPCont...

2020-04-30 00:47:09 1406 1

原创 Spring注解@Primary的使用

https://blog.csdn.net/qq_16055765/article/details/78833260

2020-04-29 11:36:35 1763

原创 Spring注解@Order的使用

@Order:注解@Order的作用是定义Spring容器加载Bean的顺序,而不是类的加载顺序1,注解类源码@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})@Documentedpublic @interface Order {...

2020-04-29 11:30:37 2248 3

原创 Java8新特性Lambda、Stream

Java8新特性​ Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。方法引用 − 方法引...

2020-04-23 22:49:13 1159

原创 Spring源码解析三:Spring IOC容器的依赖注入

1、Bean对象创建的时机依赖注入是在Bean对象创建的时候完成的,那么第一个问题来了,Bean对象什么时候创建?Bean对象的创建是在getBean方法被调用的时候发生的,而在Spring中有两个场景会触发getBean方法被调用。单例模式是非延迟加载的对象,会在IOC容器初始化的时候被创建且初始化。非单例模式是延迟加载的对象,是应用第一次向容器索要该Bean对象的时候被创建且初始化。...

2020-04-15 17:03:58 1601 6

原创 Spring源码解析二:Spring IOC容器的初始化

IOC容器的初始化分为三个步骤Resource定位,即BeanDefinition的资源定位。BeanDefinition的载入向IOC容器注册BeanDefinition1,Resource定位以ApplicationContext的具体实现FileSystemXmlApplicationContext来介绍Resource定位的过程:IOC容器初始化类比为用木桶来装水,Res...

2020-04-15 14:44:51 947

原创 Spring源码解析一:Spring IOC容器的设计

1,IOC接口的设计这里的接口设计有两条主线:BeanFactory和ApplicationContext1、BeanFactory–>HierarchicalBeanFactory–>ConfigurableBeanFactory:这是BeanFactory的设计路线,BeanFactory定义了基本的IOC容器规范,HierarchicalBeanFactory中增加了get...

2020-04-14 23:32:48 946

原创 SpringBoot集成JWT登录鉴权

什么是JWT?Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。JWT的请求流程JWT的应用场景身份认证在这种场景下,...

2020-04-13 15:09:53 1981

gradle-5.4.1.rar

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置

2020-02-22

microservice.rar

springcloud所有组件代码,从注册中心到链路追踪,分模块进行编写,每一个核心组建都有相应的代码例子,可以直接运行,代码总共12大组建,eureka,ribbon,feign,hystrix,zuul,configserver,stream,sidcar,zipkin,dashboard,turbine等

2019-12-06

ShiroDemo.rar

Shiro安全框架,整合了springboot项目,作为认证和授权两大功能 Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。   Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。   SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。

2019-12-06

websocketdemo.rar

基本websocket长连接的网页聊天功能 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

2019-12-06

zookeepercuratoronline.rar

在我们进行单机应用开发,涉及并发同步的时候,我们往往采用synchronized或者Lock的方式来解决多线程间的代码同步问题。但当我们的应用是分布式集群工作的情况下,那么就需要一种更加高级的锁机制,来处理种跨机器的进程之间的数据同步问题。 这就是分布式锁

2019-12-06

Java微信登录+websocket.rar

微信网页扫码登录 前端技术vue.js+后端技术SpringBoot,spring项目也适用 扫码登录,websocket简历建立长连接,登录成功回调服务器接口,并异步同事前端登录成功

2019-12-06

空空如也

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

TA关注的人

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