自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(76)
  • 收藏
  • 关注

转载 浅谈MySQL中优化sql语句查询常用的30种方法(sql优化)

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is n...

2019-09-16 16:05:11 223

转载 你不知道的CMS GC

在G1出来之前,CMS绝对是OLTP系统的标配。即使G1出来几年了,生产环境很多的JVM实例还是采用ParNew+CMS的组合。但是即使其得到这么广泛的应用,还是有很多同学对它有很深的误解。本文主要对ParNew+CMS经典组合下,触发的几种垃圾回收方式进行几个概念的纠正。Backgroud可能更多人只知道CMS,而不知道Backgroud CMS。事实上我们说的CMS,即包含了5个阶段的CM...

2019-09-12 14:19:20 191

转载 吊打面试官!MySQL灵魂100问,你能答出多少?

前言本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水.前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面试文章,发现其中的一些问题自己也回答不好,虽然知识点大部分都知道,但是无法将知识串联起来.因此决定搞一个MySQL灵魂100问,试着用回答问题的方式,让自己对知识点的理解更加深入一点.此文不会事无...

2019-09-11 14:47:58 166

转载 Java 堆外内存回收原理

堆外内存简介DirectByteBuffer 这个类是 JDK 提供使用堆外内存的一种途径,当然常见的业务开发一般不会接触到,即使涉及到也可能是框架(如 Netty、RPC 等)使用的,对框架使用者来说也是透明的。堆外内存优势堆外内存优势在 IO 操作上,对于网络 IO,使用 Socket 发送数据时,能够节省堆内存到堆外内存的数据拷贝,所以性能更高。看过 Netty 源码的同学应该了解,N...

2019-09-10 10:41:59 322

转载 面试官问:请介绍一下MySQL数据库的锁机制?

为什么要加锁问题背景当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。要解决的问题多用户环境下保证数据库完整性和一致性锁是什么在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。加锁是实现数据库并发控制的一个非常重要的...

2019-09-09 13:55:04 150

转载 关于消息队列的优缺点,看这篇就行

在项目中为什么要使用消息队列消息队列使用场景主要有三个:解耦,异步,削峰1、解耦如上图所示,可能存在某一个系统产生关键数据,所有系统都需要其进行提供数据,导致A系统与要提供数据系统产生耦合,系统拓展,其他系统的需求修改都会导致A系统产生修改。2、异步如果用户一个点击,需要几个系统间的一系列反应,同时每一个系统肯都存在一定的耗时,那么可以使用mq对不同的系统进行发送命令,进行异...

2019-09-06 13:49:29 214

转载 Spring Boot 整合 MyBatis 实现乐观锁和悲观锁

本文以转账操作为例,实现并测试乐观锁和悲观锁。死锁问题当 A, B 两个账户同时向对方转账时,会出现如下情况:时刻事务 1 (A 向 B 转账)事务 2 (B 向 A 转账)T1Lock ALock BT2Lock B (由于事务 2 已经 Lock A,等待)Lock A (由于事务 1 已经 Lock B,等待)由于两个事务都在等待对方释放锁,于...

2019-09-05 11:21:40 426

转载 Shenandoah GC:一个来自JDK12的全新并发压缩垃圾回收器

是不是才听说了JDK11的ZGC,并且还没搞懂?不好意思,OpenJDK12马不停蹄的带来了Shenandoah GC。概述JDK12新增的一个名为Shenandoah的GC算法,它的evacuation阶段工作能通过与正在运行中Java工作线程同时进行(即并发,concurrent),从而减少GC的停顿时间。Shenandoah的停顿时间和堆的大小没有任何关系,这就意味着无论你的堆是200...

2019-09-04 14:19:46 288

转载 来自【金九银十】首位阿里面试者的面经分享

一面1.自我介绍2.进程和线程的区别3.Java调度进程和线程4.String和Stringbuffer的区别5.你用过哪些设计模式6.静态代理实现7.动态代理实现8.观察者模式9.观察者模式的使用场景二面1.Jvm内存区域划分2.一个对象从进入堆区到死亡的全流程3.Mysql索引的实现4.数据库两种存储引擎的区别5.Spring aop怎么实现?6.介绍B 树7.使用b 树的理由8.B 树...

2019-09-04 14:14:39 102

转载 「面试题」介绍你做过最复杂的系统

经常有人会问:能介绍下你做过最复杂的系统吗?对此,你被人问起过吗,你思考过什么标准才算复杂吗?系统的复杂性包括了技术复杂性和业务复杂性。有人抱怨道:我做的系统一点都不复杂,你看我们数据量不大,用不上分库分表,业务也不复杂,单体系统就够了,什么负载均衡和集群也没有,流量也不大,高并发和分布式也没接触过。何为技术复杂性,我上面提到的都算,随着业务的发展,我们的系统架构需要支持大数据和高并发,因此...

2019-09-02 11:18:38 296

转载 面试官:Redis有几种数据类型,详细说一下每种数据类型的使用场景

分析是不是觉得这个问题很基础,其实我也这么觉得。然而根据面试经验发现,至少百分八十的人答不上这个问题。建议,在项目中用到后,再类比记忆,体会更深,不要硬记。基本上,一个合格的程序员,五种类型都会用到。回答一共五种(一)String这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。(二)list使用List的数...

2019-08-30 22:19:41 83

转载 MySQL 数据库优化,看这篇就够了

前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷.1、优化一览图2、优化笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置.2.1 软优化2.1.1 查询语句优化1、首先我们可以用EXPLAI...

2019-08-28 16:14:33 85

转载 Redis在持久化时产生的延迟

一个老外的有关Redis的博客文章中提到一个有趣的事情:它们在测试期间获得的延迟图。为了持久化Redis的数据到磁盘(例如:RDB持久化),Redis需要调用fork()系统命令。 通常使用物理服务器和大多数虚拟机管理程序进行fork是很快的,即使很大的进程也是如此。 然而,Xen的fork()速度很慢,因此对于某些EC2实例类型(以及其他虚拟服务器提供程序),每次父进程调用fork()以便进行...

2019-08-27 16:54:05 112

转载 MySQL 数值类型溢出处理

来,考考大家一个问题,在 MySQL 中当某一列设置为int(0)时会发生什么 ?为了演示这个问题,我们先要创建一个表 DROP TABLE IF EXISTS `na`;CREATE TABLE `na` ( n1 INT(0) NOT NULL DEFAULT '0', n2 INT(11) NOT NULL DEFAULT '0');然后我们使用下面的语句往na表...

2019-08-26 17:28:56 121

转载 干货:一文详解Redis集群原理核心内容

集群原理一个系统建立集群主要需要解决两个问题:数据同步问题和集群容错问题。Naive方案一个简单粗暴的方案是部署多台一模一样的Redis服务,再用负载均衡来分摊压力以及监控服务状态。这种方案的优势在于容错简单,只要有一台存活,整个集群就仍然可用。但是它的问题在于保证这些Redis服务的数据一致时,会导致大量数据同步操作,反而影响性能和稳定性。Redis集群方案Redis集群方案基于分而治...

2019-08-24 21:39:43 96

转载 ZooKeeper实现生产-消费者队列

生产-消费者队列,用于多节点的分布式数据结构,生产和消费数据。生产者创建一个数据对象,并放到队列中;消费者从队列中取出一个数据对象并进行处理。在ZooKeeper中,队列可以使用一个容器节点下创建多个子节点来实现;创建子节点时,CreateMode使用 PERSISTENT_SEQUENTIAL,ZooKeeper会自动在节点名称后面添加唯一序列号。EPHEMERAL_SEQUENTIAL也有同样...

2019-08-23 14:20:39 249

转载 分布式系统的一致性级别划分及Zookeeper一致性级别分析

最近在研究分布式系统的一些理论概念,例如关于分布式系统一致性的讨论,看了一些文章我有一些不解。大多数对分布式系统一致性的划分是将其分为三类:强一致性,顺序一致性以及弱一致性。强一致性(Strict Consistency)也称为:原子一致性(Atomic Consistency)、线性一致性(Linearizable Consistency)。在谈到Zookeeper的一致性是哪种级别的一致性问...

2019-08-22 15:41:51 123

转载 Nginx神来之笔,提高并发原来如此简单

前言什么是NginxNginx (engine x) 是一个高性能的HTTP和反向代理服务器,具有内存少,高并发能力强特点。1,处理静态文件,索引文件以及自动索引;打开文件描述符缓冲2,无缓存的反向代理加速,简单的负载均衡和容错。Nginx国内应用Nginx 超越Apache的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中有淘宝、新浪、网易、腾讯...

2019-08-21 15:44:31 146

转载 【MySQL】数据库事务深入分析

一、前言只有InnoDB引擎支持事务,下边的内容均以InnoDB引擎为默认条件二、常见的并发问题1、脏读一个事务读取了另一个事务未提交的数据2、不可重复读一个事务对同一数据的读取结果前后不一致。两次读取中间被其他事务修改了3、幻读幻读是指事务读取某个范围的数据时,因为其他事务的操作导致前后两次读取的结果不一致。幻读和不可重复读的区别在于,不可重复读是针对确定的某一行数据而言,而幻读...

2019-08-20 14:53:35 77

转载 一文了解OOM及解决方案

1. Java 堆空间发生频率:5颗星造成原因无法在 Java 堆中分配对象吞吐量增加应用程序无意中保存了对象引用,对象无法被 GC 回收应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时 finalizer 线程的处理能力无法跟上结束队列的增长解决方案单位对应:GB -&g...

2019-08-19 16:15:06 145

转载 阿里秋招面试真题解析:如何保证消息队列是高可用的?

面试题分析:引入消息队列后,系统的可用性下降。在生产中,没人使用单机模式的消息队列。因此,作为一个合格的程序员,应该对消息队列的高可用有很深刻的了解。如果面试的时候,面试官问,你们的消息中间件如何保证高可用的?如果你的回答只是表明自己只会订阅和发布消息,面试官就会怀疑你是不是只是自己搭着玩,压根没在生产用过。因此,请做一个爱思考,会思考,懂思考的程序员。回答:这问题,其实要对消息队列的集...

2019-08-16 11:55:06 184

转载 数据库有百万数据量的情况下,分页查询的方法及其优化方式

当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。准备工作为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。表名:order_history描述:某个业务的订单历史表主要字段:unsigned int id,...

2019-08-15 15:15:21 111

转载 Mysql核心技术:用NOSql给高并发系统加速

随着互联网大潮的到来,越来越多网站,应用系统需要海量数据的支撑,高并发、低延迟、高可用、高扩展等要求在传统的关系型数据库中已经得不到满足,或者说关系型数据库应对这些需求已经显得力不从心了。关系型数据库经过几十年的发展已经很成熟,强大的sql语句支持,完美的ACID属性的支持,使得关系型数据库广泛应用于各种各样的应用系统中,但是应用的场景广泛并非意味着完美。-由于关系型数据库是按行进行存储的,在...

2019-08-14 15:59:14 187

转载 面试官:你对MySQL高性能优化有什么规范建议?

数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过32个字符临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀所有存储相同数据的列名和列类型必须一致(一般作为关联列...

2019-08-13 16:32:49 95

转载 Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。我之前的HTTP开发是用apache的HttpClient开发,代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,稍微截个图,这是我封装好的一个post请求工具:本教程将带领大家实现Spring生态内RestTempla...

2019-08-12 15:10:34 170

转载 Nginx限流实战

在当下互联网高并发时代中,项目往往会遇到需要限制客户端连接的需求。我们熟知的 Nginx 就提供了有这样的功能,可以简单的实现对客户端请求频率,并发连接和传输速度的限制….Nginx 限流Nginx为我们提供了请求限制模块(ngx_http_limit_req_module)、基于令牌桶算法的流量限制模块(ngx_stream_limit_conn_module),可以方便的控制令牌速率,...

2019-08-10 10:14:42 106

转载 惊!史上最全的select加锁分析(Mysql)

引言大家在面试中有没遇到面试官问你下面六句Sql的区别呢select * from table where id = ?select * from table where id < ?select * from table where id = ? lock in share modeselect * from table where id < ? lock in share...

2019-08-09 11:10:40 115

转载 一文搞懂MySQL的Join,聊一聊秒杀架构设计

正文MySQL的Join到底能不能用经常听到2种观点:join性能低,尽量少用多表join时,变为多个SQL进行多次查询其实对于上面的观点一定程度上是正确的,但不是完全正确。但之所以流传这么广,主要还是没有搞清楚实际状态,而根据实际使用中总结出来的一些模糊规律。只有了解的MySQL的Join实际执行方式,就会知道上面2种观点是一种模糊的规律,这种规律并不能指导我们实际开发。下面就说说M...

2019-08-08 10:48:42 91

转载 分布式事务之TCC事务模型

正文我们先套一个业务场景进去,如下图所示那页面点了支付按钮,调用支付服务,那我们后台要实现下面三个步骤[1] 订单服务-修改订单状态[2] 账户服务-扣减金钱[3] 库存服务-扣减库存达到事务的效果,要么一起成功,要么一起失败!就要采取TCC分布式事务方案!概念TCC的全称是(Try-Confirm-Cancel)。如下图所示ps:TCC又可以被称为两阶段补偿事务,第一阶段try只是预...

2019-08-07 10:49:15 211

转载 HashMap底层数据结构之链表转红黑树的具体时机

前言本文从三个部分去探究HashMap的链表转红黑树的具体时机:1、从HashMap中有关“链表转红黑树”阈值的声明;2、【重点】解析HashMap.put(K key, V value)的源码;3、测试;一、从HashMap中有关“链表转红黑树”阈值的声明,简单了解HashMap的链表转红黑树的时机HashMap中有关“链表转红黑树”阈值的声明:/** * 使用红黑树(而...

2019-08-06 10:59:37 4950

转载 分布式之延时任务方案解析

引言在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期定时任务一...

2019-08-05 10:39:21 108

转载 Spring MVC组件源码分析

组件概览HandlerMapping根据 request 找到对应的处理器 Handler 和 Interceptors。内部只有一个方法HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;HandlerAdapterHandler 适配器,内部方法如下:boolean suppor...

2019-08-01 11:13:43 132

转载 消费端如何保证消息队列MQ的有序消费

消息无序产生的原因消息队列,既然是队列就能保证消息在进入队列,以及出队列的时候保证消息的有序性,显然这是在消息的生产端(Producer),但是往往在生产环境中有多个消息的消费端(Consumer),尽管消费端在拉取消息时是有序的,但各个消息由于网络等方面原因无法保证在各个消费端中处理时有序。场景分析先后两次修改了商品信息,消息A和消息B先后同步写入MySQL,接着异步写入消息队列中发送...

2019-07-30 11:37:55 690

转载 一文读懂分布式唯一ID生成

很多大的互联网公司数据量很大,都采用分库分表,那么分库后就需要统一的唯一ID进行存储。这个ID可以是数字递增的,也可以是UUID类型的。如果是递增的话,那么拆分了数据库后,可以按照id的hash,均匀的分配到数据库中,并且mysql数据库如果将递增的字段作为主键存储的话会大大提高存储速度。但是如果把订单ID按照数字递增的话,别人能够很容易猜到你有多少订单了,这种情况就可以需要一种非数字递增的方式...

2019-07-29 11:48:41 96

转载 RabbitMQ实现延时队列(死信队列)

基于队列和基于消息的TTLTTL是time to live 的简称,顾名思义指的是消息的存活时间。rabbitMq可以从两种维度设置消息过期时间,分别是队列和消息本身。 队列消息过期时间-Per-Queue Message TTL: 通过设置队列的x-message-ttl参数来设置指定队列上消息的存活时间,其值是一个非负整数,单位为微秒。不同队列的过期时间互相之间没有影响,即使是对于同一条消息...

2019-07-27 15:15:12 240

转载 RabbitMQ实现延时队列(死信队列)

基于队列和基于消息的TTLTTL是time to live 的简称,顾名思义指的是消息的存活时间。rabbitMq可以从两种维度设置消息过期时间,分别是队列和消息本身。 队列消息过期时间-Per-Queue Message TTL: 通过设置队列的x-message-ttl参数来设置指定队列上消息的存活时间,其值是一个非负整数,单位为微秒。不同队列的过期时间互相之间没有影响,即使是对于同一条消息...

2019-07-27 15:15:06 280

转载 分布式锁都有哪些实现方案?

一、业务场景同一个jvm里多个线程操作同一个有状态的变量,可以通过JVM内的锁保证线程安全。如果是多个JVM操作同一个有状态的变量,如何保证线程安全呢?这时候就需要分布式锁来发挥它的作用了二、特点分布式系统往往业务流量比较大、并发较高,对分布式锁的高可用和高性能有较高的要求。一般分布式锁的方案需要满足如下要求:有高可用的获取锁和释放锁功能获取锁和释放锁的性能要好这把锁要是一把可重...

2019-07-26 13:59:53 127

转载 分布式事务里的最终一致性

本地事务ACID大家应该都知道了,统一提交,失败回滚,严格保证了同一事务内数据的一致性!而分布式事务不能实现这种ACID,它只能实现CAP原则里的某两个,CAP也是分布式事务的一个广泛被应用的原型,CAP(Consistency, Availability, Partition Tolerance), 阐述了一个分布式系统的三个主要方面, 只能同时择其二进行实现. 常见的有CP系统, AP系统。...

2019-07-25 10:08:49 151

转载 面试杂谈 - 内存泄漏如何排查

Java的垃圾回收机制给了程序猿便利,我们可以不需要显式释放资源。但想高枕无忧却是不能,OOM像个隐藏在暗处的幽(hua)灵(nong),威胁着可怜、弱小又漂亮的程序猿。一般来说,一个健康的程序,它是不应该出现OOM的。内存里的对象从生到死,井然有序。但由于一些人为的失误,往往会让一些对象逃过GC的制裁,跳出GC外,不在垃圾中。这个时候,内存泄漏就发生了。内存泄露,是指程序在申请内存并且用完这...

2019-07-24 18:21:56 136

转载 高并发核心技术 - 幂等性与分布式锁

高并发核心技术之 - 幂等性1. 什么是幂等性幂等性就是指:一个幂等操作任其执行多次所产生的影响均与一次执行的影响相同。用数学的概念表达是这样的: f(f(x)) = f(x).就像 nx1 = n 一样, x1 就是一个幂等操作。无论是乘以多少次结果都一样。2. 常见的幂等性问题幂等性问题经常会是由网络问题引起的,还有重复操作引起的。场景一:比如点赞功能,一个用户只能对同一片文章点...

2019-07-23 11:14:12 106

空空如也

空空如也

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

TA关注的人

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