- 博客(765)
- 收藏
- 关注
原创 在 Java 中操作 Redis——详细操作接口
— 操作字符串(String),最常用;—— 操作哈希(Hash),适合存储结构化对象;—— 操作列表(List),可实现队列/栈逻辑;—— 操作集合(Set),实现无序去重;—— 操作有序集合(ZSet),适合排行榜等场景。
2025-07-24 08:58:51
691
原创 MyBatis 查询结果映射到 Java 对象全流程
在传统 JDBC 开发中,我们需要手动ResultSet→ 对象属性 的赋值;而 MyBatis 通过Mapper 接口映射配置,自动完成这一步骤。核心思想接口方法签名决定了 SQL 结果如何被包装映射配置(注解或 XML)决定了字段与属性的对应关系只要掌握以下几步,就能灵活控制数据从数据库到 Java 对象的整个生命周期。重点实体类(Entity)与视图对象(VO/DTO)可以分层设计,字段名与数据库列名最好统一或通过映射配置解决。// Entity// VO// 关联查询得到的列。
2025-07-23 14:10:55
787
原创 通用更新操作套路实战指南
Data// —— 主表字段// 主键// ……其他可更新字段……// —— 子表集合@Data// parentId 不由客户端传入,由 Service 注入说明id用于定位要更新的主记录。所有可更新字段均定义在 DTO 中,未赋值字段在 Mapper 中会被动态跳过。子表children集合包含所有新数据,Service 中先删后加。
2025-07-23 08:55:41
885
原创 通用批量删除操作套路实战指南
在业务系统中,往往不仅仅是简单地删除主表记录,还需结合和,才能保证数据一致性和安全性。本文将抽象出一套通用的批量删除套路,沿用三层架构(Controller → Service → Mapper),并结合 MyBatis 的<foreach>批量 SQL,帮助你快速构建健壮的删除接口。
2025-07-22 16:36:51
439
原创 通用批量新增操作套路实战指南
Data// 主表字段// ……其他字段……// 子表集合@Data// 不在 DTO 中设置 parentId,由 Service 统一注入说明把主表与从表的所有新增信息都放到一个 DTO 中,方便 Controller 一口气接收。parentId不由客户端传入,由后端在 Service 中设置,防止伪造。
2025-07-22 14:30:59
694
原创 通用分页查询套路实战指南(配合自定义 `Result<T>` 与 `PageResult`)
*** 通用分页查询 DTO*//** 当前页码,默认 1 *//** 每页记录数,默认 10 *//** 关键字过滤(可选) *//** 类别筛选(可选) *//** 状态筛选(可选) */要点所有分页参数和查询条件集中在一个 DTO,方便复用和扩展。
2025-07-22 14:12:03
423
原创 字符流 vs 字节流——差异、选用指南与设计动因
二进制(图片、音频、视频、压缩包、网络协议原始数据……)→ 用字节流。文本(源代码、日志、配置文件、XML/JSON/CSV……)→ 用字符流,并显式指定字符集,避免乱码。掌握“字节搬运”与“字符转换”这对流的区别,能让你在文件 I/O 和网络通信中游刃有余,既保证性能,又能正确处理多语言文本。
2025-07-21 22:14:25
343
原创 Java 方法与异常处理
本文围绕“除法运算”这一典型场景,系统介绍 Java 中方法定义、运行时异常(Unchecked Exception)与受检异常(Checked Exception)的使用,以及异常捕获的标准模式与最佳实践,帮助读者在保持代码简洁的同时,提升健壮性和可维护性。Java 仅支持值传递,无论基本类型还是引用类型,方法接收到的都是值的副本。运行时异常(Unchecked)无需声明;若不捕获,将导致程序中断。受检异常(Checked)需在方法签名中声明,调用方必须处理。合理使用throwthrows。
2025-07-21 16:24:42
370
原创 浅拷贝 vs 深拷贝:共享与独立的关键差异
根据实际需求,选择合适的拷贝方式,才能在“共享”与“独立”之间达到最佳平衡。:对对象本身进行复制,但。:不仅复制当前对象,还。所有它引用的子对象。
2025-07-21 14:19:42
246
原创 Java 参数传递:深入理解值传递(Pass-by-Value)
值传递:调用方法时,Java 会将实参的值复制一份,传给形参。对于基本类型,这个“值”就是数据本身;对于引用类型,这个“值”则是对象在堆上的引用(地址)的副本。核心结论无论是基本类型还是引用类型,Java 方法拿到的都是值的拷贝,而不是实参变量本身。
2025-07-21 14:13:23
394
原创 理解继承、接口与组合:Java 面向对象三要素
它们分别解决“是什么”“能做什么”“包含什么”三个维度的问题。本文将通过通俗的比喻和示例代码,帮你快速理清它们的区别与联系。在实际项目中,优先考虑“多组合、少继承”,并“对接口编程,不依赖具体实现”,能让你的代码更灵活、可维护,也更易于单元测试。:类内部持有另一个类(或接口)的实例,通过它来复用功能。:接口定义一组行为契约,任何实现类都承诺提供这些行为。:子类是父类的一种,更具体地拥有父类的属性和行为。
2025-07-21 09:51:33
744
原创 控制反转 (IoC) 与依赖注入 (DI)
你去餐厅吃饭,不需要自己到菜市场买菜——餐厅(容器)准备好所有食材(依赖),你只负责点菜(调用服务)。解耦后,业务类只关心“做什么”,不关心“用谁来做”。依赖注入是 IoC 的具体实现方式,指容器。(不推荐,测试困难)
2025-07-21 09:43:57
322
原创 JAVA面向抽象与多态——父类引用 vs 子类引用 的关键区别
使用父类引用时,若要调用子类新方法,必须先强转为子类类型;直接用子类引用则无此限制。无论引用声明为父类还是子类,调用被重写的方法总会执行子类的实现。
2025-07-21 09:43:20
145
原创 黑马Java第三阶段:苍穹外卖(笔记)
需求分析→ 与产品/UE 讨论,输出“需求文档”与原型设计阶段→ UI 高保真效果图 & 系统架构方案开发阶段→ 按照接口文档 & 设计图实现功能测试阶段→ 功能测试 & 性能测试,问题反馈与修复发布运维→ 部署生产环境,监控 & 日常维护💡关键:每个阶段都产出可交付物,并在团队之间做好沟通与验收。
2025-07-11 23:57:11
614
原创 用 IntelliJ + Spring Boot + Lombok 实现用户列表展示
在Data;@Data注:Lombok 的@Data会在编译时自动生成对应方法和构造器。
2025-06-17 14:11:18
707
原创 黑马Java第二阶段:JavaWeb+AI(笔记)
Web,即全球广域网(World Wide Web,简称 www)是通过浏览器访问的网站系统前端程序:负责界面展示(HTML/CSS/JS)服务端程序:处理业务逻辑(Java、SpringBoot)数据库:存储和管理数据(MySQL等)前端:负责网页在浏览器端的“结构 + 外观 + 行为”三大核心技术技术功能作用HTML页面结构(内容和标签)CSS页面表现(样式与布局)JavaScript页面行为(交互与响应)运行原理:浏览器解析程序员编写的代码 → 渲染为用户看到的网页。
2025-05-25 15:39:39
1960
1
原创 深入理解动态规划、分治与贪心算法
希望通过这次梳理,你对动态规划、分治法和贪心算法有了更清晰、更深刻的理解。分治法:处理独立子问题,递归分解合并。贪心算法:追求局部最优,简单快速但不保证全局最优。动态规划:处理重叠子问题和最优子结构,通过存储子问题解保证全局最优。它们都是强大的算法思想。理解问题的本质特性——子问题是否独立?是否有重叠?是否需要全局最优?——是选择正确工具的关键。
2025-05-06 09:18:50
1118
原创 并发和并行
并发与并行代表了不同的“同时性”实现方式:并发是时间维度上的复用,并行是空间维度上的分配。在系统设计中,应根据任务特征与资源环境,灵活运用二者,以实现高效、可靠的并发处理和大规模计算能力。在高性能与高可用系统设计中,“并发”(Concurrency)与“并行”(Parallelism)是两个常被提及但容易混淆的概念。可以看到,同样是 3 个 CPU 密集型任务,串行执行总耗时约 9 秒,而在 3 核心并行时总耗时约 3 秒。可见,3 个 I/O 任务在。模式下总耗时约 3 秒,而在。
2025-04-28 16:36:51
1230
原创 进程和线程
在软件开发与部署中,我们经常听到“进程”和“线程”两个概念。本文将从概念、资源隔离、调度机制等方面,深入剖析线程与进程的区别,并结合生产环境中的常见应用场景,通过示例来说明它们对系统稳定性、性能和扩展性的影响。在生产环境中,需根据具体业务场景(IO 密集 vs CPU 密集)和稳定性需求,合理选择或混合使用二者,以达到最佳的性能与可靠性平衡。为了更直观地感受到进程与线程的差异,下面提供两个操作示例——直接跑代码就能体会它们在内存隔离和容错方面的区别。,后启动的线程能看到前一个线程的修改结果。
2025-04-28 16:18:43
880
原创 用 PPT 绘制图形并在 LaTeX 中插入高质量图片
使用 PPT 绘制图形并导出为 SVG:充分利用 PPT 的绘图功能创建矢量图。安装 Inkscape 并转换格式:通过命令行将 SVG 文件转换为 PDF 文件,获得更高的图像质量。在 LaTeX 中插入 PDF:利用 graphicx 包将生成的 PDF 图片嵌入到 LaTeX 文档中。
2025-03-13 18:34:15
877
原创 神经网络训练的最基本流程
定义神经网络模型是训练过程中的第一步。神经网络由多个层(如输入层、隐藏层和输出层)组成,每一层包含多个神经元。每个神经元接收来自上一层的输入,并通过激活函数将其转化为输出,传递给下一层。输入层:接收输入特征。隐藏层:进行数据处理和特征转换。隐藏层的神经元个数通常是一个超参数。输出层:输出结果,通常用于分类任务(如Softmax)或回归任务(如线性回归)。常见的神经网络框架包括 TensorFlow 和 PyTorch,在这些框架中,我们可以通过定义模型类来指定网络的结构。
2025-03-07 14:36:04
1452
原创 LeetCode 热题 HOT 100 (215. 数组中的第K个最大元素)
Quickselect 利用分治思想,通过一次分区就能缩小问题规模,平均时间复杂度为 O(n)。这样可以降低最坏情况出现的概率,从而在大部分情况下实现 O(n) 的性能。因为 Quickselect 常用于求第 k 小的元素,所以要求第 k 个最大元素时,需要转换为第n - k个最小元素。分区操作与快速排序类似,通过不断交换元素使得 pivot 位置确定。
2025-03-04 16:56:18
876
原创 黑马Java第三阶段:苍穹外卖(笔记)
如果后端有多个实例(集群部署),可以使用。功能,帮助前端开发调试 API。进行开发,提高性能和安全性。Swagger 提供。
2025-03-04 15:12:38
815
原创 LeetCode 热题 HOT 100 (221. 最大正方形)
定义二维数组dp,其中dp[i][j]表示以为右下角的正方形的最大边长。如果是'1',那么该位置的正方形边长取决于其上方、左侧和左上角三个位置的正方形边长:dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1;如果是'0',则,因为不能构成全为'1'的正方形。状态dp[i][j]表示以(i, j)为右下角的、只包含'1'的正方形的最大边长。二维矩阵的表示方法;动态规划的基本思想和状态转移方程。定义状态dp[i][j]表示以。
2025-03-03 16:18:08
880
原创 LeetCode 热题 HOT 100 (226. 翻转二叉树)
二叉树是一种常见的数据结构,由多个**节点(Node)**构成。数据部分(val):存储这个节点的数值。左子节点(left):指向当前节点的左孩子。右子节点(right):指向当前节点的右孩子。4/ \2 7/ \ / \1 3 6 9在这棵树中,根节点为4,节点4的左子树是以2为根的子树,右子树是以7为根的子树。翻转二叉树也叫反转二叉树,它的意思是将二叉树中所有节点的左子树和右子树互换。
2025-03-03 15:01:05
816
原创 LeetCode 热题 HOT 100 (739. 每日温度)
基础知识:我们介绍了数组和栈的基本概念,并说明了什么是单调栈。题目思路:利用单调递减栈实现 O(n) 时间复杂度的解法。代码实现:详细解释了如何遍历温度数组并利用栈动态更新等待天数的答案。复杂度分析:说明了时间和空间复杂度。
2025-03-03 14:10:43
992
原创 LeetCode 热题 HOT 100 (160. 相交链表)
在 Java 中,我们可以用一个。,由多个节点(Node)组成。开始,两个链表合并,形成。对象代表链表中的一个。
2025-02-28 16:06:26
374
原创 Java中的super关键字
super在 Java 中,supersuper如果子类中定义了与父类相同名称的变量,默认情况下,子类的方法会优先使用自己的变量。如果想要访问父类的变量,就需要用super关键字。numnumnumsuper.numnumsuper当子类覆盖了父类的方法,但仍然想要调用父类的版本,可以使用。Childdisplay()display()supersuper(参数)ChildParentsuper()super();
2025-02-27 15:42:48
634
原创 Java 面向对象三大特征(初学者入门)
这样子类可以直接使用父类已有的功能,而无需重复编写代码。,掌握这些特性可以帮助我们更好地编写高效、可维护的代码。,但它们运行时会调用自己所属子类的。,防止外部直接访问或修改数据。简单来说,封装的核心思想是。在 Java 编程中,
2025-02-27 09:53:44
485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人