每个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为程序的自由存储区(free store)或堆(heap)。C语言用一堆标准库函数malloc和free在自由存储区中分配存储空间,而C++则用new和delete表达式实现相同的功能。
一、new和delete创建和释放动态数组:
数组类型的变量有三个重要的限制:数组长度固定,在编译时必须知道其长度,数组只在定义它的语句内存在。动态数组:长度固定,编译时不必知道其长度,通常是运行时确定;一直存在,直到程序显示释放它。
1、动态数组的定义:数组变量通过指定类型、数据名和维数来定义。而动态分配数组时,只需指定类型和数组长度,不必为数组对象命名,new表达式返回指向新分配数组的第一个元素的指针:int *pia=new int[10];在自由存储区中创建的数组对象没有名字,只能通过其地址间接访问堆中的对象。
2、初始化动态分配的数组:若数组元素具有类类型,将使用该类的默认构造函数初始化;若数组元素是内置类型,则无初始化。也可跟在数组长度后面的一堆空圆括号,对数组元素做值初始化。
string *psa=new string[10]; //array of 10 empty strings
int *pia=new int[10]; //array of 10 uninitialized ints
int *pia2=new int[10](); //array of 10 zero
对于动态分配的数组,其元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。
3、const对象的动态数组:若在堆中创建的数组存储了内置类型的const对象,则必须为这个数组提供初始化:因数组元素都是const对象,无法复制。
const int *pci_ok=new const int[100]();
C++允许定义类类型的const数组,但该类型必须提供默认构造函数。
已创建的常量元素不允许修改,所以此类数组用处不大。
4、允许动态分配空数组:动态分配数组,多是由于编译时不知道数组长度。
size_t n=get_size(); int*p=new int[n];
C++虽然不允许定义长度为0的数组变量,但明确指出,调用new创建长度为0的数组是合法的。new返回有效的非零指针。该指针不能与new返回的其他指针不同,不能进行解引用操作,因它没指向任何元素。允许的操作:比较运算。
5、动态空间的释放:程序员必须显示将其占用的存储空间返还给程序的自由存储区。C++语言为指针提供delete []表达式释放指针所指向的数组空间。
delete [] pia;[]告诉编译器该指针指向的是堆中的数组,而非单个对象,若遗漏,编译器无法发现。
二、new和delete创建和释放单个对象
定义变量时,必须指定其数据类型和名字。而动态创建对象时,只需指定其数据类型。new返回指向新创建对象的指针,通过该指针来访问此对象。
1、动态创建对象的初始化:int *pi=new int(1024)
2、动态创建对象的默认初始化:若不提供显式初始化,与函数内定义的变量初始化方式相同,类类型->默认构造函数;内置类型->无初始化。同样可做值初始化:int *pi=new int();值初始化的()必须置于类型名后,而非变量后,int x()是声明函数。
3、撤销动态创建的对象:程序员必须显示将该对象占用的内存返回给自由存储区。delete,若指针指向不是用new分配的内存地址,则对该指针使用delete非法。
int i; int *pi=&i; delete pi;//编译器不能断定一个指针指向什么类型的对象,因此大部分编译器仍能通过(VS2005编译通过,执行到该处报错)。
4、零指针的删除:int *ip=0; delete ip;若指针值为0,则delete合法。
5、delete后,重设指针值:delete p;删除指针后,p成为悬垂指针。悬垂指针指向曾经存放对象的内存,但该对象已不存在,引用该内存报错。所以一旦删除指针所指向的对象,立即将指针置为0。
6、const对象的动态分配和回收:创建时初始化,且一经初始化,其值不可修改。
const int *pci=new const int(1024);new表达式返回int型const对象的指针。所以只能赋给指向const的指针。内置类型对象或未提供默认构造函数的类类型对象必须显示初始化。
删除const对象:delete pci;
三、与动态内存分配相关的三种常见程序错误:
1、删除指向动态分配内存的指针失败,称为memory leak。一般需等程序运行一段时间,耗尽内存时,才显露出来。
2、读写已删除的对象。若删除指针所指对象后,置指针值为0,易检查出此类错误。
3、对同一个内存空间使用两次delete表达式。第二次delete时,自由存储区可能被破坏。
MySQL 数据库常用命令简单超级实用版 1、MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 表的详细描述 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示。 显示当前mysql版本和当前日期 select version(),current_date; 2、修改mysql中root的密码: shell>mysql -u root -p mysql> update user set password=password(”xueok654123″) where user='root'; mysql> flush privileges //刷新数据库 mysql>use dbname;打开数据库: mysql>show databases; 显示所有数据库 mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后 mysql>describe user; 显示表mysql数据库中user表的列信息); 3、grant 创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令some thing做这个 mysql> grant all privileges on *.* to user@localhost identified by 'something' with 增加新用户
DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范,DOM是一种与浏览器,平台,语言的接口,使得你可以访问页面其他的标准组件。简单理解,DOM 解决了Netscaped的Javascript和Microsoft的Jscript之间的冲突,给予web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对像。 基本简介 DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中导航仪寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM 被认为是基于树或基于对象的。对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如Simple API for XML(SAX),适用于处理数据流,即随着数据的流动而依次处理数据。基于事件的API 消除了在内存中构造树的需要,但是却不允许开发人员实际更改原始文档中的数据。另一方面,DOM 还提供了一个API,允许开发人员添加、编辑、移动或删除树中任意位置的节点,从而创建一个引用程序。解析器是一个软件应用程序,设计用于分析文档(这里是指XML文件),以及做一些特定于该信息的事情。在诸如SAX 这样基于事件的API 中,解析器将向某种监听器发送事件。在诸如DOM 这样基于树的API 中,解析器将在内存中构造一颗数据树。 发展过程 从DOM Level 1 开始,DOM API 包含了一些接口,用于表示可从XML 文档中找到的所有不同类型的信息。它还包含使用这些对象所必需的方法和属性。Level 1 包括对XML 1.0 和HTML 的支持,每个HTML 元素被表示为一个接口。它包括用于添加、编辑、移动和读取节点中包含的信息的方法,等等。然而,它没有包括对XML 名称空间(XML Namespace)的支持,XML 名称空间提供分割文档中的信息的能力。DOM Level 2 添加了名称空间支持。Level 2 扩展了Level 1,允许开发人员检测和使用可能适用于某个节点的名称空间信息。Level 2 还增加了几个新的模块,以支持级联样式表、事件和增强的树操作。当前正处于定稿阶段的DOM Level 3 包括对创建Document 对象(以前的版本将这个任务留给实现,使得创建通用应用程序很困难)的更好支持、增强的名称空间支持,以及用来处理文档加载和保存、验证以及XPath 的新模块;XPath 是在XSL 转换(XSL Transformation)以及其他XML 技术中用来选择节点的手段。DOM 的模块化意味着作为开发人员,您必须知道自己希望使用的特性是否受正在使用的DOM 实现所支持。 可用特性 DOM 推荐标准的模块性质允许实现者挑选将要包括到产品中的部分,因而在使用某个特定的特性之前,首先确定该特性是否可用可能是必要的。使用DOM Level 2 Core API,不过在着手您自己的项目时,了解如何能够检测特性是有所帮助的。DOM 中定义的接口之一就是DOMImplementation。通过使用hasFeature() 方法,可以确定某个特定的特性是否受支持。DOM Level 2 中不存在创建DOMImplementation 的标准方法,不过下面的代码将展示如何使用hasFeature() 来确定DOM Level 2 样式表模块在某个Java 应用程序中是否受支持。 import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder;
数据库文件及记录命令 ADD TABLE 在当前数据库中添加一个自由表 APPEND 在表的末尾添加一个或多个新记录 APPEND FROM ARRAY 由数组添加记录到表中 APPEND FROM 从一个文件中读入记录,追加到当前表的尾部 APPEND GENERAL 从文件中导入OLE对象并将其放入通用字段中 APPEND MEMO 将文本文件的内容复制到备注字段中 APPEND PROCEDURES 将文本文件中的存储过程追加到当前数据库中 A VERAGE 计算数值表达式或字段的算术平均值 BLANK 清除当前记录中所有字段的数据 BROWSE 打开浏览窗口,显示当前或选定表的记录 CALCULATE 对表中的字段或包含字段的表达式进行财务和统计操作CHANGE 显示要编辑的字段 CLOSE 关闭各种类型的文件 CLOSE MEMO 关闭一个或多个备注编辑窗口 COMPILE DATABASE 编译数据库中的存储过程 CONTINUE 继续执行先前的LOCATE命令 COPY MEMO 复制当前记录中的指定备注字段的内容到文本文件 COPY PROCEDURES 将当前数据库中’的存储过程复制到文本文件 COPY STRUCTURE 用当前选择的表结构创建一个新的空自由表 COPY STRUCTURE EXTENDED 创建新表,它的字段包含当前选定表的结构信息COPY TO ARRAY 将当前选定表中的数据复制到数组
COPY TO 用当前选定表的内容创建新文件 COUNT 统计表中记录数目 CREATE 生成一个新的VisualFoxPro表 CREATE CONNECTION 创建一个命名连接并把它存储在当前数据库中 CREATE DATABASE 创建并打开一个数据库 CREATE TRIGGER 创建表的删除、插入或更新触发器 CREATE VIEW 从VisualFoxPro环境创建视图文件 DELETE 给要删除的记录做标记 DELETE CONNECTION 从当前数据库中删除一个命名连接 DELETE DATABASE 从磁盘上删除数据库 DELETE TRIGGER 从当前数据库的表中删除“删除”、“插入”或“更新”触发器│ DELETE VIEW 从当前数据库中删除一个SQL视图 DISPLAY 在VisualFoxPro主窗口或用户自定义窗口中显示与当前表有关的信息DISPLAY CONNECTIONS 显示当前数据库中与命名连接有关的信息 DISPLAY DATABASE 显示有关当前数据库的信息,或当前数据库中的字段、命名连接、表或视图的信息 DISPLAY MEMORY 显示内存变量和数组的当前内容 DISPLAY PROCEDURES 显示当前数据库中存储过程的名称 DISPLAY STRUCTURE 显示一个表文件的结构 DISPLAY TABLES 显示包含在当前数据库中所有的表和表的信息 DISPLAY VIEWS 显示当前数据库中关于SQL视图的信息以及SQL视图是否基于本地或远程表的信息 DROP TABLE 把一个表从数据库中移出,并从磁盘中删除它 DROP VIEW 从当前数据库中删除指定的SQL视图
下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ?%value1%? ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count * as totalcount from table1 求和:select sum(field1) as sumvalue from table1
document对象以及应用 Document对象在Dom中处于核心地位,其实我们把Dom树称为Document 对象,在JavaScript中,document对象就是浏览器的内置对象,因此具有document 对象的所有属性和方法。Document对象是特殊的Node对象,但是对于Document 来说我们更重要的是看重Document的方法。document具有创建其他任何节点 的能力,比如能够正常创建Element,TextNode,Attribute节点等,具体的方法 如下:F代表FireFox: 属性描述IE F W3 adoptNode(sourcenode)从另一个文档向此文档选取一个节 点,然后返回被选取的节点 Yes createAttribute(name)创建拥有指定名称的属性节点,并 返回新的Attr 对象。 61Yes createAttributeNS(uri,name)创建拥有指定名称和命名空间的属 性节点,并返回新的Attr 对象。 Yes createCDATASection()创建CDATA 区段节点。51Yes createComment()创建注释节点。61Yes createDocumentFragment()创建空的DocumentFragment 对 象,并返回此对象。 51Yes createElement()创建元素节点。51Yes createElementNS()创建带有指定命名空间的元素节 点。 No1Yes createEntityReference(name)创建EntityReference 对象,并返回 此对象。 5Yes createProcessingInstruction (target,data)创建ProcessingInstruction 对象,并 返回此对象。 5Yes createTextNode()创建文本节点。51Yes getElementById(id)返回拥有带有给定值的ID 属性的 元素。如果此元素不存在,则返回 null。 51Yes getElementsByTagName_r()返回带有指定名称的所有元素的节 点列表 51Yes getElementsByTagNameNS()返回带有指定名称和命名空间的所 有元素的列表。 No1Yes
创建数据库:[库名] 显示所有数据库: ; 打开数据库[库名] 当前选择地库状态(); 创建数据表[表名]([字段名] [字段类型]([字段要求]) [字段参数], ......); 资料个人收集整理,勿做商业用途 显示数据表字段表名; 当前库数据表结构; 更改表格 [表名] [字段名] 说明:增加一个栏位(没有删除某个栏位地语法. [表名] ([字段名]) 说明:更改表得地定义把某个栏位设为主键. [表名] ([字段名]) 说明:把主键地定义删除. 显示当前表字段; 删库[库名]; 删表[表名]; 数据操作 添加:[表名] ('','',......顺序排列地数据); 查询: * [表名] ([条件]); 建立索引[索引文件名] [表名] ([字段名]); 删除:[表名] ([条件]); 修改:[表名] [修改内容如''] [条件];资料个人收集整理,勿做商业用途 导入外部数据文本: .执行外部地脚本 当前数据库上执行< 指定数据库上执行[表名] < .数据传入命令"[文件名]" [表名]; 资料个人收集整理,勿做商业用途 备份数据库:(下) > 提示:常用命令以";"结束,有少量特殊命令不能加";"结束,如备份数据库 一. 增删改查操作 资料个人收集整理,勿做商业用途 . 增: 表名(,'测试'); 注:如上语句,表结构中有自动增长地列,也必须为其指定一个值,通常为 表名() (,'尹当')同上 .删数据: 表名; 表名; 删除结构: 删数据库:数据库名; 删除表:表名;
删除表中地列表名列名; . 改: 修改所有:表名列名'新地值,非数字加单引号' ; 带条件地修改:表名列名'新地值,非数字加单引号' ; .查: 查询所有地数据:* 表名; 带条件地查询: * 表名列名条件值; * 表名列名()'字符值' 分页查询:* 表名每页数量偏移量; 二.操作命令 资料个人收集整理,勿做商业用途 . 查看数据库信息:; .查看表信息:; .查看表地结构:表名 . 新建数据库数据库名; .操作指定数据库数据库名; .新建数据表(先操作库); 表名(规范为表名) ( ,( 为自动增长) 资料个人收集整理,勿做商业用途 () ) 支持事务和设置表地编码 添加主外键: 外表名名称(外列) 主表名(主列) 资料个人收集整理,勿做商业用途 如现有两表主表子表现子表地列引用了主表地列资料个人收集整理,勿做商业用途则命令如下: () () 资料个人收集整理,勿做商业用途 .导出表,备份到一个文件中,如 命令窗口:用户名需要备份地数据库名>备份地文件地保存路径和文件名资料个人收集整理,勿做商业用途 注:如指定地文件不存在,会自动添加一个文件,此命令不能加分号结尾(文件没有备份建数据库操作)资料个人收集整理,勿做商业用途 .导入数据库备份文件: ().在命令窗口 ().新建一个要导入地数据库(因为备份中没有备份建数据库操作) () 当前库名 () 备份地文件地保存路径和文件名(此命令不能加分号结尾) 三:系统操作 资料个人收集整理,勿做商业用途 . 打开服务(为配置时,可自定名称) .关闭服务 .从模式进入 () 用户名回车>输入正确密码>进入欢迎
Oracle数据库实例的创建、删除与修改(doc 6页)
Oracle数据库实例的创建、删除、修改 以SUSE10SP2、Oracle10gR2为例。 本文中的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概念,包括一些内存区域以及若干进程,数据库实例是对数据库进行操作的执行者。(20090714修改) 安装完Oracle数据库系统的安装后,需要创建数据库实例才能真正开始使用Oracle数据库服务。 总结起来,Oracle有三种创建数据库实例的方法。 第一种,最常用也最简单,那就是通过DBCA(Database Configuration Assistant),这是Oralce提供的一个图形界面的数据库实例配置工具,通过它可以创建、删除和修改数据库实例,它的使用也比较简单、易懂,交互式的图形界面操作,非常准确有效的提示与配置,是一个比较方便的创建数据库实例的方式。 按照DBCA给出的提示,很容易创建一个新数据库实例。 在创建数据库的时候,DBCA还提供了两个选项,让你可以根据刚刚设置好的参数生成一个数据库实例模板和一份数据库实例创建脚本。这两个东西是非常好,非常有用的东西,数据库模板由Oracle自己管理维护,已经创建好的数据库实例模板可以在DBCA图形程序新建数据库实例时作为模板来使用,另外在DBCA使用responseFile文件或者命令行参数创建数据库时也需要用到(见后面介绍);数据库创建脚本是一组脚本,包括shell脚本和sql脚本,这些脚本共同实现一个功能,那就是按照你之前在DBCA中设置好的那样创建一个数据库实例(后面也会有介绍),你需要做的只是将这些脚本在你的代码中调用起来。当然,你也可以选择只生成数据库模板或者数据库脚本,而不用去创建一个真的数据库(这通常很费时间)。
Unix系统及数据库常用操作命令 oninit 数据库启动 onmode -ky 数据库关闭 onstat -l 查看逻辑日志使用情况 ontape -c 连续备份逻辑日志 onstat -g iof 查看每个chunk 的I/O 情况 onstat -g mem 查看数据库存的情况 onstat -d 查看数据库chunk 的使用情况 ontape -s -L 0 数据库0 级备份 dbimport
最近发现DOMDocument对象很重要,还有XMLHTTP也很重要 注意大小写一定不能弄错. 属性: 1Attributes 存储节点的属性列表(只读) 2childNodes 存储节点的子节点列表(只读) 3dataType 返回此节点的数据类型 4Definition 以DTD或XML模式给出的节点的定义(只读) 5Doctype 指定文档类型节点(只读) 6documentElement 返回文档的根元素(可读写) 7firstChild 返回当前节点的第一个子节点(只读) 8Implementation 返回XMLDOMImplementation对象 9lastChild 返回当前节点最后一个子节点(只读) 10nextSibling 返回当前节点的下一个兄弟节点(只读) 11nodeName 返回节点的名字(只读) 12nodeType 返回节点的类型(只读) 13nodeTypedV alue 存储节点值(可读写) 14nodeV alue 返回节点的文本(可读写) 15ownerDocument 返回包含此节点的根文档(只读) 16parentNode 返回父节点(只读) 17Parsed 返回此节点及其子节点是否已经被解析(只读) 18Prefix 返回名称空间前缀(只读) 19preserveWhiteSpace 指定是否保留空白(可读写) 20previousSibling 返回此节点的前一个兄弟节点(只读) 21Text 返回此节点及其后代的文本内容(可读写) 22url 返回最近载入的XML文档的URL(只读) 23Xml 返回节点及其后代的XML表示(只读) 方法: 1appendChild 为当前节点添加一个新的子节点,放在最后的子节点后2cloneNode 返回当前节点的拷贝 3createAttribute 创建新的属性 4create视频教程'>cdA TASection 创建包括给定数据的CDA TA段 5createComment 创建一个注释节点 6createDocumentFragment 创建DocumentFragment对象 7createElement 创建一个元素节点 8createEntityReference 创建EntityReference对象 9createNode 创建给定类型,名字和命名空间的节点 10createPorcessingInstruction 创建操作指令节点 11createTextNode 创建包括给定数据的文本节点 12getElementsByTagName 返回指定名字的元素集合
MYSQL命令大全 常见的MySQL命令大全 一、连接MySQL 格式:mysql -h主机地址-u用户名-p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>。 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出MYSQL命令:exit (回车)。 二、修改密码 格式:mysqladmin -u用户名-p旧密码password 新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令: mysqladmin -uroot -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 三、增加新用户。(注意:和上面不同,下面的因为是MySQL环境中的命令,所以后面都带一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机identified by \"密码\" 例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,
Document对象 属性title 设置文档标题等价于HTML的
body.text 文本色 body.innerText 设置
...之间的文本body.innerHTML 设置...之间的HTML代码body.topMargin 页面上边距 body.leftMargin 页面左边距 body.rightMargin 页面右边距 body.bottomMargin 页面下边距 body.background 背景图片 body.appendChild(oTag) 动态生成一个HTML对象 Localtion子对象详情见location对象 Image元素对象: document.images 对应页面上的标签document.images.length 对应页面上标签的个数document.images[0] 第1个标签 document.images[i] 第i-1个标签 document.images.oImage 通过nane属性直接引用document.images.oImage.src 引用图片的src属性 var oImage oImage = new Image() 创建一个图象 document.images.oImage.src="1.jpg" Form表单对象: document.forms 对应页面上的