后端

java8接口为什么新增了默认方法和静态方法?

新增默认方法原因 假设我们存在一个很久之前写好的接口,后面因为业务原因需要修改接口。 java8之前,在一个接口中添加一个抽象方法,那所有的接口实现类都需要去实现这个方法,否则会编译出错。就算某些实现类不需要这个方法,也需要实现一个空方法。如果该接口的实现类特别多,改动会非常大。 接口实现默认方法就是为了解决这个问题,只要在一个接口中添加了默认方法,所有的实现类就自动继承,不需要改动任何实现类

【Spring】DI(依赖注入)详解:属性注入@Autowired(超详细)、构造方法注入、Setter注入

1.DI(依赖注入)介绍 1.1DI是什么?DI(Dependency Injection,依赖注入) 是 Spring 框架中实现 IoC(控制反转)的一种核心机制。如果说 IoC 是一种设计思想,告诉我们“把控制权交给容器”,那么 DI 就是具体的“施工

排序算法

排序算法 概念 排序稳定性 相同关键字排序前后相对顺序 插入排序 直接插入 逐步将无序区的数据插入有序区 顺序比较得出插入的位置 时间复杂度n^2,空间复杂度1,稳定 折半插入 折半查找得出插入位置 时间复杂度n^2,空间复杂度1,稳定 希尔排序 分组进行插入排序 平均时间复杂度n^1.3,空间复杂度1,不稳定 交换排序(全局有序) 冒泡排序 两两比较,交换,

【MySQL基础-10】MySQL中的LENGTH()函数:用法详解与实例分析

在MySQL数据库中,LENGTH()函数是一个非常常用的字符串函数,用于计算字符串的字节长度。理解并掌握LENGTH()函数的用法,对于处理字符串数据、优化查询以及进行数据验证都非常有帮助。本文将详细介绍LENGTH()函数的用法,并通过实例演示其在实际中的应用。 1. LENGTH()函数的基本语法LENGTH()函数的基本语法如下&#x

LeetCode - #151 颠倒字符串中的单词

前言 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 150 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。 不积跬步,无以至千里;不积小流,无以成江

说说HashMap原理吧?

HashMap主要是由数组和链表组成,它不是线程安全的。 核心点就是put插入数据的过程,get查询数据以及扩容的方式。JDK1.7和1.8的主要区别在于头插和尾插方式的修改,头插容易导致HashMap链表死循环,并且1.8后加入红黑树对性能有提升。 put插入数据流程 往map插入元素的时候,首先通过key 进行hash算法,然后与数组长度-1进行与运算((n - 1) & hash),

G1垃圾收集器实现原理

1 与垃圾收集器有关的算法 在分析G1前先简单回顾一下与垃圾收集器相关的算法。通常所谓的垃圾收集器更多地是指跟踪垃圾收集器(Tracing Garbage Collection),而不是引用计数(Reference Counting )垃圾收集器。跟踪垃圾收集器采用可达性分析方法确定哪些对象要被回收,通常会选取一些对象作为GC Roots,如果对象能直接或间接地被GC Roots中的对象引用,则认

Spring Boot 配置文件高级实战指南 热更新/动态配置/安全加密/分布式同步/环境变量注入

博主社群介绍: ① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。 ② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。 ③ 群内也有职场精英,大厂大佬,跨国企业主管,可交流技术、面试、找工作的

基于 Rust 与 DeepSeek V3.2 构建高性能插件化 LLM 应用框架深度解析

前言随着大语言模型(LLM)技术的飞速迭代,应用开发范式正经历从"单一脚本调用"向"复杂系统工程"的转变。在构建企业级 LLM 应用时,开发者面临的核心挑战在于如何平衡系统的稳定性与灵活性:既要适配快速更迭的模型接口(如 DeepSeek V3.2),又