<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BUG之友的博客]]></title><description><![CDATA[学习过程中的总结，整理和借鉴，若有侵权请及时告知。]]></description><link>https://blog.youkuaiyun.com/error_again</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; error_again]]></copyright><item><title><![CDATA[从dig命令理解DNS]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/117082586</link><guid>https://blog.youkuaiyun.com/error_again/article/details/117082586</guid><author>error_again</author><pubDate>Thu, 20 May 2021 16:51:28 +0800</pubDate><description><![CDATA[DNS（Domain Name System，域名系统），是一种用于将域名解析为IP的服务器系统，当你上网时输入一个网址，它之所以能够找到该网址指向的服务器地址，都是靠域名系统来进行解析的。
先来讲讲域名。以华工官网为例 www.scut.edu.cn，一个域名，其实是从最右端开始逐层向下的，也就是说.cn是最高级的域名，往下才是.edu，然后到.scut，最后www是华工网站服务器的主机名，通过这样一层一层就能找到你需要访问的服务器地址。
当我们输入一个网址时，DNS帮我们找到这个网址对应的服务器的过程是]]></description><category></category></item><item><title><![CDATA[awk通过getline或system来调用shell的命令]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/117080714</link><guid>https://blog.youkuaiyun.com/error_again/article/details/117080714</guid><author>error_again</author><pubDate>Thu, 20 May 2021 16:14:02 +0800</pubDate><description><![CDATA[getline
通过在awk内使用管道,可以把shell命令的输出传送给awk
$ awk ‘BEGIN{ “date” | getline date; print date; }’
Sun Mar 8 22:21:52 2009
注意：
awk ‘BEGIN{“date”|getline d;print d;close(“date”)}’（close(“date”)）执行完一个命令，最好立即调用close（command）)
awk ‘BEGIN{while(“ls”|getline ls)print l]]></description><category></category></item><item><title><![CDATA[Qt的三大窗口dialog、widget、mainwindow区别简介]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/115231806</link><guid>https://blog.youkuaiyun.com/error_again/article/details/115231806</guid><author>error_again</author><pubDate>Fri, 26 Mar 2021 10:49:28 +0800</pubDate><description><![CDATA[一、

dialog有exec函数，如果是dialog窗口，后边的窗口时不可选的；这个dialog窗口只是为了给人们提供更好的可视化操作，但是对于程序员而言，这个操作并不是立刻执行的；而是当在窗口选择关闭后，才将选择的结果返回给后台，后台才可以根据选择的结果进行相应的操作。

二、

widget主要是在上面放置布局和控件；所有用户界面对象的基类。
窗口部件是用户界面的一个基本单元：它从窗口系统接收鼠标、键盘和其它事件，并且在屏幕上绘制自己。每一个窗口部件都是矩形的，并且它们按Z轴顺序排列。一个窗口部件可以]]></description><category></category></item><item><title><![CDATA[QT之模态与非模态]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/115230602</link><guid>https://blog.youkuaiyun.com/error_again/article/details/115230602</guid><author>error_again</author><pubDate>Fri, 26 Mar 2021 10:47:08 +0800</pubDate><description><![CDATA[模态对话框：

简单一点讲就是在弹出模态对话框时，除了该对话框整个应用程序窗口都无法接受用户响应，处于等待状态，直到模态对话框被关闭。这时一般需要点击对话框中的确定或者取消等按钮关闭该对话框，程序得到对话框的返回值（即点击了确定还是取消），并根据返回值进行相应的操作，之后将操作权返回给用户。这个时候用户可以点击或者拖动程序其他窗口。说白了就相当于阻塞同一应用程序中其它可视窗口的输入的对话框，用户必须完成这个对话框中的交互操作并且关闭了它之后才能访问应用程序中的其它窗口。其实模态对话框的作用就是得到用户选择的]]></description><category></category></item><item><title><![CDATA[QWidget派生类对象作为子窗口背景样式如何设置生效（父窗口设置了样式）]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/115161207</link><guid>https://blog.youkuaiyun.com/error_again/article/details/115161207</guid><author>error_again</author><pubDate>Wed, 24 Mar 2021 09:37:09 +0800</pubDate><description><![CDATA[在项目中，我们经常需要自定义一个继承Qwidget派生类的类，当这个类的对象为独立窗口时，一点问题都没有。当我们作为子窗口时，qt会自动将子窗口的背景设置为透明（其他控件均显示），同时这个子窗口的setStyleSheet方法是无效的。有的方法就是重写paint函数或者用画笔brush一个rect的背景色，但是他们都比较麻烦同时不是很好用。
解决方案：
setStyleSheet("background-color:rgb(0, 255, 127);color:red;");
setAttribute(Qt]]></description><category></category></item><item><title><![CDATA[LIBS+=到底如何用！]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/115083882</link><guid>https://blog.youkuaiyun.com/error_again/article/details/115083882</guid><author>error_again</author><pubDate>Mon, 22 Mar 2021 16:25:39 +0800</pubDate><description><![CDATA[语法是 LIBS+= -L直接打地址 -l直接打库名
注意点：-L后面没有空格，直接跟着地址，然后空格，-l后面是去掉lib之后的文件名。

一个例子：如我们有E:\CLibraries\NewmatL\debug\libNewmatL.a这个文件，则：
LIBS += -LE:\CLibraries\NewmatL\debug\ -lNewmatL
或者如果需要编译的pro在E:\CLibraries\TEST-build-desktop下，则可以：

NEWMAT_ROOT = …\NewmatL
LI]]></description><category></category></item><item><title><![CDATA[STL容器遍历删除时erase操作(iter++)]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/114573897</link><guid>https://blog.youkuaiyun.com/error_again/article/details/114573897</guid><author>error_again</author><pubDate>Tue, 09 Mar 2021 09:46:30 +0800</pubDate><description><![CDATA[我们知道STL中结点类容器(如:list,hash_map)遍历时进行删除时，需要这样做：
for(list::iterator iter = m_list.begin(); iter != m_list.end(); )
{
if(需要删除)
{
m_list.erase(iter++);
}
else
++iter;
}
而不能这样：
for(list::iterator iter = m_list.begin(); iter != m_list.end(); ++iter)
{
if(需要删除)
{
]]></description><category></category></item><item><title><![CDATA[QT/Linux常见错误总结（不定期补充）]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/113938229</link><guid>https://blog.youkuaiyun.com/error_again/article/details/113938229</guid><author>error_again</author><pubDate>Mon, 22 Feb 2021 15:22:55 +0800</pubDate><description><![CDATA[工作一段时间后发现在平时隔一段时间总会遇到一些重复的问题，但是又记不清具体的解决办法，
只能再一次去百度查找解决方法，耗时而且效率低，所以今天起就将自己日常中遇到的一些问题
进行总结分析，加深印象的同时也为以后做准备。

**
问题总结分析列表：
**
问题：1.已经包含头文件，仍然出现错误“未声明的标识符”。
解决方案：
1.引入头文件是有顺序之分的，不能随意的放置头文件，位置也要放正确。
2.可能在文件拷贝或者移动过程中，对应的变量在不同的编码情况下会出现不可见的字符修改，直接相关的变量的声明删掉重新定]]></description><category></category></item><item><title><![CDATA[非配合式活体检测方法简介]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/113588182</link><guid>https://blog.youkuaiyun.com/error_again/article/details/113588182</guid><author>error_again</author><pubDate>Wed, 03 Feb 2021 10:52:26 +0800</pubDate><description><![CDATA[活体检测配合式是通过用户一些简单的动作（点头摇头等）进行检测，但是这个对用户的体验不太好，非配合式活体检测相对更加灵活，非配合式活体检测对算法要求更高，对用户体验也更友好。非配合式活体根据成像源的不同，一般分为红外图像、3D 结构光和 RGB 图像三种技术路线，这三种路线又根据应用场景不同而各有优劣。
一、红外图像活体检测
基于红外图像的活体检测，需要用到红外摄像头。红外图像滤除了特定波段的光线，天生抵御基于屏幕的假脸攻击。不管是可见光还是红外光，本质都是电磁波。物体成像与其表面材质的反射特性有关。真实人脸]]></description><category></category></item><item><title><![CDATA[QTimer用法（固定某一时间点启动）]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/113515730</link><guid>https://blog.youkuaiyun.com/error_again/article/details/113515730</guid><author>error_again</author><pubDate>Mon, 01 Feb 2021 16:01:53 +0800</pubDate><description><![CDATA[今天遇到一个需求，就是每晚12点定时查询数据库信息并判断是否进行删除。刚开始设计就是简单的思路：每分钟启动一次定时器，判断当前时间是否为对应时间，是否进行相关操作，伪代码如下：
    m_timer = new QTimer(this);
    // true 单次触发,false 多次触发
    m_timer-&gt;setSingleShot(false);
    //每分钟调用一次
    m_timer-&gt;start(1*1000*60);  
    //定时器触发信号槽
    ]]></description><category></category></item><item><title><![CDATA[C++之Lambda表达式]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/113519177</link><guid>https://blog.youkuaiyun.com/error_again/article/details/113519177</guid><author>error_again</author><pubDate>Mon, 01 Feb 2021 15:47:37 +0800</pubDate><description><![CDATA[1. 概述
C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象，以简化编程工作。
Lambda 的语法形式如下：
[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -&gt; 返回值类型 {函数体}
可以看到，Lambda 主要分为五个部分：[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-&gt; 返回值类型、{函数体}.
2. Lambda 语法分析
2.1 [函数对象参数]
标识一个 Lambda 表达式的]]></description><category></category></item><item><title><![CDATA[QT中QString 格式化 arg前面自动补0]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/113181712</link><guid>https://blog.youkuaiyun.com/error_again/article/details/113181712</guid><author>error_again</author><pubDate>Tue, 26 Jan 2021 15:41:53 +0800</pubDate><description><![CDATA[如这样的字符串： 00：01：23
将3个int转化为字符串时，使用arg的其它参数；
代码如下：
QString str = QString("%1:%2:%3").arg(0,2,10,QLatin1Char('0')).arg(1,2,10,QLatin1Char('0')) .arg(23,2,10,QLatin1Char('0'));

arg中第二个参数表示字符串的位数，第三个参数表示int的进制，第4个参数表示自动补全的字符；
如，改为：
QString str = QString("%1:%]]></description><category></category></item><item><title><![CDATA[QT工程pro文件TEMPLATE变量说明]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112858621</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112858621</guid><author>error_again</author><pubDate>Wed, 20 Jan 2021 10:10:45 +0800</pubDate><description><![CDATA[QT工程pro文件模板变量（TEMPLATE）
模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择：
app - 建立一个应用程序的makefile。这是默认值，所以如果模板没有被指定，这个将被使用。
lib - 建立一个库的makefile。
vcapp - 建立一个应用程序的Visual Studio项目文件。
vclib - 建立一个库的Visual Studio项目文件。
subdirs - 这是一个特殊的模板，它可以创建一个能够进入特定目录并且为一个项目文件生成ma]]></description><category></category></item><item><title><![CDATA[C++栈上和堆上创建对象的区别]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112601202</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112601202</guid><author>error_again</author><pubDate>Thu, 14 Jan 2021 10:37:44 +0800</pubDate><description><![CDATA[在C++中类的对象建立分为两种，一种是静态建立，如A a；另一种是动态建立，如A* p=new A()，Ap=(A)malloc()；静态建立一个类对象，是由编译器为对象在栈空间中分配内存，通过直接移动栈顶指针挪出适当的空间，然后在这片内存空间上调用构造函数形成一个栈对象。动态建立类对象，是使用new运算符将对象建立在堆空间中，在栈中只保留了指向该对象的指针。栈是由编译器自动分配释放 ，存放函数的参数值，局部变量的值，对象的引用地址等。其操作方式类似于数据结构中的栈，通常都是被调用时处于存储空间中，调用完毕]]></description><category></category></item><item><title><![CDATA[QT样式表StyleSheet(QSS)的使用与加载]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112599733</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112599733</guid><author>error_again</author><pubDate>Thu, 14 Jan 2021 09:55:40 +0800</pubDate><description><![CDATA[1、相关链接
官网的样式表链接：http://doc.qt.io/archives/qt-4.8/stylesheet.html
各种控件的样式：http://doc.qt.io/archives/qt-4.8/stylesheet-reference.html
QSS语法：http://www.w3school.com.cn/css/css_syntax.asp
使用样式表的3种方法：《Qt 之 样式表的使用——设置样式的方法 》https://blog.youkuaiyun.com/goforwardtostep/]]></description><category></category></item><item><title><![CDATA[几个简单的基本的sql语句]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112564241</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112564241</guid><author>error_again</author><pubDate>Wed, 13 Jan 2021 14:30:56 +0800</pubDate><description><![CDATA[选择：select * from table1 where 范围
插入：insert into table1(field1,field2) values(value1,value2)
删除：delete from table1 where 范围
更新：update table1 set field1=value1 where 范围
查找：select * from table1 where field1 like ‘%value1%’ —like的语法很精妙，查资料!
排序：select * from ta]]></description><category></category></item><item><title><![CDATA[QT之QElapsedTimer计时]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112556114</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112556114</guid><author>error_again</author><pubDate>Wed, 13 Jan 2021 11:19:13 +0800</pubDate><description><![CDATA[QElapsedTimer提供了一种快捷的计算流逝时间的方法。它通常被用来计算两个事件或操作之间过去了多久。并且，该类的方法非常类似于我们之前讲过的QTime类的三个计时函数，所以，我们可以很快速的在使用这两个类的代码之间进行移植。但是，不像QTime，QElapsedTimer会尽可能的使用某种单调时钟。这也就意味着，系统时间的修改对它不会产生影响，同时也没办法将QElapsedTimer对象转换成人类可读的时间格式。
这个类主要的使用方法就是测量一个操作耗时多久，例子如下：
  QElapsedTime]]></description><category></category></item><item><title><![CDATA[QConcurrent、QFuture和QFutureWatcher]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112555575</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112555575</guid><author>error_again</author><pubDate>Wed, 13 Jan 2021 10:56:08 +0800</pubDate><description><![CDATA[QFuture：
QFuture类代表了一个异步调用的结果。而这个异步调用需要使用Qt Concurrent架构的API。
QFuture让线程可以通过某个后期产生的结果来实现同步。这个结果可以是任何拥有默认构造函数和拷贝构造函数的类型。如果这个结果在调用其result(), resultAt(), 或者 results()方法时还没有准备好，QFuture将会一直等到结果准备好。可以通过它的isResultReadyAt()方法来检测结果是否准备好。对于QFuture对象需要准备多个结果的情况，其resu]]></description><category></category></item><item><title><![CDATA[路径中的“\”和“/”以及相对路径和绝对路径]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112554236</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112554236</guid><author>error_again</author><pubDate>Wed, 13 Jan 2021 10:21:27 +0800</pubDate><description><![CDATA[1.路径中使用斜杠/和反斜杠\的区别
Unix使用斜杆/ 作为路径分隔符，而web应用最新使用在Unix系统上面，所以目前所有的网络地址都采用 斜杆/ 作为分隔符。
Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了，为了不混淆，所以采用 反斜杠\ 作为路径分隔符。所以目前windows系统上的文件浏览器都是用 反斜杠\ 作为路径分隔符。随着发展，DOS系统已经被淘汰了，命令提示符也用的很少，斜杆和反斜杠在大多数情况下可以互换，没有影响。
知道这个背景后，可以总结一下结论：
（1）浏览器地址栏]]></description><category></category></item><item><title><![CDATA[QT中文件读取和保存]]></title><link>https://blog.youkuaiyun.com/error_again/article/details/112473294</link><guid>https://blog.youkuaiyun.com/error_again/article/details/112473294</guid><author>error_again</author><pubDate>Mon, 11 Jan 2021 16:07:03 +0800</pubDate><description><![CDATA[QImage类提供与硬件无关的图像表示，允许直接访问像素数据，并可用作绘图设备。
Qt提供了四个用于处理图像数据的类：QImage，QPixmap，QBitmap和QPicture。 QImage专为I / O和直接像素访问和操作而设计和优化，而QPixmap专为在屏幕上显示图像而设计和优化。 QBitmap只是一个继承QPixmap的便捷类，确保深度为1.最后，QPicture类是一个记录和重放QPainter命令的绘图设备。
因为QImage是QPaintDevice子类，所以可以使用QPainter直]]></description><category></category></item></channel></rss>