随笔分类 - [30]C++
-
定时器
摘要:高性能服务开发之定时器 在开发高性能服务器中,定时器总是不可或缺的。 常见的定时器实现三种,分别是:排序链表,最小堆,时间轮。 之前用的定时器是基于最小堆的,在定时器数量不多时可以使用, 目前公司用的框架中的定时器是基于简单时间轮的,但是为了支持大范围的时间,每个齿轮的所维护的链表为有序链表,... 阅读全文
-
C++中的静态多态和动态多态
摘要:C++中的静态多态和动态多态今天的C++已经是个多重泛型编程语言(multiparadigm programming lauguage),一个同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、泛型形式(generic)、元编程... 阅读全文
-
关于对象(思维导图)
摘要:关于对象(思维导图)通过上面整个关于对象的基础知识框架,我们来分析两个例子,看一下在内存中,对象究竟长什么样。Demo1:C++对象模型的内存布局class Point {public: Point( float xval ); virtual ~Point(); float x() const; static int PointCount();protected: virtual ostream& print( ostream &os ) const; float _x; static int _point_count;]};对于上面这... 阅读全文
-
STL算法
摘要:STL算法原创:非变易算法 - STL算法作者:MilkCu摘要:C++ STL标准模板库在数据结构和算法的实践领域发挥着重要作用,极大的提高了开发效率。STL的三大组成部分为容器、迭代器、算法,本文主要讲解STL算法中的非变易算法。本文从实践的角度简单介绍了一下相关函数的使用。引言C++ STL的非变易算法(Non-mutating algorithms)是一组不破坏函数数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配,基本上可用于各种容器。下面的叙述中迭代器区间默认为[first, last),迭代器具有“++”迭代和“*”访问操作。逐个处理算法for_each 阅读全文
-
C++的学习资源
摘要:C++的学习资源本文总结了几个好的C++网站,以及C++方面的经典书籍。所列书籍或标准可以到这里找找电子版。wikipedia关于C++有关条目,注意看后面“参考文献”和“外部链接”:C++ programming language:介绍C++C++ Standard Library:C++标准库,介绍了所有51个头文件C++ STL:STL是C++标准库的一部分(也有人用STL表示C++标准库)Boost (C++ libraries):被称为准标准库,C++11标准库很多是采纳Boost库的Outline of C++:列举了和C++相关的概念,如“一次定义准侧”、“元编程”C++学习参考 阅读全文
-
游戏引擎架构
摘要:《游戏引擎架构》信息总汇2014-02-18 10:23 by Milo Yip,1453阅读,9评论,收藏,编辑豆瓣当当亚马逊China-pubPDF样章试读微盘下载微云下载基本信息作者:Jason Gregory (杰森.格雷戈瑞)译者:Milo Yip(叶劲峰)原书名:Game Engine Architecture出版社:电子工业出版社出版时间:2014-1-1开本:16页数:800字数:1093400ISBN:9787121222887内容简介《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽 阅读全文
-
程序托盘图标+右键弹出菜单
摘要:win32进阶之路:程序托盘图标+右键弹出菜单开场白 本次介绍两个非常棒且实用的技巧:程序托盘图标和右键弹出菜单,效果如下图。 程序托盘图标用了迅雷的图标,右键点击时候会弹出三个选项的菜单。 程序托盘图标设置 我会用尽可能清晰明了的步骤介绍方式来讲述,我假设大家已经动手写了属于自己的windows窗体,刚学习win32的朋友可以看一下我之前的博客,有介绍如何从头创建属于自己的第一个windows窗口,也可以直接参照本文末尾贴出的完整代码做一些参考。如果大家觉得其他方式更好或者对讲述不理解的可以评论或者发送给我的邮箱believing_dan@hotmail.com,QQ382128698... 阅读全文
-
阅读Google的C++代码规范有感
摘要:阅读Google的C++代码规范有感李开复曾在微博上说过,Google的C++代码规范是全球最好的一份C++代码规范,没有之一。最近花了点时间看了下这份代码规范,收获确实很大,在编程过程中一些乱七八糟的坏习惯也该改一改了。最新的英文版见http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml,2009年有人翻译的一份见http://ishare.iask.sina.com.cn/f/19210212.html?sudaref=www.google.com.hk&retcode=0。 下面几个是我个人觉得收获比较大的几点 阅读全文
-
类管理指针成员
摘要:类管理指针成员c++编程提倡使用标准库,一个原因是标准库大胆减少对指针的使用。但是许多程序是离不开指针的。包含指针的类需要特别注意复制控制,原因是复制指针时只复制指针中的地址,而不复制指针所指向的对象。这样当把一个对象复制给另一个对象后,当改变一个对象后,另一个对象也会收到牵连。另外一个对象释放掉后,其指针已经被释放掉。而另一个对象还不知道,其实该对象中的指针已经成为悬垂指针。这样再操作就会出现错误。1. 定义智能指针类原理:定义一个计数的类,所有复制的都是指向这一个类,每复制一次,该类加1一次;每析构一次,该类减1一次。当次数为0时,释放掉动态申请的空间。图例:1)定义一个对象2)复制一个对 阅读全文
-
MFC的本质
摘要:MFC的本质一、引言上一专题中,纯手动地完成了一个Windows应用程序,然而,在实际开发中,我们大多数都是使用已有的类库来开发Windows应用程序。MFC(Microsoft Foundation Class, 微软基础类库)是微软为了简化程序员的开发工作而将Windows API 封装到C++类中,利用这些类,程序员可以有效地完成Windows平台下应用程序的开发。本专题将详细剖析它。二、利用向导创建一个MFC程序用于帮助有效地开发Windows应用程序的类库除了MFC外,还有其他开源类库提供,比如说QT,只是QT不是微软开发的罢了,为了更好地剖析MFC,下面让我们用Visual Stu 阅读全文
-
服务运行、停止流程浅析
摘要:玩转Windows服务系列——服务运行、停止流程浅析通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大家可要睁大眼睛看清楚了。接下来研究一下Windows服务的启动和停止的流程。启动流程启动时自然是从程序的入口点开始extern "C" int WINAPI _tWinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpCmdLine*/, int nSh... 阅读全文
-
c++对象内存布局的理解
摘要:我对c++对象内存布局的理解引言结合网上的一些资料,通过自己的一番摸索,得出了一点个人见解。现在写下来,希望与各位同学共同探讨,共同进步。以下所有代码均是在VS2012下测试。一个普通的基类 1: #include 2: using namespace std; 3: 4: class Base 5: { 6: public: 7: Base(): 8: i(0) 9: { 10: } 11: void test(){ 12: cout << "Base::test" << " i =... 阅读全文
-
C++反汇编与逆向分析技术揭秘
摘要:C++反汇编-继承和多重继承学无止尽,积土成山,积水成渊-《C++反汇编与逆向分析技术揭秘》 读书笔记一、单类继承在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的内存结构中,父类私有的成员数据依然存在。C++语法规定的访问限制仅限于编译层面,在编译过程中进行语法检查,因此访问控制不会影响对象的内存结构。子类未提供构造函数或析构函数,而父类却需要构造函数与析构函数时,编译器会为子类提供默认的构造函数与析构函数。但是子类有构造函数,而父类不存在构造函数,且没有虚函数,则编译器不会为父类提供默认的构造函数。1. 内存结构:①先安排父类的数据②后安排子类新定义的数据说明:基于上述的内存 阅读全文
-
OpenCascade Matrix
摘要:OpenCascade MatrixOpenCascade Matrixeryar@163.com摘要Abstract:本文对矩阵作简要介绍,并结合代码说明OpenCascade矩阵计算类的使用方法。关键字Key Words:OpenCascade、Matrix、C++一、引言Introduction矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。作为解决线性方程的工具,矩阵也有不短的历史。1693年,微积分的发现者之一莱布尼茨建立了行列式论(theory of determinants)。1750年,克拉默又定下了克拉默法则。1800年代,高斯和威廉若尔当建立了高斯-若尔当消去法。从 阅读全文
-
园 首页 新随笔 联系 管理 订阅 订阅 RTSP协议转换RTMP直播协议
摘要:RTSP协议转换RTMP直播协议 RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP直播数据,实时转换为RTMP直播协议,推送到FMS、Red5、wowza server等RTMP服务器,以实现flash观看RTSP直播源的需求。程序同时也具备从FLV文件获取输入数据并转换RTMP直播。实现的思路分享如下。要点分析 首先,程序的主要目的,是从多路RTSP输入源中提取AAC编码的音频和H.264编码视频数据,并生成RTMP数据包,然后组装RTMP推送协议,并发往RTMP服务器。在发送的过程中,要求.. 阅读全文
-
【C++ 中文手册】即将完成
摘要:【C++ 中文手册】即将完成内容包含C++11,历时一年,日夜赶工,即将完成!该参考手册主要由以下四部份内容组成:C++ 语言C++ 继承了 C 语言 的大部分语法,并在其基础上修改或增加部分语义,包括:操作符及操作符重载(Operators and operator overloading)、内存管理(Memory management)、模板(Templates)、对象(Objects)、多态(Polymorphism)。(暂未开始)标准 C++ 库C++ 标准库提供了常用算法或组件的实现,包括:向量(Vector)、列表(List)、映射(Map)、集合(Set)、队列(Queue)、栈 阅读全文
-
C++中的虚函数总结
摘要:C++中的虚函数总结一、什么是虚函数、纯虚函数、抽象基类 虚函数:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数。 纯虚函数:是一种特殊的虚函数,使用virtual关键字,并且在其后面加上=0。 抽象基类:在基类中加入至少一个纯虚函数,使基类成为抽象类。二、为什么要使用虚函数 在理解这个问题前,就必须要理解什么是晚捆绑。 晚捆绑是相对于早捆绑而言的,那么什么又是捆绑呢?把函数体与函数调用相联系称为捆绑,当捆绑在程序运行之前完成时,这称为早捆绑。那么当捆绑根据对象的类型,发生在运行时,就称为晚捆绑。 而使用晚捆绑,无需检查对象的类型,只需要检查对象是否... 阅读全文
-
Google C++测试框架系列:入门
摘要:Google C++测试框架系列:入门原始链接:V1_6_Primer注GTest或者Google Test: Google的C++测试框架。Test Fixtures: 这个词实在找不到对应的中文。Bug: 太常用了,不翻译。House keeping chores: 家常事务。指非核心的编码工作,比如测试代码的assert, log以及用例管理等工作。set-up/tear-down: 指运行测试前的准备和之后的清理工作。test case: 测试用例,管理测试的单位,一个测试用例可以包含一个或多个测试。在阅读之前,推荐阅读《为什么有如此多的C++测试框架 - from Google Te 阅读全文
-
模板的简单介绍与使用
摘要:模板的简单介绍与使用模板的简单介绍与使用2013-11-07 18:12 by 烟,灭在风里,242阅读,0评论,收藏,编辑什么是模板?模板(template)指c++中的函数模板与类模板,大体对应于C#和Java众的泛型的概念。目前,模板已经成为C++的泛型编程中不可缺少的一部分。模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号括住的一个或者多个模板形参的列表,形参之间以逗号分隔。 模板形参可以是表示类型的类型形参,也可以是表示常量表达式的非类型形参。非类型形参跟在类型说明符之后声明。类型形参跟在关键字class或typename之后定义(至于class与typen 阅读全文
-
WINDOWS7(vs2012+wdk7.6) 配置驱动开发环境
摘要:WINDOWS7(vs2012+wdk7.6) 配置驱动开发环境合肥程序员群:49313181。 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入)Q Q:408365330 E-Mail:egojit@qq.com1.新建C++Win32控制台空项目2. 新建项目Driver”配置“ ,点击下拉按钮-点击(配置管理器)3.输入名称(Driver),其他的不需要任何修改!4.打开属性管理器,右击弹出Driver的属性右击打开Driver属性分别配置相关属性就OK了。5.最后就一步步配置相关属性一. 设置VC++路径a. 配置可执行文件目录:D:\WinDDK\7600.163 阅读全文