- 博客(57)
- 收藏
- 关注
原创 Qt编程问题分析----你的键盘事件怎么失效了?
最近做一个游戏的辅助点击的软件,主要用Qt和opencv开发,挺简单的,主界面文件,各个独立的任务类文件,由于要频繁截图频繁点击游戏画面,所以需要游戏界面在前台,我的想法是利用键盘输入特定键来停止程序运行。发现了Qt界面拿不到焦点,于是把设置游戏前台行给注释掉了,但是还是拿不到焦点,再问,说是可以设置焦点,好嘛,照着做了,甚至每次触发信号,来给主界面设置焦点,结果还是没用。于是我问了通义千问,他说可以用多线程,让工作线程去执行任务,好嘛,照着做了,结果没有用,在构造函数中安装全局键盘钩子。
2024-11-20 22:18:53 143
原创 C++fstream用getline()显示不出来的原因
文件操作是我不太熟悉的方面,在我照着教程输入输出时,发现文件可以创建,可以读出,但不能读入,即getline(filestream,s)一直失败,后来找到原因了,是因为文件被打开并读出了几行,需要关闭再打开才能读入。理论上文件打开关闭都需要判断,防止内存泄漏。
2024-10-29 23:45:14 173
原创 Linux系统调用ioctl
函数在 Linux 系统中扮演着重要的角色,它是设备驱动程序中用于设备控制的接口函数。这个函数允许用户空间的应用程序向内核空间的驱动模块发送控制命令,从而实现对设备的精细控制。的设计初衷是将数据读写和状态控制分开,使得应用层和内核空间能够更好地对接。
2024-10-15 23:38:16 129
原创 C++运算出现整型溢出
答案也是编不过的,要想编过,需要将b改成long类型,这是因为运算时会发生隐式类型转换,a的int类型会转换为更长的long,从而暂存值一直是long,不会溢出。请记住,c语言没有赋值,只有表达式,右侧会存在一个暂存的int保存a+b的值,而明显这个暂存的值溢出了。原因是a和b都是int型,相加之后会溢出。那这么改呢,用一个强制类型转换?
2024-10-15 23:04:09 288
原创 Qt知识---tableWidget与tableView
tableWidget表格可以处理上百上千行的数据,而tableView可以处理上百万条数据。
2024-10-12 22:03:32 233
原创 c语言int,short,long,unsigned int等
简单来说,int较大,一般是32位,有43亿,而short有16位,long有64位,对于明确为正数的较小的值可以用unsigned short int,舍去最高位的符号位,可以表示的值扩大了一倍。unsigned short取值范围是0-65535。
2024-10-04 11:28:56 213
原创 QT入门知识----2024.8.21-9.28
说明ui是UI命名空间中MainWindow的别名指针,它可以访问qt设计师中的各类控件,所以经常有ui->btn等等操作;Widget是基类,有一个基本的类似画布的功能,window和dialog是继承类,各自增加了一些功能。//该函数使得窗体的大小进行了改变,改变后大小为宽度m_width像素,高度m_height像素。widget的位置是左上角的坐标,而坐标原点是整个屏幕的左上角, 往右往下为正。//无需定义,只要声明就行。//该函数使得窗体的 位置和大小发生改变,更加的随心所欲。
2024-10-03 20:55:35 452
原创 电脑WLan无线网连上没网络的问题解决方法
打开浏览器,疑难检测一下看看,说是代理服务器的问题,浏览器不接受7890端口的代理连接,打开桌面软件bi站,也没网,感觉还是系统设置的问题,到设置里一看,自动代理没开,开了也没用,手动代理开了,正好端口号是7890,然后关闭,网络就好了。在公司的酒店,网络很差,每到周末网就很差,昨天网上还能上头条写文章,终于,今天浏览器都上不去了,咋回事呢?明明手机能上网呀,明明电脑显示无线网已连接,没一点问题呀?而且手动代理之后微信还是能发消息呀,靠!我什么时候开的手动代理?
2024-09-07 20:55:26 218
原创 钓鱼入门攻略
春天3~5月份时鱼靠岸产卵,所以适合钓近岸浅滩,不到半米也能连杆上鱼,夏季天热,鱼多躲在阴凉处,深浅交接处,硬质沙地处,晚上鲤鱼靠岸觅食,秋天天气转凉,鱼开始往深处迁移,且咬钩较轻,漂相不明显,冬季鱼活性太低,人找鱼,多打几个窝,哪个窝有鱼去哪钓。子线钩长度有两种,48cm和26cm,都可以,短更灵敏一点,长不挡口,线号1.0~1.5,钩推荐3~5号金袖,特点就是轻,鱼特别容易吸进去,钓鲫鱼首选,品牌小凤仙等,价格10~20块钱10副。老钓位,很明显的有人做钓的痕迹,也许天天有人在这打窝,鱼多。
2023-10-26 17:40:21 215 2
原创 MySQL数据库学习
值得注意的是,默认的连接方式是inner,有时我们需要outer外连接就用。一般来说,group by的分组要配合上聚合函数,如count(),sum(),avg(),max(),min()还有一类就是cross join和自己交叉连接,比如力扣197.上升的温度,让你列出当日温度比前一天温度高的条目。值得注意的是,不用on连接而是用where and两个条件也是可以的,只是效率低了一点,毕竟连接的表要更大一些。有时我们需要后筛选,我们要列出城市出现次数大于5次的城市及次数,那么我们使用having。
2023-10-19 21:23:52 237
原创 数据结构-哈希表-哈希函数-哈希冲突
若线性表(24,13,31,6,15,18,8)采用散列(Hash)法进行存储和查找,设散列函数为H(Key)=Key mod 11,则构造散列表时发生冲突的元素为()先看一个例题,可以明白什么是哈希冲突,线性表中的值通过哈希函数取得了相同的值,就是哈希冲突。散列表中有 m 个存储单元,散列函数 H(key)= key % p ,则 p 最好选择?这题p最好大于等于m,当然散列表有相同元素依然能冲突,如果不满足,p最好选择小于等于m的最大素数。
2023-09-28 11:38:22 448
原创 计算机网络相关-ip地址,子网掩码与网络地址,广播地址
总的来说,ip地址用点隔开,用4个0-255之间的十进制数表示,如192.168.65.98。有这样的题:告诉你ip地址和子网掩码位数,求网络地址和广播地址。而广播地址是得到的网络地址,将后8位置1,换成十进制得到。一般给出的信息是这样的:192.168.65.98/24。这代表子网掩码的前24位为1,后8位为0,网络地址是ip地址与子网掩码逐位相与。
2023-09-21 14:37:22 504
原创 c++堆排序-建堆-插入-删除-排序
本文以大根堆为例,用数组实现,它的nums[0]是数组最大值。读者可以复制代码到编译器里运行一下试试,帮助理解。它的主要思路参考力扣官方讲解。
2023-09-21 01:37:33 163
原创 Mysql在linux中的使用
修改表设置password字段为not null。输入root即可登录,但是注意安装完需要重启一下。使用该数据库创建表并查看。添加两条数据用户名和密码。
2023-09-20 14:29:12 80
原创 面试题-登录校验系统流程
整体流程:客户端填写手机号,发送验证码,服务端生成短时间的手机号验证码kv,客户端填完之后服务端验证,验证成功后服务端生成tokens,并将tokens发送给客户端,如果验证失败返回401登录界面。发送文件流程:客户端在有了tokens之后,每次发送数据需要添加tokens,服务端通过网关验证tokens,服务端流程:验证账号验证码是否正确,验证账号是否存在,完成验证生成token,将token返回给客户端。客户端流程:填写手机号,发送验证码,填写验证码,勾选协议登录。
2023-09-20 10:27:03 122
原创 c++编译过程-各阶段任务
首先,g++在编译源代码时,会经历下面几个阶段-E 首先进行预处理,还是源代码格式.i-S 编译器生成汇编语言.s-c 汇编器生成二进制文件.o- 链接库文件,其他代码.out。
2023-09-19 22:45:38 123
原创 Linux面试题
find /home -name "main.cpp" 查找home目录下名字为main.cpp的位置。返回:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz。特别需要注意空格问题!{}的两边需要空格,\前面需要空格,后面没有空格紧跟;-ok选项代表并且的意思,我们找到这些文件需要进行操作后面接操作的命令。alias ls -l gg 将ls -l 命令取别名为gg。返回非常多的内容,基本上所有文件带ls的都返回了。返回目录中大小大于5M的文件,这里命令出错了!
2023-09-17 21:46:57 57
原创 网络编程-main函数主要逻辑
我们知道,c++网络编程有建立套接字,绑定端口号,监听端口号这三个步骤,然后等待epoll连接事件到来,客户端连接请求,服务端接受请求,若是epoll中的事件是读写事件,则进行读写操作。在这个阶段,内核做了一些事情,内核维护了两个队列,一个是已经连接的队列,一个连接请求但未连接,该函数最后一个参数即队列的最大的请求数量限制。做好这一切,我们就可以开启死循环,调用epoll_wait函数,返回epoll数组中事件个数,遍历事件数组中事件个数,并进行处理。这个函数是建立一个套接字,返回一个文件描述符。
2023-05-22 10:49:58 75
原创 c语言可变参数函数与c++可变参数函数模板
其中令人有些难以理解的就是va_arg()函数,可以看出,它的调用和i无关,只和数组类型有关,且每调用一次,自动寻到下一个该类型变量。但是,我们还是要学习可变参数函数来模仿函数重载,如果要加入个数不定的参数时,可能在后面的代码中重载多个,造成没有必要的重复代码。我们知道,c语言是不支持函数重载的,而c++之所以++其中重载很重要,不光是函数形参造成的重载,还有运算符重载这样的强大功能。这是一个可变长的数组,他是c++11标准模板,具有迭代器,还有很多方法函数等,2+4+6+8值为: 20。
2023-05-12 16:41:50 274
原创 linux下git第一次使用记录
git 的原理不是很懂,但它涉及分布式系统和远程连接技术,很多教程可能由于和自己需求不一致导致上传不上去。复制里面的密钥,在GitHub上点击个人头像,settings 有个ssh密钥,填进去。另外初始化一个本地仓库和配置名称,修改部分文件,添加tags版本之后再写。git commit -m "的施工图回复的噶 "首先我的电脑上本来就有git的,我还是装了一遍。push到远程GitHub仓库中,推荐ssh链接。注册自己的GitHub账号密码。cd到克隆的文件夹中。cd到自己的工作目录。
2023-04-26 17:27:39 105
原创 c++智能指针实现
已知面试官常问c++大型程序内存泄露怎么办,同学们通常会回答使用智能指针,智能指针可以避免使用new来初始化对象带来的delete问题,智能指针的实现思路是raii思想。unique_ptr传入函数作为参数时无法通过值传递,但可以通过引用传递,另外,可以通过get方法获得裸指针传入,也可以使用move语义将智能指针交给函数管理。共享指针即一个对象可以由多个指针托管,当所有托管指针都不再托管该对象时,对象才会被析构,共享指针可以通过。与unique_ptr不同的是,shared_ptr有。
2023-04-26 17:05:00 355
原创 C++实用小技巧
因为在写一个类的时候,如果不显式编写构造函数,编译器会为你编写默认构造函数和拷贝构造函数,还有一个默认析构函数,单例模式不仅要将默认构造函数私有化,还要将拷贝构造函数和重载操作符进行私有化。有时候复杂类型,特别是带指针的类型,是很复杂的,通常可以用auto来自动推导,但是我们想知道它的类型,有的编辑器会提示类型,当然这时候我们可以用。在单例模式下,只有一个例子,我们不希望有构造函数进行拷贝,所以需要将拷贝构造函数和重载运算符=显式地写出来并且声明为私有的private.来获取,它需要包含头文件。
2023-04-24 17:21:57 97
原创 c++编程-设计模式
有且只有一个原因使类发生变化,也就是说如果你的类设计得过于复杂,类里面有好几个相互调用的函数,好几个成员变量,但是我现在类从人变成了狗,本来大家都会呼吸睡觉,但是腿数量不一样,也不会说话,还有尾巴,需要变化的地方太多了。但与此同时,我们需要一个public的static静态函数方法,它的功能是创建这个实例类,如果已经存在了直接返回这个类对象,需要注意的是有时候我们需要解决线程同步问题,可以采用两次判断和互斥锁解决。原则是最重要的,相当于思想,怎么样的设计模式都要参考这几个原则。一,设计模式的六大原则。
2023-04-24 17:21:45 60
原创 力扣刷题小技巧记录
数组1长度m+n,其中前m个数是有序排列的,数组2长度为n,有序排列,如何将数组2添加到数组1并有序,很容易想到的算法是数组2放到1中,并sort一下,但这没有利用有序这个条件,可以逆向双指针。双指针从两数组末尾出发,将比较大的数替换到数组1的末尾,若是数组1指针为-1就填数组2的值就行,反之数组2指针为-1就填数组1的值即可。借助了栈的数据结构,通过如果是数字就入栈,如果是运算符就拿出两个数进行运算并将结果再次入栈的思想,标准答案使用了。isNumber函数。
2023-04-24 17:21:27 71
原创 网络编程-网络协议tcp-ip-http
还有的ip地址写为192.168.100.1/24代表子网掩码有24个1,即B类网络。端口绑定指定应用程序,0~1024是知名端口号,如80是万维网端口号,21是FTP。
2023-03-27 11:19:50 46
原创 网络编程-线程同步技术
线程A访问共享资源步骤:A对共享资源上锁-A访问共享资源-A释放锁;此时共享资源没有被上锁,才能由其他线程进行访问,在A访问期间,其他线程将被阻塞直到A释放锁。
2023-03-20 16:33:48 97
原创 网络编程-多线程基础
各个线程会占据栈空间的一部分,也会占据代码段的一部分,而其余虚拟地址空间对各个线程来说是共享的。现在 的线程实现是NPTL的,命令查看当前线程库版本。
2023-03-20 11:05:09 64
原创 标准c库IO函数与Linux基础
文件描述符在内核区进程管理中,有一个文件描述符数组用来存储,0,1,2分别是标准输入,标准输出和标准错误,他们指向的是当前终端,文件描述符数组最大长度是1024。mode 无符号8进制数表示该新增文件的权限,最高为0777,因为rwx二进制最大为7,而有用户权限,组权限和其他组对该文件的权限,其中x是可执行的意思。虚拟地址空间由两部分构成,内核区和用户区,内核区有进程管理,内存管理,,堆空间,未初始化全局变量区,初始化全局变量区,二进制代码段,
2023-03-15 15:29:46 109
原创 Windows上TensorRT部署记录入门
有人下载安装软件后运行不起来,就是没有添加环境变量,有人可能会不理解,简单解释一下,软件运行其实就是代码运行,而代码是高级语言编写的,它需要经历预编译阶段展开头文件声明,去掉注释代码,替换宏定义,内联函数替换等操作,然后经历汇编代码,再经历机器代码即二进制代码,最后好几个二进制代码文件加上。我们要配置自己的项目属性文件,将需要的CUDA和cudnn信息加进去,生成.vcxproj文件,下次项目我们也可以添加这个属性文件,一劳永逸。如图,日期左侧是下载,右侧是官方安装教程,找到自己合适的版本下载安装即可。
2023-03-14 22:50:09 1237 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人