- 博客(38)
- 问答 (3)
- 收藏
- 关注
原创 Kafka使用场景与设计原理
收集微服务日志,供 ELK(Elasticsearch + Logstash + Kibana)分析。同一组的 Consumer 共同消费一个 Topic,每条消息仅被组内的一个 Consumer 处理。:Topic 的分区,每个 Partition 是一个有序的、不可变的日志队列。默认按 Key 的哈希值分配,相同 Key 的消息进入同一分区(保证顺序性)。到日志文件,利用磁盘顺序 I/O 的高性能(比随机写入快 5~10 倍)。:Kafka 服务器,存储消息,每个 Broker 是无状态的。
2025-07-23 09:37:34
793
原创 opencv的加、减、溶合、位运算
对两幅图像的像素值相加(饱和操作,防止溢出)。:计算两幅图像差的绝对值(用于差异检测)。:对两幅图像的像素值相减(结果非负)。:通过掩膜(Mask)控制混合区域。
2025-04-05 10:36:54
921
原创 opencv中mat深拷贝和浅拷贝
/ 输出 [99, 2;// 输出 [1, 2;// 修改 mat2 不会影响 mat1。// 修改 mat2 会影响 mat1。
2025-04-05 10:04:56
1057
原创 reactor网络模型
Reactor模型通过非阻塞I/O操作,允许单线程处理多个连接,减少线程切换开销,提升并发能力。:基于事件驱动机制,系统只在有事件发生时处理,避免忙等待,提高资源利用率。
2025-03-25 06:30:51
982
原创 QT标准对话框
Qt为应用程序设计提供了一些常用的标准对话框,如打开文件对话框、选择颜色对话框、信息提示和确认选择对话框、标准输入对话框等,用户无需自己设计这些常用的对话框,这样可以减少程序设计工作量。
2024-12-13 08:16:18
502
原创 创建型设计模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。——《设计模式》定义对象间的一种一对多(变化)的依赖关系,一边当一个对象(Subject)的状态发生变化时,所有依赖于它的对象都得到通知并自动更新。——《设计模式》GoF定义一些列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户程序而变化。——《设计模式》
2024-12-09 10:40:21
563
原创 qt-xml文件操作
XML(eXtensible Markup Language)文件因其结构化和易于理解的特性,被广泛用于数据交换和存储。Qt框架提供了强大的支持来处理XML文件,主要包括DOM(Document Object Model)和SAX(Simple API for XML)两种解析方式,以及从Qt 4.3开始引入的基于流的QXmlStreamReader和QXmlStreamWriter类。本文将详细介绍如何使用Qt的DOM方法来进行XML文件的创建、读取、添加、删除和更新操作。2.ui界面2.
2024-11-06 17:44:57
838
原创 redis数据库学习一
redis数据在内存中,读取速度快,但易丢失,是key-value型数据库,类比于字典,通过key去操作value,mysql数据在磁盘中读取速度慢。key-value一一对应,请求回应模式,使用TCP与redis数据通信,对于发送的请求redis必须做出回应。
2024-09-27 09:28:57
1058
原创 红黑树rbtree
(1).根节点是黑色的(2).每个叶子节点是黑色的(3).如果一个节点是红色的,则它的两个儿子节点都是黑色的(4).对每个节点,从该节点到其子孙节点的所有路径上的包含相同数目的黑节点根节点为黑色,叶子节点也为黑色,红色节点的子节点为黑色,每条路径上黑节点高度一样一种强查找的数据结构2.用途:a.hashmapb.定时器c.cfsd.epoll当红黑树平衡结构被破坏时,需要进行旋转满足红黑树结构性质当插入或者删除节点旋转的次数为层高 ,插入时节点初始颜色为红色,因为这样不改变黑色节点高度。
2024-07-10 11:41:11
341
原创 无锁消息队列
分为put队列和get队列,put队列用于生产者、get队列用于消费者,当put队列和get队列为空时阻塞消费者线程,当get队列为空时,尝试与put队列进行交换,此时生产者和消费者发生碰撞,其他情况,生产者不与消费者发生碰撞(争夺锁)。(2).由于多线程情况下,当一个线程拿到锁以后,其它线程需要经过自旋等待、阻塞态、就绪态,时间浪费在保护队列时的锁争夺上面,而不是用在执行任务上。答:如果是从操作队列的角度出发,无所队列性能高,如果是从队列所属系统角度出发,不一定,还需要看任务耗时。队列,它将明显更快。
2024-06-25 14:31:46
1383
原创 原子操作CAS与锁实现二
操作同时具有获得语义和释放语义,即它前后的任何读写操作都不允许重排,并且其他线程在对同一个原子对象释放之前的所有内存写入都在当前线程可见,当前线程的所有内存写入都在对同一个 原子对象进行获取的其他线程可见;在多线程情况下,操作原子变量时,cpu为避免锁总线会去操作其他变量,但这是无序,可能不符合当前的代码逻辑,所以需要程序员自己规定内存序,定重排规则。,在写入某原子对象时, 当前线程的任何前面的读写操作都不允许重排到这个操作的后面去,并且当前线程的所有内存写入都在对。如果替换成功, 则返回原来的值。
2024-06-18 14:42:03
978
原创 网络IO复用select/poll/epoll
(4).struct pollfd结构体:包含三个成员,fd、events、revents,fd和events在poll函数签传入fds,revents为返回事件,可根据代码理解。等待就绪的fd,第一个参数为epfd;(3).参数:nfds:最大的fd号,客户端fd会从4开始,0为stdin, 1为stdout, 2为stderr, 3为listen;FD_SET(index, fd_set* a):将a中index位置1;FD_CLR(index, fd_set* a):将a中index位置0;
2024-06-17 09:58:22
354
原创 Inno setup 检测CorelDraw注册表
我找的是ConfigDir的位置,也可以找programsdir位置,但是X4版本的注册表中没有programsdir。X7、X8、2017、2018的Config是大写,2019及以上是小写config。[File]段安装的位置。
2024-06-13 14:15:37
346
原创 内存池实现二
可以分配更大的内存,结构如下:第一个位置max用于判断需要分配的内存大小,大于max使用大块,小于max使用小块;第二个位置指针指向小块的首地址;第三个位置指针指向大块首地址。
2024-06-12 10:04:01
326
原创 线程池与性能分析
线程的一种使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性。而线程池维护着多个线程,等待监督管理者分配可并行执行的任务。这样避免了在短时间内创建和销毁线程的代价。线程池不仅能够内核的充分利用,还能防止过分调度。可用的线程数据取决于可用的并发处理器,处理内核,内存,网络sockets等数量。
2024-06-03 10:53:13
382
原创 dpdk学习记录二
用于将 rte_mbuf 结构体(用于表示数据包的元数据信息)转换为对应的数据指针。具体而言,这个宏用于获取 mbuf 中存储数据的起始地址。使用该宏时,我们需要传入一个 rte_mbuf 结构体的指针和目标数据类型,并得到一个指向实际数据起始位置的指针。封装以太网协议头,创建以太网协议头指针指向msg也就是mbuf首地址,添加目的mac和源mac;TCP发送过程:建立连接,数据传输,断开连接。根据格式封装ip协议头,
2024-06-03 09:37:47
237
原创 dpdk学习记录一
为什么需要多队列网卡,因为dpdk需要多队列网卡,单网卡只有一个中断,多队列网卡有多个中断,dpdk可以同时处理多个中断,增加吞吐量。根据机器选择编译类型,我是本机编译然后本机运行选择带native的,如果不修改dpdk源码选择36,否则选39.ip地址为dpdk网卡的ip,后面的是对应的mark地址。/home/dpdk,每次重启需要重新设置。下载完成以后进入dpdk目录使用命令。然后就可以测试dpdk接收数据了。物理机和虚拟机存在差异。
2024-05-20 09:14:44
567
原创 Qt无法定位程序输入点XXXXXXX于动态链接库XXXXXXXX
使用Dependencies软件将debug生成的exe和打包生成的exe进行依赖库对比 ,查看出问题的dll库目录下子dll库是否不一样,选择正确的dll库。使用Qtcreater在debug模式下正常运行程序,打包好的程序运行出现这个错误。
2023-11-11 16:02:26
550
1
原创 qt+opencv提取图片最外层轮廓遇到的问题
在使用边缘检测时第一次使用的是canny检测导致最外层轮廓不完整,使得得到的最外层轮廓不是理想的结果,正确的应该是使用Laplacian进行边缘检测,得到的图形最外层轮廓是完整的。
2023-06-10 16:44:09
308
1
原创 vscode+python安装opencv问题
这样就可以了,之后pip list中出现opencv库。安装后pip list中没有opencv库。2、pip安装完整版opencv。
2023-06-08 09:28:46
891
1
原创 报错: can‘t open file ‘pyinstaller‘: [Errno 2] No such file or directory
can't open file 'pyinstaller': [Errno 2] No such file or directory
2023-03-14 15:49:37
1903
原创 \Makefile.Debug:4575: warning: overriding recipe for target ‘debug/qaesencryption.o‘
\Makefile.Debug:4575: warning: overriding recipe for target 'debug/qaesencryption.o'
2023-03-03 09:32:36
536
原创 ERROR: Could not install packages due to an OSError: [Errno 22] Invalid argument: ‘C:\\Users\\HSzhi\
ERROR: Could not install packages due to an OSError: [Errno 22] Invalid argument
2022-12-22 15:29:55
807
原创 安装了opencv,import cv2还是失败
使用的是vscode,失败原因,opencv安装位置在python3.7, vscode使用的python版本是3.9(位于inkscape的lib中),删除3.9的python。
2022-12-12 19:19:42
1422
原创 python编译报错:ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Users\leopard\AppData\Local\P
python编译报错:ImportError: cannot import name 'Literal' from 'typing' (D:\Users\leopard\AppData\Local\P
2022-09-06 10:15:03
5718
qt svg图形写入pdf失败
2022-11-25
python对传入参数进行类型转换后,参数丢失
2022-11-18
关于#qt#的问题:我有两个svg文件,一个是coreldraw生成的a文件,一个是qt生成的b文件,将b文件中xml内容放入a文件中后显示会缩小很多,两个文件分开显示没什么问题
2022-11-04
vs2015安装出现问题
2021-07-22
为什么我的按钮转为槽没有clicked的选项?
2021-06-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人