- 博客(987)
- 资源 (11)
- 收藏
- 关注
转载 QT的信号和槽机制(Signal & Slot)
与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。信号和槽是完成任意两个Qt对象之间的通讯机制,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出特征。需要关联的信号和槽的签名都是等同的,即信号的参数类型与参数个数与接收该信号的槽的参数类型与参数个数相同。Qt的信号与槽的机制,引入了一些关键字slots、signals、emit,这些都是Qt特有的关键字,这些关键字会被Qt的moc转换为标准的C++语句。断开对象发送器中的信号与对象接收器中的方法的连接。
2023-02-10 16:54:53
107
转载 Qt信号和槽机制详解
例如,“按钮被按下”这个信号可以用 clicked() 函数表示,“窗口关闭”这个槽可以用 close() 函数表示,信号和槽机制实现“点击按钮会关闭窗口”的功能,其实就是 clicked() 函数调用 close() 函数的效果。信号的接收者是 widget 主窗口对象,“窗口关闭”作为信号对应的槽,可以用 QWidget 类提供的 close() 函数表示。实际开发中,可以使用 Qt 提供的信号函数和槽函数,也可以根据需要自定义信号函数和槽函数,我们会在《Qt自定义信号和槽函数》一节做详细介绍。
2023-02-10 16:48:49
56
转载 宝塔面板Nginx通过伪静态来实现禁止部分目录执行php脚本
如启用面板修复以后 记得重新执行一次修改 网站伪静态规则示例。调换红框里面的内容顺序 改完以后先保存再重启一下宝塔面板。进入/www/server/panel/class/目录。查找include enable-php。找到panelSite.py点编辑。ps:如果还没有效果,考虑这个顺序。登陆宝塔面板点左侧菜单【文件】调换红框里面的内容顺序。
2022-09-30 11:00:21
440
转载 int(1)和int(10)的区别
int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。作者:假装懂编程链接:https://juejin.cn/post/6992574502282477605来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2022-09-20 13:21:10
68
转载 Qt工程的目录结构
工程文件比较少时不会影响使用,但是当文件多起来,工程就变的难以管理,这个时候,再去整理文件就变得麻烦。当前我使用的Qt版本是5.6,查了一下资料,发现最新版本在创建或者添加文件时,都会自动对文件进行分类,显示Sources和Headers目录下。pri文件的作用,这里是将pro文件的一部分放入每个路径下的pri文件,分别管理,最后在将pri文件包含到pro中即可。注意,pri文件的文件名就是Qt工程显示的子目录名,而不是实际手动创建的子目录,这里建议将pri的文件名和子目录名保持一致。...
2022-08-16 15:03:00
997
转载 &#x开头的是什么编码?
你好」二字分别是Unicode字符U+4F60和U+597D,十六进制表示的codepoint数值「4F60」和「597D」,同时也就是十进制的「20320」和「22909」。解析网页时,输出的中文内容都是以&#x开头的一堆像乱码一样的东西,尝试过各种编码都无效,而且神奇的是,将这一堆“乱码”保存成网页后,通过浏览器打开又可以正常显示。//有x则表示是16进制,$1就是匹配是否有x,$2就是匹配出的第二个括号捕获到的内容,将$2以对应进制表示转换。都会显示为“你好”。...
2022-07-29 09:11:26
1735
翻译 LNK2019无法解析的外部符号 __imp_xxxxx函数
创建基本 Winsock 应用程序创建一个新的空项目。将一个空的 C++ 源文件添加到项目中。确保构建环境引用 Microsoft Windows 软件开发工具包 (SDK) 或更早版本的平台软件开发工具包 (SDK) 的 Include、Lib 和 Src 目录。确保构建环境链接到 Winsock 库文件 Ws2_32.lib。使用 Winsock 的应用程序必须与 Ws2_32.lib 库文件链接。#pragma 注释向链接器指示需要Ws2_32.lib文件。开始编写 Winsock 应用程序。通过包含
2022-07-07 16:56:29
282
转载 使用inet_ntoa会报错
在Socket编程中,使用inet_ntoa会报错,如图 目前解决方法有以下几种,1、用inet_ntop函数替代inet_ntoa2、项目属性---配置---C/C++---预处理器----预处理器 ---加上“_WINSOCK_DEPRECATED_NO_WARNI”3、项目属性---配置---C/C++---预处理器----预处理器 ---加上“_CRT_SECURE_NO_WARNINGS”4、项目属性---配置---C/C++---常规---将SDL检查改为否这几种方法我都试过,没能解决我的问题。
2022-07-07 11:48:40
415
转载 双冒号作用运算符以及命名空间详解
转载地址:双冒号作用运算符以及命名空间详解,你确定不来看看吗?_敲键盘的喵的博客-CSDN博客一、双冒号作用域运算符通常情况下,如果程序中即存在局部变量又存在全局变量,局部变量将会获得较高的优先权,它将屏蔽全局变量,但双冒号作用域运算符可以解决局部变量和全局变量重名的问题,代码如下:打印结果如下可以看到,当我们在变量前面加入::时,全局变量将会获得较高优先权。二、c++命名空间(namespace)1.用途在程序中,名称(符号常量、变量、函数、结构、枚举、类和对象等等)可能会相互冲突
2022-07-04 15:34:25
244
转载 在 golang 中是如何对 epoll 进行封装的?
转载地址:在 golang 中是如何对 epoll 进行封装的? - 知乎在协程没有流行以前,传统的网络编程中,同步阻塞是性能低下的代名词,一次切换就得是 3 us 左右的 CPU 开销。各种基于 epoll 的异步非阻塞的模型虽然提高了性能,但是基于回调函数的编程方式却非常不符合人的的直线思维模式。开发出来的代码的也不那么容易被人理解。Golang 的出现,可以说是将协程编程模式推向了一个高潮。这种新的编程方式既兼顾了同步编程方式的简单易用,也在底层通过协程和 epoll 的配合避免了线程切换的性能高损耗
2022-06-28 11:35:38
245
转载 宏,函数和内联函数
宏,函数和内联函数宏和函数的区别:1,宏作的是简单的字符串的替换(不包括数据类型)。函数的参数传递是有数据类型的。2,宏的参数替换是不经过计算直接处理的。函数调用是将实参的值传给形参(需要先经过计算)3,宏的替换是在编译之前执行的,即用宏体代替宏名,然后再进行编译。函数的调用是在编译以后。所以:宏占用的是编译的时间,函数占用的是执行的时间。4,宏的参数是不占用内存空间的(仅仅是字符串的替换)函数调用的参数传递则是具体变量之间的信息传递,形参作为局部变量肯定是要占用内存的。5,宏的替换是不需要时空开销的。
2022-06-28 10:42:03
135
转载 C/C++:函数名前引用一个空的宏定义
在很多函数定义的地方都带有空的宏定义比如:#define NS_CLASS //NS_CLASS的声明,仅仅只是一个定义为空的宏int NS_CLASS timer_init(struct timer *t, timeout_func_t f, void *data)查询了相关资料后,应该是多平台之间不同的编译器有不同的编译选项,只是为了以后其它平台有需要添加的或扩展的编译时选项而预留的。例如在VC环境下进行回调函数的声明时,很多时候都会加上_stdcall、_cdecl、 _fastcall这三个在w
2022-06-28 10:30:22
554
原创 linux信号演示demo
linux信号演示demo对于信号:1、信号是linux异步处理进程的一种方式,不能传参,只能接受一定的信号事件2、每个信号都有自己的默认行为比如SIGTERM可以接收kill发送的信号3、可以选择忽略(信号被丢弃,不影响应用进程)4、信号可以被阻塞(可以理解信号被延迟送达或者延迟接收)5、可以选择设置中断函数(先去执行中断函数,中断函数执行结束再回到程序挂起点继续执行)6、可以通过信号的方式进行一些程序收尾工作比如结束进程之前释放一些资源,(应该也可以实现进程的平滑重启,比如可以通过一个进程
2022-06-21 15:24:00
76
转载 如果这篇文章说不清epoll的本质,那就过来掐死我吧!
下图是一个典型的计算机结构图,计算机由CPU、存储器(内存)、网络接口等部件组成。了解epoll本质的第一步,要从硬件的角度看计算机怎样接收网络数据。计算机结构图(图片来源:linux内核完全注释之微型计算机组成结构)下图展示了网卡接收数据的过程。在①阶段,网卡收到网线传来的数据;经过②阶段的硬件电路的传输;最终将数据写入到内存中的某个地址上(③阶段)。这个过程涉及到DMA传输、IO通路选择等硬件有关的知识,但我们只需知道:网卡会把接收到的数据写入内存。网卡接收数据的过程通过硬件传输,网卡接收的数据存放到内
2022-06-20 14:13:37
73
转载 使用golang的`http.Client`容易出现TIME_WAIT上涨的几种情况和解决方案
在go语言开发中,使用包的时我们容易遇到连接数过多的情况,本文列出这几种情况并提出解决方案。本文代码基于go1.13.17,但是TIME_WAIT连接数过多的情况在多个go版本中都存在在linux下运行下面的代码:在程序运行时另外开一个终端运行下面的命令:你会看到TIME_WAIT数量在持续增长解决办法: 读取响应的body更改函数,添加下面的代码:现在再次运行,你会发现TIME_WAIT状态的连接数为0这种情况时由于持续超过连接池导致许多短链接被打开。请看下面的代码:在
2022-06-18 10:55:59
914
转载 time_wait状态产生的原因,危害,如何避免
请说说你对TCP连接中time_wait状态的理解先上TCP的状态变迁图这幅图来自《TCP IP详解卷1:协议 原书第2版中文》13.5 TCP状态转换图这幅图来自《UNIX网络编程,卷1:套接字联网API》2.6.4 TCP状态转换图1. time_wait状态如何产生? 由上面的变迁图,首先调用close()发起主动关闭的一方,在发送最后一个ACK之后会进入time_wait的状态,也就说该发送方会保持2MSL时间之后才会回到初始状态。MSL值得是数据包在网络中的最大生存时间。产生这种结果使得这个TC
2022-06-18 10:22:35
707
转载 多线程/多进程/select 多路复用的区别
文章目录一、多进程二、多线程三、多路复用一、多进程最简单的并行处理方式,父进程接收用户的连接请求,使用fork、exec等创建子进程去处理用户请求多进程优点:编程简单,易于理解每个进程地址空间相互隔离,彼此不相影响,一个进程的损坏不会影响另一个进程充分利用多核资源多进程缺点:进程相互隔离,彼此之间的通信较为困难频繁创建销毁进程会加重系统负担二、多线程线程寄居于进程之中,在进程里创建,每个线程都共享这个进程的地址空间,线程之间的通信只需要读取内存就可以了多线程优点: 线程间的通信不需
2022-06-17 16:31:35
167
原创 多线程/多进程/select 多路复用的区别
#####一、 多线程多进程1、多进程可以有主进程来fork出来,可以继承主进程的文件描述符、坚挺的端口等比如socket 可以每个请求分发给具体的子线程来处理业务逻辑每个子线程accept进行阻塞监听2、多线程可以通过线程form出来,内存占用等比多进程要好,原理与多进程差不多1、select 会发生阻塞 监听所有的socketfd,若有有事件发生比如连接、数据、断开等会返回具体的socketFd,进而可以对对应的socket进行操作(读写、添加fd、移除fd等)..................
2022-06-17 15:40:07
291
转载 accept 与 epoll 惊群
首先,我们看看维基百科对惊群的定义:简而言之,惊群现象(thundering herd)就是当多个进程和线程在同时阻塞等待同一个事件时,如果这个事件发生,会唤醒所有的进程,但最终只可能有一个进程/线程对该事件进行处理,其他进程/线程会在失败后重新休眠,这种性能浪费就是惊群。考虑如下场景:主进程创建 socket、bind、 listen 之后,fork 出多个子进程,每个子进程都开始循环处理(accept)这个 socket。每个进程都阻塞在 accpet 上,当一个新的连接到来时,所有的进程都会被唤醒,但
2022-06-17 10:33:34
238
原创 关于socket的一点理解
1、socket底层是tcp/ip协议,是可靠的通信,但是需要处理所谓粘包的问题,可以传递ascii字符串类型或者二进制流2、socket bind端口之后fork的子进程可以复用主进程的端口(主进程的资源fd等被复制了一份)可以解释有时候netstat -anp | grep 9001 一个端口,能看到下面一堆time_wait子进程(一般是240s,会被系统回收,这个可以修改)3、使用socket某些语言需要进行网络字节序(大端字节序)与本地计算机的字节序(大端可字节序/小端字节序)进行一个转换..
2022-06-17 09:24:02
67
转载 golang进阶知识之内存对齐
转子地址:golang进阶知识之内存对齐 - 知乎我们先看来下下面的代码:对于上面定义的这两个结构体,都有a、b、c三个定义完全一样的字段,只是在定义结构体的时候字段顺序不一样而已,那么两种写法有什么影响吗?对于不了解golang内部结构的同学来说,感觉着没有什么区别的,只是一个书写顺序不同而已,但对于go编译器来说,则有着很大的区别,特别是在不同架构上(32位/64位)的编译器,在一定程度上对内存的使用大小和执行效率有着一定的不同。这里就引出了golang语言中一个重要的概念:内存对齐(alignm
2022-06-15 16:33:49
270
1
转载 (C语言内存五)C语言内存对齐,提高寻址效率
计算机内存是以字节(Byte)为单位划分的,理论上CPU可以访问任意编号的字节,但实际情况并非如此。CPU 通过地址总线来访问内存,一次能处理几个字节的数据,就命令地址总线读取几个字节的数据。32 位的 CPU 一次可以处理4个字节的数据,那么每次就从内存读取4个字节的数据;少了浪费主频,多了没有用。64位的处理器也是这个道理,每次读取8个字节。以32位的CPU为例,实际寻址的步长为4个字节,也就是只对编号为 4 的倍数的内存寻址,例如 0、4、8、12、1000 等,而不会对编号为 1、3、11、1001
2022-06-15 15:01:47
254
转载 利用systemd部署golang项目的实现方法
简介- CentOS 7 继承了 RHEL 7 的新的特性,例如强大的 systemd, 而 systemd 的使用也使得以往系统服务的 /etc/init.d 的启动脚本的方式就此改变, 也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,同时变的简单而易用了许多。- CentOS 7 的服务 systemctl 脚本存放在:/usr/lib/systemd/,有系统 system 和用户 user 之分, 即:/usr/lib/systemd/system 和 /usr/lib/sys
2022-06-15 10:08:02
401
转载 理解字节序 大端字节序和小端字节序
以下内容参考了http://www.ruanyifeng.com/blog/2016/11/byte-order.htmlhttps://blog.csdn.net/yishengzhiai005/article/details/396725291.计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。举例来说,数值使用两个字节储存:高位字节是,低位字节是。正在上传…重新上传取消同理,的大端字节序和小端字节序的写法如下图。正在上传…重新上传取消2.我一
2022-06-14 15:59:35
112
转载 大小端字节序详解
目录引文大小端介绍(1)什么是大端小端(2)为什么有大端和小端(3)笔试题讲解引文 在开始正文之前,我想先问一下大家,内存中是怎样存放一个数的?当然啊,我这里问的不是数据存储的形式(比如整数存原码,负数存补码),而是一个数据存放的顺序 我们先看下面这个例子,当我们看看当把十六进制函数0x11223344存进内存中会是怎么样的。 我们看这个数低位44,高位33,再高位22,再高位11(注意44 、33、22、11各占一个字节,44地址0x0078F20,33地址...21,22地址...22,
2022-06-13 17:54:59
1097
转载 Go 最细节篇|pprof 统计的内存总是偏小?
转载地址:Go 最细节篇|pprof 统计的内存总是偏小?Go 的内存泄漏内存泄漏通常在 c/c++ 等语言常见,手工管理内存对程序猿的编程能力有较高要求。最常见的就是分配和释放没有配对使用。Go 是一门带 Gc 的语言,内存分配位置由编译器推断是在栈还是堆上,内存分配完全由 Go 本身把控,程序猿无法介入。程序猿在前端触发分配,后端的 runtime 的 GC 任务则不断的回收内存,从而达到一个平衡。理论上是不存在常规意义的内存泄漏的。但在程序中,还是经常见到内存占用持续升高的场景,今天.
2022-05-28 08:56:07
133
golang图片爬虫源码
2020-11-23
胖达图片采集器v0.1.exe
2020-10-15
2018汽车之家汽车品牌车型数据新鲜出炉
2018-06-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人