自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

就是个写代码的

天下风云出我辈,一入代码岁月催

  • 博客(122)
  • 资源 (6)
  • 论坛 (1)
  • 收藏
  • 关注

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

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

2020-11-20 18:45:16 41

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

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

2020-11-10 17:23:45 43

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

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

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

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

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

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

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

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

2020-11-02 00:26:04 50

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

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

2020-10-31 14:31:16 173

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

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

2020-09-06 23:10:59 293

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

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

2020-09-02 22:56:15 276

原创 四、Dubbo调用模块详解

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

2020-09-01 11:08:59 283

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

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

2020-08-30 00:25:37 353

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

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

2020-08-28 23:33:07 284

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

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

2020-08-27 15:21:49 292

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

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

2020-08-26 16:01:31 386

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

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

2020-08-11 11:34:01 376

原创 深入浅出mysql索引

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

2020-08-06 12:15:09 399

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

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

2020-07-01 14:21:24 745

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

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

2020-06-20 17:59:08 889

原创 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 619

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

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

2020-06-08 19:08:07 628

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

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

2020-06-08 18:43:13 656

原创 SpringBoot自动装配源码解析
原力计划

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

2020-06-06 19:32:38 654

原创 工作笔记开篇

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

2020-06-06 16:09:51 614

原创 浅谈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 966

原创 LRU算法缓存淘汰策略
原力计划

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

2020-05-29 14:53:30 864

原创 分布式唯一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 1989

原创 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 915

原创 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 1930

原创 Spring的隐式注入
原力计划

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

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

原创 Spring注解@Primary的使用

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

2020-04-29 11:36:35 1052

原创 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 1261 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 827

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

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

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

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

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

2020-04-15 14:44:51 712

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

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

2020-04-14 23:32:48 710

原创 SpringBoot集成JWT登录鉴权
原力计划

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

2020-04-13 15:09:53 802

转载 springboot启动后第一次使用session速度慢

有两种解决方案:1,可以通过配置JRE使用非阻塞的Entropy Source:在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。2,在JVM环境中解决打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:securerandom.source=file:...

2020-04-09 16:57:36 813

原创 nacos+springboot+dubbo微服务整合

1,安装nacos从 Github 上下载源码方式git clone https://github.com/alibaba/nacos.gitcd nacos/mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U ls -al distribution/target/// change the $version to...

2020-04-07 18:28:09 1622

原创 Netty实现TCP私有协议栈的开发
原力计划

为什么使用TCP通信?因为在进行对接机器C语言开发的直播主机)的时候,TCP是一种更安全更高效率的连接,它是一种会确认通信对方,保持通信状态,并且能检查报文完整性的连接,而HTTP则是在TCP服务层上面的应用层,当然TCP通信稍微要复杂一点。为什么要使用Netty?先说一下BIO,NIO,AIO的关系:BIO:是一种同步阻塞的io,当io建立连接等待应答的时候,当前的线程就被挂起不能做...

2020-03-27 19:40:56 846

原创 Https安全通信机制
原力计划

1,http的缺点通信使用明文(不加密),内容可能可能会被窃听不验证通信方的身份,因此可能遭遇伪装无法验证报文的完整性,所以可能已被篡改2,http+加密+认真+完整性保护 = https(1)加密处理和认证如果在http中使用未经加密的明文,比如在web页面中输入了信用卡号,如果这条通信线路找到窃听,那么你的信用卡号就暴露了,另外服务端和客户端都是没法确认通信方的,所以很有可能不...

2020-03-21 19:24:41 761 1

原创 quartz定时任务不能注入service导致NullPointException

背景:在使用spring框架的时候整合quartz定时任务,在定时任务的job继承类里面注入service导致空指针异常原因:原因是job是在quartz中实例化出来的,不受spring的管理。所以就导致注入不进去了解决方法:1,需编写一个MyAdaptableJobFactory类则可解决对象无法注入的问题@Component("myAdaptableJobFactory")publ...

2020-03-20 18:46:13 826

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

bug大爆炸

发表于 2020-02-12 最后回复 2020-02-12

空空如也

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

TA关注的人 TA的粉丝

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