C++
文章平均质量分 85
C_peter
这个作者很懒,什么都没留下…
展开
-
多叉树构建, 遍历(层次优先,深度优先),应用
项目上遇到了一个典型的多叉树应用案例, 记录一下。 (1) //结构typedef struct st_OriTree{ int levelValue; //树的level int orderValue; //排序值 QString nameValue; //当前节点名称 QString preNameValue; //前置节点名称 QM原创 2017-11-03 17:50:18 · 4853 阅读 · 0 评论 -
Windows Embedded CE 6.0 Internals (1) Kernel Overview
最近在学习Windows Embedd CE 6.0和Windows桌面系统内部一些知识,这篇文章是对部分内核知识的整理和总结,跟各位博客园的朋友分享。Windows Embedded CE 6.0是非常优秀的嵌入式系统(不是做广告哦^^),对其内核的学习对我们开发、移植驱动和应用程序,对开发、移植嵌入式系统都非常有好处。最好的学习方式就是看源码啦,直接看源码有点困难,所以这篇文章转载 2014-07-07 10:58:30 · 770 阅读 · 0 评论 -
Unicode字符集下CString与char *转换 (解决中文乱码等)(转)
Unicode字符集下CString与char *转换 (解决中文乱码等)(转)(2012-03-29 09:05:47)转载▼标签:杂谈分类: vc (MFC)UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一转载 2014-07-18 23:30:43 · 808 阅读 · 0 评论 -
微软面试心得总结
当我接到微软HR电话的,甚是欣喜!~毕竟在无数的developer中能够选到我的简历(未投简历,HR说是智联上看到的!)。约好了第二天面试,我就马不停蹄的准备。传说中微软所有的笔试、面试都是考察算法,所以我也做了很多准备。 笔试:到达微软中国研究院的时候,由bony(美女,后来知道是个PM)带我上去,然后就开始做笔试题,笔试题时间1个小时,全部是英文,最后两道是算法编程题,而且注明了必原创 2014-05-05 20:41:58 · 27255 阅读 · 11 评论 -
个人有关内存的思考:
对于应用程序而言,内存中存储区域大致有堆、栈、静态区域三个部分。系统在分配内存的时候,会在内存中寻找一个能够满足申请大小的区域进行标记,并返回此区域的大小。虚拟内存的使用很大程度上解决了大文件对于内存的困扰,但是相应的付出了系统的开销。在使用虚拟内存的使用,系统会不断的将内存中的一个区域映射到磁盘上,并不断的进行页交换和提交。 堆:对于应用程序而言,是一块由系统为应用程序而分配的内存原创 2014-04-23 16:16:00 · 1028 阅读 · 0 评论 -
再次解读 new malloc
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.原创 2014-04-23 15:40:30 · 698 阅读 · 0 评论 -
C++ JSONCPP 库 解析 Json数据
JSONcpp 库 是什么?JSON 是什么?这两个问题原创 2014-04-14 14:03:11 · 2464 阅读 · 1 评论 -
Windows下编译WebRTC过程 -----包含最新版本webrtc同步!
[置顶] Windows下编译WebRTC过程转自:http://blog.csdn.net/sxwyf248/article/details/7060386 文中所有安装文件,都已经打包!见本人资源!1. 下载Google Depot Tools,这是Google 在 Chromium 中就开始使用的分发工具。地址:https://sites.google.com转载 2014-03-10 10:01:45 · 14038 阅读 · 1 评论 -
TCHAR 转换 string
刚才用到了这个变量的转换,想着写个函数吧,但是手懒了一下!直接问度娘了!一问让我大吃一惊,百度出来的转换函数几乎如出一辙,肯定是一个人发,其他人copy的,但是copy的人,可真够牛逼!一个根本无法使用的函数,愣是大义凛然的放在那里?这不得不让我想到了一个问题,前几天有人问我,小甲:“为啥同样工作3年的程序猿,别人都1.3W以上了,但是我还是7K?”。当时我说了句“这个得问你自己”。其实我当时也没原创 2014-02-26 17:29:16 · 35254 阅读 · 9 评论 -
MFC MDI和SDI美化----之客户区美化
1、美化方式:贴图,重绘背景2、一、MDI客户窗口 一个MDI应用的主框架窗口包含一个特殊的子窗口称为MDICLIENT窗口。MDICLIENT窗口负责管理主框架窗口的客户区。MDICLIENT窗口本身有自己的子窗口即由CMDIChildWnd派生的文档窗口,也就是MDI子窗口。MDI主框架窗口负责管理MDICLIENT子窗口。当控制条(菜单条,状态条等)发生变化时,MDI主框架窗口重新原创 2014-02-12 09:53:59 · 3979 阅读 · 1 评论 -
MFC MDI和SDI非客户区框架界面美化之----界面全面美化
VS2008以上的开发平台,微软提供了“视觉管理器和样式”这么一个概念,我们可以通过继承视觉管理器提供的样式进行美化界面,包括MDI框架等。也可以实现构造自己的皮肤界面库,从而避免无休止的重绘、刷新界面。原创 2014-02-12 10:49:28 · 12599 阅读 · 4 评论 -
异步I/0基础
一、异步设备I/O基础与计算机执行的大多数其他操作相比,设备I/O是其中最慢、最不可预测的操作之一。但是,使用异步I/O能够更好的使用资源并创建出更加高效的应用程序。假设一个线程向设备发出一个异步I/O请求。这个I/O请求被传给设备驱动程序,后者负责完成实际的I/O操作。当驱动程序在等待设备响应的时候,应用程序的线程并没有因为要等待I/O请求完成而被挂起,线程会继续运行并执行其他有转载 2014-01-13 20:37:15 · 1902 阅读 · 0 评论 -
Windows Embedded CE 6.0 Internals (5) The Mechanism of API
引言一般的,我们在编写用户态程序(包括普通的应用程序、服务程序、用户态驱动、一些扩展插件)时,每当我们遇到一个不熟悉的API,我们就会打开开发文档,或者MSDN,查查每个参数是怎么填的。(我想你应该没把这些API给背下来了吧^^)我们在调试时发现执行到这些API时是跟不进去的,那么你想过它们是如何进入操作系统里面工作的吗?它们又是如何在操作系统里面工作的?比如文转载 2014-07-07 14:03:30 · 550 阅读 · 0 评论 -
Ipsec transport mode and turnnel mode
隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。通常,隧道模式应用在两个安全网关之间的通讯。传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的原创 2014-06-17 09:47:42 · 6711 阅读 · 0 评论 -
有关windows Gateway Ipsec 和NAT 兼容性问题
1、简单通信拓扑: 将Windows 平台 作为一个网关,同时开启IPsec 和NAT来支持private和public的通信。注意:IPSEC Gateway 和 Client1 Ipsec 之间没有存在NAT ,否则是另外一种情况,和本文描述无关。本文只是工作笔记,不代表任何官方声明。2、现象描述: a. Enable NAT,but Disbale原创 2014-06-19 11:22:15 · 1643 阅读 · 0 评论 -
多叉树应用(多叉树创建, 遍历)
多叉树创建, 遍历...原创 2017-11-03 17:32:01 · 9721 阅读 · 0 评论 -
各种Hash函数和代码
常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一转载 2017-03-12 15:46:48 · 1468 阅读 · 0 评论 -
宏与内联函数 深度解析
用内联取代宏:1.内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。文章(一)内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如:转载 2016-12-27 15:49:04 · 445 阅读 · 0 评论 -
VS2013 Codejock 实现 MFC 换肤
之前一直在用Skin++ , 但是越来越发现占用资源太多, 导致程序效率很低 。 最主要是版本更新太慢 。所以花了几个小时研究了一下 codejock .1, 版本 : codejock 目前国内破解版last version 就是 15.3.1 . 这个版本只支持到 VS2010 ,最主要是组件支持的不是很多. 官方现在已经是17.2 了, 支持 win10, VS2015 等 ,还原创 2016-07-24 16:58:52 · 6056 阅读 · 3 评论 -
webrtc--AudioProcessing-- 音频降噪的处理过程
1.AudioProcessing的实例化和配置: AudioProcessing* apm = AudioProcessing::Create(0);apm->level_estimator()->Enable(true);//启用重试次数估计组件apm->echo_cancellation()->Enable(true);//启用回声消除组件apm->echo_cancellation()转载 2015-09-02 15:14:28 · 10975 阅读 · 1 评论 -
WinCE线程调度
WinCE使用抢占式的基于优先级的时间片轮转调度算法调度线程。对于就绪队列中的线程,优先级高的先获得时间片运行,优先级相同时按时间片轮转,正在运行的线程用完时间片后无论是否执行完毕都得让出CPU退回就绪队列等待下一次时间片分配。WinCE优先级分256级(0~255)其中应用程序可使用248~255,其它的供驱动及内核使用。WinCE线程状态转换图WinCE转载 2015-03-09 17:18:25 · 1232 阅读 · 0 评论 -
App and driver 电源管理器注册
电源注册过程:1、DevicePowerNotify Sends a request to the Power Manager about changing a power stateof a peripheral device.2、RequestPowerNotifications (注册电源管理器) Registers a m原创 2014-08-12 15:50:15 · 1166 阅读 · 0 评论 -
WCE 电源管理器(开胃菜)
研究了将近一个月的 NDIS、RDIS以及电源管理器,分析了无数的源代码。赶快记一下,不然弄完其他模块,这部分又忘了。电源管理器的简单介绍网友已经写得很清楚了,感谢各位同仁。补存转载 2014-08-11 15:14:31 · 1441 阅读 · 0 评论 -
理解Windows内核模式与用户模式
1、基础运行 Windows 的计算机中的处理器有两个不同模式:“用户模式”和“内核模式”。根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行,但某些驱动程序在用户模式下运行。当启动用户模式的应用程序时,Windows 会为该应用程序创建“进程”。进程为应用程序提供专用的“虚拟地址空间原创 2014-06-19 17:19:45 · 19668 阅读 · 0 评论 -
细化 TLS原理及分类
本文为线程本地存储TLS系列之分类和原理。一、TLS简述和分类我们知道在一个进程中,所有线程是共享同一个地址空间的。所以,如果一个变量是全局的或者是静态的,那么所有线程访问的是同一份,如果某一个线程对其进行了修改,也就会影响到其他所有的线程。不过我们可能并不希望这样,所以更多的推荐用基于堆栈的自动变量或函数参数来访问数据,因为基于堆栈的变量总是和特定的线程相联系的。不过如果某些转载 2014-06-20 09:59:23 · 2017 阅读 · 0 评论 -
Thread Local Storage
Instance(单件)机制原本是让代码执行时只有一个实例,但有的时候又希望每个线程各自能有自己的"单件"相互不影响,处理类似的需求最先想到的就是全局表,然后按线程id或是管理线程的key索引到对应的单件上,取全局表的时候需要加锁。 虽然这样也能实现目的,但是代码看上去很不自然。最近发现还是有更自然的方法能实现这一点,就是 TLS 线程本地存储(Thread Local Storage转载 2014-06-19 17:50:47 · 780 阅读 · 0 评论 -
I/O异步demo
HANDLE WINAPI CreateIoCompletionPort( __in HANDLE FileHandle, __in HANDLE ExistingCompletionPort, __in ULONG_PTR CompletionKey, __in DWORD NumberOfConcurren转载 2014-01-13 20:39:26 · 923 阅读 · 0 评论 -
VC 开机自动启动程序代码
VC 开机自动启动程序代码很多监控软件要求软件能够在系统重新启动后不用用户去点击图标启动项目,而是直接能够启动运行,方法是写注册表Software\\Microsoft\\Windows\\CurrentVersion\\Run 。参考程序可以见下:(查找程序目录的执行文件,存在则进行添加注册表操作) //实用代码一int C***Dlg::Creat转载 2013-12-26 16:24:11 · 923 阅读 · 0 评论 -
KMP算法实现
#include "stdafx.h"#include #include using namespace std;void get_next(string T,int *next);int Index_KMP(string s,string T,int pos);void get_nextval(string T,int *nextval);void get_next(原创 2013-06-03 17:47:13 · 644 阅读 · 0 评论 -
类中线程的声明注意事项
其实类的静态函数就跟全局函数是一个样子的, 只是调用的时候要加下个类修饰符而以.至于为什么不能是非静态成员函数呢, 因为非静态成员函数都会在参数列表中加上一个this指针为为参数, 这样的话你写的线程函数就不符合调用规定了.比如 DWORD WINAPI ThreadFun(LPVOID); 是非静态的,实际编译后,就会变成DWORD WINAPI ThreadFun(LPVO原创 2013-04-17 22:39:57 · 757 阅读 · 0 评论 -
有关中断
中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,再返回被中断程序的间断处,继续执行原程序。 硬件中断导致处理器通过一个上下文切换(context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主); 软件中断则通常作为CPU指令集中的一个指令原创 2013-04-17 21:49:38 · 1064 阅读 · 0 评论 -
有关NEW MALLOC区别
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于原创 2013-04-17 21:51:09 · 633 阅读 · 0 评论 -
有关0x67a9
绝对地址赋值int* 2009-12-22 16:19:44| 分类:c++ | 标签:|字号大中小 订阅嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66.编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。 这一问题测试你是否知道为了访问一绝对地址把一个原创 2013-04-17 21:35:17 · 1485 阅读 · 0 评论 -
语音自动化之系统配置
VC 下Microsoft Speech SDK 5.1 开发小结1.首先开发得需要Microsoft Speech SDK 5.1的支持,以下是下载地址http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b45302.下载后,执行安装下载完毕后首先安装原创 2013-03-25 15:29:15 · 2059 阅读 · 3 评论 -
OpenCV图像识别、移动侦测、边缘检测实现及 cvCopy()和cvCloneImage()的区别
#include #include #include #include #include int main( int argc, char** argv ){//声明IplImage指针 IplImage* pFrame = NULL; //pFrame为视频截取的一帧 IplImage* pFrame1 = NULL; //第一帧原创 2013-03-12 09:27:54 · 22612 阅读 · 0 评论 -
针的魅力(来自CSDN博客)
指针的魅力序指针说:love me,love me!但是他对指针说:I hate u,I hate u!…… 指针仅仅是作为指针,我们可以把它当做有用的工具,为我们提供便利与好处。说起工具不得不让我想起一样东西——锄头,因为原人类有了锄头才使人类文明进入了开荒造田的农业时代,解决了温饱,开启了人类新纪元。可以这么说吧锄头使人类文明得到进步,没有锄头也就没有今天的转载 2013-03-12 09:10:37 · 839 阅读 · 0 评论 -
ADO版本问题解决方案
ADO在高版本向低版本是不兼容的~下面方法可行!1、 下载Msado60_Backcompat_i386.tlb文件,存放到指定目录(相对比较稳定)建议: C:\Program Files\Common Files\System\ado\msado60_Backcompat_i386.tlb2、 用regtlbv12.exe注册C:\Program Files\C原创 2013-03-12 09:48:40 · 7384 阅读 · 0 评论 -
atoi () 单字节 双字节
atoi () 把const char *转化为int ;在unicode 版本用 :_wtoi() ;尽量使用:_ttoi() 适用unicode 和非unicode版本,定义如下:#ifdef UNICODE#define _ttoi _wtoi#else#define _ttoi atoi原创 2012-09-25 09:47:33 · 3046 阅读 · 0 评论 -
用sprintf完成ANSI与UNICODE的转换
UNICODE转ANSI:int nLen=wcslen(str);char* szAnsi = new char[nLen+ 1]; sprintf(szAnsi,"%S",str); ANSI转UNICODE:int nLen=wcslen(str);wchar_t* szunicode = new wchar_t[nLen+ 1]; wsprintf(szun原创 2012-09-25 09:43:28 · 3288 阅读 · 0 评论 -
wsprintf swprintf sprintf 相关
wsprintf要求的第一个参数是LPTSTR,假设环境是UNICODE的,那么LPTSTR相当于就是wchar_t* 就是宽字符指针,在非Unicode环境下就是char*有关格式化字符串的函数还有如下,详细用法各位可以查看MSDN,和上面所介绍的都差不多sprintf 单字节版本的C/C++库函数swprintf 宽字节版本的C/C++库函数而我们上面的wspr原创 2013-06-05 12:08:22 · 1597 阅读 · 0 评论