Qt之重写QTreeWidget节点排序 bool MyTreeWidgetItem::operator<(const QTreeWidgetItem& other) const{ QRegExp ax("\\d+$"); QRegExp bx("\\d+$"); int column = treeWidget()->sortColumn(); QString str1 = text(column); QString str2 = other.text(column); ax.indexIn(str1, 0)
Qt之重写QTreeWidget节点排序 bool MyTreeWidgetItem::operator<(const QTreeWidgetItem& other) const{ QRegExp ax("\\d+$"); QRegExp bx("\\d+$"); int column = treeWidget()->sortColumn(); QString str1 = text(column); QString str2 = other.text(column); ax.indexIn(str1, 0)
Qt之QTableWidget遍历 for(int row=0; row<ui->tableWidget->rowCount(); row++){ for(int col=0; col<ui->tableWidget->columnCount(); col++) { QTableWidgetItem* item = ui->tableWidget_right->item(row,col); }}for(int row=0; row<ui->tableWidget-&
构造,析构,拷贝,赋值 已知String类定义如下:写出类的成员函数class String{public: String(const char *str = NULL); // 通用构造函数 String(const String &another); // 拷贝构造函数 ~ String(); // 析构函数 String & operater =(const String &rhs); // 赋值函数private: char *m_data; };
2021-07-14 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
.线程池. 生产者与消费者模型:生产者:生产数据的线程消费者:使用、处理数据的线程缓冲区:隔离生产者和消费者,这样可以避免互相等待,提高运行效率。生产者快于消费者:缓冲区爆满消费者快于生产者:缓冲区一直空使用条件变量可以解决生产者与消费之间的效率不匹配问题。生产者快于消费者,通知消费者加速消费,生产者睡眠降低生产速度。消费者快于生产者,通知生产者加速生产,消费者睡眠降低消费速度。线程池总体流程线程池:一次性创建多个子线程,主线程(生产者)负责接收客户端的链接并创建socket对象然后加入到仓库中,
.多路复用. 多路复用:使用一个进程(且只有主线程)同监控若干个文件描述符的读写,这种读写模式叫多路复用。多用于TCP的服务端,用于监控客户端的连接和数据的收发优点:不需要频繁的创建进程、销毁进程,从而节约了内存资源、时间资源,也避免的进程之间的竞争、等待。缺点:单个客户端的任务不能太耗时,否则其它客户端就会感知到。适合并发量高,但任务短小的情景,如:Web服务器。select:fd_set 是文件描述符的集合,使用以下函数操作: void FD_ZERO(fd_set *set); 功能:
TCP/IP编程模型 一、基于TCP协议的C/S模型int listen(int sockfd, int backlog);功能:设置等待连接的最大数量sockfd:被监听的socket描述符backlog:等待连接的最大数量(排队的数量)int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);功能:等待连接sockfd连接addr:获取连接的地址addrlen:设置连接地址结构体的长度返回值:专门用于通信的描述符编程模型:Serv
网络编程基础socket 网络通信的基本概念1、TCP和UDP的区别TCP(Transmission Control Protocol):传输控制协议,面向连接的服务(类似打电话),安全、可靠(三次握手、响应+重传、四次挥手,拥塞控制),速度相对较慢,一般应用在对安全性、完整性有严格要求的场景:如文件传输(ftp)、SMTP、HTTP三次握手:A要知道,A能到B,B能到AB要也要知道,A能到B,B能到AA 你听得到吗 -> B(此时B知道了A能到B)(A能到B且B能到A)A <- 我能听到,
Qt设计方式 界面布局:在界面上直接设置控件的位置和大小可能会面临用户修改界面大小的问题,这样可能会导致界面布局混乱。1、绝对位置布局:限制窗口的大小,设置窗口的最大、最小高度和宽度,让用户无法修改界面的大小。minmumSize (w,h)maxmumSize (w,h)然后计算每个控件的大小和位置。2、相对位置布局:1、当窗口的大小发生变化,会自动调用它的resizeEvent函数,该函数是个虚函数。2、覆盖resizeEvent函数,当窗口大小发生变化时,根据当前窗口的大小,重新设置每个控件的位置
Linux线程同步 线程同步:当多个线程同时访问一个资源时,如果不进行协调可能会产生数据混乱、操作失效等现在,我们需要使用一些特殊的技术保障线程之间协同工作,这些技术叫线程同步技术。互斥量: pthread_mutex_t 也叫互斥锁 int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr); 功能:初始化互斥量 int pthread_mutex_lock(pthre
Linux线程管理 线程介绍: 线程就是进程中负责执行的部分,是进程内部的控制序列,它是轻量级的,没有自己独立的内存资源、代码段(txt)、 数据段(静态数据bss、全局数据段data)、堆区(heap)、环境变量、命令行参数、文件描述符、信号处理函数、当前工作目录。 线程拥有独立的栈内存,也就是它自己独立的局部变量。 一个进程中至少有一个线程,我们把它叫作主线程,也可以再创建多个线程。 注意:进程是个资源单位,而线程是个执行单例,线程是进程的一部分,进程中正是有了线程才能动起来。
Linux进程通信 进程间通信:基本概念:什么是进程间通信:是指两个或者多个进程之间交互数据的过程,因为进程之间是相互独立的,为了能够让多个进程协同工作必须交互数据进程间通信的分类:简单的进程间通信:信号、文件、环境变量、命令行参数传统的进程间通信:管道文件XSI进程间通信: 共享内存、消息队列、信号量网络进程间通信: Socket套接字传统进程间通信:管道是UNIX最古老的进程间通信方式,古老意味着所有系统都支持,早期的管道都是半双工,现在有些系统的管道是全双工(但是也要假定管道是半双工来实现)管道
Linux进程管理 进程基本概念:1、进程与程序程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行进程。一个程序被多次加载时生成多个进程进程就是处于活动状态的计算机程序2、进程的分类 进程一般分为三种类型:交互进程、批处理进程、守护进程 守护进程一般处于活跃状态,运行在后台,由系统在开机时通过启动脚本来自动创建3、查看进程 简单方式 ps 显示当前用户有控制终端的进程信息 列表方式 ps auxw 显示所有进程详细信息 a 所有用户的有控制终端的
Linux信号处理 信号处理基本概念:1、中断当程序接收信息后中止当前执行的程序,转而执行其它任务,等其它任务执行完成后再返回,这种执行模式叫中断,分为硬件中断和软件中断。2、信号是一种软件中断,由操作系统发出,程序接收到后会执行相应的操作3、常见的信号SIGINT(2) Ctrl+c 终止SIGQUIT(3) Ctrl+\ 终止+coreSIGFPE(8) 除0 终止+coreSIGKILL(9) 终止
Linux内存管理 一、内存管理用户层STL 自动分配/自动释放 调用C++C++ new/delete 调用CC malloc/free 调用POSIXPOSIX brk/sbrk 调用LinuxLinux mmap/munmap 调用内核kernal系统层kernal kmalloc/vmalloc 调用驱动driver get_free_page二、进程映像程序是存储在磁盘上的可执行文件
Linux文件管理 文件管理:一切皆文件:UNIX/Linux操作系统把设备和服务都抽象成了文件形式,并提供了一套简单而统一的接口,这部分接口就是文件IO(文件读写)也就是说UNIX/Linux系统中任何对象都可以当做某种特殊的文件,以文件的形式访问文件的分类: 普通文件 - 包括纯文本文件、二进制文件、压缩文件 目录文件 d 块设备文件 b 保存大块数据的设备,例如硬盘 字符设备文件 c 类似键盘、鼠标等 管道文件
Linux系统介绍 UNIX系统介绍:最早版本的UNIX诞生于1970年的贝尔实验室,作者丹尼斯.里奇和肯.汤普逊是最早的多用户、多任务、支持多种CPU处理器架构,高安全性、高可靠性、高稳定性的系统既能架构大型关键性的商用服务器,也能支持嵌入式设备Minix基于微内核架构的类UNIX操作系统,由此Linux之父林纳斯.托瓦兹受到了启发,才开发了第一个版本的LinuxLinux系统介绍:Linux,全称GNU/Linux,其内核由林纳斯·托瓦兹于1991年发布,是一个基于POSIX(可移植操作系统接口)的多用户、多
Qt版的贪吃蛇游戏 **开发环境:**Ubuntu12.04 Qt4.8项目概述: 用键盘上下左右控制蛇的方向,寻找食物,食物随机出现,蛇路过食物蛇的身体会变长,蛇不能碰墙壁及自己的身体,蛇不能相撞,两条蛇谁先达到一定的分数谁获得胜利**游戏说明:**程序运行后,单击鼠标左键开始游戏蛇一:方向键上下左右,蛇二WASD上下左右1.main.cpp#include <QtGui/QApplication>#include <QTextCodec>#include "widget.h"int