自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 怎么分析一条 SQL 的性能

这篇文章将给大家介绍如何使用 explain 来分析一条 sql 。网上其实已经有非常多的文章都很详细的介绍了 explain 的使用,这篇文章将实例和原理结合起来,尽量让你有更好的理解,相信我,认真看完你应该会有特别的收获。explain 翻译过来就是解释的意思, 在 mysql 里被称作执行计划,即可以通过该命令看出 mysql 在经过优化器分析后决定要如何执行该条 sql 。说到优化器,再多说一句,mysql 内置了一个强大的优化器,优化器的主要任务就是把你写的 sql 再给优化一下,尽可能以更

2020-07-07 22:07:02 405

转载 数据库优化的几个阶段

引言大家在面试的时候,是否遭遇过,面试官询问你们是如何进行数据库优化的?那这个问题应该怎么答呢?第一阶段 优化sql和索引这才是调优的第一阶段啊,为什么呢?因为这一步成本最低啊,不需要加什么中间件。你没经过索引优化和SQL优化,就来什么水平拆分,这不是坑人么。那步骤是什么样呢?我说个大概(1)用慢查询日志定位执行效率低的SQL语句(2)用explain分析SQL的执行计划(3)确定问题,采取相应的优化措施,建立索引啊,等第二阶段 搭建缓存在优化sql无法解决问题的情况下,才考虑搭

2020-07-06 21:56:35 351 1

转载 优化过后把 SQL 执行效率提高了 10,000,000 倍

场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表: 数据100条create table Course( c_id int PRIMARY KEY, name varchar(10))学生表: 数据70000条create table Student( id int PRIMARY KEY, name varchar(10))学生成绩表:数据70w条CREATE table SC( sc_id int PRIMARY KEY, s_id i

2020-07-06 21:46:14 393

转载 明明使用了索引SQL查询还是慢的原因

案例剖析为了实验,我创建了如下表:CREATE TABLE `T`(`id` int(11) NOT NULL,`a` int(11) DEFAUT NULL,PRIMARY KEY(`id`),KEY `a`(`a`)) ENGINE=InnoDB;该表有三个字段,其中用id是主键索引,a是普通索引。首先SQL判断一个语句是不是慢查询语句,用的是语句的执行时间。他把语句执行时间跟long_query_time这个系统参数作比较,如果语句执行时间比它还大,就会把这个语句记录到慢查询日志里

2020-07-06 21:11:03 2289 2

转载 MySQL性能优化指南

MySQL性能1. 最大数据量抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。文件系统单文件大小限制FAT32最大4GNTFS最大64GBNTFS5.0最大2TBEXT2块大小为1024字节,文件最大容量16GB;块大小为4096字节,文件最大容量2TBEXT3块大小为4KB,文件最大容量为4TBEXT4理论可以大于16TB《阿里巴巴Java开发手册》提出单表行数超过500万行

2020-07-06 20:54:32 262

转载 分布式事务解决方案

概述事务是一组不可分组的操作集合,这些操作要么都成功执行,要么都取消执行。最典型的需要事务的场景是银行账户间的转账:假如 A 账户要给 B 账户转账 100 元,那么 A 账户要扣减 100 元,B 账户要增加 100 元,这两个账户的数据变更都成功才可算作转账成功。更严格来说,可以用 ACID 四个特性表述事务:Atomicity:原子性,事务中的所有操作要么都成功执行,要么都取消执行,不能存在部分执行,部分不执行的状态。Consistency:一致性,举个例子简单的理解就是,A、B 两个账户各有

2020-07-05 20:31:20 308 1

转载 Java之ThreadLocal

ThreadLocal是什么首先说明,ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。ThreadLocal类提供了一种线程局部变量(ThreadLocal),即每一个线程都会保存一份变量副本,每个线程都可以独立地修改自己的变量副本,而不会影响到其他线程,是一种线程隔离的思想。实现原理ThreadLocal提供四个方法:public T get() { }public void set(T value

2020-07-04 19:17:06 1888 1

转载 线程池里面到底该设置多少个线程

一、抛出问题关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下:第一派:《Java Concurrency in Practice》即《java并发编程实践》,如下图:如上图,在《Java Concurrency in Practice》一书中,给出了估算线程池大小的公式:Nthreads=NcpuUcpu(1+w/c),其中Ncpu=CPU核心数Ucpu=cpu使用率,0~1W/C=等待时间与计算时间的比率第二派:《Programming C

2020-07-04 17:19:43 712

转载 过滤器与拦截器

背景做过 JavaWeb 开发的对过滤器和拦截器肯定不会陌生,而且也会熟练的使用,但是关于过滤器和拦截器具体的区别和差异可能不是特别的了解,这篇文章就跟大家介绍下过滤器和拦截器的区别。过滤器 Filter首先介绍下什么是过滤器,过滤器英文叫 Filter,是 JavaEE 的标准,依赖于 Servlet 容器,使用的时候是配置在 web.xml 文件中的,可以配置多个,执行的顺序是根据配置顺序从上到下。常用来配置请求编码以及过滤一些非法参数,垃圾信息或者是网站登录验证码。 <!-- filte

2020-07-04 14:02:06 223

转载 @ConditionalOn相关注解

当我们构建一个 Spring 应用的时候,有时我们想在满足指定条件的时候才将某个 bean 加载到应用上下文中, 在Spring 4.0 时代,我们可以通过 @Conditional 注解来实现这类操作我们看到 @Conditional 注解接收的参数是 extends Condition 接口的泛型类,也就是说,我们要使用 @Conditional 注解,只需要实现 Condition 接口并重写其方法即可:看到接口的 matches 方法返回的是 boolean 类型,是不是和我们自定义 va

2020-07-04 13:57:00 5998 1

转载 Spring中的@Qualifier注解

本文将带你来了解一下Spring中的@Qualifier注解,它解决了哪些问题,以及如何使用它。我们还将了解它与@Primary注解的不同之处。使用@Autowired注解是Spring依赖注入的绝好方法。但是有些场景下仅仅靠这个注解不足以让Spring知道到底要注入哪个bean。默认情况下,@Autowired按类型装配Spring bean。如果容器中有多个相同类型的bean,则框架将抛出NoUniqueBeanDefinitionException, 以提示有多个满足条件的bean进行自动装配。程

2020-07-04 11:45:45 2458 1

转载 Spring 循环依赖的坑

前言这两天工作遇到了一个挺有意思的Spring循环依赖的问题,但是这个和以往遇到的循环依赖问题都不太一样,隐藏的相当隐蔽,网络上也很少看到有其他人遇到类似的问题。这里权且称他非典型Spring循环依赖问题。但是我相信我肯定不是第一个踩这个坑的,也一定不是最后一个,可能只是因为踩过的人比较少、鲜有记录罢了。因此这里权且记录一下这个坑,方便后人查看。典型场景经常听很多人在Review别人代码的时候有如下的评论:“你在设计的时候这些类之间怎么能有循环依赖呢?你这样会报错的!”。其实这句话前半句当然没有错

2020-07-04 11:25:46 411

转载 Spring事务失效的原因

1. 数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,之前默认的都是:MyISAM,所以这点要值得注意,底层引擎不支持事务再怎么搞都是白搭。2. 没有被 Sp

2020-07-04 11:06:11 191

转载 Spring 事务的原理

Spring事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection()开启事务con.setAutoCommit(true/false);执行CRUD提交事务/回滚事务 con.commit() / con.rollback();关闭连接 conn.close();使

2020-07-02 22:34:18 429

转载 Spring 为啥默认把bean设计成单例的

熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton、prototype、request、session、global session。如下图是官方文档上的截图,感兴趣的朋友可以进去看看这五种分别有什么不同。今天要介绍的是这五种中的前两种,也是Spring最初提供的bean scope singleton 和 prototype。Spring官方文档介绍如下图:更多内容可以看官方文档介绍,非常详细:https://docs.spring.io/spring/d

2020-07-02 21:56:56 203

MySQL高频面试题及答案

MySQL高频面试题,适用于将要参加软件开发相关岗位面试的同学,在掌握MySQL相关知识的同时,能够更好的应对面试,获取更好的机会

2024-02-23

Mybatis常见面试题

Mybatis常见面试题,适用于将要参加Java开发工程师相关岗位的同学,在巩固Mybatis相关基础知识的同时,能够更好的应对面试,获取更好的机会

2024-02-23

Java集合、JVM面试题

Java集合、JVM面试题,包括Java集合、JVM内存模型、垃圾回收机制、JVM调优、异常处理等相关面试题 适用于Java编程的初学者,加强自身对于Java集合、JVM、异常处理等方面的知识储备,更好的应对面试机会

2024-02-22

Java基础常见面试题

Java基础常见面试题,包含Java概述、基本语法、面向对象、IO流、反射、常见API等方面的常见面试题。 适用于Java编程的初学者,能够更好的掌握Java编程的基础知识,在提高自身技术水平的同时,也能更好的准备面试,获得更好的机会

2024-02-22

Java并发编程最全面试题

Java并发编程最全面试题,包括并发编程基础知识、并发理论、线程池、并发容器、并发队列、并发工具类等方面的常见面试题。例如线程池的概念、优缺点、创建方式、线程池原理等等。 本文档适用于将要参加Java开发相关岗位面试、或者想要提高Java并发编程相关技能的同学,更好的理解和掌握Java并发编程的相关知识,更好的应对面试机会和挑战

2024-02-22

Java 工程师成神之路

Java 工程师成神之路,包括Java相关的基础知识及思维导图 适用于想要学习Java编程语言或者想要提升自身技术水平的同学,更好的掌握Java相关基础知识,不断的提升自己,应对未来更好的挑战

2024-02-22

Git基础知识及面试题

包括Git相关的基础知识、代码托管、Git相关命令、如何在IDEA中使用Git、以及相关面试题 适用于将要参加Java开发工程师相关岗位的同学,熟悉相关知识点、更好的应对相关面试、获得更好的机会

2024-02-22

ElasticSearch面试题

ElasticSearch面试题,包括ElasticSearch基础知识、调优、倒排索引、集群选举、 索引文档的过程、lucence 内部结构、更新和删除文档的过程、电商搜索的整体技术架构等相关知识点。 适用于将要参加Java开发工程师相关岗位的同学,提前熟悉ElasticSearch相关知识点,更好的应对面试,获得更好的机会

2024-02-22

Dubbo知识及面试题

包含Dubbo相关的基础知识、架构设计、分布式框架、通信协议、SPI以及相关面试题 适用于将要参加Java开发工程师相关岗位的同学,熟悉相关知识点、更好的应对面试

2024-02-22

BIO,NIO,AIO,Netty面试题

包含BIO、NIO、AIO及Netty等知识点的面试题及答案 适合将要参加Java开发工程师岗位面试的同学,熟悉相关知识点,更好的应对面试

2024-02-22

300页的Java核心面试知识整理(带答案,超全)

包含Java面试核心知识点,包括Java基础、JVM、spring、数据库、微服务、中间件等相关知识。 适用于要参加Java软件开发岗位面试的同学,在面试之前熟悉相关知识点,更好的应对面试

2024-02-22

Java并发编程学些手册

Java并发编程学些手册,包括并发编程基础、volatile关键字、synchronized关键字、final关键字、对象的共享、同步工具类、线程池、锁、多线程实战等部分的详细介绍和解读。 无论你是面试,还是进阶,这些文章的内容绝对不会让你失望!

2024-01-31

Java集合框架面试必备八股文

Java集合框架面试必备八股文,包括List、Map、Set等集合框架必备知识点及面试题。 适用于初级开发工程师,更好的掌握集合相关的知识点,顺利通过面试

2024-01-30

Java JVM面试必备八股文

Java JVM面试必备八股文,包括JVM相关基础知识、垃圾回收、类加载机制等相关知识点以及面试题。 适用于接下来要参加Java开发工程师岗位面试的同学,更好的掌握JVM相关知识点,顺利通过面试

2024-01-30

MySQL面试题必备八股文

MySQL面试题必备八股文,包括MySQL基础知识,存储引擎、日志、索引、事务、高可用等相关知识点的基本介绍和高级用法。 适用于接下来要参加软件开发岗位面试的同学,更好的掌握MySQL相关的知识点以及常见的面试题,从而更好的应对面试。

2024-01-30

Java并发编程面试题八股文

Java并发编程面试题八股文,包括并发编程基本概念、锁、并发工具类、线程池等基本概念和高级用法。同时也介绍了上述知识点在面试过程中常见的问题及答案。 本材料适用于接下来要参加Java开发工程师岗位的面试同学,可以帮助更好的掌握并发编程相关的知识点,从而更加顺利的通过面试

2024-01-30

Spring面试必备八股文

Spring面试必备八股文,包含Spring相关基础知识以及高级用法,适用于要面试Java开发岗位的同学,可以在面试前复习一下Spring相关的知识点

2024-01-30

RocketMQ面试必须会的八股文

RocketMQ面试必须会的八股文,包括为什么要用MQ、如何选型、RocketMQ使用过程中遇到的问题,例如顺序消息、延迟消息、消息可靠性、消息堆积等问题

2024-01-30

Java最新面试题详解

本资源包含Java面试题及详解,包含Java基础、JVM、多线程&并发、Spring、MyBatis、SpringBoot、MySQL、Spring Cloud、Dubbo、Nginx、MQ、Linux、ZooKeeper、Redis、分布式、网络、设计模式、ES等相关技术的常见面试题和答案

2024-01-30

Redis必备基础知识

本资源包含redis的学习笔记,详细记录了学习和使用Redis必须要了解的各种知识点,包括redis的安装、数据类型、持久化、主从复制、集群搭建、如何整合redis,以及redis应用的各种问题的解决方案等等

2024-01-30

空空如也

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

TA关注的人

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