自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 收藏
  • 关注

原创 QT View及Model源码解析

QT View及Model源码解析QT的Model用于保存数据,而QTView只是用于显示界面,大概关系如下,View的数据private中一般会有drawcell等方法,用于从model里面取数据绘制文字,表格,绘制的时候会根据每个QModelIndex的flag属性来进行不同绘制,所以如果我们继承了flag并且设置特殊的role角色,会改变绘制的效果,当然我们也可以直接通过setflag也是

2016-09-01 14:25:18 2071

转载 Qt图形框架资料01

这个框架是一个相对成熟的渲染引擎的上层框架,通常也可以会叫做 Scene - View。在QT中,GraphicsView是一个与QWdiget系列一点点不一样的系统。这个系统主要由下面几个框架类构成:QGraphicsView, QGraphicsScene, QGraphicsItem QGrahpicsView是从原生的QWidget继承过来,QGraphics-View系统

2016-08-20 18:00:35 1393

转载 QT的显示机制

了解QT显示机制,最重要的就是要了解QT是如何管理窗体的显示区域的,这里有个重要的类:QRegion, 在QT中可以通过QRegion定义一个窗体的显示区域,也可以通过QRegion定义窗体的可修改区域,比如在QPainter()中通过QPainter::setClipRect设定一个区域,我们绘图则只能在这个区域,此区域外绘图都是无效的。通过QRegion可以作一系列的逻辑运算,如两个区域相加,

2016-08-20 14:57:00 2710

原创 谈程序员的一些缺点

每个行业的人员都有自己的特征,也就是我们常说的职业病。从这个角度看,程序员也不例外。一方面,程序员学习能力强、做事专注、肯钻研,另外一方面他们也容易染上不好的毛病,比如说贪多求快、过分自信、不切实际等等。下面,我们会对这些毛病一一进行分析和总结。坦诚自己的缺点是需要勇气的,关键是在未来的工作和生活中如何避免这些毛病和错误。(1)跟风 说到跟风,其实这是和软件发展的大环境是离不开的。

2016-08-20 14:37:53 8330

转载 使用WinINet和WinHTTP实现Http访问

使用WinINet和WinHTTP实现Http访问Http访问有两种方式,GET和POST,就编程来说GET方式相对简单点,它不用向服务器提交数据,在这个例程中我使用POST方式,提交数据value1与value2,并从服务器得到他们的和(value1 + value2)。为实现Http访问,微软提供了二套API:WinINet, WinHTTP。WinHTTP比WinINet更加安全和健

2016-08-11 23:04:21 4178 1

转载 windows进程间各种通信方式浅谈

1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。 多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API) 提供了大量支持应用程序间数据共享和交换的机制,这些

2016-07-29 14:34:28 957

原创 设计模式之观察者模式实例

#include "stdafx.h" #include #include using namespace std; /* 观察者 */ class IObserver { public: IObserver(){} virtual ~IObserver(){} virtual void update() = 0

2016-07-29 10:17:23 561

转载 C++资源大全

关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz 发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Li

2016-07-29 10:08:36 629

转载 C++STL之map学习

map map是一种关联容器,存储相结合形成的一个关键值和映射值的元素。Map 是一种Pair Associative Container,意味着它的值类型为 pair. 而且也是 Unique Associative Container, 也就是任何两个元素没有相同的key值。map具有重要的属性,就是在map对象中插入一个新元素不指向现有元素的迭代器失效。从map上删除一个元素,也

2016-07-29 09:52:40 575

转载 socket阻塞、非阻塞、同步异步

1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干

2016-07-29 09:50:26 923

原创 模块接口间三中调用方式

异步消息的传递-回调机制软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用

2016-07-27 14:06:40 6101

转载 临界区和互斥量的区别

1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。临界区(Critical Section)  保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进

2016-07-23 15:04:35 8589

原创 C++中各大库扥介绍

C++各大有名库的介绍在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。1、C+

2016-07-13 09:30:35 1103 1

原创 windiws C++ 多线程编程

C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize,

2016-07-11 11:33:50 462

转载 写时拷贝技术:Copy-On-Write

写时拷贝技术1、概念Scott Meyers在《More EffectiveC++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书。这就是“拖延战术”,直到你非要做的时候才去

2016-05-25 10:46:38 8212 3

转载 ASCII,UTF-8,Unicode字符串相互转换(转)

#include #include #include using namespace std; //utf8 转 Unicode std::wstring Utf82Unicode(const std::string& utf8string) { int widesize = ::MultiByteToWideChar(CP_UTF8, 0,

2016-05-04 11:11:25 1798

原创 ASP中页面之间传递值的几种方式

ASP.NET页面之间传递值的几种方式  页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说,常用的较简单有QueryString,Session,Cookies,Application,Server.Transfer。   一、QueryString  QueryString是一种非常简单的传值方式

2016-05-01 11:00:09 14271 2

转载 Windows线程创建、退出及资源释放

可以通过以下几种方法创建一个线程:1、CreateThread2、_beginthread3、_beginthreadex4、AfxBeginThread--------------------------------------------------------------------------------------1、CreateThread函数原型HANDLE Crea

2016-04-29 20:27:22 3903

转载 QT-基于TCP的网络通信

Qt使用QtNetwork模块来进行网络编程,提供了一层统一的套接字抽象用于编写不同层次的网络程序,避免了应用套接字进行网络编的繁琐(因有时需引用底层操作系统的相关数据结构)。有较底层次的类如QTcpSocket、QTcpServer和QUdpSocket等来表示低层的网络概念;还有高层次的类如QNetworkRequest、QNetworkReply和QNetworkAccessManager使

2016-04-28 16:54:30 2274

原创 apache对象池的使用

Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/"任务worker池"等,大家常用的dbcp数据库连接池,也是基于commons-pool实现. commons-pool实现思想非常简单,它主要的作用就是将"对象集合"池化,任何通过pool进行对象存取的操作,都会严格按照"pool配置"

2016-04-28 09:57:29 3520

转载 服务器端select I/O多路复用模型

服务器Select模型的实现标签: 服务器socketmakefilestreamnullnetwork服务器Select模型的实现讨论新闻组及文件select模型属于网络的I/O复用模型,比纯粹的阻塞I/O模型更具有实用性,因为可以同时等待多个描述字的就绪。当年学习C/C++的时候,很少碰到底层以数字标示的描述字,只在写文件系统的去尝试各种情况,以获得最佳效率的时候实际尝试使用过一

2016-04-28 09:47:12 430

转载 通过RAII机制实现资源的自动释放

利用RALL机制使用模板技术蒋某中类型的指针封装在RALL类的临时对象中避免指针在被使用的过程中发生异常,通过私有继承避免RALL的被复制和拷贝举个常见的例子:[cpp] view plain copyvoid Func() { FILE *fp; char* filename = "test.txt"; if((fp=fopen(filename,"r"))=

2016-04-23 21:15:25 891

转载 C++异常处理第四篇 Loki::ScopeGuard

转载:神奇的Loki::ScopeGuard 2011-07-05 12:52:05分类: C/C++转载:http://blog.csdn.net/fangqu/article/details/4242245----------------------------------------------------------------------------------------作者:

2016-04-23 20:57:01 688

转载 C++中接口与实现的分离技术

lxImplement.h文件内容:#include "lxTest.h"class ClxImplement {public: ClxImplement(); ~ClxImplement(); void DoSomething();private: ClxTest m_lxTest; void lxTest();}; lxI

2016-04-22 17:55:29 419

原创 C++多重继承通过中间类继承重写不同基类中相同类型的虚函数

class CBaseA{public: virtual void TestA();};class CBaseB{public: virtual void TestB();};class CDerived : public CBaseA, public CBaseB{public: virtual void TestA(); // 重写基类CBaseA中

2016-04-22 16:57:57 1079

原创 关于虚基类指针向派生类指针转化

#include using namespace std;class base1 { public: base1(){cout<<"base::base()!"<<endl;} void virtual printBase(){cout<<"base::printBase()!"<<endl;} }; class derived1: virtual

2016-04-22 16:29:12 1881

转载 C++ 常用类型转换的区别

static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较(使用vs2010所带的编译器) 转载请注明来源 http://www.cnblogs.com/jerry19880126/ 隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由

2016-04-22 15:53:30 503

转载 C++中虚析构函数的作用

我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout << "Do somethi

2016-04-22 15:10:29 317

原创 COM组件的AddRef和Release()方法使用

AddRef和Release实现的是一种名为引用计数的内存管理技术,这种技术是使组件能够自己将自己删除的最简单同时也是效率最高的方法。COM组件将维护一个称作是引用计数的数值。当客户虫组件取得一个接口时,此数值增1,当客户使用完某个接口后,此数值将减1。当此数值为0时,组件即可将自己从内存中删除。  为正确的使用引用计数,需要了解一下三条规则:  (1)在返回之前调用AddRef。对于哪些

2016-04-22 14:42:56 5647

原创 调用COM组件的方法

需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGetResEx--方法HelloEx()2.在工程中导入组件或类型库clip_image001 #import "组件所在目录myCom.dll" no_namespace或clip_image001 #import "类型库所在目录myCom.tlb"cl

2016-04-22 14:04:52 2281

原创 C++常用库

C++的常用库(转载)标准库 标准库中提供了C++程序的基本设施。虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被实践证明为有工业级别强度的佳作。 1、 Dinkumware C++ Library 参考站点:http://www.dinkumware.com/'>http://www.dinkumwar

2016-04-19 23:26:24 1203

转载 DLL学习

DLL的优点简单的说,dll有以下几个优点:1) 节省内存。同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序中,同时运行这些exe时这些模块的二进制码会被重复加载到内存中。如果使用dll,则只在内存中加载一次,所有使用该dll的进程会共享此块内存(当然,像dll中的全局变量这种东西是会被每个进程复制一份的)。2) 不需编译的软件系统升级,若一个软件

2016-03-25 17:09:31 558

转载 图的深度优先遍历和广度优先遍历

图的深度优先遍历和广度优先遍历图的深度优先遍历和广度优先遍历 图的深度优先遍历和广度优先遍历 图的深度优先遍历:V1 V2 V4 V8 V5 V3 V6 V7图的广度优先遍历:V1 V2 V3 V4 V5 V6 V7 V8#include#include#includeusing namespace std;struct _ArcInfo{

2015-12-09 16:41:05 1117

转载 各种版本控制工具的使用

一、SVN、TortoiseSVN、Subclipse介绍团队开发技术:(1)单元测试;(2)版本控制;(3)项目自动化;SCM:软件配置管理,包括SVN;SVN是CVS的接班人,是版本控制系统;版本控制简单地说就是要让团队的人能够快速的统一代码,加强沟通;SVN由客户端和服务器组成,服务器是项目仓库,即存储项目的地方;客户端则是本地拷贝,即由SVN管理,可以提交到项目仓库和从

2015-12-05 12:38:12 456

转载 再谈启发式搜索算法

一、何谓启发式搜索启发式搜索算法有点像广度优先搜索,不同的是,它会优先顺着有启发性和具有特定信息的节点搜索下去,这些节点可能是到达目标的最好路径。我们称这个过程为最优(best-first)或启发式搜索。下面是其基本思想:1) 假定有一个启发式(评估)函数ˆf ,可以帮助确定下一个要扩展的最优节点,我们采用一个约定,即ˆf的值小表示找到了好的节点。这个函数基于指定问题域的信息,

2015-12-05 09:17:46 5688

原创 ACM常见算法分类

2015-12-05 09:12:39 745

转载 散列表总结

本文整理自《算法导论》第11章,由于本章有一些概率论知识,因此理解起来比较困难,但是一般只要记住结果即可。我在面试的时候也被问过:“请问哈希冲突的解决方法有哪些?”,这个问题的答案是:第一种是链接技术,即用双向链表来链接哈希值相同的元素。这种方法能够有良好性能的前提是满足近似简单一致散列。第二种是开放寻址法,而开放寻址法有几种生成探查寻列的方法,如线性探查、二次探查、二次哈希(double

2015-12-05 08:32:52 344

转载 C/C++中时间处理函数

C time库中提供了几个时间处理的函数:获取时间clock 获取程序从开始到调用clock硬件滴答数difftime 获取两个时间的差time 获取当前时间转换时间mktime 将tm结构转换成time_tasctime 将tm结构转换成stringctime 将time_t转换成stringgmtime 将time_t转换成tm结构(UTC时间)localtime 将t

2015-12-04 13:22:34 474

转载 数据库中空字符串和NULL两个概念值的区别

数据库中的NULL表示“没有对(列)变量输入数据”,即在数据库中的NULL可以区分“没有对(列)变量输入数据”和“有对(列)变量输入数据”这两类情况。而输入空字符串,则是这里的“有对(列)变量输入数据”这一类情况,即有输入数据,只是输入的数据为空字符串(含有终止符的还是)。从这个意义上讲,如int t;语句,也是属于这里的“有对(列)变量输入数据”这一类情况,只是不是有程序员自己输入值,而是由(编

2015-12-04 12:06:51 5135

原创 表达式的前中后缀表示和表达式运算

一、将自然表达式转换为前/中/后缀表达式,首先按照自然表达式中操作数和操作符的优先级顺序构造出表达式对应的二叉树,然后对二叉树进行前序/中序/后序遍历,即得到前/中/后缀表 达式 二、一些其他的遍历原则: 1、深度优先遍历: 首先访问出发点V,并将其标记为已访问过;然后依次从V出发搜索V的每个邻接点W。若W未曾访问过,则以W为新的出发点继续进行深度优先遍历,直

2015-12-02 11:20:52 673

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除