自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 消息中间件介绍

题目为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?消息中间件各种面试题:消息中间件面试题:消息丢失怎么办?消息中间件面试题:消息队列的优缺点,区别消息中间件面试题:消息中间件的高可用消息中间件面试题:如何保证消息的顺序性消息中间件面试题:如何保证消息不被重复消费消息中间件面试题:如...

2020-01-14 17:24:06 190

原创 java中的内存模型

概述Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓性的一面,有时候在开发Java同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内存模型。究竟什么是内存模型?内存模型描述了程序中各个变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和...

2019-11-20 10:50:58 184

原创 Java中的锁深入理解

Java中的锁常见的锁有synchronized、volatile、偏向锁、轻量级锁、重量级锁1、synchronizedsynchronized是并发编程中接触的最基本的同步工具,是一种重量级锁,也是java内置的同步机制,首先我们知道synchronized提供了互斥性的语义和可见性,那么我们可以通过使用它来保证并发的安全。synchronized三种用法:对象锁当使用synchr...

2019-11-07 16:49:26 178

原创 springboot启动原理解析和源码阅读

前言SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏。所以这次博主就跟你们一起一步步揭开SpringBoot的神秘面纱,让它不在神秘。正文我们开发任何一个Spring Boot项目,都会用到如下的启动类@SpringBootApplicationpublic class Application { ...

2019-11-04 17:46:17 214

原创 SpringMVC详解(三)------基于注解的入门实例

目录1、在 web.xml 文件中配置前端处理器2、在 springmvc.xml 文件中配置处理器映射器,处理器适配器,视图解析器3、编写 Handler4、编写 视图 index.jsp5、在浏览器中输入:http://localhost:8080/SpringMVC_03/hello前两篇博客我们讲解了基于XML 的入门实例,以及SpringMVC运行的详细流程。但是我们发现基于...

2019-10-31 13:42:02 152

原创 SpringMVC讲解(二)------详细架构

目录1、SpringMVC 详细介绍2、SpringMVC 处理请求流程3、配置前端控制器4、配置处理器适配器5、编写 Handler5、配置处理器映射器6、配置视图解析器7、DispatcherServlet.properties通过这篇博客我们详细讲解一下SpringMVC 编写的好处1、SpringMVC 详细介绍通过入门实例,我们大概知道 SpringMVC 的作用,...

2019-10-31 12:03:37 191

原创 SpringMVC详解(一)------入门实例

目录1、什么是 SpringMVC ?2、创建 web 工程,并导入相应的 jar 包。3、新建 SpringMVC 全局配置文件4、在 web.xml 文件中配置前端过滤器 5、编写处理器 Handler6、在 springmvc.xml 文件中配置 Handler,处理器映射器,处理器适配器,以及试图解析器  7、在 /WEB-INF/view 目录下创建 index.jsp ...

2019-10-31 11:26:04 182

原创 Spring中ioc的实现原理

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。一.对Ioc的分析1.1、IoC是什么    Ioc—Inversion of Control,...

2019-10-29 10:27:34 165

原创 微服务架构

今日总结了一下关于微服务架构的知识目录如下一、微服务架构介绍二、出现和发展三、传统开发模式和微服务的区别四、微服务的具体特征五、SOA和微服务的区别六、如何具体实践微服务七、常见的微服务设计模式和应用八、微服务的优点和缺点九、思考:意识的转变一、微服务架构介绍微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中...

2019-10-24 16:34:51 254 1

原创 Redis系列三:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级

一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redis中获取,示意图如下:缓存失效瞬间示意图如下:缓存雪崩的解决方案:(1...

2019-10-22 16:27:13 147

原创 Redis系列二:redis集群高可用

Redis集群的概念:  RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服务挂了可以快速的切换到另外一个服务,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题一、分布式数据库概念分布式数据库把整个数据按分区规则映射到多个节点,即把数据划分到多个节点上,每个节点负责整体数据的一个子集。比如我们库有900条用...

2019-10-22 16:23:43 198

原创 Redis系列一:redis主从复制和哨兵

一、Redis主从复制主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性1. 主从复制的相关操作a,配置主从复制方式一、新增redis6380.conf, 加入 slaveof 192.168.152.128 6379, 在6379启动完后再启6380,完成配置;****b,配置主从复制方式二、redis-server --slaveof 192.1...

2019-10-22 15:26:25 160

原创 Redis分布式锁解决方案

我们知道分布式锁的特性是排他、避免死锁、高可用。分布式锁的实现可以通过数据库的乐观锁(通过版本号)或者悲观锁(通过for update)、Redis的setnx()命令、Zookeeper(在某个持久节点添加临时有序节点,判断当前节点是否是序列中最小的节点,如果不是则监听比当前节点还要小的节点。如果是,获取锁成功。当被监听的节点释放了锁(也就是被删除),会通知当前节点。然后当前节点再尝试获取锁,如...

2019-10-21 16:53:01 186

转载 JVM 工作原理和流程

Java 详解 JVM 工作原理和流程<div class="article-info-box"> <div class="article-bar-top d-flex"> <span class="time">2015年08月04日 19:08:28</sp...

2019-10-18 10:59:03 147

原创 线程池ThreadPoolExecutor实现原理

为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处:降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗;提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度;提高线程的可管理性。线程是稀缺资源,如果无限制...

2019-10-17 14:47:12 161

原创 .NET面试题解析(07)-多线程编程与线程同步

关于线程的知识点其实是很多的,比如多线程编程、线程上下文、异步编程、线程同步构造、GUI的跨线程访问等等,本文只是从常见面试题的角度(也是开发过程中常用)去深入浅出线程相关的知识。如果想要系统的学习多线程,没有捷径的,也不要偷懒,还是去看专业书籍的比较好。常见面试题目:描述线程与进程的区别?为什么GUI不支持跨线程访问控件?一般如何解决这个问题?简述后台线程和前台线程的区别?说说常用的...

2019-10-17 13:58:44 273

原创 Java多线程-工具篇-BlockingQueue

前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起...

2019-10-16 10:09:52 134

原创 JAVA面试题合集 JAVA面试题

分布式数据库面试专题系列:分布式通讯面试专题系列:分布式限流面试专题系列:常见算法面试题:开发框架面试题:面试扩充:面试经验:BAT面试常问:性能优化面试题:想获取面试题集和更多学习资料可以扫描下方二维码或点击链接对标阿里P6架构师...

2019-10-15 11:45:19 477

原创 Java并发之CountDownLatch、Semaphore和CyclicBarrier

JAVA并发包中有三个类用于同步一批线程的行为,分别是CountDownLatch、Semaphore和CyclicBarrier。CountDownLatchCountDownLatch是一个计数器闭锁,通过它可以完成类似于阻塞当前线程的功能,即:一个线程或多个线程一直等待,直到其他线程执行的操作完成。CountDownLatch用一个给定的计数器来初始化,该计数器的操作是原子操作,即同时...

2019-10-14 16:52:32 148

原创 深入理解Java中的锁

Java中的锁常见的锁有synchronized、volatile、偏向锁、轻量级锁、重量级锁1、synchronizedsynchronized是并发编程中接触的最基本的同步工具,是一种重量级锁,也是java内置的同步机制,首先我们知道synchronized提供了互斥性的语义和可见性,那么我们可以通过使用它来保证并发的安全。synchronized三种用法:对象锁当使用synchr...

2019-10-11 15:51:11 156

原创 JAVA多线程CountDownLatch使用详解

前序:上周测试给开发的同事所开发的模块提出了一个bug,并且还是偶现。经过仔细查看代码,发现是在业务中启用了多线程,2个线程同时跑,但是新启动的2个线程必须保证一个完成之后另一个再继续运行,才能消除bug。什么时候用?多线程是在很多地方都会用到的,但是我们如果想要实现在某个特定的线程运行完之后,再启动另外一个线程呢,这个时候CountDownLatch就可以派上用场了怎么用?先看看普通...

2019-10-11 13:15:04 185

原创 高并发架构面试题之缓存七

面试题redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?面试官心理分析这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。而且 redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。面试题剖...

2019-09-30 16:56:22 166

原创 高并发架构面试题之缓存(六)

面试题了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?面试官心理分析其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。面试题剖析缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请...

2019-09-29 15:58:57 177

原创 高并发架构面试题之缓存(五)

面试题redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?面试官心理分析在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有 codis,或者twemproxy,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的...

2019-09-29 14:32:14 215

原创 高并发架构面试题之缓存(四)

面试题redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?面试官心理分析redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了再重启,内存里的数据就全部都弄丢了啊。你必须得用 redis 的持久化机制,将数据写入内存的同时,异步的慢慢的将数据写入磁盘文件里,进行持久化。如果 redis 宕机重启,自动从磁盘上加载之前持久化的一些...

2019-09-29 13:57:22 115

原创 高并发架构面试题之缓存(三)

面试题4.redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?面试官心理分析如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去...

2019-09-27 14:40:57 220

原创 高并发架构面试题之缓存(二)

面试题2.redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?面试官心理分析这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道?还有可能面试官会问问你 redis 和...

2019-09-27 13:51:58 187

原创 高并发架构面试题之缓存(一)

面试题项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?面试官心理分析这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官对你印象肯...

2019-09-26 17:15:58 214

原创 高并发架构面试题之搜索引擎(二)

面试题1es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?面试官心理分析这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s,坑爹了。第一次搜索的时候,是 5~10s,后面反而就快了,可能就几百毫秒。这样就很懵,每个用户第一次访问都...

2019-09-26 16:51:50 222

原创 高并发架构面试题之搜索引擎(一)

面试题es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)?面试官心理分析在搜索这块,lucene 是最流行的搜索库。几年前业内一般都问,你了解 lucene 吗?你知道倒排索引的原理吗?现在早已经 out 了,因为现在很多项目都是直接用基于 lucene 的分布式搜索引擎—— ElasticSearch,简称为 es。而现在分布式搜索基本已经成为大部分互联网行业的 Java 系...

2019-09-25 17:23:03 680

原创 高并发架构之消息列队面试题集二

面试题1.如何保证消息的顺序性?面试官心理分析其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。面试题剖析我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql...

2019-09-25 16:49:28 228

原创 高并发架构之消息对列面试题集(一)

面试题为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?面试官心理分析其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从...

2019-09-24 15:33:12 140

原创 高并发面试题系类—如何处理消息丢失的问题

面试题如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?面试官心理分析这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题必须得考虑一下。如果说这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。面试题剖...

2019-09-24 11:49:41 310

原创 高并发面试题系类---如何保证消息消费的幂等性?

面试题如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?面试官心理分析其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。面试题剖析回答这个问题,首先别听到重复消息这个事...

2019-09-24 11:17:24 352

原创 高并发面试题系类—如何保证消息队列的高可用?

面试题如何保证消息队列的高可用?面试官心理分析如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。要是你傻乎乎的就干用了一个 MQ,各种问题从来没考虑过,那你就杯具了,面试官对你的感觉就是,只会简单使用一些技术,没任何思考,马上对你的印象就不太好了。这样的同学招进来要是做...

2019-09-23 18:12:48 138

原创 Java 最常见19个模块面试题—第十九块答案

第十九块答案十九、JVM1. 说一下 jvm 的主要组成部分?及其作用?类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)...

2019-09-20 11:15:58 228

原创 《Java最常见的19模块面试题及答案》目录

《Java 最常见的19个模块道面试题》的答案已经全部更新完了,有些答案是本人自己总结的,也有些答案是在网上搜集整理的。这些答案难免会存在一些错争议,仅供大家参考。如果发现错误还望大家包涵,赐教,谢谢~特意整理出这个目录,方便大家平时复习和收藏哈。希望正在准备面试的朋友们能顺顺利利找到自己心仪的工作,加油!!!Java最常见的19模块面试题:第一模块答案Java 最常见的 19个模块面试题:...

2019-09-20 10:28:06 263

原创 Java 最常见19个模块面试题—第十八块答案

第十八,第十九块答案十八、Redis1. redis 是什么?都有哪些使用场景?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 使用场景:数据高并发的读写海量数据的读写对扩展性要求高的数据2. redis 有哪些功能?数据缓存功能分布式锁的功能支持数据持久化支持事务支持消...

2019-09-19 14:46:46 179

原创 Java 最常见19个模块面试题—第十六,第十七块答案

第十六,第十七块答案十六、Zookeeper1. zookeeper 是什么?zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。2. zookeeper 都有哪些功能?集群管理:监...

2019-09-19 13:30:56 245

原创 Java 最常见19个模块面试题—第十五块答案

第十五块答案十五、Kafka1. kafka 可以脱离 zookeeper 单独使用吗?为什么?kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。2. kafka 有几种数据保留的策略?kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。3. kafka 同时设置了 7 天和 10...

2019-09-18 14:50:09 150

空空如也

空空如也

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

TA关注的人

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