自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

支持一对一答疑的编程作家朱文伟的博客!

支持一对一答疑的编程作家朱文伟助力中国软件之崛起!

  • 博客(123)
  • 收藏
  • 关注

原创 Rust如何引入源码作为依赖

这个动态库可能依赖于其它动态库(比如,Linux 下用 C 语言写的 PostgreSQL 的 libpq.so,或者另一个编译成 "dylib" 的 Rust 动态库)。编译器会把所有实现的 Rust 库代码以及依赖的库代码全部编译到一个静态库文件中,也就是对外界不产生任何依赖了。当我们引用三方包的源码后,编译时Cargo也会根据三方包的Cargo配置编译这些三方包的源码,然后把编译的结果输出到本项目的target/[debug/release]/deps目录下,这样本项目就可以使用这些三方包了。

2025-03-31 08:21:25 985

原创 Rust 有问有答之 use 关键字

主函数 main.rs 想要调用 print_function,需要对 mod 标识访问级别,使用关键字 pub。use 是 Rust 编程语言的关键字。using 是 编程语言 C# 的关键字。为方法 other_funtion 创建别名 ab_funtion。为命名空间创建别名,或导入在其他命名空间中定义的类型。关键字是预定义的保留标识符,对编译器有特殊意义。定义一个范围,在此范围的末尾将释放对象。使用关键字 use 为作用域创建别名。外部模块 a.rs,代码内容如下。手动加上作用域的方式声明。

2025-03-31 07:48:17 516

原创 python使用opencv进行人脸识别

这个库虽然是最大的,但并不意味着这个库是最好的,应该说,用这个库,识别是最严格的, 这就意味着,有些头像不能被识别,因为根据他的算法,他认为这不是头像。-rw-r--r-- 1 root root 401K 4月 28 2011 haarcascade_mcs_eyepair_small.xml。上面的代码只是识别面部,并不包括头发,如果大家想抓一个完整的头像的话, 可以将识别出来的矩形框的上边缘增加一定的比例,比如增加20%头像的高度。

2025-03-28 13:09:08 992

原创 Opencv 图像读取与保存问题

由此可见,眼下 Opencv能够直接读取4通道图像并保留Alpha通道的貌似仅仅有PNG格式,对于非PNG格式数据,须要保留Alpha通道的应用,假设坚持使用 Opencv库,建议转格式吧~对于多通道图像,假设想对其每一个通道单独进行保存,当然也是可行的。一方面自己能够依据图像的信息和图层信息写出相应的存储函数,还有一方面 Opencv也提供了专门的函数。值得强调的是,imwrite函数支持存储的图像类型是有限的仅仅包含:1。3,4通道的图像,可是对于不同的图像格式。上述的标识符含义,显而易见,就不累述。

2025-03-28 09:17:44 1141

原创 Qt——设计颜色编辑选取对话框

Qt中已经有一些封装好的对话框,比如QMessageBox、QColorDialog等,使用起来快捷方便,但缺点是我们无法为它们自定义样式,所以可能难以“融入”我们的项目。既然如此,那就自己做一个把。抱着这样的想法,我设计了一个颜色编辑选取对话框。设计界面时,我参考了photoshop的拾色器、windows的画图软件以及一个手绘控件软件mockup。

2025-03-17 09:37:55 793

原创 Qt界面风格设置

每个widget都可以设置风格

2025-03-17 07:08:35 455

原创 Qt 串口类QSerialPort 使用笔记

虽然现在大多数的家用PC机上已经不提供RS232接口了。但是由于RS232串口操作简单、通讯可靠,在工业领域中仍然有大量的应用。Qt以前的版本中,没有提供官方的对RS232串口的支持,编写串口程序很不方便。现在好了,在 Qt5.1 中提供了QtSerialPort模块,方便编程人员快速的开发应用串口的应用程序。本文就简单的讲讲QtSerialPort模块的使用。当前的QtSerialPort模块中提供了两个C++类,分别是QSerialPort 和QSerialPortInfo。

2025-03-10 08:27:19 570

原创 Qt学习笔记 TableWidget使用说明和增删改操作的实现

/获得widget。

2025-03-10 07:29:50 837

原创 Qt/C++音视频开发 - 逐帧播放/上一帧下一帧/切换播放进度/实时解码

逐帧播放是近期增加的功能,之前也一直思考过这个功能该如何实现,对于mdk/qtav等内核组件,可以直接用该组件提供的接口实现即可,而对于ffmpeg,需要自己处理,如果有缓存的数据的话,可以通过在缓存中的数据往前移动往后移动即可。这样就要求做一个比较大的缓存队列,占用一定的内存是肯定的。

2025-03-04 10:09:13 772

原创 Qt/C++音视频开发-检查是否含有B帧/转码推流/拉流显示/监控拉流推流/海康大华宇视监控

为什么需要判断视频文件是否含有B帧,这个在推流的时候很容易遇到这个问题,一般来说,没有B帧的视频文件,解码后的数据帧pts和dts都是顺序递增的,而有B帧的则未必,可能有些需要先解码后面显示,B帧也是双向预测图像B,对它的编码,即是对它前后帧的像素值之差进行编码,B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。

2025-03-04 08:07:59 592

原创 C/C++面试的五大必问问题!

假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数(动态绑定)。在C++中,虚函数的作用是实现多态性。(4)”sizeof引用”得到的是所指向的变量(对象)的大小,而”sizeof指针”得到的是指针本身的大小;(3) 指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了,从一而终。

2025-02-26 08:25:40 591

原创 pyqt 调用颜色选择器

self.setWindowTitle('颜色选择')

2025-02-18 11:39:29 400

原创 PyQt加载UI文件

动态加载出有错误信息,但不影响运行。2.使用QFile加载。

2025-02-18 09:06:29 416

原创 为什么malloc函数需要传入申请的内存大小,而free时候却不需要传大小呢?

例如,假设 malloc 返回的地址是 ptr,堆管理器可能在 ptr 之前的地址存储元信息(如内存块大小)。调用时,free 只需要传入 malloc 返回的指针地址即可,不需要额外传入内存块的大小。其中,malloc 需要传入申请的内存大小,而 free 却不需要,这背后的原因涉及动态内存分配的实现原理和设计哲学。malloc 的功能是从堆中分配一块指定大小的内存,返回该内存块的起始地址。free 不需要大小,因为堆管理器在分配内存时已经记录了每个块的大小,释放时可以通过内部元信息找到相应的数据。

2025-02-14 07:24:11 497

原创 面试必考:深入理解 Qt 信号与槽机制:原理、用法与优势

不同之处在于,槽函数能够与信号建立连接,一旦与之关联的信号被发射,槽函数便会自动被调用,执行相应的操作。通过QObject::connect()函数,我们能够指定信号的发送者、信号本身、接收者以及对应的槽函数,从而构建起信号与槽之间的通信桥梁,使得信号发射时能够准确触发相应的槽函数。信号与槽的映射表:这是一个数据结构,它记录了类中每个信号和槽的名称、参数列表以及对应的函数指针(在运行时用于调用信号和槽函数)。调用槽函数:一旦找到对应的映射记录,Qt 会根据记录中的信息,调用所有连接到该信号的槽函数。

2025-02-13 20:55:21 547

原创 面试必考:new和malloc的区别

/执行完该语句后,p变成了不确定的指针,在很多机器上,尽管p值没有明确定义,但仍然存放了它之前所指对象的地址,然后p所指向的内存已经被释放了,所以p不再有效。(5)Malloc不能赋初值,new可以,如int *p = new int(2).代表分配一个int型的内存空间,并赋初值2.如果new int ()代表赋初值0,new int[10]代表分配10个int.(2)Malloc和free在C程序中使用,而C++程序中使用new和delete,删除数组delete[]p,指针释放后,要将指针置空。

2025-02-13 17:16:32 973

原创 面试必考:static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?static局部变量的生命周期?

static修饰的局部变量主要影响全局变量的跨文件访问,即主要影响其作用域,其作用域从整个工程变为本源文件,只在本源文件内才可以被访问,其他源文件需要跨文件调用它只能通过它所在源文件的函数间接访问,这也是保护数据的一种方式,但其生命周期不变,依然为从程序开始到程序结束。static修饰的局部变量具有“记忆”功能,其只会被初始化一次,其生命周期较普通局部变量变长了,从局部变为全局,即从程序开始到程序结束,但其作用域和普通局部变量一样,依然只能作用域函数内或者所在代码块内。2.static修饰全局变量总结。

2025-02-13 16:55:13 319

原创 面试必考:一文搞懂野指针、悬空指针、空指针和内存泄漏,附代码示例!

内存泄漏:指程序在动态分配内存(例如使用malloc、calloc等函数)后,没有释放这些内存,导致这些内存块在程序运行过程中一直被占用,无法被操作系统重新利用。这样,每次调用该函数,就会有一块内存被占用而无法回收,造成内存泄漏。悬空指针:指针原来指向的内存已经被释放(例如通过free函数),但指针本身没有被置为NULL,仍然保存着之前内存的地址。总结,野指针和悬空指针指向无效内存(通常可以统一称为野指针),空指针则明确不指向任何内存,而内存泄漏则是未释放的有效内存,三者均可能导致程序错误和性能问题。

2025-02-13 16:10:12 514

原创 Android Studio使用OpenCV的配置方法

其中,sdk目录即是我们开发opencv所需要的类库;在Android Studio中的左上角选择Project视图,在oepnCVLibrary2411文件夹里,打开build.gradle(有很多重名的文件,一定找对openCV库文件下的),修改文件中的1)compileSdkVersion 2)buildToolsVersion 3) minSdkVersion 4)targetSdkVersion,将其内容与app文件夹下的build.gradle中信息相一致。自此,OpenCV的环境就配置好了。

2025-02-12 16:36:47 417

原创 OpenCV——RGB三通道分离

matlab 的排列顺序是R,G,B;而在opencv中,排列顺序是B,G,R。opencv 和 matlab 在处理彩色图像的时候,通道的存储顺序是不同的。下面通过一个小程序看看opencv中的三个通道。// 三个通道的顺序是 b,g,r.

2025-02-12 16:28:57 866

原创 Vue3 —— 安装及配置环境

安装Node.js通常也会安装NPM,因为NPM是Node.js的官方包管理工具。需要在node运行环境下调试,安装LTS版(长期支持、稳定版)。

2025-02-07 16:37:11 481

原创 Vue3.5常用特性整理

/ watch(foo, /* ... */) 等价于 watch(props.foo, ...),我们给 watch 传递的是一个值而不是响应式数据源。现在有了清理函数 onWatcherCleanup / onEffectCleanup 后,我们可以直接调用它来清理之前的 调用(异步)函数/请求。// `foo` 由编译器转换为 `props.foo`,以上等同于 `console.log(props.foo)`state.a.b.c = 2 // 更改了第三层的属性,不触发监听。

2025-02-07 16:36:02 810

原创 Rust到底值不值得学--Rust对比、特色和理念

其实我一直弄不明白一点,那就是计算机技术的发展,是让这个世界变得简单了,还是变得更复杂了。当然这只是一个玩笑,可别把这个问题当真。然而对于IT从业者来说,这可不是一个玩笑。几乎每一次的技术发展,都让这个生态变得更为复杂。“英年早秃”已经成为一种很普遍的现象。Rust是近两年呼声比较高的一种新型开发语言。市场占有量并不大,但增长速度极为迅猛。有人统计过,在计算机行业,平均每33.5天就有一种所谓的新型开发语言面世,这还不包括很多企业内部、项目内部的内置简易流程工具。

2024-12-09 08:17:31 1016

原创 Win 7/10永久修改命令提示符cmd的默认当前页码页为936(简体中,永久解决cmd窗口中文乱码!

进入cmd后,输入"regedit"打开注册表。找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor。然后“右键-新建”,选择“字符串值”,“名称”列填写“autorun”, 数值数据填写“chcp 936”(注意:中间有一个空格哦!当我们进入cmd窗口后,直接输入“chcp 936”回车后,只会临时修改当前的页码页,当再次进入后又会显示之前的页码页。那就是直接修改其注册表。这样我们就自动把编码格式设置为简体中文GBK了。

2024-12-08 23:34:18 547

原创 Windows7下安装Visual Studio2019发生错误的解决办法

起初笔者以为是真的是由于网络不稳定或者是笔者在虚拟机中进行实验安装原因导致的问题,后来由于持续的报网络问题无法下载安装,后来只能寄希望于离线安装包了,痛下决心下了将近40个G离线安装包,依旧破了一盆冷水,没能安装成功……的时候,却发生了莫名闹心的事情:(整个过程记录如下,假如你也遇到了同样的困难,希望对您能有所帮助),全程很顺利的完成了Visual Studio2019的安装,没有遇到任何困难。安装两个必要的补丁后,重新运行即可成功进行联网下载安装。,以便更好的开展工作,自己于是在自己的笔记本电脑(

2024-08-12 17:20:50 1443

原创 Qt十多年的开发经验,无私奉献!

增加了很多轮子,同时原有模块拆分的也更细致,估计为了方便拓展个管理。把一些过度封装的东西移除了(比如同样的功能有多个函数),保证了只有一个函数执行该功能。把一些Qt5中兼容Qt4的方法废弃了,必须用Qt5中对应的新的函数。跟随时代脚步,增加了不少新特性以满足日益增长的客户需求。对某些模块和类型及处理进行了革命性的重写,运行效率提高不少。有参数类型的变化,比如 long * 到 qintptr * 等,更加适应后续的拓展以及同时对32 64位不同系统的兼容。

2024-08-11 23:13:06 740

原创 我们访问github,会出现无法访问此网站的情况

打开windows电脑的hosts文件,位置大概在C:\Windows\System32\drivers\etc,每个人根据情况可能不一样。可能会被杀毒软件拦截,提示可能会有域名劫持的风险。如果一直提示,也可以关掉杀毒软件,用完github之后再开启。我们访问github,会出现无法访问此网站的情况,能访问全靠运气和心情,经常出现这样的情况。结果是这样的,记住140.82.112.3这个ip,下面会有用到。抓狂至极,特别是项目特别着急的时候,更是不知所措。点击保存,即可解决访问超时的问题,访问速度杠杠的。

2024-08-09 19:49:52 485

原创 深入剖析C++多态的实现与原理-详解 (辛苦三万字,且看且珍惜!)

在虚函数后面写上=0,这个函数就为纯虚函数.纯虚函数只能写声明,不能写函数体.

2024-06-30 08:52:30 1014

原创 安全测试前置实践1-白盒&黑盒扫描

本文我们讲述了体验保障的安全质量提升过程。重点讲述黑盒、白盒的扫描过程。首先对漏洞工单进行了分析,确定了漏洞的来源、种类、分布,摸清了漏洞的现阶段情况。然后通过进行安全前置扫描,对工单中的白盒、黑盒问题前置识别。过程中通过开发工具来提升效率,最终形成一套可行的前置开展方案。但需注意:除了解决存量漏洞问题,还需要新增类问题,需要持续不断地建设,需要实现安全测试的常态化运行。并且要利用更多自动化工具,去进行提效。

2024-06-21 09:29:13 1156

原创 团队领导(leader)怎样带领好团队

一个优秀的,应该遵循什么样的准则,才能够带领好团队,感召下属,激发他们成长和努力工作?

2024-06-21 09:20:55 1329

原创 零信任介绍

传统的安全方法是在网络边界范围内的环境中开发的,假设对组织网络内的任何人都绝对信任。我们需要一种全新的安全方法,这种方法依赖于对合规性的持续验证,并且无论人们从任何位置以及任何设备访问应用和数据,这种方法都能保护相关应用和数据。零信任背后的策略可以归结为抛弃传统的安全方法(即认为网络边界范围内的所有资源都是值得信任的),改为采用“永不信任,始终验证” 的方法。与传统的安全方法相比,零信任存在动态决策点,用于验证信任并影响对企业应用和数据的访问级别。修复和编排 - 通过自动修复和编排提升安全性和体验。

2024-06-21 09:08:27 347

原创 UE/C++简单功能实现笔记

本篇笔记主要用于记录如何利用C++在虚幻引擎5中实现一些基本的功能需求。目录。

2024-06-20 08:21:22 345

原创 CMake个人理解和使用

100编程书屋_孔夫子旧书网前言CMake是一个构建工具,通过它可以很容易创建跨平台的项目。通常使用它构建项目要分两步,通过源代码生成工程文件,通过工程文件构建目标产物(可能是动态库,静态库,也可能是可执行程序)。使用CMake的一个主要优势是在多平台或者多人协作的项目中,开发人员可以根据自己的喜好来使选择IDE,不用受其他人工程配置的影响,它有点像跨平台的IDE,通过它配置好相关设置之后,可以在多个平台无缝衔接,提高开发效率。最简单的CMake工程项目搭建一个用CMake来管理的项目,其项目根目录通常

2024-06-20 08:14:29 660

原创 C++面试八股文:什么是左值,什么是右值?

一次移动(当元素特别多时,移动的成本相对于拷贝基本可以忽略不记),一次析构。二师兄:移动构造是通过移动构造函数实现的,当类有资源需要管理时,拷贝构造会把资源复制一份,而移动构造偷走了原对象的资源。这里的确是通过static_cast实现的,讲左值强行转换成右值,用来匹配移动语义而非拷贝。时,为了保证程序的正确性,编译器可能会采用拷贝构造的方式实现移动构造,从而导致效率降低。是左值是和右值是匹配不同的实现,完成返回不同类型引用的目的。当传入的参数t的类型时右值时,由于引用折叠还是右值,此时的。

2024-06-20 07:54:11 638

原创 用Rust手把手编写一个Proxy(代理), 开始动工

注意:客户端和服务端之前可能会存在大数据上传下载的情况,超过百兆数据的上传下载,所以我们为了减少序列化带来的性能损失和保证在低内存能正确运行,不做http的完整解析,仅仅只处理http头信息。这表示该请求为普通的http代理,我们解析完HTTP的头文件信息,得出包含的头信息,如果无法解析完整的地址(域名加端口或者ip加端口),则返回错误,无法处理该http信息。http.rs http及https代理的实现,如果解析失败则返回ProxyError::Continue,并把已经读取的数据带回,以便后续解析。

2024-06-15 08:29:15 918

原创 tonic-Rust grpc初体验

gRPC 是开发中常用的开源高性能远程过程调用(RPC)框架,tonic 是基于 HTTP/2 的 gRPC 实现,专注于高性能、互操作性和灵活性。该库的创建是为了对 async/await 提供一流的支持,并充当用 Rust 编写的生产系统的核心构建块。今天我们聊聊通过使用tonic 调用grpc的的具体过程。

2024-06-15 08:02:21 990

原创 CSS3 clip-path:打造独特创意设计效果的秘密武器

一部由CSS技术实现的作品。它将再一次证明CSS的强大力量。

2024-06-07 07:33:35 867

原创 C++面试八股文:static和const的关键字有哪些用法?

关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量或者函数为静态的,限制在本文件内使用。3.内类修饰成员函数和成员变量,此函数或变量由类持有,而非类的对象持有。修饰的函数是否在编译器求值要取决于传入的参数是不是编译器确定的,这属于元编程的范畴。常量指针的指针部分可变,指针指向的内容不可变。指针常量则相反,指针指向的内容可变,指针不可变。当使用consteval修饰函数和变量时,如果不能在编译时求值,则编译错误。如果传入的参数是编译时确定的,关键字只能用于静态变量的初始化,不能用于动态变量的初始化。

2024-06-07 07:24:33 612

原创 驱动开发:内核扫描SSDT挂钩状态

其次我们还需要实现另一个功能,此时想像一下当我告诉你一个内存地址,我想要查该内存地址属于哪个模块该如何实现,其实很简单只需要拿到这个地址依次去判断其是否大于等于该模块的基地址,并小于等于该模块的结束地址,那么我们就认为该地址落在了此模块上,在这个思路下。则是读取磁盘文件并将其完整拷贝一份,这是两者的本质区别,如下代码则是实现完整拷贝的实现;开头的系列函数,然后依次对比起源地址与原地址是否一致,得出是否被挂钩,完整代码如下所示;函数,该函数的作用是读入一个内核文件到内存空间中,此处如果您使用前一篇。

2024-06-03 10:59:24 769

原创 驱动开发:内核实现SSDT挂钩与摘钩

函数指针在调用结束后即可很容易的跳转回原函数上,保证流程被正确执行,如果需要Hook其他函数其编写模板也是如下所示;接着就是如何挂钩并让其中转到我们自己的代码流程中的问题,由于挂钩与恢复代码是一样的此处就以挂钩为例,首先调用。Hook核心代码如下所示,为了节约篇幅,如果您找不到程序中的核心功能,请看前面的几篇文章,这里就不在赘述了。挂钩的目的就是要为特定函数增加功能,挂钩的实现方式无非就是替换原函数地址,我们以内核函数。将新函数地址写出到内存中实现替换,最后释放MDL句柄即可,这段代码如下所示,看过。

2024-06-03 10:45:07 391

《轻松学PHP》源代码

《轻松学PHP》源代码

2024-05-27

《PHP+MySQL网络开发从入门到精通》源代码资源

《PHP+MySQL网络开发从入门到精通》源代码资源

2024-05-27

空空如也

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

TA关注的人

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