- 博客(43)
- 收藏
- 关注
原创 Spring Boot 配置优先级
本文介绍了Spring框架中Bean管理的基本概念。@Controller注解用于声明Bean,根据是否保存数据分为有状态和无状态Bean。为保证线程安全,Bean作用域分为单例(singleton)和原型(prototype)模式。单例Bean资源占用少、性能高,适用于数据库连接池、线程池等资源密集型对象,可减少对象创建销毁次数,提升系统性能。这是面试中常见的Bean作用域相关问题。
2025-10-24 21:50:14
223
原创 Java--利用(堆)获取前k个最小元素
本文介绍了如何使用Java的PriorityQueue高效获取数组中前k个最小元素的方法。首先,通过小根堆实现,所有元素入队后依次取出堆顶元素,时间复杂度为O(nlogn),空间复杂度为O(n)。其次,针对大数据量场景,提出了大根堆优化方案,仅维护k个最小元素,将时间复杂度降低至O(nlogk),空间复杂度优化为O(k)。文章还提供了完整的代码实现,并对两种方法进行了对比:小根堆适合小数据集,而大根堆优化更适合海量数据。最后总结指出,在实际开发中应根据数据规模选择合适的方案。
2025-05-17 08:19:20
423
原创 Java——优先级队列(堆)
优先级队列是一种特殊的数据结构,它允许元素按照优先级进行出队操作,优先级高的元素先出队。与普通队列的先进先出(FIFO)原则不同,优先级队列适用于需要根据优先级处理元素的场景,如系统任务调度或学生座位安排。优先级队列通常提供两个基本操作:返回最高优先级对象和添加新对象。在Java的JDK1.8中,PriorityQueue通过堆(Heap)实现,堆是一种基于完全二叉树的数据结构,分为最大堆和最小堆。堆的存储采用顺序方式,利用数组高效存储完全二叉树。堆的创建和调整涉及向下调整过程,确保堆的性质得以维持,即父节
2025-05-15 00:40:07
1143
原创 Java数据结构-二叉树的最近公共祖先
利用栈来记录路径上的节点。在回溯过程中,会将不在路径上的节点从栈中弹出,最终实现找到从根节点到目标节点的路径并返回是否找到的结果。在求解二叉树的最近公共祖先问题时,获取节点路径是一个重要的辅助手段,通常可以通过获取两个节点的路径,然后从路径中找出最近公共祖先。
2025-04-28 01:06:51
964
原创 Java数据结构之二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
2025-04-21 10:50:13
1019
原创 Java数据结构-栈和队列
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)
2025-03-30 21:56:28
1005
原创 Java中的 异常
Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我 们实际情况的异常结构.例如, 我们实现一个用户登陆功能.if (!if (!System.out.println("登陆成功");此时我们在处理用户名密码错误的时候可能就需要抛出两种异常. 我们可以基于已有的异常类进行扩展(继承), 创建 和我们业务相关的异常类.具体方式:1. 自定义异常类,然后继承自Exception 或者 RunTimeException。
2025-03-08 15:07:02
713
原创 Java中的String类
由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大 部分功能是相同的,这里介绍 StringBuilder常用的一些方法,其它需要用到了大家可参阅StringBuilder在线文档// 追加:即尾插-->字符、字符串、整形数字// hello// true// 获取0号位上的字符 h// 获取字符串的有效长度14// 获取底层数组的总大小// 设置任意位置的字符 Hello world123!!");!
2025-03-07 23:28:36
863
原创 Java基础图书管理系统
当user是普通用户时:NormalUser.java。借阅图书:BorrowOperation.java。归还图书: ReturnOperation.java。当user是管理员时:AdminUser.java。退出系统: ExitOperation.java。查找图书:FindOperation.java。删除图书:DelOperation.java。显示图书:ShowOperation,java。新增图书:AddOperation.java。最后只需要用过Main执行函数就行。
2025-03-05 09:25:00
426
原创 Java中的继承
和继承类似, 组合也是一种表达类之间关系的方式, 也是能够达到代码重用的效果。组合并没有涉及到特殊的语法 (诸如 extends 这样的关键字), 仅仅是将一个类的实例作为另外一个类的字段。继承表示对象之间是is-a的关系,比如:狗是动物,猫是动物组合表示对象之间是has-a的关系,比如:汽车汽车和其轮胎、发动机、方向盘、车载系统等的关系就应该是组合,因为汽车是有这些部件组成的。// 轮胎类// ...// 发动机类// ...// 车载系统类// ...class Car{
2025-02-25 20:57:33
1032
原创 类和对象 如何理解面向对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人 们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要 开发人员告诉给计算机什么是洗衣机。上图左侧就是。
2024-12-17 15:25:46
1095
原创 初识Java
1.1 Java是什么Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和 跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。1.2 Java语言重要性1. 语言广泛使用程度下图数据来自于TIOBE编程语言社区2024年10月最新的排行榜,常年占据语言排行榜榜首,是 近些年最火的编程语言之一。
2024-12-09 12:26:56
1029
原创 C语言项目实践-贪吃蛇
本次实现贪吃蛇会使⽤到的⼀些Win32 API知识,接下来我们就学习⼀下。Windows 这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外, 它同时也是⼀个很⼤ 的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程序达到开启 视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application), 所以便 称之为 Application Programming Interface,简称 API 函数。
2024-11-02 12:58:20
1247
原创 经典算法面试题:环形链表的约瑟夫问题
目录1.题目描述2.示例13.示例2正文开始著名的Josephus问题据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与]osephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
2024-10-26 15:00:50
327
原创 环形链表的约瑟夫问题
编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。n-1 轮结束以后,只剩下一个人,问最后留下的这个人编号是多少?上面是我对此算法的理解和操作,感兴趣的伙伴们可以试着在。最后祝各位正在努力的未来的小程序员们节日快乐!下一个人继续从 1 开始报数。
2024-10-24 20:43:26
444
原创 单链表专题
目录1.链表的概念及结构2.实现单链表3.链表的分类正文开始针对顺序表:中间/头部插入效率低下、增容降低运行效率、增容造成空间了浪费引入链表链表也是(一类具有相同特性的数据结构的集合)的一种物理结构:不一定是线性的逻辑结构:一定是线性的。
2024-10-14 21:37:13
921
原创 SeqList的使用:静态/动态顺序表
目录1.静态顺序表和动态顺序表的关系2.动态顺序表的初始化以及销毁3.分文件操作实现顺序表正文开始总所周知,知周所众,数组也是一个简单的顺序表,因为数组的元素是连续存放的,那为什么我们要单独创建一个顺序表来呢?为什么不直接拿数组来管理我们的数据呢?等等......................................所以我们引入顺序表。
2024-10-10 21:14:14
844
原创 预处理详解
C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义#define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。
2024-10-09 00:00:22
1068
原创 C 如何进行⽂件操作
但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。2.1 程序⽂件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。2.2 数据⽂件⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或 者输出内容的⽂件。本章讨论的是数据⽂件。在以前各章所处理数据的输⼊输出都是以终端为对象的,即从终端的键盘输⼊数据,运⾏结果显⽰到 显⽰器上。
2024-10-06 13:29:49
1222
原创 动态内存管理
C/C++程序内存分配的⼏个区域:1. 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时 这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内 存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。2. 堆区(heap):⼀般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。分配⽅ 式类似于链表。3. 数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。
2024-10-05 14:51:49
816
原创 ⾃定义类型:联合和枚举
⽬录1. 联合体类型的声明2. 联合体的特点3. 联合体⼤⼩的计算4. 枚举类型的声明5. 枚举类型的优点6. 枚举类型的使⽤正文开始。
2024-10-04 13:16:20
912
原创 ⾃定义类型:结构体
1. 位段的成员必须是 int、unsigned int 或signed int ,在C99中位段成员的类型也可以 选择其他类型。2. 位段的成员名后边有⼀个冒号和⼀个数字。
2024-10-03 13:58:47
1254
原创 qsort函数的模拟实现
---------------------------------------------------------------------------------------------------------------------------------正文开始回调函数就是⼀个通过函数指针调⽤的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条 件发⽣时由另外的⼀⽅调⽤的,
2024-10-01 12:40:04
439
原创 深入了解指针
⽬录:1. 内存和地址2. 指针变量和地址3. 指针变量类型的意义4. const修饰指针5. 指针运算6. 野指针7. assert断⾔8. 指针的使⽤和传址调⽤正文开始。
2024-09-26 20:35:40
783
原创 使用C语言在VS2022实现扫雷游戏
实现这款游戏我们实行5步走,让你也学会如何制作属于自己的游戏。的方式,使得开发过程尽然有序,提高效率的同时还提了代码的区块话处理,让代码更具有可读性。好了本期扫雷游戏的实现就到此为止,该游戏还可以有恩多拓展,比如:实现。2. 展开一篇功能(如果排查位置不是雷,周围也没有雷,可以展开周围的⼀⽚)实现这些拓展还需要用到关于函数递归的知识,学海无涯啊,同学们吗,加油!使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏。如果位置不是雷,就显示周围有几个雷0如果位置是雷,就炸死游戏结束0。
2024-08-08 13:18:27
809
原创 C语言在vs2022这个开发环境中如何实现多文件编译代码
以上就是如何在 vs2022 这个开发环境中实现多文件编译的步骤,如果以上方式能给各位看官带来一些帮助,请给博主个一键三连。第三步:直接在原来的 test.c 源文件进行函数的调用和包含对应函数的头文件。在解决方案资源管理器添加另外一个名为 add.c 的源文件。在解决方案资源管理器添加一个 add.c 的头文件。在这个 add.c 的源文件内进行函数定义。
2024-03-27 22:06:41
2321
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅