近期工作小结

一,Base64编解码。参考文章:《使用混合脚本编程来实现的Base64编码》,《使用混合脚本编程来实现的Base64解码

二, 需求如下:一张jpg图片,将其字节数组按Base64编码后传递给客户端,客户端将此Base64编码的字符串解码后,最后还原为jpg图片。第一步Base64解码请参考(1)中提到的文章《使用混合脚本编程来实现的Base64解码》,下面给出还原为jpeg图片的代码片段:

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->CString rawByteStr = imgData; //解码后的图片字节数组字符串
//高4位字节映射表
map<TCHAR,int> mapTable1;
mapTable1[
'f'] = 240;
mapTable1[
'e'] = 224;
mapTable1[
'd'] = 208;
mapTable1[
'c'] = 192;
mapTable1[
'b'] = 176;
mapTable1[
'a'] = 160;
mapTable1[
'9'] = 144;
mapTable1[
'8'] = 128;
mapTable1[
'7'] = 112;
mapTable1[
'6'] = 96;
mapTable1[
'5'] = 80;
mapTable1[
'4'] = 64;
mapTable1[
'3'] = 48;
mapTable1[
'2'] = 32;
mapTable1[
'1'] = 16;
mapTable1[
'0'] = 0;
//低4位字节映射表
map<TCHAR,int> mapTable2;
mapTable2[
'f'] = 15;
mapTable2[
'e'] = 14;
mapTable2[
'd'] = 13;
mapTable2[
'c'] = 12;
mapTable2[
'b'] = 11;
mapTable2[
'a'] = 10;
mapTable2[
'9'] = 9;
mapTable2[
'8'] = 8;
mapTable2[
'7'] = 7;
mapTable2[
'6'] = 6;
mapTable2[
'5'] = 5;
mapTable2[
'4'] = 4;
mapTable2[
'3'] = 3;
mapTable2[
'2'] = 2;
mapTable2[
'1'] = 1;
mapTable2[
'0'] = 0;
//从字节数组字符串还原为字节数组
int count = rawByteStr.GetLength()/2;//字节数
BYTE* Buffer = new BYTE[count]; //目标字节缓冲区
int i,j;
for (i=0,j=0;i<rawByteStr.GetLength();i+=2)
{
//计算并填充每个字节
int sum = mapTable1[rawByteStr[i]]+mapTable2[rawByteStr[i+1]];
Buffer[j
++] = sum;
}
//将字节数组写入jpeg文件
DWORD BytesWritten;
HANDLE hTempFile;
BOOL fSuccess;
CString tmpFile
= _T("C://tmpImg.jpg");
hTempFile
= CreateFile(tmpFile.GetBuffer(10), // file name
GENERIC_WRITE, // open r-w
0, // do not share
NULL, // default security
CREATE_ALWAYS, // overwrite existing
FILE_ATTRIBUTE_NORMAL,// normal file
NULL); // no template
fSuccess = WriteFile(hTempFile,
Buffer,
count,
&BytesWritten,
NULL);
CloseHandle(hTempFile);
delete [] Buffer;
 

,CodeProject上一个不错的显示图片的控件。文章链接:《WndImage Control

四,二代身份证机具读写操作。参考文章:《不同机具的通用的第二代居民身份证读写

五,在MFC中使用GDI+

1,在头文件中将GDI+的头文件包含进来

#include < GdiPlus.h >
using namespace Gdiplus;

2,声明如下变量:

GdiplusStartupInputgdiplusStartupInput;
ULONG_PTRgdiplusToken;

3,初始化和析构

BOOLCEhcicsApp::InitInstance()
{
……
// InitializeGDI+
GdiplusStartup( & gdiplusToken, & gdiplusStartupInput,NULL);
……
return FALSE;
}
int CMyApp::ExitInstance()
{
// ReleaseGdi+lib
GdiplusShutdown(gdiplusToken);
return CWinApp::ExitInstance();
}
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

六,使用FTP上传/下载文件

1,在头文件中将要使用的网络头文件包含进来

#include " afxinet.h "

2,声明如下变量:

CFtpConnection * m_pFtpConnection;
CInternetSessionm_Session;

3,OnInitDialog 或者InitInstance中加入:

m_pFtpConnection = NULL;
try
{
// Hereusristheusername,pwdisthepassword
// andftpsite.comisthenameoftheftpsitewhich
// youwanttoconnectto.
m_pFtpConnection = m_Session.GetFtpConnection( " ftpSite.com " , " usr " , " pwd " ,INTERNET_INVALID_PORT_NUMBER);
}
catch (CInternetException * pEx)
{
pEx
-> ReportError(MB_ICONEXCLAMATION);
m_pFtpConnection
= NULL;
pEx
-> Delete();
}

4,要上传文件,加入如下代码:

CFileFindFinder;
CStringstrFileName;
//Herec://Myfile.bmpisthenameofthefilethatyouwant
//toupload.Itneedntnecessarilybeabitmapfile.You
//canuploadanyfilethatyouwantto.
//TheCStringstrFileNameisusedsothatthesamename
//isuploadedtotheftpserver.
//Afteruploading,thefileintheftpserverwillhave
//thesamenameasyourlocalfile.
//Youcanalsorenameittoanything
if(Finder.FindFile("C://Myfile.bmp")==TRUE)
{
Finder.FindNextFile();
strFileName
=Finder.GetFileName();
Finder.Close();
}
BOOLbUploaded
=m_pFtpConnection->PutFile("C://Myfile.bmp",strFileName,FTP_TRANSFER_TYPE_BINARY,1);
AfxMessageBox(
"UploadedSuccessfully");

5,要下载文件,加入如下代码:

m_pFtpConnection->GetFile("File.ext","C://File.ext",TRUE,FILE_ATTRIBUTE_NORMAL,FTP_TRANSFER_TYPE_BINARY,1);

6,关闭连接

m_Session.Close();
m_pFtpConnection
->Close();
if(m_pFtpConnection!=NULL)
deletem_pFtpConnection;

七,Oracle卸载。

1)开始->设置->控制面板->管理工具->服务停止所有Oracle服务;

2)开始->程序->Oracle – OraDb10g_home1Oracle Installation Products-> Universal Installer 卸装所有Oracle产品

3)在注册表中删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE

4)在注册表中,选择HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services,删除所有Oracle入口;

5)在注册表中,选择

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application,删除所有Oracle入口;

6)删除c:/Program Files/Oracle目录;

7)重新启动计算机,重启后才能完全删除Oracle所在目录

8)删除与Oracle有关的文件,选择Oracle所在的缺省目录C:/Oracle,删除这个入口目录及所有子目录,并从Windows XP目录(一般为d:/WINDOWS)下删除以下文件ORACLE.INIoradim73.INIoradim80.INI oraodbc.ini等等;

八,IBM Lotus文档型数据库导出到关系型数据库。

解决方案:利用IBM提供的NotesSQL驱动程序,在java代码中利用JDBC-ODBC桥去连接Lotus数据库,从而读取出Lotus数据库中的数据。

值得注意的两个地方:NotesSQL不支持Lotus中表单的中文域,并且表单名中不能包含’-‘这样特殊的字符,再有一个就是表单如果改名称,则在JDBC程序看来会被视为建立一个新表,而不是原表的简单改名。因此在设计Lotus表单和视图时,为了减轻后来维护者的痛苦考虑,万望加倍小心。

此外,还有其他的导出工具和手段,但用JDBC连接Lotus应该是最简单的一种了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值