- 博客(13)
- 收藏
- 关注
转载 Douglas—Peucker 矢量数据压缩算法
基本思路是:对每一条曲线的首末点虚连一条直线,求所有点与直线的距离,并找出最大距离值dmax,用dmax与限差D相比: 若dmax<D,这条曲线上的中间点全部舍去; 若dmax≥D,保留dmax对应的坐标点,并以该点为界,把曲线分为两部分,对这两部分重复使用该方法。
2012-02-01 16:00:53
731
原创 操作系统学习笔记1
一、从汇编语言/机器语言的角度,或者计算机体系结构的角度而言:1、计算机包含了cpu和主存储器;2、cpu包含了算术逻辑单元(ALU)、控制单元(CU)和cpu寄存器;3、所有的算术操作都是在ALU中完成的。如果要想在内存中将两个数相加,必须先把这两个数放到cpu寄存器中,然后再相加;4、同样对于数据移动指令也是如此。任何存储单元之间的数据移动都包含以下两个步骤:将数据从源存储单元加载到cpu寄存器中将数据从cpu寄存器存储到目标存储单元中二、计算机包含了三类总线:数据总线(内、外部)、地址总线、控制总线。
2010-10-09 21:53:00
460
转载 多线程编程之四——线程的同步
<br />八、线程的同步<br /> 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程读取的是未完全更新的数据库,因为可能在读的时候只有一部分数据被更新过。<br
2010-09-28 16:31:00
300
转载 多线程编程之三——线程间通讯
七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。 使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议使用volatile 修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且
2010-09-28 16:30:00
290
转载 多线程编程之二——MFC中的多线程开发
<br />五、MFC对多线程编程的支持<br /> MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。<br /> 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。<br
2010-09-28 16:29:00
290
转载 多线程编程之一——问题提出
<br />一、问题的提出<br />编写一个耗时的单线程程序:<br /> 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:<br />void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //延时6秒}<br />编译并运行应用程序,单击“延时6秒”按钮,
2010-09-28 16:25:00
323
原创 Visual C++.NET数据库访问技术
<br />Visual C++.NET提供了多种访问数据库的技术[34],主要有:<br />(1) ODBC (Open DataBase Connectivity) <br />(2) MFC ODBC (Microsoft Foundation Classes ODBC) <br />(3) DAO (Data Access Object) <br />(4) OLE DB (Object Link and Embedding DataBase) <br />(5) ADO (ActiveX Dat
2010-09-28 11:01:00
1468
原创 YUV与RGB图像格式之间的关系
<br />注:本文讲述的格式全部使用每个像素位置8位的方式来编码Y频道,并使用每样例8位的方式来编码每个U或V色度样例。但是,大多数YUV格式平均使用的每像素位数都少于24位,这是因为它们包含的U和V样例比Y样例要少。<br />更多资料:<br />http://www.360doc.com/content/09/0223/15/59579_2623401.shtml<br />http://blog.youkuaiyun.com/fyang2007/archive/2009/08/21/4470078.aspx1
2010-09-27 21:42:00
951
转载 API串口通信
<br />串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。<br />无论那种操作方式,一般都通过四个步骤来完成:<br />(1)打开串口<br />(2)配置串口<br />(3)读写串口<br />(4)关闭串口<br />(1)打开串口<br />Win32系统把文件的概念进行了扩展
2010-09-14 16:35:00
671
转载 OpenCV访问图像像素, 数组元素等方法收集
访问图像像素的一些方法。 * Indirect access: (General, but inefficient, access to any type image) o For a single-channel byte image: IplImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); CvScalar s; s=cvGet2D(img,i,j); // get the (i,j) pixel value printf("intens
2010-09-06 16:36:00
826
转载 MFC类中获得其他类指针
当用visual c++的Application Wizard生成除了以外的应用程序时,将自动产生视图类,文档类,主帧窗口类,应用程序类等等. 一般说来,程序的核心数据及操作在文档类中实现.跟界面有关的数据及操作在视图类中实现.当需要在某个类中使用不属于该类的数据时,必须要取得概述据所属的类的指针.从视图类获得文档类的指针是很容易的,用GetDocument()即可,这在一般的MFC
2010-03-22 20:52:00
402
1
转载 Invalidate()
InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。Invalidate()之后:(MFC的,顺便了)OnPaint()->OnPrepareDC()->OnDraw()所以只是刷新在OnPaint()和OnDra
2010-03-08 16:21:00
347
转载 视图类成员函数GetDocument()和OnDraw()
视图对象是用来显示文档对象的内容,函数GetDocument()用于获取当前文档对象的指针m_pDocument.而函数OnDraw()是一个虚函数,负责文档对象的数据在用户视图区的显示输出。在向导生成的成员函数OnDraw()中调用了函数GetDocument().通过获取的文档类指针可以在视图中显示文档内容。void CMysdiView::OnDraw(CDC* pDC) {
2010-03-08 16:16:00
916
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人