IT
文章平均质量分 88
AI乔治
十年码农,站在巨人的肩膀上敲代码!
展开
-
140面试必问:Spring的Controller是单例还是多例,怎么保证并发的安全
更多面试题:面试题内容聚合controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。我们下面来简单的验证下:packagecom.riemann.springbootdemo.controller;importorg.springframework.context.annotation.Scope;importorg.springframework.stereotype.Controller;importorg....原创 2020-11-26 13:59:50 · 948 阅读 · 3 评论 -
139期:面试必会之LinkedList源码分析
注:本文所有方法和示例基于jdk1.8更多面试题:面试题内容聚合概述LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的,是线程不安全的,允许元素为null的双向链表。源码分析1. 变量/***集合元素数量**/transientintsize=0;/***指向第一个节点的指针*Invariant:(first==null&&last==null)||...原创 2020-11-26 13:56:24 · 203 阅读 · 1 评论 -
138面试必问:谈谈常用的Iterator中hasNext()、next()、remove()方法吧
更多面试题:面试题内容聚合一、Iterator的API关于Iterator主要有三个方法:hasNext()、next()、remove() hasNext:没有指针下移操作,只是判断是否存在下一个元素 next:指针下移,返回该指针所指向的元素 remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素 二、迭代器原理1、当创建完成指向某个集合或者容器的Iterator对象时,这时的指针其实指向的是第一个...原创 2020-11-25 14:03:35 · 1097 阅读 · 1 评论 -
137面试必问:问点儿基础的,你能说说Java深拷贝和浅拷贝区别吗
一、拷贝的引入(1)、引用拷贝创建一个指向对象的引用变量的拷贝。Teacherteacher=newTeacher("Taylor",26);Teacherotherteacher=teacher;System.out.println(teacher);System.out.println(otherteacher);输出结果:blog.Teacher@355da254blog.Teacher@355da254结果分析:由输出结果可以看出,它们...原创 2020-11-25 14:00:07 · 280 阅读 · 1 评论 -
136面试必问:你能谈谈Java中 synchronized 对象锁和类锁的区别
更多面试题:面试题内容聚合synchronized 加到 static 方法前面是给class 加锁,即类锁;而synchronized 加到非静态方法前面是给对象上锁。这两者的区别我用代码来演示下对象锁和类锁是不同的锁,所以多个线程同时执行这2个不同锁的方法时,是异步的。在Task2 中定义三个方法 doLongTimeTaskA和doLongTimeTaskB是类锁,而doLongTimeTaskC是对象锁。publicclassTask2{publi...原创 2020-11-25 13:58:01 · 273 阅读 · 2 评论 -
128一道搜狗面试题:IO多路复用中select、poll、epoll之间的区别
更多面试题:面试题内容聚合(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n)poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大...原创 2020-11-24 14:17:44 · 290 阅读 · 1 评论 -
127面试必问:你说使用过ZooKeeper,那来说说他的基本原理吧
ZooKeeper简介ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper设计目的 最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。 可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有的服务器接受。 实时性:Zookeeper保证客户端将在一个时间间隔范围内获得...原创 2020-11-24 14:07:30 · 361 阅读 · 1 评论 -
126面试前必刷:消息队列面试连环炮
目录 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? kafka,activemq,rabbitmq,rocketmq 都有什么去呗? 如何保证消息队列高可用? 如何保证消息不被重复消费? 如何保证消息的可靠性传输? 如何保证消息的顺序性? 写一个消息队列架构设计? 消息队列技术选型解决的问题: 解耦 异步 削峰 不用 MQ 系统耦合场景...原创 2020-11-24 14:03:22 · 186 阅读 · 1 评论 -
125面试必问:举例说明消息队列应用场景及ActiveMQ、RocketMQ、Kafka等的对比
在之前的业务中,使用了Kafka和RabbitMQ两种消息队列,这篇文章来做一个总结。消息队列中间件是分布式系统中重要的组件,主要实现异步消息,应用解耦,流量削峰及消息通讯等功能。下面举例说明在实际应用中消息队列是如何使用的。消息队列应用场景1、异步处理以用户注册,并且需要注册邮件和短信为例。用户注册后,需要发送注册邮件和注册短信。传统的做法有两种:串行和并行方式。如下图所示:1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完...原创 2020-11-24 13:55:29 · 378 阅读 · 1 评论 -
123面试必问:那些难缠的并发面试题
1、Object 的 wait()和notify() 方法下图为线程状态的图:Object 对象中的 wait()和notify()是用来实现实现等待 / 通知模式。其中等待状态和阻塞状态是不同的。等待状态的线程可以通过notify() 方法唤醒并继续执行,而阻塞状态的线程则是等待获取新的锁。 调用 wait()方法后,当前线程会进入等待状态,直到其他线程调用notify()或notifyAll() 来唤醒。 调用 notify() 方法后,可以唤醒正在等待的单一线程。...原创 2020-11-24 13:48:19 · 277 阅读 · 1 评论 -
122面试前必刷:几个SpringCloud常见面试题及答案
全文目录 什么是微服务? 微服务之间如何独立通讯的? SpringCloud 和 Dubbo 有哪些区别? SpringBoot 和 SpringCloud 之间关系? 什么是熔断?什么是服务降级? 微服务的优缺点是什么?说下你在项目中碰到的坑。 eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别? 你所知道微服务的技术栈有哪些?列举一二。 什么是微服务架构? 1.什么是微服务?...原创 2020-11-24 13:44:28 · 1149 阅读 · 1 评论 -
121面试必问:什么是熔断?什么是服务降级?
服务熔断服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。服务降级服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性。熔断VS降级相同点: 目...原创 2020-11-24 13:40:23 · 945 阅读 · 1 评论 -
120面试必问:谈谈什么是微服务?
什么是微服务微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。一.单体架构1.1什么是单体架构在软件设计的时候经常提到和使用经典的3层模型,即表现层,业务逻辑层,数据访问层。虽然在软件设计中划分了3层模型,但是对业务场景没有划分,一个典型的单体架构就是将所有的业务场景的表现层,业务逻辑层,数据访问层放在一个工程中最终经过编译,打包,部署在一台服务器上。此时服务架构如图:1.2单体架构存在的不足在小型应...原创 2020-11-24 13:38:55 · 1000 阅读 · 1 评论 -
119面试必问:谈谈在项目中,如何应对高并发流量
前言 应对大流量的一些思路 限流的常用方式 限流神器:Guava RateLimiter 分布式场景下的限流 前言在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考。应对大流量的一些思路“首先,我们来说一下什么是大流量?大流量,我们很可能会冒出:TPS(每秒事务量),QPS(每秒请求量),1W+,5W+,10W+,100W+...。其实...原创 2020-11-24 13:31:34 · 398 阅读 · 1 评论 -
118面试必问:你真的清楚 i = i++和 i = ++i 的区别吗?
写在前面:前些天看完了JVM的内存结构,自以为自己是懂了,心里想想不就是分线程共享和线程私有嘛,然后又怎么怎么分怎么怎么的嘛…直到遇到了这道题目。说句实话,曾经自己做这种运算题目,完全是靠脑子空想,然后拿上笔颤抖的写下一个自己都不知道正不正确的答案。不过过了今天,我终于能确定它的答案了。为此,我也专门写一篇博客,记录我的学习!!!1、题目packagepers.mobian.questions01;publicclasstest01{publicstati...原创 2020-11-23 20:03:55 · 621 阅读 · 1 评论 -
117面试必问:熟悉JVM吗?为什么新生代内存需要有两个Survivor区?
在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里?如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Full GC消耗的时间比Mi...原创 2020-11-23 20:01:28 · 301 阅读 · 3 评论 -
116面试前必刷:MySQL索引优缺点、何时需要/不需要创建索引、索引及sql语句的优化
一、什么是索引?索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。二、索引的作用?索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高性能(查询速度)三、优点: 通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性。 可以加快数据的检索速度 可以加速表与表之间的连接 在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间 四、缺点 创建索引和维护索引要耗费时间,这...原创 2020-11-23 19:59:02 · 267 阅读 · 1 评论 -
115面试前比刷:TCP协议10连问,总会用得到,建议收藏~
先亮出这篇文章的思维导图TCP 作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。001. 能不能说一说 TCP 和 UDP 的区别?首先概括一下基本的区别:TCP是一个面向连接的、可靠的、基于字节流的传输层协议。而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。具体来分析,和UDP相比,TCP有三大核心特性: 面向连接。所谓的连接,指的是...原创 2020-11-23 19:57:13 · 270 阅读 · 1 评论 -
114跳槽涨薪:面试不会点儿 Docker 真的不行!
注:近年来,Docker越来越火,毫无疑问的会成为未来的趋势。同样的越来越多的公司重视Docker,不学习Docker,出去都不敢说自己热爱技术~。我司招人的话,对于中级以上,基本的Docker是必须要了解的,否则基本不怎么考虑。对于初级,更侧重基础和编码的能力,但是会点儿Docker绝对是加分项。废话不多说,下面这篇是一个入门,熟悉Docker的好文章,学起来吧!一、简介1、了解Docker的前生LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化,以...原创 2020-11-23 19:45:43 · 244 阅读 · 1 评论 -
113面试必问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?
在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢?下面我们就来讨论下常用的一些API设计的安全方法,可能不一定是最好的,有更牛逼的实现方式,但是这篇是我自己的经验分享.一、token 简介Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身份、凭证,减少用户名和密码的传输次数。一般情况下客户端(接口调用方)需要先向服务器端...原创 2020-11-23 19:23:38 · 419 阅读 · 1 评论 -
112面试必问:为什么选择B+树作为数据库索引结构?谈谈你的理解
背景首先,来谈谈B树。为什么要使用B树?我们需要明白以下两个事实:【事实1】不同容量的存储器,访问速度差异悬殊。以磁盘和内存为例,访问磁盘的时间大概是ms级的,访问内存的时间大概是ns级的。有个形象的比喻,若一次内存访问需要1秒,则一次外存访问需要1天。所以,现在的存储系统,都是分级组织的。最常用的数据尽可能放在更高层、更小的存储器中,只有在当前层找不到,才向更低层、更大的存储器中寻找。这也就解释了,当处理大规模数据的时候(指无法将数据一次性存入内存),算法的实际运行时间,往往取决...原创 2020-11-23 19:14:37 · 366 阅读 · 1 评论 -
111面试前刷:给你清清楚楚讲明白HTTPS原理
大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA 证书等。但对于以下灵魂三拷问可能就答不上了: 为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗? 本文将层层深入,从原理上把 HTTPS 的安全性讲透。HTTPS 的实现原理大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加...原创 2020-11-23 19:12:07 · 248 阅读 · 1 评论 -
110面试常问:Redis分布式锁如何解决锁超时问题?
一、前言关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完的问题, 这样会导致: A线程超时时间设为10s(为了解决死锁问题), 但代码执行时间可能需要30s, 然后redis服务端10s后将锁删除, 此时, B线程恰好申请锁, redis服务端不存在该锁, 可以申请, 也执行了代码, 那么问题来了, A、B线程都同时获取到锁并执行业务逻辑, 这与分布式锁最基本的性质相违背: 在任意一个时刻, 只有一个客户端持有锁, 即...原创 2020-11-23 19:09:35 · 2034 阅读 · 4 评论 -
109面试常问:我们说StringBuilder是线程不安全的,是什么原因呢?
引言面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilder不是线程安全的,StringBuffer是线程安全的面试官:那StringBuilder不安全的点在哪儿?我:。。。(哑巴了)在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。分析在分析这个问题之前我们要知道StringBuilder和StringBuf...原创 2020-11-23 19:06:39 · 343 阅读 · 3 评论 -
108面试常问:你真的知道 Java 类是如何被加载的吗?
一:前言最近给一个非Java方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM的ClassLoader,我确实也好久没写JVM相关的文章了,有点手痒痒,涂了皮炎平也抑制不住。我在向朋友解释的时候是这么说的:双亲委派模型中,ClassLoader在加载类的时候,会先交由它的父ClassLoader加载,只有当父ClassLoader加载失败的情况下,才会尝试自己去加载。这样可以实现部分类的复用,又可以实现部分类的隔离,因为不同ClassLoader加载的类是互相隔离的。不过贸...原创 2020-11-21 15:11:12 · 220 阅读 · 1 评论 -
107面试常问:谈谈面试必问的Java内存区域(运行时数据区域)和内存模型(JMM)
Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。而内存模型(Java Memory Model,简称 JMM )是定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式,如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java运行时数据区域众所周知,Java 虚拟机有自动内存管理机制,如果出现内存泄漏和溢出方面的问题,排查错误就必须要了解虚拟机是怎样使用内存的。...原创 2020-11-21 15:09:32 · 275 阅读 · 1 评论 -
106面试常问:Java中的finally一定会被执行吗?
一、前言因为这次面试有问到一些同学finally的问题,发现自己这块好像有点记不太清楚了,有的点可能还给人家说错了,一度弄得场面有些尴尬。所以说这篇文章深入研究一下finally的执行情况和返回值的情况。二、finally一定会执行吗?先给答案:肯定不是。我们可以看两种情况:1.在执行try块之前直接return,我们发现finally块是不会执行的publicclassTryCatchTest{privatestaticinttotal(){...原创 2020-11-21 15:07:36 · 265 阅读 · 1 评论 -
105面试常问:注册中心全部宕掉后,Dubbo服务还能进行调用吗?
今天群友小z在面试时被问到一个很有意思的面试题,表示被问到时有点懵圈,查过后有点懊恼,特意查了一下分享给大家!注册中心宕掉后,Dubbo服务还能进行调用吗答案是可以的,启动dubbo时,消费者会从注册中心拉取注册的生产者的接口等数据,缓存到本地。每次调用时,按照本地存储的地址进行调用。注册中心对等集群,任意一台宕掉后,将自动切换到另一台。注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯。这里主要受益于Dubbo架构的健壮性:健壮性 监控中心宕掉不影响使用...原创 2020-11-21 15:02:38 · 408 阅读 · 2 评论 -
104:史上最全的数据库面试题,面试前刷一刷!
一、基本概念1.主键、外键、超键、候选键超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。候选键:是最小超键,即没有冗余元素的超键。主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。外键:在一个表中存在的另一个表的主键称此表的外键。2.为什么用自增列作为主键如果我们定义了主键(PRIM...原创 2020-11-21 14:55:26 · 1021 阅读 · 1 评论 -
103:面试的时候我只会聊项目,结果就把我挂了!
在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架。我相信其它公司招初级开发时,应该也照着这个标准来面的。我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。但现实情况是,大多数人可能面试前没准备,或准备方法不得当。要知道,我们平时干活更偏重于业务,不可能大量接触到算法,数据结构,底层代码这...原创 2020-11-21 14:42:43 · 285 阅读 · 2 评论 -
102面试常问:如何正确访问Redis中的海量数据?服务才不会挂掉!
目录 前言 事故产生 分析原因 解决方案 总结 前言有时候我们需要知道线上的redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?今天老顾分享一个小知识点事故产生因为我们的用户token缓存是采用了【user_token:userid】格式的key,保存用户的token的值。我们运维为了帮助开发小伙伴们查一下线上现在有多少登录用户。直接用了keys user_token*方式进行查询,事故就此发生了。导致redi...原创 2020-11-21 14:37:42 · 237 阅读 · 2 评论 -
101面试常问:熟悉Java并发吗,谈谈对JUC线程池ThreadPoolExecutor的认识吧
很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章。之前在分析扩展线程池实现可回调的Future时候曾经提到并发大师Doug Lea在设计线程池ThreadPoolExecutor的提交任务的顶层接口Executor只有一个无状态的执行方法:public interface Executor { void execute(Runnable command);}而ExecutorService提...原创 2020-11-21 14:35:51 · 195 阅读 · 2 评论 -
100面试常问:BigDecimal一定不会丢失精度吗?
我们基本已经形成了常识,需要用到金钱的地方要用BigDecimal而不是其他,而我们也都知道浮点型变量在进行计算的时候会出现丢失精度的问题。那么,你知道其实BigDecimal也会丢失精度吗?而使用BigDecimal的背后又有什么值得去探究的地方吗?今天,告诉你,知其然,也知其所以然。如下一段代码:System.out.println(0.05+0.01);System.out.println(1.0-0.42);System.out.println(4.015...原创 2020-11-21 14:32:06 · 313 阅读 · 1 评论 -
99面试常问:中高级开发面试必问的Redis,看这篇就够了!
一、概述Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。二、数据类型数据类型 可以存储的值 操作 STRING 字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自...原创 2020-11-21 14:28:59 · 265 阅读 · 1 评论 -
98面试常问:给我说说你对Java GC机制的理解?
写在前面使用Java快一年时间了,从最早大学时候对Java的憎恶,到逐渐接受,到工作中体会到了Java开发的各种便捷与福利,这确实是一门不错的开发语言。不仅是 Intellij开发Java程序的爽快,还有无需手动管理内存的便捷、 Maven管理依赖的整洁、 SpringCloud大礼包的规整等等。所以,作为一个有追求的Java程序员,深入底层掌握 GC(垃圾回收)的机制,应该算是必备的技能了。本文即我在学习过程中的一些个人观点以及心得,不正之处敬请指正。JVM的运行数据区首先我简单...原创 2020-11-20 13:42:04 · 257 阅读 · 1 评论 -
97面试常问:一网打尽面试中常被问及的8种数据结构
快速介绍8种常用数据结构数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算机科学和软件工程的基础。当涉及软件工程面试问题时,这是一个关键主题。因此,作为开发人员,我们必须对数据结构有充分的了解。在本文中,我将简要解释每个程序员必须知道的8种常用数据结构。1.数组数组是固定大小的结构,可以容纳相同数据类型的项目。...原创 2020-11-20 13:40:01 · 277 阅读 · 1 评论 -
96面试常问:盘点那些关于Nginx的常考面试题
什么是Nginx?Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。为什么要用Nginx?跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发,内存消耗小:开启10个nginx才占150M内存 ,nginx处理静态文件好,耗费内存少,而且Nginx内置的健康检查功能:如果有一个服务器宕机,...原创 2020-11-20 13:38:01 · 1169 阅读 · 1 评论 -
95面试常问:你遇到 Redis 线上连接超时一般如何处理?
一封报警邮件,大量服务节点 redis 响应超时。又来,好烦。redis 响应变慢,查看日志,发现大量 TimeoutException。大量TimeoutException,说明当前redis服务节点上已经堆积了大量的连接查询,超出redis服务能力,再次尝试连接的客户端,redis 服务节点直接拒绝,抛出错误。那到底是什么导致了这种情况的发生呢?总结起来,我们可以从以下几方面进行关注:一、redis 服务节点受到外部关联影响redis服务所在服务器,物理机的资源竞争...原创 2020-11-20 13:36:09 · 526 阅读 · 2 评论 -
94面试常问:熟悉Redis吗,项目中你是如何对Redis内存进行优化的
对于redis来说,什么是最重要的?毋庸置疑,是内存。一、reids 内存分析redis内存使用情况:info memory示例:可以看到,当前节点内存碎片率为226893824/209522728≈1.08,使用的内存分配器是jemalloc。used_memory_rss通常情况下是大于used_memory的,因为内存碎片的存在。但是当操作系统把redis内存swap到硬盘时,memory_fragmentation_ratio 会小于1。redis...原创 2020-11-20 13:34:31 · 350 阅读 · 1 评论 -
93面试常问:Redis 内存满了怎么办?
Redis占用内存大小我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。1、通过配置文件配置通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小//设置Redis最大占用内存大小为100Mmaxmemory100mbredis的配置文件不一定使用的是安装目录下面的redis.conf文件,启动redis服务的时候是可以传一个参数指定red...原创 2020-11-20 13:33:01 · 290 阅读 · 1 评论