技术文章

还不懂Java集合框架?阿里架构师总结了这五点,看完至少能掌握99%

早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同。集合框架被设计成要满足以下几个目标。该框 …

「设计模式」原型模式:如何快速的克隆出一个对象?

目录概念什么时候使用原型模式没有使用原型模式的Demo原型模式两大数据拷贝浅拷贝深拷贝浅拷贝+深拷贝总结概念原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。也就是说,当 …

JAVA面试|synchronized原理_java当中synchronized的作用

核心目标:synchronized就像一把钥匙或门禁卡,它的作用是保证同一时间,只有一个线程 能进入某个特定的“房间”(临界区代码块或方法)去操作共享资源(数据),防止多个线程同时捣乱,造成数据错乱(线程不安全)。一、锁在哪里?— 锁的是对象!关键理解:synchronized锁住的不是代码本身,而是对象(Object)!当你用synchronized修饰一 …

面试常用:说清楚Java中synchronized和volatile的区别

回顾一下两个关键字:synchronized和volatile1、Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。2、synchronized通过加锁的方式,使得其在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一 …

MyBatis拦截器在服务内存防护场景中的应用

一、内存防护背景:数据库查询的潜在风险Java服务中,数据库查询返回过大数据集可能引发两类风险:结果集字节过大(如单结果集超过20MB) 直接导致JVM堆内存飙升 频繁触发Full GC甚至OOM崩溃结果集行数过多(如单次查询返回10万行) 应用层对象转换消耗大量CPU 线程阻塞导致接口超时为规避数据库查询返回过大数据集引发的内存风险,需在数据访问对象(DA …

Spring Cloud微服务安全实战 - Zipkin集成与最佳实践

Spring Cloud微服务安全实战 - Zipkin集成与最佳实践Zipkin 是分布式系统中最常见的链路追踪工具之一,结合 Spring Cloud Sleuth 或 Micrometer Tracing,可以实现 全链路可观测性。在生产环境中,我们不仅要实现追踪,还要确保 安全性、性能和可维护性。本文将从 部署 → 集成 → 安全 → 高级特性 → …

基于EasyExcel实现动态设置单元格样式

背景教务人员在设班排课系统中经常使用Excel进行批量导入新建修改等操作,并且还要批量导出做一些自定义分析。之前系统采用的是常见的POI 用户模式处理Excel导入导出,但是数据量一大,就容易出现内存溢出,不得不在系统层面做20000条限制,虽然POI3.8+推出事件模式,但是操作繁琐。经过多方对比,并实际验证,最终决定采用阿里出品的EasyExcel:ht …

Spring中@Configuration注解原理_spring各种注解

之前在《关于@Bean的full模式和lite模式》一文中写了在@Configuration注解标记的类中使用@Bean注解生成对象和在@Component注解标记的类中使用@Bean注解生成对象的区别,今天来说一下在@Configuration注解标记的类中生成单例Bean的原理。ConfigurationClassPostProcessor的postPr …

Java性能深度优化:复杂购物车结算从15秒到0.5秒的架构级改造

真实案例:百万级电商系统结算性能提升30倍的架构奥秘场景痛点:复杂购物车结算的性能瓶颈假设在电商系统中,用户购物车包含100件商品,结算时需要:校验每个商品库存计算促销活动优惠生成订单明细扣减库存更新用户积分初始实现为同步逐条处理,导致性能极差:java 原始低效实现(简化版)public CheckoutResult checkout(Cart cart) …