博文

[C++]栈和堆原理介绍(2007-07-13 13:48:00)

摘要: C++应用中内存分为2部分,一部分是栈(stack,也称堆栈),另一部分是堆(heap)。           栈: 可以把栈看成是一叠卡片,最上面的卡片表示程序的当前作用域,这往往就是当前正在执行的函数。当前函数中声明的所有变量都置于栈顶帧中,即占用栈顶帧的内存,这就相当于一叠卡片中最上面的一张卡片。如果当前函数调用了另一个函数,举例来说,一开始一叠卡片位于最底的卡片是main()函数,main()函数调用了foo()函数,则相当于在这一叠卡片上加了另一张卡片,这样foo()函数就有了自己的栈帧(就是指一块内存空间)以供使用。从main()传递到foo()的所有参数都会从main()栈帧复制到foo()栈帧中。 然后foo()函数又调用了bar()函数,则在这一叠卡片上又加了一张卡片,这样bar()就有了自己的栈帧(stack frame)以供使用,从foo()传递到bar()的参数就会从foo()栈帧复制到bar()栈帧中。 图片如下: foo()函数声明了一个整数值。
             栈帧很有意义,因为栈帧可以为每个函数提供一个独立的内存工作区。如果一个变量是在foo()栈帧中声明的,那么调用bar()函数不会对它带来改变,除非你专门要求修改这个变量。另外,foo()函数运行结束时,栈帧既消失,该函数中声明的所有变量就不会再占用内存了。。              堆:堆是一段完全独立于当前函数或栈帧的内存区。如果一个函数中声明了一些变量,而且希望当这个函数结束时其中声明的变量依然存在,就可以将这些变量置于堆中。堆与栈相比,没有那么清晰的结构性。可以把堆看作是一“堆”小玩艺。程序可以在任何时刻向这个“堆”添加新的东西或者修改“堆”中已经有的东西。            &......

阅读全文(2824) | 评论:0

[C/C++]编程入门必做的题(76个 转)(2007-07-13 13:47:00)

摘要: 编程入门必做的题(76 个) 很久没去论坛逛了,一进去就看到这个了,看题目,本来以为是些简单的题目,本来不想点的,不过后来还是忍不住点了看了,  一看才知道,原来不是些简单的题目,有很多都是些经典的题目。。。   诶,偶好久没有动过C/C++了,现在就来锻炼一下,坚持一天做一个,看会不会做。。。。。 第一,二题解题思路......

阅读全文(1588) | 评论:0

[C++]2005“现代C++设计与编程”讲师讲义下载(2007-07-13 13:46:00)

摘要:2005 "现代C++设计与编程" 技术大会 讲师讲义开放下载:       Bjarne Stroustrup  《Direction for C++0x》       云风  《游戏的优化》       孟岩  《什么是高级C++》       荣耀  《C++模板元编程技术与应用》       陈榕  《面向目标代码编程与C++的未来》       李建忠  《C++/CLI:建立本地世界与托管世界互通的桥梁》       张银奎  《C++异常处理得与失》       温昱  《架构设计:策略与过程》       何宗键  《C++在嵌入式系统中的运用》       鲍志云  《用C++开发高性能服务器端网络应用程序》       黄飞龙  《多核技术与C++并发编程》       王旭  《基于C++的网游服务器中间件模型》因牵扯到相关公司机密,不便公开。 有2,3篇讲义是英文的,看来要补下英文了,不然看不懂。。。  ......

阅读全文(1817) | 评论:0

[面试题]2005年11月华为在南邮的招聘笔试题(转)(2007-07-13 13:45:00)

摘要:1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?
答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;
改后答案依次为9,10,10,11

2.某32位系统下, C++程序,请计算sizeof 的值(5分).
char str[] = “www.ibegroup.com”
char *p = str ;
int n = 10;
请计算
sizeof (str ) = ?(1)
sizeof ( p ) = ?(2)
sizeof ( n ) = ?(3)
void Foo ( char str[100]){
请计算
sizeof( str ) = ?(4)
}
void *p = malloc( 100 );
请计算
sizeof ( p ) = ?(5)
答:(1)17 (2)4 (3) 4 (4)4 (5)4

3. 回答下面的问题. (4分)
(1).头文件中的 ifndef/define/endif 干什么用?预处理
答:防止头文件被重复引用
(2). #i nclude 和 #i nclude “filename.h” 有什么区别?
答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。
(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变

量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调

用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
(4). switch()中不允许的数据类型是?
答:实型

4. 回答下面的问题(6分)
(1).Void GetMemory(char **p, i......

阅读全文(1900) | 评论:0

[.NET].NET Framework 框架概述(转)(2007-07-13 13:44:00)

摘要:.NET Framework .NET Framework
    .NET Framework 是微软的几个开发团队一起努力发展的成果,最主要用来产生一个可以用来快速开发、部署网站服务及应用程序的开发平台。这个架构是两个项目的结果:第一个项目的目的是用来改善Windows 作业平台上的程序开发,特别是改善COM(Component Object Model,组件对象模块。一种微软所制定的软件技术;让对象的功能可以被其它软件所叫用,可以让组件重复使用、容易更新及维护);第二个项目则是制作一个以发展服务(Service)软件为目标的开发平台。这两个项目团队三年多前就已经在一起工作,他们希望可以发展出一种可以快速开发出以因特网为基础,而且易学易用的开发平台。为了要达到这些目标,所以.Net Framework 在设计时加入了下列特色:

透过因特网的标准做整合
    以XML(eXtensible Markup Language,延伸标注语言)及SOAP(Simple Object AccessProtocol,简单对象存取协议)等标准通讯协议,将各种由不同环境所组成的应用程序及组件整合在一起工作。

松散的整合组件
    大多数具延展能力(可扩充功能)的系统,现阶段是以「异步讯息」为架构而建立的。要建立这种多层的架构非常复杂,而且工具很少。.NET Framework 不需要很严谨的定义每个组件的结构即可很轻松的整合,这样可提高程序的延展性。

支持多种程序语言
    许多程序设计师会使用多种语言来开发他们的解决方案,这是因为每种语言都有它的长处。例如某些语言对于数值计算效率较好,某些语言对于数据库的操作较为方便,而某些语言又有大量的链接库可供使用;所以没有办法强迫别人只学一种程序语言。.NET Framework 把这些语言整合起来,可以让开发人员使用不同的程序语言来开发解决方案,让程序设计师可以选择他们专长的程序语言,企业则可省去重新训练员工的成本。

提高程序设计师的生产力
    ......

阅读全文(4876) | 评论:0

[.NET]C#学习笔记--System.Collections详解和示例(2007-07-13 13:43:00)

摘要: System.Collections 常用类,结构和结构: 类:ArrayList,Hashtable,SortedList 接口:ICollection,IEnumerator,IList 结构:DictionaryEntry 类:       ArrayList: 数组列表,是Array类的优化版本。。       Hashtable: 一种数据结构,将数据作为一组键(Key)值(Value)来存储,Hash表中数据将会根据Key来建立索引,一般用来存储几万,几十万条数据,数据搜索性能高。      SortedList: 一种排序的数据列表,也是将数据作为一组键(Key)值(Value)来存储,也会根据Key来建立索引,一般用来存储几百,几千条数据,当存储几万条是数据的搜索性能就会降低,因此超过上万建议使用Hashtable。 接口:          ICollection:定义了一组管理元素的函数,如添加,删除等等。          IEnumerator:继承于ICollection,因此具有管理元素的功能,且添加了新的功能,既可以通过他来遍力元素。          IList:继承于IEnumerator,因此具有管理,遍力且新加了通过索引查找元素。 结构:          DictionaryEntry:一个结构体,包括了一个键(Key)和值(Value)变量,既键值对。Hashtable和SortedList的变量数据类型为DictionaryEntry。因此可以通过DictionaryEntry来遍力Hashtable和SortedList。   /* Hashtable示例 */ /* 4种遍力Hashtabl......

阅读全文(1809) | 评论:0

[ASP.NET]ASP.NET程序中常用的三十三种代码(转)(2007-07-13 13:41:00)

摘要:ASP.NET程序中常用的三十三种代码

   1. 打开新的窗口并传送参数:

   传送参数:

CODE: [Copy to clipboard] response.write("<script> window .open('* .asp x?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")    接收参数:

CODE: [Copy to clipboard] string a = Request.QueryString("id");
string b = Request.QueryString("id1");   2.为按钮添加对话框

CODE: [Copy to clipboard] Button1.Attributes.Add("onclick","return confirm('确认?')");
button.attributes.add("onclick","if(confirm('are you sure...?')){return true;}else{return false;}")     3.删除表格选定记录

CODE: [Copy to clipboard] int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString()    4.删除表格记录警告

CODE: [Copy to clipboard] private void DataGrid _ItemCreated( Object sender,DataGridItemEventArgs e)
{
  switch(e.Item.ItemType)
  {
   case ListItemType.Item :
   case ListItemType.Alt......

阅读全文(1682) | 评论:0

[ASP.NET]解析Asp.net木马文件操作(转)(2007-07-13 13:40:00)

摘要:要编写Asp.net木马,首先要导入名称空间System.IO。名称空间System.IO提供了大量文件和文件夹的操作功能,包括读写文件、创建和删除目录以及察看文件和目录的属性。
1. 浅谈取得文件和文件夹的信息
详细说一下attributes集合,它提供了文件和文件夹的额外信息,如是否只读的或隐藏的。
文件和目录的属性
属性 数字值
ReadOnly(只读) 1
Hidden(隐藏) 2
System(系统) 4
Directory(目录) 16
Archive(存档) 32
Encrypted(加密) 64
Normal(普通) 128
Tempory(临时) 256
SparseFile(稀疏文件) 512
Compressed(压缩) 2048
Offline(脱机) 4096
NotContentIndexed(非内容索引) 8192

要改变文件的属性,只需将这些值类加。例如,要将目录设置为隐藏+系统+加密+压缩,可以使用下面的语句:
f.attributes=2138
2138即2+4+64+2048
这些值估计新手很难记忆,我们直接用属性名称来设置,只要用或bitor来分割各属性,如:
f.attributes=FileAttributes.Hidden BitOr FileAttributes.System BitOr FileAttributes. Encrypted BitOr FileAttributes. Compressed
上述代码相当于f.attributes=2138
要确定文件或者文件夹的某个属性被设置,可使用与操作符bitand这样来检测:
if f.attributes bitand fileattributes.hidden >0 then
response.write(“属性为隐藏!”)
end if

检测函数:
sub getfileinfo()
dim f as new fileinfo(server.mappath(“test.aspx”))
f =new fi......

阅读全文(1140) | 评论:0

[.NET]ADO.NET调用存储过程(2007-07-13 13:39:00)

摘要:一: 执行不带返回参数(Input)的存储过程
           1: 首先在数据库写个存储过程, 如创建个 addUser存储过程。
                  Create Proc addUser
                  @ID int,
                  @Name varchar(20),
                  @Sex varchar(20)
                  As
                  Insert Into Users Values( @ID, @Name,@Sex )
           2:创建SqlCommand对象,并初始SqlCommand对象 如:
   &......

阅读全文(2660) | 评论:0

[C#].Net生成静态页面方案汇集(转)(2007-07-13 13:38:00)

摘要: 方案1:
/// <summary>
/// 传入URL返回网页的html代码
/// </summary>
/// <param name="Url">URL</param>
/// <returns></returns>
public static string getUrltoHtml(string Url)
{
errorMsg = "";
try
{
System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
// Get the response instance.
System.Net.WebResponse wResp =wReq.GetResponse();
// Read an HTTP-specific property
//if (wResp.GetType() ==HttpWebResponse)
//{
//DateTime updated =((System.Net.HttpWebResponse)wResp).LastModified;
//}
// Get the response stream.
System.IO.Stream respStream = wResp.GetResponseStream();
// Dim reader As StreamReader = New StreamReader(respStream)
System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));
return reader.ReadToEnd();

}
catch(System.Exception ex)
{
errorMsg = ex.Message ;
}
return "";
}

  你可以用这个函数获取网页的客户端的html代......

阅读全文(1260) | 评论:0