自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Nacos 进阶篇---集群:新增服务实例怎么同步给其他集群节点(十)

在客户端发起实例注册请求后,注册请求成功后,Nacos服务端是怎么同步给其他集群节点的?我们是一开始从Nacos服务端注册实例 onPut 方法开始分析的,然后逻辑最终调用了API接口。在这个接口当中最后还是调用了 onPut 进行新增实例。@Override// 实例注册请求,封装任务丢入到阻塞队列中// 本章重点:实例注册请求进行集群节点同步。

2024-07-14 14:19:10 911

原创 Nacos 进阶篇---集群:选举心跳健康检查劳动者(九)

在本章节我们首先知道了,在Nacos集群下,是只有一个集群节点去执行心跳健康检查定时任务的,然后把结果同步给其他集群的节点。那么是怎么同步给其他集群节点的呢?在Nacos 服务端是有一个定时任务,来和其他集群节点进行数据同步的。通过源码分析,我们知道最终也是通过 HTTP 的方式进行同步的,采用了 异步任务 + 阻塞队列的方式 的设计架构。这样的好处就是快,先把任务都给接受放入到阻塞队列当中,就立马返回。然后后台会开启一条线程不断从阻塞队列当中获取任务进行处理。

2024-07-08 21:01:23 669

原创 Nacos 进阶篇---Nacos服务下线做了哪些事情 ?(八)

当Spring容器销毁的时候,首先我们知道Nacos客户端服务下线,是会调用服务端删除实例的接口,在这个接口当中,会把 instance 实例列表进行移除,然后就和服务注册代码逻辑一样,利用写时替换的方式,更新Nacos注册表的数据。在Nacos注册数据表变动后,服务端是发布一个事件,然后利用 udp 的方式去通知每一个客户端服务。注册服务:Spring容器启动,Nacos客户端利用事件监听,从而调用Nacos服务端 服务实例注册接口。在调用服务注册之前,客户端会开启一个 心跳健康检查异步任务。

2024-05-29 15:56:31 990 3

原创 Nacos 进阶篇---Nacos服务端怎么维护不健康的微服务实例 ?(七)

总结:本章讲了Nacos怎么维护整个微服务实例健康状态的流程,在客户端发起注册服务时会有心跳任务,每5s给服务端发送一次心态,服务端会把该 Instance 实例中的lastBeat 属性更新为当前时间。并且在服务端实例注册的时候,会开启心跳健康检查任务,把 lastBeat 跟当前时间比超过 15s,就会被标识为不健康的实例,把lastBeat 跟当前时间比超过 30s,Nacos 会把该 Instance 从注册表当中进行删除。

2024-05-19 15:44:14 801

原创 Nacos 进阶篇---服务发现:服务之间请求调用链路分析(六)

每一个客户端服务都有一个本地缓存列表,先根据服务名去本地缓存列表当中找,如果没有就去调用Nacos实例查询接口查询注册表当中数据,查到的话进行返回,同步更新本地缓存列表,同时也会开启定时任务来维护本地缓存列表。如果根据服务名在本地缓存列表查到多个服务实例,最终会根据负载均衡的策略选择其中一个, 进行 HTTP 调用。最后我们还看了Nacos实例查询接口,实例数据是从Nacos注册表当中获取,进行返回的。

2024-05-19 15:18:00 1033

原创 Nacos 入门篇---内存注册表:高并发下如何保证注册表读写并发冲突 ?(五)

1、本章主要讲了 Nacos注册表的结构,可以看出Nacos注册表的设计方式还是很灵活的,可以通过命名空间、分组、集群来进行实例的区分,具体可以根据公司的业务场景来定。2、我们还讲了在高并发下读写冲突的问题,同时也讲了 解决方案“读写复制” 的理论。最后分析Nacos 实例异步注册任务中,是如何利用 “写时复制”来完成注册表修改的。那么到本章为止,我们 Nacos 源码分析完了一条路线:从客户端发起服务注册,到服务端响应实例注册请求。异步任务 + 内存队列怎么来处理的整个流程,就讲完了。

2024-05-12 20:51:54 729

原创 Nacos 入门篇---注册服务:如何做到高并发支持上百万服务注册(四)

本章节主要讲了三大点首先讲了Nacos能支持上百万台注册,主要归功于它的异步任务设计。那什么是异步任务?答:先接受到客户端的注册实例,包装成任务,放到阻塞队列当中。然后再开一条线程死循环去阻塞队列当中获取任务一个个去执行,完成真正的实例注册。(这里不会存在资源浪费的情况,阻塞队列有任务就执行,没任务线程就会挂起)接口响应快 :不用等注册完成才去返回。只要接受到客户端注册实例信息,包装成任务,丢入到阻塞队列当中,就进行返回。

2024-04-23 20:39:48 799

原创 Nacos 入门篇---服务端如何处理客户端的服务注册请求?(三)

最终默认调用到了 EphemeralConsistencyService 接口下的DistroConsistencyServiceImpl当中put方法,又在put方法当中调用了 onPut 方法,在onPut 方法当中,创建了Datum对象,把key、和 Instances都放入Datum对象里面去。其实就是 Instances 对象实现了 Record 的接口,Instances 对象当中有个instanceList属性,这个属性包含了之前已经注册的实例和新需要注册的实例。这个参数默认是为:true。

2024-04-14 21:29:29 842

原创 Nacos 入门篇---客户端如何发起服务注册?怎么发送服务心跳的(二)

本文主要围绕Nacos客户端发起自动注册的流程自动注册的方式发送服务心跳三个方面来分析源码的。

2024-04-06 21:32:00 865

原创 Nacos 入门篇(一)

在早期Spring Cloud开始流行的时候,Eureka使用的比较广泛,后来这个项目在2018年7月的时候,官方就宣布Eureka 2.0不再维护了。再后来阿里推出了全新的 Spring Cloud Alibaba 系列,nacos 就是其中的一员。接下来就跟小编一起来了解下:Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos动态服务发现: 动态服务发现很好理解,就是新增或者下线微服务实例,nacos能感知到。这也是作为注册中心最基本的功能。配置管理。

2024-03-24 20:27:14 1083 1

原创 玩转docker到天亮--Dockerfile(五)

Dockerfile 是一个文本文件,里面包含了一条条构建镜像指令,每一条镜像指令都是描述该层镜像是如何构建的。dockerfile 用于指示docker image build 命令自动构建image的源代码是纯文本文件(执行构建命令时要把后缀.txt去掉)

2023-10-22 21:15:14 104

原创 玩转docker到天亮--docker常用命令(四)

举例:使linux虚拟机的/data/nginx/html和nginx容器/usr/share/nginx/html的目录进行绑定,linux虚拟机的html目录一更改,nginx容器绑定的目录也会进行同步。定义:镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。docker exec -it 容器id sh ----- 进入容器当中(有的镜像没有bash命令,可以用对应的shell,比如 sh)

2023-10-15 23:18:40 104

原创 玩转docker到天亮--docker快速入门(三)

2.需要将我们制作好的镜像文件提交到docker仓库中-----开发者将自己的app应用程序发布安卓手机助手中。:容器就是镜像运行的实例,容器状态分别为:初创建、运行、停止、暂停、删除,一个镜像可以运行多个不同的容器。Docker pull 从远程docker 官方仓库下载 镜像,到本地,在使用容器运行该镜像。:仓库可以理解为,专门存储镜像文件的仓库,类似于应用商店,统一在应用商店下载开发者的安装包。注意的是:docker官方镜像仓库地址部署在国外,下载镜像可能比较慢,建议配置国内加速镜像。

2023-10-13 21:50:53 105

原创 玩转docker到天亮--docker安装(二)

Docker 要求 CentOS7 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker。sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1。4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的。6、可以查看所有仓库中所有docker版本,并选择特定版本安装。7、安装docker。

2023-10-12 13:21:36 78

原创 玩转docker到天亮-入门概述(一)

1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。2. Docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理。使用户的app(可以是一个web应用程序或者数据库应用等)

2023-10-11 22:33:41 49

原创 学 Synchronized 看这一篇就够了,从入门到精通

CAS的全称是:Cmpare And Swap(比较相同并替换)。是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。CAS操作依赖3个值:内存中的值V,旧的预估值X, 需要修改的目标值B。如果内存中的值V和旧的预估值X相等,那么就将目标值B保存在内存当中,否则什么都不做。整个比较替换的过程是个原子操作。CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量成功,其他线程都失败,失败的线程并不会被挂起,而是被告知这次竞争失败,并再次尝试。

2023-06-16 21:47:57 247

原创 JUC并发编程--Volatile(二)

Volatile 是Java虚拟机提供 “轻量级的同步机制1、保证的可见性2、不保证原子性3、禁止指令重排拜拜~有任何问题欢迎大家指出~Thank You!

2023-03-14 21:10:56 143 1

原创 JUC并发编程--进阶(一)

在java中,线程部分是重点,juc就是 java.util.concurrent 工具包的简称。这是处理多线程的工具包,从JDK1.5 开始出现简单来说就是 "在java启动jar包的时候,就是一个程序,一个程序至少有一个进程,一个进程至少有一个线程!进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程是资源分配的最小单位线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行。线程是程序执行的最小单位并发:同一时刻多个线程在访问同一个资源,多个线程对一个点。

2023-02-19 21:29:20 255

原创 多线程--入门看这一篇就够了!

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理“。1.为了了解多线程,我们还需要理解两个术语进程:进程是执行程序中的一次执行过程,它是一个动态的概念。是系统资源分配的单位。

2022-11-19 20:16:37 911

原创 JAVA结构型模式-- 你必须要会的代理模式

为了一个对象提供了一个替身,已控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处就是:可以在原有对象目标的基础上增加额外的功能(比如:校验信息、日志记录),而不改变现有的代码,符合开闭原则。不管是静态代理、动态代理。他们都是为一个对象提供一个替身,来控制这个对象的访问。就是通过代理类来访问目标类,这样做的好处就是可以在目标基础之上,增加额外的功能操作,不改变现有的代码。实现了开闭原则。静态代理:实现比较简单,目标类和代理类都需要实现相同的方法或者父类,维护比较麻烦。

2022-11-01 20:44:00 120

原创 JAVA结构性模式 -- 一篇文章搞懂桥接模式

桥接模式是将抽象部分与它实现的部分分离,使它们都可以独立地变化。它是一种对象结构性模式,又称为 "接口模式"。1.桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。2.使用桥接模式需要注意应用场景,别为了设计模式而去使用设计模式,而是根据实际情况而定。拜拜~有任何问题欢迎大家指出~Thank You!...

2022-08-27 22:28:47 118

原创 JAVA结构性模式 -- 适配器模式你会用几种 ?

别名为包装器,将某个类的接口转换成客户端期望的另一个接口表示,主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。主要分为三大类:类适配器模式 、 对象适配器模式 、接口适配器模式。...

2022-08-27 16:47:32 182

原创 JAVA创建型模式 -- 需要克隆,不如看看原型模式

原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。

2022-08-22 00:14:39 108

原创 创建型模式 -- 对象创建步骤繁多,来看看建造者模式

定义:建造者模式又叫生成器模式,是一种对象构建模式。它是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。标准建造者和内部类建造者相比,内部类的方式少了 指挥者(Director),而是用户替代了指挥者,使得产品的创建更加灵活!!拜拜~有任何问题欢迎大家指出~Thank You!...

2022-08-16 16:17:10 169

原创 JAVA创建型模式--工厂模式

实例化对象不用new,使用工厂方法代替。将选择实现类,创建对象统一管理和控制。从而将调用者跟实现类解耦。而将调用者跟实现类解耦。三、三种工厂模式简单工厂模式 :用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有的代码)工厂方法模式 :用来生产同一等级结构中的固定产品(支持增加任意产品)抽象工厂: 围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。简单工厂模式(静态工厂模式):虽然某种程度上不符合设计原则,但实际应用最多!...

2022-08-15 12:25:00 432

原创 JAVA创建型模式--单例模式

1.双重检查的方式是在项目中比较常用的2.静态内部类可以完美实现懒加载3.静态内部类、enum比较推荐使用拜拜~有任何问题欢迎大家指出~Thank You!

2022-08-14 00:04:46 321

原创 RabbitMQ高级 -- 分布式事务

一、引言 前端时间因为忙着学吉他~ 就耽误正事了~ 现在就赶紧补回来~~二、目录

2022-04-12 11:27:16 3670 4

原创 学 RabbitMQ 看这一编文章就完事了

1.1 消息队列协议01.什么是协议 ?我们知道消息中间件负责数据的传递,存储,分发和消费三个部分组成,数据的存储和分发的过程中肯定要遵循某种约定俗称的规范,你是采用TCP/IP,UD协议还是其他的自己去构建等,而这些约定俗成的规范称之为"协议"。所谓协议是指:1.计算机底层操作系统和应用程序通讯时共同遵守的一组约定,只有遵循共同的约定和规范,系统和底层操作系统之间才能相互交流。2.和一般的网络应用程序不同的是,它主要负责数据的接受和传递,所以性能比较高。3.协议...

2022-02-16 11:50:14 1267

原创 Springboot引入本地jar包

一、引言 嗨嗨 ~二、实践1.在resources下面新建lib文件夹,并把jar包文件放到这个目录下2.在pom文件定义几个依赖指向刚才引入的文件注意:重点是systemPath这个路径必须得是你jar的路径。其他的按照套路填就行,要求不是太严格。${project.basedir}只是一个系统自己的常量,不用管它<dependency> <groupId>com.aliyun.alicom</group..

2022-01-22 20:54:41 7865 1

原创 Windows Jar包开机自启动

一、引言 今天本来是空闲摸鱼的一天~ 客户群里疯狂@我,服务怎么访问不了。心想怎么可能会有bug,上周五刚测试完。 怀着心惊胆战上服务器一看日志,原来是服务器重启导致jar包没启动了~二、实现方式bat脚本来实现批处理,放到windows开机目录下,就可以实现jar包开机自启动。三、实践 a.单个Jar包服务1.在jar包目录新建一个start.bat 文件,然后写入启动命令1 jar -jar XXXX.jar 2.仍然在此目录,...

2022-01-20 12:35:49 11589 6

原创 MybatisPlus 进阶用法 --- IService Service层简化代码

一、前言熟悉 mybatis-plus 的人都知道,mybatis-plus 提供两种包含预定义增删改查操作的接口:1.com.baomidou.mybatisplus.core.mapper.BaseMapper2.com.baomidou.mybatisplus.extension.service.IService IService<M,T> 针对业务逻辑层的封装 需要指定Dao层类和对应的实体类 是在BaseMapper基础上的加强 ~二、IService 使用...

2021-11-05 16:03:33 2065

原创 MyBatis-Plus 进阶用法 —— 乐观锁插件

一、引言 乐观锁 : 很乐观,对任何事情都保持着一个乐观的态度,认为别人不会修改数据,所以不会上锁,只是在更新数据的时候,去判断这条数据有没有被别人修改过。 悲观锁:很悲观,总是假设最坏的情况,每次去拿数据的时候都认为别人会修改数据,所以在每次拿数据的时候都会上锁。如果说大量读取数据操作的时候,适合使用乐观锁。如果冲突较多建议使用悲观锁。二、实现 步骤一 :springboot 方式 ,配置乐观锁插件package com.qianting.demo.confi...

2021-11-05 15:29:09 403 2

原创 MyBatis-Plus 进阶用法 —— 自定义通用方法

一、前言 MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么那么今天说说MP怎么自定义sql语句吧 go go~二、实现 1.a. 我们自定义一个类继承AbstractMethod 类,然后去实现injectMappedStatement 方法。 b. 然后就可以根据自己的业务需求自定义sql。 注意 :这里面可以不用加配置注解扫描,直接将自定义的sql添加到模板当中就可以。2 . 这里面有两个注意...

2021-11-04 11:42:00 1218

原创 mybatis-plus 自动填充功能整合

一、前言 在我们日常的开发当中,有一些表的基础字段每次都需要修改的比如 : createTime:创建时间createUser:创建人updateTime:修改时间updateUser:修改人 这个时候就可以使用我们的mybatis-plus自带的自动填充功能~二、实现1.@TableField(value = "create_user", fill = FieldFill.INSERT)value: 数据库里面对应的字段fill = FieldFil...

2021-11-04 10:26:48 608

原创 Redis的三种特殊数据类型

文章目录1.Geospatial地理位置2.Bitmap 位图,数据结构3.HyperLogLog 基数统计1、Geospatial地理位置详解package com.tianwang.springboot_porpdd.fiveRedisType.specialType;import redis.clients.jedis.GeoCoordinate;import redis.clients.jedis.GeoRadiusResponse;import redis.c..

2021-09-27 16:39:06 261

原创 redis中Zset数据类型最全常用命令

一、引言 zSet是一个有序、不重复的集合~ 应用场景:常用于排行榜 成绩 带权重的消息队列二、Zset数据类型常用命令1.往里面存储数据/** * zset 正常存取 */jedis.zadd("myZset",1,"one");jedis.zadd("myZset",2,"two");jedis.zadd("myZset",3,"three");jedis.zrange("myZset", 0, -1);2. 数据排序/** * zr...

2021-09-27 16:23:27 676

原创 redis中List数据类型最全常用命令

一、引言都 2021 年了 ~竟然还有人不知道 redis 的list类型常用命令~二、应用场景 list类型是用来存储多个有序的字符串的,支持存储2^32次方-1个元素。 redis可以从链表的两端进行插入(pubsh)和弹出(pop)元素,充当队列或者栈 支持读取指定范围的元素集 读取指定下标的元素等 三、List数据类型常用命令package com.tianwang.springboot_porpdd.jedis;impor..

2021-09-16 17:44:34 175

原创 redis中Set数据类型最全常用命令

一、引言啦啦啦 ~写完这篇博客就下班了 !二、应用场景①、去重;②、抽奖;SET结构和java中差不多,无序,并且每一个值不能重复;三、set数据类型常用命令package com.tianwang.springboot_porpdd.jedis;import redis.clients.jedis.Jedis;/** * @author WangYan * @date 2021/9/16 15:26 * redis Set 类型基本命令 * ...

2021-09-16 17:26:14 281

原创 redis中Hash数据类型最全常用命令

一、引言hello ! 今天带薪学习风都是甜的的 ~二、Hash数据类型常用命令package com.tianwang.springboot_porpdd.jedis;import redis.clients.jedis.Jedis;import java.util.HashMap;import java.util.Map;/** * @author WangYan * @date 2021/9/16 16:11 * Hash 类型基本命令 * 数据结构 : Ke.

2021-09-16 17:15:05 183

原创 2021 redis中String数据类型最全常用命令

一、引言 不是吧,不是吧 ~ 都 2021 年了还有人只会打永劫无间 ! 不会用 redis 的命令吧 !二、应用场景String类似的使用场景:value 除了是我们的字符串还可以是我们的数字 ! 1.计数器 2.统计多单位的数量 3.对象存储缓存三、String数据类型常用命令下面的命令大全,本人亲测,可放心食用 !package com.tianwang.springboot_porpdd.jedis;import redi...

2021-09-15 22:58:22 128

空空如也

空空如也

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

TA关注的人

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