自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是堆,和树的区别是什么 ?

堆是一种特殊的树结构,更准确地说是:一种满足「堆性质(Heap Property)」的完全二叉树(Complete Binary Tree)。比较项树(Tree)堆(Heap)定义一种层级结构的数据结构一种满足特定条件的完全二叉树形态任意形态(不一定完全)必须是完全二叉树顺序关系可以没有顺序,比如普通二叉树有严格的父子大小关系(堆序性)用途表示层级结构(如文件系统、解析树)实现优先队列、排序(堆排序)存储方式一般用链表或指针结构一般用数组存储(因为是完全二叉树)示例。

2025-10-11 12:08:00 351

原创 Java——递归与循环的比较和深入理解

🔹循环是机器思维:重复执行直到条件结束。🔹递归是数学思维:问题拆成更小的同类问题解决。对比维度递归(Recursion)循环(Loop)基本概念方法在执行过程中直接或间接调用自身。使用forwhiledo...while等结构反复执行一段代码。本质思想将大问题拆分成结构相似的小问题。重复执行某个操作直到条件不满足。终止条件必须有递归出口(否则会无限调用栈)。必须有循环条件(否则会进入死循环)。对比维度递归 Recursion循环 Loop概念函数自己调用自己重复执行语句块终止条件。

2025-10-07 21:55:20 1057

原创 有了mac地址,为什么还要IP地址

MAC 地址用来标识“谁是谁”,IP 地址用来告诉“在哪儿”。两者各管一件事,缺一不可。对比项MAC 地址IP 地址类型物理地址逻辑地址层级数据链路层网络层唯一性全球唯一(硬件决定)网络内唯一(可更改)作用确定设备身份确定设备位置适用范围局域网整个互联网示例✅MAC 是身份证,IP 是家庭住址。只有两者结合起来,网络数据才能从“全世界”准确送到你的电脑。

2025-10-06 11:24:03 316

原创 JavaWeb学习笔记——Day15

OOP(面向对象):关注“对象”的封装、继承、多态。AOP(面向切面):关注“横切关注点”,比如日志、权限、事务,这些跟业务无关但到处都要用的功能。好处:让业务逻辑代码更简洁,只管业务,把公共功能交给 AOP 统一处理。@Slf4j@Aspect // 标识这是一个切面类@Component // 交给 Spring 管理/*** 切面逻辑:统计业务层方法执行耗时* execution 表达式:匹配 com.xxx.service 包下所有方法*/// 执行原始方法。

2025-09-21 22:24:34 867

原创 什么叫做进程

进程就是一个正在运行的程序。程序(Program):写好的代码 + 指令 + 数据(放在硬盘里,还没跑)。进程(Process):程序被操作系统调度起来运行后的状态(加载到内存里,CPU 执行)。👉 程序是“死”的,进程是“活”的。

2025-09-20 22:12:46 242

原创 计算机网络分层的深度理解

计算机网络分层是为了。

2025-09-20 21:50:06 641

原创 频域带宽与时域带宽

含义:时域带宽其实就是信号在时间上的“持续范围”。直观理解:👉 时域带宽 ≈ 信号持续的时间宽度。含义:频域带宽就是信号在频率上的“分布范围”。直观理解:👉 频域带宽 ≈ 信号包含的频率范围。信号的 时域和频域是傅里叶变换对偶的,存在一个重要关系:时域窄 → 频域宽时域宽 → 频域窄🔑 这就是著名的 “时频不确定性原理”:信号不可能在时域和频域都同时无限窄。例 1:脉冲信号例 2:纯正弦波✅ 一句话总结:这背后是 傅里叶变换的本质。我用通俗一点的方式解释:想象一个 非常短的脉冲:👉 类比:你要画一个

2025-09-20 21:23:14 983

原创 计算机网络——网络速录与网络带宽的深度理解

带宽是最大值/理论值,速率是实际值。速率 ≤ 带宽。你买了“100M 宽带”(带宽=100 Mbps)。理论下载速度 = 100 ÷ 8 = 12.5 MB/s。但你实际下载速度可能只有 8 MB/s,因为要看服务器有没有给你这么快、网络是否稳定等。✅一句话总结带宽= 管道的最大宽度(能承载多少数据)。速率= 你实际流过的数据速度(你真实体验到的网速)。

2025-09-20 21:15:42 203

原创 JWT讲解

第一部分:Header(头信息,记录类型和签名算法)第二部分:Payload(有效载荷,存放数据/声明)第三部分:Signature(签名,用于校验数据完整性)它保证了 JWT 在传输过程中不会被篡改。签名算法(Signature Algorithm)是一种用于生成和验证数据签名的算法,主要作用是保证数据的完整性和真实性。在 JWT、数字证书、消息认证等场景中广泛使用。签名算法就是生成签名和验证签名的规则,它保证数据不可篡改且来源可信。对称算法:HS256、HS512 → 速度快,密钥需保密。

2025-09-20 17:50:45 733

原创 Javaweb学习笔记——登录Day14

用户打开浏览器访问服务器,到关闭浏览器这段时间里的交互过程。比如:你登录了淘宝 → 加购物车 → 下单,这一整套流程就是一次会话。服务器要“记住你是谁”,就得有会话跟踪技术。技术存储位置适合场景安全性Cookie客户端记住用户偏好、免登录较低(可被篡改)Session服务器端登录状态、购物车较高URL重写URL 中浏览器禁用 Cookie 时较低优点:能记住用户,实现登录状态和个性化,简单好用。缺点:容量小、安全风险大、可能侵犯隐私,还会占用流量。

2025-09-20 14:06:27 1010

原创 Web开发错误日志记录——查询回显

参数绑定:接收?key=value的请求参数。:接收 URL 路径中的参数,例如/emps/{id}。使用场景要区分清楚,否则参数无法正确传递。Service 层返回值Service 层的方法需要根据业务返回相应对象,不能随意写成void。一般 Controller → Service → Mapper,层层传递并返回结果。日志的重要性日志能帮助快速定位问题(参数是否正确传递)。建议在 Controller 打印入参,在 Service 打印查询结果,排查更高效。

2025-09-16 22:13:45 586

原创 JavaWeb学习笔记——Day13

特性resultTyperesultMap简单性简单,自动封装复杂,需手动配置使用场景字段名和属性名一致字段名和属性名不一致,或复杂关系灵活性较低较高(支持一对多、多对多等)常见用法简单查询,单表映射复杂查询,多表关联,自定义字段映射✅一句话记忆字段名和属性名能对上→ 用resultType。对不上 / 有复杂映射关系 → 用resultMap。在更新员工信息时:员工字段很多(usernamepasswordnamegenderphonejobsalaryimage。

2025-09-16 17:15:40 1178

原创 JavaWeb学习笔记——day12

当一个事务方法被另一个事务方法调用时,事务是如何传播和处理的。已经开启了事务里面又调用了,而bMethod()也加了那么问题来了:bMethod()是用A 的事务,还是自己重新开一个事务,还是干脆不用事务?这就是事务传播行为要解决的。

2025-09-16 14:01:52 1131

原创 前缀和的本质 → 为什么能想到 → 常见应用场景

本质:用累计信息(前缀和),快速求任意区间的信息。思路来源:把「子数组和」转化为「两个前缀和的差」。应用场景:凡是涉及「区间和」「区间统计」「子数组条件」的题,都可以考虑前缀和。

2025-09-15 13:49:30 771

原创 JavaWeb学习笔记——day11

例子:查询年龄大于 18 的学生,并且只返回第 2 页,每页 5 条数据。

2025-09-14 16:59:29 1368

原创 JavaWeb学习笔记——day10

是 Logback 的核心配置文件,控制日志输出目标、格式、级别等。:根节点<property>:定义变量<appender>:日志输出<encoder>:日志格式:滚动策略<logger>:包/类日志级别<root>:根日志级别灵活使用<logger>和<root>可以满足开发和生产环境的不同需求。在数据库中,不同的实体(比如学生、课程、订单、商品)往往需要存储在不同的表中。多表关系就是指表与表之间的关联方式,它帮助我们把数据结构化、规范化,减少冗余。外键(Foreign Key)是。

2025-09-13 22:30:01 1367

原创 JavaWeb学习笔记——Day9

新建一个SpringBoot 工程。在pom.xml(Web 开发必备,提供 REST 接口)(整合 MyBatis)(MySQL 驱动)lombok(简化 getter/setter、构造器代码)在数据库表里,字段一般是下划线风格(如),而在 Java 实体类里,属性一般是驼峰命名(如createTime如果不做处理,MyBatis 可能对不上号,就需要一些方式来解决。方式写法适用场景缺点Mapper 接口注解字段名和属性名差异大代码繁琐SQL 起别名SQL 里起别名。

2025-09-10 22:24:00 797

原创 集合框架——Day5

方法作用特点/返回值添加/修改元素key 存在会覆盖旧值,返回旧 value删除指定 key 的键值对返回被删除的 value,不存在返回 nullclear()清空集合无返回值判断是否包含某个 key返回 boolean判断是否包含某个 value返回 booleanisEmpty()判断集合是否为空返回 booleansize()返回键值对个数返回 int📌这些方法是所有 Map 实现类(HashMap、TreeMap、LinkedHashMap…)都具备的通用功能,主要负责。

2025-09-09 15:56:48 1018

原创 Java泛型里面可以写基础数据类型吗?为什么?

泛型不能写基本类型,只能写引用类型。解决办法:用包装类 + 自动装箱/拆箱。

2025-09-09 11:58:20 333

原创 Java集合框架——day4

实现类有序性是否去重是否可排序底层结构使用场景HashSet无序✅ 去重❌ 不排序哈希表(数组+链表/红黑树)去重,快速查找插入顺序有序✅ 去重❌ 不排序哈希表 + 链表去重,保持顺序TreeSet排序有序✅ 去重✅ 排序红黑树去重,需要排序底层基于HashMap。插入、查找效率高(平均 O(1))。元素无序(顺序由 hash 算法决定)。自动去重,依赖。JDK1.8 以后为了解决链表过长问题,引入红黑树优化查找效率(O(log n))。

2025-09-09 08:43:26 625

原创 Java集合框架——Day3

首尾频繁操作→ 用LinkedList例子:实现队列(FIFO),用addLast()入队,出队。例子:实现栈(LIFO),用addFirst()压栈,出栈。需要快速随机访问→ 用ArrayList。LinkedList的迭代器是专门为链表遍历设计的,效率比下标访问高。Iterator:只能单向走 + 删除。:能前后走 + 插入/修改。fail-fast 机制:在遍历时,如果外部修改集合,会抛。默认类型如果不给集合指定类型,集合默认认为所有元素都是Object。添加数据。

2025-09-08 09:15:27 1029

原创 Java 中的数据类型分类

基本类型→ 存的是“值”。引用类型→ 存的是“地址”,通过地址找到堆里的对象。

2025-09-07 20:56:17 335

原创 Java多态深入

多态(Polymorphism):同一个方法调用,在不同对象中表现出不同的行为。老师喊一句 “上课”,学生会打开书本,老师会开始讲课,校长可能去巡视。“上课” 这条指令是一样的(相同方法),但不同角色(对象)做的事不同(不同实现)。

2025-09-07 20:36:12 272

原创 Java集合框架——Day2

List有序 + 可重复 + 有索引。除了Collection的方法外,List特有的就是增删改查都能用索引操作。ArrayList(更常用),LinkedList(需要频繁增删时用)。数据结构存储特点优点缺点典型应用栈后进先出操作快只能操作栈顶函数调用、撤销队列先进先出公平排队随机访问慢消息队列、任务调度数组连续存储随机访问快插入删除慢成绩表、配置表链表指针连接插入删除快查找慢LRU 缓存、进程管理二叉树左右分支结构清晰效率不稳定。

2025-09-06 20:32:35 908

原创 Java集合框架——Day1

特点好处大小可变不用担心数组长度不够提供丰富的 API支持排序、查找、过滤等操作多种数据结构实现有序、无序、去重、队列、字典都能实现与泛型结合保证类型安全,避免类型转换错误提高开发效率几乎所有常见的数据操作,集合类都内置了集合比数组更灵活、更强大,是写 Java 程序处理数据时的“必备工具箱”。Collection。

2025-09-06 00:36:52 1023

原创 JavaWeb学习笔记——Day8

JDBC:优点是性能高、无框架依赖,缺点是代码冗余、维护困难、安全性差。MyBatis:优点是开发效率高、可维护性强、安全性好,缺点是需要额外学习和配置。写 Demo、练习→ JDBC 就够了。实际项目→ 用 MyBatis,更适合团队开发和长期维护。特性无连接池有连接池连接建立每次都新建,开销大复用连接,快速性能并发高时容易崩高并发下稳定管理性无法限制连接数可限制最小/最大连接数,防止数据库被压垮适用场景小程序、Demo中大型项目、并发访问场景。

2025-09-05 09:09:42 662

原创 JavaWeb学习笔记——Day7

步骤方法注意事项1. 注册驱动新版本 MySQL 可省略,但建议写上2. 建立连接3. 创建语句推荐用4. 执行 SQL(查询) /(增删改)区分方法,不要混用5. 处理结果遍历用rs.next()6. 释放资源close()顺序:ResultSet → Statement → Connection✅小结JDBC 就是 Java 操作数据库的“万能接口”。

2025-09-03 21:17:40 832

原创 JavaWeb全套学习笔记(超详细、快速入门、实操练习记录)——已更新6天

大家好,这个是我个人的JavaWeb学习笔记,基于B站上面的各总视频教程学习的,结合视频类容深度思考整理后写下的笔记,类容比较详细,适合刚入门想学习JavaWeb的小伙伴,里面记录了全程的学习过程,各自资料的收集总结,代码实操,运行截图,遇到的问题,解决方案等,笔记将持续更新,直至javaweb学习完毕,欢迎大家一起来讨论交流,一起学习,希望可以帮助到大家。笔记使用方法: 聚焦于知识点的总结和实现,知识点是分开的,笔记中是学一点就实操一下,便于理解记忆和快速入门。相关链接: 1.黑马JavaWeb在线笔记

2025-09-03 00:01:57 863

原创 JavaWeb学习笔记——Day 6

当你要用 MySQL 数据库时,你的程序(或者命令行工具)需要“连”上 MySQL 服务,这就叫数据库连接。主机(host):数据库在哪台电脑上,一般本机是localhost或127.0.0.1端口(port):MySQL 默认端口是3306用户名(user):谁来访问数据库,比如root密码(password):防止陌生人随便访问数据库名(database):想操作哪个数据库程序(客户端) -> 主机(IP) -> 端口(3306) -> 用户名 + 密码 -> 数据库。

2025-09-02 23:54:03 757

原创 Java深度理解——Java类里面构造器可以给常量赋值吗?

在 Java 中,常量通常指用。

2025-09-02 01:22:51 739

原创 JavaWeb学习笔记——day 5

。**一句话总结:**Spring Boot 就是让你写 Java Web 项目更快、更轻松的框架。可以通过两种方式:选择依赖:目录结构大概是这样的:1. 启动类(入口)2. 写一个控制器(Hello World)3. 配置文件(application.properties)默认可以不写,但我们可以改端口号:五、运行项目直接运行 浏览器访问:输出结果:六、总结经验Spring Boot 把复杂的配置都帮我们做好了,入门非常快。启动类 + 控制器 就能完成一个最简单的 W

2025-09-02 01:17:50 1149

原创 Leetcode283. 移动零——算法解析

双指针技巧:常见于数组题,一个指针负责遍历,一个指针负责放置有效元素。原地修改:这题要求“不能用额外数组”,所以 swap 的思路非常关键。保持顺序:交换时必须按遍历顺序来,否则会打乱非零元素的相对顺序。调试习惯:遇到 bug,可以打印来一步步跟踪数组变化,很快能看出问题。

2025-09-01 00:40:40 195

原创 JavaWeb全套学习笔记(超详细、快速入门、实操练习记录)——已更新5天

大家好,这个是我个人的JavaWeb学习笔记,基于B站上面的各总视频教程学习的,结合视频类容深度思考整理后写下的笔记,类容比较详细,适合刚入门想学习JavaWeb的小伙伴,里面记录了全程的学习过程,各自资料的收集总结,代码实操,运行截图,遇到的问题,解决方案等,笔记将持续更新,直至javaweb学习完毕,欢迎大家一起来讨论交流,一起学习,希望可以帮助到大家。笔记使用方法: 知识点是分开的,笔记中是学一点就实操一下,便于理解记忆。VS Code提供了非常丰富的插件功能,根据你的需要,安装对应的插件可以大大提高

2025-08-31 21:22:20 1441

原创 JavaWeb学习笔记——Day 4

Spring 框架MyBatisJUnit去官网找 jar 包下载拷贝到项目的 lib 目录手动配置 classpath这样很麻烦,而且不同库之间还可能互相依赖,你要一个个去找,非常累。👉Maven 的依赖管理就是帮你自动下载、管理版本、处理传递依赖,省心省力。自动下载 jar 包(不用手动下载)自动处理传递依赖(不用一个个去找)解决版本冲突(提供统一管理机制)好问题 👍 我用通俗易懂的方式给你讲一下单元测试(Unit Test)。定义:单元测试就是对程序中最小的可测试单元。

2025-08-31 21:17:56 974

原创 字母异位词分组

这段代码高效地解决了字母异位词分组问题,利用HashMap和字符串排序的组合来实现分组。每个函数/方法的作用清晰,配合在一起完成从输入到输出的完整逻辑。如果有进一步的问题或需要更详细的解释,请告诉我!

2025-08-29 21:17:27 828

原创 JavaWeb学习笔记——Day 3

指令作用v-bind动态绑定属性v-model双向绑定表单输入条件渲染(删除/添加 DOM)v-show显示/隐藏(切换 display)v-for列表渲染v-on绑定事件v-html渲染 HTMLv-text设置文本。

2025-08-29 17:54:48 448

原创 Javaweb学习笔记——Day 2

在 HTML 中,我们使用 标签 来引入 JavaScript。常见有 三种方式:🔹 示例:👉 点击按钮就会弹出提示框。🔹 示例:👉 这样代码逻辑更清晰。🔹 示例:👉 推荐使用这种方式,因为更好维护。👉 变量就是用来存储数据的“容器”,你可以把它理解为一个带名字的盒子。比如:这里:以后你就可以用 这个名字来访问 了。JavaScript 有 3 种声明变量的方式:letconstvarJavaScript 有 两大类数据类型:可以理解为存放在“盒子”里的简单值。N

2025-08-29 16:21:08 737

原创 JavaWeb全套学习笔记(超详细、快速入门、实操练习记录)——持续更新中

CSS全称(层叠样式表),它的作用是给 HTML 页面加上样式,比如颜色、字体、布局等。HTML 是骨架,CSS 是化妆和衣服。HTML =数据结构(页面结构)CSS =样式(相当于皮肤/美化)JS =行为(交互逻辑,像控制器)→ 当前页打开(默认)。→ 新标签页打开,最常用。→ 在框架结构里使用。target="自定义名字"→ 指定的 iframe 里打开。

2025-08-27 20:03:33 1004 1

原创 LeetCode 第 1 题:两数之和

这个是经典的👍。

2025-08-26 16:52:47 346

原创 Java深度理解——枚举(2025/8/25)

定义:Java 的枚举(Enum)是一种特殊的类,继承自,用于定义一组命名的常量。每个枚举常量都是该枚举类型的实例。特点枚举常量是固定的、不可变的。提供类型安全,避免硬编码(如用字符串或整数表示状态)。支持方法、构造器、字段,功能比简单常量更强大。常用于switch语句、状态机、配置项等场景。适用场景表示固定集合:如星期(Monday, Tuesday…)、状态(ON, OFF)、级别(LOW, MEDIUM, HIGH)。替代硬编码的字符串或整数,提升代码可读性和安全性。

2025-08-26 16:00:23 1282

空空如也

空空如也

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

TA关注的人

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