自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一步一步

没有热忱,世间便无进步。

  • 博客(114)
  • 资源 (3)
  • 收藏
  • 关注

原创 一种多线程安全的单例模式

template class StaticSingletonT {public:static T* SafeInstance() { static T* s_instance_ptr = NULL; if (!s_instance_ptr) { if (atomic_compare_exchange(&s_state, OBJECT_

2015-04-27 14:59:11 1092

原创 boost之lexical_cast使用

安全从数字字符串到整数的转换:#include template bool safe_lexical_cast(const char* str, T& ret_val) { try { ret_val = boost::lexical_cast(str); return true; } catch (boost::bad_lexical_c

2015-04-27 14:55:20 1739

原创 HTTP无状态协议和session原理(access_token原理)

无状态协议是指协议对务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 Http协议不像建立了socket连接的两个终端,双方是可以互相通信的,http的客户端只能通过请求服务器来获取相关内容或文件信息,具体内容可以通过我的另一篇文章了解。http协议这种特性有优点也有缺点,优

2014-08-27 08:52:17 27514 3

原创 spinlock和mutex对比

spinlock: 自旋锁,

2014-08-26 08:36:17 3762

原创 利用二级指针删除单向链表节点

// testPPointer.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include typedef struct tagNode{ struct tagNode* m_next; int m_nVal;}Node, *PNode;// 通过二级指针方式

2013-10-28 23:17:58 1803

原创 GetTempFileNameW详解

UINTWINAPIGetTempFileNameW(    __in LPCWSTR lpPathName,    __in LPCWSTR lpPrefixString,    __in UINT uUnique,    __out_ecount(MAX_PATH) LPWSTR lpTempFileName    );uUnique 传0,或者非0

2012-12-13 22:40:10 2652

转载 谈一个Kernel32当中的ANSI到Unicode转换的问题

众所周知,Windows的几乎所有带有字符串参数的API都是有W和A两个版本,分别对应于Unicode和ANSI版本。同时,Windows内部是使用Unicode的,因此所有的A版本的API函数都是实际上调用了一次ANSI到Unicode的字符集转换之后,再调用Unicode版本的函数。你真的清楚这中间的这一步转换吗?普通的工程师确实不需要了解太深刻,但是我们是做安全软件的,安全软件的一个

2012-11-16 09:24:27 861

原创 二进制和文本方式打开文件的区别

二进制文件处理时会碰到的问题我们使用处理二进制文件时,需要用如下方法binfile=open(filepath,'rb')    读二进制文件binfile=open(filepath,'wb')    写二进制文件那么和binfile=open(filepath,'r')的结果到底有何不同呢?不同之处有两个地方:第一,使用'r'的时候如果碰到'0x1A',就会视为文件结束

2012-11-11 16:54:15 4493 1

原创 验证pe文件数字签名

// exam5.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include "mscat.h"#pragma comment (lib, "WinTrust.lib")BOOL CheckFileTrust(LPCTSTR lpFileName);BOOL C

2012-11-10 15:00:57 5063 1

转载 Loki库使用(1)

C++设计模式类库 Loki介绍与用法Loki是由Andrei编写的一个与《Modern C++ Design》(C++设计新思维)一书配套发行的C++代码库。它不仅把C++模板的功能发挥到了极致,而且把类似设计模式这样思想层面的东西通过库来提供。本篇文章介绍如何利用Loki来轻松地实现一些设计模式。由于Loki使用了大量牛X到爆的模板技巧,对编译器的要求是很苛刻的,官

2012-11-07 16:44:44 41671 2

原创 ollydbg使用初步(1)

1.反汇编面板窗口双击列可以完成相应动作。2.信息面板窗口动态跟踪会提示信息。3.数据面板窗口查看内存数据。4.寄存器面板窗口显示寄存器值。5.堆栈面板窗口显示堆栈数据。

2012-11-06 21:58:06 1261

转载 c++异常精解

目录abort 异常终止程序异常捕获机制(try-catch)  调用 abort 函数终止程序调用 abort() 函数来终止发现异常的程序. abort() 函数将直接终止程序而不是首先返回到主函数(在 VC 下的入口函数 main[控制台] 或 WinMain[窗体程序])中例子:View Code 1 #inclu

2012-11-02 14:47:52 1387 1

原创 VC中try catch

在编译命令行中加入 /EHa 的参数。这样VC编译器不会把try catch模块给优化掉

2012-11-02 14:34:18 1860

原创 windbg查句柄信息

1.!handle 列出所有句柄2.!handle handleID f检查句柄信息3.!htrace handleID检查操作句柄的历史记录4.!cs csID列出CriticalSection的详细信息5.~~[owner thread id]把owner thread id转换成线程号

2012-10-18 09:48:14 3420

原创 windbg dump分析之分析命令之二

1.lmvm 检查模块加载信息deferred表示目前并没有加载该模块symbol2.!sym noisy 自动寻找symbol的时候给出详细信息3..reload /f msvcrt 让调试器加载制定模块symbolps:默认情况下调试器不会加载所有的symbol4.lmf 列出当前进程加载的所有模块5.r 查看修改寄存器值e 修改地址

2012-10-15 09:39:25 1579

原创 vc关键字

1.凡是VC中带两个下划线的关键字,比方__asm都是VC独有的

2012-09-29 16:41:47 1020

转载 c++内存布局(二)

C++ 对象的内存布局(下) 陈皓http://blog.csdn.net/haoel   重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。  其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),

2012-07-09 18:54:27 881

转载 c++内存布局(一)

C++ 对象的内存布局(上) 陈皓http://blog.csdn.net/haoel  前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说

2012-07-09 18:52:07 956

原创 windbg dump分析之分析命令

1. 查看目标系统vertarget 是version命令的一个功能子集vertarget显示调试目标所在的操作系统版本version则会显示调试环境的其它信息eg:0:000> versionWindows XP Version 2600 (Service Pack 3) MP (4 procs) Free x86 compatibleProduct: WinNt

2012-06-30 09:13:54 8457

原创 windbg dump分析入门之符号相关

1.符号路径基本语法:SRV* 【cache】*toppath例如:Microsoft公有符号存储地址:http://msdl.microsoft.com/download/symbols设置符号路径就是:SRV*c:\mysymbols*http://msdl.microsoft.com/download/symbolsc:\mysymbols作为符号缓存以加快符号的访问速度

2012-06-30 08:33:32 7271

原创 在Windows上通过ctypes遍历进程

import ctypesimport sysTH32CS_SNAPPROCESS = 0x00000002class PROCESSENTRY32(ctypes.Structure): _fields_ = [("dwSize", ctypes.c_ulong), ("cntUsage", ctypes.c_ulong),

2012-06-16 20:13:21 3012

原创 Python SMTP协议发送QQ邮件

from email.header import Headerfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartimport smtplib, datetimemsg = MIMEMultipart()att = MIMEText(open('d:\\m

2012-06-07 20:24:16 5798 1

原创 Python编写FTP下载程序

import ftplibimport osimport socketimport sysHOST = '127.0.0.1'DIRN = 'd:\\G'FILE = 'xue.jpg'USER_NAME = 'liyong'PWD = '123456'def DownloadFile(file_name): try: f =

2012-06-07 20:22:28 5260

原创 boost库之shared_ptr

// shared_ptr_Exam.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include using namespace std;#include "boost/smart_ptr.hpp"using namespace boost;

2012-05-05 17:24:28 1372

原创 boost库之scoped_array

// scoped_array_Exam.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "boost/smart_ptr.hpp"using namespace boost;int _tmain(int argc, _TCHAR* argv[]){

2012-05-05 16:55:59 807

原创 boost库之scoped_ptr

scoped:范围的意思// scoped_ptr_Exam.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include using namespace std;#include "boost/smart_ptr.hpp"using namespa

2012-05-05 16:26:57 935

原创 boost库之date

1.date// date_Exam.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #define BOOST_DATE_TIME_SOURCE#include "libs/date_time/src/gregorian/greg_names.hpp"#

2012-05-05 12:07:31 2929

原创 boost库之时间处理(timer,progress_timer, progress_display)

1.timer#include "stdafx.h"#include #include "boost/timer.hpp"//using namespace boost;int _tmain(int argc, _TCHAR* argv[]){ boost::timer t; std::cout << t.elapsed_max() << std::endl; //可度量的

2012-05-04 20:35:38 2308

原创 超时功能的MessageBox对话框

前天突然在windbg上uf USER32!MessageBoxW,发现了MessageBoxTimeoutW这个API,看着名字大家马上就知道什么回事了。为什么对这个有如此敏感呢,是因为有一次面试经历,问了这个问题,怎么实现具有超时功能的MessageBox,我那时的回答是:在一个线程中弹对话框,然后等待此线程(现在想想很汗)#include "stdafx.h"#include #include int _tmain(int argc, _TCHAR* argv[]){

2011-05-14 18:30:00 2648

原创 python编码规范(部分)

查询结果[1]: pay.jxworld.com.my ==>> 113.23.142.49 ==>> 1897369137 ==>> 马来西亚 5b585240551348545a554c5d57Python代码规范(针对3.1.2版本)1.以4个空格作为缩进层次2.不要混用制表符和空格作为缩进层次3.每一行代码字符数不要超过79,否则积极使用行连接符'/'4.使用UTF-8编码关于importYes: import os import sysNo: import

2010-09-30 09:27:00 815

原创 MultiByteToWideChar使用(核心编程描述有误)

<br />char szBuffer[MAX_PATH] = "1234567"; int nLen = ::MultiByteToWideChar(CP_ACP, 0, szBuffer, 9,//这里传-1的话,函数自动计算字符个数(包括'/0'),结果nLen = 8,如果不传-1,传5,6,7,那么返回将是这些值 NULL, 0); wchar_t* pwszBuffer = (wchar_t*)::LocalAlloc(0, nLen * sizeo

2010-09-15 15:12:00 859

原创 python删除恼人的.svn

<br />#!/usr/bin/env pythonimport os;import shutil;import stat;import sys;def DelSubFile(svnPath): for item in os.listdir(svnPath): fp = os.path.join(svnPath, item); if os.path.isfile(fp): os.chmod(fp, stat.S_I

2010-08-30 12:55:00 1069

原创 CppUnitLite UML图解及用法

<br />

2010-08-27 15:29:00 1016

原创 你会用字符串操作函数吗?

<br />// stringTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <Windows.h>#include <iostream>#include <strsafe.h>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ char szBuffer[10] = {

2010-08-03 18:29:00 888

原创 下载安装boost(基于vc)

<br />1.下载boost_1_43_0.zip(具体到哪里下载,自己搞定)<br />2.解压boost_1_43_0.zip(我的是直接解压放在F盘)<br />3.启动vc的Command Prompt编译生成bjam.exe<br />cmd到F:/boost_1_43_0/tools/jam/src下, 输入:<br />build.bat vc8(我的是vs2005自然就是vc8)<br />编译完成后可以在F:/boost_1_43_0/tools/jam/src/bin.ntx86目录下

2010-07-16 21:54:00 1639

原创 利用vector分配动态内存

<br />// vectorTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <vector>using namespace std;int ComputeSize(void);//计算需要的内存大小int ComputeSize(void){ int nRet = 500; return nRet;}int _tmain(

2010-07-14 12:40:00 3021

原创 改变文本控件字体

<br />//取得库存gdi对象 ::GetObject((HFONT)::GetStockObject(DEFAULT_GUI_FONT), sizeof(m_lf), &m_lf); m_lf.lfUnderline = TRUE;//加下划线 m_lf.lfHeight = 32;//高度 m_lf.lfWidth = 12;//宽度 m_newFont.CreateFontIndirect(&m_lf);//创建字体对象 //设置静态文本控件的字体 GetDlgItem

2010-07-06 19:23:00 1022

原创 注册表基本操作

<br />// regTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <Windows.h>#include <iostream>/*对于注册表,我们可以理解为(类比):键对应于文件夹,键值对应于文件*/VOID ErrorShow(DWORD dwErrorCode);VOID ErrorShow(DWORD dwErrorCo

2010-07-03 21:57:00 754

原创 SDK关机

// test32.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include int _tmain(int argc, _TCHAR* argv[]){ HANDLE hToken = NULL; BOOL bResult = FALSE; TOKEN_PRIVILEGES tkp; bResult = ::OpenProcessToken(::GetCu

2010-06-24 15:11:00 952

原创 TemplateMethod模式

<br />// ProxyTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespace std;//定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤class AbstractClass{public:

2010-06-21 21:51:00 740

C++ SMTP协议发送邮件模块(支持身份验证)

解压后,添加所有文件到工程中,并且设置include路径即可 (这个也是我参考别人的东西,整理了一下,加入身份验证)

2010-09-17

cximage600_full.zip

开源的C++图像处理类,支持十几种格式的图片互转

2008-12-25

CListCtrl数据导入到Excel VC++封装

CListCtrl数据导入到Excel VC++封装

2008-09-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除