自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 远程调用 Dubbo 与 Feign 的区别

一、相同点Dubbo 与 Feign 都依赖注册中心、负载均衡。二、区别1、协议Dubbo:支持多传输协议(Dubbo、Rmi、http、redis等等),可以根据业务场景选择最佳的方式。非常灵活。默认的Dubbo协议:利用Netty,TCP传输,单一、异步、长连接,适合数据量小、高并发和服务提供者远远少于消费者的场景。Feign:基于Http传输协议,短连接,不适合高并发的访问。2、负载均衡Dubbo:支持4种算法(随机、轮询、活跃度、Hash一致性),而且算法里面引入权重的概

2020-09-23 22:02:21 34179 15

原创 平衡树和二叉树的区别

一、平衡二叉树(AVL树)1、概念AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树树高不超过1,和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差不超过1)。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转非常耗时的,由此我们可以知道AVL树适合用于插入与删除次数比较少,但查找多的情况。2、局限性由于维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地

2020-09-25 22:23:33 3685

原创 eureka、nacos、consul的区别

1、配置中心配置中心eureka不支持nacos支持 用起来简单,符合springBoot的命名风格,支持动态刷新consul支持 但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新2、注册中心eurekanacosconsul应用内/外直接集成到应用中,依赖于应用自身完成服务的注册与发现属于外部应用,侵入性小属于外部应用,侵入性小ACP原则遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快

2020-09-22 23:27:07 4342

原创 请说说你对线程安全的理解

其实博主之前面试也有被问到这个问题,当时我用自己的语言组织回答的,我觉得当时回答的不够严谨。现在我查阅了相关资料做了以下的总结。《深入理解Java虚拟机》第二版 周志明著 Page386页有相关定义。周志明也是引用的别人的定义,我这里贴出来。笔者认为《Java Concurrency In Partice》的作者 Brian Goetz 对 “线程安全” 有一个比较恰当的定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他

2020-09-19 20:36:17 1834

原创 HashMap存1000条数据,构造时传多少才能让HashMap不需要动态扩容?

一、HashMap 的初始化关于HashMap 的初始化,可以参考我们上一篇说过:JDK8中的HashMap初始化和扩容机制二、HashMap 的 table 初始化这个问题也可以这样问,HashMap存1000条数据,构造时传1000会不会让HashMap动态扩容?回到 HashMap 的构造方法,threshold 为扩容的阈值,在构造方法中由 tableSizeFor() 方法调整后直接赋值,所以在构造 HashMap 时,如果传递 1000,threshold 调整后的值确实是 1024,但

2020-09-19 17:53:13 3806

原创 JDK8中的HashMap初始化和扩容机制

一、HashMap初始化方法HashMap() 不带参数,默认初始化大小为16,加载因子为0.75;HashMap(int initialCapacity) 指定初始化大小;HashMap(int initialCapacity, float loadFactor) 指定初始化大小和加载因子大小;HashMap(Map<? extends K,? extends V> m) 用现有的一个map来构造HashMap。二、分析初始化过程1、初始化代码测试用例Map<Str

2020-09-19 14:03:36 2075 3

原创 我的架构梦:(五十一) MySQL存储与优化之MySQL集群架构

MySQL存储与优化之MySQL集群架构一、集群架构设计二、主从模式三、 双主模式四、分库分表一、集群架构设计1、架构设计理念在集群架构设计时,主要遵从下面三个维度:可用性扩展性一致性2、可用性设计站点高可用,冗余站点服务高可用,冗余服务数据高可用,冗余数据保证高可用的方法是冗余。但是数据冗余带来的问题是数据一致性问题。实现高可用的方案有以下几种架构模式:主从模式简单灵活,能满足多种需求。比较主流的用法,但是写操作高可用需要自行处理。双主模式互为主从,有双主双写、双

2020-09-17 23:37:51 1005 2

原创 SpringBoot 配置文件位置的加载顺序

SpringBoot配置文件可以使用yml格式和properties格式分别的默认命名为:application.yml、application.properties 官网都是以yml作为参考,层级结构更清晰的一种配置文件。–file:./config/–file:./–classpath:/config/–classpath:/SpringBoot配置文件默认可以放到以下目录中,下面四种可以自动读取到:1、项目根目录下2、项目根目录中config目录下3、项目的resources目录

2020-09-16 21:29:14 7397 1

原创 我的架构梦:(五十) MySQL存储与优化之MySQL事务和锁

MySQL存储与优化之MySQL事务和锁一、ACID 特性二、事务控制的演进三、 事务隔离级别四、锁机制和实战五、死锁与解决方案一、ACID 特性在关系型数据库管理系统中,一个逻辑工作单元要成为事务,必须满足这 4 个特性,即所谓的 ACID原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。1、原子性原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。修改---》Buffer Pool修改---》

2020-09-16 00:58:31 441

原创 我的架构梦:(四十九) MySQL存储与优化之MySQL索引原理

一、索引类型索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引从应用层次划分:普通索引、唯一索引、主键索引、复合索引从索引键值类型划分:主键索引、辅助索引(二级索引)从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)1、普通索引这是最基本的索引类型,基于普通字段建立的索引,没有任何限制。创建普通索引的方法如下:CREA

2020-09-15 00:35:17 422

原创 String s = new String()分析各个场景创建了几个堆和栈

场景1:String str1 = “abc”;System.out.println(str1 == “abc”);步骤:栈中开辟一块空间存放引用str1String池中开辟一块空间,存放String常量”abc”引用str1指向池中String常量”abc”str1所指代的地址即常量”abc”所在地址,输出为true场景2:String str2 = new String(“abc”);System.out.println(str2 == “abc”);步骤:栈中开辟一块

2020-09-13 17:06:02 959

原创 我的架构梦:(四十八) MySQL存储与优化之MySQL架构原理

一、MySQL体系架构MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。1、网络连接层客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。2、服务层(MySQL Server)服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六

2020-09-13 16:16:02 550

原创 Redis多集群客户端

一、pom依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>如果不加这个依赖,配置类会出现下面的问题。二、mult

2020-09-09 21:33:44 828

原创 Scala多线程初始化redis集群

话不多说,上代码:def multiThreadInitialization(): Unit = { var coreSize = Runtime.getRuntime.availableProcessors() + 1; var threadPool:ExecutorService = Executors.newFixedThreadPool(coreSize); // 这里为了处理JedisConnector初始化时间过长问题 val jedisCluster = JedisUtils

2020-09-08 22:34:37 495

原创 源码解读之(八)ConcurrentLinkedQueue

源码解读之(八)ConcurrentLinkedQueue一、前言二、ConcurrentLinkedQueue介绍与结构三、offer操作四、poll操作五、peek操作六、size操作七、remove操作八、ConcurrentLinkedQueue遇到的问题九、总结一、前言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方

2020-09-08 22:25:17 443

原创 我的架构梦:(四十七) 第二代 Spring Cloud核心组件之Nacos+Sentinel+Dubbo三剑合璧

第二代 Spring Cloud核心组件之Nacos+Sentinel+Dubbo三剑合璧一、前言二、服务提供者工程改造三、 服务消费者工程改造一、前言改造自动投递微服务和简历微服务,删除OpenFeign 和 Ribbon,使用Dubbo RPC 和 Dubbo LB首先,需要删除或者注释掉父工程中的热部署依赖。<!--热部署--><!--Nacos+Sentinel+Dubbo整合需要去掉devtools--><!--<dependency>

2020-09-01 23:04:33 920

原创 我的架构梦:(四十六) 第二代 Spring Cloud核心组件之SCA Sentinel分布式系统的流量防卫兵

第二代 Spring Cloud核心组件之SCA Sentinel分布式系统的流量防卫兵一、Sentinel 介绍二、Sentinel 部署三、服务改造四、Sentinel 关键概念五、Sentinel 流量规则模块六、Sentinel 降级规则模块七、Sentinel 自定义兜底逻辑八、基于 Nacos 实现 Sentinel 规则持久化一、Sentinel 介绍Sentinel是一个面向云原生微服务的流量控制、熔断降级组件。替代Hystrix,针对问题:服务雪崩、服务降级、服务熔断、服务限流Hy

2020-09-01 01:32:54 359

空空如也

空空如也

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

TA关注的人

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