- 博客(494)
- 资源 (23)
- 收藏
- 关注
原创 Springboot 构建异步TaskManager的优雅处理线程任务
【代码】Springboot 构建异步TaskManager的优雅处理线程任务。
2024-03-26 19:36:03 107
原创 Qt 运行一个实例进程
逻辑:首先一个新的实例启动时,将尝试连接到同一个本地服务器,如果连接失败,则表示第一个实例进程,创建一个本地服务器;否则,拉起已打开的实例进程。
2024-03-04 10:51:21 330
原创 cmake通过add_custom_command复制DLL及配置文件
【代码】cmake通过add_custom_command复制DLL及配置文件。
2023-12-09 11:31:26 241
原创 Clion运行QT,模拟VS弹出CMD框打印
参考:https://stackoverflow.com/questions/35385772/running-clion-on-the-system-console-like-visual-studio。
2023-12-06 16:48:22 98
原创 QThread之moveToThread用法
使用moveToThread函数的流程如下:1、创建一个类继承自QObject类或其子类,并在其中定义所要执行的多个任务,执行多个任务就要定义相应的信号。2、任务通过moveToThread指定所要执行的线程。3、线程通过start启动4、通过信号与槽机制触发线程的执行。
2023-12-05 16:01:33 118
原创 采用connector-c++ 8.0操作数据库
把D:\Library\mysql-connector-c+±8.2.0-winx64\lib64\debug中的mysqlcppconn-9-vs14.dll复制到项目的可执行目录下。https://dev.mysql.com/downloads/connector/cpp/,下载带debug的库。2.在cmakelist中定义寻址头文件的路径与库的路径。1.下载最新的Connector。3.复制对应的DLL到可执行目录。
2023-11-22 19:43:21 990
原创 编译QT Mysql库并集成使用
进入文件夹D:\Library\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common,打开msvc-version.conf文件,添加。检查mingw73_64/plugins/sqldrivers目录下是否存在qsqlmysql.dll文件,没有就需要编译mysql驱动。一定要复制到mysql对应位数的编译器中,然后在构建的时候,注意选择需要生成的应用是32位还是64位。7.将文件复制到编译器的5.14.2\msvc2017_64\plugins\sqldrivers中。
2023-11-22 19:41:59 513
原创 QT串口通信 基础使用
由于需要使用QT的信号槽,所以Q_OBJECT文件需要额外进行MOC编译,把对应的头文件指明到executable中。使用QT的SerialPort,需要加装对应的依赖。
2023-11-08 16:27:38 77
原创 日志记录库 spdlog 基础使用
配置特别简单,仅包含头文件即可;写日志方式简单明了;可实现自动按日期创建日志文件/定时创建日志文件;可自定义日志格式;可以输出当前输出日志所在的文件及函数;可自定义文档大小;可将不同级别的信息输出到不同日志文件;多平台等。*_st:单线程版本,不用加锁,效率更高。*_mt:多线程版本,用于多线程程序是线程安全的。日志记录槽sinkset_pattern(const std::string&):设置日志输出的内容格式。
2023-11-01 15:17:16 547
原创 QT5 通过 webview2 加载网页
官方文档参考:https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/get-started/win32。
2023-10-30 15:49:32 1367
原创 cmake 使用include 分层加载
cmake文件是干什么的,甚至会想.cmake文件是不是cmake的正统文件,而CmakeLists.txt并不是。但其实,CmakeLists.txt才是cmake的正统文件,而.cmake文件是一个模块文件,可以被include到CMakeLists.txt中。include指令一般用于语句的复用,也就是说,如果有一些语句需要在很多CMakeLists.txt文件中使用,为避免重复编写,可以将其写在.cmake文件中,然后在需要的CMakeLists.txt文件中进行include操作就行了。
2023-10-27 15:47:21 168
原创 Clion 初始化 QT
A:检查路径是否正确,set(CMAKE_PREFIX_PATH “D:/Library/Qt5.14.2/5.14.2/msvc2017_64/lib/cmake”)NMAKE : fatal error U1077: “echo”: 返回代码“0x1”解决方法:安装QT5和对应的cmake软件,然后修改makelist配置文件。默认CMakeLists文件。2.打开项目,如果出现报错。5.配置项目生成平台为64。
2023-10-27 14:22:58 296
原创 Aspect 切入点 @Pointcut 语法详解
this:用于匹配当前AOP代理对象类型的执行方法;bean:Spring AOP扩展的,AspectJ没有对于指示符,用于匹配特定名称的Bean对象的执行方法;target:用于匹配当前目标对象类型的执行方法;@target:用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解;args:用于匹配当前执行的方法传入的参数为指定类型的执行方法;@args:用于匹配当前执行的方法传入的参数持有指定注解的执行;@annotation:用于匹配当前执行方法持有指定注解的方法;+:匹配指定类型的子类型;
2023-09-18 11:32:46 198
原创 JNI 调用
JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。本地代码与 Java 虚拟机之间是通过 JNI 函数实现相互操作的。JNI 函数通过接口指针来获得,本地方法将 JNI 接口指针当作参数来接受。
2023-04-04 13:46:06 1227 1
原创 重新认识 Java 中的内存映射(mmap)
恰恰和网传的很多言论相反,mmap 由于其不切态的特性,特别适合顺序读写,但由于 sun.nio.ch.FileChannelImpl#map(MapMode mode, long position, long size) 中 size 的限制,只能传递一个 int 值,所以,单次 map 单个文件的长度不能超过 2G,如果将 2G 作为文件大 or 小的阈值,那么小于 2G 的文件使用 mmap 来读写一般来说是有优势的。一个实用的技巧是动态分配的内存映射区域,在读取过后,可以异步回收掉。
2023-03-02 17:14:47 1700
原创 SpringCloud Gateway + Security + JWT 最快速的集成
*** 需要访问的url/*** 额外放开权限的url** @param urls 自定义的url* @return 自定义的url和监控中心需要访问的url集合} //放开权限的地址 Collections . addAll(set , addContextPath(permitUrl));} /*** 地址加访问前缀* @returni ++) {} }
2022-12-30 16:56:51 2006 3
原创 内存对齐详解
假如没有内存对齐机制,数据可以任意存放,现在一个int变量存放在从地址1开始的联系四个字节地址中,该处理器去取数据时,要先从0地址开始读取第一个4字节块,剔除不想要的字节(0地址),然后从地址4开始读取下一个4字节块,同样剔除不要的数据(5,6,7地址),最后留下的两块数据合并放入寄存器.这需要做很多工作。**考虑4字节存取粒度的处理器取int类型变量(32位系统),该处理器只能从地址为4的倍数的内存开始读取数据。现在有了内存对齐的,int类型数据只能存放在按照对齐规则的内存中,比如说0地址开始的内存。
2022-10-22 10:37:20 860
原创 Redis 过期删除策略和内存淘汰策略
Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。过期删除策略有哪些?在说 Redis 过期删除策略之前,先跟大家介绍下,常见的三种过期删除策略:定时删除;惰性删除;定期删除;接下来,分别分析它们的优缺点。定时删除策略的做法是,在设置 key 的过期时间时,同时创建一个定时事件,当时间到达时,由事件处理器自动执行 key 的删除操作。定时删除策略的优点:可以保证过期 key 会被尽快删除,也就是内存可以被尽快地释放。因此,定
2022-07-05 14:03:08 398
原创 static_cast和dynamic_cast的区别
static_cast//用法:static_cast < type-id > ( exdivssion ) 该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。②用于基本数据类型之间的转换,如把int转换成char,
2022-05-30 17:37:28 4784
原创 NIO 主从Reactor服务
NIO 主从Reactor服务模型如下:方案说明:Reactor主线程 MainReactor 对象通过select 监听连接事件, 收到事件后,通过Acceptor 处理连接事件当 Acceptor 处理连接事件后,MainReactor 将连接分配给SubReactorsubreactor 将连接加入到连接队列进行监听,并创建handler进行各种事件处理当有新事件发生时, subreactor 就会调用对应的handler处理handler 通过read 读取数据,
2022-03-30 18:44:29 316
原创 单 Reactor 多线程
单 Reactor 多线程方案:1)Reactor 对象通过 select 监控客户端请求事件,收到事件后,通过 dispatch 进行分发2)如果是建立连接请求,则由 Acceptor 通过 accept 处理连接请求,然后创建一个 Handler 对象处理完成连接后的各种事件3)如果不是连接请求,则由 Reactor 对象会分发调用连接对应的 Handler 来处理4)Handler 只负责响应事件,不做具体的业务处理,通过 read 读取数据后,会分发给后面的 Worker 线程池的某个线程
2022-03-30 14:27:21 522
原创 单 Reactor 单线程
Reactor模式原理Reactor模型是相对传统IO机构来说的,也就是NIO模型, NIO模型之所以可以优化,得益于它是基于事件,基于异步,不像传统IO,是阻塞的Reactor模型分为几个组件,分别是Reactor、Acceptor、HandlerReactor组件负责分发事件,如果是连接那么交给Acceptor;如果是读写事件那么交给HandlerAcceptor负责处理连接事件(获取新连接,注册到Selector上,注册读写事件,绑定Handler)Handler负责处理读写事件(使用ch
2022-03-24 15:23:22 1207 2
原创 NIO 高性能服务 Discard Server + Client
DiscardServerNIOpackage com.company;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSocketChannel;import
2022-03-19 16:38:48 169
原创 c# 调用 cmd及bash
CMDusing System;using System.Diagnostics;namespace ConsoleApp{ class Program { static void Main(string[] args) { Process p = new Process(); //设置要启动的应用程序 p.StartInfo.FileName = "cmd.exe";
2022-02-15 11:11:12 349
原创 HashTable、HashSet、Dictionary
HashTable哈希表(HashTable)表示键/值对的集合。在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key-value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key-value键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对,任何非 null 对象都可以用作键或值。在哈希表中添加一个ke
2022-02-12 14:12:57 189
原创 Dockerfile 多阶段构建原理
多个 FROM 指令的意义多个 FROM 指令并不是为了生成多根的层关系,最后生成的镜像,仍以最后一条 FROM 为准,之前的 FROM 会被抛弃,那么之前的FROM 又有什么意义呢?每一条 FROM 指令都是一个构建阶段,多条 FROM 就是多阶段构建,虽然最后生成的镜像只能是最后一个阶段的结果,但是,能够将前置阶段中的文件拷贝到后边的阶段中,这就是多阶段构建的最大意义。# 编译阶段FROM golang:1.10.3COPY server.go /build/WORKDIR /build
2022-01-14 10:03:25 432
原创 NET5 使用 NLOG 记录EFCORE SQL信息
安装依赖 <ItemGroup> <PackageReference Include="NLog" Version="4.7.13" /> <PackageReference Include="NLog.Schema" Version="4.7.13" /> <PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" /> </ItemGroup>配置p.
2022-01-05 13:44:46 468
原创 NET5集成 NLOG
安装包 <ItemGroup> <PackageReference Include="NLog" Version="4.7.13" /> <PackageReference Include="NLog.Schema" Version="4.7.13" /> <PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" /> </ItemGroup>prog.
2021-12-28 18:58:29 464
原创 .NET5 集成 JWT
安装包 <ItemGroup> <PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="6.15.0" /> <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.15.0" /> </ItemGroup>编写库usin.
2021-12-21 17:01:18 435
原创 PGSQL在Ubuntu上安装
基础安装$ sudo apt-get update$ sudo apt-get install postgresql postgresql-client$ sudo /etc/init.d/postgresql start # 开启$ sudo /etc/init.d/postgresql stop # 关闭$ sudo /etc/init.d/postgresql restart # 重启对外访问/etc/postgresql/9.5/main/postgresql.con
2021-12-20 13:58:40 1198
算法图解 - 算法的基本操作
2018-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人