自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如果你是面试官来看我的优快云 请点开这里

我深入研究了一些开源的资料、并在此基础上进行了修改和优化、有自己的深入思考、提出了自己的见解。这些文章凝聚了我对技术的热情和探索精神、希望您能点击查看、了解我在技术领域的思考和实践。我的技术博客中、我分享了对技术原理的理解、更注重分享我的思考过程和创新实践。以下是我认为我写的比较好的一些技术文章。

2025-03-27 17:21:36 180

原创 腾讯PCG运营开发一面-2025-04-02

比如说这种连接过多的话、会导致除了内存和CPU还有什么样的资源问题。怎么去用指令去查看这台机器上面它的连接的个数、用什么样的指令。MySQL建立索引的原则(我回答的是什么字段适合加索引。怎么去看他那种TIME_WAIT的那种网络连接。TIME_WAIT状态过多连接会有什么问题。像CPU使用率跟CPU负载这两个有什么区别。TCP的连接构成(四元组五元组是什么)怎么看在历史里面怎么去看网络连接呢。你对CPU的使用率怎么看的呢。问了十五分钟 撕了10分钟。Redis的基本数据类型。后续补充一下相关知识。

2025-04-02 19:48:34 379

原创 链表ACM版子(自用)

【代码】链表ACM版子(自用)

2025-04-02 09:53:24 316

原创 二叉树的ACM板子(自用)

【代码】二叉树的ACM板子(自用)

2025-04-02 08:53:50 275

原创 一文告诉你如何回答面试官问的怎么解决MySQL深分页问题(后续画图实战)

关于MySQL分页查询优化的内容:深分页MySQL的分页查询一般使用limit查询语句来完成、例如查询student这时MySQL会把前120条数据都查出来、然后抛弃前100条、返回20条。对于查询120条数据、MySQL性能不会有什么问题。这时MySQL会查出1000020条数据、然后抛弃1000000条、速度必然很慢。为了优化、可以直接查询id>1000000这样MySQL会走主键索引、直接找到1000000处、然后查出来20条数据、效率会高得多。传统分页使用LIMIT和OFFSET。

2025-03-30 20:22:16 802

原创 为什么 ThreadLocalMap 的 key 是弱引用 value是强引用

弱引用 key 降低了 ThreadLocal 对象本身的内存泄漏风险、强引用 value 保证了数据的可用性。但最终避免内存泄漏、需要开发者养成良好的习惯、及时清理 ThreadLocal。

2025-03-30 19:20:01 913

原创 每周技术文章分享-2025-3-29

null。

2025-03-29 21:32:49 308

原创 分库分表常见问题参考答案(收录25年至今的牛客面经)

分布式事务一致性问题跨节点关联查询JOIN问题(解决方案:1.全局表 2.冗余字段 3.建立1:1的ER实体关系分片)非分片键的查询问题(1.创建映射表 2. 前缀分片法 3.使用ES搜索引擎(最后才说要抬高立意)全局分布式ID问题(1.UUID 2.雪花算法 3.mysql/Redis 4.美团Leaf(1.Leaf-segment 2.Leaf-snowflake)跨库跨节点分页查询问题参考面试回答:(吟唱)

2025-03-29 19:46:18 622

原创 介绍一下JVM内存结构面试回答(后续会继续补充)

Java对于内存的管理是采用分区的方式进行管理的、不同区域的特性、存储的数据都是不同的。根据《Java虚拟机规范》的规定、Java虚拟机所管理的内存将会包括以下几个运行时数据区域分析:首先介绍一下程序计数器。它是一块一块较小的内存空间、每个线程都有独立的程序计数器、是线程的它记录了当前线程所执行的字节码指令地址(也就是说下一条将要执行的指令)。如果执行的是 Java 方法、它记录的是正在执行的字节码地址如果执行的是Native方法、则为空。程序计数器是唯一一个不会出现。

2025-03-28 00:25:38 1111

原创 一文告诉你IDE的GoLand控制台显示太多如何隐藏堆栈信息

在某些场景下,我们可能会遇到控制台显示完整的、应该被折叠起来的。

2025-03-27 23:35:43 223

原创 双非鼠鼠实习有感

有时候、我会对着天花板发呆、想象着如果有一天、我能摆脱这种困境、过上自己想要的生活、那该有多好。我不知道这样的日子还要持续多久,但我知道、我必须坚持下去、即使希望渺茫、也要拼尽全力。算法还算好、敲代码的时候、大脑还能勉强运转、仿佛还能找到一丝掌控感。可一拿起八股文、那些晦涩难懂的文字就像催眠曲、让我昏昏欲睡、背了忘,忘了背、效率低得令人绝望。可是放弃吗、不甘心、为了这份实习、为了更好的未来、我只能咬紧牙关、硬着头皮往前冲。实习经历像悬在眼前的胡萝卜、明知能带来更好的未来、却也压得我喘不过气。

2025-03-27 11:57:20 351

原创 面试官问:线程池的参数是怎么配置的?不要用理论公式套!

美团的动态化线程池方案提供了一种更灵活的方式来管理线程池、通过动态调整参数和监控线程池状态、可以更好地适应业务需求的变化。其设置不宜过大、也不宜过小、要根据具体情况、计算出一个大概的数值、再通过实际的性能测试、计算出一个合理的线程数量。尽管经过谨慎的评估、仍然不能够保证一次计算出来合适的参数、那么我们是否可以将修改线程池参数的成本降下来、这样至少可以发生故障的时候可以快速调整从而缩短故障恢复的时间呢?美团的实践表明、动态化线程池是一种有效的解决方案、可以降低线程池参数修改的成本、并提高系统的稳定性和性能。

2025-03-27 11:14:41 826

原创 一文让你明白什么是索引下堆及面试回答

层首先调用存储引擎的接口定位到满足查询条件的第一条记录、然后获得主键值进行回表过滤记录的操作、也就是说没有索引下推的时候、每查询到一条二级索引记录、都要进行回表操作、然后将记录返回给。层首先调用存储引擎的接口定位到满足查询条件的第一条记录、存储引擎过滤出满足查询条件的记录的记录后、才去执行回表操作获取整个记录。= 100000、则直接跳过该索引项、不再进行回表操作。接着继续向存储引擎索要下一条记录、存储引擎在二级索引定位到记录后、获取主键值、然后回表操作、将完整的记录返回给 Server 层;

2025-03-27 10:23:01 432

原创 Java选手学Go去大厂的路线(自用)

路线图参考资料。

2025-03-27 09:20:05 141

原创 美团一面:分布式锁有什么特性?需要什么设定

个人认为分布式锁应该具备以下特征:也称为互斥性、同一把锁在同一时刻只能被一个人所占用。:锁不能出现死锁的情况、如果拥有锁的一方因为一些意外导致锁没有释放成功、也要保证锁能够被正确的传递给其他抢锁方。:加锁和解锁的必须是同一个人,不允许非法释放他人持有的分布式锁。高性能、高可用、特别是在秒杀等业务场景下、存在大量的瞬间、高并发请求,加锁与释放锁的过程应该是高性能、高可用的。期望分布式锁服务加锁和解锁操作开销尽可能低、同时也要保证高可用、确保业务不会出现中断。

2025-03-27 09:19:36 171

原创 消息队列用来解决什么问题

解耦是解除服务间的依赖关系。例如服务A需要等待服务B的返回结果、这种依赖会导致性能下降和可靠性问题。在传统的紧耦合系统中、服务之间直接相互调用、一个服务的变更或故障可能会影响到其他服务、导致系统不稳定。

2025-03-26 17:33:27 1054

原创 深度解析如何设计一个短链系统

短链服务的难点主要在于长链接与短链接的映射存储和短链接的生成算法。

2025-03-26 16:57:20 945

原创 面试的时候怎么回答如何设计一个短链接系统!说完方案面试官惊呆了

总的来说,设计短链接系统需要综合考虑存储、算法、性能、扩展性等多个方面。通过合理的技术选型和架构设计、可以构建一个高性能、高可用的短链接系统。

2025-03-26 15:43:11 1223

原创 一文告诉你面试的时候要怎么回答缓存击穿、穿透、雪崩问题

看小林就行了这里不写了缓存击穿 缓存穿透 缓存雪崩如果缓存中的某个热点数据过期了、此时大量的请求访问了该热点数据、就无法从缓存中读取、直接访问数据库,数据库很容易就被高并发的请求冲垮。缓存击穿的关键是热点数据不存在于缓存中、因为如果是普通数据、那就是正常的缓存未命中、反之热点数据不在缓存中了、容易导致大量请求落到数据库上。缓存击穿设置热点数据的热度时间窗口:对于热点数据、可以设置一个热度时间窗口、在这个时间窗口内、如果一个数据被频繁访问、就将其缓存时间延长、避免频繁刷新缓存导致缓存击穿。

2025-03-26 14:34:16 1293

原创 美团AI面:问我如何设计一个秒杀系统的参考回答版

也就是说、秒杀开始前、商品的库存加载到Redis中、用户请求到达时、先在Redis中扣减库存。使用消息队列(例如Kafka)进行异步处理、将请求放入队列中、由消费者慢慢处理、避免瞬间的流量冲击。消息队列消费者从队列中获取请求、减MySQL库存、创建订单、更新Redis秒杀信息状态。秒杀系统需要处理大量的并发请求。通过合理的技术选型和架构设计、可以构建一个高性能、高可用的秒杀系统。用户点击秒杀按钮、前端进行简单校验(例如按钮状态、用户登录状态)。负责数据的存储和访问、例如MySQL、Redis等。

2025-03-26 14:14:50 380

原创 零拷贝原理面试回答(参考小林Coding)

通过sendfile()从 2 次 (read()、rite()) 减少到 1 次 (sendfile()从 4 次减少到 2 次。从 4 次减少到 2 次、并且这两次拷贝都由 DMA 完成、无需 CPU 参与。

2025-03-25 21:29:22 447

原创 哪个进程通信效率高

分析共享内存通信效率最高。共享内存的机制、就是拿出一块虚拟地址空间来、映射到相同的物理内存中。这样这个进程写入的东西、另外一个进程马上就能看到了、都不需要拷贝来拷贝去、传来传去、大大提高了进程间通信的速度。回答共享内存的通信效率最高、因为共享内存不涉及内核态和用户态之间的数据拷贝。通过将不同的虚拟地址映射到同一块物理内存,避免了内核态和用户态之间的数据拷贝。通过将多个进程的虚拟地址映射到同一块物理地址、共享内存实现了进程间直接访问同一块内存区域、由于所有进程都直接操作同一块物理内存、因此避免了在内核态和用户

2025-03-25 17:27:12 263

原创 僵尸进程、孤儿进程、守护进程的区别(无代码绝对看的明白)

孤儿进程会被 init 进程(进程 ID 为 1)接管,init 进程会成为孤儿进程的新父进程。守护进程是在后台运行的一种特殊进程、不与任何终端关联、关闭终端并不会影响守护进程的生命周期、守护进程的生命周期通常是伴随系统的启动和关闭、会一直在后台运行。孤儿进程(记忆点:爸爸死了、就是孤儿):如果某个进程的父进程先结束了、那么它的子进程会成为孤儿进程。函数来获取子进程的终止状态、导致子进程的进程描述符仍然保留在系统进程表中、成为僵死进程、僵死进程不占用系统资源、但会占用一个进程 ID。

2025-03-25 16:31:24 309

原创 为什么进程的切换比线程开销大

进程间的切换的时候、除了需要切换 CPU 上下文、还需要切换页表、切换了页表会影响TLB的命中率、那么虚拟地址转换为物理地址就会变慢、表现出来的就是程序运行会变慢、而线程切换只需要切换 CPU 上下文、不会改变虚拟地址空间、不会影响TLB命中率。TLB 中存储的地址映射是基于旧进程的页表建立的、因此在页表切换后、这些映射关系就变得无效了、所以如果切换页表后TLB就会失效。由于每个进程都有自己的虚拟地址空间:那么显然每个进程都有自己的页表、那么当进程切换后页表也要进行切换、页表切换后TLB就失效、

2025-03-25 16:12:35 208

原创 线程共享了哪些内存资源

文件描述符:意味着线程可以通过文件描述符访问进程打开的文件、套接字等资源。虚拟内存空间:意味着线程可以访问进程的代码区、堆区、数据区的资源等。线程共享了进程的虚拟内存空间,文件描述符,还有信号处理器。栈:每个线程中的函数调用过程是独立的、因此需要有独立的栈。虚拟内存空间:共享进程的代码区、堆区、数据区的资源等。信号处理器:意味着线程可以接收和处理进程收到的信号。文件描述符:共享进程打开的文件、套接字等资源。信号处理器:共享进程的信号处理器。程序计数器和寄存器的值。

2025-03-25 15:49:17 175

原创 什么是内核

分析计算机是由各种外部硬件设备组成的、比如内存、CPU、硬盘等、如果每个应用都要和这些硬件设备对接通信协议、那这样太累了、所以由「内核」作为中间人、让内核作为应用连接硬件设备的桥梁、应用程序只需关心与内核交互、不用关心硬件的细节。现代操作系统、内核一般会提供 4 个基本能力:管理进程、线程,决定哪个进程、线程使用 CPU、也就是进程调度的能力;管理内存、决定内存的分配和回收、也就是内存管理的能力;管理硬件设备、为进程与硬件设备之间提供通信能力、也就是硬件通信能力;

2025-03-21 09:25:32 397

原创 如何优化慢sql面试回答

分析 常见 SQL 优化的方法:limit子句缩减数据行数、避免 select *拆分查询:分而治之的思想、将一个大查询拆分多个小查询、每个小查询只返回一部分查询结果。覆盖索引:当索引中的列包含所有查询中需要使用的列的时候、可以避免回表避免索引失效:检查 SQL 是否因为写的不合理、导致索引失效。分解联表查询:让业务层分多个查询来聚合、或者增加冗余字段减少联表查询排序优化:对于有排序场景、如果extra显示filesort、这时候就需要考虑对排序的字段建立索引、避免文件排序。

2025-03-21 09:07:35 273

原创 面试回答动态代理和静态代理的区别

需要在编码时就定义好代理类、手动编写一个与目标类相似的代理实现、代理类中一般会包含对目标类方法的调用、并可在调用前后进行一些额外处理。其缺点是代码冗余、维护成本高、每个被代理的类都需要单独创建代理类。:不要求目标类实现接口、而是通过继承目标类来生成代理类。它可以拦截目标类中所有非私有、非final的方法、但不能代理final类和final方法。Spring框架默认支持这两种代理方式、在目标类实现接口时优先使用JDK动态代理、否则会采用CGLIB动态代理。在Java中、代理模式分为静态代理和动态代理。

2025-03-21 01:33:09 177

原创 如何用MySQL实现一个分布式锁面试回答

MySQL的锁机制不像Redis那样可以设置过期时间。如果持有锁的进程异常退出且未能删除记录、就会导致其他进程无法获取锁、造成死锁。虽然可以通过定时任务扫描删除超时的锁、但如果业务执行时间较长而误判锁超时、就可能释放未完成任务的锁、从而导致并发问题。具体来说、我们在数据库中创建一个锁表、其中有一个唯一索引字段比如方法名。想要获得锁时、客户端尝试插入一条记录、如果插入成功、则表示锁已经被获得、执行完业务逻辑后删除该记录来释放锁。我们可以使用MySQL来实现分布式锁、其基本原理是利用数据库的唯一索引约束。

2025-03-21 01:21:18 138

原创 线程池原理及面经

可以实现。

2025-03-20 20:44:05 788

原创 一招让你明白实现依赖注入的三种方式 跟 自动装配的三种方式有什么区别

DI 是实现 IoC 的一种具体机制。它的核心思想是将组件之间的依赖关系由外部容器(如 Spring)来管理和注入,而不是由对象自己创建或查找依赖。:通过注解或配置直接注入依赖对象。:通过 Setter 方法传递依赖对象:通过构造函数传递依赖对象。:DI 是 IoC 的一种具体实现方式,强调如何将依赖关系注入到对象中。总结来说 IoC 是一种设计思想 而 DI 是实现 IoC 的一种具体机制。Spring 框架通过 DI 实现了 IoC 使得开发者可以更轻松地管理对象的依赖关系。

2025-01-13 23:09:19 608

原创 如果没有IOC 和 如果没有自动装配

如果没有自动装配 开发者需要在配置类中显式定义每个 Bean 并手动注入依赖,导致配置类冗长且难以维护。,开发者需要在配置类中显式定义每个 Bean 并手动注入依赖,导致配置类冗长、依赖管理复杂且灵活性差。,开发者需要手动管理对象的创建和依赖关系,导致代码耦合度高、难以维护和测试,且容易产生重复代码。:由于依赖关系硬编码在业务代码中,单元测试时难以替换依赖的实现(如使用 Mock 对象)。:手动管理依赖关系会导致代码冗长且难以维护,尤其是在复杂的业务场景中。等),手动创建和注入依赖会非常繁琐。

2025-01-13 22:37:58 547

原创 一文让你明白面试官问你如果没有IOC怎么办如果没有自动装配怎么办

开发者需要手动管理对象的创建和依赖关系,导致代码耦合度高、难以维护和测试,且容易产生重复代码。

2025-01-13 22:34:59 549

原创 自动装配方式实现Bean依赖注入(Spring版)

【代码】自动装配方式实现Bean依赖注入(Spring版)

2025-01-13 21:58:49 110

原创 手动实例化Bean纯显式定义 Bean

手动实例化Bean纯显式定义 Bean

2025-01-13 21:49:47 155

原创 乐观锁解决超卖问题

我的代码总结:大家可以根据需求自己修改 这里只是提供一个我的版本。

2024-09-20 15:55:00 321

原创 手机号收验证码并请求登录过程(Redis多级缓存+RabbitMq异步处理)

在正式编写代码之前,我想分享一下我的经验。这是我在学习黑马课程时遇到的一个需求,但我认为原需求过于基础。因此,我决定在此基础上增加功能,层层递进。在学习过程中,大家应该积极思考,尝试拓展功能,丰富技术栈。按照自己的思路,逐步构建和完善技术体系。虽然这个可以直接调阿里云的官方API,但是去写这个也是一个锻炼自己的方式,锻炼的是思维思考的方式与抛弃AI编写代码,用自己的逻辑去思考。

2024-09-13 15:04:50 517

原创 Springboot3.1.0集成swagger文档

然后还要application.yml文件。然后举一个controller例子。最后运行 由于我的端口是8081。我的Springboot是。

2024-09-13 01:05:59 245

原创 Swagger2配置(2024.9.13)

然后在application.yml文件上配置。配置完成 记得这是swagger2。我的springboot版本是。最后配置 swagger文件。然后是controller层。我的端口号是:8081。

2024-09-13 00:39:23 654

原创 Mybatis-Plus 最新稳定版依赖 2024.8

最新稳定版的Mybatis-Plus依赖 绝对不会报错。

2024-08-19 15:23:06 907

空空如也

空空如也

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

TA关注的人

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