11 2017 档案

摘要:总结: 1、ACK包可以和其他包合在一起,比如ACK包可以携带数据 2、可以接收多个数据包后,一次性给一个应答,不用每个数据包一一对应给应答 3、在通信过程中,通过接收到的包的ack值可以判断是否是上一个本机发送包的应答包(ack值与上一个本机发送包的seq有关),seq值和ack值的确定规则如下: 阅读全文
posted @ 2017-11-27 20:02 流水灯 阅读(10514) 评论(5) 推荐(1) 编辑
摘要:Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节 发了一个包,很久没有收到应答后,会重发包,在Wireshark抓包工具提示“[TCP Retransmission]” 阅读全文
posted @ 2017-11-27 11:40 流水灯 阅读(300) 评论(0) 推荐(0) 编辑
摘要:struct sockaddr 和 struct sockaddr_in 这两个结构体用来处理网络通信的地址。 注释中标明了属性的含义及其字节大小,这两个结构体一样大,都是16个字节,而且都有family属性,不同的是: sockaddr用其余14个字节来表示sa_data,而sockaddr_in 阅读全文
posted @ 2017-11-26 16:10 流水灯 阅读(1070) 评论(0) 推荐(0) 编辑
摘要:大端编码(big-endian)、小端编码(little-endian) 低位数据存放在高位地址为大端编码 低位数据存放在低位地址为小端编码 为什么会有大小端模式之分 因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外 阅读全文
posted @ 2017-11-26 14:08 流水灯 阅读(1396) 评论(0) 推荐(0) 编辑
摘要:#undef 是在后面取消以前定义的宏定义 该指令的形式为 #undef 标识符 其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。 一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。 阅读全文
posted @ 2017-11-26 13:18 流水灯 阅读(2738) 评论(0) 推荐(0) 编辑
摘要:keep-alive和close这个要从TCP握手讲起HTTP请求是基于TCP连接的,TCP的请求会包含(三次握手,中间请求,四次挥手)在HTTP/1.0时代,一个HTTP请求就要三次握手和四次挥手,当一个网页中包含大量的图片或者其它外部资源时,加载一个Document要很多个HTTP请求,也就意味 阅读全文
posted @ 2017-11-22 16:06 流水灯 阅读(4365) 评论(0) 推荐(1) 编辑
摘要:Wi-Fi Direct技术是Wi-Fi产业链向蓝牙技术发起的挑战,它试图完全取代蓝牙 Wi-Fi Direct是一种点对点连接技术,它可以在两台station之间直接建立tcp/ip链接,并不需要AP的参与;其中一台station会起到传统意义上的AP的作用,称为Group Owner(GO),另 阅读全文
posted @ 2017-11-22 10:39 流水灯 阅读(8070) 评论(0) 推荐(0) 编辑
摘要:void setWindowOpacity(qreal level); //设置所有控件的不透明度 setAttribute(Qt::WA_TranslucentBackground); //不知道怎么用才有效果 设置完全透明,如果设置了背景色,此设置无效 阅读全文
posted @ 2017-11-21 16:17 流水灯 阅读(1127) 评论(0) 推荐(0) 编辑
摘要:1、作用域不同 不用new:作用域限制在定义类对象的方法中,当方法结束时,类对象也被系统释放了,(安全不会造成内存系统泄漏)。 用new:创建的是指向类对象的指针,作用域变成了全局,当程序结束时,必须用delete删除,系统不会自动释放,(不注意可能造成内存泄漏)。 2、不用new的是一个类对象,用 阅读全文
posted @ 2017-11-18 13:27 流水灯 阅读(1643) 评论(0) 推荐(0) 编辑
摘要:背景 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,将详细分析C/C++ Volatile关键词的功能 (有多种功能)、Volatile关键词在多线程编程中存 阅读全文
posted @ 2017-11-17 16:51 流水灯 阅读(43319) 评论(3) 推荐(14) 编辑
摘要:基础知识掌握: 单例考虑三点:内存何时释放、运行速度如何、多线程下能否保证只有一个实例 如果获取对象的返回值类型是引用,返回值赋值给变量而不是引用会进行对象的拷贝,这样就会出现两个对象,可以把显示声明拷贝构造函数(包括 = 操作符)为private,这样就不会进行对象的拷贝 如果获取对象的返回值是指 阅读全文
posted @ 2017-11-16 20:05 流水灯 阅读(696) 评论(0) 推荐(0) 编辑
摘要:C++中,static变量不属于某个对象,所以要使用static变量,除了要在类的头文件对static变量进行声明,要还在源文件中进行定义,如果没有定义意味着没有分配内存空间,在源文件中可以不初始化 阅读全文
posted @ 2017-11-16 19:23 流水灯 阅读(189) 评论(0) 推荐(0) 编辑
摘要:一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单例子。 运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象 B 分配了内存并完成了与对象 A 的复 阅读全文
posted @ 2017-11-16 18:42 流水灯 阅读(347) 评论(0) 推荐(0) 编辑
摘要:一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; 【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名 说明: (1)&在此不是求地址运算,而是起标识作用。 (2)类型标识 阅读全文
posted @ 2017-11-16 15:18 流水灯 阅读(271) 评论(0) 推荐(0) 编辑
摘要:atomic原子操作:是在新标准C++11,引入了原子操作的概念,并通过这个新的头文件提供了多种原子操作数据类型,例如,atomic_bool,atomic_int等等 测试程序 测试结果 总结 由上面的测试结果可以看得出来 1.在不使用互斥锁和原子量的时候,多线程的操作会使结果是错误的. 2.原子 阅读全文
posted @ 2017-11-16 10:51 流水灯 阅读(4282) 评论(0) 推荐(0) 编辑
摘要:QMetaObject::Connection dis; dis = connect(this,&TcpSocket::readyRead,this,&TcpSocket::readData); disconnect(dis); 阅读全文
posted @ 2017-11-15 17:58 流水灯 阅读(4426) 评论(0) 推荐(1) 编辑
摘要:1、基本概念 同步:同步函数一般指调用函数后,等到函数功能实现再返回,期间一直霸占的CPU,等待期间同一个线程无法执行其他函数 异步:异步函数指调用函数后,不管函数功能是否实现,立马返回;通过回调函数等告知函数功能完成,比如中断和信号。 阻塞:调用某些函数阻塞是因为函数功能没有实现,主动放弃CPU, 阅读全文
posted @ 2017-11-15 10:34 流水灯 阅读(3844) 评论(0) 推荐(0) 编辑
摘要:1、事件循环一般用exec()函数开启。QApplicaion::exec()、QMessageBox::exec()都是事件循环。其中前者又被称为主事件循环。 事件循环首先是一个无限“循环”,程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会,直至程序从exec()跳出。 阅读全文
posted @ 2017-11-14 19:50 流水灯 阅读(6926) 评论(0) 推荐(0) 编辑
摘要:在介绍在以前,我们要认识两个术语: 可重入的(Reentrant):如果多个线程可以在同一时刻调用一个类的所有函数,并且保证每一次函数调用都引用一个唯一的数据,就称这个类是可重入的(Reentrant means that all the functions in the referenced cl 阅读全文
posted @ 2017-11-14 19:34 流水灯 阅读(1967) 评论(0) 推荐(0) 编辑
摘要:The QElapsedTimer class provides a fast way to calculate elapsed times. The QElapsedTimer class is usually used to quickly calculate how much time has 阅读全文
posted @ 2017-11-14 16:18 流水灯 阅读(1651) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2017-11-14 14:35 流水灯 阅读(3) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2017-11-14 14:27 流水灯 阅读(2) 评论(0) 推荐(0) 编辑
摘要:C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 2)一种类型表达式赋值给另一种类型的对象:目标类型是被赋值对 阅读全文
posted @ 2017-11-13 19:28 流水灯 阅读(253) 评论(0) 推荐(0) 编辑
摘要:在C++语言中,虚函数是非常重要的概念,虚函数是实现C++面向对象中多态性的基石。掌握虚函数才算是真正掌握C++语言,而C++语言中虚函数的继承覆盖与函数重载有些类似,很多初学者搞不清他们之间的关系。 首先要明确覆盖(override)与重载(overload)的定义,区别出什么是覆盖和重载: 覆盖 阅读全文
posted @ 2017-11-13 17:40 流水灯 阅读(6666) 评论(0) 推荐(1) 编辑
摘要:定义为虚函数是为了允许用基类的指针来调用子类的这个函数,即多态。虚函数是为了实现多态。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 虚函数 假设我们有下面的类层次: class A { public: 阅读全文
posted @ 2017-11-13 16:44 流水灯 阅读(233) 评论(0) 推荐(0) 编辑
摘要:首先要理解生存周期与作用域的区别: 生存周期: 变量从定义到销毁的时间范围。存放在全局数据区的变量的生存周期存在于整个程序运行期间,而存放在栈中的数据则随着函数等的作用域结束导致出栈而销毁,除了静态变量之外的局部变量都存放于栈中。 作用域: 变量的可见代码域(块作用域,函数作用域,类作用域,程序全局 阅读全文
posted @ 2017-11-13 15:09 流水灯 阅读(233) 评论(0) 推荐(0) 编辑
摘要:简介 在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent。Qt是以事件驱动UI工具集。Signals/Slots在多线程中的实现也是依赖于Qt的事件处理机制。 Qt事件处理机制 产生事件:输入设备,键盘鼠标等。keyPressEvent,keyReleaseEvent,mouse 阅读全文
posted @ 2017-11-13 14:48 流水灯 阅读(1619) 评论(0) 推荐(0) 编辑
摘要:#ifdef Q_OS_WIN // Windows上的代码 #endif #ifdef Q_OS_LINUX // Linux上的代码 #endif #ifdef Q_OS_MAC // Mac上的代码 #endif 阅读全文
posted @ 2017-11-13 14:09 流水灯 阅读(798) 评论(0) 推荐(0) 编辑
摘要:setSizePolicy 是设置控件在布局(layout)里面的大小变化的属性。如果控件没有在布局里,没什么用。 默认情况下,把 widget 放入 layout,widget 的大小一定程度上会随着 layout 变大而变大或者缩小而缩小;可以设置 widget 的 sizePolicy、min 阅读全文
posted @ 2017-11-11 14:59 流水灯 阅读(9814) 评论(0) 推荐(0) 编辑
摘要:在Qt中,当一个事件发生时(例如鼠标点击或某个键盘上的按键按下),其传递顺序如图所示。从这个图可以看出,事件过滤器首先获得事件,其次才是部件的 event 函数,最后是部件的事件处理函数 事件过滤器由QObject类中的两个函数来实现。 一个是 installEventFilter,它负责在相应部件 阅读全文
posted @ 2017-11-10 17:36 流水灯 阅读(9899) 评论(0) 推荐(1) 编辑
摘要:类型 + 特性,比如 button_closeLigth 非公有的变量前面要加上小写m_ (指的修饰符为private时) 静态变量前面加上小写s_ 其它变量以小写字母开头 静态变量全大写 (static final 静态常量) 阅读全文
posted @ 2017-11-10 16:22 流水灯 阅读(1155) 评论(0) 推荐(0) 编辑
摘要:QStringList QString::arg 字符串的格式化处理,类始于sprintf 比如:QString("%1").arg(10,2,16,QLatin1Char('0')) 把数字10用十六进制表示是a,占两个字符,不够用0补充,则返回的是“0a” QString::fromLocal8 阅读全文
posted @ 2017-11-08 20:12 流水灯 阅读(382) 评论(0) 推荐(0) 编辑
摘要:简介: 可用于完成启动外部程序,并与之交互通信。 启动一个进程的名字叫“program”,如果某进程的路径没有设置成环境变量,“program”需要包含路径 如果进程可以接收参数,参数叫“argument” 把“program”和“argument”和在一起叫“command” 部分方法说明: vo 阅读全文
posted @ 2017-11-08 10:28 流水灯 阅读(8076) 评论(0) 推荐(0) 编辑
摘要:QProcess:可以调用外部进程 netsh wlan show interfaces:可以查看连接哪个wifi netsh wlan show networks:显示所有可用的wifi netsh wlan delete profile name=”想要删除的WiFi连接名称” netsh wl 阅读全文
posted @ 2017-11-07 19:37 流水灯 阅读(4877) 评论(0) 推荐(0) 编辑
摘要:下图: 1、长方形的 objectName 可写可不写,不写就作用于所有 QTabWidget;椭圆形的 QTabWidget#tabWidget 要么四个都要写,要么四个都不写 2、下图的 CSS 使用 ui->centralWidget->setStyleSheet() 设置 或 this->s 阅读全文
posted @ 2017-11-06 19:35 流水灯 阅读(772) 评论(0) 推荐(0) 编辑
摘要:1. css相对长度单位 Ø em 元素的字体高度 Ø ex 字体x的高度 Ø px 像素Pixels Ø % 百分比Percentage 2. css绝对长度单位 Ø in 英寸Inches(1英寸=2.54厘米) Ø cm 厘米Centimeters Ø mm 毫米millimetre Ø pt 阅读全文
posted @ 2017-11-06 16:03 流水灯 阅读(1207) 评论(0) 推荐(0) 编辑
摘要:1、所有的窗口组件都可以用 setStyleSheet() 设置样式 2、使用样式,显示效果可以不受平台影响,比如保证window 7 和 linux 显示效果是一样的 QVariant 如果 style.qss 和 icon 在同一个 res.qrc,修改 style.qss 的内容不会更新到显示 阅读全文
posted @ 2017-11-04 11:53 流水灯 阅读(1154) 评论(0) 推荐(0) 编辑
摘要:简单的说,每个QObject的对象,都和某个创建对象所在的线程关联,如果把对象通过 moveToThread 移动到其他线程,这个对象不能有父对象,否则会出现 QObject::moveToThread: Cannot move objects with a parent A QObject ins 阅读全文
posted @ 2017-11-03 15:13 流水灯 阅读(4285) 评论(0) 推荐(0) 编辑
摘要:1、QMainWindow 是 MainWindow 的父类 2、QWidget *parent 中的 parent 值赋值给 QMainWindow(parent) 中的 parent,这其实是用到C++的语法,执行MainWindow的构造函数前先执行父类QMainWindow的构造函数 3、写 阅读全文
posted @ 2017-11-03 12:51 流水灯 阅读(7308) 评论(0) 推荐(2) 编辑
摘要:写在前面的总结: 建议:对于不能指定父对象的对象(对象通过moveToThread()移入其他线程、没有继承QObject的类产生的对象),在其他线程通过deleteLater()内存回收,其他通过指定父对象进行内存回收 对于Qt的内存回收机制 1、手动删除 1.1 对于new出来的对象,如果对象调 阅读全文
posted @ 2017-11-02 20:28 流水灯 阅读(3416) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示