- 博客(55)
- 收藏
- 关注
原创 vs2019+qt5.14.2配置QT插件(qt-vsaddin)
采用VS2019安装配置Qt插件(qt-vsaddin-msvc2019-2.6.0.vsix),默认已经安装了VS2019(已安装“MSVC V141-VS 2017 C++ x64/x86 生成…”选项)和Qt5.14(已安装“msvc2017 32-bit”和“msvc2017 64-bit”选项)”选项,以支持VS2017的编译器,因为Qt5.14最高支持VS2017版本编译的Qt基础库。Qt Project Settings——>Qt Modules:设置项目要依赖的Qt模块。
2024-04-08 11:51:47
886
原创 QT入门介绍
下载地址:https://download.qt.io/new_archive/qt/5.8/5.8.0/QT资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。然后在widget.ui里面加一个按钮组件,设置:点击按钮可以控制进度条到一半的位置。创建类的基类: 带菜单栏的窗口、空白窗口、对话框窗口。重复性使用的窗口或者窗口中的模块,封装成自定义控件。17、布局、登录页面切主页面、主页面返回登录页面。4、信号与槽、自定义信号和槽、信号连接信号。
2024-03-05 09:35:01
973
原创 QT事件介绍
事件派发—事件过滤器—事件分发—事件处理阶段。新建MyLabel类继承QLabel。3、鼠标按下、释放、移动事件。举例:监听Tab按键按下事件。1、窗口关闭二次确认。4、重写事件分发函数。
2024-03-05 09:26:29
467
原创 go 使用反射来遍历结构体的字段,调用结构体的方法,并获取结构体标签的值
【代码】go 使用反射来遍历结构体的字段,调用结构体的方法,并获取结构体标签的值。
2024-01-24 15:05:44
501
原创 TCP网络编程
1、面向连接的流式协议,可靠,出错重传,且每收到一个数据都要给出相应的确认2、通信之前需要建立链接3、服务器被动链接,客户端是主动链接TCP与UDP差异TCP和UDP流程对比图。
2023-08-14 20:33:53
92
原创 udp编程-TFTP、广播、多播
TFTP简单文件传送协议最初用于引导无盘系统,被设计用来传输小文件特点1、基于UDP协议实现2、不进行用户有效性认证数据传输模式1、octet:二进制模式2、netascii:文本模式3、mail:已经不再支持TFTP通信过程总结多播:数据的收发仅仅在同一分组中进行多播的特点1、多播地址标示一组接口2、多播可以用于广域网使用3、在IPv4中,多播是可选的比起广播,多播具有可控性只有加入多播组的接收者才可以接收到数据,否则接收不到。
2023-08-11 16:55:09
248
原创 TCP/UDP 网络编程
3、类似对文件的操作一样,可以使用read、write、close等函数对socket套接字进行网络数据的收取和发送等操作。人为识别的ip地址是点分十进制的字符串形式,但是计算机或者网络中识别的ip地址是整型数据,所以需要转化。2、创建的套接字默认属性是主动的,即主动发起服务的请求;3、SOCK_RAW,原始套接字,对于其他层次的协议操作时需要使用这个类型。3、运行在同一台计算机上的进程相互通信时,一般不用考虑字节序。4、异构计算机之间通讯,需要转换自己的字节序为网络字节序。
2023-08-11 10:11:03
110
原创 进程间通信2-消息队列、共享内存、线程、互斥锁、信号量
3、若是detached状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放,使用pthread_detach函数将线程设置为分离态。1、与fork不同的是pthread_create创建的线程不与父线程在同一点开始运行,而是从指定的函数开始运行,该函数运行完后,该线程也就退出了。和进程的退出清理一样,线程也可以注册它退出时要调用的函数,这样的函数称为线程清理处理程序(threadcleanup handler)在Linux系统下,线程默认可以被取消。
2023-08-09 16:38:45
500
原创 进程间通信、文件描述符
2、如果是非阻塞,read函数运行时,会先看一下管道中是否有数据,如果有数据,则正常运行读取数据,如果管道中没有数据,read函数会立即返回,继续下面的代码运行。利用无名管道实现进程间的通信,都是父进程创建无名管道,然后再创建子进程,子进程继承父进程的无名管道的文件描述符,然后父子进程通过读写无名管道实现通信。2、所谓阻塞并不是禁止传送信号,而是暂缓信号的传送。- 如果一个进程只读,一个进程只写,都运行后,如果关闭读端,写端会立即产生SIGPIPE信号,默认的处理方式是退出进程。
2023-08-07 21:11:48
103
原创 进程的创建
2、调用exec函数的进程并不创建新的进程,故调用exec前后,进程的进程号并不会改变,其执行的程序完全由新的程序替换,而新程序则从其main函数开始执行。3、一个进程调用exec后,除了进程ID,进程还保留了这些特征不变:父进程号、进程组号、控制终端、根目录、当前工作目录、进程信号屏蔽集、未处理信号等等。在子进程中调用exec或exit之前,它在父进程的地址空间中运行,在exec之后子进程会有自己的进程空间。vfork保证子进程先运行,在它调用exec或exit之后,父进程才可能被调度运行。
2023-08-03 18:53:07
119
原创 c++[函数模板、类模板]
函数模板:参数的类型不具体指定,用通用类型替代。在调用时,编译器会根据实参的类型推导出形参的类型。c++模板:类型参数化。类模板成员函数类内实现。类模板成员函数类外实现。
2023-07-27 19:41:00
43
原创 c++继承、多态
如果子类重写了虚函数,那么子类就不是抽象类。1、子类对象在创建时会首先调用父类的构造函数,父类构造函数执行完毕后,才会调用子类的构造函数。2、当父类构造函数有参数时,需要在子类初始化列表(参数列表)中显示调用父类构造函数。3、子类必须重写虚函数(函数的返回值、函数名、参数一致,函数内容[函数体]不一致)如果子类有成员和父类同名,子类访问其成员默认访问子类的成员(本作用域,就近原则)纯虚函数:将虚函数等于0,实质是将虚函数表的函数入口地址置为NULL。当子类成员和父类成员同名时,子类依然从父类继承同名成员。
2023-07-27 11:53:57
39
原创 c++友元、运算符重载、智能指针
运算符重载1、=、[]、()和->操作符,只能通过成员函数进行重载2、<<和>>只能通过全局函数配合友元函数进行重载3、不要重载&&和||,因为无法实现短路规则。
2023-07-26 16:13:42
46
原创 c++类的静态成员变量、静态成员函数、const修饰的静态成员变量、静态成员实现单例模式、this指针的应用
2、const修饰的成员函数,不能通过this指针修改this指针指向的对象内容。1、const修饰的静态成员变量,保存在常量区,只读的,在内存中只有一份。4、将静态的成员指针变量私有化,提供获得唯一对象的地址的静态接口。3、定义一个静态的成员指针变量,指向new出来的一个唯一对象。2、const修饰的静态成员变量可以在类内定义且初始化。3、const修饰的静态成员变量可以通过类的作用域访问。5、静态成员函数可以访问const修饰的静态成员变量。4、const修饰的静态成员变量可以通过对象访问。
2023-07-25 21:13:37
234
原创 c++构造和析构、new/delete
4、用户在使用对象之前,必须记住对它初始化。构造函数不能显示调用初始化(构造函数是由编译器调用),用户有可能忘记调用初始化函数。2、malloc返回一个void指针,c++不允许将void赋值给其他任何指针,必须强转。3、malloc可能申请内存失败,所以必须判断返回值来确保内存分配成功。创建对象和释放对象时,构造函数和析构函数自动调用,不需要人为调用。c的动态内存分配函数太复杂,容易令人混淆,是不可能接受的。1、程序员必须确定对象的长度。类对象作为另外一个类的成员。构造函数的分类及调用。
2023-07-25 16:02:58
127
原创 c++引用、内联函数、externC、struct结构体
2、在c++里面,预处理器不允许访问类的成员,也就是说预处理器宏不能用作类的成员函数。内联函数就是继承了宏函数的高效,并且不会出错,还可以当成类的成员函数用。1、宏看起来像是一个函数调用,会有隐藏的一些难以发现的错误。宏函数的替换是发生在预处理阶段。内联函数的替换是发生在编译阶段。宏函数容易出错,内联函数不会。
2023-07-24 11:56:12
102
原创 C++对C的扩展(冒号作用域、命名空间、const的区别)
3、const 修饰的变量为自定义变量 ( struct ) 时,保存在栈区。2、c++中const修饰的局部变量a,被赋值变量b时,局部变量a存在栈区。::运算符是一个作用域,如果::前面什么都没有加,代表是全局作用域。1、c++中const修饰的局部变量赋值为常量时,存在符号表中。命名空间下可以存放:变量 函数 结构体 类。c++里面const。
2023-07-21 17:30:16
70
原创 编译器gcc、make、makefile
1.预处理 展开头文件 比如 /usr/include/stdio.h。gcc hello.c 默认生成的是a.out。运行程序: ./hello。
2023-07-20 18:40:22
53
原创 C语言-链表(操作:增、删、改、查)
链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构。链表的操作:增、删、改、查。
2023-07-19 19:24:13
1054
原创 C-结构体
构造类型:不是基本类型的数据结构也不是指针,它是若干个相同或不同类型的数据构成的集合常用的构造类型有数组、结构体、共用体数组用于保存多个相同类型的数据结构体常用于保存多个不同类型的数据# include <stdio.h> // 注意:一般结构体类型都会定义在全局,也就是main函数的外面 // 所以在定义结构体类型的同时定义变量,这些变量一般都是全局变量 // 定义完类型之后定义的结构体变量,内存分配要看定义的位置在哪儿 struct stu {int num;char sex;
2023-07-18 20:30:39
132
原创 C语言基础(malloc、free、calloc、realloc;内存泄露;字符串处理函数;const)
申请的内存,首地址丢了,找不到了,再也没法使用了,也没法释放了,这块内存就被泄露了。字符串匹配函数 使用strstr函数在一个字符串中查找另一个字符串。查找字符在字符串中的位置 查不到返回NULL。使用atoi将数字型字符串转化为整形数据。修饰普通变量 代表只读的意思。malloc 申请内存。比较字符串内容是否一致。
2023-07-18 14:18:23
120
原创 c-数组指针
将二维数组的首地址传递到另一个函数里面,此时函数的形参就需要定义为数组指针。二维数组的数组名降级问题。二维数组 – 数组指针。一维数组 – 数组指针。
2023-07-14 18:45:16
39
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人