SQLITE3 加密总结
SQLITE3 加密总结 (sqlite 3.6.12版本)
董淳光的SQLITE3_使用总结
作者: 董淳光 42530 (老工号)
dcg1981@163.com
2007年6月11日星期一
最简单的TCP网络封包解包(补充)-序列化
将数据能够在TCP中进行传输的两种方法
1.直接拷贝struct就可以了;
2.序列化。
拷贝Struct存在的问题
1.不能应付可变长类型的数据,比如STL中的那些容器,当然,STL的容器归根到底就是一个class,他们的长度都是不确定的;
2.内存对齐的问题,Windows默认的对齐是4字节,如果不去刻意关闭掉对齐的话,那么可能会多出不少没必要的字节数,但是如果关闭了,内存拷贝又会慢一些。
序列化是怎么序列化的?
其实很简单,我们使用一个uint8类型的数组,假设我们这里有一个uint16类型的数据,那么我们就把它拷贝进去uint8的数组里面,那么它就占了两个元素。这是最基本的规则。具体请参考代码里面的ByteBuffer::append()方法。而那些class神马的,我们只要按照自己设定的规则顺序拷贝进去就可以了。这个在BytBuffer里面默认支持了常用的STL容器,可以参看代码。
海康威视设备外网访问设置方法
海康威视设备外网访问设置方法
如果您可以联系电信或者网通运营商提供静态的公网IP那么只需要将相关的网络IP,掩码,网关参数填写进设备DVR/DVS
然后重新启动设备,就可以通过客户端软件或者IE输入IP来实现对于设备的远程访问了.
CCameraDS类
使用DirectShow采集图像
您也可使用hardy_ai编写的ARFrameGrabber类
本文档介绍的CCameraDS类调用采集函数可直接返回IplImage,使用更方便,且集成了DirectShow,勿需安装庞大的DirectX/Platform SDK。
本类只在Visual C++ 6.0下进行了测试
目录
[隐藏]
* 1 下载
* 2 可能存在的缺陷
* 3 文档
* 4 例程
[编辑]
下载
下载代码和例程
[编辑]
可能存在的缺陷
在vc6.0中测试将此例程移植到mfc下时(特别是显示到控件上时),性能不如CvCapture;mfc下显示使用CvvImage对象的 DrawToHDC方法。最明显的差别在cpu使用率上,即使都开到多线程中,DirectShow采集图像的方法仅仅显示cpu使用率就高达60%,拖动时能高达80%,且资源释放缓慢;但是采用CvCapture,即使带上一些图像处理步骤,cpu使用率也基本在50%以下。
[编辑]
文档
CCameraDS中有如下函数:
CCameraDS()
构造函数
CCameraDS()
析构函数
bool OpenCamera(int nCamID, bool bDisplayProperties=true)
打开摄像头,nCamID指定打开哪个摄像头,取值可以为0,1,2,...。bDisplayProperties指示是否自动弹出摄像头属性页。
bool OpenCamera(int nCamID, bool bDisplayProperties=true, int nWidth=320, int nHeight=240)
打开摄像头,nCamID指定打开哪个摄像头,取值可以为0,1,2,...。bDisplayProperties指示是否自动弹出摄像头属性页。nWidth和nHeight设置的摄像头的宽和高,如果摄像头不支持所设定的宽度和高度,则返回false
void CloseCamera()
关闭摄像头,析构函数会自动调用这个函数
static int CameraCount()
返回摄像头的数目。可以不用创建CCameraDS实例,采用int c=CCameraDS::CameraCount();得到结果。
static int CameraName(int nCamID, char* sName, int nBufferSize);
根据摄像头的编号返回摄像头的名字
nCamID: 摄像头编号
sName: 用于存放摄像头名字的数组
nBufferSize: sName的大小
可以不用创建CCameraDS实例,采用CCameraDS::CameraName();得到结果。
int GetWidth()
返回图像宽度。
int GetHeight()
返回图像高度
IplImage * QueryFrame()
抓取一帧,返回的IplImage不可手动释放!返回图像数据的为BGR模式的Top-down(第一个字节为左上角像素),即IplImage::origin=0(IPL_ORIGIN_TL)
[编辑]
例程
//////////////////////////////////////////////////////////////////////
// Video Capture using DirectShow
// Author: Shiqi Yu (shiqi.yu@gmail.com)
// Thanks to:
// HardyAI@OpenCV China
// flymanbox@OpenCV China (for his contribution to function CameraName, and frame width/height setting)
// Last modification: April 9, 2009
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// 使用说明:
// 1. 将CameraDS.h CameraDS.cpp以及目录DirectShow复制到你的项目中
// 2. 菜单 Project->Settings->Settings for:(All configurations)->C/C++->Category(Preprocessor)->Additional include directories
// 设置为 DirectShow/Include
// 3. 菜单 Project->Settings->Settings for:(All configurations)->Link->Category(Input)->Additional library directories
// 设置为 DirectShow/Lib
// 在vc++2005开发环境下的使用说明:
// 1.将CameraDS.h CameraDS.cpp复制到你的项目中
// 2.将DirectShow复制到你的opencv根目录下,菜单 工具->选项->项目和解决方案->vc++目录,把..(你的opencv安装目录)/DirectShow/Include添加到
// “引用文件”中$(VCInstallDir)PlatformSDK\include和$(FrameworkSDKDir)include下面任意位置
// 3.菜单 工具->选项->项目和解决方案->vc++目录,把..(你的opencv安装目录)/DirectShow/Lib添加到“库文件”下面。也可参考使用说明3。
//////////////////////////////////////////////////////////////////////
#include "camerads.h"
#include <highgui.h>
#include <stdio.h>
int main()
{
int cam_count;
//仅仅获取摄像头数目
cam_count = CCameraDS::CameraCount();
printf("There are %d cameras.\n", cam_count);
//获取所有摄像头的名称
for(int i=0; i < cam_count; i++)
{
char camera_name[1024];
int retval = CCameraDS::CameraName(i, camera_name, sizeof(camera_name) );
if(retval >0)
printf("Camera #%d's Name is '%s'.\n", i, camera_name);
else
printf("Can not get Camera #%d's name.\n", i);
}
if(cam_count==0)
return -1;
CCameraDS camera;
//打开第一个摄像头
//if(! camera.OpenCamera(0, true)) //弹出属性选择窗口
if(! camera.OpenCamera(0, false, 320,240)) //不弹出属性选择窗口,用代码制定图像宽和高
{
fprintf(stderr, "Can not open camera.\n");
return -1;
}
cvNamedWindow("camera");
while(1)
{
//获取一帧
IplImage *pFrame = camera.QueryFrame();
//显示
cvShowImage("camera", pFrame);
if (cvWaitKey(20) == 'q')
break;
}
camera.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头
cvDestroyWindow("camera");
return 0;
}
500强管理案例
“红杏闹春”还是“山雨欲来”—跨国公司在中国的研发机构素描.pdf<br>“今天你雅虎了吗?”—YAHOO公司.pdf<br>........
高手之路,DOS起步
DOS使用常识<br/>DOS的内部命令<br/>DOS的外部命令<br/>FDISK使用介绍<br/>DOS解决问题实战<br/>
高质量 C++/C 编程指南
第1章 文件结构<br/>第2章 程序的版式<br/>第3章 命名规则<br/>第4章 表达式和基本语句<br/>第5章 常量<br/>第6章 函数设计<br/>第7章 内存管理<br/>第8章 C++函数的高级特性<br/>第9章 类的构造函数、析构函数与赋值函数<br/>第10章 类的继承与组合<br/>第11章 其它编程经验
XP实用技巧
Win98+Win2000+WinXP三操作系统共同使用安装实录
Win XP 键盘快捷键概述
Win XP中的网桥
Windows XP安装问题解答精选
Windows XP传真功能详解
Windows XP的几个使用技巧
Windows XP的小秘密
Windows XP挂起到硬盘后的异常故障解决
Windows XP精彩答辩
Windows XP深入问答
Windows XP网桥功能初探
Windows XP硬件优化全功略
Windows XP优化指南
WINDOWS XP终极減肥大法
Windows XP主要问题以及解决方法一览
WindowsXP不能正常关机的解决之道
WindowsXP使用问题解答
WinXP安装参数
XP的常用操作及技巧
防范Windows XP的安全策略
辅助操作和特殊功能命令
高级技巧与应用
搞定Windows XP鲜为人知的漏洞
隔离组件和并列共享
活用XP安全模式
加速篇
家庭用户内存优化指南
减肥加速
控制台命令详解
目录和文件操作命令
品味WinXP与众不同的文件管理
破解Windows XP中WPA的武器现身
巧装大硬盘上XP
取消WinXP专业版中的保留的带宽
全面实战Windows XP防火墙
让你的Windows XP从此变得服服帖帖
如何打开注册表编辑器
如何在WinXP下使用刻录机
扫描仪的安装和使用
设置自动关机重启时间
深入了解Windows XP的刻录功能
慎用还原Wpa.dbl
升级到Windows XP应该考虑的6个方面
手工恢复Windows XP的欢迎登录界面
双剑合璧 在Win XP下刻录音乐CD
微软提供的超级大餐
为Windows XP添加五笔输入法
系统和磁盘操作命令
消除WindowsXP中的复制乱码
硬件不兼容的处理
运行菜单中的“快捷方式”
在Win XP中让QQ跑得更快
在Windows XP中制作屏保
制作具有Win XP 风格的菜单
自己定义WinXP的时间校正服务器