- 博客(156)
- 资源 (2)
- 收藏
- 关注
原创 磁盘的存储原理
特性内存 (RAM)机械硬盘 (HDD)固态硬盘 (SSD)物理原理纯电子(电荷/晶体管状态)机械运动(磁头/盘片)纯电子(浮栅晶体管存储电荷)机械部件无有无访问方式字节级随机访问扇区级块访问,受机械运动限制块级访问,受闪存特性和控制器限制速度极快(纳秒级)慢(毫秒级)较快(微秒级),但仍慢于RAM连接高速内存总线直接连接CPU通过SATA/SAS控制器连接I/O总线通过SATA/PCIe控制器连接I/O总线易失性是(断电数据丢失)否(断电数据保留)否(断电数据保留)
2026-03-21 19:14:33
419
原创 引用计数法存在的问题
它只关注“有多少个引用指向我”,而无法判断“我是否还能够从程序的可达根部被访问到”。在循环引用的情况下,对象虽然彼此引用,但它们可能已经形成了一个孤立的环,与程序的其余部分脱节,但引用计数器却无法识别这种“逻辑上已死”的状态。为了解决这个问题,更高级的垃圾回收算法(如标记-清除、标记-整理、分代回收等)被开发出来。这些算法通过从一组“根对象”(例如,正在运行的线程栈上的变量、静态变量)开始遍历所有可达对象,任何不可达的对象才会被认为是垃圾并被回收,从而能够正确处理循环引用。
2026-03-21 17:02:38
345
原创 Java软引用对象的创建以及对象回收
这个例子展示了软引用如何在内存紧张时自动释放对象,这对于实现缓存机制非常有用,既能提高性能,又能避免。仍然能够获取到对象。只有当模拟了内存紧张,JVM 真正开始回收软引用对象时,在 Java 中,软引用是通过。举例说明如何创建软引用对象。之后,以及甚至在第一次。之后,只要内存还充足,
2026-03-21 15:14:01
182
原创 JVM参数之-XX
XX参数是 JVM 调优和诊断的强大工具,但由于其底层性和潜在的不稳定性,建议在使用前仔细查阅官方文档或进行充分测试。在生产环境中,通常只使用那些经过验证且对性能有明确影响的-XX选项。
2026-03-16 15:47:13
841
原创 JVM栈、方法区和堆内存
局部变量(Local Variables):在方法内部声明的变量,无论是基本类型还是对象引用,都存放在虚拟机栈的局部变量表中。静态变量(Static Variables):用static关键字修饰的变量,它们属于类,存放在方法区。对象实例(Object Instances):通过new关键字创建的对象,无论它们在哪个方法中被创建,都存放在**堆内存(Heap Memory)**中。局部变量表中的对象引用会指向这些堆中的对象。
2026-03-13 16:55:41
443
原创 POD重启问题排查
这是一个系统性的排查过程,需要您从多个维度收集数据并进行分析。通常,线程Dump能快速定位CPU飙升的代码,而GC日志和堆Dump则是解决G1 GC和内存问题的关键。务必在问题发生时尽快收集这些数据,以便进行离线分析。
2026-03-13 15:55:37
244
原创 Controller的Aspect、Filter和拦截器的执行顺序
(AOP) 在请求处理流程中扮演着不同的角色,并按照特定的顺序执行。通知具有最高的控制权,它可以决定是否继续执行连接点方法,甚至可以完全阻止其执行。在Spring Boot/Spring MVC应用中,
2026-03-09 14:50:21
288
原创 top和ps
命令是一个实时系统监控工具,它提供了一个动态的、持续更新的系统运行视图,类似于Windows的任务管理器。命令(Process Status 的缩写)用于显示或查看Linux系统中正在运行的进程相关信息。命令都是用于查看进程信息的工具,但它们在功能、显示方式和侧重点上存在显著区别。在Linux系统中,
2026-03-03 14:05:48
101
原创 @RefreshScope刷新Kafka实例
会重新创建 Bean,包括 Kafka 组件,但可能带来副作用。对于 Kafka 这类有状态组件,建议通过设计避免直接刷新,而是采用更平滑的配置更新机制(如灰度重启、动态控制监听器)。
2026-02-11 18:42:14
631
原创 构造器@Autowired
在Spring Boot中,当Bean类有多个有参构造器时,Spring会按照以下规则选择调用的构造器:注意:如果未在任何构造器上添加,Spring会尝试使用无参构造器(如果存在),否则报错。因此,多个有参构造器时必须显式指定。
2026-02-10 17:47:17
71
原创 String 内部 final char[] 不可变性
在Java中,String类的值被设计为类型,这意味着一旦一个String对象被创建,它的值就具体来说,String类内部使用一个数组来存储字符数据,并且这个数组在对象创建后不能被重新赋值或修改。
2026-02-09 10:34:24
77
原创 @ConditionalOnProperty不直接使用松绑定规则
这个属性,条件也会被满足(即条件为 true),相关的 Bean 或配置类会被创建。如果。
2026-02-05 10:26:09
662
原创 Kafka常见问题解答
Broker是Kafka集群中的一个个独立的服务器节点(物理机或虚拟机)。您可以将其理解为一个Kafka服务实例。单个Broker可以轻松处理每天数TB的消息流量。多个Broker相互协作,共同组成了一个高可用、可扩展的Kafka集群。概念类比说明Broker超市的收银台/货架提供核心服务:接收货物(消息)、存储货物、为顾客(消费者)提供货物。整个超市由多个收银台/货架(Broker)组成,共同对外提供服务。Topic商品类别如“生鲜区”、“文具区”,是一个逻辑概念。Partition。
2026-02-03 16:06:16
960
1
原创 Vue子父组件.sync
你的代码能工作,很可能是因为父组件额外监听了事件,或者存在其他隐藏逻辑。但从可维护性角度,建议修正为规范形式(事件名与 prop 名一致),以避免未来出现意外行为。
2026-01-24 16:47:56
945
原创 Spring Boot拦截Http请求设置请求头
你可以放心地依赖来执行诸如添加认证令牌、设置公共请求头、记录请求日志、重试逻辑等需要在每个请求发出前完成的统一操作。它的设计初衷就是为此类场景服务的。需要让客户端知晓或受其影响的信息,用Header(如认证、缓存、内容协商)。只在服务器内部处理过程中需要临时携带的数据,用Attribute(如用户身份、计算中间结果、页面渲染数据)。
2026-01-24 15:32:57
980
原创 Vue子父组件
每出现一次子组件,就会创建一个新的组件实例,因此不会出现“多个父组件共用同一个子组件实例”的情况。如果子组件被多个父组件引用, 调用这个方法会对哪个父组件生效呢?
2026-01-24 11:37:03
208
原创 SpringBoot单元测试Mock和Spy
注解能否用于接口?能否用于抽象类?能否用于具体类?说明@Mock✅ 是✅ 是✅ 是生成完全模拟对象@Spy❌ 否❌ 否✅ 是包装真实对象(需可实例化)❌ 否❌ 否✅ 是创建真实实例并注入依赖// 1. 创建Mock@Mock// 2. 定义方法行为(Stubbing)@Test// 当调用 findById(1L) 时,返回一个预设的User对象when(userDaoMock.findById(1L)).thenReturn(new User(1L, "小荣"));
2026-01-24 11:10:10
726
原创 K8S常用命令
数据敏感性ConfigMap:用于存储非敏感数据。Secret:用于存储敏感数据。数据存储方式ConfigMap:以明文形式存储。Secret:以 base64 编码形式存储。使用场景ConfigMap:适用于存储应用程序的配置信息。Secret:适用于存储需要保护的敏感信息。访问权限ConfigMap:通常对所有有权限的用户可见。Secret:访问权限更严格,通常只有特定的用户和服务账户可以访问。
2025-06-03 14:37:07
855
原创 Redisson单机模式
本地锁,只能在单个 JVM 实例中使用。RLock:分布式锁,可以在多个 JVM 实例之间共享,适用于分布式系统。提供了类似的接口和方法,但基于 Redis 实现。Redisson 的看门狗机制通过自动续期锁的有效期,确保了分布式锁在长时间业务处理中的可靠性,避免了锁过期导致的并发问题。触发条件当使用lock()方法获取锁且**未显式指定锁超时时间(leaseTime)**时,看门狗会自动生效。若手动设置leaseTime,则需自行处理续期逻辑。续期判断逻辑看门狗默认每10秒(超时时间的1/3)
2025-06-03 11:49:41
1516
原创 JVM简介
Java内存模型和线程上下文切换共同作用,确保了多线程环境下程序的正确性和性能。理解JMM的工作原理和线程上下文切换的机制,有助于编写高效且线程安全的并发程序。掌握JMM是编写高效且线程安全的Java程序的关键。理解其底层原理(如内存屏障、happens-before规则)能有效避免并发陷阱(如死锁、数据竞争),结合工具可快速定位性能瓶颈。
2025-06-03 11:25:55
1069
原创 Java程序员自救指南
新生代:存储新创建的对象,包含Eden区和两个Survivor区。垃圾回收频繁,称为Minor GC。老年代:存储生命周期较长的对象。垃圾回收较少,称为Major GC或Full GC。通过这种分代的方式,JVM能够更高效地进行内存管理和垃圾回收,提高应用程序的性能。JVM启动参数JVM(Java Virtual Machine)启动参数是用于配置Java虚拟机运行时行为的参数。通过这些参数,你可以控制JVM的内存分配、垃圾回收策略、调试选项等。内存设置参数-Xms<size>-Xms512m。
2025-05-30 17:51:15
821
原创 六大设计原则
单一职责原则👉高内聚,低耦合开放封闭原则👉对扩展开放,对修改封闭,即一个类的最开始设计应该尽可能的成熟,后续通过扩展即可完成其他功能,而非直接修改代码里氏替换原则👉核心是遵循同一种约定,其要求父类的所有子类都遵循同一种实现方式以及对输入输出的限制和异常处理的约定等等,并可以将父类的对象任意替换为子类对象并进行方法调用,不会产生异义接口隔离原则👉高内聚,低耦合,和单一职责原则类似,但单一职责原则是在业务功能层面考虑(业务功能职责尽可能单一),而接口隔离原则更像是在架构层面考虑(接口之间依赖程度更低)
2024-10-15 14:54:20
307
原创 Xxl-job启动参数含义
使用单机串行配置可以有效避免任务的重复执行和数据处理错误,适合对数据一致性要求较高的场景。如果需要扩展到多执行器,建议使用合适的路由策略来管理任务的分配。在XXL-JOB中,路由策略用于决定任务调度时,如何选择执行器来执行任务。第一个路由策略通常是“FIRST”第一个路由策略简单易用,适合小型项目或简单任务调度场景,而其他策略则提供了更灵活的负载均衡和容错能力,适合更复杂的应用场景。
2024-10-15 11:09:40
1285
原创 RestClientException异常
当服务器返回的 HTTP 状态码表示错误(如 4xx 或 5xx),可能会抛出此异常。:在处理请求或响应时,如果 JSON/XML 数据无法正确解析,也会抛出此异常。:在使用 HTTPS 时,如果 SSL 证书无效或不被信任,也可能导致异常。:如果请求的格式不符合 API 的要求,例如缺少必要的头信息或参数。进行 RESTful API 调用时抛出。:当无法连接到目标服务器时,例如网络中断或服务器不可达。:如果请求超出了设定的超时时间,可能会导致抛出异常。异常通常在使用 Spring 的。
2024-09-29 11:24:52
756
原创 @ConfigurationProperties
不加@Component:可以通过或在配置类中定义@Bean来使用。灵活性:这种方式提供了更大的灵活性,特别是在需要对配置类进行更复杂的管理时。无论哪种方式,最终都能实现将配置文件中的属性映射到 Java 对象。
2024-09-27 14:32:13
1170
原创 @ConfigurationProperties
加在类上:适合简单的属性映射,通常与@Component一起使用。加在方法上:适合更复杂的配置场景,通常用于配置类中。选择使用哪种方式,取决于你的具体需求和项目结构。
2024-09-22 13:22:57
500
原创 kafkaTemplate.sendDefault(message).addCallback
是用于消费消息的,而是用于发送消息的。在的成功回调中,包含的信息主要是SendResult对象。:发送的消息记录。:关于消息的元数据,例如主题、分区、偏移量等。在成功回调中,你可以获取到关于发送消息的详细信息,这些信息对于后续的处理和日志记录非常有用。
2024-09-22 11:20:14
1429
原创 Spring Cache sync属性
表示同步缓存,防止缓存击穿。当多个线程同时请求同一个缓存键并且该键在缓存中不存在时,只有一个线程会执行缓存方法,其他线程会等待结果被缓存。这种方式可以有效提高缓存的性能和稳定性。
2024-08-22 17:27:40
1097
原创 受检异常和非受检异常
受检异常:必须在方法签名中声明或在方法内部捕获和处理。编译器会强制检查。非受检异常:不需要显式声明或捕获,编译器不会强制检查。
2024-08-21 17:27:33
438
社科类跨考085400-软件工程专硕上岸小心得分享
2021-04-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅