自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【RabbitMQ】消息可靠性的处理方案

文章目录消息如何保证100%投递成功什么是生产端的可靠性投递实现可靠性投递的方案消息落库,对消息状态进行打标消息的延迟投递,做二次确认,回调检查幂等性概念如何避免消息的重复消费问题Confirm确认消息实现机制confirm确认消息流程解析confirm确认消息的实现Return返回消息自定义消费者消息的ACK与重回队列消息的限流TTL消息死信队列DLX消息如何保证100%投递成功什么是生产端...

2019-08-02 15:33:06 1208 1

原创 【MySQL】索引失效情况 及 索引优化

BTree索引的工作原理  若建的索引时index(a,b,c),会先排序a,如果遇到相同的a,再排序b,如果遇到相同的b,再排序c;如果此时中间的b查询条件为b>1,这是一个范围值range,mysql无法利用索引在对后面的c部分进行检索,即range类型查询字段后面的索引无效索引失效1.若索引列有多列,要查询条件中要遵守最左前缀法则,即查询从索引的最左前列开始并且不跳过索引中...

2019-06-09 19:56:24 291 2

原创 【MySQL】深入了解 InnoDB中的聚集索引和辅助索引(B+树索引)

分类使用联合索引覆盖索引优化器选择不适用索引:全文扫描

2019-06-08 07:38:53 2676 5

原创 【MySQL】sql_model模式

服务器版本为5.6.26,本地版本为5.7.22

2018-12-17 11:45:58 5439 4

原创 【java nio】Selector 原理解析

本文主要结合源码讲解了selector是如何拉取注册的channel上发生的就绪事件的,及 主线程和辅助线程是如何协同进行拉取的就绪事件的

2022-06-14 19:57:03 1094 1

原创 【netty-socketio】@OnEvent作用

下面主要讲解跟 @OnEvent 相关代码的注释一:SocketIoServer创建启动服务端,首先要创建SocketIoServer,创建socketIoServer实例时做了如下几件事:创建namespacesHub = new NamespacesHub(读取到的配置#{com.corundumstudio.socketio}),存放创建的所有的Namespace创建并添加默认mainNamespace<“”,mainNamespace>到namespacesHub.namesp

2022-05-22 16:27:28 2918

原创 ArrayList为什么是线程不安全的/多线程修改会出现的问题

ArrayList为线程不安全集合,表现为:问题一:元素丢失问题二:数组存在null元素问题三:数组下标越界ArrayIndexOutOfBoundsException

2022-03-16 17:50:34 1417

原创 基于redis实现简单的分布式/单例令牌桶限流

   通常为了防止突然过多请求或系统处理能力有限时,为了保护下游接口,通常会对下游接口限流,下面说一下使用redis实现简单限流。可以使用zset对象实现: key:为对象的行为,即限流器的名字标识 score:用时间戳来实现滑动窗口,当前时间-滑动窗口时间段 即为滑动窗口开始时间,结束时间就为当前时间 value:能体现一次唯一请求即可,但是要注意节省内存

2022-03-05 16:12:32 2020 1

原创 redis 5种对象类型对应的编码类型 及 数据结构

redis的5种对象类型对应的编码类型 及 数据结构

2022-02-27 20:55:40 1070

原创 redisson分布式锁实现原理

redis分布式锁就是基于redis的hash数据类型实现的,key为:锁名称,即myLock,field为:uuid+threadId,value为:上锁次数,从此可以看出redis锁是可重入的

2021-12-12 15:31:12 5052 5

原创 resilience4j之CircuitBreaker熔断器——总结

CircuitBreaker主要由:配置、注册器、熔断器、度量指标、事件发布组成

2020-06-27 17:34:12 1782

原创 resilience4j之CircuitBreaker熔断器——CircuitBreakerRegistry注册器

CircuitBreakerRegistry 由InMemoryCircuitBreakerRegistry实现前面文章提到在CircuitBreakerConfiguration利用@Bean创建CircuitBreakerRegistry时调用了InMemoryCircuitBreakerRegistry的of方法,of方法调用了InMemoryCircuitBreakerRegistry的构造方法,构造方法最终将CircuitBreakerConfig放到了ConcurrentMap<Stri

2020-06-27 17:33:25 710

原创 resilience4j之CircuitBreaker熔断器——CircuitBreakerEvent 事件

CircuitBreaker.EventPublisher /** * An EventPublisher can be used to register event consumers. * 事件处理器,用于向EventProcessor中注册处理六种事件的EventConsumer,且可根据不同事件类型注册不同的处理策略,onEvent默认所有事件触发 */ interface EventPublisher extends io.github

2020-06-27 17:32:34 678

原创 resilience4j之CircuitBreaker熔断器——CircuitBreakerMetrics指标度量

在上篇文章中提到,onError()或onSuccess()时都会去计算错误率等指标,具体是由CircuitBreakerMetrics实现一:CircuitBreaker.Metrics 指标度量接口该接口定义了一系列获取度量指标的方法,其中包括如下://度量指标接口,用于观察熔断器的各项指标 interface Metrics { // 返回失败率百分比,如果调用数小于MINIMUM_NUMBER_OF_CALLS,返回-1 float getFailur

2020-06-27 17:30:12 583

原创 resilience4j之CircuitBreaker熔断器——CircuitBreakerStateMachine状态机

CircuitBreaker有五种状态,把这5种状态的公共属性和行为抽象到CircuitBreakerState,然后5种状态ClosedState、OpenState、DisabledState、ForcedOpenState、HalfOpenState分别去实现包括://把5种状态的公共属性及公共行为抽象出来封装成抽象类CircuitBreakerState private interface CircuitBreakerState { //是否可以尝试获取信号量,其实就是一

2020-06-27 17:26:28 1257

原创 resilience4j之CircuitBreaker熔断器——CircuitBreakerConfig 配置

一. 为什么要有断路器当A服务调用B服务,由于网络原因或自身原因出现问题时,A就会等待B的相应,当有更多的服务器请求资源时,就会有更多的请求A等待B的响应,这样就会发生连锁效应(雪崩效应),因为服务A有太多的线程导致服务A线程耗尽从而导致A也无法接受请求出现问题,断路器就是解决这一问题的二. 什么是断路器断路器有三种正常状态:完全打开OPEN,半开HALF_OPEN,关闭CLOSED,还有两种通过设置的强制状态:强制不可用DISABLED,强制打开FORCED_OPEN。三:滑动窗口的类型基于计

2020-06-27 17:21:21 3244 1

原创 Java异常(Runtime异常 和 Checked异常)

1.Java常见异常类异常对象常用方法:getMessage():返回异常的详细描述字符串,例如:/ by zeroprintStackTrace():printStackTrace(PrintStream s):getStackTrace():返回异常的跟踪栈信息2.Runtime异常 和 Checked异常区别    Exception...

2020-04-12 21:02:17 1865 3

原创 反射

1.什么是反射能动态的获取类的所有成员(属性和方法)的一种途径,即把java类中的各种成分映射成一个个的java对象2.获取Class实例的3种方式比如有个User类,然后全路径名为cn.tfjy.com.UserClass uClass = User.classClass<?> uClass = Class.forName(“cn.tfjy.com.User”);Use...

2019-08-04 14:39:52 186 1

原创 网络编程

TCPUDPHTTP

2019-07-19 11:37:51 236

原创 事务的传播性

1.Propagation.REQUIRED方法被调用时自动开启事务,在事务范围内使用则使用同一个事务,否则开启新事务即如果在该Propagation.REQUIRED事务下被调用,则则用Propagation.REQUIRED事务,否则使用自己的新的事务@Testpublic void test{ addStudent();}@Transactional(propagati...

2019-07-16 10:21:24 700

原创 【Java】单例模式

一:何时用单例模式 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只实例化一个对象时。几乎所有的系统都会用到单例模式 二:模式构造函数是私有的private产生一个静态的私有的对象写一个静态的公有的方法,返回该类类型的实例化对象三:分类: 懒汉式存在多线程同步问题,可能会存在多个ClientManager 实例对象当类第一次被加载时,不会为...

2019-07-07 08:39:57 428 25

原创 动态代理

public static Object newProxyInstance(ClassLoader loader, Class&amp;lt;?&amp;gt;[] interfaces, InvocationHandler h) ...

2019-07-02 11:07:38 192

原创 【SpringCloud】ZuulFilter过滤器

先介绍一下springboot如何集成日志  常用处理java日志的组件有:slf4j、log4j、logback、common-logging等,LogBack是基于Log4j基础上大量改良的一种日志框架,但是它不能单独使用,推荐配合日志框架SLF4J来使用。springboot继承了许多日志框架,但默认配置为logBack,日志级别为info,所以我们就不用引日志的依赖了,可以通过如下路径...

2019-06-27 11:14:58 1242 3

原创 【SpringCloud】Hystrix断路器

https://www.cnblogs.com/qdhxhz/p/9581440.html个人理解:只有调别的服务时,才会用到服务熔断,和全局异常还是有区别的:全局异常时拦截所有的异常,本服务异常时用全局异常,而熔断用于服务间调用,被调服务出问题时,用熔断...

2019-06-26 08:46:40 316 5

原创 【SpringCloud】Zuul路由网关

文章目录1. 是什么2. 作用3. 项目实战3.1 引依赖3.2 配置文件3.3 启动项配置4. 总结思路5.项目框架1. 是什么Zuul包含了对请求的路由和过滤两个最主要的功能:路由功能: 负责将外部的请求转发到具体的微服务实例上,是实现外部访问统一入口的基础过滤功能: 负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础  Zuul和Eureka进行整合,将Zuul...

2019-06-26 07:56:02 199 3

原创 【SpringCloud】Ribbon实现负载均衡

文章目录是什么LB 相关知识Ribbon中LB的思路核心组件IRule项目实战引依赖配置文件在消费者的启动项配置service层调用服务https://blog.csdn.net/jrn1012/article/details/77837658/目前Spring Cloud中服务之间通过Rest方式调用有两种方式:feignRestTemplate+Ribbonfeign的方式更优雅...

2019-06-25 07:46:52 222 1

原创 【SpringCloud】 Feign

文章目录1. 是什么2. 能做什么3. 为什么选择Feign4. Feign原理5.项目应用5.1 服务提供方5.1.1引依赖5.1.2 配置文件5.1.3 启动项加注解5.1.4 对外暴漏的服务接口添加注解5.2 服务消费方5.2.1 引依赖5.2.2 配置文件5.2.3 启动项加注解5.2.4 消费者引用外部服务1. 是什么  feign是声明式的web service客户端,它让微服务之...

2019-06-25 07:43:49 1017 3

原创 【SpringCloud】Eureka服务注册与发现

文章目录Eureka是什么原理Eureka是什么  Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于Rest的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对微服务架构来说非常重要,有了服务发现与注册,只需使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。类似于Dubbo的注册中心zookeeper原理  Eur...

2019-06-18 17:33:38 217 3

原创 【SpringCloud】微服务入门

文章目录一. 什么是微服务二.微服务与微服务架构区别三. 微服务的优缺点优点缺点四. 微服务技术栈五. 为什么选择springCloud六. springCloud与Dubbo的区别七. springBoot和SpringCloud的关系一. 什么是微服务根据业务将应用拆分成一个个小的服务,每个微服务提供单个业务功能,即一个服务只做一件事,运行在单独的进程里,并拥有自己独立的数据库二.微服务...

2019-06-13 07:49:58 262 3

原创 【SpringCloud】Config实现分布式统一配置中心

分布式系统存在的问题—配置问题  分布式系统意味着有好多小服务,这样系统中存在大量的服务,但是每个服务都需要配置信息才能运行,映射到SpringBoot项目中意味中有很多application.yml配置文件,很难管理,这是SpringCloud提供了ConfigServer来解决这个问题,即使用SpringServer这一个服务实现了对所有服务的配置文件进行集中式的,动态的配置Config服...

2019-06-11 15:43:41 539 4

原创 【MySQL】sql优化

1.永远小表驱动大表现有2张表A和B: 若A表数据集大于B表数据集,用in由于exists:select * from A where id in (select id from B)等价于:select id from Bselect * from A where A.id = B.id若A表数据集小于B表数据集,用exists优于in:select * from...

2019-06-09 19:52:46 127

原创 【MySQL】索引 简介

1.索引是什么2.为什么要用索引3.索引的存储方式4.索引的操作5.优势6.劣势7.mysql索引分类8.mysql索引结构 9.哪些情况需要创建索引10.哪些情况不需要创建索引1.索引是什么  官方定义:索引(Index)是帮助MySQL高效获取数据的数据结果,由此可知,索引是一种数据结构。我们可以理解为索引是排好序的实现快速查找的数据结果   由此可见,...

2019-06-07 10:47:31 204 1

原创 【MySQL】InnoDB存储引擎中的锁

  MySQL有关锁的相关知识,参见上篇博客:https://blog.csdn.net/wrs120/article/details/86566879 ,通过上面的介绍,知道InnoDB存储引擎支持行锁,下面主要针对InnoDB存储引擎中的行锁进行讲解:锁分类共享锁(S Lock)  允许多个事务读同一行数据排它锁(X Lock)  允许事务删除或更新同一行数据XSx...

2019-06-06 21:29:06 182 2

原创 【MySQL】 逻辑架构及SQL执行过程

逻辑架构图   MySQL数据库的设计主要分为4层,它的设计理念完全可以用编程的思维去思考,我们可以把MySQL分为4层:第一层:连接层  最上面是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的TCP/IP的通信。主要完成一些类似于连接处理,授权认证,及相关的安全方案。在该层上引入了线程连接池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可实...

2019-06-06 11:56:29 392 1

原创 【多线程】synchronized与Lock的区别

synchronized关键字,基于jvm锁释放:@1:获得锁的线程执行完了该代码块 @2.线程执行出现异常,是一种被动方式释放,通过Monitor.exit()释放,Monitor更多讲解参见:https://blog.csdn.net/ignorewho/article/details/80854625是一种可重入锁、可中断锁,适用于并发少Lock接口,基于java编程调用...

2019-06-02 21:44:49 383 2

原创 【多线程】CAS原理

引言  在Java并发包中有这样一个包,java.util.concurrent.atomic,该包是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。那他们是如何保证线程安全的那,采用了CAS机制:CAS  CAS 指的是现代 CPU 广泛支持的一种对内存中的共享数据进行操作的一种特殊指令(底层用C实现的)。这个指令会对内存中的共享数据做原子...

2019-06-02 21:44:05 743 4

原创 【多线程】Volatile 线程间变量可见

线程间如何共享数据  使用全局变量或共享对象线程间变量为什么不可见如何使线程间变量可见synchronizedvlatile

2019-05-28 17:31:12 492 1

原创 【多线程】多线程的项目实战

文章目录1.为什么用多线程2.什么时候用多线程3.多线程编码项目实战4. 为什么不用join()  需求是这样的:最近在做一个有关学校考试的项目,其中老师可能任课好几门学科,每个学科有好几个班上,考完试后,老师想打印学生答题试卷(因为是上机考试),即涉及到了批量打印试卷,并且下载时将这些试卷打成一个压缩包,此功能用到了多线程1.为什么用多线程  充分利用cpu资源2.什么时候用多线程高...

2019-05-28 17:28:09 10165 5

原创 【多线程】线程池

线程线程是什么一条代码的执行流,完成一组代码,通常将这一组代码称为一个任务线程的本质将代码送给cpu执行用多线程的目的充分利用cpu资源,并发做多件事单核cpu机器上适不适用多线程适用,如果是单线程,线程中等待IO时,此时cpu就空闲了线程什么时候让出cpu阻塞,wait,awit,等待I/Osleepyield线程结束cpu在多线程中的作用执行代码线程是不是越...

2019-05-28 10:25:50 215 2

原创 【RabbitMQ】MQ主流消息中间件对比

文章目录ActivitiMQkafkaRocketMQRabbitMQ首先衡量MQ标准的指标:服务性能、可靠性、数据存储、集群架构ActivitiMQ  概念: 是Apache流行的开源消息总线,支持JMS规范  优点: API丰富;集群架构模式多种  缺点: 在如今的高并发,大数据处理的场景下显得力不从心,经常会出现一些小问题,消息延迟,堆积,堵塞等  适用情况: 小型企业  ...

2019-05-26 21:31:06 421 1

空空如也

空空如也

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

TA关注的人

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