自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LoveSummer

https://github.com/AndyYoungCN

原创 详解 Mysql LEFT JOIN和JOIN查询区别及原理
原力计划

一、Join查询原理 查询原理:MySQL内部采用了一种叫做 nested loop join(嵌套循环连接)的算法。Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与...

2020-06-28 10:42:06 1550 0

原创 必学必会的nginx配置location匹配顺序总结

location匹配顺序 1."="前缀指令匹配,如果匹配成功,则停止其他匹配 2.普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配) 3.正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配 4.如果第三步中有匹配...

2019-06-18 16:36:08 12237 0

原创 利用gitHook实现自动部署

gitHook 当进行开发的环境在本地,而运行的环境要在服务端时,每一次提交代码都需要在服务端pull一次。而利用git的hooks功能,能够让我们省去这一步,下面我就以码云的webhooks为例,实现服务端的代码自动同步部署。 了解 git 的 hooks 关于 git 钩子 Git...

2019-04-26 16:29:13 2290 0

原创 MySQL中一条SQL是如何执行的?

MySQL简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为数据库 近年来,随着MySQL的不断发展,越来越多的互联网公司也选择了My...

2020-07-06 14:39:06 0

原创 来看看如何使用策略模式干掉讨厌的 if else
原力计划

干掉if else常用策略模式!其实就是抽取一个抽象类,然后根据类型指定不同的实现类执行方法。你学废了吗? 需求 这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。 订单实体: service接口: 传统实现 根据订单类型写一堆的if...

2020-07-03 17:11:09 55 0

原创 高并发下的redis击穿,你需要了解下布隆过滤器
原力计划

在高并发读的情况下缓存是不可少的。关于高并发缓存方面大小可以参考博主这篇文章 好了接下来进入正题: 大家看下上方的这幅图,用户可能进行了一次条件错误的查询,这时候 redis 是不存在的,按照常规流程就是去数据库找了,可是这是一次错误的条件查询,数据库当然也不会存在,也不会往 redis 里面写...

2020-07-02 14:12:25 54 0

原创 MongoDB:快速入门,掌握这些刚刚好!
原力计划

虽说现在关系型数据库还是主流,但是面对某些需求的时候,需要非关系型数据库来补充它,学习一个主流的NoSQL数据库还是很有必要的。MongoDB是一个功能丰富的NoSQL数据库,本文整理了它最常用的部分形成了这篇入门教程,希望对大家有所帮助。 简介 MongoDB是一个基于分布式文件存储的数据库。...

2020-06-30 14:54:53 70 0

原创 MySQL 优化必经之路, Explain执行计划 ?
原力计划

Explain有什么用 当Explain 与 SQL语句一起使用时,MySQL 会显示来自优化器关于SQL执行的信息。也就是说,MySQL解释了它将如何处理该语句,包括如何连接表以及什么顺序连接表等。 表的加载顺序 sql 的查询类型 可能用到哪些索引,哪些索引又被实际使用 表与表之间的引用关系...

2020-06-30 09:21:09 107 0

原创 MySQL开发 日志文件必备的知识点
原力计划

MySQL 日志文件开发必备的知识点 参考来源:juejin.im/post/5b7c0aabf265da438415b9eb 前言 日志文件记录了影响MySQL数据库的各种类型活动,MySQL数据库中常见的日志文件有错误日志,二进制日志,慢查询日志和查询日志。下面分别对他们进行介绍。 错误日...

2020-06-30 09:20:33 84 0

原创 讲透彻什么是Linux零拷贝?
原力计划

本文探讨 Linux 中主要的几种零拷贝技术以及零拷贝技术的适用场景。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入。在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。 **这时候服务端的任务是:**将服务端主机磁盘中的文件不做修改地从已连接的 Sock...

2020-06-29 15:26:07 147 0

原创 数据库缓存最终一致性的四种方案
原力计划

数据库缓存最终一致性的四种方案 背景 缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景。而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方案。 缓存是什么 存储的速度是有区别的。缓存就是把低速存储的结果,临时保存在高速存储...

2020-06-29 13:32:38 201 0

原创 几大流行的NoSql的主要区别,你在用Redis、ElasticSearch还是MongoDB ?
原力计划

Redis Redis的优点: 支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算) 支持持久化操作,可以进行aof(将Reids的操作日志以追加的方式写入文件)及rdb(Reid...

2020-06-29 10:00:22 210 0

原创 聊一聊-JAVA 泛型中的通配符 T,E,K,V,?
原力计划

前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 泛型带来的好处 在没有泛型的情况的下,通过对类型 Object 的引用来实...

2020-06-27 18:34:01 152 0

原创 面试官:BigDecimal一定不会丢失精度吗?

都知道Double会丢失精度,BigDecimal就不会么?希望你会正确使用! 我们基本已经形成了常识,需要用到金钱的地方要用 BigDecimal 而不是其他,而我们也都知道浮点型变量在进行计算的时候会出现丢失精度的问题。 那么,你知道其实 BigDecimal 也会丢失精度吗?而使用 Big...

2020-06-27 17:10:17 133 0

原创 RabbitMQ(九):RabbitMQ 延迟队列,消息延迟推送
原力计划

应用场景 目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如: 淘宝七天自动确认收货。在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持续七天,就是使用了消息中间件的延迟推送功能。 12306 购票支付确认页面。我们在选好票点击确定...

2020-06-23 17:28:15 129 0

原创 RabbitMQ(八):SpringBoot 整合 RabbitMQ(三种消息确认机制以及消费端限流)
原力计划

说明 本文 SpringBoot 与 RabbitMQ 进行整合的时候,包含了三种消息的确认模式,如果查询详细的确认模式设置,请阅读:RabbitMQ的三种消息确认模式 同时消费端也采取了限流的措施,如果对限流细节有兴趣请参照之前的文章阅读:消费端限流 生产端 首先引入 maven 依赖 &...

2020-06-23 15:28:53 139 0

原创 RabbitMQ(七):RabbitMQ 消费端限流、TTL、死信队列是什么?
原力计划

消费端限流 1. 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据! 当数据量特别大的时候,我们对生产端限流肯定是不科学的,因为有...

2020-06-23 14:49:41 106 0

原创 RabbitMQ(六):Confirm 消息确认机制
原力计划

生产端 Confirm 消息确认机制 消息的确认,是指生产者投递消息后,如果 Broker 收到消息,则会给我们生产者一个应答。生产者进行接收应答,用来确定这条消息是否正常的发送到 Broker ,这种方式也是消息的可靠性投递的核心保障! Confirm 确认机制流程图 如何实现Confirm确...

2020-06-23 14:13:23 112 0

原创 RabbitMQ(五):RabbitMQ 之简单队列
原力计划

RabbitMQ 简述 RabbitMQ是一个消息代理:它接受并转发消息。 您可以将其视为邮局:当您将要把寄发的邮件投递到邮箱中时,您可以确信Postman 先生最终会将邮件发送给收件人。 在这个比喻中,RabbitMQ是一个邮箱,邮局和邮递员,用来接受,存储和转发二进制数据块的消息。 队列就像是...

2020-06-23 11:38:58 67 0

原创 RabbitMQ(四):RabbitMQ与Spring Boot简单整合 快速尝鲜版
原力计划

RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitMQ进行简单整合,实现生产和消费消息。 配置 Spring Boot使用了这么久,套路差不多摸清楚了...

2020-06-23 10:21:24 73 0

原创 MySQL百万级、千万级数据多表关联SQL语句调优

有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使我们编写的SQL 语句在效率上快很多。 一、优化原则 小表驱动大表,即小的数据集驱动大得数据集。在知道什么是小表驱动达大表之前,我们先来了解两个查询关键字,IN 与 EXISTS。我们...

2020-06-21 16:53:25 111 0

原创 MySQL IN、Exist关联查询时,我们为什么建议小表驱动大表?

有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使我们编写的SQL 语句在效率上快很多。 一、优化原则 小表驱动大表,即小的数据集驱动大得数据集。在知道什么是小表驱动达大表之前,我们先来了解两个查询关键字,IN 与 EXISTS。我们...

2020-06-21 10:06:32 108 0

原创 RabbitMQ(三):RabbitMQ 使用场景
原力计划

一. RabbitMQ 简介 二. RabbitMQ 使用场景 2.1 解耦 2.2 异步提升效率 2.3 流量削峰 三. 引入消息队列的优缺点 优点 缺点 总结 一. RabbitMQ 简介 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信...

2020-06-19 11:00:18 102 0

原创 RabbitMQ(二):RabbitMQ高级特性

RabbitMQ(二):RabbitMQ高级特性 RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要了解一下相关知识,RabbitMQ(一):RabbitMQ快速入门已经入门RabbitMQ,本文介绍RabbitMQ的高级特性。 ...

2020-06-18 22:35:03 61 0

原创 RabbitMQ(一):RabbitMQ快速入门
原力计划

RabbitMQ(一):RabbitMQ快速入门 RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、常用...

2020-06-18 22:33:07 222 0

原创 关于 MyBatis动态sql,这里有 10 种超好用的写法!
原力计划

1. 用来循环容器的标签forEach,查看例子 foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名, index:集合中元素迭代时的索引 open:常用语where语句中,表示以什么开始,比如...

2020-06-16 19:17:04 106 0

原创 JAVA多线程之volatile 与 synchronized 的比较

一,volatile关键字的可见性 要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下: 从图中可以看出: ①每个线程都有一个自己的本地内存空间–线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作 ②对该变...

2020-06-16 17:51:55 56 0

原创 分布式主键解决方案----Twitter 雪花算法的原理(Java 版)
原力计划

SnowFlake 雪花算法 对于分布式系统环境,主键ID的设计很关键,什么自增intID那些是绝对不用的,比较早的时候,大部分系统都用UUID/GUID来作为主键,优点是方便又能解决问题,缺点是插入时因为UUID/GUID的不规则导致每插入一条数据就需要重新排列一次,性能低下;也有人提出用UUI...

2020-06-16 10:43:40 77 0

原创 springboot实战 获取spring上下文的4种方式

实际开发中我们经常需要通过spring上下文获取一些配置信息,本文阐述springboot应用获取spring上下文的几种方式。 方式一:实现ApplicationContextAware接口 import org.springframework.beans.BeansException; imp...

2020-06-12 13:43:15 71 0

原创 Elasticsearch入常用RESTful API总结

Elasticsearch入坑指南之RESTful API RESTful API HTTP动词介绍 对于资源的具体操作类型,由HTTP动词表示。 常用的HTTP动词有下面五个(括号里是对应的SQL命令)。 GET(SELECT):从服务器取出资源(一项或多项)。 POST(CREATE):在...

2020-06-09 14:13:14 121 0

原创 图文解说nginx中server的匹配顺序
原力计划

在开始处理一个http请求时,nginx会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求。 server_name与host匹配优先级如下: 1、完全匹配 2、通配符在前的,如*.t...

2020-06-02 10:28:56 103 0

转载 强烈推荐16 款牛逼的 IDEA 插件,让你开发速度飞起来!

当前最新版IDEA版本是2020.1。随着IDEA版本的升级,有些插件不再支持,而有些插件变成了收费插件,这些插件将不再推荐。 以下列举的,都是亲测可以在2020.1版本的IDEA中使用的插件。 google-java-format 代码自动格式化 简介 google-java-format插件可...

2020-05-29 16:55:46 401 0

原创 徒手解密 Spring Boot 中的 Starter自动化配置黑魔法
原力计划

我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中。Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小伙伴会觉得这个 Starter 好神奇呀!其实 Starter 也都是 Spring + Spri...

2020-05-28 16:48:57 84 0

原创 应用缓存的基本概念,香(Redis)
原力计划

缓存的使用,是一个逐渐演进的过程。 问一下你自己,最直接的使用缓存的原因是什么? 无它,唯快而已! 追溯一下自己最开始使用缓存的场景,一些数据库里存储的不变的配置信息,服务启动时,直接加载到本地公共模块,方便其它功能模块共享使用。这便是最基本,最简单的本地缓存应用。 一、服务与缓存 所谓的服务,简...

2020-05-25 18:18:25 105 0

原创 Java IO基础原理你该知道这些
原力计划

Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 、字符类型的输入和输出流。 IO是指对数据流的输入和输出,也称为IO流,IO流主要分为两大类,字节流和字符流。字节流可以处理任何类型的数据,如图片,视频等,字符流只能处理字符类型的数据。 IO流的本质是数据传输,并且...

2020-05-25 17:30:34 89 0

原创 Java8 详解Lambda表达式
原力计划

1. 引言 在 Java 8 以前,若我们想要把某些功能传递给某些方法,总要去写匿名类。以前注册事件监听器的写法与下面的示例代码就很像: manager.addScheduleListener(new ScheduleListener() { @Override public vo...

2020-05-20 18:11:19 165 0

原创 Spring Boot 关于 @EnableConfigurationProperties 注解 —— 使用 @ConfigurationProperties 注解的类生效。

先说作用: @EnableConfigurationProperties注解的作用是:使用 @ConfigurationProperties 注解的类生效。 说明: 如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是获取不...

2020-05-20 13:52:12 140 0

原创 Spring Boot实战:异步编程指南
原力计划

通过本文你可以了解到下面这些知识点: Future 模式介绍以及核心思想 核心线程数、最大线程数的区别,队列容量代表什么; ThreadPoolTaskExecutor 饱和策略; SpringBoot 异步编程实战,搞懂代码的执行逻辑。 Future 模式 异步编程在处理耗时操作以及多任务处...

2020-05-18 10:24:44 121 0

原创 Maven最全教程,看了必懂
原力计划

前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下。 一、为什么使用Maven这样的构建工具【why】 ① 一个项目就是一个工程 如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就...

2020-05-11 10:30:36 357 2

原创 一手好 SQL 是如何炼成的?
原力计划

目录 MySQL性能 最大数据量 最大并发数 查询耗时0.5秒 实施原则 数据表设计 数据类型 避免空值 text类型 索引优化 索引分类 优化原则 SQL优化 分批处理 不做列运算 避免Select * 操作符<>优化 OR优化 IN优化 LIKE优化 ...

2020-05-09 14:04:59 115 0

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