自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(62)
  • 收藏
  • 关注

转载 django控制台报错

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.在网上找了些解决办法,以下两种试验成功:一:用python manage.py shell命令,进入python交互环境而不是直接用python进入交互环境二:在代码中添加:from d

2009-06-23 17:25:00 403

转载 VC++动态链接库编程之基础慨念

1.概论   先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被

2009-06-11 17:44:00 325

原创 永久改变你写异常安全代码的方式(神奇的Loki::ScopeGuard)

作者:Andrei Alexandrescu and Petru Marginean原文地址:http://www.ddj.com/cpp/184403758翻译,裁剪,修改:purewinter注:裁剪修改只是为了让更多csdn上的读者不会因为此文太长而放弃阅读。。。注2:Loki::ScopeGuard不仅对通常意义的异常有用,对于所有可以使用RAII的地方均有用。包括ne

2009-06-04 15:04:00 652 1

原创 Boost137在vs2005下编译使用

如果在Windows下开启console窗口(单击“开始”按钮,单击“运行”,敲入“cmd”),必须将/Microsoft Visual Studio 8/VC下的vcvarsall.bat配置脚本运行一遍,以设置好VC的编译器环境变量。如果从vs2005的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft Visual Studio 2005”,指向“

2008-12-25 15:42:00 632

原创 在linux环境下编译和使用log4cplus

linux下安装tar xvzf log4cplus-x.x.x.tar.gzcd log4cplus-x.x.x./configure --prefix=/usr/local/makemake install这样就在/usr/local/下生成了log4cplus的lib和include目录,lib下的.a是静态链接库,.so是动态链接库的静态库,.so.2是动态链接库,相当于windows下

2008-12-02 15:04:00 1503

原创 读取注册表判断DX版本信息

 #include #include int main(){    HKEY hkey;     char sz[256];     DWORD dwtype, sl = 256;          RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE//Microsoft//DirectX", NULL, KEY_ALL_ACCESS, &hkey);     R

2008-11-12 11:50:00 446

原创 使用WMI获取正在运行的进程

#define _WIN32_DCOM #include "stdafx.h" #include  #include  #include  #include #include  #pragma comment(lib, "wbemuuid.lib") using namespace std; const char * processName = "System";BOOL ManageWMI();

2008-11-12 09:58:00 534

原创 使用WMI收集客户端信息

WQL就是WMI中的查询语言,WQL的全称是WMI Query Language,简称为WQL,翻译成中文好像可以成为Windows管理规范查询语言。熟悉SQL语言的朋友会感觉它和SQL非常相似。具体操作过程参考:http://blog.csdn.net/zhoufoxcn/archive/2008/01/14/2044246.aspxWQL其实非常简单,它有如下特点:1、每个WQL语句必须以SE

2008-11-10 13:36:00 774

原创 使用vs的一些技巧

1、Run-Time LibraryRun-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。 

2008-11-04 09:06:00 479

原创 vs2005下编译运行log4cplus1.0.2

刚在CSDN上问了个问题,记录之,模板,DLL,这些都是难以处理好的东西啊,尤其是模板,正是又爱又恨,最后不想用,又不得不用。原帖地址为:http://community.csdn.net/Expert/TopicView3.asp?id=5432653下载log4cplus-1.0.2.tar.gz,(注意,不是最新的1.0.3)。解压在vs2005中打开/log4cplus-1.0.2/msv

2008-10-27 13:19:00 1552

原创 在windows下实现traceroute功能的源代码

// Module: Traceroute.c//// Description://    This sample is fairly similar to the ping.c sample. It //    creates ICMP packets and sends them to the intended //    recipient. The time-to-live value f

2008-10-23 13:48:00 2128 1

原创 zlib-1.2.3在vs2005下的使用

打开zlib-1.2.3/projects/visualc6/zlib.dsw,采用LIB ASM Debug方式编译得到zlib-1.2.3/projects/visualc6/Win32_LIB_ASM_Debug/zlibd.lib。新建win32 console工程,将头文件设为zlib-1.2.3/,将lib目录设为zlib-1.2.3/projects/visualc6/Win32_L

2008-10-22 13:34:00 717

原创 Zlib在VS2005下编译ASM版本出A2070错误的解决办法

编译zlib-1.2.3时发生错误:inffas32.asm(594) : error A2070: invalid instruction operands inffas32.asm(596) : error A2070: invalid instruction operands inffas32.asm(610) : error A2070: invalid instruction opera

2008-10-22 11:20:00 1194

转载 开源日志系统 - log4cplus

原文地址:http://blog.csdn.net/lulixue/archive/2007/01/09/1478443.aspxlog4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工程中会比较专业的。本文介绍了log4cplus基本概念,以及如何安装,配置。### 简介 ###log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apach

2008-10-21 13:17:00 1496

转载 用zlib压缩文件夹

原文地址:http://blog.csdn.net/spacetiller/archive/2007/11/05/1867931.aspx由于要用程序压缩一个文件夹,因此选用zlib库。在zlib中的例子程序zpipe.c中,给出了如何压缩一个文件,这里稍加扩展,对一个文件夹进行压缩。说来也简单,就是将文件夹/目录下的每个文件找到并压缩到一个文件中。源代码如下:#include #include 

2008-10-21 13:09:00 3438

转载 使用md5校验和算法保护文件(算法/原理/程序)

近日要用到文件校验算法,查看了一下相关资料,得到以下理论与实践经验。一、理论部分:1、预备知识1.1什么是数据校验通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。1.2最简单的检验实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同

2008-10-20 14:09:00 807

原创 CSHA1 - A C++ class implementation of the SHA-1 hash algorithm

 http://www.codeproject.com/KB/recipes/csha1.aspx#xx930492xx

2008-10-20 13:12:00 429

原创 Peer2Peer socket sample

http://www.codeproject.com/KB/IP/p2p.aspx

2008-10-20 13:10:00 282

原创 Halite使用

首先编译通过Halite,运行debug目录下的Halite.exe,左上角第一个按钮是做种,点击后Details的output file填上torrent文件的输出路径和文件名;files一栏选择需要上传的文件或者文件夹;trackers一栏需要填写tracker服务器的地址,网上有许多免费的tracker服务器,比如:http://tracker.barvod.com:6969/announc

2008-10-17 14:05:00 455

原创 vs2005下的libtorrent平台搭建

打开Halite solution,在solution下新建一个console工程比如PatchP2P,然后在该工程下新建一个cpp文件比如PathcP2P.cpp,然后把这个文件拷贝进去(这个cpp来自libtorrent的doc中的example):#include #include #include #include #include "libtorrent/entry.hpp"#inclu

2008-10-17 13:23:00 972

原创 Halite0.3.1源码编译

首先需要安装boost1.34(注意一定要是1.34这个版本,甚至不能是1.35或者更高,不然在halite工程下会有命名冲突,如果单纯编译libtorrent工程可能可以通过,我还没试过),解压Halite.0_3_1.src.7z,打开Halite.0_3_1.src下的Halite.sln,在Halite工程和libtorrent工程的头文件包含目录中添加/boost_1_34_1目录,在这

2008-10-16 13:29:00 807

原创 BOOST1.34编译安装

将boost_1_34_1.7z和boost-jam-3.1.16-1-ntx86.zip解压得到两个文件夹,将boost-jam-3.1.16-1-ntx86下的bjam.exe拷贝至boost_1_34_1下,然后在命令行运行"bjam stage",会在boost_1_34_1下生成两个文件夹bin.v2和stage,以后要用到boost1.34的工程的include目录就设为boost_1

2008-10-16 13:23:00 367

原创 FQ版BOOST-1.35编译安装

编译安装:从sourceforge上下载boost源码(如boost_1_35_0.zip),解压。在boost_1_35_0/tools/jam/src下有一个build.bat文件,用命令行方式运行,会在boost_1_35_0/tools/jam/src下生成一个bin.ntx86目录。将下面的bjam.exe拷贝至boost_1_35_0/下。并通过命令行方式运行"bjam.exe sta

2008-10-16 10:16:00 637 3

原创 使用Subversion进行版本控制

原文链接:http://www.uml.org.cn/pzgl/200610315.htm

2008-10-15 10:10:00 242

转载 BT源代码学习心得(十六):客户端源代码分析(实际数据的传输及其速率限制策略)

 BT源代码学习心得(十六):客户端源代码分析(实际数据的传输及其速率限制策略)Author: wolfenstein 上一次分析了下载过程中如何进行下载某一块的选取。这次分析在收到对方的下载请求后程序的处理行为。首先,仍然看Connection._got_message中收到请求消息的处理代码,即elift==REQUEST:后面的部分。首先检查这个消息是否符合格式,它的长度必须是13(1个字节

2008-10-08 11:23:00 389

转载 BT源代码学习心得(十四):客户端源代码分析(对等客户连接中的阻塞管理)

 BT源代码学习心得(十四):客户端源代码分析(对等客户连接中的阻塞管理)Author: wolfenstein从上一次我们的分析可以看出当对等客户建立连接后,通过握手协议交换信息,这样对于每个连接都有一个Connection对象,然后有一个SingleDownload和Upload与其对应。这一次将从握手协议完成后继续分析,然后介绍Choker,阻塞策略控制器的工作原理。SingleDownlo

2008-10-08 11:22:00 302

转载 BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)

 BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)Author: wolfenstein上一次介绍了对等客户之间在连接建立后的一些动作,以及BT中的阻塞控制策略。这一次将介绍当某个连接终于畅通时,双方的数据交互,也以此为基础介绍BT中另一重要的策略控制器PiecePicker。Choker在选择了解除一个连接的阻塞后,Upload.unchoke()将会执行,Connecti

2008-10-08 11:22:00 312

转载 BT源代码学习心得(十二):客户端源代码分析(从开始到连接建立阶段)

 BT源代码学习心得(十二):客户端源代码分析(从开始到连接建立阶段)Author:wolfenstein 这一次开始恢复按照过程进行描述,即从Multitorrent.start_torrent函数的执行开始。通过前面的分析,我们知道当Multitorrent.start_torrent被调用时,一个新的种子下载任务就开始了。这个函数本身很简单,就是创建(并返回)一个新的_SingleTorre

2008-10-08 11:20:00 250

转载 BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议)

 BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议)Author: wolfenstein上一次我们分析到了一个客户是如何得获取到对等客户的信息,现在终于要开始建立连接了。这一次我们将分析两个对等客户之间的连接的建立以及连接对象为它们之间通信提供的基础框架设施。Encoder.start_connection建立到某个对等客户的连接。dns参数是IP地址和端口号,id是

2008-10-08 11:20:00 285

转载 BT源代码学习心得(十):客户端源代码分析(相关对象一览)

 BT源代码学习心得(十):客户端源代码分析(相关对象一览)Author:wolfenstein(NeverSayNever),BitTorrent/download.py中的Multitorrent对象能够开始实际的下载任务。要开始下载,需要创建一个Multitorrent对象,然后反复得调用start_torrent方法开始一个新的下载,调用这个方法时必须已经准备好相应的下载任务的信息作为参数

2008-10-08 11:18:00 298

转载 BT源代码学习心得(十一):客户端源代码分析(存储管理)

BT源代码学习心得(十一):客户端源代码分析(存储管理)Author:wolfenstein 这一次分析BT的存储管理。我们知道,BT把要共享的资源化分成统一大小的块,并且在种子文件中记录每一块的消息摘要值,以便在下载时确定某一块是否已经正确下载。而且在前面的种子文件的制作过程中我们已经看到,除非是最后一块,其它的块大小都是相同的,因此很有可能出现在一个文件的开始多少个字节属于某一块,然后从中间偏

2008-10-08 11:18:00 376

转载 BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理)

 BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理)author: wolfenstein    通过上一次的分析,我们已经知道了Tracker采用http协议和客户端通信,这一次我们就可以直接分析Tracker.get函数的代码,看看跟踪服务器是如何处理用户的请求的。    首先是检查IP,一个是通过网络连接直接得到的IP(这个有可能是对方的http代理服务器

2008-10-08 11:17:00 251

转载 BT源代码学习心得(九):客户端源代码分析(图形界面浅析)

 BT源代码学习心得(九):客户端源代码分析(图形界面浅析) author:wolfenstein     客户端将从btdownloadgui.py开始进行分析,这样可以顺便把Python中的GUI编程也看一下。Python中的GUI编程也有很多内容,所以不可能深入得分析,仅仅以BT的源代码为例看一下。    btdownloadgui.py中使用gtk作为其图形界面的开发库。这个库中提供了很丰

2008-10-08 11:17:00 367

转载 BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象)

 BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象)author: wolfenstein (NeverSayNever)    上次我们分析了Tracker类初始化的过程,现在开始具体看跟踪服务器是如何提供服务的。    首先分析Tracker处理对象是HTTPHandler,它定义在BitTorrent/HTTPHandler.py中,这个对象的初始化函数

2008-10-08 11:16:00 440

转载 BT源代码学习心得(五):统一网络服务接口--RawServer

 BT源代码学习心得(五):统一网络服务接口--RawServerauthor:wolfenstein    以后的部分都需要网络服务(种子文件的生成在本地就可以完成,但是通过这些种子文件下载实际的内容和提供跟踪器服务都需要网络),在BT的程序设计中,为网络服务提供了统一的接口,这样程序中的其它部分需要打开一个网络服务时,只需要向这个接口进行注册,并提供相应的处理对象(handler)即可,当网络

2008-10-08 11:08:00 517 1

转载 BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化)

 BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化)author:wolfenstein    Tracker在BT中是一个很重要的部分。这个名词我注意到以前的文章中都是直接引用,没有翻译过来,想了一下,决定把它翻译成跟踪服务器。    在BT下载中,种子文件表明了要下载的文件的信息和对它进行检查的消息摘要码,但是每个对等客户(peer,以后我把peer全部翻译成对等客户,

2008-10-08 11:08:00 425

转载 BT源代码学习心得(三):种子文件的编码方式

 BT源代码学习心得(三):种子文件的编码方式author: wolfenstein    BT的作者使用了一种比较简单易懂的编码方式来对设计种子文件。这种编码方式能够很简单得对python中的各种数据类型,如字符串,整数,列表,字典等进行编码。而且对于类型的嵌套,如一个列表中的元素又是一个列表等情况能够进行很好得处理。    BitTorrent/bencode.py模块负责进行编码解码的工作。

2008-10-08 11:07:00 468

转载 BT源代码学习心得(四):种子文件的生成

 BT源代码学习心得(四):种子文件的生成author: wolfenstein    在知道种子文件采取的编码方式后,我们现在可以来看一个种子文件具体是如何生成的了。在BT中,生成种子文件的可执行模块是btmaketorrent.py(命令行模式)或者btmaketorrentgui.py(图形界面模式),通过分析,可以知道它们最终都将调用函数make_meta_files进行种子文件的生成,区

2008-10-08 11:07:00 702

转载 BT源代码学习心得(二):程序运行参数的获取

 BT源代码学习心得(二):程序运行参数的获取author: wolfenstein     把这部分单独列举出来,是因为我觉得BT的程序在处理配置参数方面的这部分代码很有参考价值。    程序的配置参数首先来源于BitTorrent/defaultargs.py。这个模块中包含了一些参数的默认值,由于它们是直接编译进BT的模块中,因此即使其它的配置文件都丢失后,程序还是有一些默认值可以作为参数。

2008-10-08 11:06:00 352

转载 BT源代码学习心得(一):总体描述

原文链接:http://blog.csdn.net/andylin02/archive/2007/03/14/1529013.aspxBT源代码学习心得(一):总体描述author: wolfenstein    BT的源代码是使用python写的,这是一种动态类型的语言,所有的对象不需要定义其类型,任何对象可以作为参数传入某个函数中,唯一的要求是当调用该对象的某个方法时,它必须存在。另外这种语言

2008-10-08 11:05:00 380

空空如也

空空如也

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

TA关注的人

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