- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 OpenCV的结构与内容
CV模块:基本图像处理函数和高级的计算机视觉算法;M:机器学习库,包含一些基于统计的分类和聚类工具;HighGUI:包含图像和视频输入/输出的函数;CXCore:包含OpenCV的一些基本数据结构和相关函数。CvAux:存放一些即将被淘汰的算法和函数,及一些新出现的实验性的算法和函数。本次学习的工具为Visual Studio2008,摄像机为入门级的Sony DV,另外准备攒
2009-12-01 14:14:00 506
转载 李开复辞职前后:拒绝谷歌史上最高数量股票
9月4日早间,腾讯科技从消息人士获得了李开复辞职前后的故事。故事中,李开复详细记录了自己在谷歌总部辞职前后的每一个细节。其中,李开复在谷歌的老板艾伦-尤斯塔斯对他说,“四年前,当时为了弥补你放弃微软股票的损失,我们破纪录给你Google有史以来最高数目的股票。这次我们还是给你一样多。”但最终李开复还是坚持离开。 这些
2009-09-04 13:06:00 466
原创 处理事件及多个I/O流--ACE Reactor框架总览
为了处理多个I/O源,比如多个网络连接,许多传统的应用程序都要创建新进程或新线程。但我们可以通过另外的途径解决,即反应式模型(recative model),其基础是事件多路分离器,比如select()、poll()或WaitMultipleObjects()系统函数,这些优秀的函数允许我们使用一个进程或者线程,就能处理许多时间。但是编写使用这些函数的可移植性应用相当富有挑战性,而这正是ACE R
2009-09-04 11:20:00 441
原创 基本的TCP/IP Socket用法(二)
1、前言服务器端的构建,相比较构建客户更加困难。但若只考虑网络部分时,两种工作事实上是对等的。创建服务器时遇到的主要困难主要来自像并发和资源处理这样的问题。(1)定义地址(2)在该地址上打开用于侦听新连接的接受器,然后等待连接请求的到达在等待过程中,要进行各种异常的处理,如错误编号是EINTR,表示网络出现问题,可继续等待;ETIMEDOUT表示超时,也可以继续等待。无论如何,
2009-09-04 11:19:00 349
原创 基本的TCP/IP Socket用法(一)
1、前言ACE的IPC包按照组关联在一起:连接器(ACE_SOCKET_Connector):主动建立连接--将流连接到服务器端接收器(ACE_SOCKET_Acceptor):被动建立连接流(ACE_SOCKET_Stream):传输数据地址(ACE_INET_Addr):定义对端点进行寻址的手段2、一个简单的客户如下:// BaseSocket_Practice.c
2009-09-04 11:17:00 626
原创 ACE篇之十一:ACE容器之六(自调整的二叉树)
1、ACE提供的树实现为红黑树,名为ACE_RB_Tree,接口与映射表类似,其实现实际上是一个值容器。类型定义是:ACE_RB_Tree2、测试类:Tree_Practice.h#include "ace/RB_Tree.h"#include "DataElement.h"//红黑树类型封装成助手模板类Little helper class//EXT_ID--键值类型,INT_ID-
2009-09-04 11:16:00 402
原创 ACE篇之九:ACE容器之四(集合)
1、前言集合是不允许其所含条目重复的序列。ACE有两种集合:有界集合和无界集合,即ACE_Bounded_Set和ACE_Unbounded_Set。它们支持插入、查找、迭代。2、测试完整源代码如下(原书本有多处错误)#include "ace/Containers.h"#include "DataElement.h"//集合测试//集合是不允许其所含条目重复的序列//ACE有两种集合
2009-09-04 11:15:00 524
原创 ACE篇之十:ACE容器之五(映射表管理器)
1、前言关联容器支持高效的元素读取,基于键而不是在容器中的位置。例子有映射表和二叉树。关联容器允许基于键进行读取和插入,但没有提供在容器中特定位置插入元素的机制映射表管理器ACE_Map_Manager,它被实现为动态的条目数组,每个条目由一个键/值对组成,一旦数组满了,就会分配新的内存,支持前向迭代和后向迭代。声明语句:ACE_Map_Manager map_;注意若有多个线程要
2009-09-04 11:15:00 798
原创 ACE篇之八:ACE容器之四(数组)
1、前言ACE提供的数组类型是ACE_Array,是一模板类,构造方法如下:ACE_Array arr(10);使用方法:(1)arr[i]=....(2)利用专门针对ACE_Array的迭代器ACE_Array::ITERATOR iter(arr)来实现数组数据访问。ACE提供的数组不是序列,但是一种安全包装的类型。2、测试数组代码#include "ace/C
2009-09-04 11:14:00 447
原创 ACE篇之七:ACE容器之三(队列)
1、前言ACE提供的队列ACE_Unbounded_Queue支持从头部和尾部插入元素,但元素只能从头部取出。这和C++提供的队列不同,C++提供的队列只允许在序列的尾部插入元素。队列的元素可以在堆上创建,也可以在栈上创建。2、以下代码测试的是在栈上创建元素。因此在方法返回时候,它们均会被释放。#pragma once#include "ace/Unbounded_Queue.h"
2009-09-04 11:13:00 461
原创 ACE篇之六:ACE容器之二(栈)
1、前言栈是LIFO序列(后进先出),ACE既支持动态栈,也支持静态栈,静态栈的尺寸固定,使用代价较低。ACE提供了两种静态栈:有界栈ACE_Bounded_Stack和固定栈ACE_Fixed_Stack。动态栈在每次插入时候分配内存,每次弹出时候释放该内存,即无界栈ACE_Unbounded_Stack类型。有界栈和固定栈的区别在于:有界栈是在运行时固定下来的,方法是把尺寸作为参数传递
2009-09-04 11:12:00 404
原创 ACE篇之五:ACE容器之一(双向链表)
前沿:为了跨平台的需要,以及性能考虑,ACE创建了自己的容器。ACE支持两种容器:基于模板的、类型安全的容器,以及基于对象的容器。基于模板的容器:允许在编译时创建“针对特定类型的容器”;基于对象的容器:支持某一类对象类型的插入和删除。ACE的容器包含两类:序列容器和关联容器。序列容器是一种其元素按照线性顺序排列的容器。由于要在容器中进行迭代,各个元素的顺序不会改变。列表、栈、队列、数组
2009-09-04 11:10:00 586
原创 ACE篇之四:通过ACE日志策略进行运行时配置
我们可以通过配置文件,指示程序在运行时进行日志参数配置:如日志重定向、输出日志类型、输出日志严重级别、日志文件最大尺寸、日志输出格式等等。1、在应用程序所在目录中创建svc.conf文件,内容如下:dynamic Logger Service_Object* ACE:_make_ACE_Logging_Strategy() "-s log.out -f STDERR|OSTREAM -p
2009-09-04 11:09:00 481
原创 ACE篇之三:日志客户和服务器看守
1、ACE提供的ACE Logging Service即ACE netsvcs,是可配置的两层服务:(1) 客户代理:接收本地系统上客户发出的日志请求,将它们转发给服务器:有利于防止大量客户连接冲击服务器(2)服务器:运行于一台计算机上2、为使用日志服务,需要创建服务器端配置文件server.conf,内容如下:dynamic Logger Service_Object* ACE:
2009-09-04 11:05:00 373
原创 ACE篇之二:使用ACE日志设施(完整的代码)
日志可以被输出到标准设备、文件流和回调。主要文件说明如下1、Log_Practice.cpp:主文件// Log_Pratice.cpp : 定义控制台应用程序的入口点。//#define ACE_NTRACE 0#include "ace/Log_Msg.h"//日志消息实现主文件#include "ace/streams.h"//消息流文件重定向#include "Callback.h
2009-09-04 11:04:00 502
原创 ACE篇之一:使用ACE日志设施
1、前言:使用ACE日志设施的主要宏如下:ACE_DEBUG(常用):用于调试语句ACE_ERROR(常用):用于警告和错误ACE_TRACE:用于跟踪信息2、新建控制台项目Log_Practice(vs2008)3、删除自动生成的其它所有文件,仅仅保留Log_Practice.cpp文件4、修改Log_Practice.cpp文件// Log_Pratice.cp
2009-09-04 11:00:00 492
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人