??xml version="1.0" encoding="utf-8" standalone="yes"?> 1.加蝲ExcelQ读取excel内容Q是q回值是一个DataSet //加蝲Excel OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); public static bool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath) int size = excelTable.Columns.Count; Ƣ迎收藏本文 一赯|?【C# 写入excel?qing)读取Excel实例 http://www.1qidu.com/?action-viewnews-itemid-31870?br>一赯|参考地址Q?a >http://www.1qidu.com/?action-viewnews-itemid-31870
]]>
Ҏ(gu)Q寻找些E微知名的B2C|站合作模式Q目标用L(fng)同,l营产品不同Q?把各站商品联合运作v来做?j)销q可以做到想不到的结?多多L一些可以取光的企业或商家,比如摄媄(jing)书籍专卖和数码相Z卖店合作Q数码类B2C与家庭消费类|站的合作等。在彼此的页面挂上对方的推荐商品Q也可以推出套餐?br> 如以下的一个活动:(x)
从XXqXX月XX日期至XXqXX月XX?凡是只要在本站购CQ意一部笔记本?sh)脑?0元送即可获得?**购物|】提供的Ҏ(gu)牌移动硬盘(sh)?!!!
在此,找联合促(j)俏商品的|站可以是单向的Q就是你L的购物网Q让它促(j)销你们的商品,而你不一定要上他们的商品。反之,如果是单向的Q那么你要找的合作对象联合推出的商品一定要它自q商品的单h你的高?br> 学习(fn)点:(x)联合?j)销的目的是销售商品、传播口与吸引x(chng)度(非流量)(j)。只要有一个目的做成即?当然q看个h,如果可以两样都得?你一定会(x)有所收获.
二、赠品活?br> Ҏ(gu)Q此cL?a ,发钱的重要技巧,与某些论坛、社区合作、博客,发多篇贴子或质量脓(chung)多少Q给多少我站的代金券{等Q同Ӟ好友重要的就是一定要让第三方|站形式规律提醒用户领代金券。可以每周或月在W三方网站公布代金券用户名单Qƈ录入数据库,直接生成我们的用户ƈ打入用户账户里代金券。在q点上的作法可以作挖掘的要远q比当当提供的多很多?br> 注意点:(x)与第三方|站的接口与数据?qing)时?gu)更新是很重要的?br> 四、注册有?br> 作法Q注册就有奖QŞ式可以是实物也可以是代金券,可以讄{Q更可以讄大奖。如果是代金券,可以直接在用h册后打入用户的帐户中Q用户可以直接在消费时用?br> 注意点:(x)有h获得?jin)大奖后一定要大力宣传Q造势q炒作?br> 五、论坛推?br> 作法Q相x(chng)的论坛里发公益性的贴子q维护不使其下沉Q也可发某一我们想重Ҏ(gu)的商品的公益性信息,q对口碑传播与关住度的提升是很好很快L(fng)Ҏ(gu)?br> 注意点:(x)
1.一定要巧妙体现你的|站?qing)品牌?br> 2.贴子的标题(sh)定要有吸引力?br> 3.注意回脓(chung)Q保持脓(chung)子的zd与寿命,q其出现在W一c(din)?br> 4. 一个脓(chung)子?0个左右的论坛Cְ发送ƈl护可以了(jin)?br> 六、专题推q?br> 作法Q专门就某品某品牌攉大量地文章,可以在自q站上的资讯里天天更新十篇左右Q同Ӟ可以在选和讯、techweb{?个之内的博客开q样的专题博客。比?#8220;如何选购数码相机”博客?br> 注意点:(x)
1.与论坛推送相反,q里要求文章数量多,发送的q_倒可以少点,只放在自q站上也是可以的?br> 2.如果从别的网站摘录的文章Q一定要Ҏ(gu)头换N?br> 3.文章中要加入自己|站标识的字?br> 4.文章要多重复需要突现的商品或品牌名字?br> 七、主题活?br> 作法Q我方单独或联合或赞助第三方q行zdQ比如数码网站可以搞“地球村,我们的生zȝ间?大学生摄影展”Q以吸引人气Q传递品牌ؓ(f)丅R也可以起到?j)销的目的?br> 注意点:(x)
1. zd主题?qing)g展一定要与所l营的品相兟?br> 2.zd的h要与目标客L(fng)同。比如数码网站如果搞一个小学生作文大赛失M(jin)意义Q当然也起不到效果?br> 八、参与活?br> 作法Q参与到W三方D办的zd中去Q包括某|站的活动,某些?x)议Q某些会(x)展等{。Ş式上可以是活动赞助单位、奖金提供商、报名网站等{?br> 注意点:(x)
1. 对第三方丑֊的活动一定要注意zd的对象与我们的目标客L(fng)体是否附合(一再重复这点,是因为电(sh)子商务网站不可以作大而空的炒作,一切动作都是ؓ(f)增加用户Q进而增加销量,q与别的|站Q特别是那些求流量的|站Ҏ(gu)上是不一P(j)
2. 一定要注意费用Q争取不花钱或花可能少的钱起到最大的影响
3. 如果能与?x),最好也参与q去?br>
]]>
public static DataSet LoadDataFromExcel(string filePath)
{
try
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [Sheet1$]";//可是更改Sheet名称Q比如sheet2Q等{?
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, "Sheet1");
OleConn.Close();
return OleDsExcle;
}
catch (Exception err)
{
MessageBox.Show("数据l定Excelp|!p|原因Q? + err.Message, "提示信息",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return null;
}
}
2.写入Excel内容Q参敎ͼ(x)excelTable是要导入excel的一个table?< type="text/JavaScript"> alimama_pid="mm_10249644_1605763_5027492"; alimama_type="f"; alimama_sizecode ="tl_1x5_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=0; < src="
{
Microsoft.Office.Interop.Excel.Application app =
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
app.Visible = false;
Workbook wBook = app.Workbooks.Add(true);
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
if (excelTable.Rows.Count > 0)
{
int row = 0;
row = excelTable.Rows.Count;
int col = excelTable.Columns.Count;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
string str = excelTable.Rows[i][j].ToString();
wSheet.Cells[i + 2, j + 1] = str;
}
}
}
for (int i = 0; i < size; i++)
{
wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName;
}
//讄止弹出保存和覆盖的询问提示?C# 写入excel?qing)读取Excel实例
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
//保存工作?< type="text/JavaScript"> alimama_pid="mm_10249644_1605763_5027492"; alimama_type="f"; alimama_sizecode ="tl_1x5_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=0; < src=" wBook.Save();
//保存excel文g
app.Save(filePath);
app.SaveWorkspace(filePath);
app.Quit();
app = null;
return true;
}
catch (Exception err)
{
MessageBox.Show("导出Excel出错Q错误原因:(x)" + err.Message, "提示信息",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
finally
{
}
}
]]>
inline unsigned __int64 GetTimeStampCount()
{
__asm RDTSC
}
对于vc6或者其他编译器可能不行Q因为RDTSC不被C++的内嵌汇~器直接支持Q所以我们要用_emit伪指令直接嵌入该指o(h)的机器码形式0X0F?X31Q如下:(x)
inline unsigned __int64 GetTimeStampCount()
{
__asm _emit 0x0F
__asm _emit 0x31
}
对关注性能的程序开发h员而言Q一个好的计旉件既是益友,也是良师。计时器既可以作为程序组件帮助程序员_的控制程序进E,又是一件有力的调试武器Q在有经验的E序员手里可以尽快的定E序的性能瓉Q或者对不同的算法作出有说服力的性能比较?nbsp;
在Windowsq_下,常用的计时器有两U,一U是timeGetTime多媒体计时器Q它可以提供毫秒U的计时。但q个_ֺ对很多应用场合而言q是太粗p了(jin)。另一U是QueryPerformanceCount计数器,随系l的不同可以提供微秒U的计数。对于实时图形处理、多媒体数据?hu)处理、或者实时系l构造的E序员,善用QueryPerformanceCount/QueryPerformanceFrequency是一基本功?nbsp;
本文要介l的Q是另一U直接利用Pentium CPU内部旉戌行计时的高精度计时手Dc(din)以下讨Z要得益于《Windows囑Ş~程》一书,W?nbsp; 15-17,有兴的读者可以直接参考该书。关于RDTSC指o(h)的详l讨论,可以参考Intel产品手册。本文仅仅作抛砖之用?nbsp;
?nbsp; Intel Pentium以上U别的CPU中,有一个称?#8220;旉戻ITime StampQ?#8221;的部Ӟ它以64位无W号整型数的格式Q记录了(jin)自CPU上电(sh)以来所l过的时钟周期数。由于目前的CPU主频都非帔RQ因此这个部件可以达到纳U的计时精度。这个精性是上述两种Ҏ(gu)所无法比拟的?nbsp;
在Pentium以上的CPU中,提供?jin)一条机器指令RDTSCQRead Time Stamp CounterQ来dq个旉戳的数字Qƈ其保存在EDX:EAX寄存器对中。由于EDX:EAX寄存器对恰好是Win32q_下C++语言保存函数q回值的寄存器,所以我们可以把q条指o(h)看成是一个普通的函数调用。像q样Q?nbsp;
inline unsigned __int64 GetCycleCount()
{
__asm RDTSC
}
但是不行Q因为RDTSC不被C++的内嵌汇~器直接支持Q所以我们要用_emit伪指令直接嵌入该指o(h)的机器码形式0X0F?X31Q如下:(x)
inline unsigned __int64 GetCycleCount()
{
__asm _emit 0x0F
__asm _emit 0x31
}
以后在需要计数器的场合,可以像用普通的Win32 API一P调用两次GetCycleCount函数Q比较两个返回值的差,像这P(x)
unsigned long t;
t = (unsigned long)GetCycleCount();
//Do Something time-intensive ...
t -= (unsigned long)GetCycleCount();
《Windows囑Ş~程》第15늼写了(jin)一个类Q把q个计数器封装v来。有兴趣的读者可以去参考那个类的代码。作者ؓ(f)?jin)更_的定Ӟ做了(jin)一点小的改进Q把执行RDTSC指o(h)的时_(d)通过q箋(hu)两次调用GetCycleCount函数计算出来q保存(sh)(jin)hQ以后每ơ计时结束后Q都从实际得到的计数中减掉这一段旉Q以得到更准的计时数字。但我个得这一点点改进意义不大。在我的机器上实,q条指o(h)大概花掉?jin)几十?00多个周期Q在 Celeron 800MHz的机器上Q这不过是十分之一微秒的时间。对大多数应用来_(d)q点旉完全可以忽略不计Q而对那些实要精到U秒数量U的应用来说Q这个补偿也q于_糙?jin)?nbsp;
q个Ҏ(gu)的优Ҏ(gu)Q?nbsp;
1.高精度。可以直接达到纳U的计时精度(?GHz的CPU上每个时钟周期就是一U秒Q,q是其他计时Ҏ(gu)所难以企及(qing)的?nbsp;
2. 成本低。timeGetTime 函数需要链接多媒体库winmm.libQQueryPerformance* 函数Ҏ(gu)MSDN的说明,需要硬件的支持Q虽然我q没有见q不支持的机器)(j)和KERNEL库的支持Q所以二者都只能在Windowsq_下用(关于DOSq_下的高精度计旉题,可以参考《图形程序开发h员指南》,里面有关于控制定时器8253的详l说明)(j)。但RDTSC指o(h)是一条CPU指o(h)Q凡是i386q_下Pentium以上的机器均支持Q甚x(chng)有^台的限制Q我怿i386版本UNIX和Linux下这个方法同样适用Q但没有条g试验Q,而且函数调用的开销是最的?nbsp;
3. h和CPU主频直接对应的速率关系。一个计数相当于1/(CPU主频Hz?U,q样只要知道?jin)CPU的主频,可以直接计算出时间。这?nbsp; QueryPerformanceCount不同Q后者需要通过QueryPerformanceFrequency获取当前计数器每U的计数ơ数才能换算成时间?nbsp;
q个Ҏ(gu)的缺Ҏ(gu)Q?nbsp;
1.现有的C/C++~译器多C直接支持使用RDTSC指o(h)Q需要用直接嵌入机器码的方式~程Q比较麻?ch)?nbsp;
2.数据抖动比较厉害。其实对M计量手段而言Q精度和E_性永q是一对矛盾。如果用低精度的timeGetTime来计Ӟ基本上每ơ计时的l果都是相同的;而RDTSC指o(h)每次l果都不一Pl常有几癄至上千的差距。这是这U方法高_ֺ本n固有的矛盾?nbsp;
关于q个Ҏ(gu)计时的最大长度,我们可以单的用下列公式计:(x)
自CPU上电(sh)以来的秒?nbsp; = RDTSCd的周期数 / CPU主频速率QHzQ?nbsp;
64位无W号整数所能表辄最大数字是1.8×10^19Q在我的Celeron 800上可以计时大U?00q_(d)书中说可以在200MHz的Pentium上计?17q_(d)q个数字不知道是怎么得出来的Q与我的计算有出入)(j)。无论如何,我们大可不必兛_(j)溢出的问题?nbsp;
下面是几个小例子Q简要比较了(jin)三种计时Ҏ(gu)的用法与_ֺ
//Timer1.cpp 使用?jin)RDTSC指o(h)的Timerc?/KTimercȝ定义可以参见《Windows囑Ş~程》P15
//~译行:(x)CL Timer1.cpp /link USER32.lib
#include <stdio.h>
#include "KTimer.h"
main()
{
unsigned t;
KTimer timer;
timer.Start();
Sleep(1000);
t = timer.Stop();
printf("Lasting Time: %d\n",t);
}
//Timer2.cpp 使用?jin)timeGetTime函数
//需包含<mmsys.h>Q但׃Windows头文仉l复杂的关系
//单包?amp;ltwindows.h>比较hQ)(j)
//~译行:(x)CL timer2.cpp /link winmm.lib
#include <windows.h>
#include <stdio.h>
main()
{
DWORD t1, t2;
t1 = timeGetTime();
Sleep(1000);
t2 = timeGetTime();
printf("Begin Time: %u\n", t1);
printf("End Time: %u\n", t2);
printf("Lasting Time: %u\n",(t2-t1));
}
//Timer3.cpp 使用?jin)QueryPerformanceCounter函数
//~译行:(x)CL timer3.cpp /link KERNEl32.lib
#include <windows.h>
#include <stdio.h>
main()
{
LARGE_INTEGER t1, t2, tc;
QueryPerformanceFrequency(&tc);
printf("Frequency: %u\n", tc.QuadPart);
QueryPerformanceCounter(&t1);
Sleep(1000);
QueryPerformanceCounter(&t2);
printf("Begin Time: %u\n", t1.QuadPart);
printf("End Time: %u\n", t2.QuadPart);
printf("Lasting Time: %u\n",( t2.QuadPart- t1.QuadPart));
}
////////////////////////////////////////////////
//以上三个CZE序都是试1U钟休眠所耗费的时?nbsp;
file://?试环境:(x)Celeron 800MHz / 256M SDRAM
// Windows 2000 Professional SP2
// Microsoft Visual C++ 6.0 SP5
////////////////////////////////////////////////
以下是Timer1的运行结果,使用的是高精度的RDTSC指o(h)
Lasting Time: 804586872
以下是Timer2的运行结果,使用的是最_糙的timeGetTime API
Begin Time: 20254254
End Time: 20255255
Lasting Time: 1001
以下是Timer3的运行结果,使用的是QueryPerformanceCount API
Frequency: 3579545
Begin Time: 3804729124
End Time: 3808298836
Lasting Time: 3569712
Ƣ迎收藏本文 一赯|?【获取CPU旉戳代?使用CPU旉戌行高_ֺ计时 http://www.1qidu.com/?action-viewnews-itemid-16841?br>一赯|参考地址Q?a >http://www.1qidu.com/?action-viewnews-itemid-16841
DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);
int index=0;
int tickets=100;
HANDLE hMutex;
void main()
{
HANDLE hThread1,hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
hMutex=CreateMutex(NULL,FALSE,NULL);
//TRUE代表ȝE拥有互斥对?但是ȝE没有释放该对象 互斥对象谁拥?谁释?br> //FLASE代表当前没有U程拥有q个互斥对象
Sleep(4000);
}
DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
while (true)
{
WaitForSingleObject(hMutex,INFINITE);
if (tickets>0)
{
cout<<"t1: "<<tickets--<<endl;
}
else
{
break;
}
ReleaseMutex(hMutex);
}
return 0;
}
DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{
while (true)
{
WaitForSingleObject(hMutex,INFINITE);
if (tickets>0)
{
cout<<"t2: "<<tickets--<<endl;
}
else
{
break;
}
ReleaseMutex(hMutex);
}
return 0;
}
此信息来自〖Y工吧论坛http://www.gcs8.cn?br>查看原网址:http://www.gcs8.cn/htm_data/2/0811/15807.html
BOOL Cls_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
MessageBox(NULL,"使用消息分流器创建窗口成?,"ddd",MB_OK);
return 1;
}
LRESULT CALLBACK WinProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
switch(msg)
{
case WM_CREATE:
return HANDLE_WM_CREATE(hwnd, wparam, lparam, Cls_OnCreate);
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wparam, lparam);
}
//q里可以输入响应消息的代?br> return 0;
}
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize=sizeof(WNDCLASSEX);
wndclass.style=CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc=(WNDPROC) WinProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance = hinstance;
wndclass.hIcon = LoadIcon(NULL,IDI_ERROR);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "WINCLASS1";
wndclass.hIconSm = LoadIcon(wndclass.hInstance, (LPCTSTR)IDI_ERROR);
wndclass.lpszMenuName = NULL;
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName ="WINCLASS1";
if (!RegisterClassEx(&wndclass))
{
MessageBox(NULL,"ddd","ddd",MB_OK);
return 0;
} // //……
hWnd=CreateWindowEx(NULL,"WINCLASS1",
"wndtitle",
WS_OVERLAPPEDWINDOW|WS_VISIBLE ,
CW_USEDEFAULT, 0,
400,400,
NULL,
NULL,
hinstance,
NULL );
if (!hWnd)
return 0;
ShowWindow(hWnd, ncmdshow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
转帖注明来自软工吧论?br>此信息来自〖Y工吧论坛http://www.gcs8.cn?br>查看原网址:http://www.gcs8.cn/htm_data/2/0811/15785.html
上面的ICodec接口{h(hun)于下面的定义Q?/pre>
class ICodec
{
public:
virtual bool Decode(char * lpDataSrc,unsigned int nSrcLen,char * lpDataDst,unsigned int *pnDstLen)=0;
virtual bool Encode(char * lpDataSrc,unsigned int nSrcLen,char * lpDataDst,unsigned int *pnDstLen)=0;
};
]]>
Ҏ(gu)微Y的说?Visual C++ 6.0 支持的最后一个SDK?Windows Server 2003 PSDK 版本,q运的是在网上也扑ֈ?XPSP2 PSDK 版本,在这里感谢网友发现的下蝲地址:
Platform SDK XPSP2:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
Platform SDK February 2003:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm