黎杜

其他

Mysql完结汇总篇(18W字送给大家),完结撒花

hello大家好,我是黎杜,上一篇写了关于Mysql的日志篇,有兴趣的可以看一看,距离上一次的写完了JVM的调优所有部分:如何啃下JVM这座大山,完结撒花(完结篇),这些词也写完了关于Mysql的所有内容。我根据自己的思维导图汇总了一下所有的Mysql的篇,基本都已经覆盖了,并且基本的内容都有相关的文章覆盖:所以这一篇做一下汇总,便于大家学习,基本都是上面按照上面的思维导图来学习,需要上面的思维导图的可以添加我微信:abc730500468来获取。首先,个人推荐学习的Mysql的书籍如下:我们比较熟悉的就是《Mysql
2021年8月17日
其他

Mysql的日志那些事

hello大家好,我是黎杜,上一篇给大家带来了Mysql的join原理篇这一篇来聊一聊Mysql的日志篇。Mysql中日志还是挺多的,主要包含以下几个常用的日志:binlog:归档日志,
2021年8月15日
其他

Mysql中join的那些事

Join,下面我们就来深入的了解这三种算法的原理、区别、效率。首先,为了测试先准备两个表作为测试表,并且使用存储过程初始化一些测试数据,初始化的表结构sql如下所示:CREATE
2021年8月11日
其他

十万个为什么,精通Mysql索引

大家好,我是黎杜,这一期又带来Mysql的索引篇,上一期我们从大的方向聊了学习Mysql的个人经验,有兴趣的可以看一看:学习Mysql的亿点点意见以后可以大胆的在工作中写技术文章了,嘻嘻嘻,当然是在工作中接口开发完的前提下,不过以我的开发速度,开发接口不就是轻而易举的事。为啥我能在工作的时间写技术文呢?请看下图:因为写博客也是kpi之一,小伙伴们会问真有那么爽,还真有,因为内部为了共同学习和分享,都会把要求RD写博客作为kpi之一,然后好的文章就会分享到内部团队,共同学习,所以即使在上班写博客被领导看见,也可光明正大的。好了,话不多说,我们直接进入今天的正题,首先来聊一聊什么是索引。索引概念概念:索引是提高mysql查询效率的数据结构。总的一句话概括就是索引是一种提高查询效率的数据结构。数据库查询是数据库的最主要功能之一。设计者们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear
2021年8月6日
其他

怎么学好Mysql?学什么?怎么学?聊一聊个人的亿点意见

概述哈喽,大家好,我是黎杜,这一期我又来分享自己的干货了,后面的文章的连载主要都是关于Mysql的方面,也是一步一步的由浅到深去学习Mysql,从理论到实战。上面的思维导图是我总结好几天的Mysql的技术点,有理论也有自己经历的调优的一些实战场景,基本在工作中用到的技术点上面的思维导图都有提及。首先,这篇算是开篇,先从总体来看Mysql技术点的全貌,分享个人学习Mysql的经验,也会有一些自己涉及到的场景,具体详细的技术点,后面会一点一点的输出。Mysql安装首先是安装Mysql,对于Mysql的安装,这里不做过多的详解,可以参考这一篇文章:Mysql
2021年8月2日
其他

Mysql前奏!!!先来个2万字的基础总结

最大有效长度是65532字节,因为在varchar存字符串时,第一个字节是空的,不存在任何数据,然后还需两个字节来存放字符串的长度,所以有效长度是64432-1-2=65532字节。
2021年7月28日
其他

如何啃下JVM这座大山,完结撒花(完结篇)

前言小伙伴们大家好,我是黎杜,这是关于JVM的第六篇文章,前面写了五篇关于JVM的文章,都是一层一层带着大家来深入的认识JVM,关于JVM的基本用到的知识都讲解过了。那么这一篇文章将作为JVM的最后一篇,有总结,也有补充还没有提及到的知识点。首先,关于JVM的开门篇,关于如何阅读深入JVM虚拟机第三版的文章:如何三天啃下《深入JVM虚拟机第三版》,主要是分享个人阅读这本神书的经验,在文章里面划重点,吸收到我们自己所需要的知识点。然后,是很久之前写的第二篇关于JVM的运行时数据区以及GC的算法篇:还在学JVM?我都帮你总结好了(附脑图)。这篇是是作为理论的重点部分,因为这片关于JVM的运行时数据区的各个部分是干嘛的,以及重点JVM堆的分代理论和GC的基本回收算法,都是为后面的Java堆的调优实战做铺垫。然后是第三篇也是调优的重中之重,主要聊的就是GC:你是不是垃圾,心里没点数吗?,如何判断一个对象是否存活、以及常见的GC的种类,常见GC年轻代和老年代的搭配,各种GC的原理和特点、以及适用的场景,在文章中都有提及到。有了第二篇运行时数据区和第三篇GC的理论基础后,然后第四篇的JVM调优实战篇一:JVM调优实战篇一,这一篇主要是围绕着JVM调优实战讲解的工具篇,包括线上的Arthas工具、GUI工具(Visual
2021年7月25日
其他

JVM性能调优实战篇(二)

小伙伴们大家好,这是JVM调优实战的第二篇系列文章,上一篇的文章讲解了JVM调优的工具类,没有看的小伙伴可以看一下。这一篇主要是案例讲解,主要讲解的案例:内存不足的排查、CPU飙高的排查、OOM异常的排查、栈溢出排查、死锁的排查。其实上面的主要是问题的排查,只能算是问题解决的一方面,另外还会基于以前讲解GC篇的文章,对于各个使用场景的GC的选择,以及使用的JVM参数,常用的JVM参数调优的讲解等。所以还是来一个思维导图,便于大家对于这篇文章有一个总体的认识,我想着一篇也至少有一万以上的字才能解决:思维导图右边是上一篇已经讲过的了,左边是这一篇要讲解的,好了废话不多说,直接开始我们的正题。磁盘不足排查其实,磁盘不足排查算是系统、程序层面的问题排查,并不算是JVM,但是另一方面考虑过来就是,系统磁盘的不足,也会导致JVM的运行异常,所以也把内存不足算进来了。并且排查磁盘不足,是比较简单,就是几个命令,然后就是逐层的排查,首先第一个命令就是df
2021年7月21日
其他

JVM性能调优实战篇(一)

关于JVM的的第三篇文章来了,这一篇是JVM的调优实战篇,上一篇是调优实战的基础理论篇,主要是关于GC方面的,因为对于JVM的调优基本就是Java堆了,所以涉及到的区域几乎与GC是脱不了关系的。这一篇主要的内容如下,包括常用的调优工具本地的和线上的,并且有案例结合使用来讲解,然后就是一些常见的实战场景,这个也是几乎大厂面试官会问的,大家面试的时候也可以直接拿来当案例:调优工具好了,首先我们来了解我们常用的调优工具吧,我这里推荐的GUI工具是:VisualVM,我不知道大家用的是哪一款。VisualVMVisualVM是jdk自带的调优工具,在安装的路径下jdk1.8.0_40\bin就可以看到jvisualvm工具了:直接双击它就可以使用了,双击后打开的界面如下:在打开的界面中,左边分为本地和远程,只要你本地有java进程启动,他就会自动检测到,比如
2021年7月19日
其他

你是不是垃圾,心里没点数吗?

垃圾回收的时间),因为PS+PO的搭配是追求吞吐量的垃圾回收器。因此PS+PO的组合比较适用于后台快速完成计算任务,不需要太多的与用户交互的场景。与PS+PO有关的JVM参数如下所示:-XX:
2021年7月15日
其他

三天刷完《深入JVM虚拟机 第三版》是什么感觉

好久没有写过原创了,这篇是2021的第一篇原创,最近也比较忙,项目上线,需求有非常的赶,经历了一次C端、pc端、B端三端从需求到上线不到一个月的时间,现在c端也在试运营的期间,项目上线后就稍微没那么忙,bug比较少就会轻松一点,所以又开始自己的原创之路了。今天分享一个最近刷完的一本书《深入JVM虚拟机
2021年7月11日
其他

通俗讲解分布式锁,看完不懂算作者输

(给数据分析与开发加星标,提升数据技能)来源:贾俊江www.cnblogs.com/JJJ1990/p/10496850.html首先,分布式锁和我们平常讲到的锁原理基本一样,目的就是确保在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。在一个进程中,也就是一个jvm或者说应用中,我们很容易去处理控制,在jdk
2021年3月22日
其他

MySQL 海量数据优化(理论+实战) 吊打面试官

一、准备表数据咱们建一张用户表,表中的字段有用户ID、用户名、地址、记录创建时间,如图所示OK,接下来准备写一个存储过程插入一百万条数据CREATE
2021年3月1日
自由知乎 自由微博
其他

史上最全的数据库面试题,不看绝对后悔!

一、基本概念1.主键、外键、超键、候选键超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。候选键:是最小超键,即没有冗余元素的超键。主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。外键:在一个表中存在的另一个表的主键称此表的外键。2.为什么用自增列作为主键如果我们定义了主键(PRIMARY
2021年2月23日
其他

面试官:如何保障消息100%投递成功、消息幂等性?

来源:kil57.cn/TcIUf一、前言[金三银四,如何涨薪看这里]我们小伙伴应该都听说够消息中间件MQ,如:RabbitMQ,RocketMQ,Kafka等。引入中间件的好处可以起到抗高并发,削峰,业务解耦的作用。如上图:(1)订单服务投递消息给MQ中间件
2021年2月20日
其他

如何完成一次快速的查询?

Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。OLAP是数据仓库系统的主要应用,支持复杂分析,侧重决策支持,提供直观易懂的查询结果。面向列的适合做
2021年2月7日
其他

SQL优化最干货总结-MySQL(2020最新版)

语句优化四、查询条件优化五、建表优化有朋友疑问到,SQL优化真的有这么重要么?如下图所示,SQL优化在提升系统性能中是:(成本最低
2020年12月21日
其他

宝贝睡了吗?这1W字详解的 InnoDB 原理送给你!

到磁盘的频率,为0表示禁止MySQL同步binlog到磁盘,binlog刷到磁盘的频率由操作系统决定,性能最好但是最不安全。为1表示每次事务提交前同步到磁盘,性能最差但是最安全。MySQL文档推荐是
2020年12月15日
其他

常见的SQL 错误用法,避免采坑!!!

前言MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。常见SQL错误用法1.
2020年11月29日
其他

不懂分布式事务,别说你懂微服务!

点击蓝色“黎杜编程”关注我哟加个“星标”,每天干货推送!本人最近学习了一下微服务下数据一致性的特点,总结了下目前的保障微服务下数据一致性的几种实现方式如下,以备后查。此篇文章旨在给大家一个基于微服务的数据一致性实现的大概介绍,并未深入展开,具体的实现方式本人也在继续学习中,如有错误,欢迎大家拍砖。1.
2020年11月17日
其他

深入理解:一文讲透RabbitMQ

09:25,干货推送!关于RabbitMQ出身:诞生于金融行业的消息队列语言:Erlang协议:AMQP(Advanced
2020年11月13日
其他

精心为你准备的最全的20道Mysql面试题。

create_time),因为文章中的内容content会比较长,放在tbl_articles中会严重影响表的查询速度,所以将内容放到tbl_articles_detail(article_id,
2020年11月4日
其他

万字好文,电商秒杀系统架构分析与实战!

:使用JavaScript脚本控制,在秒杀商品静态页面中加入一个JavaScript文件引用,该JavaScript文件中包含秒杀开始标志为否;当秒杀开始的时候生成一个新的JavaScript文件(
2020年11月3日
其他

面试官:你知道select语句和update语句分别是怎么执行的吗?

最近有粉丝面试互联网公司被问到:你知道select语句和update语句分别是怎么执行的吗?,要我写一篇这两者执行SQL语句的区别,这不就来了。总的来说,select和update执行的逻辑大体一样,但是具体的实现还是有区别的。当然深入了解select和update的具体区别并不是只为了面试,当希望Mysql能够高效的执行的时候,最好的办法就是清楚的了解Mysql是如何执行查询的,只有更加全面的了解SQL执行的每一个过程,才能更好的进行SQl的优化。select语句当执行一条查询的SQl的时候大概发生了以下的步骤:客户端发送查询语句给服务器。服务器首先进行用户名和密码的验证以及权限的校验。然后会检查缓存中是否存在该查询,若存在,返回缓存中存在的结果。若是不存在就进行下一步。接着进行语法和词法的分析,对SQl的解析、语法检测和预处理,再由优化器生成对应的执行计划。Mysql的执行器根据优化器生成的执行计划执行,调用存储引擎的接口进行查询。服务器将查询的结果返回客户端。执行的流程Mysql中语句的执行都是都是分层执行,每一层执行的任务都不同,直到最后拿到结果返回,主要分为Service层和引擎层,在Service层中包含:连接器、分析器、优化器、执行器。引擎层以插件的形式可以兼容各种不同的存储引擎。Mysql的执行的流程图如下图所示:这里以一个实例进行说明Mysql的的执行过程,新建一个User表,如下://
2020年10月31日
其他

带你彻底掌握 MyBatis缓存工作原理

作者:双子孤狼blog.csdn.net/zwx900102/article/details/108696005前言在计算机的世界中,缓存无处不在,操作系统有操作系统的缓存,数据库也会有数据库的缓存,各种中间件如Redis也是用来充当缓存的作用,编程语言中又可以利用内存来作为缓存。自然的,作为一款优秀的ORM框架,MyBatis中又岂能少得了缓存,那么本文的目的就是带领大家一起探究一下MyBatis的缓存是如何实现的。给我五分钟,带你彻底掌握MyBatis的缓存工作原理为什么要缓存在计算机的世界中,CPU的处理速度可谓是一马当先,远远甩开了其他操作,尤其是I/O操作,除了那种CPU密集型的系统,其余大部分的业务系统性能瓶颈最后或多或少都会出现在I/O操作上,所以为了减少磁盘的I/O次数,那么缓存是必不可少的,通过缓存的使用我们可以大大减少I/O操作次数,从而在一定程度上弥补了I/O操作和CPU处理速度之间的鸿沟。而在我们ORM框架中引入缓存的目的就是为了减少读取数据库的次数,从而提升查询的效率。MyBatis缓存MyBatis中的缓存相关类都在cache包下面,而且定义了一个顶级接口Cache,默认只有一个实现类PerpetualCache,PerpetualCache中是内部维护了一个HashMap来实现缓存。在这里插入图片描述下图就是MyBatis中缓存相关类:在这里插入图片描述需要注意的是decorators包下面的所有类也实现了Cache接口,那么为什么我还是要说Cache只有一个实现类呢?其实看名字就知道了,这个包里面全部是装饰器,也就是说这其实是装饰器模式的一种实现。我们随意打开一个装饰器:在这里插入图片描述可以看到,最终都是调用了delegate来实现,只是将部分功能做了增强,其本身都需要依赖Cache的唯一实现类PerpetualCache(因为装饰器内需要传入Cache对象,故而只能传入PerpetualCache对象,因为接口是无法直接new出来传进去的)。在MyBatis中存在两种缓存,即一级缓存和二级缓存。一级缓存
2020年10月30日
其他

【面经】深入Spring Cloud架构组成

我们先认识一下SpringCloud的各个组件,然后知其所以然。原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下:创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”扣减相应的商品库存通知仓储中心,进行发货给用户的这次购物增加相应的积分如上,微服务的应用场景和核心竞争力:降低耦合:每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。容错机制:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。灵活扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。Dubbo对标Spring
2020年10月27日
其他

万字带你入门 Netty !高手勿入!!!

首先声明,本文是为Netty新手准备的,所以事无巨细的会把步骤列出来,老手们就不用在我这篇文章上浪费时间了,要不然你会嫌我墨迹的。一、前言Netty是一个开源的异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty的创始人是韩国人trustin
2020年10月20日
其他

SpringMVC+Spring+Mybatis支付宝支付功能实战(图文详解)

页面跳转同步通知页面的路径(return_url)http://localhost:8080/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp4.
2020年10月19日
其他

【简历加分】hexo框架搭建个人博客站点,手把手教学。

themes/volantis它表示把主题源码下载到themes主题文件夹下的volantis文件夹下。下载完后,要修改MyBlog目录下的配置文件_config.yml中的下面字段的配置:
2020年10月15日
其他

图解MyBatis的SQL执行流程(干货)

作者:双子孤狼-blog.csdn.net/zwx900102/article/details/108455514前言MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下:1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置处理器typeHandler4、自定义MyBatis中结果集处理器typeHandlerPS:本文基于MyBatis3.5.5版本源码概要在MyBatis中,利用编程式进行数据查询,主要就是下面几行代码:SqlSession
2020年10月14日
其他

牛逼,手撸一个SpringBoot缓存系统!

来源:cnblogs.com/jeffwongishandsome缓存是最直接有效提升系统性能的手段之一。个人认为用好用对缓存是优秀程序员的必备基本素质。本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统。一、通用缓存接口1、缓存基础算法FIFO(First
2020年10月12日
其他

3W 字的Spring Boot超详细总结(硬核干货)

核心库的一部分,是由BootstrapClassLoader加载的;SPI实现的Java类一般是由AppClassLoader来加载的。BootstrapClassLoader是无法找到
2020年10月11日
其他

文末送书 |(三)深入浅出图解Git,入门到精通(保姆级教程)

这一篇我们继续图解Git,上两篇原创图解了Git的基本操作,有兴趣的可以看一看[(一)深入浅出图解Git,入门到精通(保姆级教程)]和[(二)深入浅出图解Git,入门到精通(保姆级教程)]。这一篇写完基本Git的操作就图解完了,如果想深入了解Git,这里可以推荐一些Git的硬核书籍:【精通Git】、【GitHub入门与实践】、【Git权威指南】、【Git版本控制管理】、【GitHub实践】。这些都是一些关于Git的比较好的书籍,有兴趣的可以可看一看,网上也有很多电子书。闲话不多说,下面就开始我们的正题。日志Git查看日志前面有提到过可以通过git
2020年10月8日
其他

(二)深入浅出图解Git,入门到精通(保姆级教程)

上一篇原创写了图解Git的第一篇,个人感觉还是可以,比较基础的那种,有兴趣的可以看一看[],这一篇我们继续图解Git,上一篇基本就是基础,这一篇算是进阶。分支管理Git中比较最重要的一点就是分支的概念,有了分支就有了合并和衍合的操作,「合并」和「衍合」能够「有效的对代码版本的管理」。Git的初始化中有一条默认的主分支叫做master,每一次的提交都会串成一条时间线,这就是一条分支,当前分支由HEAD指针指向:当每次发生代码提交的时候,当前指向就会向前形成一个新的版本,假如再创建一个新的分支bran,并且当前的提交指向新的分支,这样新的分支随着时间的推移就会形成许多版本:当新分支开发完后,提交仓库,并合并到主干master,最后删除bran分支,这样就完成了一次个人的开发:所以,假如主分支上只建立一条分支的话,分支的合并是非常快速的,只需要移动master分支到当前提交,然后将HEAD指针指向master,最后删除bran分支就完成了。但是,事实上并不是这样的,在一个多人协作的开发团队中,往往每个人都会建立自己的分支,有自己的提交,最后合并到主干,当自己提交的时候,远程仓库代码就会存在自己本地仓库并未有的代码,这样就会导致push失败。例如:程序员Tom和Jerry同时迁出代码,他们的初始代码分支都如下图所示:当Tom开发自己的业务模块,提交代码并且合并到主干后,远程主干分支如下图所示:「远程仓库master已经不再指向gs234,而是新生成了一个版本dfd453,作为当前指向的版本」。与此同时,Jerry的本地也同时开发完自己的模块后,分支如下图所示:在Jerry的本地环境中,他的「本地仓库master还是指向gs234」,Jerry在自己新建立的一个分支bran中进行开发,开发完后合并分支,最后master就会指向ed489。当Jerry再次提交代码,Git就会检查远程仓库与Jerry的本地仓库,进行对比后,发现远程仓库存在Jerry的本地仓库不存在的代码,就需要Jerry将远程仓库执行git
2020年10月2日
其他

(一)深入浅出图解Git,入门到精通(保姆级教程)

这四个区域实现的原理图所下所示,使用过Git的对于下面的命令再熟悉不过了。从原理图中可以看出代码可以在不同的level之间转移,也可以跨level之间转移,所有的这些动作都是通过Git的命令去实现。
2020年9月26日
其他

超强动画图解红黑树,简单易懂

写在前面红黑树,对很多童鞋来说,是既熟悉又陌生。学校中学过,只了解大概;工作中不怎么使用,但面试又是重点。每次需要查看红黑树内容时都很难以更生动形象的方式来理解其内容。没错,本文内容就是要解决这个问题,用简单的语言,搭配静图和动图(利用大脑图形记忆方式),让你对红黑树有更深入的了解和更清晰的记忆,希望小伙伴们再次遇到红黑树的问题不至于头大,建议读该文章姿势:
2020年9月16日
其他

一不小心肝出了4W字的Redis面试教程

本文脑图redis基本数据结构本文脑图前言Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库、缓存、消息中间件,这么优秀的东西客定要一点一点的吃透它。这是关于Redis五种数据结构详解,包括这五种的数据结构的底层原理实现。理论肯定是要用于实践的,因此最重要的还是实战部分,也就是这里还会讲解五种数据结构的应用场景。话不多说,我们直接进入主题,很多人都知道Redis的五种数据结构包括以下五种:String:字符串类型List:列表类型Set:无序集合类型ZSet:有序集合类型Hash:哈希表类型但是作为一名优秀的程序员可能不能只停留在只会用着五种类型进行crud工作,还是得深入了解这五种数据结构的底层原理。Redis核心对象在Redis中有一个核心的对象叫做redisObject
2020年9月4日
其他

删库一定要跑路吗?手把手教你MySQL数据恢复

master_log_file='mysql-bin.000039',master_log_pos=35134;查看状态看到已经同步到对应节点:chengqm-3307>>show
2020年8月4日
其他

去阿里面试被问:如果是MySQL引起的CPU消耗过大,你会如何优化?

用户用户空间CPU消耗,各种逻辑运算正在进行大量tps函数/排序/类型转化/逻辑IO访问...IO等待等待IO请求的完成此时CPU实际上空闲如vmstat中的wa
2020年8月3日
其他

explain都不会用,你还好意思说精通Mysql查询优化?

Explain简介Explain关键字是Mysql中sql优化的常用「关键字」,通常都会使用Explain来「查看sql的执行计划,而不用执行sql」,从而快速的找出sql的问题所在。在讲解Explain之前首先创建需要的「用户表user、角色表role、以及用户角色关系表role_user」作为测试用的表://
2020年7月25日
其他

小白都能懂的Mysql主从复制原理(原理+实操)

master_host是Master的ip,master_log_file和master_log_pos就是配置之前查看Master状态时显示的File和Position信息change
2020年7月19日
其他

MySQL 四万字精华总结 + 面试100 问,和面试官扯皮绰绰有余(收藏系列)

InnoDB必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而
2020年7月15日
其他

分布式锁(数据库、Redis、ZK)拍了拍你

前言标题使用最近异常火热的微信拍一拍的方式命名,最近拍一拍的玩法被各位网友玩坏了,出现了各种版本的拍一拍。比如:下面的这个版本是不是似曾相识的感觉,曾几何时你也曾有这种冲动的想法,但是奈于生活,你不得不把这股冲动埋在心底,毕竟冲动是魔鬼。还有比较重口味的,有点哭笑不得,这网友的脑洞真大,要是能把这些心思放在学习和事业上,必是成大事之人,不得不佩服,假如你在吃饭,千万别打我。不得不说拍一拍有点东西,好了,水话就说那么一两句,在开始真正的分布式锁讲解之前,先来个人的分析一下拍一拍的战略动机。对于老板和一个公司来说,公司付出的每一个商品都是有商用价值的,老板不会把没有商用的价值功能和产品创造出来。对于拍一拍这个功能,我想是一个引导性的战略思维,对于这个拍一拍新功能,很多网友都会跃跃欲试,不经意间就会尝试,双击别人的头像进行拍一拍。那么这个双击的动作可能将来微信服务于某项功能而做的准备,待微信的用户习惯了双击操作,微信对于后面的这类操作的功能的推广会变得更加容易。好了,不能再深究下去了,要是被小马哥看到,估计小马哥就要拍一拍我了,这个纯属个人观点,不代表官方的观点,下面开始我们的分布式锁的讲解。分布式锁简介分布式锁的实现方式有以下三种方式:「数据库分布式锁、Redis实现分布式锁、ZooKeeper实现分布式锁」。为什么需要分布式锁呢?在很久以前,用户全体不大的时候,单体应用就可以足够满足用户的所有请求,当用户增加的时候,出现了一定的并发度,可以使用简单的锁机制来协调并发的共享资源的获取。但是,随着业务的增大,用户数量的增加,为了满足业务的高效性,集群的出现,简单的锁机制已经不能够满足协调多个应用之间的共享资源了,于是就出现了分布式锁。分布式锁是协调集群中多应用之间的共享资源的获取的一种方式,可以说它是一种约束、规则。那么对于一个分布式系统中分布式锁应该满足什么条件呢?也就是它应该具备怎样的约束、规则,下面是我总结的分布式锁至少拥有的几个规则。1.「锁的互斥性」:在分布式集群应用中,共享资源的锁在同一时间只能被一个对象获取。2.
2020年7月12日
其他

面试竟被问到Redis事务,触及知识盲区,脸都绿了

Redis客户端的命令执行后若是当前状态处于事务状态命令就会进入队列中,并且返回QUEUED字符串,表示该命令已经进入了命令队列中,并且「事务队列是以先进先出(FIFO)的方式保存入队的命令」的。
2020年7月4日
其他

助你进大厂,这些Mysql索引底层知识你是必须知道的。

前言上一篇总结了Mysql的锁机制,通过读者的反映和阅读量显示,总体还是不错的,感兴趣的可以阅读一下[大厂面试官必问的Mysql锁机制]。写了那么多的Mysql文章,有读者问我是不是dba,工作真的需要掌握那么深吗。我想说的是:我是一名Java全职开发人员不是dba。假如你只满足于日常的crud,你可以放弃这些底层的知识,可以不必学的那么深,若是你想往高处走,这些底层的知识,是你必备的。话不多说,这一篇总结是讲解Mysql的索引,之前写过一篇关于索引的,主要是讲解索引的底层的数据结构B+tree[为了把mysql的索引底层原理讲清楚,我把计算机翻了个底朝天]。这一篇是讲解Mysql中做使用到的「索引的种类」,「索引正确使用的原则」、「怎么优化索引」、「以及两种存储引擎InnoDB和MyISAM索引的数据布局原理」。索引种类在说索引之前,我们先来说一说什么是索引呢?对于索引个人的理解就是,索引是一种加快查询数据的数据结构。所以,索引就是一种数据结构,作用就是发挥这种数据结构的作用,加快查询的效率,例如:InnoDB存储引擎中使用的是就是B+tree这种数据结构来组织索引。Mysql中索引的种类也不是很多,不同类型的索引有不同的作用,索引的作用相互之间也存在交叉关系,Mysql中索引主要分为以下几类:「主键索引」(PRIMARY
2020年6月27日
其他

大厂面试官必问的Mysql锁机制

根据索引的有序性,而普通索引是可以出现重复值,那么当我们第一个sesson查询的时候只出现一条数据num=3,为了解决第二次查询的时候出现幻读,也就是出现两条或者更多num=3这样查询条件的数据。
2020年6月22日
其他

万字长文的Redis五种数据结构详解(理论+实战),建议收藏。

本文脑图前言Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库、缓存、消息中间件,这么优秀的东西一定要一点一点的吃透它。关于Redis的文章之前也写过三篇,阅读量和读者的反映都还可以,其中第一篇是Redis的缓存三大问题[看完这篇Redis缓存三大问题,保你能和面试官互扯。]。第二篇是Redis的内存管理和淘汰策略[别再问我Redis内存满了该怎么办了]和持久化[面试造飞机系列:面对Redis持久化连环Call,你还顶得住吗?]。这是关于Redis的第三篇文章,主要讲解Redis的五种数据结构详解,包括这五种的数据结构的底层原理实现。理论肯定是要用于实践的,因此最重要的还是实战部分,也就是这里还会讲解五种数据结构的应用场景。话不多说,我们直接进入主题,很多人都知道Redis的五种数据结构包括以下五种:String:字符串类型List:列表类型Set:无序集合类型ZSet:有序集合类型Hash:哈希表类型但是作为一名优秀的程序员可能不能只停留在只会用这五种类型进行crud工作,还是得深入了解这五种数据结构的底层原理。Redis核心对象在Redis中有一个「核心的对象」叫做redisObject
2020年6月15日
其他

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

哦,好的,共享锁是针对同一份数据,多个读操作可以同时进行,简单来说即读加锁,不能写并且可并行读;排他锁针对写操作,假如当前写操作没有完成,那么它会阻断其它的写锁和读锁,即写加锁,其它读写都阻塞
2020年5月31日
其他

深入剖析AQS和CAS,看了都说好

上面说到AQS中维护了一个「FIFO队列」,并且「该队列是一个双向链表」,链表中的每一个节点为「Node节点」,「Node类是AbstractQueuedSynchronizer中的一个内部类」。
2020年5月24日
其他

别再问我Redis内存满了该怎么办了

在AOF模式下,Redis提供了Rewite的优化措施,执行的命令分别是REWRITEAOF和BGREWRITEAOF,「这两个命令都不会把过期的key写入到AOF文件中,也能删除过期key」。
2020年5月20日