- 博客(38)
- 收藏
- 关注
原创 Qt对ini文件的操作
在windows平台上是有api来对ini文件进行操作的,但是,Qt封装了了一个类,用这个类对ini文件进行读、写非常方便。QSettings类。1、创建对象QString arg1 = "C:\\cfg.ini"; //这个是你ini文件的路径QSettings setting(arg1,QSettings::IniFormat,NULL); // 打开ini文件2、添加内容
2018-01-09 14:41:18
2685
原创 一次多线程debug经历
关键词:strcmo-sse2-unaligned.S 在Linux下学习多线程编程,却出现了一个莫名奇妙的错误。如下:Can't find a source file at "build/glibc-bfm8x4/glibc-2.23/string/../sysdeps/x86_64/miltiarch/strcmp-sse2-unaligned.S"在网上查找,只有overstackflow上
2017-07-06 11:13:35
2222
原创 LeetCode--Valid Parentheses
问题这个问题是非常简单的。就是匹配括号。那么要用到stack这个数据结构。而用C++的stack来编写,问题变得非常简单。 同时感谢这篇博客的博主 http://blog.youkuaiyun.com/zhouworld16/article/details/17629755代码分析class Solution {public: bool isValid(string s) {
2017-07-01 13:49:06
318
原创 LeetCode-- Longest Common Prefix
问题这个题,leetcode给的信息很少。题目本身是要求一组字符串的相同的前缀(Prefix)。分析这个问题,看起来简单,实际上各种边界条件多,坑多。笔者花了一点时间才完全在leetcode上跑通。这次得到的教训有两个: 1. 在解一个算法题时,不要找到一个解法,就不去思考其他的解法了,要尽可能想出多的解法,用笔在纸上列出来,评估一个复杂度低的解法。如果不通,迅速换一个解法,不要钻牛角尖。 1.
2017-07-01 09:40:30
282
原创 LeetCode--Integer to Roman
问题将一个整型(3000以内)转换为Roman字符。镜像问题roman to integer在上一个博客里已经分析了。一些背景知识请参考上一篇博客。分析在用计算机解决一个问题前,一定要对问题进行分解,将规律找出来。分解的子问题,一定要满足逻辑原理的一致性、完备性原理。本人分析思路如下(仅供参考): 一个数,按照权重划分,例如,1996。按照不同权重可以分解为:1000+9*100+9*10+6*1
2017-06-28 09:53:30
262
原创 LeetCode--Roman to Integer
public class QuickStart { public int romanToInt(String s) { int len = s.length(); int retInt = 0; char curCh; int curNum = 0; int lastNum = 0; for(in
2017-06-27 19:14:04
334
原创 LeetCode--Palindrome Number
问题这是一个求解回文的题。分析负数是否是回文?个位数一定是回文,如果是个位数可以直接返回,但是下面代码并未这么做算法的核心思想就是,不停的取出数的最高位和最低位比较,如果相同,掐头去尾再继续比较,如果一直是相等的,那么就是回文 public boolean isPalindrome(int x) { //when x is negative,return fal
2017-06-26 16:59:16
259
原创 LeetCode --Reverse Integer
题目Reverse digits of an integer.Example1: x = 123, return 321 Example2: x = -123, return -321 Note: The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed
2017-06-25 20:42:22
505
原创 QOPenGLWidget与QPainter混合编程--绘制文本
前言:QOPenGLWidget取代了之前的QGLWidget类,用以在Qt中提供Opengl的编程接口。在QGLWidget类中,我们可以通过方法drawTexture来绘制文本。但是在QOPenGLWidget类的时候,这个方法没有提供了。官方文档给出的建议是混合QPainter使用。本文档就是介绍怎么用QPainter来在OPengl窗口上绘制2D文本Qt使用QOpenglWidget构建一
2016-12-22 16:45:07
14028
11
原创 LeetCode --Two Sum
Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.Example:Given nums = [2, 7
2016-10-16 22:26:43
481
原创 使用QT时,出现error C2011: 'sockaddr' : 'struct' type redefinition.
直接解决这个问题,在pro文件中添加如下代码win32:DEFINES += _WINSOCKAPI_这个问题的详细解答与解决方法请查看 https://imron02.wordpress.com/2014/12/30/qt-struct-type-redefinitionredefinition-header/
2016-08-15 10:53:27
8260
1
原创 LNK1104:Cannot open file 'glut32.lib'
前言:好久没有写优快云的blog了,刚刚写blog的时候,我还是一个hello world的水平。真可谓“条条大路通CS”,花了一年时间,从EE专业自学到了CS了。也当是小有所成。希望,一起在路上的朋友,我们一起加油!问题背景在使用QT开发window应用程序的时候,需要使用到OpenGL的库来绘制3D地球。问题详细使用QT creator这个IDE,在build项目的时候,报下面的错误LNK1
2016-08-10 11:17:09
3122
原创 [经验总结]--关于socket通信传输非char型数组的解决方法
软件平台:win7 & VC6++ 初学网络编程,经验也非常有限,项目要求我传输一个很大的bits流封装好的数据包,然而,我们用tcp协议的时候,其传输函数send函数的第二个参数是要一个char* 指针。那么怎么传输 int* 或者 double*的数组怎么传过去呢。 其实很简单,send函数在传数据的时候,的确是一个字节一个字节的传输。那么我们把int*强制转换,
2015-08-31 11:05:38
1602
原创 [MFC学习笔记]--lesson12 文件操作
step1:新建一个单文档MFA App Wizard程序。 step2:在菜单项里添加“写入文件”和“读取文件”,在资源视图里,选着Menu然后双击就可添加,ID分别取为“IDM_FILE_WRITE”和"IDM_FILE_READ",step3:在“写入文件”和“读取文件”上,右击鼠标,选着“Class Wizard”,然后就可以添加到CPropView类,然后,选着“
2015-08-26 10:08:33
605
原创 [MFC学习笔记]--lesson8 对话框的设计
这次孙鑫老师讲了一个怎么设计两个button,当鼠标移动到一个button的时候,另外一个button鼠标会显示,而鼠标放在这个button上的会隐藏。 由上图可以看出,其实我们是设计了两个button,只是,鼠标放在某个button上的时候,另外一个会显示出来,而这一个会隐藏起来。step1:由于,我们是放在控件上,才会有反应,所以呢,我们要在“view” - > "Cla
2015-08-25 10:04:35
434
原创 [MFC学习笔记]--对话框的设计
1.我们可以先建立一个单文档工程,然后“Inset->Resource->Dlg”就可以插入一个对话框。然后设计一个对话框的类,接下来,我们来看看我们设计的对话框的类的一些成员函数。2.析构函数。CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/) : CDialog(CTestDlg::IDD, pParent){ //{{AFX_DATA_
2015-08-24 11:25:57
628
原创 [MFC学习笔记]--string类,路径层
A CString object consists of a variable-length sequence of characters.CString provides functions and operators using a syntax similar to that of Basic 我们可以用construction();来初始化,比如 CString st
2015-08-23 15:06:35
384
原创 [MFC学习笔记]--lesson15多线程与聊天室程序的设计
程序和进程:一个进程是一个程序的实例化,一个程序可以打开多个进程。比如,可以打开多个记事本文件。进程创建内核对象:操作系统分配的内存块,是一种数据结构,它的成员负责维护该对象的各种信息,内核数据结构的数据只能被内核对象访问,因此应用程序无法在内存中找到这些数据结构并直接改变他们的内容,我们只能通过windows提供的一些函数来对内核对象进行操作 main() 或者WinMain()
2015-08-20 10:40:00
979
原创 [MFC学习笔记]--SOCKET编程只client端\UDPsocket通信
int connect( SOCKET s, const struct sockaddr FAR*name, intnamelen);第一个参数是一个套接字,第二个参数是一个地址结构体的指针,第三个参数是地址指针的长度。 // TCP client#include #include void main(){ //load socket lib.
2015-08-19 14:55:17
678
原创 [MFC学习笔记]--网络编程实际操作编写服务器端
平台:win7 64bits / VC6++ 语言:C++ 函数介绍int WSAStartup( WORDwVersionRequested, LPWSADATAlpWSAData );
2015-08-19 10:06:24
495
原创 [MFC学习笔记]--网络编程理论知识
1.IP地址在网络上,可以唯一标识一台主机。采用点分十进制的表示方法。[身份识别]2.还要有通信协议,这样才能认识彼此。但是一台主机有多个网络应用程序,所以必须采用端口号来标识网络应用程序。3.IP是逻辑地址,具有全球唯一性4.网络体系结构为了解决异质性问题5.OSI(open system interconnection)参考模型:应用层,表示层,会话层,传输层,网络层,数据
2015-08-19 09:22:47
645
原创 [MFC学习笔记]--孙鑫第四课
MFC消息映射机制 当消息产生之后,因为消息是和一个具体的窗口相关的,在MFC中,就维护了一个窗口句柄和C++指针之间的映射,通过句柄,就能找到相对应的C++类的指针,将这个指针传递给基类,然后再基类中就会调用windowproc();函数,然后windowproc会调用onwndmsg来处理,在onwndmsg中会根据你消息的种类,会查找消息映射,查找消息响应函数原型的声明,还会在构
2015-08-18 10:48:08
536
原创 关于windowsOS下和linuxOS之间的socket通信
先写好windows和linux各自不同版本的socket代码,就是几个头文件不一样,没有多大的区别。 值的注意的是,我用的是xilinx ISE14.7 自带的 xilinx SDK 编译lixun端代码的,而build之后,linux端的debug中的执行文件是.elf。而在windows下,是.exe 把bui
2015-08-18 10:01:39
407
原创 [MFC学习笔记]--孙鑫第三课
我新建了一个MFC app工程,名字叫mfcTest,然后VC6++给我自动生成了一些类。CAboutDlg类,CMainFrame类,CMfcTestApp类,CMfcTestDoc类,CMfcTestView类. 接下来,我要一个个学习这种类。这些类都有基类,这些基类都是MFC的类库里面的。 CMfcTestApp 是继承了CWinApp类。 The CWinAp
2015-08-17 10:02:05
616
原创 [MFC学习笔记]--MSG结构体
typedef struct tagMSG { // msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;HWND:Identifies the window whose window procedure recei
2015-08-12 14:25:49
4015
原创 [C++学习笔记]--STL概述
C++语言的核心优势就是便于软件的重用。 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.generic programming(泛型程序设计)的思想:模板机制以及标准模板库(STL)。也就是说使用模板的程序设计。 STL(Standard Template Library):就是一些常用数据结构和
2015-08-05 09:16:06
370
原创 [C++学习笔记]--常量对象、常量成员函数和常引用
常量对象:比如设置一个类Demo,则 const Demo Obj;//则定义了Obj是一个常量对象。这样这个对象的值不会被改变 常量成员函数:在类的成员函数说明后面可以加const关键字,则该成员函数成为常量成员函数。常引用:例如void PrintfObj(const Sample &o);//这样就不会修改O的值
2015-08-04 21:55:31
367
原创 [C++学习笔记]--友元、this指针
友元函数:一个类的友元函数可以访问该类的私有成员。在声明的时候加friend关键词 友元类:A是B的友元类——>A的成员函数可以访问B的私有成员 class CCar{ private: int price; friend class CDriver;//声明CDriver
2015-08-04 21:51:48
612
原创 [C++学习笔记]--成员对象和封闭类
成员对象:一个类的成员变量是另一个类的对象 封闭类:包含成员对象的类叫封闭类(Enclosing) 初始化列表: 当封闭类对象生成时 1.执行所有成员对象的构造函数 2.执行封闭类的构造函数 当封闭类的对象消亡时 1.先执行封闭类的析构函数 2.执行成员对象的析构函数 “先构造的,后析构;后构造的,先
2015-08-04 20:32:21
692
原创 [C++学习笔记]--析构函数、静态成员变量、静态成员函数
1.程序每一次new一个新对象的时候,就会调用一次构造函数,每一次delete的时候,会调用一次析构函数。 2.认真看,这个代码中,构造函数什么时候被构造,析构函数什么时候被析构。 静态成员变量:在说明前面加了static关键字的成员。例如:static int nTotalArea;//静态成员变量 静态成员函数:static void functi
2015-08-04 11:17:28
2321
1
原创 [C++学习笔记]--类和对象(1)
实体:客观世界存在的某种事物,一杯茶,一个人。每个实体都有属性,其中,特征称为静态属性,功能称为动态属性。比如人的特征{两只腿,一双眼睛...},人的功能:{写字,工作...}。 对象:对实体进行抽象得到了对象。{特征—>数据,功能—>函数} 类(class):具有相同特征与功能的对象集合。对象是类的实例化(instance)。 如果出现以下几种情况,程序
2015-07-28 09:29:26
291
原创 [C++学习笔记]--内联函数、函数重载、函数defualt参数
内联函数:首先,我们来理解函数调用。当我们定义一个子函数,然后再main函数中调用,这个时候,我们的参数和返回值都是放在栈里面的。如果,这个函数要反复调用很多次,那么程序的开销很大,效率不是很高。这个时候就有了内联函数的概念了。内联函数和一般函数调用不同的是,每一次函数调用的时候编译器会把函数的代码修改后,直接插入调用语句处。这样的缺点是,会增大程序的体积。 那么内联函数的定义,
2015-07-26 11:30:07
732
原创 [C++学习笔记]--动态分配内存空间
我们在C语言中学过malloc函数,来动态分配内存空间,然而在C++中我们用的是new运算符。强调一下,malloc();是函数。而new是运算符,和sizeof()不是函数一个意思。 我们首先来看看malloc函数。查阅MSDN: void *malloc( size_t size ); 可以看出,函数返回的是一个指向空的指针,而函数的行参
2015-07-26 10:09:33
529
原创 [C++学习笔记]--位运算、引用、const指针
这篇博客,就写一些自己的浅显理解,和认识。 位运算:&(and运算)、 |(or运算)、~(not运算)、^(XOR异或运算,”相同为0,不同为1“)、>>(右移运算)、 左移:总的来说,左移运算,相当于乘法运算,只是乘以的是2的指数倍。比如,int i = 5 ; i 右移:和左移反着来,即相当于除法运算。要特别注意的时候,对于signed类型,如果是
2015-07-25 23:03:33
354
原创 [C++学习笔记]--函数指针
函数都有一个入口地址,我们将这个入口地址称为函数指针。函数指针有什么用处呢?首先,在一些场合,比如,一个函数要多次调用其他的一个函数,比如,在排序中,我们排序函数要多次调用一个比较函数,如下例子。其次,在windows下,一些回调函数需要指针。比如,按下鼠标(触发事件),系统怎么知道,你是按下鼠标,这个时候,会返回一个函数指针给鼠标。例子//std.cpp -- 把一组数据按个位数
2015-07-25 11:21:45
417
原创 关于调试PLX9054的一些总结和经验
语言:Verilog HDL & C软件环境:Win7 & ISE 14.7硬件:工控机 & PC & Xilinx FPGA & PLX9054调试目的:PLX9054的Local端有3个工作模式:C, J , M。在本次项目中,我们选择了C模式(pin157与pin156接地)。在C模式下有两种数据传输方式,DMA和直接数据传输。我们要往FPGA里先写入一组数据(1024个
2015-07-23 20:09:25
5265
原创 after Normal block(#47) at 0x001D3908 错误的一次解决经历
代码: waveform = (s16*) malloc(SIZE_BUFFER); 接着free(waveform),其中SIZE_BUFFER是1024*2个字节 。我想往这块内存写入1024个16bit位宽的数据。然后出现了如下错误提示: after Normal block(#47) at 0x001D3908 我的上网找了资料,提醒是“内存越界”。我解决的办法是:
2015-07-22 17:40:36
5461
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人