自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

转载 awk 数组 排序

<br />awk作为一门脚本语言,支持的数据类型主要是简单变量和数组变量。awk中的数组与传统的C和java中的数组不同,更类似于C++ STL中的map或python中的dict,是关联式数组,通过关联关系将key和value结合起来。并且它并不限制key和value的类型,可以在一个数组中混合使用多种类型的key和value(尽管可能不常这么用)。awk中的变量在使用之前是不需要声明的,在第一次使用时确定它的类型,并且以后不再改变。所以如果一个变量arr第一次被当做数组来使用,那么

2010-12-06 11:53:00 3986

转载 C++ 例题

问题:    某大学开田径运动会,现有12名选手参加100米比赛,对应的运动员号及成绩如表所示,请按照成绩排名并输出,要求每一行输出名次、运动员号及成绩。要求用冒泡法排序。运动员号 成绩(秒) 运动员号 成绩(秒) 001 13.6 031 14.9 002 14.8 036 12.6 010 12.0 037 13.4 011 12.7 102 12.5 023 15.6 325 15.

2009-09-19 22:58:00 1496

转载 C++中格式控制小结

     每个iostream对象维持一个控制IO格式化细节的格式状态。标准库定义了一组操纵符来修改对象的格式状态。所谓操纵符是可用作输入或输出操作符的函数或对象。iostream和iomanip头文件中分别定义了一些操纵符,如表所示:iostream中定义的操纵符  boolalpha 将真和假显示为字符串 * noboolalpha 将真和假显示为1, 0   showbase 产生指

2009-09-19 22:57:00 1711

转载 File结构含义

在stdio.h中定义了一下结构:typedef struct __iobuf {    int        _count;    int        _fd;    int        _flags;    int        _bufsiz;    unsigned char    *_buf;    unsigned char    *_ptr;} FILE;具体含义是:     _

2009-07-16 23:59:00 962

原创 ExitThread()

第一,线程函数结束,线程即停止运行 第二,线程函数结束后,本身句柄(线程句柄)引用数减一,等到减到0,操作系统会自己释放,不需要调用ExitThread 第三,线程函数结束,想在运行,只有一个办法,重新Create子线程从其入口函数return之后,会进入C运行时库的代码里,进行一些释放资源的操作,然后自动调用ExitThread进行退出,在ExitThread函数里面也会进行一些释放操作,但

2009-07-14 19:45:00 3023

转载 cin.eof()

string s; cin>>s; if(cin.eof()) cout else cout cout for(int i=0;i

2009-07-03 00:17:00 864

原创 peekmessage getmessage

Peekmessage和Getmessagehttp://blog.csdn.net/rbagglo/archive/2009/05/20/4202622.aspxPeekmessage和Getmessage都是向系统的消息队列中取得消息,不过性质不同。 若第一次向消息队列中取不到消息,则程序的主线程会被OS(操作系统)挂起;等到OS重新调度到该线程时,而且消息队列仍然是空的时,两者的

2009-06-24 23:26:00 1258

转载 内核对象

  问题由critical section引起:        critical section 不是核心对象,它存在于进程的空间中        内核对象存在于内核空间中,是一种只能由内核访问的数据结构!   “内核对象”,肯定是只能被内核访问的创建于内存中的“数据结构”,也就是说,内核对象只是一块存储空间,这个空间中保存了有关这个“对象”的“数据结构”,简而言之,就是一个数

2009-06-24 23:08:00 832

转载 fwrite fprintf

fprintf(fp, "%d", buffer); 是将格式化的数据写入文件fprintf(文件指针,格式字符串,输出表列); fwrite(&buffer, sizeof(int), 1, fp);是以二进位位方式写入文件fwrite(数据,数据类型大小(字节数),写入数据的最大数量,文件指针); 由于fprintf写入时,对于整数来说,一位占一个字节,比如1,占1个字节;

2009-06-23 00:39:00 774

转载 指针函数

指针函数  指针函数是指带指针的函数,即本质是一个函数。  我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示:   返回类型标识符 *返回名称(形式参数表)   { 函数体 }   返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址

2009-06-22 23:42:00 597

转载 sscanf sprintf

sscanf和sprintf是scanf和printf家族的一对成员,用于处理和分析字符串非常强大得两个函数头文件 stdio.h原型int sscanf(               const char *buffer,               const char *format,               ...               );int sprintf(       

2009-06-09 00:14:00 959

原创 临时对象

//临时对象是在堆栈中形成的,析构函数执行后,但是对象仍在那个地方,而且你的指针还指向那里. //任何时候我们都可以通过指针来调用成员函数,即使是强制类型转换的也可以. //比如说这样 ((Point *)0)->f(); //上面的解释:非成员函数,与普通的C全局函数一样,存放在代码段里,所以就像普通函数一样,所有Point类的对象或者指针都可以使用,#include#includeusin

2009-06-06 00:52:00 640

转载 C++ 函数指针

关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用。//形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一个

2009-06-04 11:01:00 957

转载 Static成员函数不能修饰const

最近在网上查资料的时候偶然看到有人说static成员函数不能用const修饰的问题,感觉有点奇怪,以前都没有这么用过,也没有想过他们两个到底能不能搭配起来使用,后来仔细一想发现确实是这么回事,因为我们在定义一个类对象的时候,实际上只给该对象的非静态的数据成员分配内存空间(假设没有虚函数),而该类的静态成员数据以及该类的函数都在编译的时候分配到一个公共的空间里,所有,在定义一个对象并调用类对象的函数

2009-06-03 14:04:00 2574 1

转载 左值 右值

什么情况下返回指针?什么情况下返回引用?指针和引用的效果一样么?这里不仅涉及到引用的实现,也涉及到左值与右值的概念。因为返回值性质的不同决定了引用与指针必定不是相同的。相信你读过我写的这篇文章之后,会有一个比较清醒的认识。 左值(lvalue)和右值(rvalue)最先来源于C语言。最先在C语言中表示位于赋值运算符两侧的两个值,左边的就叫左值,右边的就叫右值。比如:int ii = 5;   //

2009-06-02 00:25:00 672

转载 内存分配--1

内存分配方式有三种:(1)       从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)       在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)       从堆上分

2009-05-30 21:26:00 680

转载 malloc/free new/delete

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于m

2009-05-30 21:20:00 758

原创 算法-容器大小

算法不直接修改容器的大小。如果需要添加或者删除元素,则必须使用容器操作

2009-05-29 10:59:00 643

原创 算法从不改变容器的大小---理解

在 fill_n(back_inserter(vec),10,0);     中,问题在于,fill_n算法从来都不会改变容器的size,改变容器size的是back_inserter,back_inserter并不是一种“算法”,它可以看成是种“迭代适配器”。     于是,上面这条语句中的fill_n是一直是在“被back_inserter修改着的”容器中插入无素,它本身从来不曾修改vec容器

2009-05-28 22:38:00 1407 2

转载 C++ PRIMER 笔记11

题记:本系列学习笔记(C++ Primer学习笔记)主要目的是讨论一些容易被大家忽略或者容易形成错误认识的内容。只适合于有了一定的C++基础的读者(至少学完一本C++教程)。  http://blog.chinaunix.net/u/18517/article_48097.html   本文主要讨论C++标准库中的泛型算法(generic algorithm)。泛型算法是使用容

2009-05-28 22:36:00 785

原创 string +

void Handle(int Num, string& strOut, char code){   char strNum[2000];   memset(strNum,0,sizeof(strNum));   sprintf(strNum,"%d",Num);   strOut=strOut+strNum+code;}  string + string + char 都可以!!

2009-05-27 01:03:00 540

原创 常量折叠-2

在C++中有提到常量折叠,以前有些搞不懂,看了几遍c++编程思想后,终于有所理解   例如  const int i=100;        const int j=i+10;在编译时并没有给i和j 分配存储空间,也就是说遇到i就用100代替,编译同时也进行了简单的常量计算,所以遇见j就用110代替,这样i和j就不占用内存了,如果要用他们的地址,就要为他们分配空间了,如  

2009-05-23 17:34:00 511

原创 常量折叠

#include  using namespace std; int main() { const int i=5; int* p= (int*)&i; cout cout *p=100;   cout   cout   cout   cout   return 0; } p=0012FF7C &i=0012FF7C *p=100 i=5; p=0012FF7C &i=0012FF7C  

2009-05-23 17:31:00 465

转载 const 用法详解

const用法详解 面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读   const int i=5;   int j=0;   ...   i=j;  //非法,导致编译错误   j=i;  //合法 2. 必须初始化   const in

2009-05-23 16:45:00 478

原创 VECTOR

1.VectorSizeof(vector):16 看源代码看到:    _A allocator;       iterator _First, _Last, _End;每个指针占有4个字节,所以大小为16vector vec;   vector ivec[10];   cout  //16   cout  //1602 动态创建二维vectror方法

2009-05-23 01:28:00 627

转载 C++文件流:

fstream  // 文件流ifstream  // 输入文件流ofstream  // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ofstream f1("d://me.txt");           //打开文件用于写,若文件不存在就创建它if(!f1)return;              

2009-05-22 00:53:00 1816 1

转载 stdcall cdecl

最近碰到很多c和c++互相调用的问题。除了extern "C"之外,还有一个很重要的地方就是函数名称的修饰,c++之所以可以重载函数是因为它编译的时候生成的函数名会格外加上它的类型和参数等信息。这样,不同参数列表的函数就不同名了。 c编译时函数名修饰约定规则:           __stdcall调用约定在输出函数名前加上一个下划线前缀,后面加上一个“@”符号和其参数的字节数,格式为_f

2009-05-21 19:00:00 3303

原创 enum (忘记了重新练手)

#include#includeusing namespace std;enum strData {Faster,Higher,Stronger} Data;int main(){   int NumCase,Num,Best,Record;   string strFlag;   cin>>NumCase;   for(int i=0;i   {   int j;      cin >>

2009-05-21 00:10:00 644

原创 pipe-cmd.exe

 #include #include #include #pragma comment(lib,"Ws2_32")int main(){    WSADATA ws;    SOCKET listenFD;    char Buff[1024];    int ret;    //初始化wsa    WSAStartup(MAKEWORD(2,2),&ws);    //建立socket    l

2009-05-20 01:09:00 852

转载 CMD.EXE 参数

Cmd.exe有很多命令行参数,具体情况如下:CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [[/S] [/C | /K] string]/C 执行字符串指定的命令然后中断;/K 执行字符串指定的命令但保留;/S 在 /C 或 /K 后修改字符串处理;/Q 关闭回应;/D 从注册表中停用执行Au

2009-05-20 00:33:00 2504

原创 inner join、 left join 、right join、 outer join之间的区别

A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 select A.*,B.* from A inner join B on(A.a1=B.a2) 结果是: a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 select A.*,B.* fro

2009-05-19 09:51:00 742

转载 Windows系统下的远程堆栈溢出-原理篇(一)

第一篇 《原理篇》 ----远程溢出算法 如何开一个远程shell呢? 思路是这样的:首先使敌人的程序溢出,让他执行我们的shellcode。 我们的shellcode的功能就是在敌人的机器上用某个端口开一个telnetd 服务器, 然后等待客户来的连接。当客户连接上之后,为这个客户开创一个cmd.exe, 把客户的输入输出和cmd.exe的输入输出联系起来,我们

2009-05-15 14:25:00 735

转载 SMB-2

Samba服务工作原理Samba服务工作原理Samba服务的具体工作过程如图所示。① 首先客户端发送一个SMB negprot请求数据报,并列出它所支持的所有SMB协议版本。服务器收到请求信息后响应请求,并列出希望使用的协议版本。如果没有可使用的协议版本则返回0XFFFFH,结束通信。② 协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SesssetupX请求

2009-05-14 13:13:00 1295

原创 传说中的利用SMB协议检测操作系统类型CODE

/*  * This is a little smb OS-detection tool which gets workgroup, smbserver and OS  * works for all tested samba versions on different platforms   * like: macosx,aix,solaris,linux,bsd and all Windows

2009-05-14 12:43:00 1128

原创 自己编译的ms06040

修改中!!

2009-05-14 00:43:00 543

转载 溢出漏洞扫描技术方法与实现

 写了多篇溢出技术方面的文章,内容更多的是涉及漏洞调试、分析利用以及纯粹的ShellCode编写技巧。其实如果要掌握好一个溢出漏洞,漏洞的扫描技术 也是同样重要的。本文我将和大家一起来简单讨论一下常见的溢出漏洞扫描技术,并结合新老两个漏洞例子——SQL Resolution 溢出漏洞和PNP溢出漏洞(MS05-039)分别进行实现。 一、 Windows下常用的溢出漏洞扫描方法对于漏洞扫描

2009-05-14 00:21:00 941

转载 PIPE--Windows系统编程之进程间通信

标 题: Windows系统编程之进程间通信作 者: 北极星2003时 间: 2006-05-25 14:18 链 接: http://bbs.pediy.com/showthread.php?threadid=26252 详细信息Windows 的IPC(进程间通信)机制主要是异步管道和命名管道。(至于其他的IPC方式,例如内存映射、邮槽等这里就不介绍了)管道(pipe)是用于进

2009-05-14 00:19:00 3656

原创 MS06040CODE

#include #include  #pragma comment(lib, "mpr")#pragma comment(lib, "Rpcrt4") // bind uuid interface: 4b324fc8-1670-01d3-1278-5a47bf6ee188 v3.0unsigned char DCERPC_Bind_RPC_Service[] =

2009-05-13 09:04:00 927

转载 域名劫持

域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。  域名解析(DNS)的基本原理是把网络地址(域名,以一个字符串的形式,比如 www.google.com)对应到真实的计算机能够识别的网络地址(IP地址,比如216.239.53.99 这样的形式),以

2009-05-12 20:51:00 1006 1

转载 ms06040 code

/** MS06-040 Remote Code Execution Proof of Concept** Ported by ub3r st4r aka iRP* ---------------------------------------------------------------------* Tested Against:*  Windows XP SP1*  Windows 200

2009-05-12 10:41:00 797

空空如也

空空如也

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

TA关注的人

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