
日志
文章平均质量分 76
ssff1
这个作者很懒,什么都没留下…
展开
-
Apache2.2+Mysql5.1+PHP5.2.17环境下安装WordPress
下载软件:apache2.2 和mysql5.1和wordpress 下载php软件网站http://windows.php.net/download/ 其分为VC6(用于Apache)和VC9(用于ISS)。这里使用VC6版; 安装Apache:,访问原创 2011-08-05 22:57:10 · 3980 阅读 · 0 评论 -
NAT类型 及其 检测 详解
P2P的NAT研究 第一部分:NAT介绍 第二部分:NAT类型检测 第一部分: NAT介绍 各种不同类型的NAT(according to RFC) Full Cone NAT: 内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort转载 2009-12-23 15:56:00 · 702 阅读 · 1 评论 -
青蛙的约会 --解法
http://acm.pku.edu.cn/JudgeOnline/problem?id=1061 此题其实就是扩展欧几里德算法-求解不定方程,线性同余方程。 设过s步后两青蛙相遇,则必满足以下等式: (x+m*s)-(y+n*s)=k*l(k=0,1,2....) 稍微变一下形得: (n-m)*s+k*l=x-y 令n-m=a,k=b,x-y=c转载 2009-12-21 21:22:00 · 3504 阅读 · 0 评论 -
不定长字符串输入处理小技巧
大家在编程的过程中,经常会遇到需要输入一个不定长字符串的情况。通常来说,解决这个问题可以有两种方法: 一是先分配一个固定长度的缓冲区,把输入的字符串先存储到这个缓冲区,然后再根据其长度动态分配内存。这个方法缺点是无论分配多大的缓冲区,都无法完全满足要求。太大浪费内存,太小会发生字符串截断。 二是逐个字符输入,然后通过realloc函数来实时改变缓冲区的大小。这个方法比第一个方法稍微好一点转载 2009-12-22 16:45:00 · 609 阅读 · 0 评论 -
用变量a给出下面的定义
用变量a给出下面的定义a) 一个整型数(An integer) b)一个指向整型数的指针( A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r d)一个有10个整型数的数组( An array of 10 integers) e) 一个有10个指针的数组,该指针是指向转载 2009-12-22 20:57:00 · 1374 阅读 · 0 评论 -
C++类型转换
C++类型转换2009-11-30 22:02 【知识点】reinterpret_cast reinterpret_cast是C++里的强制类型转换符。 操作符修改了操作数类型,但仅仅是重新解释了给出的对象的比特模型而没有进行二进制转换。 例如:int *n= new int ; double *d=reinterpret_cast (n); 在进转载 2009-12-20 01:41:00 · 350 阅读 · 0 评论 -
vector list map的区别
vector是序列容器,内存分配时占用连续空间,因为采用的是随机迭代器,所以得到某一位置的值非常快 但是插入和删除比较慢,因为涉及到大块内存的赋值粘贴. list也是容器,但是内存分配是零散的,采用的是双向迭代器,得到某一位置的值并不快,但插入和删除 效率很高. map底层采用的是树型结构,多数使用平衡二叉树实现,查找某一值是常数时间,遍历起来效果也不错, 只是每次插入值的时候转载 2009-12-20 01:32:00 · 363 阅读 · 0 评论 -
典型的C程序存储空间布局
一个典型的C程序存储空间布局由以下几个部分组成: 正文段:CPU执行的指令部分,也就是主要的程序代码编译出来的结果,只读,通常可以共享。 初始化数据段:通常称之为数据段,包含了程序中需要明确赋值的变量,譬如一些初始化的全局变量等,如 int a = 10,变量名和值都存放在这个段中。 未初始化数据段:通常称之为BSS(Block Started by Symbol)段,包含了程转载 2009-12-20 01:21:00 · 587 阅读 · 0 评论 -
C语言中可变参数的用法
我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, …); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf("%s"转载 2009-12-20 01:20:00 · 322 阅读 · 0 评论 -
最小-最大问题 ,Alpha-Beta搜索,也是“剪枝”算法
Alpha Beta 是比较常用的,多用于博弈以下是我学习棋类编程时找的资料:《对弈程序基本技术》专题 Alpha-Beta搜索 Bruce Moreland (brucemo@seanet.com) / 文 最小-最大的问题 Alpha-Beta 同“最小-最大”非常相似,事实上只多了一条额外的语句。最小最大运行时要检查整个博弈树,然后尽可能选择最好的线路。这是非常好理解的,转载 2009-12-23 21:23:00 · 4197 阅读 · 3 评论 -
如何正确应用网络地址转换(NAT)技术
前言:随着Internet技术的不断以指数级速度增长,珍贵的网络地址分配给专用网络终于被视作是一种对宝贵的虚拟房地产的浪费。因此出现了网络地址转换(NAT)标准,就是将某些IP地址留出来供专用网络重复使用。本文将详细告诉你如何正确应用网络地址转换NAT技术。 一、NAT技术的定义 NAT英文全称是Network Address Translation,称是网络地址转换,它是一个IETF标准转载 2009-12-24 10:52:00 · 455 阅读 · 0 评论 -
程序内存分配知识(分配在堆上还是栈上整不明白的看看)
程序内存分配知识(分配在堆上还是栈上整不明白的看看)一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似转载 2010-01-09 23:52:00 · 1087 阅读 · 0 评论 -
函数返回 局部变量问题
#include stdio.h>#include string.h>char* get_str(void){ char* str = "abcd"; return str;}int main(int argc, char* argv[]){ char* p = get_str(); printf("%s/n", p);转载 2010-01-09 23:33:00 · 2324 阅读 · 0 评论 -
CDC和HDC的区别与转换
一、区别与联系HDC是句柄;CDC是MFC封装的Windows 设备相关的一个类;CClientDC是CDC的衍生类,产生对应于Windows客户区的对象HDC是WINDOWS的一种数据类型,是设备描述句柄。而CDC是MFC里的一个类,它封装了几乎所有的关于HDC的操作。 也可以这样说,HDC定义的变量指向一块内存,这块 内存用来描述一个设备的相关的内容,所以也可以 认为HDC定义的是转载 2010-01-08 00:55:00 · 606 阅读 · 0 评论 -
关于窗口重绘的初级问题&由UpdateData(FALSE)想到的窗口刷新问题 收藏
关于窗口重绘的初级问题 作者:zuilang关于窗口重画的初级问题既然是初级问题,我尽量少说一点原理,并且使用通俗易懂的话。 初初级问题:我在视图画的图象或者文字,当窗口改变后(包括最小化后还原,被别的窗口挡住后重新显示等)为什么不见了? 这就是窗口重绘或者说重画的问题。当窗口改变后,会产生无效区域,这个无效的区域需要重画。什么是无效区域?自己到网上搜索或者看相关资料。转载 2010-01-06 20:41:00 · 1000 阅读 · 0 评论 -
OnDraw和OnPaint
在MFC程序设计中,按照传统的设计,如果处理WM_PAINT消息,一般会派生一个OnPaint函数,映射到WM_PAINT消息上进行绘图处理。但是很多程序中并没有出现OnPaint,一个OnDraw函数做了更多的绘图操作。而在消息映射的列表中,也没有见到WM_PAINT到OnDraw的映射。实际上,OnDraw不是OnPaint的映射,出现OnDraw,是为了实现各种不同的设备上的绘图一致转载 2010-01-06 17:31:00 · 531 阅读 · 0 评论 -
文档类CDocument、子框架类CFrameWnd及视图类CView的关系及如何相互调用
文档类、子框架类及视图类的关系及如何相互调用 收藏 了解文档和视图的相互作用关系是编写MFC程序的基本功。但是MFC的应用程序框架把文档和视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往往被局限于在用向导生成的框架中。本文希望能够尽可能说明白文档视图框架之间是如何进行作用,希望能给一些朋友带来小小的帮助。 几个概念: (虽然大家都知道了,雷神还是要重申一次)转载 2010-01-07 13:16:00 · 9759 阅读 · 3 评论 -
C++ Virtual详解
Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是B转载 2010-01-05 22:25:00 · 998 阅读 · 0 评论 -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
下载源代码这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打孔啊,要不要我帮你去借个电钻过来啊?”“~!·¥%……·!”)。闲话少说,我们先看一下技术背景:Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到广泛应用。N转载 2009-12-23 11:06:00 · 563 阅读 · 0 评论 -
于C语言中return的一些总结
于C语言中return的一些总结 return是C++预定义的语句,它提供了种植函数执行的一种放大。当return语句提供了一个值时,这个值就成为函数的返回值. 说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助. 很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过vo转载 2009-12-20 01:19:00 · 479 阅读 · 0 评论 -
c语言中static 用法总结
一、c程序存储空间布局C程序一直由下列部分组成: 1)正文段--CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)--在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)--在程序中没有初始化的全局变量;内核将此段初始化为0。转载 2009-12-20 01:39:00 · 390 阅读 · 0 评论 -
C++的类与C里面的struct的区别
C++的类与C里面的struct的区别2009-10-11 15:32 关于使用大括号初始化class和struct如果定义了构造函数的话,都不能用大括号进行初始化如果没有定义构造函数,struct可以用大括号初始化。如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。关于默认访问权限class中默认的成员访问权限是private的,而struct转载 2009-12-20 01:37:00 · 456 阅读 · 0 评论 -
Linux内核模块编程
摘要Linux内核模块编程的资料有些纷繁复杂,有的过于简单,有的过于庞杂,我试图用笔记的形式想读者展示怎样来进程Linux模块编程,力图做到简明扼要,这篇文章也是作为本人备忘的资料,所以有些地方过于简略是难免的。本来这篇文章的目的就是让用户知其然,至于所以然还是请参考相应的资料,其实最好的资料莫过于Linux Kernel Source。 适用范围: Linux Kernel转载 2009-11-19 21:03:00 · 376 阅读 · 0 评论 -
异或运算及其性质(有意思)
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://galaas.blogbus.com/logs/41767402.html异或是一种基于二进制的位运算,用符号XOR表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。异或运算最常见于多项式除法,不过它最重要的转载 2010-01-13 23:28:00 · 3307 阅读 · 1 评论 -
大端(Big Endian)与小端(Little Endian)详解
大端(Big Endian)与小端(Little Endian)详解【大端(Big Endian)与小端(Little Endian)简介】Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。 对于数据中跨越多个字节的对象, 我们必须为它建立这样的约定:(1) 它的地址是多少?(2) 它的字节在内存中转载 2009-11-17 21:17:00 · 362 阅读 · 1 评论 -
从两道经典试题谈C/C++中联合体(union)的使用
从两道经典试题谈C/C++中联合体(union)的使用试题一:编写一段程序判断系统中的CPU是Little endian还是Big endian模式?分析:作为一个计算机相关专业的人,我们应该在计算机组成中都学习过什么叫Little endian和Big endian。Little endian和Big endian是CPU存放数据的两种不同顺序。对于整型、长整型等数据类型,Big转载 2009-11-17 21:15:00 · 356 阅读 · 0 评论 -
linux硬链接和软链接的区别
简而言之, 软链接(-s 符号链接)相当于windows中的快捷方式, 硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 下面是详细的介绍: 硬连接指转载 2009-11-18 21:28:00 · 501 阅读 · 0 评论 -
KTCPVS 搭建
lvs+heartbeat实验完成也有几天的时间了,由于lvs是基于4层交换的,只能对于来源ip进行持续的投递,对于7层的ipvs就无能为力了,于是认真看了lvs官方网站,发现了ktcpvs(Kernel TCP Virtual Server)可以在http://kb.linuxvirtualserver.org/wiki/Compiling_KTCPVS这里获得基于2.6内核的版本下载下载后按照原创 2009-10-26 16:02:00 · 1075 阅读 · 0 评论 -
VMware下web LVS 搭建(ipvs/nat)
下面是基于NAT结构的:访问http://www.210.210.210.111 会把负载平衡的分配到RS1和RS2上 一共存在四个操作系统,windows作为客户机相当于Internet上的任何一台PCWindows的网络设置为:Ip: 210.210.210.110SUBMASK:255.255.255.0GATEWAY:210.210.210.1 在VM原创 2009-10-24 18:37:00 · 2353 阅读 · 0 评论 -
plot ~~ apache bench
1. plot "filename" using 6:9 with points apache bench -g输出的信息文件里 第六列是开始时间,第九列是总的时间原创 2009-10-24 18:28:00 · 328 阅读 · 0 评论 -
Inno Setup唯一打包安装脚本示范
Inno Setup唯一打包安装脚本示范.2008-03-18 17:40; 脚本由 Inno Setup 脚本向导 生成!; 有关创建 Inno Setup 脚本文档的详细资源请查阅帮助文档![Setup]; 注: AppId的值为单独标识该实际运用程式。; 不能为更多有联系安装程式应用相同的AppId值。; (生成新的GUID,点击 道具|在IDE中生成GUID。)AppId={{A98618转载 2010-01-19 21:16:00 · 1952 阅读 · 0 评论 -
Linux Debugfs文件系统介绍and 使用
author: jonathan本文档的CopyRight归jonathan所有,可自由转载,转载时请保持文档的完整性。/*---------------------------------------------------------------------------------------------------------------------*/什么是不常转载 2009-12-06 15:44:00 · 4361 阅读 · 0 评论 -
mutable explicit volatile
mutable 关键字可以用来指出,即使结构或者类变量为const,其某个成员也可以被修改 例如struct data{char name[30];mutable int accesses; .... };const data veep = {"david";,0,}strcpy(veep.name,"Jimmy");// not allowed veep.accesses++转载 2009-12-20 01:34:00 · 462 阅读 · 0 评论 -
总结: C++中常见 virtual函数问题
1.简介虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public:virtual void foo() { cout };class B: public A{public:virtual void foo() { cout };那么,在使用的时候,我们可以:A * a = new B();a->f转载 2009-12-20 01:33:00 · 347 阅读 · 0 评论 -
进程与线程的区别
通俗的解释一个系统运行着很多进程,可以比喻为一条马路上有很多马车不同的进程可以理解为不同的马车而同一辆马车可以有很多匹马来拉----这些马就是线程假设道路的宽度恰好可以通过一辆马车道路可以认为是临界资源那么马车成为分配资源的最小单位(进程)而同一个马车被很多匹马驱动(线程)----即最小的运行单位每辆马车马匹数>=1所以马匹数=1的时候进程和线程没有严格界限转载 2009-12-20 01:31:00 · 594 阅读 · 0 评论 -
Sizeof与Strlen的区别
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以/0结尾的。sizeof还可以用函数做参数,比如:short f();printf("%d/n", siz转载 2009-12-20 01:30:00 · 358 阅读 · 0 评论 -
Memset、Memcpy、Strcpy 的作用和区别(转)
(1) Memset 原型: extern void *memset(void *buffer, int c, int count); 用法: #include 功能: 把buffer所指内存区域的前count个字节设置成字符 c。 说明: 返回指向buffer的指针。用来对一段内存空间转载 2009-12-20 01:22:00 · 428 阅读 · 0 评论 -
C语言--关键字volatile的使用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器) 2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3)转载 2009-12-19 02:39:00 · 618 阅读 · 0 评论 -
Linux C 动态内存分配 malloc及相关内容
一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte): 该函数是将之前用malloc分配的空间原创 2009-12-14 22:07:00 · 12378 阅读 · 1 评论 -
C 里面 ---变量名-- 和 --地址-- 的关系探讨
变量名不占空间变量:用来标识(identify)一块内存区域,这块区域的值一般是可以更改的,这就是它“变”的由来,但是我们可以通过使用如const等一些修饰符号来限定这一内存区域的操作特性(characteristic),即变量的操作特性。用const修饰的使变量不能更改的就和常量一样的变量叫做常变量。 变量名:是一个标识符(identifier),用来指代一块内存区域,即变量转载 2009-12-13 18:31:00 · 4854 阅读 · 3 评论