自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java面试题大全(整理版)1000+面试题附答案详解,最全面详细,看完稳了

进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全,其中概括的知识点有:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈共有1000+道面试题。对于Java后端的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的

2022-05-11 20:51:42 61085 1678

原创 聊聊高可用的 11 个关键技巧

最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、Elasticsearch、Kafka、微服务、Linux等等。

2022-09-18 14:41:20 759 1

原创 一文打尽 MySQL 面试: 经典 35 问

相信大家小时候学习汉字的时候都会查字典,想想你查字典的步骤,我们是通过汉字的首字母 a~z 一个一个在字典目录中查找,最终找到该字的页数。想想,如果没有目录会怎么样,最差的结果是你有可能翻到字典的最后一页才找到你想要找的字。索引就「相当于我们字典中的目录」,可以极大的提高我们在数据库的查询效率。回表就是先通过数据库索引扫描出该索引树中数据所在的行,取到主键 id,再通过主键 id 取出主键索引数中的数据,即基于非主键索引的查询需要多扫描一棵索引树.

2022-09-18 14:38:02 954 2

原创 历经70+场面试,我发现了大厂面试的…

又是一年秋招季,想起了库森在去年秋招时面试了50余家,加上暑期实习面试了20余家,加起来也面试了70余场。基本把国内有名的互联网公司都面了一遍,不敢说自己的面试经验很丰富,但也是不差的。这次库森专门把大厂的面试做了个总结,希望帮到大家拿到理想offer。互联网公司从投递拿到offer的完整流程一般有:笔试、测评面试offer沟通、三方限于篇幅,这篇文章主要讲面试中的那些事。每轮面试的整个流程一般分三部分,第一部让你做个自我介绍,第二部分面试官考察专业能力环节,最后一部分是反问面试官环节。

2022-09-18 14:34:52 891 3

原创 消息队列原理和选型:Kafka、RocketMQ 、RabbitMQ 和 ActiveMQ

消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个消息队列可以被一个也可以被多个消费者消费,包含以下 3 元素:Producer:消息生产者,负责产生和发送消息到 Broker;Broker:消息处理中心,负责消息存储、确认、重试等,一般其中会包含多个 Queue;Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理。

2022-09-18 14:32:49 471

原创 分库分表真实案例,扩容10倍容量

数据存储我们一般采用MySQL,但是面对海量数据,单表在容量及性能上都无法支撑。这时我们要如何解决。今天就给大家讲讲携程的分表业务是如何落地的。一、背景随着机票订单业务的不断增长,当前订单处理系统的架构已经不能满足日益增长的业务需求,系统性能捉襟见肘,主要体现在以下方面:数据库CPU资源在业务高峰期经常达到50%以上,运行状况亮起了黄灯磁盘存储空间严重不足,需要经常清理磁盘数据腾挪可用空间系统扩容能力不足,如果需要提升处理能力只能更换配置更好的硬件资源因此我们迫切需要调整和优化机票订单数据库的架构,从而提升

2022-09-18 14:28:54 881 1

原创 RocketMQ 的长轮询如何实现 ?

所以从以上的分析可以看出,RocketMQ对于push的消费方式的实现是基于长轮询机制来实现的,同时平衡了实时和压力,这其实就很nice了。最后我想说一句,其实不论是pull还是push,又或是轮询和长轮询,其实都是一种理论或者说是一种思想,不单单是MQ的东西,就比如在Nacos中,也使用了push和长轮询机制。但是这些理论在不同产品的具体实现,实现方式可能不太一样,但都是大同小异,所以当你懂了这些思想,再看其它框架的源码,其实就很容易了。

2022-09-18 14:16:49 373

原创 Docker从入门到干事,看这一篇就够了

Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。

2022-09-16 21:39:16 455

原创 腾讯一面:说一说 MySQL 中索引的底层原理

最近有很多读者要我出一些面试题的文章,一般我会给他一个老周整理的电子书,但有些读者反馈回来的面试题我觉得还是蛮经典的,而老周又在写系列的文章,本着对读者负责的态度,我会穿插写几篇我认为比较经典的面试题,让大家对这种经典问题不再是背八股文,而是深入底层原理以及数据结构。后续再碰到这类问题,不管哪个公司问的,你都会得心应手、从容不迫的回答。

2022-09-16 16:02:27 349

原创 Java 基础常见知识点&面试题总结(上),2022 最新版

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以, Java 程序运行时相对来说还是高效的(不过,和 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。我们需要格外注意的是.class->机器码这一步。

2022-09-16 15:56:40 332

原创 求求你们了,MyBatis 批量插入别再乱用 foreach 了,5000 条数据花了 14 分钟。。

并且,查阅相关资料可知,values的增长与所需的解析时间,是呈指数型增长的。所以,如果非要使用 foreach 的方式来进行批量插入的话,可以考虑减少一条 insert 语句中 values 的个数,最好能达到上面曲线的最底部的值,使速度最快。乍看上去这个foreach没有问题,但是经过项目实践发现,当表的列数较多(20+),以及一次性插入的行数较多(5000+)时,整个插入的耗时十分漫长,达到了14分钟,这是不能忍的。的语句,无法采用缓存,那么在每次调用方法时,都会重新解析sql语句。

2022-09-14 19:38:58 299

原创 万字总结:分布式系统的 38 个知识点

这是一篇概括性的综述类文章,可能并没有很多的干货,当然也限于 “一灰灰” 我个人的能力,上面的总结可能并不准确,如有发现,请不吝赐教全文总结如下主备,主从,多主多从,普通无中心集群,数据分片架构共识算法:paxos, raft, zab一致性协议:2pc, 3pc数据同步:gossip分区的一致性 hash 算法:基于 hash 环,减少节点动态增加减少对整个集群的影响;适用于数据分片的场景适用于一致性的 Quorum NWR 算法:投票算法,定义如何就一个提案达成共识。

2022-09-07 15:14:18 329

原创 MySql 主从同步介绍

MySQL 主从同步,即 MySQL Replication,可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL 数据库自带主从同步功能,经过配置,可以实现基于库、表结构的多种方案的主从同步。Redis 是一种高性能的内存数据库,但不是今天的主角;MySQL 是基于磁盘文件的关系型数据库,相比于 Redis 来说,读取速度会慢一些,但是功能强大,可以用于存储持久化的数据。

2022-09-07 15:07:31 642

原创 Redis 进阶篇:发布订阅模式原理与运用

Redis 发布订阅(Pus/Sub)是一种消息通信模式:发送者通过PUBLISH发布消息,订阅者通过SUBSCRIBE订阅接收消息或通过取消订阅。主要包含三个部分组成:「发布者」、「订阅者」、「Channel」。发布者和订阅者属于客户端,Channel 是 Redis 服务端,发布者将消息发布到频道,订阅这个频道的订阅者则收到消息。如下图所示,三个「订阅者」订阅「ChannelA」频道::订阅一个或者多个频道;退订指定频道;向指定频道发送消息;订阅指定模式;退订指定模式。

2022-09-07 15:05:36 901 1

原创 Mysql 和 Redis 数据如何保持一致

Read Through 和 WriteThrough 的流程类似,只是在客户端查询数据 A 时,如果缓存中数据 A 失效了(过期或被驱逐淘汰),则缓存会同步去数据库中查询数据 A,并缓存起来,再返回给客户端。Redis 是用来当缓存,用来提升数据访问的性能。可见,最后缓存中的数据 A 和数据库中的数据 A 是一致的,理论上可能会出现一小段时间数据不一致,不过这种概率也比较低,大部分的业务也不会有太大的问题。可见,最后缓存中的数据 A 跟数据库中的数据 A 是不一致的,缓存中的数据 A 是旧的脏数据。

2022-09-07 15:02:08 311 2

原创 Docker 与虚拟化技术浅析第一弹之 docker 与 Kubernetes

Docker 是一个开源的引擎,可以轻松地为任何应用创建一个轻量级的、 可移植的、自给自足的容器。开发者在笔记本电脑上编译测试通过的容器可以批量地在生产环境中部署,包括 VMs (虚拟机)、bare metal、OpenStack 集群和其他基础应用平台。提供轻量简单的建模方式;职责的逻辑分离;快速高效的开发生命周期;鼓励使用面向服务的架构,即单个容器运行单个应用。

2022-09-07 15:00:11 304

原创 用 Dubbo 传输文件?被老板一顿揍

其实 Dubbo 不光是不适合传输文件,大报文场景下都不太合适,Dubbo 的设计更适合小业务报文的传输(默认报文大小只有8MB)。所以如果有文件上传的场景,尽可能的用客户端直传的方式吧,友好又节省资源!

2022-09-06 20:38:59 240

原创 从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化

2014 年3 月 JDK 8 发布,自那以来 JDK 又连续发布了许多版本,直到今日的 JDK 18 是 Java 的第十个版本。借此机会,我们来回顾一下 HotSpot JVM 的垃圾回收器的发展全过程。HotSpot JVM 中负责管理应用程序堆的组件叫做“垃圾回收器”(Garbage Collector,即GC)。GC 负责管理应用程序堆对象的整个生命周期,从应用程序分配内存到内存被回收,都由 GC 负责。从高层来看,JVM 垃圾回收算法的最基本功能如下:当应用程序请求分配内存时,GC 负责提供内存

2022-09-06 20:34:18 545

原创 面试官:MQ 消息丢失、重复、积压问题,如何解决?

至此,我们讲解了 MQ 消息队列的热门问题的解决方案,无论是初中级还是高级研发工程师,本篇文章的内容都是你需要掌握的,你都可以从这几点出发,与面试官进行友好的交流。我来总结一下今天的重点内容。如何确保消息不会丢失?你要知道一条消息从发送到消费的每个阶段,是否存在丢消息,以及如何监控消息是否丢失,最后才是如何解决问题,方案可以基于“ MQ 的可靠消息投递 ”的方式。如何保证消息不被重复消费?在进行消息补偿的时候,一定会存在重复消息的情况,那么如何实现消费端的幂等性就这道题的考点。如何处理消息积压问题?

2022-09-06 20:29:17 354

原创 不懂SpringApplication生命周期事件?那就等于不会Spring Boot嘛

的生命周期、事件的理解。有句话A哥不是经常挂嘴边的麽,你对Spring Framework有多了解决定了你对Spring Boot有多了解,你对Spring Boot的了解深度又会制约你去了解Spring Cloud,一环扣一环。让你的终端(可以是控制台、可以是日志文件)支持Ansi彩色输出,使其更具可读性。

2022-09-06 20:22:18 296

原创 2万字 + 50 张图,细说 JVM 内存分布、内存对齐、压缩指针

本文笔者详细介绍了Java普通对象以及数组类型对象的内存布局,以及相关对象占用内存大小的计算方法。以及在对象内存布局中的实例数据区字段重排列的三个重要规则。以及后边由字节的对齐填充引出来的false sharding问题,还有Java8为了解决false sharding而引入的@Contented注解的原理及使用方式。为了讲清楚内存对齐的底层原理,笔者还花了大量的篇幅讲解了内存的物理结构以及CPU读写内存的完整过程。最后又由内存对齐引出了压缩指针的工作原理。CPU访问性能。

2022-09-06 20:16:38 402

原创 阿里 P8MySQL,基础、索引、锁、日志、调优、开放问题等等 168 道题目

你知道都问些啥吗?昨天小编特意去搜集了一些 MySQLP8 问题,经过整理归纳分为问题等等 168 道题目,

2022-09-06 19:58:30 319 1

原创 专访阿里云 RocketMQ 团队:现代微服务架构需要新的消息系统

(花名:隆基),Apache RocketMQ 联合创始人,阿里云资深技术专家,阿里云消息产品线负责人。国际消息领域专家,致力于消息、实时计算、事件驱动等方向的研究与探索,推进 RocketMQ 云原生架构、超融合架构的演进。

2022-09-06 19:51:03 186

原创 去哪儿旅行微服务架构实践

首先介绍一下去哪儿网的业务。去哪儿网是一个典型的在线旅游平台,它上面的业务繁多,有机票、酒店、度假、火车票、汽车票等等。这些业务都有不同的业务流程,其中机票的标准化和线上化是最高的,但是像酒店这样的业务,在线化和标准化就比较低,同样的名字可能是不一样的酒店。这些业务在从商品、库存到整个交易过程其实都是不一样的,所以这些业务从背后来看还是相对比较复杂的。我们为什么要选择微服务,其实有以下几个方面的原因。第一个就是业务逐渐复杂,最早去哪儿网其实只有机票的比价,而且是一个搜索比价,是没有交易环节的。

2022-09-06 19:46:59 309

原创 10 年经验总结的数据结构与算法详解文档

相信想进一线大厂的程序员是非常多的,也是程序员一直以来的梦,不仅仅是因为薪资比较高,更多的是因为大厂比较锻炼人,将来的发展空间也是非常大的!近年来,在面试大厂中,算法的比重是越来越高了,像 BATJ TMDPS,尤其是字节,数据结构与算法极其重要。

2022-09-05 16:16:23 117

原创 牛皮了 终于有阿里架构师把困扰我多年的数据结构与算法讲明白了

对于一个程序来说,数据结构和算法有多重要呢?1、它是必备技能,不懂数据结构与算法的人不可能写得好代码。2、它是面试的敲门砖、职场晋升的加速器。3、日常开发中的性能问题需要通过优化算法和数据结构来解决。4、底层开发中需要使用非常多的数据结构和算法知识,以保证底层系统的稳定性和高效性,例如,华为 EMUI 系统通过优化算法和数据结构来保障系统使用 2 年不卡顿。5、计算机科学的很多新行业都离不开数据结构和算法作为基石,如大数据、人工智能等等。

2022-09-05 15:51:21 117

原创 盘点 2022 年 github 上收录最实用的 java 岗面试题笔记,金九银十必看

一切技术的产生与发展都离不开最基本的原理,只要追本溯源,了解技术体系最基本、最底层的原理,我们就能根据这些知识储备建立自己的后端技术框架,从而搭建一条完整的成长道路。最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、

2022-09-04 19:30:00 274 2

原创 4 年 Java 程序员十面阿里终拿下 offer,评级 P6+ 年薪 30-40w 无股票

虽然天猫,蚂蚁金,菜鸟都归属阿里旗下,但每个面试官问的问题都不一样,相同点主要在流程方面。面试开始会让自我介绍,主要业务架构和技术架构两部分。业务架构一般不会深究,但要面试官听明白,并且一般面试官会顺着问是如何根据这些业务去设计技术架构的。技术架构部分,会根据自我介绍中提到的技术点问,是为什么使用这些技术,解决了哪些问题,碰到哪些困难,是如何思考和解决的,最后再顺带一些技术本身底层的设计方面的问题:

2022-09-04 19:24:27 1757 3

原创 京东十年 T8 架构师手撕 MySQL:手写 656 页核心知识,超 85% 问题全解

MySQL 是由于、、成为现在最流行的开源数据库。

2022-09-04 19:21:16 155

原创 历经 70+ 场面试,我发现了大厂面试的 bug,并总结其中心得

面试官在面试前可能没看过你的简历,通过自我介绍的时候了解你的情况可以用最擅长的来收尾,引导面试官的提问别扯没用的经历,比如面试互联网大厂的技术岗,不要讲太多社团经历人菜没关系,学校差没关系,项目 low 没关系,但一定要自信。

2022-09-04 17:08:14 441 1

原创 聊聊 MySQL 事务二阶段提交

每个事务线程中都有一个 commit_low 属性,如果 leader 线程已经把 follower 线程的事务也一起提交了,会把 follower 线程的该属性值设置为 false,follower 线程在执行收尾工作的时候,就不需要再提交自己的事务了。如果 flush 子阶段的 leader 线程加入 sync 队列之前,sync 队列是空的,那么它又会成为 sync 子阶段的 leader 线程,否则,它和它的所有 follower 线程都会成为 sync 子阶段的 follower 线程。

2022-09-04 16:57:40 1188

原创 看完这份987页的Java面试宝典,发现应届生求职也没那么难,面试 so easy

前言现在已经九月底,金九银十也已经过去了一大半,很明显今年的面试季明显不如往年火热,对于求职者来说,也更难了一些。马上迎来国庆节,假期一过,十月份又过去了三分之一,综合来看今年确实不是面试的最佳时期,不过趁今年所剩的时间来好好准备,明年的金三银四或许会顺利得多。不过,对于今年的应届生来说,等到明年再去面试,竞争就更大了。不过,好在我们总能够找到一些好资源进行分享,今天分享的这份资料是987页的Java面试宝典,完整地看完之后,或许你就会觉得,应届生求职其实也没有那么难了。面试官箴言面试心得交流。

2022-09-02 16:01:24 217

原创 阿里云大咖亲码“阿里内部Java面试突击手册”全精华,看完再也不虚了面试官了

小编今天就为大家分享一份阿里内部Java面试突击手册,内容涵盖了:基础、JVM、多线程、springMyBatis、MySQL、微服务、Dubbo、Nginx、中间件、Linux、分布式等技术栈。面试,跳槽,每天都在发生,而对程序员来说"金九银十"更是面试和跳槽的高峰期,跳槽,更是很常见的,对于每个人来说,跳槽的意义也各不相同,可能是一个人更向往一个更大的平台,更好的地方,可以通过换一个环境改变自己的现状。可以分享给大家学习。阿里云大神亲码“阿里内部Java面试突击手册”无废话,全精华。

2022-09-02 15:45:23 746

原创 干了四年的Java面试官,给大家分享我面试时最爱问的Java面试题

2015 年,因为工作岗位的变动,开始负责给集团招聘一些技术人员,出于对公司的负责,也为了更好的胜任技术经理的职位,在面试的这件事上,我做了大量的“功课”,首先我研究了几乎所有大厂的面试题,还和负责招聘工作的几个朋友,详细的探讨了 Java 面试所要涉及的知识点,于是就有了今天大家看到的这 200 多道面试题。:身边从事 Java 开发的人员越来越多,我的表弟表妹们,朋友的表弟表妹们,朋友的朋友的表弟表妹们,每次问我要相同的面试复习材料,已经让我疲于应付,索性整理出来,直接发链接给他们。

2022-09-02 14:59:59 490 3

原创 Java基础常见面试题总结

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以, Java 程序运行时相对来说还是高效的(不过,和 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。我们需要格外注意的是.class->机器码这一步。

2022-09-02 14:00:52 403

原创 Redis 6 中的多线程是如何实现的?

.....// 1.1 主线程初始化// 1.2 启动 io 线程// 进入事件循环}在 initServer 这个函数内,Redis 做了这么三件重要的事情。创建一个 epoll 对象对配置的监听端口进行 listen把 listen socket 让 epoll 给管理起来在 initThreadedIO 中调用 pthread_create 库函数创建线程,并且注册线程回调函数 IOThreadMain。

2022-09-02 13:48:09 342

原创 RocketMQ 的长轮询如何实现 ?

所以从以上的分析可以看出,RocketMQ对于push的消费方式的实现是基于长轮询机制来实现的,同时平衡了实时和压力,这其实就很nice了。最后我想说一句,其实不论是pull还是push,又或是轮询和长轮询,其实都是一种理论或者说是一种思想,不单单是MQ的东西,就比如在Nacos中,也使用了push和长轮询机制。但是这些理论在不同产品的具体实现,实现方式可能不太一样,但都是大同小异,所以当你懂了这些思想,再看其它框架的源码,其实就很容易了。

2022-09-01 21:15:30 669

原创 字节一面:TCP 和 UDP 可以使用同一个端口吗?

TCP 和 UDP 可以同时绑定相同的端口吗?可以的。TCP 和 UDP 传输协议,在内核中是由两个完全独立的软件模块实现的。当主机收到数据包后,可以在 IP 包头的「协议号」字段知道该数据包是 TCP/UDP,所以可以根据这个信息确定送给哪个模块(TCP/UDP)处理,送给 TCP/UDP 模块的报文根据「端口号」确定送给哪个应用程序处理。因此, TCP/UDP 各自的端口号也相互独立,互不影响。多个 TCP 服务进程可以同时绑定同一个端口吗?

2022-09-01 21:12:58 198

原创 分布式接口幂等性、分布式限流:Guava 、nginx和lua限流

算法是死的,人是活的,先进的生产力来自于不断的创造,在技术领域尤其如此。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性。通过版本号的方式,来控制update的操作的幂等性,用户查询出要修改的数据,系统将数据返回给页面,将数据版本号放入隐藏域,用户修改数据,点击提交,将版本号一同提交给后台,后台使用版本号作为更新条件。

2022-09-01 21:09:08 268

原创 MySQL 死锁了,怎么办?

之前分享过的文章,然后很多读者对「插入意向锁」认识很迷糊。大家误以为「插入意向锁」是意向锁,也就是表锁,确实这个名字很让人误解。但是,。所以,我在原来文章的基础上补充了两个知识点:什么是插入意向锁?insert 语句是怎么加锁的?

2022-09-01 21:07:26 931

空空如也

空空如也

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

TA关注的人

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