自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【文章导读】2024 最新 Java 面试进阶指南!

Redis深入理解-Socket连接建立流程以及文件事件处理机制Redis深入理解-内核请求处理流程、数据传输协议Redis深入理解-三次握手、槽位机制Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举基于社区电商的Redis缓存架构-缓存数据库双写、高并发场景下优化基于社区电商的Redis缓存架构-用户分享内容的分页列表缓存延迟构建以及异步通知缓存重建基于社区电商的Redis缓存架构-写多读多场景下的购物车缓存架构基于社区电商的Redis缓存架构-库存模块缓存架构(上)基于

2023-12-12 18:59:58 1115

原创 腾讯后端一面:当 TCP 建立连接之后,TCP 和 UDP 的实时性是不是就差不多了?

来调整树的结构,满足上述的特性,保证了红黑树的平衡,使得查询性能较为稳定,在 Java 的 HashMap 中就使用到了红黑树来优化数据的查询性能。面试官可能是 Go 方向的,我面试的是 Java 方向的,所以面试官也没有问我简历上的项目,主要问了实验室中做的项目,哪个项目比较有技术挑战?这条性质确保了从根到叶子的路径上不会出现两个连续的红色节点,有助于避免树的局部区域出现过高的密度,这是通过颜色的变化来轻微调整树的平衡。5、从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

2024-04-19 15:06:18 839

原创 美团财务科技Java后端一面:面向对象、类加载过程、全限定类名相同的类是否可以同时被加载

因为 class 文件是由类加载器来完成的,如果 class 文件变更了,Tomcat 就会将原来的类加载器销毁,再创建新的类加载器来加载修改后的文件,以实现热部署功能。

2024-04-19 13:33:39 513

原创 美团财务科技后端一面:如何保证数据一致性?延时双删第二次失败如何解决?

在消费的时候可以去对失败操作进行处理,从延时队列中取出消息进行消费,如果失败了,可以进行指定次数的重试,如果只是因为网络抖动失败,那么一般重试就可以成功消费了,但是如果是 Redis 出现了问题,那么这一段时间内重试可能都还会存在问题,因此要考虑将失败的消息给放在数据库中存储起来,再定时进行消费对失败的消息进行补偿(不过 Redis 宕机的概率很小,一般不会发生)这样在用到数据的时候,直接从 ThreadLocal 中取出来,既保证了线程之间的数据隔离性,又保证了较好的性能(不必重复去获取)

2024-04-18 23:18:07 762

原创 【Java核心能力】美团优选后端一面:Java 八股文相关内容

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!在我后台回复 「资料」 可领取编程高频电子书!在我后台回复「面试」可领取硬核面试笔记!

2024-04-13 10:56:47 787

原创 【Java核心能力】编程功底-设计模式之策略模式

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!在我后台回复 「资料」 可领取编程高频电子书!在我后台回复「面试」可领取硬核面试笔记!

2024-04-10 19:41:00 664

原创 【Java核心能力】美团优选后端一面:网络 & 操作系统

虚拟内存是现代系统提供的对主存储器的抽象,是用于内存管理的一种技术虚拟内存的作用就是为每个进程提供了一个大的、统一的、私有的地址空间,让每个进程认为自己在独享内存虚拟内存的意义是定义了一块连续的虚拟地址空间,并且将内存空间扩展到了磁盘空间,也就是说一块连续的虚拟内存在进程看来是连续的,但是其实是多个物理内存碎片,并且还有一部分暂存在磁盘上,如果需要用到磁盘上的数据的话,需要进行数据交换。

2024-04-10 19:40:54 852

原创 【Java核心能力】RocketMQ 消息存储模型实现原理

commitlog存储消息实体,所有消息都顺序写入 commitlog是为了提升消费者的消费性能,消费者通过 consumequeue 可以快速定位到需要消费的数据在 commitlog 中的位置indexfile提供了根据 key 快速查找到对应消息的功能,原理就是对 key 建立索引,将相同 key 的消息串联在一起。

2024-04-07 09:00:00 967

原创 【Java核心能力】高频面试:了解零拷贝吗?Netty 中哪里用到了零拷贝?什么是 TCP 缓冲区?

零拷贝是计算机底层的优化技术,用于减少数据传输过程中的 CPU 拷贝次数,从而提升数据处理性能最后真正实现零拷贝使用了操作系统的 sendfile + SG-DMA 技术实现了 0 次 CPU 拷贝,2 次 DMA 拷贝,为什么 0 次 CPU 拷贝就是零拷贝呢,不是还有 DMA 拷贝呢?因为 DMA 拷贝是通过 DMA 控制器来进行的,所有 IO 设备与内存之间的数据传输都是通过 DMA 控制器来完成的,不需要 CPU 来参与,也就是说不占用 CPU 的时间片了,因此零拷贝指的是 0 次 CPU 拷贝。

2024-04-06 09:00:00 819

原创 【Java核心能力】面试:系统高可用,令牌桶算法和漏桶算法有什么区别?

滑动窗口限流指在一定时间窗口内限制请求的数量,并且随着时间的推移,新增的请求会被记入新的时间段内,通过滑动窗口限流可以使得限流更加平滑。

2024-04-05 09:00:00 617

原创 【Java核心能力】饿了么一面:Redis 面试连环炮

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!在我后台回复 「资料」 可领取编程高频电子书!在我后台回复「面试」可领取硬核面试笔记!

2024-04-04 00:54:35 804

原创 【Java核心能力】饿了么面试:Spring相关问题拷打

饿了么面试:Spring相关问题拷打Spring 和 SpringBoot 有啥区别?这个可以根据我们平常使用两个框架的经验来讲就好,不是非要去背出来两者在各个方面的区别从 使用方面 来说的话:Spring 的话,主要提供了 AOP 和 IOC 两个核心功能,像一些中间件框架都是基于 Spirng 来编写的,可以通过 Spring 来统一管理项目中的所有 Bean,这样就不需要我们自己去创建了,比较方便但是如果要基于 Spring 来做一个 Web 项目的话,我们还要自己去集成 MyBati

2024-04-03 13:29:42 624

原创 【Java核心能力】面试官:项目中布隆过滤器怎么用的?为啥要用,不用行不行?

一般是项目中用到了布隆过滤器,面试官提问的概率会大一些,如果项目中没有使用的话,可能不会问到,不过也可以将布隆过滤器加入到项目中,作为一个小亮点使用 布隆过滤器 一般就是用于快速判断某个元素是否在集合中出现了,可以用于解决 缓存穿透 的问题,布隆过滤器提供 一组哈希函数 h1, h2, …, hk ,对需要存储的数据使用哈希函数计算得到 k 个哈希值,将 BitMap 中这 k 个位置都设置为 1,如果这 k 个位置都是1,则 可能 在集合中,但是如果都不是1,则 一定不在 集合中

2024-04-02 16:37:11 800

原创 【Java核心能力】常用的设计模式了解吗?项目中用过哪些设计模式

常用的设计模式了解吗?项目中用过哪些设计模式设计模式是 很重要 的,因此一定要好好掌握一下,但是设计模式有很多,我们可以将常用的设计模式给先掌握熟练了常用的设计模式有: 单例 、 工厂 、 模板 、 代理 、责任链 、 策略 、 适配器 ,这里会总结一下常用设计模式的优点,以及对应的 UML 类图,可以重点掌握一下,并且尝试加入到自己的项目中

2024-04-01 21:00:00 247

原创 【Java核心能力】一篇文章了解 ZooKeeper 底层运行原理

该文章主要说一下 ZooKeeper 底层运行原理,以及其中比较核心的功能CAP 是分布式系统中的基本理论,一般只能满足 AP 和 CP,常用的注册中心 ZK 和 Nacos:ZooKeeper 符合 CP ,选择了一致性而抛弃了部分可用性 ,因为 ZK 集群中只有 Leader 节点可以写数据,如果 Leader 挂了,需要重新选举 Leader,在这期间 ZK 集群不可用,ZK 只有 Leader 可以写,所以整个写入操作是 中心化 的Nacos 符合 AP ,选择了可用性并且满足最终一致性

2024-03-28 21:33:10 982

原创 【Java核心能力】了解 Redis 的 IO 多路复用吗?

我们都知道 Redis 性能是很高的,它的高性能是基于 两个方面 :基于 内存 操作IO 多路复用基于内存操作比较容易理解,将所有的操作都放在 内存 中进行处理即可,所以对于 Redis 来说,内存可能会成为 性能的瓶颈

2024-03-27 16:02:39 1074

原创 【Java核心能力】RocketMQ 针对消息有序和消息积压的处理

RocketMQ 保证消息的有序性分为了两种:全局有序: 适用于并发度不大,并且对消息要求严格一致性的场景下通过创建一个 topic,并且该 topic 下只有一个队列,那么生产者向着一个队列中发消息,消费者也在这一个队列中消费消息,来保证消息的有序性局部有序: 适用于对性能要求比较高的场景,在设计层面将需要保证有序的消息放在 Topic 下的同一个队列即可保证有序

2024-03-27 12:43:50 624

原创 【Java核心能力】RocketMQ 的消息可靠性如何保证?

RocketMQ 的消息可靠性如何保证?RocketMQ 作为分布式消息中间件,肯定是要尽可能保证消息传输的 可靠性 ,要保证消息的可靠性,先来思考一下从哪些方面保证呢?这要看消息的生命周期,既然保证可靠性,那么就是要保证 A 发送给 B 的消息一定可以成功,那么首先要保证发送成功,其次要保证 B 接收成功,而在 RocketMQ 中,消息是先发送到 Broker 中了,那么还需要保证 MQ 在 Broker 中不会丢失

2024-03-25 23:08:06 560

原创 【大厂秋招高频算法】阿里秋招高频算法题汇总(进阶篇)

这里讲一下阿里秋招中的高频算法题,分为三个部分: 基础篇 、 中级篇 、 进阶篇目的就是为了应对秋招中的算法题,其实过算法题的诀窍就在于 理解的基础上 + 背会看到一个题目,首先要了解题目考察的算法是什么,这个算法要理解,至于具体实现的话,就靠背会了(多写、多练),没有什么捷径!还有一点要注意的是,在大厂的比试中, 可能考察算法的方式是 ACM 模式 ,这一点和力扣上不同,ACM 模式需要我们自己去引入对应的包,以及自己写算法,力扣是将方法框架给定,只需要在方法内写代码就可以了,这一点要注意!

2024-03-21 12:06:43 916

原创 【Java核心能力】MySQL 索引结构为什么不用红黑树、AVL 树、B树?

MySQL 的索引使用了 B+ 树来实现,先来说一下 B+ 树的 优势:B+ 树是 多路 平衡搜索树,多路可以保证数据量较大时,B+ 树的高度不会非常高(B+树高度越高,磁盘的 IO 次数就越多)B+ 树叶子节点之间按索引数据的大小顺序建立了 双向链表指针 ,适合按照范围查找使用 B+ 树非叶子节点 只存储索引 ,

2024-03-21 10:53:12 1008

原创 【大厂秋招高频算法】阿里秋招高频算法题汇总(中级篇)

这里讲一下阿里秋招中的高频算法题,分为三个部分: 基础篇 、 中级篇 、 进阶篇目的就是为了应对秋招中的算法题,其实过算法题的诀窍就在于 理解的基础上 + 背会看到一个题目,首先要了解题目考察的算法是什么,这个算法要理解,至于具体实现的话,就靠背会了(多写、多练),没有什么捷径!

2024-03-16 19:20:14 831

原创 【大厂秋招高频算法】阿里秋招高频算法题汇总(基础篇)

这里讲一下阿里秋招中的高频算法题,分为三个部分: 基础篇 、 中级篇 、 进阶篇目的就是为了应对秋招中的算法题,其实过算法题的诀窍就在于 理解的基础上 + 背会看到一个题目,首先要了解题目考察的算法是什么,这个算法要理解,至于具体实现的话,就靠背会了(多写、多练),没有什么捷径!还有一点要注意的是,在大厂的比试中, 可能考察算法的方式是 ACM 模式 ,这一点和力扣上不同,ACM 模式需要我们自己去引入对应的包,以及自己写算法,力扣是将方法框架给定,只需要在方法内写代码就可以了,这一点要注意!

2024-03-15 16:17:11 1014

原创 学会Dubbo服务注册、调用流程,再也不怕面试问Dubbo了!

这里我们通过 画图 的方式来学习 Dubbo 服务注册、服务调用的底层原理,不会涉及源码,因为源码中涉及到比较多的细节,可能会陷入进去,并且对于这些源码的细节我们也根本记不住,能记住的只是他底层调用的一个流程以及实现的方式, 因此学习它的原理流程是很重要的!因此决定以画图的方式讲解 Dubbo 服务注册、Dubbo 服务调用的原理,在面试中就可以按照流程图的方式给面试官来讲解整体的实现原理,对于应届生校招来说应该是可以的,相关的 Dubbo 一些源码实现方式之后会以源码的方式来讲解!

2024-03-15 16:15:14 1179

原创 【Java核心能力】高并发在简历上如何体现?

个人觉得并发相关的内容是最基础的,同时也是最重要的能力,在面试中并发相关的内容也是比较热点的,在项目中的优化也离不开并发!

2024-03-12 20:24:59 1017

原创 【Java核心能力】京东并行框架asyncTool如何针对高并发场景进行优化?

由于最近在整理并发相关的内容,整理了 CompletableFuture、CAS、线程池这些方面的内容,但是通过理论知识我们只是学会了:怎么去用?应该怎么去用?但是并没有学习别人如何去用,没有实际场景的示范,恰巧看到了 tianyaleixiaowu 作者开源出来的 asyncTool 并行框架 ,并且已经在 京东App后台接受苛刻、高并发、海量用户等复杂场景业务的检验测试所以这篇文章就以这个并行框架为例,来说一下如何在高并发场景中保证比较好的性能,即如何通过 CompletableFuture、C

2024-03-10 16:36:05 927

原创 【Java核心能力】RateLimiter 限流底层原理解析

为什么要学习 RateLimiter 原理呢,其实是因为我的项目中使用到了 RateLimiter 进行限流,之前有一次在唯品会面试的时候,面试官就问到了 RateLimiter 的底层限流算法以及原理,当时回答的并不是很好,所以这里整理一下!这篇文章并没有讲 RateLimiter 的源码,底层源码看起来比较复杂,主要来理解它的限流算法原理、存在的缺点、以及在真实项目中如何使用它!

2024-03-10 12:48:04 1231

原创 【Redisson分布式锁】Redisson读写锁加锁机制分析

前几篇说了 Redisson 的可重入锁和公平锁是如何实现的这里来讲一下 Redisson 的读写锁是如何实现的,这里在具体学习源码的时候,不要去具体扣他每一行的命令到底是执行的什么操作,扣这些细节是没有意义的那么我们要学习源码中的哪些内容呢?主要是要学习它的 设计思想 ,也就是为了实现功能做了哪些设计,以及实现的 流程 ,了解原理就好了!

2024-03-08 20:40:52 612

原创 【Redisson分布式锁】Redisson公平锁实现机制

上一篇说了 可重入锁 加锁的流程,这个可重入锁其实就是非公平锁,非公平体现在哪里呢?体现在当前客户端如果抢锁失败的话,会拿到这个锁的剩余存活时间,会进行等待,等待之后再次去尝试加锁,里边是没有任何排队的逻辑的,因此是非公平锁

2024-03-05 21:03:36 1034

原创 【Redisson分布式锁】Redisson可重入锁加锁源码分析

一般在分布式环境下,需要控制并发安全的地方,基本上都要用到分布式锁,所以分布式锁相关的内容以及实现原理是比较重要的,Redisson 是 Redis 中比较优秀的一个客户端工具,源码写的非常规范,值得我们学习,这里说一下 Redisson 可重入锁 的源码

2024-03-04 21:04:37 820

原创 【Redisson分布式锁】Redis 和 ZooKeeper 分布式锁优缺点对比以及生产环境使用建议

在分布式环境中,需要保证共享资源安全的话,一般是需要使用到分布式锁的,那么常用的分布式锁有基于 Redis 实现的,也就基于 ZooKeeper 来实现的这里说一下这两种分布式锁有什么区别,以及如何进行技术选型

2024-03-03 21:29:26 466

原创 【Java核心能力】Java线程池的核心内容详解

线程池的优势首先,线程池是将多个线程进行池化操作,统一进行管理,这样做有什么好处呢?降低创建、销毁线程的开销 :线程池中维护固定数量的线程,不需要临时进行线程的创建和销毁提高响应速度 :对于新提交到线程池中的任务,直接使用线程池中的空闲线程可以直接进行处理,不需要等待创建线程节省资源:可以重复利用线程

2024-03-02 11:29:25 1032

原创 【系统设计】高性能秒杀系统如何设计?

首先说一下 案例背景 :设计一个秒杀系统,秒杀系统的特性就是一瞬间峰值流量很大,远远大于常规时期的流量如果对于这种峰值流量不采取应对措施的话,那么突然增大的流量就会导致系统负载升高,甚至系统瘫痪,所有业务都崩溃无法使用

2024-03-01 09:26:59 701

原创 【Java核心能力】面试官:线程状态的转换了解吗?

线程的状态以及线程状态的转换线程的状态有 6 种:新建 New、就绪 Ready、运行中 Running、阻塞 Blocker、超时等待 Timed Waiting、退出 Terminated接下来说一下各个状态之间如何转变:

2024-02-29 15:47:37 373

原创 【技术杂谈】关于线程池在生产环境中的使用

这里整理了一些线程池在生产环境中使用的建议来帮助我们更好的在项目中使用线程池一个项目使用一个线程池还是多个线程池?一般建议是不同的业务使用不同的线程池,从而避免非核心业务对于核心业务的影响

2024-02-28 22:11:29 665

原创 【技术杂谈】Spring Cloud Alibab 和 Dubbo 有什么区别?

最明显的区别,他们的定位不一样SpringCloud Alibaba首先说一下SpringCloudAlibaba(以下称 SCA),他的定位是微服务架构的一站式解决方案

2024-02-27 14:51:10 883

原创 【Java核心能力】面试官:synchronized 关键字可以保证可见性吗?

synchronized 是可以保证可见性的先介绍一下可见性是什么东西:线程要修改一个变量,这个变量是在主内存中存储的,线程修改时,要先去主内存读取一份到自己的工作内存中,这个工作内存是线程私有的

2024-02-27 09:50:35 689

原创 【Java核心能力】为什么不建议在高并发场景下使用 synchronized?

这首先我们要了解 `高并发场景的特点` 以及 `synchronized 底层加锁的原理` 是怎样的!首先说一下 synchronized 底层加锁的原理:synchronized 在 JDK1.6 之后引入了锁的优化,随着多线程竞争的激烈程度不同,使用的锁也不同

2024-02-26 20:14:38 825

原创 【最新Dubbo3深入理解】Dubbo 生产环境问题排查案例

相关生产案例都搜集于网络,并非原创,在此声明!

2024-02-26 14:14:19 707

原创 【Java核心能力】上万字 ReentrantLock 原理全面详解!

本来写这篇文章是因为自己对 ReentrantLock 的了解一直都比较表面,原理了解的还不是那么的清楚,并且对 AQS 也都是一知半解,但是在面试中这些都是比较常问的内容,如果原理了解比较清楚的话,对面试会有很大的帮助,因此自己在这里也总结了一份,本来以为很快就写完了,没想到竟然写了两天,文字的话就有 6000 +,ReentrantLock 中大部分的内容也都说到了,并且配有许多图片,如果感觉内容太多的话,可以对 ReentrantLock 中加锁以及解锁内容重点阅读,希望对你有所帮助!

2024-02-25 09:00:00 942

原创 【最新Dubbo3深入理解】Dubbo3源码中的一些小技巧

快速判断端口是否被占用Dubbo 在暴露应用元数据服务的时候,有可能服务默认端口会被占用,那么就需要判断默认端口是否被占用,如果被占用了就换一个端口

2024-02-24 15:21:53 417

Java面试PDF,涵盖面试中的技巧、答题思路,以及如何进行面试进阶

Java面试PDF,涵盖面试中的技巧、答题思路,以及如何进行面试进阶

2024-02-09

基于电商的高并发Redis专栏讲解

整本pdf1.3w字左右,该专栏是基于电商场景,先是通过内核级了解 Redis 运行原理,之后结合电商场景,实现了 分页缓存、购物车缓存、高并发读写分片优化等生产解决方案!

2024-01-26

Java春招面试突击pdf学习文档

我们大部分去准备面试的时候,可能会去看很多的八股文,觉得只要熟练掌握了这些答案,就可以面到很好的薪资,找到理想的工作 但是其实不是这样的,八股文只是你的 基础能力,稍微有一点水平的面试官都不会去像一个提问机器一样,一道一道题去问你,而是希望通过对话去了解你对项目、对技术的看法,以及你解决问题的能力,因此需要从面试底层的思维去了解面试,再针对性的学习,才可以有一个比较好的效果! 你可以这样想一下,假如你是面试官,你会怎样去考察面试者的一个综合能力呢?作为面试官,你肯定知道面试者背了许多的八股文,所以八股文只是你去找工作要过的第一关,接下来,面试官会通过某一个具体问题,一点一点追问细节,以及生产中所需要的一些问题,通过这些才可以真正看出来你是否真的掌握了这些积能,以及你在做项目中,是否有自己的思考! 这篇pdf文档从以上几个方面出发,解决不会面试的卡点!

2024-01-24

GC 日志信息,用于在 easygc 中查看 JVM 信息

GC 日志信息,用于在 easygc 中查看 JVM 信息

2023-12-12

计算机专业考研(408)思维导图

今天突然想起来考研期间为了方便记忆操作系统和计算机网络上边的知识点,费了很大力气整理了计算机网络、操作系统两本书知识点的脑图,想着放着也没啥用,分享出来给大家看看

2023-12-09

空空如也

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

TA关注的人

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