- 博客(58)
- 资源 (9)
- 收藏
- 关注
转载 金庸武侠第一高手盖棺定论
金庸小说中的第一高手是谁?有人说是无名老僧,有人说是独孤求败,也有人说是达摩祖师,莫衷一是。其实都不是,真正的第一高手,是一个你不可能猜到的人,因为这个人的名字,在金庸作品中几乎没有提到过(只在《碧血剑》中提到过一次),究竟是谁?先卖个关子。我们首先考证一下《笑傲江湖》中的高手,以此为坐标系,来考察金庸的其他作品。请耐心看下去,最后的结果,你绝对想不到。 笑傲中,东方不败对任我行,令狐冲,向闻天,上官云四人的围攻占有绝对优势。任我行,令狐冲都是绝顶高手,向闻天是一流高手(比任我行,左冷禅等略逊半筹,
2011-05-27 09:12:00
3842
3
原创 Win32下两种用于C++的线程同步类(多线程实现加锁解锁)
线程同步是多线程程序设计的核心内容,它的目的是正确处理多线程并发时的各种问题,例如线程的等待、多个线程访问同一数据时的互斥,防死锁等。Win32提供多种内核对象和手段用于线程同步,如互斥量、信号量、事件、临界区等。所不同的是,互斥量、信号量、事件都是 Windows的内核对象,当程序对这些对象进行控制时会自动转换到核心态,而临界区本身不是内核对象,它是工作在用户态的。我们知道从用户态转换到核心态是需要以时间为代价的,所以假如能在用户态就简单解决的问题,就可以不必劳烦核心态了。 这里我要说的是两种用于
2011-05-19 11:49:00
5565
原创 CString及string,char *与其他数据类型的转换和操作
(2)转换: ●数学类型与CString相互转化 数学类型转化为CString 可用Format函数,举例: CString s; int i = 64; s.Format("%d", i) CString转换为数学类型:举例 CString strValue("1.234"); double dblValue; dblValue = atof((LPCTSTR)strValue); ●CString与char*相互转换举例 CString strValue(“Hello”
2011-05-04 21:49:00
805
原创 C++操作.ini配置文件的API
概述 在程序中经常要用到设置或者其他少量数据的存盘,以便程序在下一次执行的时候可以使用,比如说保存本次程序执行时窗口的位置、大小、一些用户设置的 数据等等,在 Dos 下编程的时候,我们一般自己产生一个文件,由自己把这些数据写到文件中,然后在下一次执行的时候再读出来使用。在 Win32 编程中当然你也可以这样干,但 Windows 已经为我们提供了两种方便的办法,那就是使用注册表或者 ini 文件(Profile)来保存少量数据。本文中先介绍一下 .ini 文件的使用。 ini 文件是文本文件,中间的数
2011-05-03 19:50:00
727
原创 一道经典的面试题:如何从N个数中选出最大(小)的n个数?
北京交大LuoBin 这个问题我前前后后考虑了有快一年了,也和不少人讨论过。据我得到的消息,Google和微软都面过这道题。这道题可能很多人都听说过,或者知道答案(所谓的“堆”),不过我想把我的答案写出来。我的分析也许存有漏洞,以交流为目的。但这是一个满复杂的问题,蛮有趣的。看完本文,也许会启发你一些没有想过的解决方案(我一直认为堆也许不是最高效的算法)。在本文中,将会一直以寻找n个最“大”的数为分析例子,以便统一。注:本文写得会比较细节一些,以便于绝大多数人都能看懂,别嫌我罗嗦:) 我很不确定多少人有耐
2011-04-09 19:16:00
908
原创 求N个数中最大的K个数的几种方法与实现
某笔试题:内存中有一个长数组,有100W条记录, 每个记录为一个struct array, sizeof( array ) = 512, 在这个struct里有一个int型成员变量weight, 现要取得按个weight值从大到小排序的前500个数组单元(求N里的前K个大的数) 直接贴代码吧,废话少讲(先说方法吧)~~~~解释在注释里:) const static long N = 10000000; const static long K = 100; static long cnt;
2011-04-09 19:11:00
1041
转载 Thunderbird + Enigmail + GPG实现电子邮件签名和加密
一、需要的软件 ①Mozilla Thunderbird 2.0.0.6简体中文版,http://www.newhua.com/soft/3134.htm ②GnuPG 1.47,ftp://ftp.gnupg.org/gcrypt/binary/gnupg-w32cli-1.4.7.exe ③GPGShell 3.63,http://www.jumaros.de/rsoft/download/gpgsh.php ④Enigmail 0.95.3,https://addons.moz
2011-03-15 20:28:00
9297
转载 参数传递二维数组
今天在论坛上有朋友提问:声明函数如下void function(int** pInt),意图是想参数传递一个二维数组。于是就定义了一个二维数组,比如 int[1][1],然后调用函数。结果如何?当然是失败了,编译器提示:cannot convert parameter 1 from 'int [1][1]' to 'int **',参数类型不匹配。上述过程我自己也试了,当然不匹配,类型完全不一样嘛。然后我就想了:如果要将一个二维数组作为形参,那么函数该怎么声明? 来看《C++ Primer》中
2011-03-13 18:37:00
1052
原创 C++的输入输出流、文件操作
1. C++保留C的输入输出单个字符的函数 (1) putchar(c) —— 字符输出 例程: #include using namespace std; int main() { char a,b,c; a='B'; b='O';c='Y'; putchar(a); putchar(b); putchar(c);putchar('/n'); putchar(66);putchar(79);putchar(89);putchar(1
2010-12-20 21:57:00
1257
原创 systemparametersinfo详细
应用SystemParametersInfo函数可以获取和设置数量众多的windows系统参数。这个小程序就是运用了SystemParametersInfo函数来设置桌面的墙纸,而且程序可以让我们选择多幅墙纸图片,程序会以一定的时间间隔自动改变墙纸。 我们先来看看SystemParametersInfo函数的定义和参数: 使用API函数之前必须先在程序中声明如下: Private Declare Function SystemParametersInfo Lib "user32" Alias "
2010-12-02 13:53:00
13431
原创 Matlab中的保存数据语句比较
在Matlab中,我们经常遇到需要将一些中间数据或者最终结果保存为文本形式(*.txt);其中提供了多种保存数据的语句,应该如何选择喃? 在此,小弟在使用了fprintf、save、dlmwrite的基础上,对这三种方法进行了一个比较: fprintf(fid, format, A, ...),将数据A以format表示的格式写入fid(文件)中,fid由fopen函数返回得到。 实例: x = 0:.1:1; A = [x; exp(x)]; fid = fopen('ex
2010-11-08 23:14:00
3125
转载 使用wxWidgets for C++ 从资源文件中静态装载图像
在wxWidgets中装载图像是非常容易的,但是如果将图像文件和可执行文件放到一起,在发布时只需要发布可执行文件,要实现这种功能,一般可以使用资源文件来解决。在windows下的资源文件的源文件是*.rc,编译后叫*.res。在linux下类似,源文件为*.xrc,编译后叫*.xres。但它们是xml格式的,要装载这种资源文件也得动态进行装载。相当于配置文件。 如果想将其直接编译进可执行文件。需要一个工具wxrc。这个工作在wxWidgets中的untils目录中,可自己编译。可使用这个工具将*
2010-11-08 16:11:00
873
原创 c++ 中的fill 和memset
fill 的头文件是 命名空间是std; 用法: eg: #include using namespace std; int main() { char s[100]; fill(s,s+100,'a'); for(int i=0;i using namespace std; int main() { int d[100]; fill(
2010-11-02 10:57:00
2649
原创 多维数组的动态分配
与一维数组相比,在自由存储器中为多维数组分配内存需要以略微复杂的形式使用new运算符。假设我们已经适当地声明了指针pbeans,为了使本章前面曾经用过的数组beans[3][4]获得空间,可以使用下面这条语句: pbeans = new double [3][4]; // Allocate memory for a 3x4 array 我们只需在数组元素类型之后的方括号内指定数组两维的大小即可。如下所示,用new运算符给三维数组分配空间只需再指定第三维即可:pBig
2010-11-02 09:18:00
690
原创 vc对.mat文件的读取
1、选VC的菜单Tools->Options,在弹出对话框中点选Directories标签,在右方的下拉菜单中选择Include files,然后在下方列表中添加($MATLAB$)externinclude;再在右方的 下拉菜单中选择Library files,然后在下方列表中添加($MATLAB$)externlibwin32microsoftmsvc60。 注:上面的($MATLAB$)以计算机中MATLAB的安装位置替换;如果使用的VC版本是5.0,则把列表中添加路径中的msvc60替换成ms
2010-10-25 16:15:00
1642
原创 vs2008 配置 wxwidgets 环境
1 、去官网 http://www.wxwidgets.org/downloads 下载一个wxMSW版本的 wxWidgets 。 有安装版和 压缩版的, 我这采用当时最新的 wxMSW-2.8.11 2、解压或者安装源文件包 假如路径是: D:/wxMSW-2.8.11 3、编译 用vs2008打开 D:/wxMSW-2.8.11/build/msw/wx.dsw 然后出现转换工程的界面,选择全部。 然后,配置编译的模式,如下选择: 然后点击 生成
2010-10-13 14:31:00
1400
原创 MATLAB中的一些小技巧
1. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断。MATLAB这时可能正疲于应付,响应会有些滞后。 2. figure命令新建一个绘图窗口 figure 可以打开一个空的绘图窗口,接下的绘图命令可以将图画在它里面,而不会覆盖以前的绘图窗口。当有多个figure窗口时,在命令窗口中执行如Plot等命令将覆盖当前figure窗口中的对象。所谓的当前figure窗口,也就是最后一次查看的窗口(可以用命令gcf得到)。
2010-10-12 14:19:00
741
原创 Matlab注释技巧
1. m文件如果是函数,保存的文件名最好与函数名一致,这点都很清楚。不过容易疏忽的是,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字 /下划线等组成。原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。例如,写个m文件,命名为spy,运行时就弹出一个怪怪的figure,呵呵,我当初还以为是什么bug。 2. 调试程序时,经常要屏蔽掉一整段程序进行,也就是将其标示注释符%。有两个办法:一种是选定后 ctrl+r和ctrl+t 一种是在段首加 if 0 ,段尾
2010-10-12 14:09:00
2158
原创 MATLAB内存管理
用 Matlab 进行大规模科学计算或仿真时,内存是一个需要时常注意的问题。在matlab里运行 >>system_dependent memstats 就可以看到内存的使用状况。当你写的 Matlab 程序跳出“Out of Memory” 时,以下几点措施是需要优先考虑的解决方法: 1. 升级内存 2. 升级64位系统 3. 增加虚拟内存 4. 采用3GB开关启动系统 由于32位 Windows 操作系统的限制,每个进程只能使用最多 2GB 的虚拟内存地址空间,因
2010-10-11 11:29:00
9458
原创 解决matlab的mat文件与ACCESS2003文件关联冲突问题
随便进入一个文件夹,在菜单栏选择:“工具”-“文件夹选项”,选择“文件类型”标签,单击“新建”,在弹出的对话框中,点击“高级”,输入后缀名“mat”,然后在“关联的文件类型”中选择matlab的数据文件。系统提示要撤销与ACCESS的文件关联吗,选择“是”,“确定”、“应用”。双击打开测试,默认使用matlab程序。问题解决。
2010-09-28 09:25:00
1594
原创 卸载 Visual Studio 2005
卸载 Visual Studio 及其所有组件的过程共分三个步骤。为了避免出现意外行为,必须按下面列出的顺序 执行这些步骤: 步骤 1:卸载随 Visual Studio 一起安装的组件 根据在 Visual Studio 安装期间所选择的功能,计算机上安装有许多附加的组件。这些组件有: MSDN Library for Visual Studio 2005 Microsoft Visual Studio 2005 Tools for Office Runt
2010-09-27 16:32:00
952
转载 图像放大算法概述
在影视制作领域,往往会涉及到将低分辨率的图像放大为高分辨的图像的问题,有时候还会涉及到 非正方形像素到正方形像素的调整问题。本章将在图像放大算法,像素宽高比调整方法以及图像序列放大批处理技术等三方面的问题与读者进行探讨。 一、 图像放大算法 图像放大有许多算法,其关键在于对未知像素使用何种插值方式。以下我们将具体分析几种常见的算法,然后从放大后的图像是否存在色彩失真,图像的细节是否得到较好的保存,放大过程所需时间是否分配合理等多方面来比较它们的优劣。 当把一个小图像放大的时候,比如放大400%,我们可
2010-09-26 21:12:00
1685
转载 Matlab多种图像边缘检测方法
1、用Prewitt算子检测图像的边缘 I = imread('bacteria.BMP'); BW1 = edge(I,'prewitt',0.04); % 0.04为梯度阈值 figure(1); imshow(I); figure(2); imshow(BW1); 2、用不同σ值的LoG算子检测图像的边缘 I = imread('bacteria.BMP'); BW1 = edge(I,'log',0.003); % σ=2 imshow(BW1);titl
2010-09-26 09:42:00
6549
转载 【教程】CoreAVC+Haali安装及设置简易教程(KMPlayer)(4)
四、KMPlayer常用其他设置 1、设置KMPlayer关联格式 调用KMPlayer『参数设置』→『文件关联』→『关联』→点击『仅视频』即可,如果想连音频也采用这个播放器,则选择『全选』。 2、设置KMPlayer自动继续播放 调用KMPlayer『参数设置』→『常规』→『在启动时』→『打开文件状态』选择【自动继续】即可。 3、设置KMPlayer双击全屏 调用KMPlayer『参数设置』→『常规』→『键盘/鼠标』→『左键双击』选择【切换全屏幕】即可,
2010-09-16 22:50:00
3295
转载 【教程】CoreAVC+Haali安装及设置简易教程(KMPlayer)(2)
二、CoreAVC+Haali安装教程 (1)CoreAVC H.264 Video Codec Professional v1.85安装 1、运行『CoreAVC H.264 Video Codec Professional v1.85』安装程序→点击『I Agree』 2、运行注册机『keygen』程序→点击『Generate』→将获得的系列号输入下图→点击『Next』 3、选择『Haali Media Splitter』安装选项→点击『Next』
2010-09-16 22:49:00
3232
转载 【教程】CoreAVC+Haali安装及设置简易教程(KMPlayer)(1)
一、软件下载 注:采用KMPlayer+CoreAVC基本解决一切影音文件,同时对于高清视频可以利用CoreAVC进行软解,其效果相当不错! (1)KMPlayer KMPlayer The Professional Media Player! 它支持 Winamp 2/5 的输入、常规、DSP、视觉效果、媒体库插件。无须注册表支持直接调用 Directshow 滤镜!FFdshow 的视觉特效系统~超强的 GUI 界面~安装电视卡后可以直接代替原软件直接收看电视~支持播放 DV
2010-09-16 22:47:00
3095
转载 Matlab的PCA程序
function varargout = pca(X, N, method) %PCA PRINCIPLE COMPONENTS ANALYSIS % X是n1*n2的,n1是变量个数,n2是样本数 % 返回值p是转换坐标系 N说明投影到N个坐标系上 % p*X 才是投影结果 % Performing principal components analysis on the N1-by-N2 real-valued % data matrix X, where N1 and
2010-09-01 10:09:00
8245
转载 Windows XP中查看图像分辨率及尺寸的方法
某些时候我们可能需要知道电脑中某个图像的分辨率以及尺寸等相关信息,那此时应该怎么办呢?这里向大家介绍两种方法,主要是针对初学者,高手请路过! 方法一:查看图像文件属性 1、选中图像文件,点击鼠标右键→属性 2、在弹出的窗口中切换到“摘要”选项卡,在里面你就可以看到该图像的尺寸、分辨率等相关信息了,相关截图如下所示: 方法二:用Adobe Bridge软件来查看 Adobe Bridge是一款专业的Windows文件浏览器,高手一般都不用Windows的资源
2010-07-27 09:45:00
4097
转载 MATLAB Out of memory问题总结(转载)
首先,我要声明,matlab自带的Help才是最权威的Matlab学习资料,如果有时间好好学习一下或是可以高效的使用的话,一定受益匪浅!比如说像 Out of Memory这个问题,最开始我都是用Help memory,几乎得不到任何信息;然后就是去网上搜索此类问题的解决方法,一般有这几种: 除了升级内存和升级64位系统外,下面几个方法也是解决之道。 # 增加虚拟内存 # 采用PACK (在命令行输入 pack 整理内存空间) # 采用3GB 开关启动系统(修改 c盘根目录 boot.ini 启动选
2010-07-23 15:17:00
1057
转载 在VC++下和VS2005下建立openGL开发环境
<br />首先去openGL那里下GLUT library。在www.opengl.org的网站上有sourcecode下载,这样就需要我们自己去编译。openGL官方是没有提供windows下编译好的dll供我们使用的,但是好心人NateRobins and Paul Mayfield 在 Layne Christensen的帮助下,编译了可以直接使用的文件供我们下载。他们的主页是:http://www.xmission.com/~nate/glut.htmlopenGL官方也提供这
2010-07-07 14:47:00
452
转载 AFX中的全局函数列表
<br />函数名称<br />说明<br />AfxWinInit<br />被WinMain(由MFC提供)调用的一个函数用作MFC GUI程序初始化的一部分<br />AfxBeginThread<br />开始一个新的线程<br />AfxEndThread<br />结束一个旧的线程<br />AfxFormatString1<br />类似printf一般的将字符串格式化<br />AfxFormatString2<br />类似printf一般的将字符串格式化<br />AfxMessageB
2010-07-07 10:35:00
337
原创 AFX中的全局函数列表
AfxWinInit:被WinMain(由MFC提供)调用的一个函数用作MFC GUI程序初始化的一部分 AfxBeginThread:开始一个新的线程 AfxEndThread:结束一个旧的线程 AfxFormatString1:类似printf一般的将字符串格式化 AfxFormatString2:类似printf一般的将字符串格式化 AfxMessageBox:类似Window API函数MessageBox AfxOutDebugString:将字符串输往出错装置 AfxGetA
2010-07-07 10:32:00
533
原创 link2005链接错误
编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定义如下:int g_Test;那么在使用的CPP文件中就应该使用:extern int
2010-07-06 14:08:00
368
转载 混合高斯模型原理
<br />混合高斯模型跟高斯变量之和看起来有一点像, 注意不要把它们弄混淆了. 混合高斯模型给出的概率密度函数实际上是几个高斯概率密度函数的加权和: <br /><br />其中. 定义事件, 则. 据此可以产生服从上述混合高斯概率密度分布的样本.<br />混合分布的均值为<br /><br />方差为<br /><br />计算均值和方差的公式不仅适用于几个(多维)高斯分布混合的情况, 还适用于非高斯分布的情况.<br />高斯变量之和就没什么好说的了, 几个高斯变量之和是一个新的高斯
2010-07-05 14:52:00
2166
转载 C++科学计算库,gsl
很有可能某一天,在程序里面你会需要用到一些函数,比如 Γ 函数,β 函数,还有普通的对数吖之类的,你会想到什么,不会是#i nclude 吧?计算机科学发展了这么多年,已经有了许许多多优秀的科学计算的函数库,涵盖了各种方面,你所要做的,就是导入它们,把参数代入,然后等待结果,呵呵。忘掉那个又大,又慢,又难看,又难操作的MatLab吧(软件要是都象工程或者科学软件那样来开发,也就是只讲功能,根本不管不顾使用者的习惯或者难受程度,计算机行业早就倒闭了……) 下面的文字默认你已经熟练掌握了各种C++编
2010-06-25 16:32:00
1044
转载 图像的膨胀和腐蚀
1.图像膨胀的Matlab实现: 可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。此外,imdilate还可以接受两个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。举个实例如下: 步骤1,首先创建一个包含矩形对象的二值图像矩阵。 >>
2010-06-17 17:15:00
27712
转载 如何用U盘装系统(图解)
在笔记本电脑早已普及到会议室的这个年代,商务人士拿笔记本来演示PPT以及做电子版的会议记录;在笔记本电脑已经普及到教室的这个年代,学生们甚至在用笔记本翻阅资料进行开卷考试。 随着笔记本电脑正在成为人们生活中不可或缺的一部分,新的问题来了,盲目的追求性价比导致的是机身重量肆无忌惮的在力压人们的肩膀,也就是“扁担效应”。有笔记本常识的人都知道,性价比和便携性是笔记本领域的正反命题,它们之间永远对立而不可能和谐相处,即使国家在努力提倡和谐社会。 很多对移动性有要求的用户,在吃了第一个笔记本的性价比甜头的
2010-05-31 19:08:00
1494
转载 Edit控件换行、自动滚屏、设置焦点技巧
在C++文件中 /n就能实现换行,vc的edit和这点不同. ''/r/n"才是换行. EDIT也要设置成MULTILINE的.Auto HScroll改为false,want return设为true. /r是软回车,就是当字符到达一定数满行时不用回车就自动换行 /n是硬回车,就是只有你输入回车键时才换行 经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。 方法一:(当EDIT映射到一CString时) m_String = m_String + sNewStrin
2010-05-31 13:55:00
4026
转载 GDI+编程基础(一)GDI+ Vs GDI
一、GDI GDI是位于应用程序与不同硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理。GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无障碍地在Windows支持的任何图形输出设备上运行。例如,我们可以在不改变程序的前提下,让能在Epson点式打印机上工作的程序也能在激光打印机上工作。它把window
2010-05-31 10:19:00
498
新编WIN32API大全
2010-03-21
3ds max建模方式和建模策略
2009-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人