- 博客(338)
- 资源 (27)
- 问答 (3)
- 收藏
- 关注
原创 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
781
转载 Java:字符编码,Java 字节流和字符流的转换
转换流可以将一个包装成,或者将一个字符流包装成字节流。这种转换通常用于处理文本数据,如读取文本文件或将数据从网络传输到应用程序。转换流主要有两种类型:InputStreamReader 和 OutputStreamWriter。InputStreamReader 将一个字节输入流转换为一个字符输入流,而 OutputStreamWriter 将一个字节输出流转换为一个字符输出流。它们使用指定的字符集将字节流和字符流之间进行转换。常用的字符集包括 UTF-8、GBK、ISO-8859-1 等。
2025-03-16 11:39:27
23
原创 编程常用工具汇总
Process Explorer是一个由微软Sysinternals团队开发的强大系统监控工具,它提供了比操作系统自带任务管理器更详细、更直观的进程信息,帮助用户深入理解计算机上的进程和系统资源使用情况。主要功能包括进程信息查看、资源占用可视化、父进程关系追踪、服务和模块查看、搜索功能、挂起和终止进程、句柄查看等。用户通过熟练掌握Process Explorer的使用,可以更好地管理和控制计算机环境,提高工作效率。
2025-03-03 12:39:23
265
转载 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
76
转载 Java:synchronized实现原理
synchronized是Java中实现线程同步的关键字,保护对共享资源的访问。确保在“多线程环境中同一时间只有一个线程能够访问特定的代码段或方法”。确保线程间操作的原子性和数据的一致性。它提供了互斥性、可见性和有序性当一个线程进入了 synchronized 代码块或方法时,其他试图进入该同步区域的线程必须等待,直至拥有锁的线程执行完毕并释放锁。这确保了在同一时间只能有一个线程访问共享资源,避免了竞态条件和数据不一致的问题。synchronized 关键字还确保了线程间的数据可见性。
2025-02-20 20:33:54
46
原创 Qt:Qt 官方开发环境生成的 exe 发布方式 -- 使用 windeployqt
Qt 官方开发环境使用的动态链接库方式,在发布生成的 exe 程序时,需要复制一大堆 dll,如果自己去复制 dll,很可能丢三落四,导致 exe 在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。以官方 Qt 5.4.0+MinGW 开发环境为例,
2025-02-19 16:25:07
899
原创 cmake:定位Qt的ui文件
CMAKE_AUTOUIC_SEARCH_PATHS是一个用于指定CMake自动查找ui文件的搜索路径列表的变量。这个变量在CMake 3.9版本中引入,主要用于初始化所有目标的AUTOUIC_SEARCH_PATHS属性。在工程中,将h,cpp,ui文件放置到不同文件夹下,会存在cmake找不到ui文件,导致编译报错情况。cmake通过指定文件路径,确保工程找到ui文件。如果有多个文件夹保存ui文件,都使用该命令添加。标识1:ui文件保存路径。标识2:添加ui文件命令。
2025-02-18 14:53:44
381
原创 Java:创建不可变更大小的List容器
如题,有时候创建接口List的实例需要固定容器大小。如果直接new,创建的实例是预定义大小,通过方法add可以改变容器大小。
2025-02-12 15:13:15
110
原创 Qt:信号槽中使用智能指针std::shared_ptr
一般编程情况下信号槽都直接使用指针,但是因为野指针或内存泄漏情况,在这里我使用c++标准库的智能指针std::shared_ptr,这样避免野指针和内存泄漏。因为网上也有类似博文介绍如何解决,但是我试了都不行,在这里我将自己的处理方式进行记录和介绍。传递的数据使用std::shared_ptr包装,信号槽还是原始指针。
2025-01-16 08:21:24
208
转载 c++:=delete使用
引入的=delete是一种特性,它用于明确禁用或删除类的成员函数、特殊成员函数、或者其他成员函数。=delete的主要目的是在编译时捕获潜在的错误,并提供更精确的控制,以确保类的行为符合设计要求。
2024-12-30 10:00:36
123
转载 c++: =default使用
default是C++11引入的一种特性,它允许显式要求编译器生成默认的特殊成员函数。特殊成员函数包括默认构造函数、复制构造函数、移动构造函数、复制赋值运算符、移动赋值运算符以及析构函数。在默认情况下,如果你没有显式提供这些特殊成员函数的定义,C++编译器会自动生成它们。在这个示例中,MyClass类中同时定义了一个默认构造函数和一个自定义构造函数。MyClass()构造函数使用了=default来指定,所以编译器会自动生成它,而构造函数是程序员自己定义的。可以看到 ,在main。
2024-12-30 08:32:42
183
原创 IDEA下加载音频文件操作
音频文件在IDEA的工程中应在资源文件夹(resource文件夹)下。资源文件夹与代码文件夹(java文件夹)平级。其中,一是代码文件夹,二是资源文件夹,三是字符串描述从资源文件夹下定位的音频文件(注意从资源文件夹下一级开始)。通过AudioClip类播放音频文件。
2024-12-15 13:56:48
515
原创 QXlsx使用注意事项
QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件,可以在Qt5支持的任何平台上使用;Worksheet是Excel中的sheet,注意其中的row/colum。n(行/列)索引,起始索引是1,不是0。
2024-12-11 19:42:49
238
原创 使用Clion debugger断点,数据显示为16进制问题的解决方案
RT,在使用debugger跟进断点时,显示的数据为16进制。无法简明有效的观察程序运行情况。
2024-12-11 11:00:41
236
转载 善用shared_ptr,远离内存泄漏(转载)
试想一下,sp1指向对象obj1,sp2指向对象obj2,那么赋值之后,sp1也会指向obj2,那就是说指向obj1的就少了,指向obj2的就会多,如果此时没有其他shared_ptr指向obj1,那么obj1将会销毁。这样会导致两个shared_ptr管理同一个对象,当其中一个被销毁时,其管理的对象会被销毁,而另外一个销毁时,对象会二次销毁,然而实际上,对象已经不在了,最终造成严重后果。》中说到,如果有可能就使用unique_ptr,然后很多时候对象是需要共享的,因此shared_ptr也就会用得很多。
2024-12-02 15:00:03
65
原创 C++新特性汇总:
属性:这个属性用于在switch语句中。通常,当switch语句的一个case执行完毕后,会自动跳转到switch语句的末尾,除非存在break语句。如果你想要故意从一个case“落入”(fall through)到下一个case,可以使用属性来告诉编译器这是故意的行为,以避免编译器发出警告。属性:这个属性可以用于函数或者返回类型。它的作用是告诉编译器:调用这个函数时,它的返回值不应被忽略。如果程序员调用了这样的函数但没有使用它的返回值,编译器会发出警告。这对于那些返回重要状态或错误码的函数特别有用。
2024-12-02 11:01:39
478
转载 c++中的初始化
序号形式拷贝/直接初始化可用于构造函数初始值列表可用于类内初始值备注1等号拷贝初始化❌✅2等号+花括号={}拷贝初始化❌✅列表初始化3花括号{}直接初始化✅✅推荐!列表初始化,能用于各种初始化场景!4圆括号()直接初始化✅❌存在 Most Vexing Parse 问题、不可用于类内初始值及提供多个初始元素值的列表拷贝初始化:使用形式的初始化。直接初始化:不使用形式的初始化(使用{}或()形式初始化)列表初始化:使用{}
2024-11-24 18:10:44
97
原创 Java:消息队列传递参数
消息队列(Message Queue)是一种实现进程间通信的机制,通过消息的发送和接收实现解耦、削峰和异步处理等功能。消息队列在分布式系统中非常重要,常见的消息队列中间件有RabbitMQ、Kafka和ActiveMQ等。本文在Java中实现一个简单的消息队列,展示基本的使用方法。
2024-11-18 09:06:39
842
原创 Java 获取多线程返回值的几种方式
一 在主线程使用Thread.join方法,主线程会等调用了join的子线程执行完后再执行。二 使用Callable接口和Future接口。
2024-11-10 14:03:59
409
转载 Java函数式编程(一)–Function的使用
Java函数式编程(一)–Function的使用在函数式编程中,我们用的最多的往往是Function接口.通常来说,我们很少会直接使用这个接口,但是在Java的函数式编程中,许多组件都会与这个接口有关.需要注意的是,很多人会混淆Java8中新增的Stream API与函数式编程的概念,事实上,Stream API是一种为了实现自动化并行的惰性求值的解决方法,与函数式没有太大关系,但是其与函数式编程结合会很好用.
2024-11-03 23:21:49
212
转载 (转载)Java枚举:小小enum,优雅而干净
除了 EnumSet,还有 EnumMap,是一个专门针对枚举类型的 Map 接口的实现类,它可以将枚举常量作为键来使用。“如果枚举中需要包含更多信息的话,可以为其添加一些字段,比如下面示例中的 name,此时需要为枚举添加一个带参的构造方法,这样就可以在定义枚举时添加对应的名称了。由于枚举是 final 的,所以可以确保在 Java 虚拟机中仅有一个常量对象,基于这个原因,我们可以使用“==”运算符来比较两个枚举是否相等,参照。“确实,作为开发者,我们的代码量减少了,枚举看起来简洁明了。
2024-11-03 09:27:22
49
转载 飞行中的各种高度总结
前几天,本来想总结一遍关于导航仪表指示器的文章,结果在复习领航笔记的时候,被“高度”相关的知识点给“迷”住了,想了好久才重新梳理清楚,看来这是个时间久了就容易混淆的知识点,顺手来总结一下吧。我身高177,我站在地面上身高是177,站在东方明珠上,也许比地面高了几百米,但似乎对我来说没什么意义,谈及身高的时候,我参考的基准面永远是我脚踩的这块地。我比较喜欢在b站上写东西,所以回答的时候只放了一个链接上去,今天把文章搬到知乎来,因为感觉文字性的东西,还是知乎看的人比较多,大家可以一起讨论。
2024-10-19 09:48:05
1223
原创 飞行高度测量与 QNE、QNH、QFE
标准气压高度,是指飞行中飞机相对于标准气压面的垂直距离。空中的飞机,如果按各自选择不同基准面飞行,有可能在两机相近或交会时发生相撞事故。为此,规定在航线和转场飞行时,统一以101325Pa气压面为基准,并以此来调整飞机间的垂直间隔,实行空中交通管制,保证飞行安全。采用标准气压高度来划分高度层。
2024-10-19 09:36:41
1520
转载 飞机的导航能力:PBN、RNAV和RNP
关于PBN、RNAV和RNP,我认为最难区分的是PBN和RNP,翻译过来太像了。看了很多文章,感觉不是很尽兴,于是,根据自己的理解结合规章规范总结了一下,希望能用直白的语言把它说明,破除行业专业术语屏蔽。理解不当之处,请大家指出。
2024-10-18 09:16:38
1352
原创 Java:IDEA生成JavaDoc文档
第三步:区域设置,决定文档的语言,简体中文就是zh_CN、繁体(台湾)zh_tw、繁体(香港)zh-hk、英语(香港)en-hk、英语(美国)en-us、英语(英国)en-gb、英语(全球)en-ww。第四步:其他命令行参数:如果区域设置为中国,参数一般为-encoding UTF-8 -charset UTF-8。有些开源项目并未直接提供api,但是通过从github、gitee下载项目可以手动生成Java文档。第一步:选择生成JavaDoc文档的范围,我只对一个源文件生成Doc,所以选择文件。
2024-10-15 15:54:22
545
原创 JavaFX:加载图片方法
Objects.requireNonNull方法说明:Checks that the specified object reference is not。Image实例需要传入参数String类型或InputStream类型。需要将URL类型转换为String类型。将图片保存在资源文件夹的image文件夹下。所以使用toString方法进行转换。maven框架下加载图片。
2024-10-12 19:26:48
334
转载 Java:性能篇,解密Stream,提升集合遍历效率的秘诀!
在开始深入讨论之前,我们先来了解一下什么是 Stream。Stream 是 Java 8 中引入的一种新的抽象概念,用于处理数据序列。它为我们提供了一种更加便捷、高效的方式来操作集合数据,实现了函数式编程的特性。在之前的 Java 版本中,我们通常使用迭代器或者循环来处理集合,代码显得冗长且难以阅读。而引入 Stream 后,我们可以采用声明式的方式描述数据的处理流程,使代码更加简洁、清晰。Stream 的本质是一种数据流,它不是一种数据结构,因此不会改变原有的数据集合。
2024-10-11 17:10:33
144
转载 【JDK 11】关于 Java 模块系统(module),看这一篇就够了
如果把 Java 8 比作单体应用,那么引入模块系统之后,从 Java 9 开始,Java 就华丽的转身为微服务。模块系统,项目代号Jigsaw,最早于 2008 年 8 月提出(比 Martin Fowler提出微服务还早 6 年),2014 年跟随 Java 9 正式进入开发阶段,最终跟随 Java 9 发布于 2017 年 9 月。那么什么是模块系统?官方的定义是如图-1所示,模块的载体是 jar 文件,一个模块就是一个 jar 文件,但相比于传统的 jar 文件,模块的根目录下多了一个。
2024-10-08 20:41:14
2208
2
原创 cmakelist加载Qt模块
Qt编程中,cmakelist会自动添加Core,Gui,Widgets模块,有时需要添加新的Qt的模块。在命令find_package中添加要新增的模块,比如要增加对ui文件的处理。
2024-10-04 22:57:36
675
QTableView + QStandardItemModel模式显示表格冻结列(模板) 示例动图
2024-09-20
Java并发编程实战 2nd
2018-10-19
Java高并发编程详解
2018-10-19
Java模式设计
2017-10-29
Expert_One-on-One_J2EE_Development_without_EJB中文版 part10
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part9
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part8
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part7
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part6
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part5
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part4
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part3
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版 part2
2009-02-11
Expert_One-on-One_J2EE_Development_without_EJB中文版
2009-02-11
c#本质论(英文版)
2008-09-22
QtCreator创建工程后,添加新文件不显示的问题
2022-07-13
Pyside6:子线程运行的问题
2022-01-16
Model-View模型中如何如何选择显示部分数据
2021-10-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人