- 博客(197)
- 资源 (20)
- 问答 (1)
- 收藏
- 关注
转载 halcon学习笔记——机器视觉工程应用的开发思路
最近因为项目需要用到halcon,一点没接触过halcon的我只能慢慢摸索。halcon没有教材,不像opencv,虽然只是第一版,但至少有个入门的介绍书籍,而halcon只能自个探索了。 言归正传,刚才看网上看到一篇很好的博文,特此转载至此,希望以后能慢慢进步。原博文地址: http://www.cnblogs.com/hanzhaoxin/archiv
2014-10-11 09:51:49 2743 2
转载 Qt开发应用程序Debug与Release设置 .
转自: 一般来说,release版的可执行程序在体积上比起debug版要小很多(数倍甚至数十倍的差异),而且由于剥离了许多调试信息及符号等运行效率相对也高一些。然而在使用Qt开发中偶尔也会遇到及时选择了release版生成的二进制文件仍然很庞大的问题。所以要仔细检查一下相关设置,保证最后发布出去的版本是release版。1、前提: 在生成Qt库时(./configu
2014-09-02 15:52:48 734
原创 一些资料
Duilib中CEventSource及CDelegate(事件委托)的简单分析http://blog.csdn.net/wbq2018/article/details/8810352
2014-07-01 21:46:23 384
转载 一个小例子
#pragma once#include #include #include "..\DuiLib\UIlib.h" using namespace DuiLib;#ifdef _DEBUG# ifdef _UNICODE# pragma comment(lib, "..\\bin\\DuiLib_ud.lib")# else# prag
2014-06-22 22:12:53 797
转载 Windows核心编程——》第二十章 DLL高级技巧 (DLL Advanced Techniques)
1.概览 1.1动态加载DLL文件 LoadLibraryEx HMODULE LoadLibraryEx(PCTSTR pszDLLPathName,HANDLE hFile,DWORD dwFlags); 返回DLL加载到进程空间原首地址。 dwFlags
2014-04-16 22:18:28 1095
转载 Windows核心编程——》第十九章 DLL的一些基本概念 (DLL Basics)
1.DLL的两种链接方式: 在使用DLL前,程序必先加载DLL程序(将DLL映射到进程的地址空间)。有如下两种方式加载DLL程序: (1)隐式链接 (2)显示链接
2014-04-16 22:01:30 776
转载 Windows核心编程——》第二十二章 DLL 注入和API钩 (DLL Injection and API Hooking)
1.概览 每个进程都有自已独立的地址空间,一个进程不可能创建一个指向其它进程地址空间的指针。 然而如果我们把自已的DLL注射到另一个进程的地址空间去,我们就可以在那个被注入的进程里为所欲为了。 Subclass同一进程中的窗体:http://msdn2.microsoft.com/en-us/li
2014-04-16 21:34:33 817
转载 Windows核心编程——》 第十八章 堆 (Heap)
1.堆 虚拟内存主要用于分配连续的内存,如给大数组分配内存。 堆主要用于分配小块内存, 如链表,树等就适合用堆来分配内存。 优点在于:在堆中分配内存时不像虚拟内存要求那么多,如分配粒度、页边界等。它没有这些要求,可分配任意大小的内存。 缺点在于:相对于
2014-04-16 15:40:12 1887
转载 Windows核心编程——》第十一章 线程池(The Windows Thread Pool)
线程池的目的就是为了减少创建和销毁线程的额外开销,利用已经存在的线程多次循环执行多个任务从而提高系统的处理能力.线程池会自动地根据内制的算法增加或减少线程池中的线程或为程序增加新的线程池。1.异步方法调用 异步方法调用有以下两种方法: (1
2014-04-16 15:09:14 1346
转载 Windows核心编程——》第十三章 Windows内存架构(Windows Memory Architecture)
1.进程虚拟地址空间 每个进程都有自已的私有的虚拟地址空间,在32位机器上是4G,在64位机器上是16EB。 进程内的线程只能访问其所属进程所占的内存,其它进程的内存对其而言是不可见的,无法访问到。 2.虚拟地址空间是如何划分的 以32位 x86进程的虚拟地址被分成四个区域(P
2014-04-16 10:21:08 550
转载 Windows核心编程——》第十七章 内存映射文件 (Memory-Mapped Files)
1.概览 (1)什么是内存映射文件 内存映射文件是由一个文件到一块内存的映射,使进程虚拟地址空间的某个区域与磁盘上某个文件的部分或全部内容的建立映射。 建立映射后,通过该区域可以直接对被映射的磁盘文件进行访问.而不必执行文件I/O操作也无需对文件内容进行缓冲处理。
2014-04-16 09:37:54 2054
转载 Windows核心编程——》第三章 内核对象
1.什么是内核对象内核对象是由内核分配的一块内存,它只能被内核访问。这块内存存储着一个保存着内核对象信息的数据结构。2.如何访问内核对象应用程序不能直接访问内核对象,只能通过Windows API间接访问和操作内核对象。那些用于操作内核对象的API会返回一个标识内核对象的句柄,应用程序通过该句柄和API函数来操作和访问内核对象。3.内核对象的数据成员
2014-04-15 22:24:59 750
转载 Windows 核心编程——》第五章 作业
1.什么是作业可以把作业看作是进程的容器,一个作业由一个或多个进程组成。作业可以对在其内的进程进行控制或限制进程的某些行为。 如果一个进程被加载到作业中,那么该进程的子进程也会自动被加载到该作业中。 用CloseHandle()关闭作业对象,只会把
2014-04-15 21:15:47 604
转载 Effective C++——》条款25:考虑写一个不抛出异常的swap函数
我也不知道为什么作者给这个条款起这样的名字,因为这样看上去重点是在“不抛出异常”,但事实上作者只是在全文最后一段说了一下不抛异常的原因,大部分段落是在介绍怎样写一个节省资源的swap函数。你可以试一下,只要包含了头文件iostream,就可以使用swap函数,比如:1 #include 2 3 int main()4 {5 int a = 3;6 in
2014-04-12 10:09:18 469
转载 Effective C++——》条款24:若所有参数皆需类型转化,请谓词函数采用non-member函数
还是举书上的有理数例子: 1 class Rational 2 { 3 private: 4 int numerator; 5 int denominator; 6 public: 7 Rational(int n = 0, int d = 1): numerator(n), denominator(d){assert(denominator !=
2014-04-12 09:39:12 483
转载 Effective C++——》条款23:宁以non-member、non-frined替换member函数
本条款还是讨论封装的问题,举书上的例子:1 class WebBrower2 {3 public:4 void ClearCach();5 void ClearHistory();6 void RemoveCookies();7 };定义了一个WebBrower的类,里面执行对浏览器的清理工作,包括清空缓存,清除历史记录和清除Cook
2014-04-12 09:26:04 484
转载 Effective C++——》条款22:将成员变量声明为private
这个条款从字面意思上理解很简单,很多程序都是这样做的,即使作为初学者,也知道该将成员变量声明为private,但有没有想过,为什么要这样做?为什么public成员变量不行?protected成员变量行不?举一个简单的例子:1 class Clothes2 {3 public:4 int price;5 string name;6 };
2014-04-12 09:14:05 597
转载 Effective C++——》 条款21:必须返回对象时,别妄想返回其reference。
当你理解条款21后,很可能出现一种过度使用的情况:只要看到是一个非内置类型,就去使用引用传值。举个书上的例子:1 class Rational2 {3 private:4 int numerator;5 int denominator;6 public:7 Rational():numerator(0), denominator(1){}8
2014-04-12 09:04:27 453
转载 Effective C++——》条款20:宁以pass by refrence to const 替换 pass by value
默认情况下,C++的函数调用是传值调用,也就是说形参拷贝实参的内容。举书上的例子: 1 class Person 2 { 3 private: 4 string name; 5 string address; 6 public: 7 Person(){} 8 virtual ~Person(){} 9 };10 11 class St
2014-04-12 08:28:55 521
转载 Effective C++——》条款19:设计class犹如设计type
这里初看到”class”和”type”,感觉他们是说的是同一样东西,但仔细读了一下,两者在文中还是有区别的。class侧重于自定义的类,而type侧重于系统预定义的类(像int、double、string、vector)。设计好的class,使之像设计type一样,就是说要使自己设计的类像系统预定义的类那样好用,这对设计思想提出了较高的要求。要设计高效的class,需要回答以下的问题:
2014-04-12 08:13:05 478
转载 Effective C++——》条款18:让接口容易被正确使用,不容易被误用
从本条款开始,就进入到全书的第四部分:设计与声明。程序员设计接口时应本的对用户负责的态度,“如果客户企图使用某个接口而却没有获得他所预期的行为,这个代码不应该通过编译;如果代码通过了编译,那它的作为就该是客户所想要的”。举一个书上的例子:1 class Date2 {3 public:4 Date(int month, int day, int year)
2014-04-12 07:58:58 500
转载 Effective C++——》条款17:以独立语句将newed的对象置入智能指针
举书上的例子:1 int GetPriority();2 void processWidget(shared_ptr pw, int priority);如果这样调用processWidget:processWidget(new Widget(), GetPriority());注意一下两边的类型,左边是管理者shared_ptr类,而右边是被管理者Wid
2014-04-12 07:29:32 527
转载 Effective C++——》条款16:成对使用new和delete时要采取相同的形式
这个条款比较好理解,就是new有两种形式:1 int *p = new int(); // 申请一个int资源2 int *p = new int[3]; // 申请连续三块int资源而delete也有两种资源:1 delete p; // delete指针所指向的单一资源2 delete [] p; // delete指针所指向的多个连续资源块那么该各
2014-04-12 07:17:05 426
转载 Effective C++——》条款15:在资源类管理类中提供对原始资源的访问
1 void PrintIntPointerValue(int* p) 2 { 3 cout endl; 4 } 5 6 int main() 7 { 8 MySharedPtrint> ptr(new int(2)); 9 PrintIntPointerValue(ptr);10 }因为PrintIntPointerValue函数需要
2014-04-12 07:08:10 470
转载 Effective C++——》条款14:在资源管理中小心copying行为
首先来看一个例子: 1 #include iostream> 2 using namespace std; 3 4 class Lock 5 { 6 public: 7 explicit Lock(int* pm): m_p(pm) 8 { 9 lock(m_p);10 }11 12 ~Lock()13
2014-04-12 07:00:08 532
转载 Effective C++——》条款13:以对象管理资源
从这个条款开始,就进入到资源管理部分了。资源管理往往是大型项目的一个难点,也是重中之重,看到一些编程规范,都是将资源管理的规范列为高优先级的重点。管理资源的最好方法其实是预防,而好的预防方法就是尽量不去使用C/C++的原生指针,这些指针像幽灵一样,一个“忘记”,就是一个隐患。当项目小的时候,这些隐患看不出来,但当研发一个拥有上万级用户的产品时,服务器对很多人同时运行含有隐患的代码,这个隐患
2014-04-11 22:52:37 494
转载 Effective C++——》条款12:复制对象时勿忘其每一部分
这句话包含两部分的意思:第一部分是要考虑到所有成员变量,特别是后加入的,相应的拷贝构造函数和赋值运算符要及时更新;第二部分是在存在继承时,不要遗忘基类部分的复制。先看第一部分的意思,举个例子:1 class SampleClass2 {3 private:4 int a;5 public:6 SampleClass(const Sample
2014-04-11 22:35:24 441
转载 Effective C++——》条款11:在operator=中处理自我赋值
直观的operator=是这样定义的: 1 class SampleClass 2 { 3 private: 4 int a; 5 double b; 6 float* p; 7 public: 8 SampleClass& operator= (const SampleClass& s) 9
2014-04-11 22:23:13 401
转载 Effective C++——》条款10:令operator=返回一个reference to *this
这个条款很简单的说,先解释一下为什么赋值后还要有返回值,这是因为我们可以这样用连等:1 int x, y, z;2 x = y = z;注意等号是右结合的,所以上述运算实际上等同于:x = (y = z);如果没有返回值,上述代码就不能通过编译。至于为什么返回的是一个引用,这并不是编译器强制的,但有三个原因让你觉得这样做是明智的:(1)
2014-04-11 22:07:36 440
转载 Effective C++——》条款9:绝不在构造和析构过程中调用virtual函数
先举一个在构造函数中调用virtual函数的例子: 1 class Base 2 { 3 public: 4 Base() 5 { 6 VirtualFunction(); 7 } 8 9 virtual void VirtualFunctio
2014-04-11 17:56:33 510
转载 Effective C++——》 条款08:别让异常逃离析构函数
举书上的例子,有以下代码: 1 class Widget 2 { 3 public: 4 ~Widget(){…} // 析构函数 5 }; 6 7 void DoSomething() 8 { 9 vector v;10 }STL的vector在析构时会逐一调用容器内每个元素的析构函数,这样问题就来
2014-04-11 17:31:55 496
转载 Effective C++——》条款7:为多态基类声明virtual析构函数 .
严格来说,多态分为编译时多态和运行时多态,编译时多态是函数的重载,而运行时多态则是迟绑定技术,即根据基类指针或引用的实际指向来决定采取何种行动,一般来说,多态特指运行时多态。下面我们来举有关C++多态的一个简单例子: 1 class Shape 2 { 3 private: 4 int color; 5 public: 6 vir
2014-04-11 17:22:41 491
转载 Effective C++——》条款6:若不想使用编译器自动生成函数,就该明确拒绝 .
举个书上的例子,地产中介商卖的是房子,有这样一个类:class HomeForSale{…}每个房子都是不一样的,所以希望这样:1 HomeForSale house1;2 HomeForSale house2;3 HomeForSale house3(house1); // house3企图与house1相同,不能通过这种情况4 house2 = hous
2014-04-11 17:03:43 457
转载 Effective C++——》条款5:了解C++默默编写并调用哪些函数 .
一个常见的面试题就是问“一个空类占几个字节”,想当然的是0个字节,但事实上类要区分不同的对象,比如:1 EmptyClass obj1;2 EmptyClass obj2;即便是空类,也要能识别obj1和obj2的不同,所以空类仍然要占字节数,一般占一个字节。还有一个针对空类的问题是“一个空类里面有什么”,就是想问编译器为这个空类自动生成了哪些成员函数。很容易想到的是生
2014-04-11 16:53:40 387
转载 Effective C++——》条款4:确定对象使用前已先被初始化 .
1. 内置类型C++中的内置基本类型,比如int,double,float等,初值都是垃圾值,即声明int i,i的初值是一个垃圾值。本书建议的最佳处理方法是:永远在使用对象之前将之初始化。比如:1 int x = 0;2 3 const char* test = “hello world”;4 5 double d; cin >> d;2. STLC++提
2014-04-11 16:31:44 410
转载 Effective C++——》条款3:尽可能使用const .
const是常量的意思,它可以定义一个不可改变的量,主要用于以下几个地方:1. 修饰变量,使之不可改变举个例子:const int var = 3;此时var的值就不能改变了。也正是因为const的变量不能轻易修改存储的值,所以在声明的时候就要初始化,这样就是不行的:const int var;编译器就会报错。2. 修饰指针指针是特殊的变量,有时我们希望对它所指向的
2014-04-11 16:11:17 484
转载 Effective C++——》条款2:尽量以const,enum,inline替换#define .
这个条款或许可以改为“宁可 以编译器替换预处理器”。即尽量少用预处理。 编译过程:.c文件--预处理-->.i文件--编译-->.o文件--链接-->bin文件
2014-04-11 15:40:43 553
何去何从——有大神在不,有问题请教
2014-04-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人