自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 C++中的依赖注入

设值注入:通过设置器(setter)方法传入依赖。工厂模式:创建一个工厂类来创建依赖对象。构造函数注入:通过类的构造函数传入依赖。是一个简单的工厂类用来创建依赖对象。的智能指针作为依赖注入。函数中,我们通过工厂创建了。通过构造函数接收一个指向。方法,该方法依赖于注入的。的实例,并将其注入到。

2024-11-01 14:36:10 217

原创 java的依赖注入

java的依赖注入是个什么东西?2024-08-07 17:26河北摘要•帮你速读文章内容java中的依赖注入(Dependency Injection, DI)是一种软件设计模式,用于减少代码间的耦合度。它允许一个对象(被依赖的对象)在创建时或运行时,由外部实体(如容器或框架)将其依赖项(即它所依赖的其他对象)注入到该对象中,而不是由对象本身在其内部创建这些依赖项。这种方式使得代码更加模块化,易于测试和维护。

2024-11-01 14:19:36 496

原创 IDEA修改生成jar包名字的两种方法实现

更新时间:2023年08月18日 11:45:36 作者:白白白鲤鱼本文主要介绍了IDEA修改生成jar包名字的两种方法实现,通过简单的步骤,您可以修改项目名称并在打包时使用新的名称,具有一定的参考价值,感兴趣的可以了解下。

2024-11-01 09:04:06 218

原创 ByteBuf 详解

正如我们先前所指出的,。Java NIO 提供ByteBuffer作为字节的容器,但这个类是过于复杂,有点难以使用。Netty 中ByteBuffer的替代是ByteBuf,一个强大的实现,解决 JDK 的 API 的限制,以及为网络应用程序开发者一个更好的工具。但ByteBuf并不仅仅暴露操作一个字节序列的方法;这也是专门的 Netty 的的语义设计。在本章中,我们会说明相比于 JDK 的 API,ByteBuf所提供的卓越的功能和灵活性。这也将使我们能够更好地理解了 Netty 的数据处理。

2024-10-29 18:43:50 766

原创 Java实现树形结构的数据转Json格式

TreeBuilder.Node node = new TreeBuilder.Node(0,-1,"地球","WORD",1);TreeBuilder.Node node1 = new TreeBuilder.Node(1,0,"中国","CHN",1);TreeBuilder.Node node2 = new TreeBuilder.Node(2,1,"华北区域","A",2);TreeBuilder.Node node7 = new TreeBuilder.Node(7,6,"河南","豫",3);

2024-10-29 14:34:20 842

原创 java后端把数据转换为树,map递归生成json树,返回给前端(后台转换)

最后,将生成的 JSON 树返回给前端即可。可以使用 Spring Boot 等后端框架中的 REST 接口返回 JSON 数据。复制代码这个接口的作用是从数据库中获取数据,然后将数据转换为树形结构并返回 JSON 树,其中编号为 1 的节点作为根节点。另外,需要在前端进行 AJAX 请求,获取后端生成的 JSON 树,并显示在页面上。总结:以上就是将后端的数据转换为树形结构,再通过递归生成 JSON 树,并返回给前端的完整攻略。

2024-10-29 14:28:59 485

原创 Java搭建MQTT服务端

通过使用Eclipse Paho MQTT Java Client库,我们可以快速实现MQTT服务端的基本功能。MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,广泛应用于物联网(IoT)领域。System.out.println("接收到消息: " + new String(message.getPayload()));选择一个MQTT服务端库,如Eclipse Paho MQTT Java Client。

2024-10-19 13:50:28 472

原创 java只有值传递

于是,根据上面的两段代码,有人得出一个新的结论:Java 的方法中,在传递普通类型的时候是值传递,在传递对象类型的时候是引用传递。也就是说,Java对象的传递,是通过复制的方式把引用关系传递了,如果我们没有改引用关系,而是找到引用的地址,把里面的内容改了,是会对调用方有影响的,因为大家指向的是同一个共享对象。在参数传递的过程中,实际参数的地址0x666被拷贝给了形参。在判断实参内容有没有受影响的时候,要看传的的是什么,如果你传递的是个地址,那么就看这个地址的变化会不会有影响,而不是看地址指向的对象的变化。

2024-10-17 09:05:01 124

原创 idea 发布jar包

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。注意:这个方式是jar内不包含第三方的依赖的,如果想做成和第三方依赖一起打包的,建议使用maven工具。我设置的输出路径为 C:\Users\admin\Desktop\kantools\target。当你有一个能正常编译的项目,以springboot为例,有两步步骤。1.点击右上角快捷按钮/文件-->项目结构,打开项目结构设置。2.项目结构-->Artifacts,如图所示选择。

2024-10-15 20:10:21 513

原创 在 IDEA 中创建 Spring Boot 项目的方式(详细步骤教程)

再次确认需要的项目名称,然后选择项目存储的位置,还可以进行更多的设置,包括模块名称,内容根目录,模块所在位置等信息,一般按默认的就可以了,点击 Finish 完成。,默认选择你的 JDK 和构建 Spring Boot 项目的 URL,接着点击右下角的 Next。选择 Spring Boot 版本,勾选项目需要的依赖项,这里目前勾选需要的 Spring Web 依赖,搞定点击 Next 继续。,目前我没用过 3.0,印象中我只用过 2.1.3,2.2.2,2.3.4,2.5.7。

2024-09-29 20:00:09 1479

原创 Linux虚拟机扩展磁盘空间

在VM的设置中分区之后,还需要进入Linux虚拟机,将扩展的磁盘空间分配给对应的分区。,不能进行写操作,所以需要调整其挂载方式,修改其挂载的权限为 读写 的模式。对选中该磁盘右键,选择 Resize/Move ,如下图所示。可以通过 拖拽移动 或者直接输入数值的方式来对指定分区。打开 Gparted 可以看到磁盘的情况如下,其中。下的 80G 为新扩展的可分配的磁盘空间大小。:重新以读写权限来挂载另一个目录。: 重新以读写权限来挂载根目录。,中间以 "," 进行分隔。并修改其挂载的权限为 读写。

2024-09-20 13:31:31 454

原创 C++实现字符串分割

return 0;

2024-08-29 10:36:29 166

原创 LNK2019:_imp_closesocket socket等tcp网络函数无法识别符号的解决方法

1、error:LNK2019:无法解析的外部符号_imp_closesocket。可以这样加入:#comment(lib, "ws2_32.lib")需要加入库文件ws2_32.lib。

2024-08-09 18:20:17 185

原创 linux与windows环境下qt程序打包教程

创建项目目录,接纳依赖文件以及可执行文件(可执行文件需要手动make一个Release版本的,set(CMAKE_BUILD_TYPE "Release") )在windows环境下较为简单,直接使用Qt Creator左下方build release,编译release版本的可执行文件,之后将文件复制到空文件夹中。此外,如果项目需要静态资源文件,如项目中的resource文件夹,同样需要手动拷贝至项目根目录中。若qt项目为窗口应用程序,需要在cmakelist中添加如下命令,防止启动时弹出命令行窗口。

2024-08-07 11:55:41 398

原创 Linux压缩解压目录

直接解压到当前文件夹下,若要解压到指定文件夹,则需预先创建文件夹,将war包放到指定文件下后,执行命令。/opt/jenkins目录,unzip会自动创建。在Ubuntu中,常用的压缩和解压缩命令是。Ubuntu中的压缩命令。

2024-08-07 11:48:38 226

原创 关于linuxdeployqt 的一些理解

缺少插件,其实我碰到的是需要的东西我都安装了,ldd也找到了,就是linuxdeployqt 这个工具复制不过来,原因是缺少的这些插件及库 在我安装的qt6 对应的插件文件夹里面或者库文件夹里面,都是软连接,所以复制失败,就报找不到插件或者库了,个人理解,这个工具用了ldd命令,找出我们自己编译生成的可执行文件的所有依赖库的路径,然后再把所有的依赖库拷贝到可执行文件所在目录的相关目录中,这样就构建出 了可执行文件的运行环境。理解了linuxdeployqt 的原理就明白了。

2024-08-02 18:40:13 351

原创 QTableView 的单元格中加入QLabel标签控件,然后在QLabel上面加的有QIcon图片,此时QLabel加载到QTabelView的单元格时,QIcon不会居中

这样图片就居中了,因为我的QTableView 表格中没有太复杂的数据结构,主要是用来显示的,所以这中方法比较适合且简单,如果是复杂数据结构的有model类的话,得需要写一个代理类比较适合。QTableView 的单元格中加入QLabel标签控件,然后在QLabel上面加的有QIcon图片,此时QLabel加载到QTabelView的单元格时,QIcon不会居中。针对这个居中的需求看了好多案例,说是要继承QItemDelegate类,感觉比较麻烦,环境:QTcreater + Ubuntu。

2024-08-02 17:41:32 368

原创 Qt5升级到Qt6 出现的一些问题

1. QtableWidgetItem类 没有了setTextColor 函数 可以用 setForeground(color)替代,该函数的型参是一个QBrush,可以用QColor来替代, 因为QBrush的构造函数有一个可以把QColor转换为QBrush。在cmake工程中添加 find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)

2024-07-26 11:42:03 377

原创 std::getline、ifstream类的getline函数、get函数的区别

首先,这里说的get指的是专门用于读取输入流的 std::basic_istream<CharT,Traits>::get函数,具体一点就是std::istream::get、std::ifstream::get、std::istrstream::get、std::iostream::get、std::fstream::get、std::strstream::get及相应的宽字符输入流类型的成员函数get。get的作用是从输入流中读取(并释放)一个或多个字符。

2024-07-24 16:42:09 240

原创 C++程序如何在调用std::system函数隐藏黑色窗口

函数来执行某个命令,但是不希望显示黑色控制台窗口,你可以使用Windows API函数。// 设置为CREATE_NO_WINDOW,以隐藏窗口。可以指定创建进程的属性,包括是否创建一个新的窗口。标志可以阻止显示控制台窗口。记得在程序结束后使用。关闭进程和线程句柄,以避免资源泄露。// 关闭进程和线程句柄。替换为你想要执行的命令。在C++中,如果你想要调用。

2024-07-24 11:52:05 435

原创 C++读取txt中16进制的字符串,并将其存入unsigned char数组

i++) {elsei < 12;i++)elsereturn 0;

2024-07-24 09:11:10 764

原创 C/C++:字符串大小写转换

使用 _strlwr() 和 _strupr() 函数。使用 transform() 函数。

2024-07-23 18:01:22 258

原创 单例模式懒汉模式和饿汉模式

线程安全单例模式在单线程中,当然是安全的。但是如果在多线程中,由于并行判断,可能会导致创建多个实例。那么如何保证在多线程中单例还是只有一个实例呢?常见的三种方式:局部静态变量原理和饿汉模式相似,利用static只会初始化一次的特性,并且在第一次调用的情况下才会被初始化。

2024-07-23 17:09:17 1195

原创 C++11正则表达式详解(regex_match、regex_search和regex_replace)

正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,下面这篇文章主要介绍了C++11正则表达式(regex_match、regex_search和regex_replace)的相关资料,需要的朋友可以参考下。

2024-07-23 11:38:21 1180

原创 C++多线程并发基础入门教程

是操作系统能够进行CPU调度的。

2024-07-23 11:19:40 887

原创 c++获取文件大小的3个方法

原文链接:https://blog.csdn.net/wyw0000/article/details/129895107。// 这是一个存储文件(夹)信息的结构体,其中有文件大小和创建时间、访问时间、修改时间等。曾经遇到过一种奇怪的问题就是用c++的方式计算的文件大小总是不对的,后来改为c语言的方式就对了。//获取文件指针的位置,此时就相当于文件大小了。//获取文件指针的位置,此时就相当于文件大小了。//文件指针移到文件开头。//文件指针移到文件开头。//文件指针移到文件尾。//文件指针移到文件尾。

2024-07-23 11:13:08 510

原创 获取文件大小C++

return -1;// 如果文件无法打开,则返回-1。

2024-07-23 11:02:07 299

原创 从文件中读取数据的两种方法c++和C

c++ 中从文件中读取数据常用的方法有两种:文件流对象:使用文件流对象读取数据,逐行读取文件,需要先打开输入文件。c 标准 i/o 函数:使用 c 标准 i/o 函数读取数据,使用底层函数操作文件,可同时读取和写入。

2024-07-23 10:59:35 239

原创 把含有两个字符的字符串转换为16进制保存的一字节数据

/ 把含有两个字符的字符串转换为16进制保存的一字节数据。

2024-07-22 12:02:18 290

原创 C++生成随机数的两种方法

库,‌它提供了更多的控制和灵活性,‌包括支持更多种类的随机数分布和更高级的随机数引擎。库的方法简单易用,‌但在需要更高质量的随机数时,‌推荐使用。在C++中,‌产生随机数的方法主要有两种:‌使用。库中的随机数生成器和分布类。这两种方法各有优势,‌。

2024-07-22 09:53:53 461

原创 基于Qsetting的ini类

EasyIni.hQ_OBJECTpublic://操作模式enum ModeReadOnly,WriteOnly,ReadWritepublic:~EasyIni();​//打印ini信息//分组列表//分组内所有key//获取值//设置值,group或key不存在则创建//保存//加载​private://判断当前路径是否可写//解析ini文件//variant转str copy from qsettings。

2024-07-19 17:52:15 983

转载 学习QSettings类,解析INI配置文件

这种配置文件的文件扩展名多为(ini)。最好是通过全路径访问的方式,如(C:/xxx/config.ini),或者通过QApplication::applicationDirPath()+"/config.ini"之类的方式来访问ini文件。mysql组有三个配置项,分别是:(db_server=100.10.1.120:3306)、(db_name=erp)、(db_account=root)和(db_password=admin)。// 定义QSettings对象,加载(config.ini)文件。

2024-07-16 19:27:06 99

原创 【C++】static关键字及其修饰的静态成员变量/函数详解

static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。

2024-07-15 18:04:07 1103

原创 C++ 匹配并提取包括加中括号的日期时间的正则表达式

来搜索文本中符合正则表达式的部分,并且提取了年、月、日、小时、分钟和秒。如果找到匹配,它们将被转换为整数并输出。如果没有找到匹配,将输出"No datetime found."。库来匹配包含日期和时间的字符串。以下是一个简单的例子,它展示了如何使用正则表达式来匹配形如。include <iostream>在C++中,你可以使用。

2024-07-15 16:30:57 307

原创 C++将格式化的时间转换为时间戳展开 

头文件中的类和函数将格式化的时间转换为时间戳。以下是一个例子,演示如何将"年-月-日 时:分:秒"格式的时间转换为自1970年1月1日以来的秒数。std::cout

2024-07-15 15:46:11 430

转载 【无标题】

time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数,发生错误时返回-1。时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。%Y-%m-%d %H:%M:%S 年-月-日 时:分:秒。时间字符串:形如2021-12-01 12:00:00。参数:buf为要修改的时间,一般为GPS时间。%d 月份中的日期,0-31。

2024-07-15 15:44:14 46

原创 c++获取当前运行路径

函数(适用于Windows平台,需要包含。c++获取当前运行路径。

2024-07-15 15:38:25 1403

原创 QT工程构建目录下,将生成的中间文件和可执行文件分离

这个没有试过,我用了DESTDIR += $$PWD/../deploy 这样直接把项目中所有的库文件和可执行文件都生成到自己创建的文件夹deploy里面。(它将会在构建目录下生成一个tmp目录,用于存放产生的中间文件)在QT工程中,当我们选择了构建目录后,编译生成程序后,总会发现在debug目录下会有混淆着各类文件,如下图。当然,如果不觉得麻烦,有人会选择手动删除。但是这并不是最佳解决方案,因为还有更简单的。很多时候,我们又仅仅只需要可执行文件或者自定义的动态链接库。

2024-07-13 08:57:41 450

原创 QT 报错C2872: “byte“: 不明确的符号

这个符号不明确,这种情况是由于代码中同时包含了多个同名符号的定义,编译器无法区分,从而导致错误。在这个问题中,可能是由于使用了。注:我用解决方案的第一项,把#include<Winsock2.h>放在其他头文件的前面,我的代码头文件是<WS2tcpip.h>3.使用全局搜索功能查找是否有同名符号的定义,并将它们改为不同的名称。注意,修改头文件可能会影响其他代码的正常编译,需要谨慎操作。符号重名,从而导致冲突。放在其他头文件的前面。

2024-07-11 19:35:54 1006

原创 Qt pro 文件中路径设置 生成可执行文件路径等

LIBS += -L$$PWD/../Lib/ -lXXX // 这里就是把所有的lib文件都放到和项目同级的Lib路径下。MOC_DIR = temp/moc #指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录。LIBS += -L$$PWD/ -lXXX // 这里XXX是你的lib文件名字(注意,不要加lib的后缀)OBJECTS_DIR = temp/obj #指定目标文件(obj)的存放目录。

2024-07-11 18:08:03 968

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除