自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (3)
  • 收藏
  • 关注

原创 redis数据库学习一

redis数据在内存中,读取速度快,但易丢失,是key-value型数据库,类比于字典,通过key去操作value,mysql数据在磁盘中读取速度慢。key-value一一对应,请求回应模式,使用TCP与redis数据通信,对于发送的请求redis必须做出回应。

2024-09-27 09:28:57 980

原创 红黑树rbtree

(1).根节点是黑色的(2).每个叶子节点是黑色的(3).如果一个节点是红色的,则它的两个儿子都是黑色的(4).对每个节点,从该节点到其子孙节点的所有路径上的包含相同数目的黑节点根节点为黑色,叶子节点也为黑色,红色节点的子节点为黑色,每条路径上黑节点高度一样一种强查找的数据结构2.用途:a.hashmapb.定时器c.cfsd.epoll当红黑树平衡结构被破坏时,需要进行旋转满足红黑树结构性质当插入或者删除节点旋转的次数为层高 ,插入时节点初始颜色为红色,因为这样不改变黑色节点高度。

2024-07-10 11:41:11 287

原创 无锁消息队列

分为put队列和get队列,put队列用于生产者、get队列用于消费者,当put队列和get队列为空时阻塞消费者线程,当get队列为空时,尝试与put队列进行交换,此时生产者和消费者发生碰撞,其他情况,生产者不与消费者发生碰撞(争夺锁)。(2).由于多线程情况下,当一个线程拿到锁以后,其它线程需要经过自旋等待、阻塞态、就绪态,时间浪费在保护队列时的锁争夺上面,而不是用在执行任务上。答:如果是从操作队列的角度出发,无所队列性能高,如果是从队列所属系统角度出发,不一定,还需要看任务耗时。队列,它将明显更快。

2024-06-25 14:31:46 1038

原创 原子操作CAS与锁实现二

操作同时具有获得语义和释放语义,即它前后的任何读写操作都不允许重排,并且其他线程在对同一个原子对象释放之前的所有内存写入都在当前线程可见,当前线程的所有内存写入都在对同一个 原子对象进行获取的其他线程可见;在多线程情况下,操作原子变量时,cpu为避免锁总线会去操作其他变量,但这是无序,可能不符合当前的代码逻辑,所以需要程序员自己规定内存序,定重排规则。,在写入某原子对象时, 当前线程的任何前面的读写操作都不允许重排到这个操作的后面去,并且当前线程的所有内存写入都在对。如果替换成功, 则返回原来的值。

2024-06-18 14:42:03 915

原创 原子操作CAS与锁实现一

多线程环境下,确保对共享变量的操作在执行时不会被干扰,从而避免竞态条件.

2024-06-17 14:19:53 527

原创 网络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 313

原创 mysql连接池实现

1.创建一个连接Mysql的线程池,作用是维持和管理固定数量与数据库的TCP长连接,实现资源复用,更快的系统响应。

2024-06-16 20:47:56 701

原创 Inno setup 检测CorelDraw注册表

我找的是ConfigDir的位置,也可以找programsdir位置,但是X4版本的注册表中没有programsdir。X7、X8、2017、2018的Config是大写,2019及以上是小写config。[File]段安装的位置。

2024-06-13 14:15:37 218

原创 内存池实现二

1.实现不定长大块,可以分配更大的内存,结构如下:第一个位置max用于判断需要分配的内存大小,大于max使用大块,小于max使用小块;第二个位置指针指向小块的首地址;第三个位置指针指向大块首地址。2.大块结构如下,使用队列结构,左边指针指向下一个大块首地址,右边指向分配的内存。3.下图是对应结构的代码,小块中last为起始地址,end指向已使用内存位置,next指向未使用内存末位置。

2024-06-12 10:04:01 288

原创 内存池的实现

减少内存碎片,当一个进程长期运行在堆上不停的操作内存会产生内存碎片,导致出现内存分配失败。还有调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,调用free/delete,系统可能需要合并空闲内存块,这些会产生额外开销。对内存实现管理实际上就是堆管理(malloc),下图是虚拟机内存分布图,内存池的实现主要操作堆的向上增长。2.解决方法:使用内存管理组件,jemalloc和tcmalloc是完善的两个内存管理组件;4.内存池释放内存块。

2024-06-03 14:30:55 368

原创 线程池与性能分析

1.线程池的作用:线程的一种使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性。(1).创建任务队列:首先从堆上分配一个任务队列的内存,还是使用回滚式编程,分配成功就free,然后进行互斥锁和条件变量的初始化,互斥锁初始化成功就destroy,然后进行条件变量初始化。(2).销毁任务队列:首先释放队列任务分配的资源,销毁原子锁、条件变量、互斥锁,最后free队列。(2).销毁线程池:线程池退出,休眠线程先唤醒后退出,执行任务的线程完成当前任务退出。(1).创建线程池:传入参数为线程池数量。

2024-06-03 10:53:13 276

原创 dpdk学习记录二

1.解析收到的数据,将以太网头的mac地址、ip头的ip地址、udp头的端口信息保存到global。获取包长度用于ip包的封装和udp包的封装,从mbuf池中分配一个mbuf用于发送数据。解析接收的包,保存发送端和接收端的信息,以太网头、ip头、tcp和udp头。(3).udp发送和tcp发送,首先保存收到数据的协议头,将目的端口和源端口的协议头信息进行调换封装,使用rte_eth_tx_burst函数发送。封装以太网协议头,创建以太网协议头指针指向msg也就是mbuf首地址,添加目的mac和源mac;

2024-06-03 09:37:47 174

原创 dpdk学习记录一

(6).接下来执行43,44,45,46,47,49,46和47设置巨页时选择512,选择49时eth0如果还是活跃状态需要关掉ifconfig eth0 down,执行完毕后,环境配置完成。(1).编译方式,使用makefile文件编译,Makefile复制于cp ../dpdk-stable-19.08.2/examples/helloworld/Makefile ./为什么需要多队列网卡,因为dpdk需要多队列网卡,单网卡只有一个中断,多队列网卡有多个中断,dpdk可以同时处理多个中断,增加吞吐量。

2024-05-20 09:14:44 349

原创 QT +mingw32实现USB通信

qt+mingw使用USB通信

2024-02-01 18:15:33 731 1

原创 Qt无法定位程序输入点XXXXXXX于动态链接库XXXXXXXX

使用Dependencies软件将debug生成的exe和打包生成的exe进行依赖库对比 ,查看出问题的dll库目录下子dll库是否不一样,选择正确的dll库。使用Qtcreater在debug模式下正常运行程序,打包好的程序运行出现这个错误。

2023-11-11 16:02:26 390 1

原创 qt+opencv提取图片最外层轮廓遇到的问题

在使用边缘检测时第一次使用的是canny检测导致最外层轮廓不完整,使得得到的最外层轮廓不是理想的结果,正确的应该是使用Laplacian进行边缘检测,得到的图形最外层轮廓是完整的。

2023-06-10 16:44:09 249 1

原创 vscode+python安装opencv问题

这样就可以了,之后pip list中出现opencv库。安装后pip list中没有opencv库。2、pip安装完整版opencv。

2023-06-08 09:28:46 668 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 1677

原创 \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 449

原创 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 639

原创 安装了opencv,import cv2还是失败

使用的是vscode,失败原因,opencv安装位置在python3.7, vscode使用的python版本是3.9(位于inkscape的lib中),删除3.9的python。

2022-12-12 19:19:42 1302

原创 python 打包命令

python 打包

2022-11-17 10:29:14 274

原创 python相对路径引用资源文件后打包生成的exe无法运行问题

python相对路径引用资源文件后打包生成的exe无法运行问题

2022-09-14 20:44:26 3057

原创 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 4234

开源消息队列lockedqueue.h、msgqueue、rte-ring

消息队列lockedqueue.h、msgqueue、rte_ring

2024-06-25

qt+mingw32 USB通信hidapi库文件

qt+mingw32 USB通信hidapi库文件

2024-02-01

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

TA关注的人

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