- 博客(42)
- 收藏
- 关注
原创 多线程导致 EGL_BAD_ACCESS 错误的原理与解决方案
通过 export __GL_SINGLETHREADED=1 禁用多线程 OpenGL,避免竞态条件。
2025-03-25 19:20:30
395
8
原创 如何优化 CMake 编译选项以提升性能?——ORB-SLAM2的最佳实践
在 C/C++ 项目中,优化编译选项可以极大地提高执行效率,但错误的优化可能会导致段错误、未定义行为或跨平台兼容性问题。经过多次实验和调试,我找到了,它能够在保证稳定性的同时,最大化性能提升。本文将详细总结我的优化过程、参数解析以及实际效果。不适当的CMake 编译选项可能导致:内存越界、野指针等问题,AddressSanitizer 会直接报错。
2025-03-24 17:21:08
471
2
原创 ORB-SLAM3运行时调试方法与常见问题-----Clion端
相信大家在学习SLAM时都会参考一些开源的框架,这样就绕不开ORB-SLAM3的基础框架,因为这个框架集成了许多外设,可以很好的运用到实际中。同时,很多的改进很可以在此基础上进行。源代码是用命令行的形式进行运行的,但如果是在命令行的话,不利于我们阅读源码。特别是追一些变量时,传统的文本编辑器不能很好的提示,且没有高亮显示。阅读源码也是必不可少的一步,结合在线调试的方法。如何正确的调试也是后期改进代码的强大工具。下面将列举我学习遇到的一些常见的基础问题。问题一:命令行参数的输入问题。
2025-03-24 16:12:30
312
1
原创 Java 集合框架:从数据结构到性能优化,全面解析集合类
Java 集合框架(Java Collections Framework,JCF)是 Java 语言中用于存储、操作和管理数据的标准库。它提供了一组通用的接口、类和方法,使开发者能够高效地操作不同类型的数据集合。
2025-03-23 16:49:33
1014
原创 Java IO 流:从字节到字符再到Java 装饰者模式(Decorator Pattern),解析与应用掌握数据流动的艺术
在 Java 编程中,IO(输入输出)流是处理数据输入输出的核心工具。无论是读取文件、网络通信,还是处理用户输入,IO 流都扮演着重要角色。本文将深入探讨 Java IO 流的核心概念、分类、经典代码实例及其应用场景,帮助你全面掌握数据流动的艺术。
2025-03-23 14:43:50
1159
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
880
9
原创 虚拟机的三种 Linux 网络配置原理图解读
虚拟机的网络连接方式主要有 三种模式:桥接模式(Bridged)、NAT 模式(Network Address Translation)、仅主机模式(Host-Only)。
2025-03-21 19:50:03
692
原创 《视觉SLAM十四讲》ch13 设计SLAM系统 相机轨迹实现
虽然有EVO这样的开源评估工具,我们也需要自己了解系统生成的trajectory.txt的含义,方便我们更好的理解相机的运行跟踪过程。注意,我们这里不考虑关键帧的处理,即后端的优化的实时的影响,直接在位姿计算完成就推算世界坐标下的轨迹。Track()函数,将函数替换为:(这里代码比较冗余,也可以封装成一个方法调用)其中,nextframe()方法是读取数据集,并进行当前帧的创建。首先,在frontend.h类中,加入方法,与轨迹变量。该部分也是我们代码改进,并进一步实现轨迹的保存工作。
2025-03-20 19:06:04
940
7
原创 连接池进阶教程--DAO 模式及其优化方案
基于和泛型,封装了增删改查(CRUD)操作,实现了数据库访问与业务逻辑的解耦,提高了代码复用性和可维护性。作为通用数据访问层,提供事务简化和查询优化,而Person_Dao继承其功能,无需额外编写 SQL 逻辑。整体结构清晰,但可优化事务管理日志记录和连接池使用,以提升健壮性和可扩展性。
2025-03-20 13:07:47
1039
原创 深入 Apache DBUtils:--结果集ResultSet转换为多种形式 简化 JDBC 编程的利器
在 Java 数据库编程中,JDBC 是连接和操作数据库的标准 API。然而,直接使用 JDBC 往往需要编写大量重复代码,且容易出错。Apache DBUtils 是一个开源的 JDBC 工具库,旨在简化 JDBC 编程,提升开发效率。本文将深入探讨 Apache DBUtils 的核心特性、底层源码解读以及实际应用。
2025-03-19 13:54:04
884
7
原创 告别 ResultSet 的烦恼:使用 Apache DBUtils 和 ArrayList 优化数据管理
的弊端,提升数据管理的灵活性和代码的可读性。结合 Apache DBUtils,可以进一步简化 JDBC 操作,提高开发效率。每个对象对应数据库中的一条记录,便于后续的数据管理和操作。:数据处理的灵活性受限,难以进行批量操作或复杂的数据转换。是一个游标,只能逐行访问数据,无法直接进行集合操作。:需要手动解析和封装数据,增加了代码的复杂性。提供了丰富的集合操作 API,便于数据处理。:通过封装,代码结构更加清晰,易于理解和维护。优化数据管理,提升代码的可读性和可维护性。的打开状态,增加了资源管理的复杂性。
2025-03-19 13:24:55
1097
原创 Druid 连接池工具类及其在企业级应用中的实践
在现代企业级应用中,数据库连接池是提升系统性能和稳定性的关键技术之一。本文将结合代码示例,深入探讨如何封装 Druid 连接池为工具类,并分析其在实际企业级应用中的最佳实践。通过封装 Druid 连接池为工具类,可以显著提升代码的复用性和可维护性。Druid 连接池凭借其高性能、强大的监控功能和丰富的扩展性,成为企业级应用中的首选数据库连接池。希望本文的内容能帮助您更好地理解和使用 Druid 连接池工具类。工具类的主要目的是封装重复性代码,提供简洁的 API 供其他模块调用。方法,工具类封装了关闭。
2025-03-18 13:47:00
437
2
原创 深入理解 Druid 连接池及其企业级应用
本文将结合代码示例,深入探讨 Druid 连接池的原理、配置、使用场景以及企业级应用中的最佳实践。Druid 连接池凭借其高性能、强大的监控功能和丰富的扩展性,成为企业级应用中的首选数据库连接池。通过合理的配置和优化,可以显著提升系统的性能和稳定性。Druid 是阿里巴巴开源的一款高性能数据库连接池,支持监控、SQL 执行日志、防火墙等功能。它不仅提供了高效的连接池管理,还具备强大的监控和诊断能力,是企业级应用的首选。:Druid 在连接池的管理和 SQL 执行性能上表现优异。
2025-03-18 13:38:56
1070
原创 C3P0数据库连接池技术详解及实战
在现代Java开发中,数据库访问是至关重要的一环。传统的JDBC连接方式由于频繁创建和销毁数据库连接,导致性能低下,资源占用过多。为了解决这一问题,数据库连接池(Connection Pool)技术应运而生。C3P0 作为 Java 领域中一款优秀的数据库连接池框架,提供了高效的连接管理,广泛应用于企业级项目中。本文将深入探讨 C3P0 的技术原理、配置方式,并结合代码示例进行实战演示。
2025-03-17 21:59:45
875
6
原创 JDBC数据库连接池技术详解——从传统连接方式到高效连接管理
传统的JDBC连接方式虽然简单直接,但在高并发场景下容易带来性能问题,甚至导致系统崩溃。在高并发场景下,每个请求都会创建一个新的数据库连接,导致连接数迅速上升。:连接池会动态调整连接数量,避免不必要的连接占用,同时定期检查连接的健康状况,剔除失效连接。技术,能够大幅提升数据库访问的效率,减少资源浪费,优化系统性能。,一旦达到此限制,新请求将无法获得数据库连接,导致应用程序报错。:连接池管理连接的生命周期,防止程序员忘记关闭连接导致内存泄露。,这样可以极大地提升性能,减少数据库服务器的压力。
2025-03-17 21:43:04
637
原创 JDBC 批处理 vs. 普通插入:性能对比与优化
在 Java JDBC 编程中,我们经常需要向数据库插入大量数据。,对比普通插入与批处理插入的性能,并探讨如何优化批量数据操作。相比逐条执行 SQL,我们可以使用 addBatch()允许一次性执行多条 SQL 语句,从而大幅提高性能。,不仅效率低,还会对数据库造成较大压力。(如 1000 条/批),避免内存占用过高。缓存过大导致内存占用过高。,避免 SQL 逐条执行。,让数据库自动优化批处理。
2025-03-16 13:25:37
611
1
原创 JDBC 事务管理,结合prepareStatement对象实现
在数据库操作中,事务(Transaction)是一组 SQL 语句的集合,这些语句作为一个整体执行,要么全部成功提交(Commit),要么全部回滚(Rollback)。事务的作用是保证数据库的完整性和一致性。:事务中的操作要么全部完成,要么全部撤销。:事务执行前后,数据库必须保持一致性。:多个事务之间互不影响。:事务提交后,数据永久存储。
2025-03-16 13:07:49
1018
原创 封装 JDBCUtils,告别繁琐数据库连接管理
在 Java 的 JDBC 编程中,数据库连接的获取与释放是非常关键的操作。直接在代码中频繁创建和关闭数据库连接不仅冗长,而且容易导致资源泄漏。因此,我们可以封装一个JDBCUtils工具类来统一管理数据库连接,提高代码的可维护性和复用性。封装JDBCUtils使得数据库操作更加简洁,提高了代码的可读性和维护性。使用该工具类可以有效避免数据库资源泄漏,同时支持数据库连接池技术,以提高数据库访问效率,适用于各种 Java Web 项目和企业应用开发。
2025-03-16 12:37:38
442
原创 JDBC 核心 API 全面解析与高效数据库操作
在 Java 开发中,数据库操作至关重要,而 JDBC(Java Database Connectivity)作为 Java 官方提供的数据库访问接口,是开发者绕不开的核心技术。然而,许多初学者在学习 JDBC 时,往往仅停留在基本的 CRUD 操作,忽略了 JDBC 强大的 API 设计。本篇博客将从 驱动管理、连接管理、SQL 执行和结果处理 四大核心模块出发,带你全面解析 JDBC API。
2025-03-15 12:35:27
739
4
原创 PreparedStatement:Java 数据库操作的安全与高效之道
在 Java 数据库开发中,PreparedStatement 是一个重要的 API,它可以提高 SQL 语句的执行效率,并有效防止 SQL 注入问题。本文将介绍 PreparedStatement 的基本概念、使用方法及其优势。
2025-03-15 12:23:21
1054
原创 《Java SQL 操作指南:深入理解 Statement 用法与优化》
Statement接口继承了和Wrapper接口,使其具备自动关闭和封装功能。:提供close()方法,确保Statement在不再使用时释放资源。Wrapper:提供>)和方法,允许Statement作为其他数据库 API 的封装。此外,Statement还包含多个重要属性,如cursorNamepoolableconnection等。Statement是 JDBC 提供的用于执行 SQL 语句的接口,主要特点如下:适用于执行静态 SQL 语句,每次执行都需要编译。通过执行查询语句,返回。
2025-03-14 10:17:51
407
3
原创 深入理解 ResultSet(结果集)
ResultSet代表数据库查询的结果表,它通常是通过执行 SQL 查询语句生成的。ResultSet对象保存一个光标指向其当前的数据行。光标最初位于第一行之前,调用next()方法可以将光标移动到下一行。当next()方法移动到超出ResultSet范围时,返回false,因此在while循环中可以使用它来遍历整个结果集。这张类图展示了ResultSetResultSet继承了接口提供了close()方法,用于在不再需要ResultSet时释放资源,防止资源泄漏。这意味着ResultSet。
2025-03-14 09:43:48
813
1
原创 在 cmake_modules 目录下编写 FindG2O.cmake 以集成 G2O
负责自动查找 G2O 头文件和库文件,使 CMake 可以轻松集成 G2O。通过宏查找 G2O 的各个子模块,包括核心库、求解器和数据类型库。通过G2O_FOUND变量确认 G2O 是否被正确找到,以便 CMake 配置 G2O 依赖。这样,我们就可以在 CMake 项目中使用直接找到 G2O 并进行链接。
2025-03-07 10:01:51
427
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
539
1
原创 java反射篇-类加载各阶段的机制详解
Java 反射机制中的类加载过程涉及加载、连接、初始化三个阶段。通过反射,类可以在运行时动态加载、解析和初始化。反射使得 Java 程序能够灵活地操作类,调用方法和访问字段,但也带来了性能开销和潜在的安全问题。因此,使用反射时应谨慎,尤其是在加载和操作外部类时。这个机制在 Java 中的应用非常广泛,尤其是在框架设计、插件系统、序列化等场景中,都依赖于反射来实现动态性和灵活性。
2025-02-24 21:38:19
813
2
原创 SLAM 项目中的 CMakeLists.txt 详解:以 ORB-SLAM3 为例
本篇文章解析了 ORB-SLAM3 的文件,涵盖了:CMake 基础配置编译优化选项依赖库查找与管理头文件路径配置共享库生成与链接RealSense 处理示例程序编译理解这些 CMake 指令,有助于开发者更好地修改、扩展 ORB-SLAM3,或在自己的项目中借鉴相关配置。
2025-02-24 12:06:29
989
4
原创 深入解析Java线程锁机制:从原理到最佳实践
在多线程编程中,线程安全是开发者面临的核心挑战之一。当多个线程并发访问共享资源时,如果没有正确的同步机制,就可能出现数据不一致、竞态条件等问题。Java提供了多种线程锁机制来保障线程安全,本文将深入探讨Java中的各种锁实现、使用场景和优化策略。
2025-02-19 23:19:40
794
原创 “探索Java反射:如何在运行时动态操控类与对象“---反射(reflection)机制及其应用特性
反射机制是Java中的一种强大工具,它允许程序在运行时动态地获取类的信息、创建对象、调用方法、访问字段等。反射机制让程序更加灵活,可以通过配置或外部输入动态调整程序行为,而不必在编译时就确定类或方法。
2025-02-19 22:23:59
762
原创 mysql事务操作大全,覆盖ACID高级事务隔离级别处理
数据库事务的核心概念和操作,特别强调了事务的 ACID 特性,包括原子性、一致性、隔离性和持久性,确保了事务执行过程中数据的一致性和系统的可靠性。事务操作与锁的关系也被提到,锁机制用于控制并发访问,避免数据冲突。事务的隔离级别则决定了不同事务间的并发程度和数据一致性,常见的隔离级别包括 READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。根据应用场景选择合适的事务隔离级别,可以有效平衡性能和数据一致性。在多用户并发操作时,理解并正确配
2025-02-18 14:51:11
941
2
原创 Mysql数据库的多表查询与子查询技巧-笛卡尔集
总结一下,重点掌握的查询类型和实际用途如下:自连接:当需要查询同一张表中不同记录之间的关系时(如员工与经理的关系),通过给表起不同的别名实现自连接。单行子查询:用于返回一个单一值的子查询,常用于 WHERE 子句中进行精确匹配。多行子查询:返回多个值的子查询,通常与 IN 或 ANY 操作符一起使用,用于查找属于某个集合的数据。子查询临时表:通过子查询创建临时表,在主查询中引用。适用于复杂查询,能够简化查询逻辑。ALL 和 ANY 操作符:在多行子查询中用于比较子查询返回的多个值,ALL 比较所
2025-02-18 11:39:09
1188
1
原创 JDBC:JAVA获取数据库连接的5种不同的方式以及内在的区别,---driver注册驱动的加载。
JDBC 提供了多种数据库连接方式,包括静态加载、动态加载、使用 DriverManager、自动加载驱动和外部化配置,而在企业级应用中,结合数据库连接池、外部化配置及 Spring 框架集成是实现高效、灵活、可维护数据库访问的最佳实践。
2025-02-17 15:49:03
837
原创 ubuntu-20.04.6LTS下安装RealtekRTL8125网卡驱动
由于在项目需要linux系统,且结合性能与实际需求,打算在电脑安装双系统。安装完成后测试系统,发现系统没有网络信息,后来进一步分析是因为自己电脑的主板与系统可能不兼容,系统不能正常识别有线网卡。因此,需要手动下载并安装有线网卡驱动(注意在安装依赖库时,由于电脑没有网络,这里尝试用手机的USB网络共享联网)。
2025-02-17 15:14:43
1581
原创 密封钉缺陷检测----基于本算法针对密封钉缺陷检测,将任务分解为焊道分割和焊道发黑检测两部分,利用多线程技术来执行YOLOv5和U-Net模型的训练与预测,最后用Qt进行界面可视化。
在密封钉缺陷检测任务中,采用 U-Net 和 YOLOv5 结合多线程技术进行焊道分割和发黑检测,具有显著优势,尤其是在效率和精准度方面。与传统的机器视觉技术相比,结合深度学习的优势可以更好地解决复杂的检测问题。
2025-02-16 16:34:27
918
4
原创 SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM,项目运行及代码更正。
总结以上问题,主要是权重文件的下载与程序微调等工作,但现阶段训练及重建效果较差,可能是参数与训练迭代次数没有调帧。并且在修改script文件下的splatam.py的688,842行。解决:离线下载alexnet模型权重文件。最后源代码问题: 缺少字段。
2025-01-12 17:26:06
293
1
原创 SplaTAM,SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM复现及相关环境配置。
SplaTAM项目复现问题及解决,帮助我们理解最新的SLAM与三维重建技术。
2025-01-12 16:35:21
498
原创 Gurobi配置FindGurobi.cmake出现的问题,如“ Could not find a package configuration file ”、“missing: GUROBI_LIB”
Gurobi库在C++的Cmakelist项目的引用中,会出现找不到指定的库文件,.CMake脚本能够成功编译,是因为它更灵活和全面地搜索Gurobi库和包含目录。它设定了GUROBI_HOME环境变量,并搜索通用的库名,确保找到所有必要的库文件。使用GUROBI_HOME环境变量:如果未定义,则设为默认路径。搜索通用的库名:查找gurobi和gurobi_c++库,而不依赖特定版本或构建类型的库名。统一检查所有必要变量:使用一次find_package_handle_standard_args来检
2025-01-02 21:10:49
195
原创 C++编译并运行后出现Process finished with exit code 139 (interrupted by signal 11:SIGSEGV),程序意外终止.
在SLAM项目中,用C++编译并运行的程序后出现Process finished with exit code 139 (interrupted by signal 11:SIGSEGV),程序意外终止.分析原因三因为使用了 -march=native 和 -O3,这会进行激进的优化,导致某些变量在调试时被优化掉,导致了出错.解决办法是不使用 -march=native 可以降低处理器特定优化可能引入的风险。最终代码正常运行.
2024-10-09 15:58:27
897
1
原创 配置g2o库时,出现“FindG2O.cmake“错误, By not providing “FindG2O.cmake“ in CMAKE_MODULE_PATH
在配置g2o库时,出现"FindG2O.cmake"错误,这个错误表明CMake在寻找G2O库时未能找到相应的配置文件。本文为了解决这个问题将其安装路径CMAKE_MODULE_PATH添加到Cmakelists文件。
2024-10-07 13:55:30
582
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人