自定义博客皮肤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/andanyoung

  • 博客(26)
  • 资源 (16)
  • 问答 (4)
  • 收藏
  • 关注

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

一、Join查询原理查询原理:MySQL内部采用了一种叫做 nested loop join(嵌套循环连接)的算法。Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与 Join,则再通过前两个表的 Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复,基本上MySQL采用的是最容易理解的算法来实现join。所以驱动表的选择非常重要,驱动表的数据

2020-06-28 10:42:06 24181 7

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

虽说现在关系型数据库还是主流,但是面对某些需求的时候,需要非关系型数据库来补充它,学习一个主流的NoSQL数据库还是很有必要的。MongoDB是一个功能丰富的NoSQL数据库,本文整理了它最常用的部分形成了这篇入门教程,希望对大家有所帮助。简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。安装以前写的Mong.

2020-06-30 14:54:53 1325

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

上边只是简单介绍了下Explain执行计划各个列的含义,了解它不仅仅是要应付面试,在实际开发中也经常会用到。比如对慢SQL进行分析,如果连执行计划结果都不会看,那还谈什么SQL优化呢?

2020-06-30 09:21:09 1671

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

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

2020-06-30 09:20:33 1241

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

本文探讨 Linux 中主要的几种零拷贝技术以及零拷贝技术的适用场景。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入。在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。**这时候服务端的任务是:**将服务端主机磁盘中的文件不做修改地从已连接的 Socket 发出去。我们通常用下面的代码完成:while((n = read(diskfd, buf, BUF_SIZE)) > 0) write(sockfd, buf , n);基本操作就是循环

2020-06-29 15:26:07 1251

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

数据库缓存最终一致性的四种方案背景缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景。而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方案。缓存是什么存储的速度是有区别的。缓存就是把低速存储的结果,临时保存在高速存储的技术。如图所示,金字塔更上面的存储,可以作为下面存储的缓存。我们本次的讨论,主要针对数据库缓存场景,将以redis作为mysql的缓存为案例来进行。为什么需要缓存存储如mysql通常支持完整的ACID特

2020-06-29 13:32:38 1874

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

RedisRedis的优点:支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)支持持久化操作,可以进行aof(将Reids的操作日志以追加的方式写入文件)及rdb(Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化)数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。支持通过Replication进行数据复制,通过master-slave机

2020-06-29 10:00:22 2983 2

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

前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一

2020-06-27 18:34:01 1464

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

都知道Double会丢失精度,BigDecimal就不会么?希望你会正确使用!我们基本已经形成了常识,需要用到金钱的地方要用 BigDecimal 而不是其他,而我们也都知道浮点型变量在进行计算的时候会出现丢失精度的问题。那么,你知道其实 BigDecimal 也会丢失精度吗?而使用 BigDecimal 的背后又有什么值得去探究的地方吗?今天,告诉你,知其然,也知其所以然。如下一段代码:System.out.println(0.05 + 0.01); System.out.println(1

2020-06-27 17:10:17 1209

原创 RabbitMQ(九):RabbitMQ 延迟队列,消息延迟推送(Spring boot 版)

应用场景目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如:淘宝七天自动确认收货。在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持续七天,就是使用了消息中间件的延迟推送功能。12306 购票支付确认页面。我们在选好票点击确定跳转的页面中往往都会有倒计时,代表着 30 分钟内订单不确认的话将会自动取消订单。其实在下订单那一刻开始购票业务系统就会发送一个延时消息给订单系统,延时30分钟,告诉订单系统订单未完成,如果我们在30分钟内完成了订

2020-06-23 17:28:15 911

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

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

2020-06-23 15:28:53 1222 2

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

消费端限流1. 为什么要对消费端限流假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!当数据量特别大的时候,我们对生产端限流肯定是不科学的,因为有时候并发量就是特别大,有时候并发量又特别少,我们无法约束生产端,这是用户的行为。所以我们应该对消费端限流,用于保持消费端的稳定,当消息数量激增的时候很有可能造成资源耗尽,以及影响服务的性能,导致系统的卡顿甚至直接崩

2020-06-23 14:49:41 968

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

生产端 Confirm 消息确认机制消息的确认,是指生产者投递消息后,如果 Broker 收到消息,则会给我们生产者一个应答。生产者进行接收应答,用来确定这条消息是否正常的发送到 Broker ,这种方式也是消息的可靠性投递的核心保障!Confirm 确认机制流程图如何实现Confirm确认消息?第一步:在 channel 上开启确认模式: channel.confirmSelect()第二步:在 channel 上添加监听: channel.addConfirmListener(Confir

2020-06-23 14:13:23 2452

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

RabbitMQ 简述RabbitMQ是一个消息代理:它接受并转发消息。 您可以将其视为邮局:当您将要把寄发的邮件投递到邮箱中时,您可以确信Postman 先生最终会将邮件发送给收件人。 在这个比喻中,RabbitMQ是一个邮箱,邮局和邮递员,用来接受,存储和转发二进制数据块的消息。队列就像是在RabbitMQ中扮演邮箱的角色。 虽然消息经过RabbitMQ和应用程序,但它们只能存储在队列中。 队列只受主机的内存和磁盘限制的限制,它本质上是一个大的消息缓冲区。 许多生产者可以发送到一个队列的消息,许多消

2020-06-23 11:38:58 891

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

RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitMQ进行简单整合,实现生产和消费消息。配置Spring Boot使用了这么久,套路差不多摸清楚了。Spring Boot与其他组件进行整合,无非就是加入pom依赖,接着配置一些基本信息,然后就可以使用相关注解进行开发了。RabbitMQ也是相同的套路,第一步要引入依赖。要引入的依赖比较容易记,RabbitM

2020-06-23 10:21:24 622

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

有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使我们编写的SQL 语句在效率上快很多。一、优化原则小表驱动大表,即小的数据集驱动大得数据集。在知道什么是小表驱动达大表之前,我们先来了解两个查询关键字,IN 与 EXISTS。我们通过两段查询语句先来了解一下它们的作用。我建立了两张表,一张员工表,一张部门表,员工表中有部门id 这个属性,将这两张表关联起来。我们先使用IN 来查询数据:本文不涉及复杂的底层数据结构,通过explain解释

2020-06-21 16:53:25 3916

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

有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使我们编写的SQL 语句在效率上快很多。一、优化原则小表驱动大表,即小的数据集驱动大得数据集。在知道什么是小表驱动达大表之前,我们先来了解两个查询关键字,IN 与 EXISTS。我们通过两段查询语句先来了解一下它们的作用。我建立了两张表,一张员工表,一张部门表,员工表中有部门id 这个属性,将这两张表关联起来。我们先使用IN 来查询数据:SELECT * FROM t_emp WHER

2020-06-21 10:06:32 1498 1

原创 RabbitMQ(三):RabbitMQ 使用场景

一. RabbitMQ 简介二. RabbitMQ 使用场景2.1 解耦2.2 异步提升效率2.3 流量削峰三. 引入消息队列的优缺点优点缺点总结 一. RabbitMQ 简介MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技.

2020-06-19 11:00:18 1051

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

RabbitMQ(二):RabbitMQ高级特性RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要了解一下相关知识,RabbitMQ(一):RabbitMQ快速入门已经入门RabbitMQ,本文介绍RabbitMQ的高级特性。过期时间(TTL)Time To Live,也就是生存时间,是一条消息在队列中的最大存活时间,单位是毫秒。了解Redis的朋友应该一看就明白,二者很像。RabbitMQ可以对消息和队列设置TTL。Rabbit

2020-06-18 22:35:03 566

原创 RabbitMQ(一):RabbitMQ快速入门

RabbitMQ(一):RabbitMQ快速入门RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、常用交换器类型、用Docker安装RabbitMQ等。RabbitMQ简介以熟悉的电商场景为例,如果商品服务和订单服务是两个不同的微服务,在下单的过程中订单服务需要调用商品服务进行扣库存操作。按照传统的方式,下单过

2020-06-18 22:33:07 895

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

1. 用来循环容器的标签forEach,查看例子foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,index:集合中元素迭代时的索引open:常用语where语句中,表示以什么开始,比如以’('开始separator:表示在每次进行迭代时的分隔符,close 常用语where语句中,表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须

2020-06-16 19:17:04 4245

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

一,volatile关键字的可见性要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下:从图中可以看出:①每个线程都有一个自己的本地内存空间–线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作②对该变量操作完后,在某个时间再把变量刷新回主内存关于JAVA内存模型,更详细的可参考: 深入理解Java内存模型(一)——基础因此,就存在内存可见性问题,看一个示例程序:(摘自书上) 1 public class

2020-06-16 17:51:55 511

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

SnowFlake 雪花算法对于分布式系统环境,主键ID的设计很关键,什么自增intID那些是绝对不用的,比较早的时候,大部分系统都用UUID/GUID来作为主键,优点是方便又能解决问题,缺点是插入时因为UUID/GUID的不规则导致每插入一条数据就需要重新排列一次,性能低下;也有人提出用UUID/GUID转long的方式,可以很明确的告诉你,这种方式long不能保证唯一,大并发下会有重复long出现,所以也不可取,这个主键设计问题曾经是很多公司系统设计的一个头疼点,所以大部分公司愿意牺牲一部分性能而直接

2020-06-16 10:43:40 956

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

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

2020-06-12 13:43:15 8654

原创 Elasticsearch入常用RESTful API总结

Elasticsearch入坑指南之RESTful APIRESTful API HTTP动词介绍对于资源的具体操作类型,由HTTP动词表示。常用的HTTP动词有下面五个(括号里是对应的SQL命令)。GET(SELECT):从服务器取出资源(一项或多项)。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。DELETE(DELETE):从服务器删除资源

2020-06-09 14:13:14 991

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

在开始处理一个http请求时,nginx会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求。server_name与host匹配优先级如下:1、完全匹配2、通配符在前的,如*.test.com3、在后的,如www.test.*4、正则匹配,如~^.www.test.com$如果都不匹配1、优先选择listen配置项后有default或default_server的

2020-06-02 10:28:56 1087

2023最新JAVA面试刷题手册

12万字java面经总结

2023-09-13

2022图解网络 IPv6 、网络设备、二层交换机、三层交换机、防火墙、无线、设备选型,网络规划和实战

我们用手机连接上网的时候,会用到许多网络协议。从手机连接 WiFi 开始,使 用的是 802.11 (即 WLAN )协议,通过 WLAN 接入网络;手机自动获取 网络配置,使用的是 DHCP 协议,获取配置后手机才能正常通信。这时手机已 经连入局域网,可以访问局域网内的设备和资源,但还不能使用互联网应用,例 如:微信、抖音等。想要访问互联网,还需要在手机的上联网络设备上实现相关 协议,即在无线路由器上配置 NAT、 PPPOE 等功能,再通过运营商提供的互 联网线路把局域网接入到互联网中,手机就可以上网玩微信、刷抖音了。局域网 :小范围内的私有网络,一个家庭内的网络、一个公司内的网络、一个校园内 的网络都属于局域网。 广域网:把不同地域的局域网互相连接起来的网络。运营商搭建广域网实现跨区域的 网络互连。 互联网:互联全世界的网络。互联网是一个开放、互联的网络,不属于任何个人和任 何机构,接入互联网后可以和互联网的任何一台主机进行通信。 简单来说,就是手机、无线路由器等设备通过多种网络协议实现通信。网络协议 就是为了通信各方能够互相交流而定义的标准或规则,设备只要遵循相同的网络 协议就

2022-07-04

windows加密器9款加密工具合集:U盘防拷贝、视频加密、PDF文件加密、EXE文件加密等

9款加密工具合集:U盘防拷贝、视频加密、PDF文件加密、EXE文件加密等 超时代 U盘防拷贝系统 文件夹加密精灵V5.3 金盾跨平台视频加密系统2019VIP 光盘加密 光盘加密大师5.0.0 超时代视频加密器-专业版9.35 VProtect加密 PDF文档加密器V5.0 EXE文件加密器7.1-增强版_VIP2

2022-05-13

k8skubectl.pdf

送你一份 Kubernetes 实用命令速查表

2021-12-24

Jenkins持续集成从入门到精通.pdf

软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划、开发、测试 和部署过程的集合。如下图所示 :

2021-09-07

Navicat.7z

Navicat Premium 是一个数据库开发工具,允许您从单个应用程序连接到MySQL,MariaDB,SQL Server,Oracle,PostgreSQL和SQLite数据库。与Amazon RDS,Amazon Aurora,Amazon Redshift,SQL Azure,Oracle Cloud和Google Cloud等云数据库兼容。您可以快速轻松地构建,维护和维护数据库。

2020-03-26

Maven基础讲义.zip

Maven 的正确发音是[ˈmevən],而不是“马瘟”以及其他什么瘟。Maven 在美国是一个口语化的词 语,代表专家、内行的意思。 一个对 Maven 比较正式的定义是这么说的:Maven 是一个项目管理工具,它包含了一个项目对象模 型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管 理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。

2019-07-30

西蒙iPhone-OpenGL ES 教程【中文翻译版PDF】

西蒙OpenGL ES 教程 IOS开发,ios技术文档,网络收集整理。西蒙iphone-OpenGL ES 教程,共13篇。第8、12章由于有更好的技术,所以被译者跳过。

2017-09-01

C语言程序设计_2003.pdf

C语言程序设计 何钦铭,颜晖主编2003—电子书

2015-07-05

C语言API函数速查.chm

C语言库函数API[CHM文档]是一个很好的C语言函数查询器.属于CHM文档.

2015-07-05

api web

W3CSchool很不错的WEB开发API。

2015-05-17

SurfaceView

SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。

2015-05-05

JsonDemo

JsonDemo

2015-05-03

JAVA_正则表达式简介

JAVA_正则表达式简介详解

2015-05-03

CameraDemo

Android SDK支持操作Android设备内置的照相机。从Android2.3开始,支持操作多个摄像头(主要指前置摄像头和后置照相机)。通过照相机可以拍照和录像。快速拍照

2015-05-02

android 选项卡TanHost

选项卡主要有TabHost、TabWiget和 FramentLayout3个组件组成,用于实现一个多标签的用户界面,通过他可以将一个复杂的对话分隔成若干个标签页,实现对信息的分类显示和管理。使用给组件不仅可以使界面美观大方,还可以有效地减少窗体个数。 在Android中,实现选项卡的一半步骤如下: (1)在布局文件中添加实现选项卡所需的TabHost、TabWiget和 FramentLayout组件。 (2)编写各个标签页中要显示内容所对应的XML布局文件。 (3)在Activity个,获取并初始化TabHost组件。 (4)为TabHost对象添加标签页。

2015-05-02

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

TA关注的人

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