自定义博客皮肤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)
  • 收藏
  • 关注

原创 4、mysql索引优化二:SQL优化实践

1、索引设计原则以Innodb为例,在了解了索引组成之后,我们知道,一个索引mysql都会以一颗B+树来表示,索引建的越多,B+树也就越多,那么mysql维护成本就越高(比如表中数据增删改,都会涉及到每个索引树的变更,甚至是树的重平衡以及page页分裂等这样的重量级变更),占用磁盘空间也就越大,有时反而会影响SQL执行性能。所以我们在设计索引时,不能一味地增加索引,索引并不是越多越好,而是应该根据自己的项目业务情况来合理地设计索引,尽量以联合索引代替多个单值索引,这样可以减少索引的数量,降低索引的维护成本

2022-01-15 18:00:39 551 1

原创 3、mysql索引优化一:Explain关键字分析

作为一个Java开发,在我们日常工作中,对于mysql的使用中涉及最多的恐怕就是写SQL了,一定遇到过sql执行慢的问题,那么SQL优化工作就显得格外重要。有了对mysql执行过程以及索引实现原理了解的基础,如果不熟悉可以参考之前两篇博客:《mysql架构组成》、《mysql索引实现原理》,接下来我会就日常工作中一些常见的SQL使用场景进行优化分析讲解,不过在讲解之前,需要先熟悉Explain关键字的使用,Explain是mysql为我们提供的一个非常重要的SQL分析工具:Explain关键字,借助它我们能

2022-01-15 17:52:18 987

原创 2、mysql索引实现原理

说到索引,想必大家都不陌生,引用百度百科对索引的定义:在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。从这个定义中我们可以知道3个信息:索引是一种数据结构;索引是有序的数据结构;索引可以提高数据检索效率。本文主要就这3点来进行展开介绍。一、索引是一种数据结构计算机专业的同学都学过数据结构这门课,适合来实现索引的常见的数据结构无非就那么几种:有序列表(sorted list)

2021-11-21 18:19:35 1304

原创 1、mysql架构组成

mysql想必大家都不陌生,是当前最流行的一款关系型数据库产品之一,与其它数据库相比更加灵活,能够适应更多的应用场景。举个例子,存储引擎是mysql最特别的特性,它提供了多种存储引擎可供我们选择,同时它的存储引擎架构将查询处理、数据存储/提取以及其它系统任务相分离,接下来让我们一起进入mysql的世界探索吧。mysql架构上图摘自《高性能mysql第三版》一书,可以看出,mysql的组成总体分为两层:server层和存储引擎层,而server层又可以细分为多个组件:连接处理、查询缓存、分析器、解析

2021-11-12 16:58:04 2930

原创 Druid连接池核心原理

一、什么是Druid连接池?Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。竞品对比从上表可以看出,Druid连接池号称是业界最优秀的连接池,在性能、监控、诊断、安全、扩展性这些方面远远超出竞品。说明:ExceptionSorter:官方的说明这是Druid连接池稳定性的保证,用于处理重大的不可恢复的异常,它是一个接口,不同的数据库有不同的实现类,mysql的处理

2021-08-29 18:53:07 18066 7

原创 浅谈Raft协议

What is Raft?Raft is a consensus algorithm that is designed to be easy to understand. It’s equivalent to Paxos in fault-tolerance and performance. The difference is that it’s decomposed into relatively independent subproblems, and it cleanly addresses al.

2021-07-07 18:22:54 853 2

原创 6、Nacos服务注册——PushService类功能

如果您对Nacos工作流程和原理还不是很清楚的话,建议从前面的文章开始看:1、nacos功能简介2、Nacos服务注册-客户端自动注册流程3、Nacos服务注册-客户端(nacos-client)逻辑4、Nacos服务注册-服务端(nacos-naming)逻辑5、Nacos心跳机制与健康检查  前言PushService类挺复杂的,我觉得很有必要先整体说下PushService类的功能,这将有助于理解后面将要讲得内容。如果你是从前面的文章一篇一篇看下来的话,那么你应该很清楚我们是如何进入

2021-06-06 19:03:05 2347 1

原创 5、Nacos心跳机制与健康检查

如果您对Nacos工作流程和原理还不是很清楚的话,建议从前面的文章开始看:1、nacos功能简介2、Nacos服务注册-客户端自动注册流程3、Nacos服务注册-客户端(nacos-client)逻辑4、Nacos服务注册-服务端(nacos-naming)逻辑  nacos心跳机制与健康检查流程图:  一、心跳1、客户端心跳在《Nacos服务注册-客户端(nacos-client)逻辑》这篇中已经提到过一次了,这里再作一些说明。在NacosNamingService.register

2021-06-06 18:41:49 8952 23

原创 4、Nacos服务注册-服务端流程(AP模式)

如果您对Nacos工作流程和原理还不是很清楚的话,建议从前面的文章开始看:1、nacos功能简介2、Nacos服务注册-客户端自动注册流程3、Nacos服务注册-客户端(nacos-client)逻辑  前面介绍了Nacos服务注册流程中客户端部分的处理流程和原理,那么客户端将注册请求通过HTTP发给服务端之后,服务端会怎么处理呢?服务端是如何存储客户端注册过来的实例数据的?服务端接受到客户端心跳又是如何处理的?等等……这些问题将会在这篇文章里得到解答。1、服务注册在上篇中说到,NamingP

2021-06-06 18:23:57 1963 1

原创 3、Nacos服务注册-客户端流程

  如果您对Nacos工作流程和原理还不是很清楚的话,建议从前面的文章开始看:  1、nacos功能简介  2、Nacos服务注册-客户端自动注册流程  一、主流程  上篇讲到了com.alibaba.cloud.nacos.registry.NacosServiceRegistry#register方法,现在就以这个方法开始,看下这个方法代码:@Overridepublic void register(Registration registration) { if (StringUt

2021-06-01 23:25:52 2199

原创 2、Nacos客户端自动服务注册流程

  Nacos注册中心支持AP和CP两种模式,其中AP模式是最常用的,服务注册到nacos-server后,nacos-server是将服务实例数据保存在内存中,这种方式的缺点就是没有进行持久化,nacos-server重启之后服务实例数据就会丢失,需要重新注册,因此这种模式下的所有的nacos-client对于服务端来说都是临时节点,那么与之相对应的就是持久节点,即CP模式,这种模式不仅仅会将客户端的实例数据保存在内存中,同时还会持久化到磁盘文件中,即使nacos-server服务重启,实例数据也不会丢失

2021-06-01 22:42:36 3813

原创 1、nacos功能简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。  以上这段介绍引用自nacos官方文档,说的比较官方,术语比较专业,通俗一点说,其实nacos有两大最为核心的功能:注册中心与配置中心,下面就先从nacos主要功能点出发对nacos进行展开介绍.

2021-06-01 18:17:37 20620

原创 JVM执行引擎——解释器和即时编译器

什么是JVM执行引擎?执行引擎是Java虚拟机四大组成部分中另一个核心组成(另外三个分别是类加载器子系统、运行时数据区、垃圾回收器),Java虚拟机的执行引擎主要是用来执行Java字节码。JVM的执行引擎执行字节码通过两种解释器执行的:字节码解释器与模板解释器,运行过程中,可能会触发即时编译(JIT),涉及到几种即时编译器,下面分别进行介绍。字节码解释器字节码解释器是解释执行的,所谓解释执行,就是将Java字节码转成C++代码,再将C++代码编译成本地代码(硬编码),之所以会转成C++代码.

2020-09-18 00:15:49 2286

原创 JVM类加载器解惑——loadClass(name)和findClass方法

在上文《JVM类加载机制详解——类加载器》详细讲解了类加载器ClassLOader,但是遗留了一个问题:loadClass(name)和findClass(name)方法如何去理解,其实我一开始学习类加载器的时候一直有一个疑问:如果我自定义类加载器,到底是重新哪个方法?为什么?相信大家应该也有过这个疑惑或者正在为此疑惑着,那么就随我一起来探索吧。说到这两个方法,就不得不说双亲委派(关于双亲委派的介绍可以参见我上篇,这里不再赘述),先看下下面这段描述:双亲委派模型的第一次“被破坏”其实发生在双亲委派

2020-09-08 01:30:45 4632 4

原创 JVM类加载机制详解——类加载器

一、什么是类加载器?在上篇JVM类加载机制详解——类加载过程,介绍了类的加载过程,在类的加载过程中的第一个阶段是“加载”(Loading)阶段,“加载”的一个很重要的前提便是通过一个类的全限定名来获取该类的字节码,而这个获取类字节码的动作就是类加载器所要干的事。二、类加载器种类Java虚拟机中有3种类加载器,它们分别是启动类加载器(Bootstrap Class Loader)、扩展类加载器(Extension Class Loader)和应用类加载器(Application Class .

2020-09-06 19:52:05 689 1

原创 JVM类加载机制详解——类加载过程

代码编译的结果从本地机器码转变为字节码, 是存储格式发展的一小步, 却是编程语言发展的一大步----《深入理解Java虚拟机:JVM高级特性与最佳实践》一、知识铺垫        Java虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验、 转换解析和初始化, 最终形成可以被虚拟机直接使用的Java类型, 这个过程被称作虚拟机的类加载机制。Class文件被加载到内存中是如何存储的?就要涉及到JVM的K.

2020-08-31 01:26:49 1740 2

原创 java中的字符串,你真的懂吗?

作为一个程序猿,我们每天都在使用字符串,可是以前从来没想过去深究它,相信很多人只是会用String,可并不真正了解它,今天我们就来深扒一下字符串在JVM中的秘密吧。在介绍字符串之前,需要首先简单了解一下JVM的Oop-Klass模型。一、Oop-Klass模型1、Klass模型描述的是java类在jvm的存储形式,从Klass模型的角度将java中的类分类数组类型和非数组类型,非数组类型的原信息在jvm中用instanceKlass类表示,数组类型用ArrayKlass类表示,如下图:Inst

2020-08-28 22:40:54 451

空空如也

空空如也

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

TA关注的人

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