自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2025(新)1200 道 JAVA 面试题(各大企业常见面试题及答案)

对于 Java 后端的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了 BATJ 等大厂的 offer, 也已经帮助了很多的 Java 学习者,希望也能帮助到你。1、elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据。9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,7、当实体类中的属性名和表中的字段名不一样 ,怎么办?

2025-09-29 14:27:44 935

原创 Java中使用正则表达式的正确打开方式

\d 数字 [0-9]\\D 非数字 [^0-9]\\s 空白字符 [ \\t\\n\\x0B\\f\\r]\\S 非空白字符 [^\\s]\\w 单词字符 [a-zA-Z_0-9]\\W 非单词字符 [^\\w]

2025-09-28 20:30:00 314

原创 wso2~api的高级限流策略

在发布者平台,对api资源配置时,可以配置api级别或者是消费者(订阅)级别的限流策略;前者api级别配置的策略(高级限流策略),可以只针对某个具有资源,也可以针对某个api资源。关闭整个api级别的限流,可以对某个资源选择限流策略。

2025-09-28 17:00:00 323

原创 抽象类VS接口:核心区别与实战选择

抽象类:用abstract修饰的类,可以包含抽象方法(无实现)和具体方法(有实现)。抽象类无法实例化,需由子类继承并实现其抽象方法。接口:用interface定义,默认方法均为public abstract(Java 8前),可包含常量(public static final)。Java 8后支持默认方法(default)和静态方法(static)。优先接口:当行为需要跨多个不相关类时(如Serializable),或需要多继承能力。选择抽象类:当需要共享代码或状态,或定义类的基础模板时。

2025-09-28 16:00:00 153

原创 Spring部分,技能点继续捡起来!

装配:把bean之间的依赖关系配置清楚自动装配:让Spring容器自己根据规则把依赖对象诸如进去,而不是开发者手动写。这样可以减少配置,提升开发效率。两个或多个Bean互相依赖,形成“死循环”,只在单例下会出现。如果是prototype的话会无限套娃。那Spring能解决哪些情况?两边都是构造器注入(不支持):无法提前暴露“半成品”对象,会直接报错。两边都是setter/字段注入(支持):Spring创建A会调用构造方法得到一个空对象,把A的工厂放到三级缓存。给A注入依赖时发现需要B,就去创建B。

2025-09-28 11:31:18 840

原创 Java并发编程(第四部分)

synchronized是常用来保证代码的原子性的。1234567891011121314151617181920voidstaticvoidtest(){void:给一间“卧室”上锁(对象自己的房门),别人想进要拿这间房的钥匙。:给“整栋楼的大门”上锁(类锁),不管哪间房都进不去,大家都排队。:只给“卧室里的保险柜”上锁(对象里的某个资源),你可以自由走动,但柜子只能一个人开。

2025-09-28 11:28:49 648

原创 Java并发编程(第三部分)

指令重排 = 编译器或CPU在执行时,为了优化性能,会调整代码语句的执行顺序。(有序性)(1)编译器优化的重排Java源代码-->字节码-->机器指令,中间编译器可能优化。只要不改变单线程的最终结果,就可以调整语句顺序。(2)指令级并行(ILP)重排CPU支持流水行并行,若指令间没有数据依赖,CPU会乱序执行以提高效率(3)内存系统的重排因为有CPU cache,写缓冲区,导致内存的读写顺序看起来是乱的。假如线程A对变量x写入后,先放在写缓冲区,没立刻刷新到主内存。

2025-09-26 22:30:00 2314

原创 Java并发编程(第二部分)

ThreadLocal就是线程本地变量,若创建了一个ThreadLocal变量,那访问这个变量的每个线程都会有这个变量的本地拷贝,但多个线程操作这个变量时,实际是操作自己本地内存里的变量,可以起到线程隔离的作用,避免了线程安全问题。

2025-09-26 19:45:00 632

原创 Spring篇知识点,把技能点都点满了

Java是一个面向对象的语言,我们在代码里就是创建对象和对象的依赖。IOC是控制反转的思想,就是由容器来负责控制对象的生命周期和对象间的关系。引入IOC之后控制对象生命周期的不再是引用它的对象,而是容器。DI(依赖注入),指的是容器在实例化对象的时候把它依赖的类注入给它。所以我理解的是IOC是思想,DI是实现。那使用IOC的最主要的目的就是为了让对象间不再过度耦合,写代码的时候可以专注于业务,而不是复杂的对象的生命周期的管理和依赖。① 直接编码(最底层)

2025-09-26 15:20:46 789

原创 Java并发编程(第一部分)

进程:程序运行起来后在内存中执行,并附带有运行所需的资源,是系统进行资源分配的基本单位。线程:CPU是被分配到线程的,所以线程是CPU分配的基本单位。在Java中,当我们启动一个main函数就相当于启动了一个JVM进程,而main函数的线程就是主线程。一个进程中有多个线程,多个线程共用进程的堆和方法区,但每个线程都有自己的程序计数器和栈。CPU资源分配采用时间片轮转,也就是给每个线程分配一个时间片,线程在时间片内占用CPU执行任务。

2025-09-26 15:00:00 2155

原创 一文让你搞懂高性能定时器:时间轮

时间轮是哈希思想+桶,传统调度器是堆。时间轮性能瓶颈在于指针移动速度(Tick Duration)和槽的深度(链表遍历),任务数量影响小;传统调度器性能瓶颈在于堆操作(O(log n)),任务数量影响大。时间轮有固有误差(一个 Tick Duration),传统调度器理论上精度更高。时间轮是海量短时任务的王者;传统调度器更通用,尤其适合复杂调度逻辑和长周期任务。时间轮以接近 O(1) 的复杂度实现任务的添加和到期触发,性能远超基于堆的传统调度器。

2025-09-26 09:45:00 730

原创 虚拟线程 vs. 传统线程池:Spring Boot 3.x I/O密集型任务性能对比

随着 JDK 21的发布,虚拟线程已经成为正式发布过能耐(Virtual Threads)。所以今天我们来初体验下Spring Boot项目下虚拟线程的使用,并通过基准测试对比其与传统平台线程池在处理模拟I/O密集型任务时的行为和性能表现为确保实验环境的一致性,我们采用以下技术栈:线程池、虚拟线程配置为了在Spring Boot应用中使用不同类型的线程执行器,我们进行如下配置:任务执行首先我们编写一个模拟需要耗时执行的任务线程池执行任务虚拟线程执行的任务serv

2025-09-25 22:00:00 725

原创 效率翻倍!玩转若依框架 excel导出功能

第一段是导出的调用方式,类名就是所对应的实体类名。第二段是倒数第二步的背后调用,这一步分为两阶段,首先是初始化即 this.init方法,然后是将数据写入即exportExcel方法。

2025-09-25 17:28:52 220

转载 从“匿名函数”到“代码简化神技”:彻底吃透 Lambda、函数式接口与方法引用的三角关系

函数式接口是「规则定义」:规定了方法的输入输出格式Lambda 表达式是「简化实现」:用简洁语法实现函数式接口方法引用是「再简化」:当实现逻辑是调用已有方法时,进一步缩短代码所有语法最终都要匹配函数式接口的抽象方法签名,编译器的类型推断机制是这一切能简化的基础。Lambda 是「匿名函数」,本身没有类型,无法直接在强类型的 Java 中使用函数式接口提供了「类型载体」,让 Lambda 有了明确的类型(接口类型)

2025-09-25 16:51:25 49

转载 技术面:Java并发(线程同步、死锁、多线程编排)

因此只需要把事务2的执行顺序改成:A->D->C,这样事务2在执行时,会发现事务1占用着A呢,因此事务会先不执行,等待事务1释放A。,是多线程编程中的一种机制,用于协调多个线程的执行顺序,确保它们在共享资源或关键操作上按照预定的规则运行,避免因并发访问导致的数据不一致、竞态条件(Race Condition)等问题。在操作数据库时,如果有多个事务并发执行,也是可能发生死锁的。当事务1持有资源A的锁,但是尝试获取资源B的锁,而事务2持有资源B的锁,尝试获取资源A的锁的时候,这时候就会发生死锁的情况。

2025-09-25 10:48:32 27

原创 揭秘Lombok 的几则实用技巧:不止是 @Data

本文不聊好不好,就跟大家唠唠几个超实用的小技巧!有些用法主要是图一乐,知道咋回事就行,至于要不要在实际开发里用,全看你自己的想法。毕竟每个程序员写代码的习惯都不一样,说不定这里面就有能戳中你的干货!花几分钟看完,保准能有点新收获~

2025-09-24 18:47:36 580

原创 比MQ更轻的异步神器——Spring监听器(ApplicationEvent)亿级流量下的咖啡店经营哲学

/ final修饰的订单ID:就像咖啡师绝不涂改的订单小票// 创建时间:记录订单诞生时刻(线程安全不可变)// 无setter:防止多线程并发篡改订单优秀架构的本质不是预测所有需求,而是拥抱变化。

2025-09-24 10:00:00 926

原创 听劝!这些 Spring Boot 默认配置趁早改

彼时 SpringBoot 初兴,万象更新,号称“开箱即用”“约定优于配置”,一时间风靡四方。开发者趋之若鹜,纷纷称快,仿佛自此架构之重可卸、配置之繁可省,一行 main() 即可气定神闲、纵横沙场。然则时光久远,方知此言非虚,却也未尽其真。所谓默认,不过是你未曾开口,框架自作主张。表面无碍,实则步步杀机,线上事故十有八九,皆因“未曾配置”的“默认”。回首往昔,实堪自嘲。曾自诩熟稔底层、精通原理,然于这些藏于阴影处的默认设定,竟茫然不觉。

2025-09-23 22:00:00 531

原创 提醒,乱封装那些事~

封装的本质是 “用合理的边界保障代码安全,用清晰的接口提升开发效率”,而非 “为封装而封装”。开发过程中,需避免过度追求形式化封装,也需警惕功能堆砌的混乱封装,多从后续维护、业务扩展的角度权衡接口设计。毕竟,好的封装是开发的 “助力”,而非 “阻力”—— 下次封装前,不妨先思考:“这样的设计,会不会给后续埋下隐患?

2025-09-23 17:22:15 1627

空空如也

空空如也

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

TA关注的人

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