SpringBoot开发
文章平均质量分 87
xy29981
学习进阶技术,成就高薪
展开
-
实战:10 种实现延迟任务的方法,附代码!
顾明思议,我们把需要延迟执行的任务叫做延迟任务。延迟任务的使用场景有以下这些:红包 24 小时未被查收,需要延迟执退还业务;每个月账单日,需要给用户发送当月的对账单;订单下单之后 30 分钟后,用户如果没有付钱,系统需要自动取消订单。等事件都需要使用延迟任务。本文讲了延迟任务的使用场景,以及延迟任务的 10 种实现方式:手动无线循环;DelayQueue;Redis zset 数据判断的方式;Redis 键空间通知的方式;Netty 提供的 HashedWheelTimer 工具类;...原创 2022-08-04 14:26:23 · 490 阅读 · 1 评论 -
面试官:为什么数据库连接很消耗资源,资源都消耗在哪里?
本文主要想探究一下连接数据库的细节,尤其是在应用中要使用数据库来连接池,以免每次发送一次请求就重新建立一次连接。对于这个问题,答案都是一致的,建立数据库连接很耗时,但是这个耗时是都多少呢,又是分别在哪些方面产生的耗时呢?本文以连接数据库为例,因为数据库是开源的,其通信协议是公开的,所以我们能够详细分析建立连接的整个过程。首先先看一下连接数据库的代码,如下:然后通过「Wireshark」 分析整个连接的建立过程,如下:Wireshark抓包在上图中显示的连接过程中,可以看出的通信协议是基于传输协议的,而原创 2022-06-27 17:31:52 · 204 阅读 · 0 评论 -
4年工作经验,多线程间的5种通信方式都说不出来,你敢信?
问题一、使用 volatile 关键字二、使用 Object 类的 wait()/notify()三、使用JUC工具类 CountDownLatch四、使用 ReentrantLock 结合 Condition五、基本 LockSupport 实现线程间的阻塞和唤醒有两个线程,A 线程向一个集合里面依次添加元素“abc”字符串,一共添加十次,当添加到第五次的时候,希望 B 线程能够收到 A 线程的通知,然后 B 线程执行相关的业务操作。线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来原创 2022-06-27 17:30:22 · 122 阅读 · 0 评论 -
OPPO面试整理,真正的八股文,狂虐面试官
最近有粉丝私信说被 oppo 的后端面试问麻了,所以今天给大家推荐一篇整理了 16 道 oppo 面试真题答案的文章。希望对大家有帮助哈,一起学习,一起进步。聊聊你印象最深刻的项目,或者做了什么优化。你项目提到分布式锁,你们是怎么使用分布式锁的?常见分布式事务解决方案你们的接口幂等是如何保证的?你们的 MySQL 架构是怎样的?常见的索引结构有?哈希表结构属于哪种场景?给你 ab,ac,abc 字段,你是如何加索引的?数据库隔离级别是否了解?你们的数据库默认隔离级别是?为什么选它?RR 隔离级别实现原理,它原创 2022-06-11 16:58:12 · 740 阅读 · 0 评论 -
面试官:你天天用 Lombok,说说它什么原理?我竟然答不上来…
Lombok如何使用功能编译时注解注解处理工具apt定义注解定义注解处理器定义使用注解的类(测试类)相信大家在项目中都使用过Lombok,因为能够简化我们许多的代码,但是该有的功能一点也不少。那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创原创 2022-06-09 14:06:03 · 523 阅读 · 1 评论 -
聊聊领域驱动设计
最近体会到了反噬力,接下来在思想和行动上都要改改了。今天还是来聊编程相关的。每当看到结对编程、测试驱动开发、敏捷开发之类的字眼,我心中总是泛起一丝凉凉的感觉。这次我们来聊DDD(Domain Driven Design), 第一次听这概念还是从左耳朵耗子(陈皓先生)那里了解的,当时他还给我送了一本相关的书。在开始了解的阶段,我觉得这玩儿就是个鸡肋,可落地性很差。但是,随着我了解的深入,我发现了自己固有的偏见。于是,我私下问了几个大厂的同行,他们说DDD并没有使用起来,但正在探索引入和使用。下面,来聊一聊D原创 2022-06-05 16:31:15 · 302 阅读 · 0 评论 -
1.5W字Docker详解,从入门到下地干活一条龙
什么是 Linux 容器Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。更加详细地来说,请您假定您在开发一个应用。您使用的是一台笔记本电脑,而且您的开发环境具有特定的配置。其他开发人员身处的环境配置可能稍有不同。您正在开发的应用依赖于您当前的配置,还要依赖于某些特定文件。与此同时,您的企业还拥有标准化的测试和生产环境,且具有原创 2022-05-25 14:06:01 · 376 阅读 · 0 评论 -
面试官:用分库分表如何做到永不迁移数据和避免热点问题?
一、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。正在上传…重新上传取消水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或原创 2022-05-25 11:41:12 · 231 阅读 · 0 评论 -
面试官:请你介绍一下缓存穿透、缓存空值、缓存雪崩、缓存击穿的,通俗易懂
雪崩是后端服务中的一个专业名词,为了理解它,我们循序渐渐地来介绍。雪崩是积累性的问题,雪崩之下,没有一片雪花是无辜的。今天,来聊聊缓存穿透、缓存击穿、缓存雪崩相关的问题。相信大家对这几个概念会有更清晰的认识。对于互联网开发人员来说,肯定会熟悉雪崩这个概念,貌似有点谈虎色变的感觉。如果后端服务雪崩了,那就GG了。今天写的这个主题内容,其实非常基础,但是作为高并发非常重要的几个场景,绝对绕不开,估计大家面试时,也经常会遇到。这个主题的文章,网上非常多,但是感觉没有合适的,要么文章不够精炼,要么就原创 2022-05-25 09:01:43 · 405 阅读 · 0 评论 -
一线大厂面试官问:你真的懂电商订单开发吗?
昨天有个朋友去面试,被问到订单系统如何设计,主要是因为他简历上有个电商相关的项目,然后就因为答得太过片面挂了。所以如果你的简历上也写了商城项目,那你一定要认真看完本文。很多同学都很疑惑为什么现在的商城项目都烂大街了,为什么还那么多人写?因为一个好的商城项目的的确确能把你所学的东西统合起来,而难度又不至于太高,所以一直都是很多刚毕业的学生首选。当然如果你的技术非常过硬,那肯定可以选择更多让人眼前一亮的项目。关于商城项目我之前也写过一篇文章推荐了,感兴趣的朋友可以去看看好了,闲话就说到这,本文主要讲原创 2022-05-25 08:55:12 · 578 阅读 · 1 评论 -
面试官:Spring Aop 与 AspectJ 有什么区别和联系?
区别AspectJAspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。spring aopSpring提供了四种类型的Aop支持 基于经典的SpringAOP 纯POJO切面 @ASpectJ注解驱动的切面 注入式AspectJ切面(其实与Spring并无多大的关系,这个就是使用AspectJ这个框架实现Aop编程) 基于经典的SpringA原创 2022-05-23 13:45:39 · 165 阅读 · 0 评论 -
Spring Boot 面试杀手锏:自动配置原理
不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。当然,作为Spring Boot的精髓,自动配置原理的工作过程往往只有在“面试”的时候才能用得上,但是如果在工作中你能够深入的理解Spring Boot的自动配置原理,将无往不利。Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),这原创 2022-05-19 18:18:26 · 102 阅读 · 0 评论 -
京东白条技术架构进化分享,这篇总算是讲清楚了 ~
相信大家都听说过单体和我服务,那么,单体到微服务架构的数据是如何演进的呢?这是个有意思的话题。今天,我们一起来看看,希望大家都有收获和启发。京东白条的快速发展满足了当前人们日益增长的消费需求。在京东商城上用京东白条来支付,已经成为一大批用户的消费习惯,更是在某种意义上成为了京东对外的『标签』。而作为一家互联网金融消费平台,京东白条的后台技术团队更是不容忽视的存在。而其也正是支撑京东白条自 2014 年初上线伊始,至今服务数亿用户的最终根源所在。正是京东白条技术团队多年的努力,才造就了当前京东白条原创 2022-05-16 14:44:22 · 950 阅读 · 0 评论 -
Kubernetes 架构核心点总结
一个目标:容器操作 两地三中心 四层服务发现 五种Pod共享资源 六个CNI常用插件 七层负载均衡 八种隔离维度 九个网络模型原则 十类IP地址 一个目标:容器操作;两地三中心;四层服务发现;五种Pod共享资源;六个CNI常用插件;七层负载均衡;八种隔离维度;九个网络模型原则;十类IP地址;百级产品线;千级物理机;万级容器;相如无亿,K8s有亿:亿级日服务人次。一个目标:容器操作Kubernetes(k8s)..原创 2022-05-14 13:55:34 · 107 阅读 · 0 评论 -
面试官:你天天用 Lombok,说说它什么原理?我答不上来…
Lombok如何使用 功能 编译时注解 注解处理工具apt 定义注解 定义注解处理器 定义使用注解的类(测试类) 相信大家在项目中都使用过Lombok,因为能够简化我们许多的代码,但是该有的功能一点也不少。那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情..原创 2022-05-14 13:52:40 · 143 阅读 · 0 评论 -
架构师之Mybatis面试专题及答案,大厂必问
1、什么是 MyBatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2、讲下 MyBatis 的缓存答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/>3、Mybatis 是如何进行分页的?分页插件的原理是什么?答:1)Mybat原创 2022-05-14 09:51:35 · 204 阅读 · 0 评论 -
面试官:如果让你作技术负责人,你会如何从0搭建公司后端技术栈
如何您是一名创业公司的负责人,如何从0搭建公司的后端技术栈。今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等。整个后台技术栈我的理解包括 4 个层面的内容:语言:用了哪些开发语言,如:C++/Java/Go/PHP/Python/Ruby 等等;组件:用了哪些组件,如:MQ 组件,数据库组件等等;流程:怎样的流程和规范,如:开发流程,项目流程,发布流程,监控告警流程,代码规范等等;系统:系统化建设,上面的流程需要有系统来.原创 2022-05-14 09:32:14 · 385 阅读 · 0 评论 -
大厂面试冲刺,Java“实战”问题三连,你碰到了哪个?
Java“实战”面试题1:如果用mybatis批量插入数据时需要返回主键,你是怎么做的? Java“实战”面试题2:在微服务中你是如何实现不同服务间session 共享的? Java“实战”面试题3:你了解分库分表么?分库分表一般出现在哪些场景下?面试题1:如果用mybatis批量插入数据时需要返回主键,你是怎么做的?需要在Mapper.xml的中标签中配置useGeneratedKeys和keyProperty两个属性,就可以在批量插入时返回主键。比如有个表t_user,里面有 us原创 2022-05-12 09:50:52 · 106 阅读 · 0 评论 -
虾皮二面:MySQL 支持哪些存储引擎?MyISAM 和 InnoDB 的区别是什么?
分享一道群友面试虾皮遇到的 MySQL 面试真题。原面试题如下: MySQL 支持哪些存储引擎?如何查看?默认使用哪个? 存储引擎基于数据库还是表? MyISAM 和 InnoDB 的区别是什么?如何选择? 昨天抽了一晚上对这些问题进行了解答,希望对准备面试以及 MySQL 复习知识点的小伙伴有帮助。马上秋招就来了,最近一直在抽时间更新面试真题MySQL 核心在于存储引擎,想要深入学习 MySQL,必定要深入研究 MySQL 存储引擎。MySQL 支持哪些存储引擎?原创 2022-05-12 09:11:20 · 416 阅读 · 0 评论 -
招银网络二面:Exception 和 Error 有什么区别?
今天来分享一道群友面试招银网络遇到的Java 异常面试真题。原面试题:Exception 和 Error 有什么区别?Checked Exception 和 Unchecked Exception 有什么区别?finally 中的代码一定会执行吗?这篇文章我除了会对群友面试遇到的面试真题进行了解答,还会顺带总结一下 Java 异常部分其他比较常见的问题,希望对你有帮助。马上秋招就来了,最近一直在抽时间更新面试真题(原创不易,有帮助的话,点赞分享就是对 Guide 最大的鼓励):Java ..原创 2022-05-12 09:08:42 · 6779 阅读 · 0 评论 -
如何写出一手好 SQL ?很有必要
背景最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是没有命中索引和没有分页处理。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些SQL的过程中,总结了一些经验分享给大家,如果有错误欢迎批评指正。MySQL性能最大数据量抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。文件系统 单文件大小限制 FAT32 最大4G NTFS 最大64..原创 2022-05-10 16:25:08 · 132 阅读 · 0 评论 -
面试官:说说 MyBatis 二级缓存?关联刷新实现?我懵B了
1、MyBatis缓存介绍Mybatis提供对缓存的支持,但是在没有配置的默认情况下,它只开启一级缓存,二级缓存需要手动开启。一级缓存只是相对于同一个SqlSession而言。也就是针对于同一事务,多次执行同一Mapper的相同查询方法,第一查询后,MyBatis会将查询结果放入缓存,在中间不涉及相应Mapper的数据更新(Insert,Update和Delete)操作的情况下,后续的查询将会从缓存中获取,而不会查询数据库。二级缓存是针对于应用级别的缓存,也就是针对不同的SqlSession做.原创 2022-05-10 11:45:59 · 295 阅读 · 0 评论 -
两个通宵熬出来的Java互联网大厂最新面试题收集整理1000道
最近接触到很多面试相关的内容,所以就专门整理了一下,内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈。后续会出专门的面试视频专题,欢迎关注。1.MyBatis专题1、什么是Mybatis? 1、Mybatis 是一个半 ORM( 对象关系映射)框架,它内部封装了 JDBC,开发时只需要关原创 2022-05-10 09:38:42 · 871 阅读 · 0 评论 -
面试常问: Lombok的原理是什么?
相信大家在项目中都使用过Lombok,因为能够简化我们许多的代码,但是该有的功能一点也不少。那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具。简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。那么Lombok到底是如原创 2022-05-10 09:35:03 · 316 阅读 · 0 评论 -
一周面了20多场,新鲜面经奉上
大家看到这篇文章的时候,应该是我在新公司的第一天,很不幸,周六去打羽毛球的时候脚崴了,得瘸着腿去公司了,周末在家给大家码码面经吧先给大家看下我的面试记录吧我的面试感受先说一个字 是真的「累」。。。。。安排的太满的后果可能就是经常一天只吃一顿饭,一直奔波在路上不扯这个了,给大家说说面试吧,Moon 工作大概两年多的时间,大家可以参考下在整个面试过程中,问的最多的几个问题 1.Java 本地锁到分布式锁,各种锁的场景,为什么要用,以及不同锁实现方式的底层,优缺点,还有 voli原创 2022-05-10 09:26:50 · 183 阅读 · 0 评论 -
行云集团高级java工程师面试,25k-50k工资水平真不错
下面是正文。由于没怎么准备,先去市场看看现在的面试行情,大部分知识都是以前积累的行云集团-高级 Java 工程师岗位薪资范围:25k~50k ,3~5年经验 Java 高级开发工程师一面(60min) 介绍项目(20min):面试官往死里抠你的职责,项目上下游,项目架构,你如何做的服务拆分? Spring Bean 的生命周期?这部分我主要根据自己写的一个小框架回答了,因为这个小框架拦截了BeanPostProcessor,所以在 Spring 容器在启动的时候会..原创 2022-05-09 22:34:00 · 539 阅读 · 1 评论 -
腾讯二面:引入RabbitMQ后,你如何保证全链路数据100%不丢失 ?
我们都知道,消息从生产端到消费端消费要经过3个步骤: 生产端发送消息到RabbitMQ; RabbitMQ发送消息到消费端; 消费端消费这条消息; 这3个步骤中的每一步都有可能导致消息丢失,消息丢失不可怕,可怕的是丢失了我们还不知道,所以要有一些措施来保证系统的可靠性。这里的可靠并不是一定就100%不丢失了,磁盘损坏,机房爆炸等等都能导致数据丢失,当然这种都是极小概率发生,能做到99.999999%消息不丢失,就是可靠的了。下面来具体分析一下问题以及解决方案。原创 2022-05-09 09:54:53 · 124 阅读 · 0 评论 -
大厂面试官问:说说并发编程的12种业务场景,怎么去操作
前言并发编程是一项非常重要的技术,无论在面试,还是工作中出现的频率非常高。并发编程说白了就是多线程编程,但多线程一定比单线程效率更高?答:不一定,要看具体业务场景。毕竟如果使用了多线程,那么线程之间的竞争和抢占cpu资源,线程的上下文切换,也是相对来说比较耗时的操作。下面这几个问题在面试中,你必定遇到过: 你在哪来业务场景中使用过多线程? 怎么用的? 踩过哪些坑? 今天聊聊我之前在项目中用并发编程的12种业务场景,给有需要的朋友一个参考。1. 简原创 2022-05-09 09:11:58 · 429 阅读 · 0 评论 -
面试官问:如何用Elasticsearch实现Word、PDF,TXT文件的全文内容检索?
Elasticsearch简介 开发环境 核心问题 文件上传 关键字查询 编码 导入依赖 文件上传 文件查询 多文件测试 还存在的一些问题 简单介绍一下需求 能支持文件的上传,下载 要能根据关键字,搜索出文件,要求要能搜索到文件里的文字,文件类型要支持word,pdf,txt 文件上传,下载比较简单,要能检索到文件里的文字,并且要尽量精确,这种情..原创 2022-05-08 23:44:45 · 296 阅读 · 0 评论 -
面试官问:你真的了解 Synchronized 吗?
前言Synchronized想必大家在工作中一定有接触过,它算是Java并发场景下实现多线程安全一种比较直接的操作。有人会说它慢,确实。在JDK1.6之前,它有另一个名称叫做:重量级锁。但是从1.6版本起,它就在不断被优化。现如今已经是很成熟的并发安全技术;所以关于Synchronized的考察也常常成为面试官青睐的话题。本文我们会使用图解的方式解析Synchronized的使用和原理,让我们开始吧~对象锁和类锁什么是Synchronized?Synchronized是Java中的一个关原创 2022-05-08 11:04:52 · 167 阅读 · 0 评论 -
面试官:说说 WebSocket 和 Socket 及 Http 的区别?
Socket是什么? TPC/IP协议是传输层协议,主要解决数据如何在网络中传输; Socket是对TCP/IP协议的封装和应用(程序员层面上); 而HTTP是应用层协议,主要解决如何包装数据。 TCP/IP和HTTP协议的关系是:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议。应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB.原创 2022-05-07 23:09:00 · 628 阅读 · 0 评论 -
堪称神级的阿里巴巴“高并发”教程《基础+实战+源码+面试+架构》
一、关于高并发高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11、双12,就会产生高并发。又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击。1 高并发会来带的后果服务端:导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想的设计是不一样的,比如:出现重复的数据记录,多次添加了用户积分等。 用户角度:网站打不开 服务器雪崩:2 并发下的数据处理通过表设计,如:记录表添加唯一约束,数据处理逻辑使用事物防止并发下的数据错乱问题。通过服务端锁进程原创 2022-05-07 10:41:18 · 684 阅读 · 0 评论 -
美团一面:如何优化慢SQL?
前言在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多 SQL 语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的 SQL 就是整个系统性能的瓶颈。SQL 优化一般步骤| 通过慢查询日志等定位那些执行效率较低的 SQL 语句| explain 分析SQL的执行计划需要重点关注 type、rows、filtered、extra。type 由上至下,效率越来越高: ALL 全表扫描 inde...原创 2022-05-07 10:36:17 · 147 阅读 · 0 评论 -
Kubernetes 架构核心点总结
目录: 一个目标:容器操作 两地三中心 四层服务发现 五种Pod共享资源 六个CNI常用插件 七层负载均衡 八种隔离维度 九个网络模型原则 一个目标:容器操作;两地三中心;四层服务发现;五种Pod共享资源;六个CNI常用插件;七层负载均衡;八种隔离维度;九个网络模型原则;十类IP地址;百级产品线;千级物理机;万级容器;相如无亿,K8s有亿:亿级日服务人次。一个目标:容器操作Kubernetes(k8s)是自动化..原创 2022-05-07 10:30:30 · 132 阅读 · 0 评论 -
Zookeeper的选举机制和同步机制超详细讲解
前言zookeeper相信大家都不陌生,很多分布式中间件都利用zk来提供分布式一致性协调的特性。dubbo官方推荐使用zk作为注册中心,zk也是hadoop和Hbase的重要组件。其他知名的开源中间件中也都出现了zk的身影。有很多童鞋认识zk很久了,知道其基本理念,知道如何使用。但当面试时问到集群zk之间的选举和数据同步机制时,就陷入了盲区。其实很多的分布式中间件的选举和同步,都和zk有异曲同工之妙。这篇文章我就来重点聊下关于zk集群之间的选举和同步机制。ZK集群的部署首先我们来看下半数原创 2022-05-07 10:22:05 · 1435 阅读 · 0 评论 -
一线大厂二面:CAP原则为什么只能满足其中两项?而不能同时满足
目录前言 CAP针对对象 CAP的定义 可用性和容错性的区别 CAP定理 取舍 权衡 总结前言我们学习分布式系统,就一定听说过CAP定理,尤其在学习分布式事务时,都是以这个定理作为开场。这个定理起源于柏克莱加州大学的计算机科学家埃里克·布鲁尔在2000年的分布式计算原则研讨会上提出的一个猜想。 在2002年,麻省理工学院的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明,使之成为一个定理。定理讨论了在两个互相矛盾的请求到达彼此连接不通的两个不同的分布式节点的时候的处理方案原创 2022-05-06 16:02:44 · 332 阅读 · 0 评论 -
虎牙技术二面:详细说说Kafka拉消息的过程?
副本机制是Kafka实现数据高可靠性的基础:同一个分区下的多个副本分散在不同的Broker机器上,它们保存相同的消息数据以实现高可靠性。那如何确保所有副本上的数据一致性呢?最常见方案当属Leader/Follower备份机制(Leader/Follower Replication)。Kafka分区的:某个副本会被指定为Leader,负责响应客户端的读、写请求 其他副本自动成为Follower,被动同步Leader副本中的数据被动同步:Follower副本不断向Leader副本发送读取请求,以获取Lea原创 2022-05-06 09:45:22 · 367 阅读 · 0 评论 -
Maven 最全教程,看了必懂, 程序员面试必问
一、为什么使用Maven这样的构建工具【why】 二、maven是什么【what】 三、安装maven 四、第一个maven 五、仓库和坐标 六、依赖 七、生命周期 八、Eclipse中使用maven 九、maven工程的依赖高级特性 十、build配置 图片前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下。一、为什么使用Maven这样的构建工具【..原创 2022-05-05 15:44:08 · 284 阅读 · 0 评论 -
提高 3000% 性能,只加一行代码
我们公司运维着 15 个 Web 应用,主要的工作就是按需交付基于数据驱动的 Web 应用程序,用于支撑实时决策的制定。这些应用的预期是在高负载下依然保持高可用。其中的主 Web 应用是一个历史遗留的大型多服务系统。系统中的大部分服务都有超过 15 年的历史并且经过了好几代人的重构。试想一下,负责编写系统代码的人现在可能已经离职或已经调整到其他岗位了。过去几年我们团队的主要目标是就是针对这些服务进行性能优化。本次我将和你分享在性能优化的过程中,我们的一些主要经验总结和当时决定这么做的原因。原创 2022-05-05 09:03:17 · 153 阅读 · 0 评论 -
两万字详解,InnoDB锁专题,进阶必备
前言大家好,本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。 为什么需要加锁呢? InnoDB的七种锁介绍 一条SQL是如何加锁的 RR隔离级别下的加锁规则 如何查看事务加锁情况 死锁案例分析 1. 为什么需要加锁?数据库为什么需要加锁呢?在日常生活中,如果你心情不好。想要一个人静静,不想被比别人打扰,你就可以把自己关进房间里,并且原创 2022-05-05 08:58:49 · 627 阅读 · 0 评论