- 博客(359)
- 资源 (27)
- 问答 (3)
- 收藏
- 关注
原创 spring:使用注解@获取第三方bean实例
摘要:当第三方jar包中的类无法直接使用@Component注解时,可以通过在方法上添加@Bean注解来获取其实例。示例中DateFactory类使用@Component标记,并通过@Bean方法getDate()返回Date实例。测试类通过AnnotationConfigApplicationContext加载配置类Config,成功获取名为"getDate001"的Date对象。该方法有效解决了无法直接给第三方类添加注解的问题,实现了对jar包中类的实例化管理。
2025-06-11 22:33:47
353
原创 spring:使用标签xml继承接口FactoryBean获取bean实例
Spring框架通过FactoryBean接口实现自定义Bean创建逻辑。开发者需实现FactoryBean接口并重写getObject()方法返回目标Bean实例(如UserDaoImpl),同时在XML配置文件中声明FactoryBean实现类。调用getBean()时才会触发Bean实例创建(延迟加载),而非容器初始化时。这种方式允许对Bean创建过程进行精细控制,适用于需要复杂初始化逻辑的场景。文中展示了完整实现步骤:创建MyBeanFactory03类实现FactoryBean接口,配置XML文件
2025-06-07 17:45:56
276
原创 spring:实例工厂方法获取bean
摘要:Spring框架支持通过实例工厂方法获取Bean实例。具体步骤为:1)定义包含实例工厂方法的Java类(如MyBeanFactory02),其中方法可带参或不带参;2)在XML配置中,先声明工厂Bean,再通过factory-bean和factory-method属性指定要调用的工厂方法。示例展示了无参方法getUserService()和有参方法getUserDaoABC()两种调用方式,其中带参方法需按顺序传递参数值(基本类型用value,引用类型用ref)。这种方式比静态工厂更灵活,允许在运行时
2025-06-07 15:54:17
187
原创 spring:使用标签xml静态工厂方法获取bean
本文介绍了Spring框架中使用静态工厂方法获取Bean的实现方式。通过定义MyBeanFactory01类,可以创建包含无参方法、基础类型参数方法和引用类型参数方法的多个静态工厂方法。在XML配置文件中,使用<bean>标签的factory-method属性来指定工厂方法,并通过constructor-arg为有参方法提供参数值(value)或引用(ref)。这种模式允许在返回Bean前进行配置或通过非构造方法创建对象,提供了更灵活的Bean创建方式。文中示例展示了如何配置无参静态方法和包含基本类型、引用
2025-06-07 10:14:08
305
原创 spring:实例化类过程中方法执行顺序。
本文通过Spring Bean实例化测试,展示了初始化方法的调用顺序。测试类UserServiceImpl02实现了InterfaceUserService和InitializingBean接口,包含无参和有参构造方法。XML配置通过constructor-arg指定构造参数时会调用有参构造方法,否则调用无参构造。实例化流程为:1)调用构造方法,2)执行setter方法,3)执行InitializingBean的afterPropertiesSet方法,4)执行配置的init-method方法(如果有)。通
2025-06-06 22:40:47
388
原创 C++:共享指针unique_ptr的理解与应用
本文介绍了C++11引入的unique_ptr智能指针特性。unique_ptr通过独占所有权机制确保资源的自动释放,禁止复制但支持移动语义转移所有权。文章详细说明了unique_ptr的创建方法(包括推荐使用make_unique)、适用场景(如独占资源、RAII模式、动态数组管理)及其优缺点(自动释放、异常安全但不支持共享所有权)。相比shared_ptr,unique_ptr更轻量且适用于需要独占资源管理的场景,能有效防止内存泄漏,是C++资源管理的重要工具。
2025-05-24 17:26:06
806
原创 C++:继承构造函数,简化子类的构造利器
在C++中,构造函数用于初始化类实例。C++11引入了继承构造函数特性,允许子类直接继承基类的构造函数,无需在子类中显式调用基类构造函数。通过使用using关键字,子类可以继承基类的所有构造函数,简化了代码并减少了冗余。继承构造函数只能继承直接基类的构造函数,且不能用于委托构造函数。如果子类声明了与基类同名的构造函数,继承构造函数将被忽略。这一特性提高了代码的复用性和可维护性。
2025-05-20 16:33:48
436
转载 cmake:CMAKE_PREFIX_PATH使用技巧与示例
CMAKE_PREFIX_PATH是CMake中一个重要的环境变量,它用于帮助CMake在配置项目时找到各种依赖项的位置。这个变量尤其在处理那些不在标准位置安装的库时显得非常有用。
2025-05-15 16:36:39
133
原创 Java:volatile关键字理解
1.保证此变量对所有的线程的可见性,这里的“可见性”,如本文开头所述,当一个线程修改了这个变量的值,volatile保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。Java内存模型)来完成。2.禁止指令重排序优化。有volatile修饰的变量,赋值后多执行了一个“load addl $0x0, (%esp)”操作,这个操作相当于一个内存屏障(指令重排序时不能把后面的指令重排序到内存屏障之前的位置),只有一个CPU访问内存时,并不需要内存屏障;
2025-05-06 10:37:31
759
翻译 Qt:QCustomPlot之开始(一)
QCustomPlot是Qt的一个小型第三方图表库,支持静态/动态曲线、柱状图、蜡烛图、频谱图等。使用方便,仅需在项目中加入头文件qcustomplot.h和qcustomplot.cpp源文件即可,或者把它当做一个库来添加到项目当中,需要在pro文件加入QCustomPlot 图表类:用于图表的显示和交互QCPLayer 图层:管理图层元素(QCPLayerable),所有可显示的对象都是继承自图层元素。
2025-04-24 21:15:24
63
原创 IDE:vscode的Live Server Preview插件
这个插件不用另外打开浏览器;它是直接在Vscode里面预览html的,并且是自动实时更新的,不用不停地Ctrl+S保存查看。使用方法:F1 -> 弹出一个窗口输入live,选择即可。
2025-04-22 11:13:38
408
原创 spring:加载配置类
在前面的学习中,通过读取xml文件将类加载,或他通过xml扫描包,将包中的类加载。无论如何都需要通过读取xml才能够进行后续操作。2:使用注解@ComponentScan扫描包,将包中的类加载。通过对配置类的读取替代xml的功能。在这里配置类加载了两个包,两个包里的类都可以被调用。1:对类使用注解@Configuration标注。运行结果显示当前年月日及时间。
2025-04-18 19:04:00
301
原创 spring:使用import导入资源
如下图所示,com.annotation.dao.impl.UserDaoImpl和com.itheima.dao.impl.UserDaoImpl分别在不同的包中,通过xml进行加载。xml文件对spring使用的资源进行描述,但是当所有资源放到同一个xml文件中会导致文件臃肿,所以可以将资源分别放到不同的xml文件中,然后通过<import>导入。
2025-04-17 08:09:09
157
原创 spring:注解@PostConstruct、@PreDestroy
这两个注解的功能类似标签中的init-method和destroy-method。分别在构造方法调用之后和实例释放资源之前被调用。
2025-04-16 23:48:20
366
原创 spring:注解@Component、@Controller、@Service、@Reponsitory
spring框架的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用spring注解方式或者spring XML配置方式。spring注解方式直接对项目中的类进行注解,减少了配置文件内容,更加便于管理,使用注解可以大大提高了开发效率!
2025-04-16 19:19:50
301
转载 C++:C++析构函数不设为虚函数会怎样?一个让程序员崩溃的隐形陷阱!
MySQL 连接池的内存缓冲区没释放,最终导致数据库服务崩溃!:日志数据丢失,网络缓冲区堆积,最终导致服务不可用!,而不会去查虚表(vtable)找。🔹 多态基类的析构函数必须是虚函数!,最终可能让程序无法再打开新文件!:子类的析构函数被跳过,资源泄漏!里分配了堆内存或持有资源,就会。的析构函数没有被调用!不是虚函数,编译器直接调用。如果确定类不会被继承,可以用。🔹 养成习惯,避免隐形Bug!)是类的特殊成员函数,用于。在讨论析构函数之前,先回顾。执行时,编译器会检查。在C++中,析构函数(
2025-04-15 10:31:40
65
原创 Java:NIO流
传统的 Java I/O 模型(BIO)中,I/O操作是以阻塞的方式进行的。当一个线程执行一个I/O操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连接创建一个线程,而线程的创建和切换都是有开销的。Java NIO(New IO)是从 Java 1.4 版本开始引入的一个新的 IO API,可以替代标准的 Java IO API。
2025-03-16 20:16:08
824
转载 Java:字符编码,Java 字节流和字符流的转换
转换流可以将一个包装成,或者将一个字符流包装成字节流。这种转换通常用于处理文本数据,如读取文本文件或将数据从网络传输到应用程序。转换流主要有两种类型:InputStreamReader 和 OutputStreamWriter。InputStreamReader 将一个字节输入流转换为一个字符输入流,而 OutputStreamWriter 将一个字节输出流转换为一个字符输出流。它们使用指定的字符集将字节流和字符流之间进行转换。常用的字符集包括 UTF-8、GBK、ISO-8859-1 等。
2025-03-16 11:39:27
94
原创 编程常用工具汇总
Process Explorer是一个由微软Sysinternals团队开发的强大系统监控工具,它提供了比操作系统自带任务管理器更详细、更直观的进程信息,帮助用户深入理解计算机上的进程和系统资源使用情况。主要功能包括进程信息查看、资源占用可视化、父进程关系追踪、服务和模块查看、搜索功能、挂起和终止进程、句柄查看等。用户通过熟练掌握Process Explorer的使用,可以更好地管理和控制计算机环境,提高工作效率。
2025-03-03 12:39:23
300
转载 Qt:Qt中的枚举
简单来讲,Qt还是使用一组宏命令来完成枚举量扩展功能的(正如Qt的其他核心机制一样),这些宏包括Q_ENUM,Q_FLAG,Q_ENUM_NS,Q_FLAG_NS,Q_DECLARE_FLAGS,Q_DECLARE_OPERATORS_FOR_FLAGS,Q_DECLARE_FLAGS和Q_DECLARE_OPERATORS_FOR_FLAGS都是和元对象系统无关的,可以脱离Q_FLAG单独使用,事实上这两个宏在Qt4就已经存在(不确定更早是否存在),而Q_FLAG是在Qt5.5版本才加入的;
2025-02-28 16:06:33
311
转载 Java:synchronized实现原理
synchronized是Java中实现线程同步的关键字,保护对共享资源的访问。确保在“多线程环境中同一时间只有一个线程能够访问特定的代码段或方法”。确保线程间操作的原子性和数据的一致性。它提供了互斥性、可见性和有序性当一个线程进入了 synchronized 代码块或方法时,其他试图进入该同步区域的线程必须等待,直至拥有锁的线程执行完毕并释放锁。这确保了在同一时间只能有一个线程访问共享资源,避免了竞态条件和数据不一致的问题。synchronized 关键字还确保了线程间的数据可见性。
2025-02-20 20:33:54
67
原创 Qt:Qt 官方开发环境生成的 exe 发布方式 -- 使用 windeployqt
Qt 官方开发环境使用的动态链接库方式,在发布生成的 exe 程序时,需要复制一大堆 dll,如果自己去复制 dll,很可能丢三落四,导致 exe 在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。以官方 Qt 5.4.0+MinGW 开发环境为例,
2025-02-19 16:25:07
982
原创 Java:创建不可变更大小的List容器
如题,有时候创建接口List的实例需要固定容器大小。如果直接new,创建的实例是预定义大小,通过方法add可以改变容器大小。
2025-02-12 15:13:15
131
原创 Qt:信号槽中使用智能指针std::shared_ptr
一般编程情况下信号槽都直接使用指针,但是因为野指针或内存泄漏情况,在这里我使用c++标准库的智能指针std::shared_ptr,这样避免野指针和内存泄漏。因为网上也有类似博文介绍如何解决,但是我试了都不行,在这里我将自己的处理方式进行记录和介绍。传递的数据使用std::shared_ptr包装,信号槽还是原始指针。
2025-01-16 08:21:24
310
转载 c++:=delete使用
引入的=delete是一种特性,它用于明确禁用或删除类的成员函数、特殊成员函数、或者其他成员函数。=delete的主要目的是在编译时捕获潜在的错误,并提供更精确的控制,以确保类的行为符合设计要求。
2024-12-30 10:00:36
172
转载 c++: =default使用
default是C++11引入的一种特性,它允许显式要求编译器生成默认的特殊成员函数。特殊成员函数包括默认构造函数、复制构造函数、移动构造函数、复制赋值运算符、移动赋值运算符以及析构函数。在默认情况下,如果你没有显式提供这些特殊成员函数的定义,C++编译器会自动生成它们。在这个示例中,MyClass类中同时定义了一个默认构造函数和一个自定义构造函数。MyClass()构造函数使用了=default来指定,所以编译器会自动生成它,而构造函数是程序员自己定义的。可以看到 ,在main。
2024-12-30 08:32:42
327
原创 IDEA下加载音频文件操作
音频文件在IDEA的工程中应在资源文件夹(resource文件夹)下。资源文件夹与代码文件夹(java文件夹)平级。其中,一是代码文件夹,二是资源文件夹,三是字符串描述从资源文件夹下定位的音频文件(注意从资源文件夹下一级开始)。通过AudioClip类播放音频文件。
2024-12-15 13:56:48
594
原创 QXlsx使用注意事项
QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件,可以在Qt5支持的任何平台上使用;Worksheet是Excel中的sheet,注意其中的row/colum。n(行/列)索引,起始索引是1,不是0。
2024-12-11 19:42:49
278
原创 使用Clion debugger断点,数据显示为16进制问题的解决方案
RT,在使用debugger跟进断点时,显示的数据为16进制。无法简明有效的观察程序运行情况。
2024-12-11 11:00:41
284
QTableView + QStandardItemModel模式显示表格冻结列(模板) 示例动图
2024-09-20
Expert_One-on-One_J2EE_Development_without_EJB中文版 part10
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part7
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part8
2009-02-11
Java高并发编程详解
2018-10-19
Java模式设计
2017-10-29
Expert_One-on-One_J2EE_Development_without_EJB中文版 part5
2009-02-11
Java并发编程实战 2nd
2018-10-19
c#本质论(英文版)
2008-09-22
Expert_One-on-One_J2EE_Development_without_EJB中文版
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part2
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part4
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part9
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part3
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part6
2009-02-11
QtCreator创建工程后,添加新文件不显示的问题
2022-07-13
Pyside6:子线程运行的问题
2022-01-16
Model-View模型中如何如何选择显示部分数据
2021-10-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人