
C++
文章平均质量分 92
pi9nc
这个作者很懒,什么都没留下…
展开
-
DLL编写教程
DLL编写教程半年不能上网,最近网络终于通了,终于可以更新博客了,写点什么呢?决定最近写一个编程技术系列,其内容是一些通用的编程技术。例如DLL,COM,Socket,多线程等等。这些技术的特点就是使用广泛,但是误解很多;网上教程很多,但是几乎没有什么优质良品。我以近几个月来的编程经验发现,很有必要好好的总结一下这些编程技术了。一来对自己是总结提高,二来可以方便光顾我博客的朋友。好了,废话转载 2012-10-24 16:02:41 · 925 阅读 · 0 评论 -
C语言可变参数列表应用——多字符串复制和链接
C语言可变参数列表应用——多字符串复制和链接分类: C&C++2012-10-17 23:27 372人阅读 评论(0) 收藏 举报 C标准库中头文件中包含可变参数列表的实现,完成遍历未知数目和类型的函数参数列表的功能。提供以下3个宏以及va_list变量: va_start(va_list ap, lastarg):转载 2012-10-23 19:13:10 · 1126 阅读 · 0 评论 -
并查集 (Union-Find Sets)
并查集 (Union-Find Sets)并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多。一般采取树形结构来存储并查集,并利用一个rank数组来存储集合的深度下界,在查找操作时进行路径压缩使后续的查找操作加速。这样优化实现的并查集,空间复杂度为O(N),建立一个集合的时间复杂度为O(1),N转载 2012-10-24 17:19:14 · 940 阅读 · 0 评论 -
有向图强连通分量的Tarjan算法
强连通分量问题通常可归纳为要求出强连通分量,然后通过缩点(将得出的每个连通分量视为一个点,然后继续构图,例如连通分量A有一个点有一条边指向连通分量B的一个点,那么在A上搭一条边到B,其他连通分量也以此类推)。求图的强连通分量一个算法为tarjan,在http://www.byvoid.com/blog/scc-tarjan/这博客中对tarjan的算法描述得非常的详细。我这里转载方便自己以后看转载 2012-11-02 15:27:14 · 683 阅读 · 0 评论 -
常见hash算法的原理
散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列转载 2012-11-02 10:43:45 · 5553 阅读 · 0 评论 -
用C/C++创建windows服务程序
用C/C++创建windows服务程序转载请标明是引用于 http://blog.youkuaiyun.com/chenyujing1234 一、演示过程下方代码演示了如何使用vs(C/C++)创建windows服务程序工程文件下载地址: http://download.youkuaiyun.com/download/sooth2008/2759082转载 2012-11-12 21:43:22 · 9176 阅读 · 0 评论 -
秒杀多线程第四篇 一个经典的多线程同步问题
秒杀多线程第四篇 一个经典的多线程同步问题分类: Windows多线程 Windows编程2012-04-10 09:57 17975人阅读 评论(25) 收藏 举报上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,现在来个复杂点的。这个问题涉及到线程的同步和互斥,是一道非常有代表性的多线程同步问题,如果能将这个问题搞清楚,转载 2013-01-23 16:49:27 · 675 阅读 · 0 评论 -
秒杀多线程第六篇 经典线程同步 事件Event
秒杀多线程第六篇 经典线程同步 事件Event分类: Windows多线程 Windows编程2012-04-11 09:06 13616人阅读 评论(85) 收藏 举报多线程nullthreadsemaphorefunaccess阅读本篇之前推荐阅读以下姊妹篇:《秒杀多线程第四篇 一个经典的多线程同步问题》《秒杀多线程第五篇 经典线程同步关键段CS》转载 2013-01-23 17:05:12 · 569 阅读 · 0 评论 -
秒杀多线程第三篇 原子操作 Interlocked系列函数
秒杀多线程第三篇 原子操作 Interlocked系列函数分类: Windows多线程 Windows编程2012-04-09 09:08 15415人阅读 评论(67) 收藏 举报多线程thread汇编原子操作上一篇《多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见,我们可以转载 2013-01-23 16:40:31 · 643 阅读 · 0 评论 -
秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别分类: Windows多线程 Windows编程2012-04-05 09:36 23466人阅读 评论(66) 收藏 举报多线程threadnullstructureattributessecurity 本文将带领你与多线程作第一次亲密接触,并深入分析Cre转载 2013-01-23 16:34:36 · 606 阅读 · 0 评论 -
秒杀多线程第五篇 经典线程同步 关键段CS
秒杀多线程第五篇 经典线程同步 关键段CS分类: Windows多线程 Windows编程2012-04-11 09:06 12873人阅读 评论(71) 收藏 举报多线程threadmicrosoftfunnullstruct上一篇《秒杀多线程第四篇 一个经典的多线程同步问题》提出了一个经典的多线程同步互斥问题,本篇将用关键段CRITICAL_SECTION来尝试转载 2013-01-23 16:58:18 · 528 阅读 · 0 评论 -
c++ fast Delegate 实现代码
c++ fast Delegate 实现代码分类: 类库&工具2010-02-23 14:54 2512人阅读 评论(0) 收藏 举报 委托这种机制,只有当代码写多了,才会发现它多么有用,虽然设计模式里的模板方法很好,但为了实现它而进行大量的类重载有时候可能得不偿失,然而c++本省并不支持委托,以下是一个非常强大的委托实现代码,直接可以拿来大量使用的。转载 2013-01-11 19:21:12 · 898 阅读 · 0 评论 -
C++文件的批处理
C++文件的批处理时间:2012-07-23 09:43点击:45 次 【大 中 小】一、统计代码行数 几个星期前做了个统计代码的小程序,对文件的批处理需要获取文件列表,因为是在windows下操作的,所以百度到一个系统调用 system("dir /a /b >> file_list.txt");功能就是把当前目录下的所有文件名写到file转载 2013-01-11 19:39:26 · 2990 阅读 · 0 评论 -
使用异步 I/O 大大提高应用程序的性能(来自IBM)
使用异步 I/O 大大提高应用程序的性能(来自IBM)分类: 理论原理2012-11-27 14:34 103人阅读 评论(0) 收藏 举报目录(?)[+]AIO简介Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 2.4 版本内核的补丁中也可以找到它。AIO 背转载 2013-01-11 20:42:36 · 551 阅读 · 0 评论 -
理解ATL中的一些汇编代码
我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以拿来学习应该是很方便的。但是因为ATL的代码充满了模板和宏,内部还夹杂着汇编,所以如果没有比较丰富的C++模板和系统底层的知识,一般人会看得一头雾水。下面我们主要分析一下ATL中的一些汇编代码转载 2013-01-11 20:53:16 · 516 阅读 · 0 评论 -
Nginx源码剖析之内存池,与内存管理
分类: 28.Source analysis2011-12-04 23:43 25754人阅读 评论(50) 收藏 举报目录(?)[+]Nginx源码剖析之内存池,与内存管理作者:July、dreamice、阿波、yixiao。出处:http://blog.youkuaiyun.com/v_JULY_v/。转载 2013-01-11 21:37:56 · 606 阅读 · 0 评论 -
功能宏
功能宏开关模块的实现(C语言)分类: 设计思路2012-11-11 22:09 445人阅读 评论(0) 收藏 举报目录(?)[+]一、功能宏优点 在进行软件系统的开发过程中,对不同的功能模块的代码使用分别使用与之对应的宏将其控制起来,其有如下优点: ①、方便移植 在移植过程中,可根据功能宏快速的将功能模转载 2013-01-11 16:18:23 · 1276 阅读 · 0 评论 -
一道考验你设计能力的C++编程题
一道考验你设计能力的C++编程题看到这道题,我们就开始设计这个图像类了,按照面向对象“依赖倒置”的设计原则,我们站在客户的立场,来考虑我们这个类该提供哪些接口,很快我们设计了如下一个类class CSimplePicture{public:CSimplePicture(char* init[], int nCount); CSimplePicture(CSimple转载 2013-01-11 18:25:09 · 1108 阅读 · 0 评论 -
内存池的设计和实现 -- 《C++应用程序性能优化》
分类: 设计思路2012-10-11 11:35 447人阅读 评论(0) 收藏 举报引言本书主要针对的是 C++ 程序的性能优化,深入介绍 C++ 程序性能优化的方法和实例。全书由 4 个篇组成,第 1 篇介绍 C++ 语言的对象模型,该篇是优化 C++ 程序的基础;第 2 篇主要针对如何优化 C++ 程序的内存使用;第 3 篇介绍如何优化程序的启转载 2013-01-11 22:22:32 · 1178 阅读 · 0 评论 -
一些软件设计的原则
2011年4月25日陈皓发表评论阅读评论19,669 人阅读 以前本站向大家介绍过一些软件开发的原则,比如优质代码的十诫和Unix传奇(下篇)中所以说的UNIX的设计原则。相信大家从中能够从中学了解到一些设计原理方面的知识,正如我在《再谈“我是怎么招聘程序”》中所说的,一个好的程序员通常由其操作技能、知识水平,经验层力和能力四个方面组成。在这里想和大家说说设计中的转载 2013-01-12 15:42:09 · 595 阅读 · 0 评论 -
排序算法——桶排序
排序算法——桶排序2009-12-02 12:01 2817人阅读 评论(0) 收藏 举报 桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性转载 2013-01-15 17:07:11 · 631 阅读 · 0 评论 -
约瑟夫环问题
继续笔试准备ing……分享一下昨天做到的其中一题,其实题目很老,也做过n遍了,但复习起来也是颇有韵味,同时还发现另一种妙解,感觉不错的。问题描述: 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus)解法一(My Solution): 思想转载 2013-01-15 16:55:19 · 715 阅读 · 0 评论 -
C++为什么不加入垃圾回收机制
C++为什么不加入垃圾回收机制分类: 文章2011-09-21 10:22 503人阅读 评论(2) 收藏 举报目录(?)[+]Java的爱好者们经常批评C++中没有提供与Java类似的垃圾回收(Gabage Collector)机制(这很正常,正如C++的爱好者有时也攻击Java没有这个没有那个,或者这个不行那个不够好),导致C++中对动态转载 2013-01-19 21:55:58 · 674 阅读 · 0 评论 -
从归并排序到数列的逆序数对(微软笔试题)
从归并排序到数列的逆序数对(微软笔试题)分类: 白话经典算法系列2012-10-15 09:15 5960人阅读 评论(16) 收藏 举报首先来看看原题 微软2010年笔试题在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序数对。一个排列中逆序的总数就称为这个排列的逆序数。如{2,4,3,1}中,2和1,4和3,4和转载 2013-01-19 20:36:47 · 749 阅读 · 0 评论 -
有趣的GOOGLE面试题
白话经典算法系列之十 一道有趣的GOOGLE面试题分类: 白话经典算法系列2012-11-21 09:03 12366人阅读 评论(58) 收藏 举报白话经典算法GOOGLE面试题谷歌面试题基数排序哈希表微博http://weibo.com/MoreWindows已开通,欢迎关注。最近在微博上看到一道有趣的GOOGLE面试题,见下图:文字版:转载 2013-01-19 20:58:40 · 761 阅读 · 0 评论 -
C#技术漫谈之垃圾回收机制(GC)
C#技术漫谈之垃圾回收机制(GC)作者: spring yang 来源: 博客园 发布时间: 2011-09-18 23:17 阅读: 7225 次 推荐: 7 原文链接 [收藏] 摘要:今天我们漫谈C#中的垃圾回收机制,本文将从垃圾回收机制的原理讲起,希望对大家有所帮助。 GC的前世与今生 虽然本文是以.NET作为目标转载 2013-01-20 20:51:16 · 638 阅读 · 0 评论 -
随机生成和为S的N个正整数——投影法
【白话经典算法系列之十三】随机生成和为S的N个正整数——投影法分类: 白话经典算法系列 Windows编程2013-01-04 13:46 2459人阅读 评论(17) 收藏 举报白话经典算法和为S的N个正整数投影法随机三趣题【白话经典算法系列之十三】随机生成和为S的N个正整数——投影法 随机生成和为S的N个正整数有很多种解法。下面讲解一种比较高效且比较转载 2013-01-19 20:56:28 · 738 阅读 · 0 评论 -
回溯法
回溯全排列2013-01-20 00:18 271人阅读 评论(0) 收藏 举报回溯的实质是在问题的解空间进行深度优先搜索。DFS是个图的算法,但是回溯算法中的图在哪里呢?我们把解空间中的一个解状态当成一个节点,由于解空间非常庞大,所以这个图也就大到无法想象了。举个例子吧,比如全排列问题,对于n个元素进行全排列,一共有n!种可能,比如n=9时,一共有9! = 362转载 2013-01-22 18:28:49 · 778 阅读 · 0 评论 -
简易的c垃圾收集器
一个简易的c垃圾收集器2010-05-09 21:47 262人阅读 评论(9) 收藏 举报 这段时间试着实现了一个简易的C语言垃圾收集器,代码不多,但对我的经验而言,确实费了不少心思。 这里感谢云风兄的开源:云风:blog.codingnow.com/2008/06/gc_for_c.html 以及LOGOS兄的对yfgc的解析和实现的一转载 2013-01-22 19:24:45 · 669 阅读 · 0 评论 -
在 C++ 中实现一个轻量的标记清除 gc 系统
最近想把 engine 做一个简单 C++ 封装,结合 QT 使用。engine 本身是用纯 C 实现的,大部分应用基于 lua 开发。对对象生命期管理也依赖 lua 的 gc 系统。关于这部分的设计,可以参考我以前写的一篇 为 lua 封装 C 对象的生存期管理问题 。当我们把中间层搬到 C++ 中时,遇到的问题之一就是,C++ 没有原生的 gc 支持。我也曾经写过一个 gc 库。但在特转载 2013-01-22 19:33:34 · 995 阅读 · 0 评论 -
图论--强连通分支
有向图的强连通分支在有向图G中,如果任意两个不同的顶点相互可达,则称该有向图是强连通的。有向图G的极大强连通子图称为G的强连通分支。把有向图分解为强连通分支是深度优先搜索的一个经典应用实例。下面介绍如何使用两个深度优先搜索过程来进行这种分解,很多有关有向图的算法都从分解步骤开始,这种分解可把原始的问题分成数个子问题,其中每个子子问题对应一个强连通分支。构造强连通分支之间的联系也就把子问题的转载 2013-03-06 10:37:15 · 22774 阅读 · 0 评论 -
和机器学习和计算机视觉相关的数学
分类: 学习点滴2012-11-22 20:07 106人阅读 评论(0) 收藏 举报1. 线性代数 (Linear Algebra):我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是Introduc转载 2013-03-13 11:14:24 · 1057 阅读 · 0 评论 -
Generic Programming Techniques
Generic Programming TechniquesThis is an incomplete survey of some of the generic programming techniques used in the boost libraries.Table of ContentsIntroductionThe Anatomy of a原创 2013-03-28 14:56:34 · 673 阅读 · 0 评论 -
Modern C++ Design 笔记 第二章 Chapter 2. Techniques
分类: 《Modern C++ Design》2008-11-20 10:21 482人阅读 评论(0) 收藏 举报c++iteratordistancereferencestructinteger惊艳的效果还在继续,第二章开始讲到了一些基本的传统的(但是我居然还是不知道的)技法,利用模板的编译特殊编译特性带来了些新的帮助。有印象的东西就是Compile-time asse转载 2013-03-28 14:58:10 · 708 阅读 · 0 评论 -
c++内存管理
分类: C/C++2012-06-13 22:05 174人阅读 评论(2) 收藏 举报c++stringdelete编译器classvector内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发转载 2013-03-16 08:58:31 · 877 阅读 · 0 评论 -
特征点检测学习_2(surf算法)
特征点检测学习_2(surf算法) 在上篇博客特征点检测学习_1(sift算法) 中简单介绍了经典的sift算法,sift算法比较稳定,检测到的特征点也比较多,其最大的确定是计算复杂度较高。后面有不少学者对其进行了改进,其中比较出名的就是本文要介绍的surf算法,surf的中文意思为快速鲁棒特征。本文不是专门介绍surf所有理论(最好的理论是作者的论文)的,只是对surf转载 2013-03-31 21:15:15 · 1725 阅读 · 2 评论 -
循环数组
浅谈循环数组 (2012-03-27 15:55:34)转载▼ 标签: 循环数组分类: 信息学注明:在用于数组的循环移动编程很简洁以前我们学习数组的时候是有开始点跟结束点的线性数组,有一种数组是没有明确结束点的数组,任何一点都可以是开始点又可以是结束点,这种数组是循环数组。如下图:转载 2013-03-19 08:37:58 · 6689 阅读 · 0 评论 -
特征点检测学习_1(sift算法)
特征点检测学习_1(sift算法) sift算法在cv领域的重要性不言而喻,该作者的文章引用率在cv界是number1.本篇博客只是本人把sift算法知识点整理了下,以免忘记。本文比较早的一篇博文opencv源码解析之(3):特征点检查前言1 中有使用opencv自带的sift做了个简单的实验,而这次主要是利用Rob Hess的sift源码来做实验,其实现在的ope转载 2013-03-31 21:17:01 · 1511 阅读 · 0 评论 -
程序员编程艺术:三之三续、求数组中给定下标区间内的第K小(大)元素
程序员编程艺术:三之三续、求数组中给定下标区间内的第K小(大)元素分类: 11.TAOPP(编程艺术) 13.TAOPP array 19.TAOPP algorithms2011-05-28 17:34 17621人阅读 评论(35) 收藏 举报编程算法测试数据结构存储面试 第三章三续、求数组中给定下标区间内的第K小(大)元素转载 2013-03-19 16:21:42 · 1029 阅读 · 0 评论 -
C 堆栈详解
下学期要开嵌入式高级c语言的课,前两天偶尔听老板讲了几句关于堆栈的问题表示才疏学浅没听懂,遂翻阅各大论坛找详细解答,如此找到了这篇文章,堪称神级,下面开始。话说不是故意分几章写的,帖子长度受限制没得办法=。= 看到July大神的微博评论了,我在此写一点我对这个地方难点的理解。首先是这里的ebp,文章里面提到了三个不同的ebp,即main函数前的基址指针、main函数的基址指针和tes转载 2013-03-19 19:04:49 · 1860 阅读 · 0 评论