- 博客(57)
- 收藏
- 关注
原创 javaWeb开发---前后端开发全景图解(基础梳理 + 技术体系)
前后端开发不仅需要掌握各自领域的技术细节,还要了解它们之间的协作流程。本文梳理的架构图与技术栈,可以作为入门全栈开发或理解大规模系统架构的重要参考。掌握基础、重点进阶、理解整体,才能在开发中游刃有余!
2025-04-27 21:58:24
1364
5
原创 双目RealSense系统配置rs_camera.launch----实现D435i自制rosbag数据集到离线场景的slam建图
Intel RealSense系列相机因其出色的深度感知能力和灵活的配置选项,在机器视觉与应用中得到广泛应用。大家在后期的slam学习中,无论是对算法本身的性能要求还是实验的泛化性都有一定的要求,那么公开的数据集如kitti、tum、Eourc不能满足实验的需求,并且理论验证都需要场景建图。本文将详细介绍如何通过修改ROS启动文件参数,将RealSense相机从单目配置调整为双目配置,并分析关键参数的设置原理。
2025-04-27 18:47:46
914
5
原创 深入理解表单---提交用户与网页交互的重要方式:GET 与 POST 的本质区别与应用实践
GET与POST是 Web 表单中两种最基础但非常重要的请求方式。掌握它们的本质差异与使用场景,是每个前端和后端开发者的必修课。
2025-04-24 21:22:05
1285
8
原创 装饰者模式(Decorator Pattern)---“洋葱模型”,实现代码“变身”
装饰者模式就像“乐高积木”,你可以在不破坏原始结构的情况下,自由组合新功能,它比继承更灵活,是你写出高内聚、低耦合代码的强大工具。
2025-04-24 19:30:02
557
1
原创 解耦旧系统的利器:Java 中的适配器模式(Adapter Pattern)实战解析
适配器模式(Adapter Pattern)是结构型设计模式的一种。它将一个类的接口转换成客户期望的另一个接口,使原本接口不兼容的类可以一起工作。通俗理解:就像“插座转接头”,电器插头和插座不匹配,适配器能帮它们“握手言和”。适配器模式看似简单,但它在接口兼容、系统重构、第三方集成等场景中极具价值。通过本文的 Java 示例你可以看出:适配器不仅仅是“语法转换”,更是构建低耦合、高复用、可维护架构的基石。
2025-04-23 22:11:35
408
原创 深度学习训练中的显存溢出问题分析与优化:以UNet图像去噪为例
常见爆显存原因;确认输入尺寸是否太大或未 resize;启用 AMP,简单又高效;合理设计模型结构使用 Dataloader 加速,避免数据传输抖动;手动清理缓存防止 PyTorch 持有多余内存;查看 PyTorch 显存使用报告。总之,小规模的图像训练是可以通过网络设计与训练的逻辑来优化显存的使用率的,思路供大家参考。
2025-04-22 21:46:37
856
原创 代理模式(Proxy Pattern)详解:以延迟加载图片为例
代理模式为其他对象提供一种代理以控制对这个对象的访问。常见的几种代理有:虚拟代理:根据需要创建开销大的对象(比如图片加载)。保护代理:控制访问权限。远程代理:为不同地址空间的对象提供局部代表。特点描述延迟加载图片只在真正需要时才创建,节省资源隐藏细节客户端无需关心加载逻辑,只调用display()即可易扩展可在代理中添加缓存、权限控制、日志记录等功能图像、视频、音频的懒加载远程调用接口的延迟访问安全控制,如保护资源的访问对资源访问进行监控或统计代理模式提供了一种。
2025-04-22 20:07:26
590
原创 Java 工厂设计模式详解:用统一入口打造灵活可扩展的登录系统----掌握 Spring 源码的基础第一步
工厂模式是一种创建型设计模式,它通过定义一个用于创建对象的接口,让子类决定实例化哪一个类。这样,我们可以将对象的创建与使用解耦,实现更强的扩展性和可维护性。通俗地说,工厂模式就像点外卖平台——你只管下单(告诉工厂你想吃什么),工厂帮你创建对应的“菜品实例”,你不需要关心这些菜是怎么做的。所有登录服务都必须实现这个接口,保证调用方使用统一的方式调用。工厂模式作为 Java 最常用的设计模式之一,真正的精髓在于解耦与扩展性。尤其在业务不断演进、需求不断变化的环境中,工厂模式提供了一种优雅的应对方式。
2025-04-17 22:04:05
781
6
原创 观察者设计模式详解:解耦通知机制的利器
观察者设计模式(Observer Pattern),属于行为型模式。它定义了对象之间的一种一对多依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会自动收到通知并更新状态。简而言之,它是一种发布-订阅的机制,其中**主体(Subject)**发布通知,**观察者(Observer)**订阅并接收通知。观察者设计模式通过一对多的依赖关系,使得我们能够在不同组件间实现松耦合的通知机制。它适用于需要在状态变化时通知多个观察者的场景。在实际开发中,观察者模式的灵活性和可扩展性,使得它成为非常重要的设计工具。
2025-04-17 21:39:55
1489
原创 使用 PyTorch 构建 UNet 图像去噪模型:从数据加载到模型训练的完整流程
通过本文,我们从零实现了一个完整的图像去噪深度学习系统,涵盖数据读取、模型搭建、训练与保存,适合作为图像恢复任务的起点项目。如果你有更小的数据集,推荐加入数据增强;如果你追求精度,建议使用 Uformer 或 Transformer-based 模型。
2025-04-16 21:47:50
1100
3
原创 从 PyTorch 到 ONNX:深度学习模型导出全解析
/这个函数接收三个参数://pth_path: 训练得到的模型参数文件路径//onnx_path: 导出的 ONNX 文件保存路径//input_size: 模拟推理输入的尺寸(默认 1×3×256×256)导出 ONNX 模型的流程主要包括:加载模型结构 + 权重准备 dummy 输入张量调用进行导出设置可变尺寸以增强部署适配性这套流程适用于大部分视觉模型(分类、去噪、分割等),也是后续进行 TensorRT 推理或移动端部署的基础。
2025-04-16 21:18:18
877
原创 Java 正则表达式实战进阶:替换、验证与多模式分割的三重技巧
正则表达式(Regex)是一种用于描述字符串模式的语言,常用于匹配、查找、替换、分割等操作。通过本篇文章,我们掌握了 Java 正则表达式在三大典型任务中的实战用法,包括多模式替换、格式验证与多条件分割。这些技巧不仅适用于日常开发中的输入校验、数据清洗,也可以作为自然语言处理的前置步骤。
2025-04-15 21:39:00
688
3
原创 正则表达式反向引用的综合应用魔法:从重复文本到简洁表达的蜕变
我....我要....学学学学....编程 java!—— 这类“重复唠叨”的文本是否让你在清洗数据时头疼不已?本文将带你一步步掌握,并结合 Java 实现一个。结合经典的结巴实例。如何高效地将这样的文本规范化为"我要编程 java!"呢?这正是正则表达式反向引用大显身手的地方。
2025-04-15 21:25:48
1372
原创 Java 正则表达式综合实战:URL 匹配与源码解析
渐进式开发:从简单到复杂逐步构建正则表达式模块化设计:每个部分都有明确的功能划分(协议、域名、路径)灵活性增强:通过添加可选标记(?)使表达式更通用边界明确:始终使用和确保匹配整个字符串字符集合理定义:使用[\w-]等字符集准确描述允许的字符这种分步构建的方法不仅使正则表达式更易于理解和维护,也方便在开发过程中逐步测试每个部分的匹配效果。
2025-04-14 21:37:47
1072
5
原创 深入 Java 正则表达式源码:透视 Matcher.group(int) 的分组提取机制
在 Java 中,正则表达式无疑是文本处理的重要工具。而是其中非常关键的一个方法,它用于提取正则中的分组内容。今天我们不仅通过一个例子来看它的使用方法,还会结合底层源码,深入理解它背后的机制。
2025-04-14 21:24:31
661
2
原创 多线程导致 EGL_BAD_ACCESS 错误的原理与解决方案
通过 export __GL_SINGLETHREADED=1 禁用多线程 OpenGL,避免竞态条件。
2025-03-25 19:20:30
543
8
原创 如何优化 CMake 编译选项以提升性能?——ORB-SLAM2的最佳实践
在 C/C++ 项目中,优化编译选项可以极大地提高执行效率,但错误的优化可能会导致段错误、未定义行为或跨平台兼容性问题。经过多次实验和调试,我找到了,它能够在保证稳定性的同时,最大化性能提升。本文将详细总结我的优化过程、参数解析以及实际效果。不适当的CMake 编译选项可能导致:内存越界、野指针等问题,AddressSanitizer 会直接报错。
2025-03-24 17:21:08
556
3
原创 ORB-SLAM3运行时调试方法与常见问题-----Clion端
相信大家在学习SLAM时都会参考一些开源的框架,这样就绕不开ORB-SLAM3的基础框架,因为这个框架集成了许多外设,可以很好的运用到实际中。同时,很多的改进很可以在此基础上进行。源代码是用命令行的形式进行运行的,但如果是在命令行的话,不利于我们阅读源码。特别是追一些变量时,传统的文本编辑器不能很好的提示,且没有高亮显示。阅读源码也是必不可少的一步,结合在线调试的方法。如何正确的调试也是后期改进代码的强大工具。下面将列举我学习遇到的一些常见的基础问题。问题一:命令行参数的输入问题。
2025-03-24 16:12:30
361
1
原创 Java 集合框架:从数据结构到性能优化,全面解析集合类
Java 集合框架(Java Collections Framework,JCF)是 Java 语言中用于存储、操作和管理数据的标准库。它提供了一组通用的接口、类和方法,使开发者能够高效地操作不同类型的数据集合。
2025-03-23 16:49:33
1096
原创 Java IO 流:从字节到字符再到Java 装饰者模式(Decorator Pattern),解析与应用掌握数据流动的艺术
在 Java 编程中,IO(输入输出)流是处理数据输入输出的核心工具。无论是读取文件、网络通信,还是处理用户输入,IO 流都扮演着重要角色。本文将深入探讨 Java IO 流的核心概念、分类、经典代码实例及其应用场景,帮助你全面掌握数据流动的艺术。
2025-03-23 14:43:50
1242
8
原创 开源ORB_SLAM2项目编译常见问题与应对办法
在某些 C++ 标准(如 C++11 及更新版本)中可能未被默认包含。这些选项是较新的编译器(GCC 7 及以上)才支持的。如果 GCC 版本较低,就会报错。系统可能没有安装 Python3,或者 Python3 的开发工具包(如。首先,确保 CMakeLists.txt 或 Makefile。安装,CMake 需要手动指定 Python3 目录。如果升级 GCC 仍然无法解决,可以手动去掉。CMake 找不到 Eigen,手动指定路径.,因为较早版本的 CMake 可能不支持。库在编译时出现了一些。
2025-03-21 20:16:54
1007
9
原创 虚拟机的三种 Linux 网络配置原理图解读
虚拟机的网络连接方式主要有 三种模式:桥接模式(Bridged)、NAT 模式(Network Address Translation)、仅主机模式(Host-Only)。
2025-03-21 19:50:03
760
原创 《视觉SLAM十四讲》ch13 设计SLAM系统 相机轨迹实现
虽然有EVO这样的开源评估工具,我们也需要自己了解系统生成的trajectory.txt的含义,方便我们更好的理解相机的运行跟踪过程。注意,我们这里不考虑关键帧的处理,即后端的优化的实时的影响,直接在位姿计算完成就推算世界坐标下的轨迹。Track()函数,将函数替换为:(这里代码比较冗余,也可以封装成一个方法调用)其中,nextframe()方法是读取数据集,并进行当前帧的创建。首先,在frontend.h类中,加入方法,与轨迹变量。该部分也是我们代码改进,并进一步实现轨迹的保存工作。
2025-03-20 19:06:04
1003
7
原创 连接池进阶教程--DAO 模式及其优化方案
基于和泛型,封装了增删改查(CRUD)操作,实现了数据库访问与业务逻辑的解耦,提高了代码复用性和可维护性。作为通用数据访问层,提供事务简化和查询优化,而Person_Dao继承其功能,无需额外编写 SQL 逻辑。整体结构清晰,但可优化事务管理日志记录和连接池使用,以提升健壮性和可扩展性。
2025-03-20 13:07:47
1085
原创 深入 Apache DBUtils:--结果集ResultSet转换为多种形式 简化 JDBC 编程的利器
在 Java 数据库编程中,JDBC 是连接和操作数据库的标准 API。然而,直接使用 JDBC 往往需要编写大量重复代码,且容易出错。Apache DBUtils 是一个开源的 JDBC 工具库,旨在简化 JDBC 编程,提升开发效率。本文将深入探讨 Apache DBUtils 的核心特性、底层源码解读以及实际应用。
2025-03-19 13:54:04
977
7
原创 告别 ResultSet 的烦恼:使用 Apache DBUtils 和 ArrayList 优化数据管理
的弊端,提升数据管理的灵活性和代码的可读性。结合 Apache DBUtils,可以进一步简化 JDBC 操作,提高开发效率。每个对象对应数据库中的一条记录,便于后续的数据管理和操作。:数据处理的灵活性受限,难以进行批量操作或复杂的数据转换。是一个游标,只能逐行访问数据,无法直接进行集合操作。:需要手动解析和封装数据,增加了代码的复杂性。提供了丰富的集合操作 API,便于数据处理。:通过封装,代码结构更加清晰,易于理解和维护。优化数据管理,提升代码的可读性和可维护性。的打开状态,增加了资源管理的复杂性。
2025-03-19 13:24:55
1131
原创 Druid 连接池工具类及其在企业级应用中的实践
在现代企业级应用中,数据库连接池是提升系统性能和稳定性的关键技术之一。本文将结合代码示例,深入探讨如何封装 Druid 连接池为工具类,并分析其在实际企业级应用中的最佳实践。通过封装 Druid 连接池为工具类,可以显著提升代码的复用性和可维护性。Druid 连接池凭借其高性能、强大的监控功能和丰富的扩展性,成为企业级应用中的首选数据库连接池。希望本文的内容能帮助您更好地理解和使用 Druid 连接池工具类。工具类的主要目的是封装重复性代码,提供简洁的 API 供其他模块调用。方法,工具类封装了关闭。
2025-03-18 13:47:00
469
2
原创 深入理解 Druid 连接池及其企业级应用
本文将结合代码示例,深入探讨 Druid 连接池的原理、配置、使用场景以及企业级应用中的最佳实践。Druid 连接池凭借其高性能、强大的监控功能和丰富的扩展性,成为企业级应用中的首选数据库连接池。通过合理的配置和优化,可以显著提升系统的性能和稳定性。Druid 是阿里巴巴开源的一款高性能数据库连接池,支持监控、SQL 执行日志、防火墙等功能。它不仅提供了高效的连接池管理,还具备强大的监控和诊断能力,是企业级应用的首选。:Druid 在连接池的管理和 SQL 执行性能上表现优异。
2025-03-18 13:38:56
1179
原创 C3P0数据库连接池技术详解及实战
在现代Java开发中,数据库访问是至关重要的一环。传统的JDBC连接方式由于频繁创建和销毁数据库连接,导致性能低下,资源占用过多。为了解决这一问题,数据库连接池(Connection Pool)技术应运而生。C3P0 作为 Java 领域中一款优秀的数据库连接池框架,提供了高效的连接管理,广泛应用于企业级项目中。本文将深入探讨 C3P0 的技术原理、配置方式,并结合代码示例进行实战演示。
2025-03-17 21:59:45
976
6
原创 JDBC数据库连接池技术详解——从传统连接方式到高效连接管理
传统的JDBC连接方式虽然简单直接,但在高并发场景下容易带来性能问题,甚至导致系统崩溃。在高并发场景下,每个请求都会创建一个新的数据库连接,导致连接数迅速上升。:连接池会动态调整连接数量,避免不必要的连接占用,同时定期检查连接的健康状况,剔除失效连接。技术,能够大幅提升数据库访问的效率,减少资源浪费,优化系统性能。,一旦达到此限制,新请求将无法获得数据库连接,导致应用程序报错。:连接池管理连接的生命周期,防止程序员忘记关闭连接导致内存泄露。,这样可以极大地提升性能,减少数据库服务器的压力。
2025-03-17 21:43:04
686
原创 JDBC 批处理 vs. 普通插入:性能对比与优化
在 Java JDBC 编程中,我们经常需要向数据库插入大量数据。,对比普通插入与批处理插入的性能,并探讨如何优化批量数据操作。相比逐条执行 SQL,我们可以使用 addBatch()允许一次性执行多条 SQL 语句,从而大幅提高性能。,不仅效率低,还会对数据库造成较大压力。(如 1000 条/批),避免内存占用过高。缓存过大导致内存占用过高。,避免 SQL 逐条执行。,让数据库自动优化批处理。
2025-03-16 13:25:37
645
1
原创 JDBC 事务管理,结合prepareStatement对象实现
在数据库操作中,事务(Transaction)是一组 SQL 语句的集合,这些语句作为一个整体执行,要么全部成功提交(Commit),要么全部回滚(Rollback)。事务的作用是保证数据库的完整性和一致性。:事务中的操作要么全部完成,要么全部撤销。:事务执行前后,数据库必须保持一致性。:多个事务之间互不影响。:事务提交后,数据永久存储。
2025-03-16 13:07:49
1058
原创 封装 JDBCUtils,告别繁琐数据库连接管理
在 Java 的 JDBC 编程中,数据库连接的获取与释放是非常关键的操作。直接在代码中频繁创建和关闭数据库连接不仅冗长,而且容易导致资源泄漏。因此,我们可以封装一个JDBCUtils工具类来统一管理数据库连接,提高代码的可维护性和复用性。封装JDBCUtils使得数据库操作更加简洁,提高了代码的可读性和维护性。使用该工具类可以有效避免数据库资源泄漏,同时支持数据库连接池技术,以提高数据库访问效率,适用于各种 Java Web 项目和企业应用开发。
2025-03-16 12:37:38
461
原创 JDBC 核心 API 全面解析与高效数据库操作
在 Java 开发中,数据库操作至关重要,而 JDBC(Java Database Connectivity)作为 Java 官方提供的数据库访问接口,是开发者绕不开的核心技术。然而,许多初学者在学习 JDBC 时,往往仅停留在基本的 CRUD 操作,忽略了 JDBC 强大的 API 设计。本篇博客将从 驱动管理、连接管理、SQL 执行和结果处理 四大核心模块出发,带你全面解析 JDBC API。
2025-03-15 12:35:27
776
4
原创 PreparedStatement:Java 数据库操作的安全与高效之道
在 Java 数据库开发中,PreparedStatement 是一个重要的 API,它可以提高 SQL 语句的执行效率,并有效防止 SQL 注入问题。本文将介绍 PreparedStatement 的基本概念、使用方法及其优势。
2025-03-15 12:23:21
1321
原创 《Java SQL 操作指南:深入理解 Statement 用法与优化》
Statement接口继承了和Wrapper接口,使其具备自动关闭和封装功能。:提供close()方法,确保Statement在不再使用时释放资源。Wrapper:提供>)和方法,允许Statement作为其他数据库 API 的封装。此外,Statement还包含多个重要属性,如cursorNamepoolableconnection等。Statement是 JDBC 提供的用于执行 SQL 语句的接口,主要特点如下:适用于执行静态 SQL 语句,每次执行都需要编译。通过执行查询语句,返回。
2025-03-14 10:17:51
502
3
原创 深入理解 ResultSet(结果集)
ResultSet代表数据库查询的结果表,它通常是通过执行 SQL 查询语句生成的。ResultSet对象保存一个光标指向其当前的数据行。光标最初位于第一行之前,调用next()方法可以将光标移动到下一行。当next()方法移动到超出ResultSet范围时,返回false,因此在while循环中可以使用它来遍历整个结果集。这张类图展示了ResultSetResultSet继承了接口提供了close()方法,用于在不再需要ResultSet时释放资源,防止资源泄漏。这意味着ResultSet。
2025-03-14 09:43:48
1112
2
原创 在 cmake_modules 目录下编写 FindG2O.cmake 以集成 G2O
负责自动查找 G2O 头文件和库文件,使 CMake 可以轻松集成 G2O。通过宏查找 G2O 的各个子模块,包括核心库、求解器和数据类型库。通过G2O_FOUND变量确认 G2O 是否被正确找到,以便 CMake 配置 G2O 依赖。这样,我们就可以在 CMake 项目中使用直接找到 G2O 并进行链接。
2025-03-07 10:01:51
484
2
原创 安装imu_utils和code_utils出现“ndefined reference”以及与anconda的glog冲突问题----D435i的RGBD相机与IMU标定工具
D435i标定的方案为:使用RealSence官网教程标定IMU的bias和三个轴的对齐、使用港科大imu_utils标定IMU获得随机游走数据、单RGB摄像头标定使用kalibr、单摄像头+IMU联合标定采用kalibr。
2025-03-07 09:41:34
600
1
原创 java反射篇-类加载各阶段的机制详解
Java 反射机制中的类加载过程涉及加载、连接、初始化三个阶段。通过反射,类可以在运行时动态加载、解析和初始化。反射使得 Java 程序能够灵活地操作类,调用方法和访问字段,但也带来了性能开销和潜在的安全问题。因此,使用反射时应谨慎,尤其是在加载和操作外部类时。这个机制在 Java 中的应用非常广泛,尤其是在框架设计、插件系统、序列化等场景中,都依赖于反射来实现动态性和灵活性。
2025-02-24 21:38:19
834
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人