近期工作小结

简介:
一,Base64编解码。参考文章:《使用混合脚本编程来实现的Base64编码》,《使用混合脚本编程来实现的Base64解码》
二, 需求如下:一张jpg图片,将其字节数组按Base64编码后传递给客户端,客户端将此Base64编码的字符串解码后,最后还原为jpg图片。第一步Base64解码请参考(1)中提到的文章《使用混合脚本编程来实现的Base64解码》,下面给出还原为jpeg图片的代码片段:
 复制代码
Code
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,声明如下变量:
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
3,初始化和析构
复制代码
BOOL CEhcicsApp::InitInstance()
{
    ……
    //    Initialize GDI+
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    ……
    return FALSE;
}
int CMyApp::ExitInstance()
{
    //    Release Gdi+ lib
    GdiplusShutdown(gdiplusToken);
    return CWinApp::ExitInstance();
}
复制代码
六,使用FTP上传/下载文件
1,在头文件中将要使用的网络头文件包含进来
复制代码
#include "afxinet.h"
2,声明如下变量:
CFtpConnection *m_pFtpConnection;
CInternetSession m_Session;
3,在OnInitDialog 或者InitInstance中加入:
 复制代码
m_pFtpConnection = NULL;
try
{
    // Here usr is the username, pwd is the password 
    // and ftpsite.com is the name of the ftp site which
    // you want to connect to.
    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,要上传文件,加入如下代码:
 复制代码
CFileFind Finder;
CString strFileName;
// Here c:\\Myfile.bmp is the name of the file that you want 
// to upload. It neednt necessarily be a bitmap file. You 
// can upload any file that you want to.
// The CString strFileName is used so that the same name 
// is uploaded to the ftp server.
// After uploading, the file in the ftp server will have 
// the same name as your local file.
// You can also rename it to anything
if(Finder.FindFile("C:\\Myfile.bmp")==TRUE)
{
    Finder.FindNextFile();
    strFileName = Finder.GetFileName();
    Finder.Close();
}
BOOL bUploaded = m_pFtpConnection->PutFile("C:\\Myfile.bmp",strFileName,FTP_TRANSFER_TYPE_BINARY,1);
AfxMessageBox("Uploaded Successfully");
复制代码
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)
delete m_pFtpConnection;
七,Oracle卸载。
1)开始->设置->控制面板->管理工具->服务停止所有Oracle服务;
2)开始->程序->Oracle – OraDb10g_home1>Oracle 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.INI、oradim73.INI、oradim80.INI、 oraodbc.ini等等;
八,IBM Lotus文档型数据库导出到关系型数据库。
解决方案:利用IBM提供的NotesSQL驱动程序,在java代码中利用JDBC-ODBC桥去连接Lotus数据库,从而读取出Lotus数据库中的数据。
值得注意的两个地方:NotesSQL不支持Lotus中表单的中文域,并且表单名中不能包含’-‘这样特殊的字符,再有一个就是表单如果改名称,则在JDBC程序看来会被视为建立一个新表,而不是原表的简单改名。因此在设计Lotus表单和视图时,为了减轻后来维护者的痛苦考虑,万望加倍小心。
此外,还有其他的导出工具和手段,但用JDBC连接Lotus应该是最简单的一种了。
复制代码



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/09/13/1290578.html,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
机器学习/深度学习 人工智能 供应链
OpenAI再建顶级团队,重金招聘核心岗成员,阻止超级AI的威胁!
OpenAI再建顶级团队,重金招聘核心岗成员,阻止超级AI的威胁!
102 0
|
存储 SQL 关系型数据库
加入阿里技术团队三年,哪些习惯让我在工作上持续受益?
2017年研究生毕业,我加入阿里巴巴数据库技术团队,从事分布式数据库研发,如今算来已经有三年时间了,在这期间,我深度参与了双十一背后的数据库PolarDB-X从设计到实现的全过程。在这三年的时间里,于我而言,最大的收获来自两方面:
3821 0
加入阿里技术团队三年,哪些习惯让我在工作上持续受益?
|
Web App开发 安全 物联网
W3C近期要闻:W3C重点报告发布,综述2018年发展路线图
「OpenWeb开发者」依托于BOW(Brillant Open Web)团队,是一个专门的 Web 技术建设小组,致力于推动 Open Web 技术的发展,将不定期为读者同步W3C要闻。
2275 0