自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 千万级MySQL数据库建立索引,提高性能的秘诀

实践中如何优化MySQL实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化和硬件的优化四个方面,如下图所示:SQL语句及索引的优化SQL语句的优化SQL语句的优化主要包括三个问题,即如何发现有问题的SQL、如何分析SQL的执行计划以及如何优化SQL,下面将逐一解释。怎么发现有问题的SQL?(通过MySQL慢查询日志对有效率问题的SQL进行...

2019-08-31 14:43:53 199

转载 缓存内功心法:缓存基础整理

缓存雪崩缓存雪崩是由于原有缓存失效(过期),新缓存未到期间。所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。解决方法:一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。缓存标记:记录缓存数据是否过期,如...

2019-08-30 21:20:54 87

转载 数据库内功心法:数据库基本理论

1、数据库范式第一范式:列不可分,eg:【联系人】(姓名,性别,电话),一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF;第二范式:有主键,保证完全依赖。eg:订单明细表【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName),Discount(折扣),Quantity...

2019-08-29 16:51:14 123

转载 MyBatis面试题集合,90%会遇到这些问题

1、#{}和${}的区别是什么?${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。#{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位...

2019-08-28 16:07:31 102

转载 Spring面试题总结的很全面,附带超详细答案

1、什么是Spring?Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。Spring框架的目标是使得Java EE应用程序的开发更加简捷,通过使用POJO为基础的编程模型促进良好的编程风格。2、Spring有哪些优点?轻量级:Spring在大小和透明性方面绝对属...

2019-08-27 15:07:03 452

转载 Jsp和Servlet有什么区别?

Servlet接口中有哪些方法?Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关:void init(ServletConfig config) throws ServletExceptionvoid service(ServletRequest req, ServletResponse resp) throws ServletException,...

2019-08-26 16:41:43 233

转载 今日头条3面,被泄露的Java最新面试题

一、面试第 1 轮1. linux 网络模型2. b+树3. 阻塞队列4. redis 和 MongoDB 的区别。几个概念对比,还有底层实现。5. 算法题: merge k sorted list,时间复杂度如何?6. HashMap 如果一直 put 元素会怎么样?hashcode 全都相同如何?equals 方法都相同如何?7. ApplicationContext 的...

2019-08-24 14:20:44 728

转载 NIO你真正了解多少?

解释一下java.io.Serializable接口类通过实现 Java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。IO操作最佳实践使用有缓冲的IO类,不要单独读取字节或字符使用NIO和NIO 2或者AIO,而非BIO在finally中关闭流使用内存映射文件获取更快的IOJava IO 分类Java BIO: ...

2019-08-23 15:53:14 151

转载 2019年JVM最新面试题,必须收藏它

1、JVN内存结构方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有的内存区域。Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。方法区(Method Area),方法区(Method ...

2019-08-22 15:56:48 244

转载 Java面试题:Java中的集合及其继承关系

关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.这里我们看这张图即可:1、List、Set、Map是否继承自Collection接口?List、Set 是,Map 不是。Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List是线性结构的容器,适用于按数值...

2019-08-20 17:38:16 113

转载 Java内功心法,深入解析面向对象

什么是对象对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。类的实例化可生成对象,一个对象的生命周期包括三个阶段:生成、使用、消除。当不存在对一个对象的引用时,该对象成为一个无用对象。Java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。当系统内存用尽或调用System.g...

2019-08-17 17:29:54 140

转载 Kafka Network层解析,还是有人把它说清楚了

我们知道kafka是基于TCP连接的。其并没有像很多中间件使用netty作为TCP服务器。而是自己基于Java NIO写了一套。几个重要类先看下Kafka Client的网络层架构。本文主要分析的是Network层。Network层有两个重要的类:Selector和KafkaChannel。这两个类和Java NIO层的java.nio.channels.Selector和C...

2019-08-16 15:17:54 175

转载 避免HBase PageFilter踩坑,这几点你必须要清楚

有这样一个场景,在HBase中需要分页查询,同时根据某一列的值进行过滤。不同于RDBMS天然支持分页查询,HBase要进行分页必须由自己实现。据我了解的,目前有两种方案, 一是《HBase权威指南》中提到的用PageFilter加循环动态设置startRow实现,详细见这里。但这种方法效率比较低,且有冗余查询。因此京东研发了一种用额外的一张表来保存行序号的方案。 该种方案效率...

2019-08-15 16:12:49 490

转载 我是如何拿下阿里、头条、滴滴的,最终还是选择去了阿里巴巴。(上)

本人两年开发经验、18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、滴滴等公司offer,岗位是Java后端开发,最终选择去了阿里巴巴。面试了很多家公司,感觉大部分公司考察的点都差不多,所以将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助。另外,目前在阿里也做面试官的工作,身份从求职者变为面试官,看问题的很多角度也不一样,所以下文中既有求职...

2019-08-14 17:20:34 122

转载 面试官:来谈谈限流-RateLimiter源码分析

RateLimiter有两个实现类:SmoothBursty和SmoothWarmingUp,其都是令牌桶算法的变种实现,区别在于SmoothBursty加令牌的速度是恒定的,而SmoothWarmingUp会有个预热期,在预热期内加令牌的速度是慢慢增加的,直到达到固定速度为止。其适用场景是,对于有的系统而言刚启动时能承受的QPS较小,需要预热一段时间后才能达到最佳状态。基本...

2019-08-13 16:56:32 146

转载 面试官说:来谈谈限流-从概念到实现,一问你就懵逼了?

后端服务的接口都是有访问上限的,如果外部QPS或并发量超过了访问上限会导致应用瘫痪。所以一般都会对接口调用加上限流保护,防止超出预期的请求导致系统故障。从限流类型来说一般来说分为两种:并发数限流和qps限流,并发数限流就是限制同一时刻的最大并发请求数量,qps限流指的是限制一段时间内发生的请求个数。从作用范围的层次上来看分单机限流和分布式限流,前者是针对单机的,后者是针对集群...

2019-08-12 14:44:14 134

转载 Spring Boot @EnableAutoConfiguration解析

刚做后端开发的时候,最早接触的是基础的spring,为了引用二方包提供bean,还需要在xml中增加对应的包<context:component-scan base-package="xxx" />或者增加注解@ComponentScan({ "xxx"})。当时觉得挺urgly的,但也没有去研究有没有更好的方式。直到接触Spring Boot 后,发现其可以自...

2019-08-10 15:21:24 110

转载 Java引用类型原理深度剖析,看完文章,90%的人都收藏了

Java中一共有4种引用类型(其实还有一些其他的引用类型比如FinalReference):强引用、软引用、弱引用、虚引用。其中强引用就是我们经常使用的Object a = new Object();这样的形式,在Java中并没有对应的Reference类。本篇文章主要是分析软引用、弱引用、虚引用的实现,这三种引用类型都是继承于Reference这个类,主要逻辑也在Refe...

2019-08-09 15:28:21 162

转载 死磕Synchronized底层实现--重量级锁

本文为死磕Synchronized底层实现第三篇文章,内容为重量级锁实现。本系列文章将对HotSpot的synchronized锁实现进行全面分析,内容包括偏向锁、轻量级锁、重量级锁的加锁、解锁、锁升级流程的原理及源码分析,希望给在研究synchronized路上的同学一些帮助。重量级的膨胀和加锁流程当出现多个线程同时竞争锁时,会进入到synchronizer.cpp#sl...

2019-08-08 15:16:31 154

转载 一文让你读懂Synchronized底层实现,秒杀面试官

本文为死磕Synchronized底层实现第三篇文章,内容为轻量级锁实现。轻量级锁并不复杂,其中很多内容在偏向锁一文中已提及过,与本文内容会有部分重叠。另外轻量级锁的背景和基本流程在概论中已有讲解。强烈建议在看过两篇文章的基础下阅读本文。本系列文章将对HotSpot的synchronized锁实现进行全面分析,内容包括偏向锁、轻量级锁、重量级锁的加锁、解锁、锁升级流程的原理及...

2019-08-07 15:43:43 323

转载 面试题深入解析:Synchronized底层实现

本文为synchronized系列第二篇。主要内容为分析偏向锁的实现。偏向锁的诞生背景和基本原理在上文中已经讲过了,强烈建议在有看过上篇文章的基础下阅读本文。本文将分为几块内容:1.偏向锁的入口2.偏向锁的获取流程3.偏向锁的撤销流程4.偏向锁的释放流程5.偏向锁的批量重偏向和批量撤销本文分析的JVM版本是JVM8,具体版本号以及代码可以在这里看到。偏向锁入口目前网上的很...

2019-08-06 17:21:28 159

转载 死磕Synchronized底层实现,面试你还怕什么?

关于synchronized的底层实现,网上有很多文章了。但是很多文章要么作者根本没看代码,仅仅是根据网上其他文章总结、照搬而成,难免有些错误;要么很多点都是一笔带过,对于为什么这样实现没有一个说法,让像我这样的读者意犹未尽。本系列文章将对HotSpot的synchronized锁实现进行全面分析,内容包括偏向锁、轻量级锁、重量级锁的加锁、解锁、锁升级流程的原理及源码分析,希...

2019-08-05 17:30:43 115

空空如也

空空如也

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

TA关注的人

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