自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白晨的博客

这是一个每天都在变强的博主,关注我,每天变得更强。

  • 博客(100)
  • 问答 (1)
  • 收藏
  • 关注

原创 从保研到大厂:如何选择方向、获取信息与规划学习路径?【就业路线分享】

先说一下本人bg:985计算机本科,在放弃保研以后参加秋招,拿到了美团、京东以及华为等大厂的offer,方向是C++/Java后端开发。很多人可能被当前铺天盖地的就业困难报道搞得不知所措,特别是本科xdx,“我该读研还是就业呢?”、“我想就业,但是我现在什么都不会,我也不知道我该怎么学”,这些都是大一大二的同学经常会困惑的问题。本篇文章创作的初衷就是帮助对于就业不太了解的同学了解就业目前现状以及找到自己的路。

2025-03-20 10:30:00 1887

原创 从放弃985计科保研到秋招进大厂,我是怎么做的?【秋招经验分享】

先来介绍一下我自己,bg为985计算机本科,我在放弃了计科保研以后,成功拿到了美团等大厂研发岗的offer。目前秋招已经接近尾声了,我想记录一下这段时间的秋招感悟和经验,并且给和我境遇相同的同学一些参考。下面详细讲述一下我的心路历程以及秋招感悟。

2024-11-05 11:44:46 2560 6

原创 Claude Code指南

《Claude Code 使用指南》摘要 Claude Code是一款专注于复杂工程任务的AI编程工具,与传统代码补全工具不同,它通过终端CLI形式提供自主执行大型重构、跨文件修改等高级功能。核心优势包括终端原生工作流、跨IDE兼容性和CI/CD集成能力。 安装支持macOS/Linux/WSL和Windows系统,关键步骤是通过cc-switch工具配置API和模型。典型工作流程包含Plan模式制定计划、交互式确认和执行阶段,支持npm等依赖管理。架构设计分为7层,包含UI渲染层、工具执行层和权限安全层等

2026-05-31 19:21:55 566

原创 【RPC】第 8 篇:熔断器 — 滑动窗口 + 三态自动机

本文介绍了熔断器在分布式系统中的工作原理及实现机制。熔断器通过三态自动机(CLOSED/OPEN/HALF_OPEN)实现服务故障的自动隔离与恢复,避免系统雪崩。核心采用滑动窗口统计最近10秒的请求数据,通过环形数组实现时间窗口的滚动更新,确保统计数据的时效性。当慢请求比例超过阈值时触发熔断,经过冷却期后通过探测请求验证服务恢复情况,实现服务的渐进式恢复。这种设计既避免了持续重试导致的系统恶化,又防止了服务假恢复带来的震荡风险。

2026-05-02 11:00:00 533 1

原创 【RPC】第 9 篇:降级 + 泛化调用 + 流量统计 + 演进总结

本文是RPC框架系列的最后一篇,主要介绍了降级机制、泛化调用和流量统计等核心功能。降级作为最后一道防线,通过缓存降级和Mock降级两级保障,在服务完全不可用时提供兜底响应。缓存降级适合结果变化不大的场景,Mock降级则提供固定兜底值。泛化调用通过$invoke方法实现了无需接口类的RPC调用,增强了灵活性。整个框架从v0.1版本演进至今,形成了包括限流、熔断、重试、降级在内的完整保护体系,并通过注解等方式提高了易用性。文章最后对框架演进过程进行了总结反思,强调了在保证功能完备的同时保持简洁性的设计理念。

2026-05-02 11:00:00 441

原创 【RPC】第 7 篇:限流器 — 令牌桶 + CAS 无锁实现

本文介绍了RPC框架中实现限流器的两种方式:基于信号量的全局并发限流和基于令牌桶算法的单连接速率限流。全局并发限流通过Semaphore控制同时处理的请求总数,快速拒绝超限请求;单连接限流采用无锁令牌桶算法,使用AtomicLong记录下一个令牌可用时间点,巧妙避免了锁竞争。文章重点分析了一个关键bug:错误的时间窗口计算会导致限流失效,通过对比正确和错误的实现方式,揭示了"Math.max(now, pre) + nsPerPermit"与"Math.max(now + ns

2026-05-01 11:00:00 507

原创 【RPC】第 6 篇:负载均衡 + 重试 — 故障时怎么自救

本文探讨了分布式系统中负载均衡和重试机制的设计与实现。负载均衡部分比较了随机(Random)和轮询(RoundRobin)两种策略的适用场景,指出在节点性能不均时两者都存在局限性。重试机制部分详细分析了三种策略:RetrySamePolicy采用指数退避重试同一节点,适合瞬时抖动;FailOverPolicy切换健康节点,应对节点故障;ForkAllPolicy并发请求所有节点,确保最快响应。文章通过代码示例展示了关键实现细节,如原子计数器、指数退避算法等,为构建高可用分布式系统提供了实用的故障处理方案。

2026-04-30 11:00:00 549 5

原创 【RPC】第 5 篇:连接管理 — 连接池 + 请求生命周期

文章摘要 本文探讨了RPC框架中的连接管理和请求生命周期。连接池通过复用TCP连接避免了每次请求的三次握手开销,提升性能。ConnectionManager负责维护连接表,实现连接的创建、复用和健康检查。多路复用通过requestId实现请求与响应的匹配。InFlightRequestManager管理请求全生命周期,包括两级限流(全局并发限流和服务速率限流)、超时控制和响应处理,确保系统稳定性和可靠性。整个机制通过连接复用和精细的请求管理,实现了高效的RPC通信。

2026-04-29 11:00:00 462

原创 【RPC】第 4 篇:服务发现 — Zookeeper + 缓存容错

服务发现与容错机制设计摘要 本文探讨了微服务架构中的服务发现机制及其容错设计。核心要点包括: 动态寻址机制:通过Zookeeper实现服务注册与发现,避免硬编码服务地址,解决服务扩容/迁移问题。 三层架构设计: Zookeeper层:作为中央注册表存储服务地址 ZookeeperServiceRegistry:封装ZK操作 DefaultServiceRegistry:提供缓存和容错能力 智能容错方案: 正常情况从ZK获取最新服务列表并更新缓存 ZK故障时自动降级使用本地缓存 采用装饰器模式无缝集成容错能力

2026-04-28 11:00:00 1111

原创 【RPC】第 3 篇:编解码 + SPI — 可插拔设计的正确姿势

本文介绍了网络通信中的序列化与压缩技术,以及可插拔的SPI设计机制。序列化将内存对象转换为字节数组便于传输,反序列化则还原对象。框架实现了JSON(可读性好)和Hessian(性能优)两种序列化方式,并通过SACType字节巧妙地将序列化与压缩类型编码在一个字节中。文章还解释了小消息不压缩的工程权衡,最后重点阐述了SPI机制如何避免硬编码if-else,通过服务发现实现开闭原则,使框架具备良好的扩展性。

2026-04-27 11:00:00 401

原创 【PRC】第 2 篇:Netty 通信层 — NIO 模型 + 自定义协议 + 心跳

本文摘要: Netty通信层采用NIO模型解决BIO的线程阻塞问题,通过EventLoop实现高效事件驱动。自定义二进制协议包含6个关键字段:Length解决TCP粘包问题;Magic作为安全校验;Type区分消息类型;Version支持协议演进;SACType编码序列化/压缩方式;Body存储实际数据。其中Length前置的设计配合Netty的LengthFieldBasedFrameDecoder可正确处理消息边界,Magic字段提供基础安全防护,Version字段确保协议兼容性。这种设计既保证了通信效

2026-04-26 19:03:18 537

原创 【RPC】第 1 篇:全景篇 — 一次 RPC 调用的完整旅程

本文介绍了RPC调用的基本原理和完整流程。RPC框架通过封装远程通信细节,使程序可以像调用本地方法一样调用远程服务。核心架构包含三个角色:服务提供方(Provider)负责实际业务逻辑,服务调用方(Consumer)通过代理发起调用,注册中心(Registry)维护服务地址信息。一次完整的RPC调用包含以下步骤:Consumer启动时创建代理对象;调用方法时代理拦截请求;查询注册中心获取服务地址;通过网络将方法名和参数发送给Provider;Provider执行方法并返回结果。整个过程对调用方透明,实现了分

2026-04-26 19:02:25 1127 1

原创 【JUC】Java并发编程入门:JUC核心API解析

Java并发编程基础摘要 JUC(java.util.concurrent)是Java 5引入的并发工具包,提供了线程管理、同步任务和并发处理的核心API。本文介绍了JUC基础概念和使用方法: 进程与线程:进程是独立运行的程序,线程是执行单元。Java默认多线程运行。 Thread与Runnable: Thread类实现线程,Runnable定义任务逻辑 示例展示了两种线程创建方式及join()等待机制 synchronized同步: 通过方法或代码块保证线程安全 代码示例演示了如何用synchronize

2025-06-16 10:30:00 1202

原创 【JVM】JVM调优实战

本文详细介绍了JVM调优的实战步骤和案例分析,涵盖性能监控、问题排查、堆内存优化、垃圾回收器选择、JIT编译优化等内容。通过调整堆大小、选择合适的垃圾回收器,可以显著提升系统吞吐量和响应时间。文章还探讨了逃逸分析、标量替换等JIT优化技术对减少GC压力的作用,以及如何通过JMeter压测和工具分析定位性能瓶颈。案例包括调整新生代与老年代比例、排查线程死锁、优化G1GC并发线程数等,展示了如何根据业务负载合理配置JVM参数。最后,文章针对日均百万订单的高并发场景,提出了通过水平扩容和优化内存分配策略来应对。

2025-04-10 18:52:04 2232

原创 【JVM】OOM实例分析

本文系统解析了Java四大内存溢出场景及解决方案:​​堆内存溢出​​由大对象分配或内存泄漏引发,通过MAT分析堆转储定位问题;​​元空间溢出​​多因动态代理类暴增,需启用类缓存并监控加载状态;​​GC超限异常​​反映GC效率低下,结合日志与堆转储排查常驻对象;​​线程创建失败​​受系统线程数限制,需调整Xss参数及内核配置。各案例均配套JVM参数(如-XX:+HeapDumpOnOutOfMemoryError)、诊断工具(MAT/JVisualVM)和修复策略(代码优化/资源控制),为OOM问题提供从定位

2025-04-10 10:30:00 1374

原创 【JVM】GC日志分析

GC日志分析对JVM性能调优至关重要。本文先介绍GC日志基础,包括常用参数如 -verbose:gc、-XX:+PrintGC等,以及时间戳记录、日志输出控制和高级内存监控等配置。然后详细剖析GC日志格式,按字段解释其含义,并给出Minor GC和Full GC日志的解析示例。最后推荐GCEasy和GCViewer等可视化分析工具,它们能将日志转化为直观图表,助你轻松掌握JVM内存使用、垃圾回收情况等关键信息,为性能优化提供有力支持。

2025-03-29 10:30:00 1715

原创 【JVM】运行时参数

本文全面解析了JVM运行时参数,涵盖标准参数、-X参数、-XX参数的定义、特点及常见示例,详细阐述了在Eclipse、IDEA、运行jar包、Tomcat等不同环境下的添加方法,深入介绍了常用参数选项,包括内存设置、垃圾收集器选择、GC日志等,并给出了通过Java代码获取JVM参数的示例。内容丰富实用,适合Java开发者学习参考。

2025-03-27 10:30:00 2380

原创 【JVM】监控及诊断工具——GUI篇

JVM监控及诊断GUI工具通过可视化交互界面,帮助开发者实时观测运行时状态(如堆内存、线程、GC行为),快速定位性能瓶颈(如内存泄漏、CPU热点、锁竞争),并支持对堆转储文件(Heap Dump)的深度离线分析。相较于命令行工具(如jstat、jmap),GUI工具显著降低了操作门槛,提供多维度数据关联与图形化根因推理能力,成为JVM调优的核心手段。

2025-03-26 10:30:00 1168

原创 【JVM】监控及诊断工具——命令行篇

JVM(Java Virtual Machine,Java虚拟机)是Java应用程序运行的基础环境。随着应用程序规模的增大,性能问题逐渐显现,开发者和运维人员需要通过一系列的监控和诊断工具,来分析和优化JVM的运行状态。这些工具能够提供有关内存使用、线程状态、垃圾回收情况等详细的信息。本文将介绍一些常用的JVM命令行监控及诊断工具,以及如何使用它们来提升应用程序性能。

2025-03-15 10:30:00 1915

原创 【JVM】性能监控与调优概述篇

本文阐述了JVM性能监控与调优的重要性,分析了生产环境中的常见问题,如高频繁的Full GC、响应时间变长、内存溢出、线程饥饿或死锁等,并指出调优可减少系统停顿、优化内存使用、提高并发能力和降低资源消耗。调优需关注JVM内存、CPU使用率、GC日志等监控依据,遵循发现问题、排查问题、解决问题的步骤,通过调整垃圾回收器、堆内存、线程池等进行性能调优,同时需平衡停顿时间、吞吐量、并发数和内存使用等性能指标间的关系。

2025-03-14 12:03:44 1665

原创 【JVM】类的加载过程详解

类的加载过程包括加载、链接、初始化、使用和卸载五个阶段。加载阶段将类的字节码文件读入内存并构建类模板对象;链接阶段包括验证、准备和解析三个子阶段,确保类的正确性和为静态变量分配内存;初始化阶段执行静态代码块和静态变量赋值;使用阶段通过实例化、调用方法等方式使用类;卸载阶段在类不再被引用且满足条件时,从内存中移除类的元数据和相关对象。整个过程由JVM规范严格定义,确保类的正确加载和使用。

2025-03-13 10:30:00 1348

原创 【JVM】字节码指令集

这篇文章介绍了字节码指令集的基本概念、执行模型和指令结构。它详细阐述了字节码指令的组成,包括操作码和操作数,并讨论了不同数据类型的处理方式。指令分为多种类型,如加载与存储指令、算术指令、类型转换指令等,涵盖了从局部变量操作到栈管理、常量池访问等功能。文章还讲解了局部变量表与操作数栈的作用,提供了常见指令的示例,如iconst、bipush、ldc等,重点说明了类型转换指令及其可能的精度损失。

2025-03-07 10:30:00 1624

原创 《开口之后》思维导图:破解沟通困境的核心逻辑

如果这篇文章有帮到你,还请给我一个大拇指👍和小星星⭐️支持一下白晨吧!喜欢白晨【思维导图系列】系列的话,不如关注👀白晨,以便看到最新更新哟!!!我是不太能熬夜的白晨,我们下篇文章见。

2025-01-08 12:10:35 760

原创 为什么你总是说不出口?破解沟通难题的深度指南

沟通的最终目的,并不是成为一个语言大师,而是让我们的内在世界和外在表现一致。当你能够坦然面对自己的情绪和需求,并用真诚的方式表达出来,沟通自然会变得更加顺畅。《开口之后》告诉我们,沟通并不是某个瞬间的行为,而是一种持续的状态。只要我们愿意从“看清事实”“选择善意”“接纳情绪”开始,一步步改善,沟通中的难题就会慢慢消解。

2025-01-08 11:55:11 1646

原创 【Redis】Hash介绍与应用详解

Redis Hash是一个键值对集合,类似于传统编程语言中的哈希表或字典。Redis Hash通过哈希表实现。这意味着它适合用于存储对象,比如一个用户的信息,其中每个字段(如用户名、年龄、邮箱等)都作为键值对存储在哈希表中。每个哈希表可以包含任意数量的字段,并且每个字段都有唯一的键。Redis中本来就是每一个key对应一个value,那Hash类型和String类型的差别在哪呢?在 Redis 中,虽然每个key对应一个value,但是value的类型可以有多种,其中之一就是Hash类型。

2024-06-05 10:39:17 1588 2

原创 【Redis】List源码剖析

在Redis的发展历程中,List数据类型的底层实现经历了几次重要的演变,从最初的双向链表到后来的快速列表。在Redis的早期版本(2.2及以前),List类型的数据结构采用的是双向链表(LinkedList)。这种实现方式的主要优点在于其插入和删除操作的时间复杂度为O(1),非常高效,特别适合频繁插入和删除的场景。然而,每个节点需要额外的指针存储空间,导致内存开销较大,并且对于大量数据的线性扫描性能较低。随着Redis的发展,开发团队意识到需要一种更节省内存的解决方案。因此,在。

2024-06-01 11:00:00 1459 2

原创 【Redis】ziplist与listpack源码剖析:Redis数据存储的演进与优化

ziplist是一种紧凑的字节数组数据结构,适用于存储小型列表。zlbytes:总字节数(4字节)。zltail:到列表尾节点的偏移量(4字节)。zllen:节点数量(2字节)。entry:实际存储的节点。zlend:结束标记(1字节,值为 0xFF)。每个节点包括prevlen(前一个节点的长度)、encoding(编码方式)和entry-data(实际存储内容)。

2024-05-30 15:02:48 1943 1

原创 【Redis】List介绍与应用详解

Redis List是字符串值的链表。Redis List是通过双向链表实现的。这意味着,即使列表内有数百万个元素,在列表头部或尾部添加新元素的操作也能在恒定时间内完成。使用 LPUSH 命令在有 10 个元素的列表头部添加一个新元素的速度,与在有 1000 万个元素的列表头部添加一个元素的速度相同。限制Redis List的最大长度为232−12^{32} - 1232−1​ (4,294,967,295) 个元素。性能访问其头部或尾部的列表操作是 O(1),这意味着它们非常高效。

2024-05-23 11:00:00 1164 1

原创 【Redis】String源码剖析:512MB大字符串的内存管理之道

Redis中,String类型底层实现的数据结构为int和SDS(简单动态字符串)。为什么不使用C原生的字符数组,而要使用SDS呢?获取字符串长度C字符串获取长度会使用strlen函数,时间复杂度为O(n),其获取字符串长度的逻辑如下图所示:而SDS直接用一个类项记录了字符串长度,获取长度的时间复杂度为O(1)。字符串溢出C字符串对于越界检查不是很完善,会出现内存踩踏的问题:而SDS会记录可用空间,在需要扩容时自动扩容。存储特殊类型数据。

2024-05-19 11:54:21 1165 1

原创 【Redis】String的介绍与应用详解

String是Redis最基本的类型,一个key对应一个value。key为标识符,value为key对应的值。String是二进制安全的,意思是Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。String是Redis中最基本的数据类型,采用key-value形式存储。它是二进制安全的,可以存储任何类型的数据,如图片或序列化的对象。

2024-05-17 15:12:33 1490 3

原创 【Redis】Redis键值存储

首先要强调一点:Redis是key value类型的数据库,Redis所说的数据类型都是key value中的value的数据结构,而key都是字符串。在本文中,我们对Redis的键值存储进行了全面的概述和介绍。首先,我们了解了Redis的五大基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Zset(有序集合),并探讨了它们各自的特点和用法。

2024-05-15 11:00:00 2190

原创 【Redis】Redis入门概述

首先,我们先来了解什么是Redis。根据官网定义:Redis 是一个内存数据存储,被数百万开发人员用作缓存、向量数据库文档数据库流引擎和消息代理。Redis 具有内置复制和不同级别的磁盘持久性。它支持复杂的数据类型(例如,字符串、哈希、列表、集合、排序集和 JSON),并在这些数据类型上定义了原子操作。首先,我们可以注意到Redis是一个内存数据库,也就是说,它的数据都是直接加载到内存中的。

2024-05-13 11:00:00 1354

原创 【程序员必修】Shell脚本

大家好呀,我是白晨。今天要为大家带来的是一种简单且实用的脚本语言——Shell脚本。Shell脚本是一种在Unix、Linux和其他类Unix系统上编写的脚本语言。它允许您以一种简单而又强大的方式与操作系统进行交互。无论您是系统管理员、开发人员还是普通用户,掌握Shell脚本都是一个有用的技能。在本教程中,我们将从头开始学习Shell脚本编程。Shell脚本的基础知识:了解Shell脚本的基本语法、变量、条件语句和循环等。实用示例:通过实际的示例演示如何编写Shell脚本。高级主题。

2024-04-19 11:00:00 1287

原创 【蓝桥杯】蓝桥杯算法复习(五)

本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。如果你想系统性进行复习,可关注白晨的蓝桥杯专栏进行学习。本期是本系列的最后一期,因为在写文章的明天就要蓝桥杯比赛了,祝愿各位都能取得自己满意的成绩🤩。数学期望欧拉函数最短路贪心如果解析有不对之处还请指正,我会尽快修改,多谢大家的包容。

2024-04-13 11:00:00 1216

原创 【蓝桥杯】蓝桥杯算法复习(四)

本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。如果你想系统性进行复习,可关注白晨的蓝桥杯专栏进行学习。区间DP树形DP快速幂最大公约数分解质因数矩阵乘法组合计数如果解析有不对之处还请指正,我会尽快修改,多谢大家的包容。如果大家喜欢这个系列,还请大家多多支持啦😋!

2024-04-07 11:00:00 890

原创 【蓝桥杯】蓝桥杯算法复习(三)

本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。如果你想系统性进行复习,可关注白晨的蓝桥杯专栏进行学习。并查集哈希单调栈树状数组状态压缩DP线性DP背包问题如果解析有不对之处还请指正,我会尽快修改,多谢大家的包容。如果大家喜欢这个系列,还请大家多多支持啦😋!

2024-03-28 11:00:00 1013

原创 【项目】基于MiniOS的CFS调度和增量式sleep

实现CFS调度策略:参考Linux中实现的完全公平调度算法编写nice系统调用控制不同进程的分配时间片权重增量式sleep,通过维护sleep队列中的等待时间增量实现O(1)弹出,插入为O(n)的sleep实现编写测试程序:创建多个进程,设置每个进程的nice值,观察调度的变化。增加每个进程的统计信息,包括进程的nice值、运行时间等。让多个进程使用增量式sleep等待不同的时间,观察它们被唤醒的时间顺序。在大规模并发的情况下运行程序,检查CFS调度和增量式sleep的性能表现。

2024-03-23 11:00:00 1478

原创 【蓝桥杯】蓝桥杯算法复习(二)

本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。更多本系列文章见蓝桥杯专栏。如果你是新手,可以参考白晨的算法专栏进行学习。

2024-03-21 11:00:00 1575

原创 【蓝桥杯】蓝桥杯算法复习(一)

本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。

2024-03-09 11:00:00 1630

原创 【设计模式】设计模式概述

大家好,我是白晨。不知不觉已经🕊了很久了,白晨在这里给大家道个歉。本次为大家带来的是全新的专栏——设计模式,许多同学学习了面向对象的概念,但是面向对象在实际开发中到底好不好用、到底如何使用,这个问题可能很多人都无法回答。同时,在现在的面试中,设计模式被提及的概率越来越高,“你都使用过什么设计模式?”、“在xxx中都使用了哪些设计模式“,这些问题相信有过面试经历的人都会被问到,但是即使是一个编程的老鸟,做到准确无误的使用设计模式和理解设计模式也是非常困难的。

2023-10-20 10:00:00 439

空空如也

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

TA关注的人

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