当前位置:文档之家› Borland C

Borland C

Borland C
Borland C

Borland C++Builder 5.0教程(简介)

作者:陈明浩/太平洋网络学院[责编:爆破手]

Borland C++Bilder 5.0是Interprise(Borland)公司推出的基于C++ 语言的快速应用程序开发(Rapid Application Development,RAD)工具,它是最先进的开发应用程序的组件思想和面向对象的高效语言C++融合的产物。C++Builder 充分利用了已经发展成熟的Delphi 的可视化组件库(Visual Component Library,VCL),吸收了Borland C++ 5.0 这个优秀编译器的诸多优点。C++Builder 结合了先进的基于组件的程序设计技术,成熟的可视化组件库和优秀编译器,调试器。发展到5.0版本,C++Builder 已经成为一个非常成熟的可视化应用程序开发工具,功能强大而且效率高。

C++Builder的特色:

1〃C++Builder 是高性能的C++开发工具

C++Builder是基于C++的,它具有高速的编译,连接和执行速度。同时,C++Builder 具有双编译器引擎,不仅可以编译C/C++程序,还能编译Object Pascal语言程序。

2〃C++Builder是优秀的可视化应用程序开发工具

C++Builder是一完善的可视化应用程序开发工具,使程序员从繁重的代码编写中解放出来,使他们能将注意力重点放在程序的设计上,而不是简单的重复的劳动中。同时,它提供的完全可视的程序界面开发工具,从而使程序员对开发工具的学习周期大大缩短。

3〃C++Builder具有强大的数据库应用程序开发功能

C++Builder 提供了强大的数据库处理功能,它使的程序员不用写一行代码就能开发出功能强大的数据库应用程序,这些主要依赖于C++Builder众多的数据库感知控件和底

层的BDE数据库引擎。C++Builder除了支持MicroSoft的ADO(Active Data Object)数据库连接技术,还提供了一种自己开发的成熟的数据库连接技术——BDE(Borland Database Engine)数据库引擎。

4〃C++Builder具有强大的网络编程能力

C++Builder具有众多的Internet应用程序开发控件,如WebBroker,CppWebBroswer,WinSocks等,它们基本含盖了Internet应用的全部功能,利用它们程序员可以方便地建立自己地Internet应用程序。

一〃C++Builder5.0的集成开发环境(IDE,Integrated Development Environment)

1〃C++Builder 5.0的IDE主界面

1)组件面板

标准组件选项卡上的组件是构成Windows应用程序窗口最常用的标准元素,它们包括15种组件。主要有:主菜单(MainMenu),右键菜单(PopMenu),标签(Label),备注(Memo),命令按钮(Button),单选按钮(GroupBox),复选按钮(CheckBox),列表框(ListBox),下拉式列表框(ComboBox),滚动条(ScrollBar),组框(GroupBox)和单项按钮组框(RadioGroup)。

附加组件选项卡上的组件是Windows应用程序常用的专门控制元素,它包括14种组件。主要有:位图按钮(BitBtn),加速按钮(SpeedButton),格式编辑框(MaskEdit),字符网格(StringGrid),数据网格(dataGrid),图片框(Image),形状(Shape),和控制栏(ControlBar)。

Win32组件选项卡上的组件是32位Windows应用程序的常用元素,它们具有32位应用程序的新特征,Win32组件选项卡共包括18种组件。分页面控制(PageControl),图片列表(ImageList),多文本编辑器(RichEdit),列表视图框(ListView),树状目录视图框(TreeView),工具栏(ToolBar)和状态栏(StatusBar)。

Data Access和Data Control组件选项卡上的组件是用来设计数据库应用程序的。其中Data Access组件选项卡上的组件是数据库应用程序用来与数据库建立连接的,它们也称为数据访问组件。而Data Control 组件选项卡上的组件是用来与用户交互的,它们也称为数据感知组件。主要是:表(Table),查询(Query),数据源(DataSource),数据库导航器(DBNavigator),数据表格(DBGrid),数据库编辑框(DBEdit),数据库静态文本框(DBText),数据库列表框(DBListBox),数据库图片(DBImage)。

Dialogs组件选项卡是由一些常用标准对话框组件组成的。主要完成打开文件,保存文件,查找,替换,打印,打印机设置等Windows标准的对话框功能。

(2)对象查看器

对象名称用于选择和查看当前对象的名称,属性选项卡用于设置对象设计时的可见属性,事件选项卡用来设置对象的事件句柄或者在代码编辑器中定位对象事件句柄。二〃创建Windows程序

在主菜单中选择【File】中的【New】,在New 对话框中选择Application,按OK。

三〃运行程序

在菜单中选择【Run】中的【Run】,或者直接按快捷菜单上的运行按钮,还有是按快捷键F9,就可以运行当前程序。

四〃编译程序

在菜单中选择【Project】中的【build project1】就可以把程序编译成为可以直接运行的.exe文件。

但是这样编译而来的执行文件因为是动态连接到库函数,所以在没有装C++Builder 的机上不能正常运行。要编译成静态连接库,可以在所有机上运行的程序,只要这样做:打开【project】的【Options】,把packages页中的‘build with runtime packages’的勾去掉,linker页中的‘use dynamic Rtl’的勾去掉,再在compiler页中按release键。

五〃保存程序

在主菜单中选择【File】中的【Save Porject As】选项。再把所以文件(包括.cpp,.bak)都保存到一个目录下面。

Borland C++Builder 5.0教程(二)

作者:陈明浩/太平洋网络学院[责编:爆破手]加载C++Buidler 组件和引入ActiveX控件

一〃加载C++Builder组件

C++Builder中有很多组件,其中有一大部分组件不是很常用的,所以在C++Builder 中默认只加载了一部分常用的组件,其他组件就要进行手工加载。或者从别的地方(如在网上下载)得到一些其他的组件包(*.bpl),要把它加载到C++Builder里面,就要用到加载组件。

在C++Builder中加载组件是很方便的,你可以在主菜单【Porject】中按【Options】,再选【packages】页,又或者在【Component】中选【Install Packages】,得到packages 对话框(如下图)。

如果你想要加载C++Builder中未加载的组件,只有在相应的组件包的前面打上勾来选定;如果你要加载其他组件包,按【Add】按钮,再在【Add Design Package】对话框中选定其组件包(*.bpl)。之后按【OK】键,新加载的组件就会出现在组件面板上。

二〃引入ActiveX控件

众所周知,ActiceX控件因为其可以跨平台的特性使得ActiveX在很多环境下被广泛地使用。在C++Builder中引用ActiveX很简单。具体操作是在主菜单【Component】中选【Import ActiveX Control…】,弹出【Import ActiveX】的对话框,在对话框中选择你要引用的ActiveX

控件。

1. 控件类明,可以包括多个,表示这个ActiveX控件包里面有多个ActiveX控件,如这里就包TSkinForm,TskinButton和TSkinPanel这三个控件。

2. 组件在Component Palette(组件面板)的页面。在本例中,我们把引入的ActiveX控件放在ActiveX页面中。

3. 组件的源文件(.cpp)。

4. 当前搜索路径,一般不用修改。

按【Install】键,ActiveX控件已经成功地引入到C++Builder中,反正组件面板的ActiveX 页面中。

Borland C++Builder 5.0教程(三)

作者:陈明浩/太平洋网络学院[责编:爆破手]编程入门第一课――HelloWorld

曾几何时,HelloWorld已经成为编程入门的第一课。不管是什么语言,都以一个打出Hello World字串的小程序作为第一个入门程序。我们现在学C++Builder也把这个程序作为学习C++Builder的第一个入门程序。

相对C/C++等非可视化语言来说,C++Builder作为一种强大的可视化编程语言,那么它的入门级的HelloWorld程序也会非同凡响,而且还很简单易懂。好,现在就开始我们的HelloWorld!

一〃首先要创建一个新的程序。

在【File】菜单下选【New】,再在【New Items】对话框中选择Application,按OK键。或者在【File】菜单下直接选择【New Application】。

二〃加入相关组件。

把要用到的组件从在组件面板(Palette)上拖到窗体(Form)上,摆好位置,并设置好大小。我们这里用到一个标签(Label)和两个命令按钮(Button)。再改变窗体的大小,使窗体看上去好看一点。

三〃设置组件的属性

在属性查看器中修改各个组件的属性。下面的图示是把Label1的Caption(标题)属性改为‘HelloWorld’。先点击窗体上的Label1组件,再在右边的属性查看器中选定Caption的项,输入’HelloWorld’。

如上述所示,分别设置三个组件的属性为:

四〃加入事件。

双击Button1,弹出代码编辑窗口,在Button1Click事件中加入以下代码:Label1->Caption="Hello C++Builder!" ;

双击Button2,在Button1Click事件中加入以下代码:

Form1->Close();

五〃编译运行HelloWorld程序。

按快速栏上的运行按钮,或者按快捷键(F9)运行HelloWorld程序。

按【Start】按钮,结果如下:

按【Exit】退出程序。

到此为止,一个完整的HelloWorld程序就完成啦,是不是简单得不可思议呢?五〃编译运行HelloWorld程序。

下面再说两个小技巧:

1〃更换标题栏上得图标。

更改窗体(Form1)的Ico属性,把它改为你想要的图标文件(*.Ico).

五〃编译运行HelloWorld程序。

2〃更改执行文件的图标

在【Project】菜单下选【Options】,弹出【Project Option】对话框,选择【Application】页,按【LoadIcon…】键浏览选择自己想要的图标文件。按【OK】。

按【Project】菜单下的【Build Project】编译HelloWorld程序,得到可执行文件(.exe)。

Borland C++Builder 5.0教程(四)

作者:陈明浩/太平洋网络学院[责编:爆破手]设计菜单之一――下拉式菜单

用过Windows程序(最典型的就是Word和资源管理器或一般Windows软件)的人也许有个印象,就是Windows下的程序的菜单很丰富好用,而且还很灵活多变。

事实上Windows下的程序的菜单大致可以分成两大类:

第一类是下拉式的菜单,如主菜单(MainMenu)和右键菜单(PopMenu);

第二类是功能按钮菜单,如工具菜单(ToolMenu)。

绝大多数的Windows程序都是采用下拉式的菜单,也有少部分的程序是使用功能按钮菜单。这两种菜单设计方式各有优缺点,前者的好处是设计方式简单、不占画面空间,可是缺点是必须一层一层地进入之功能选项,无法一次看到所有的功能选项;而后者的优点是可以加入漂亮的图标、一次可以看到许多的选项,缺点是占程序画面的空间。

我们这里将分别介绍这两种菜单。

一〃下拉式菜单

下拉式菜单由菜单项和菜单命令构成,菜单项起到将功能分类存放的作用,如【文件】菜单项就是将针对文件操作的所有功能收容其下。而这些功能就体现为若干项菜单命令,菜单命令必须选定其所属菜单项后才出现在下拉菜单中。下拉式菜单包括主菜单(MainMenu)和右键菜单(PopMenu)。

1〃主菜单(MainMenu)

(1)创建主菜单。

步骤1:先启动一个新的工程【File】->【New Application】。

步骤2:从组件面板的【Standard】页,拖拉MainMenu组件到Form1上。

步骤3:双击Form1上的MainMenu,出现一个菜单编辑器。

步骤4:接着点选第一项主菜单的位置,并且在属性Caption输入字符串‘文件’,然后点选第一项主菜单下面的第一层子菜单,继续输入直到第一项主菜单的功能建立完毕,接着输入第二项主菜单,如此类推。

注意:(1)如果你想输入分割符,请把改2项的属性Caption设置为‘-’即可。

(2)如果你想加入快捷键,请在选项字符串中挑出某个字符,当作代表此项功能的热键(Hot Key),在那个字符的前面加上‘&’z字符即可。当程序运行时,你可以同时按下【Alt】键和热键字符来执行对应的功能选项。另外一种热键功能是直接设定每一个选项的属性ShotCut。

1〃主菜单(MainMenu)

(1)创建主菜单。

步骤5:如果在第一层子菜单的选项想继续往下建立第二层菜单,请将鼠标移到第一层子菜单的第一项功能‘打开文件’,然后按下鼠标右键,你将会发现右键菜单的第三项

功能‘Create Submenu’,点选它之后,‘打开文件’选项下面就会多一层子菜单,你再输入这份子菜单内的选项内容,若是想继续往下建立子菜单,如此类推。

步骤6:整个菜单建立完成以后,每一项菜单功能的程序是写在OnClick事件内,而每一项菜单功能都会产生对应的OnClick事件。你可以将鼠标移到菜单编辑器上的菜单项上双击,会弹出程序编辑器,然后你可以在当前位置(事件程序)中输入你的程序代码。(2)应用菜单模板和把菜单保存为菜单模板

A〃应用菜单模板:可以把C++Builder自带的菜单或者是自己保存的菜单直接引用。具体操作是:在菜单编辑器的快捷菜单点击【Insert Form Template】,再在【Insert Template】对话框中选择一个菜单,按【OK】键。

B〃把菜单保存为菜单模板:把常用菜单保存为菜单模板,那么下次编辑菜单的时候就可以直接加载,方便省时。具体操作是:在菜单编辑器的快捷菜单点击【Save To Template】,弹出【Save Template】的对话框,输入菜单的描述(名字),按【OK】键。

到此为止,一个象模像样的主菜单就完成

拉,是不是很不错呢?

2〃右键菜单(PopMenu)

右键菜单(PopMenu)又叫弹出菜单,你可

以先设计好一个PopMenu组件,然后指定给

任何一个可视化组件,当用户将鼠标移到这

些可视化组件上,按下右键,就会弹出一个

菜单,这个菜单就是PopMenu组件,下面是

建立PopMenu菜单的步骤:

步骤1:先从组件面板的【Standard】页拖拉PopMenu组件到Form1上。

步骤2:建立菜单的内容和实现功能的事件程序和主菜单一样,请参考上一节。

请看下图:

Borland C++Builder 5.0教程(五)

作者:陈明浩/太平洋网络学院[责编:爆破手]设计菜单之二――功能按钮菜单

Windows下的程序的菜单大致可以分成两大类:第一类是下拉式的菜单,如主菜单(MainMenu)和右键菜单(PopMenu);第二类是功能按钮菜单,如工具菜单(ToolMenu)。和菜单一样,功能按钮菜单已经成为Windows应用程序地一个标准配置,使用它可以进一步增强应用程序的菜单界面,一般来说,功能按钮菜单和下来菜单密不可分。功能按钮菜单中含有功能按钮,功能是对于应用程序中最常用的命令的快速访问。许多功能按钮菜单我们已经屡见不鲜,如下面的IE的功能按钮菜单。

在C++Builder中,制作一个简单的功能按钮菜单只要用到功能按钮控件(TToolBar)和一个图象列表控件(TImageList)相配合就可以实现。一般需要四个步骤:

(1)在TLmageList控件中插入合适的图象

(2)把TToolBar控件的Images属性设置为TlmageList

(3)通过单击鼠标右键为TToolBar添加TButton,并通过属性页来定制。

(4)在TToolBarClick事件中加入相关操作。

制作IE风格的功能按钮菜单则要再使用TCoolBar或者TControlBar控件,一共有三种方法,我们现在就配合实例讲解这三种制作IE风格的功能按钮菜单的方法。

步骤一:新建一个工程,在窗体(Form)中加入一个TCoolBar和一个TImageList 控件。然后在TCoolbar上加入一个TToolBar控件。把TCoolbar的Align属性设置为alTop。调整好TToolBar的高度,再把TToolBar和TCoolBar控件的AutoSize属性都设置为true;

步骤二:用鼠标右键单击TImagelist控件,打开‘ImageList Editor’窗口,添加对应的copy,cut和paste图标。

步骤三:在TToolBar控件上单击鼠标右键,在弹出的菜单中选择‘New Button’来插入TButton,选择‘New Seperator’来插入分割条。

步骤四:将TToolBar控件的Images的属性设置为ImageList1,则TImageList控件中的图标立刻出现在工具按钮菜单中。

这种方法和以上的方法大同小异,只是把TCoolBar换成TControlBar就可以拉,这里不累赘说明。下图是其效果。

三〃把下拉式菜单放到功能按钮菜单上

这是IE中最常用的菜单,在C++Builder可以轻易实现。

步骤一:在窗体(Form)上放置一个TMainMenu控件,并设置好内容;

步骤二:设置Tform的Menu属性为空;

基于arcsde的空间数据库的设计与建立

基于ArcSDE的空间数据库的设计与建立 摘要:随着地理信息系统的发展,传统的以文件形式管理、存储地理空间数据的方式已不能满足现在应用的需求。针对以上问题,本文通过arcsde对空间数据进行管理,使空间数据和属性数据统一存储在面向对象的关系型数据库(sql server)中,实现统一、高效的管理。 关键词:空间数据库;属性数据;arcsde 围绕空间数据的管理,前后出现了几种不同的空间数据管理模式:纯文件模式、文件结合关系型数据库的管理模式、全关系型数据库管理模式和面向对象的数据库管理模式。前两种方式都是将空间数据和属性数据分离存储,这样往往会产生诸多问题:1.空间数据与属性数据的连接太弱,综合查询效率不高,容易造成空间数据与属性数据的脱节;2.空间数据与属性数据不能统一管理,实质上是两套管理系统,造成资源的浪费和管理的混乱,数据一致性较难维护;3.由于空间数据不能统一在标准数据库里存放,造成空间数据不能在网上共享。而面向对象数据库管理系统技术还不够成熟,并且价格昂贵,目前在gis领域还不够通用。所以在较长时间内,还不能完全脱离现有关系型数据库来建设gis空间数据库。arcsde是esri公司提供的一个基于关系型数据库基础上的地理数据库服务器。同一些数据库厂商推出的在原有数据库模型上进行空间数据模型扩展的产品(如oracle spatial)不同,esri的arcsde 的定位则是空间数据的管理及应用,而非简单的数据库空间化。

1.系统目标 建成一个多级比例尺(100万、25万、5万、1万)矢量、栅格以及航空影像、遥感影像(tm,spot)的c/s结构基础地理空间数据库,便于对空间数据有效的管理、分发和应用。 2.总体设计方案 系统总体技术方案设计在充分考虑实际应用环境及应用需求的 基础上,结合考虑国际国内发展的主流趋势和平台产品的功能与性能来完成。 2.1技术路线 空间数据库建设应放弃数据文件式的管理方式,采用大型关系数据库管理系统(sql server)管理空间数据,arcsde作为sql server 2008和arc/info或其他地理信息系统软件的接口, vb/vc/delphi/java/c#为前端应用开发工具。其中,空间数据通过arcsde存储在sql server 2008数据库。arcsde是基于c/s计算模型和关系数据管理模式的一个连续的空间数据模型,借助这一模型,可将空间数据加入到数据库管理系统(rdbms)中去[1]。arcsde 融于rdmbs后,提供了对空间、非空间数据进行高效率操作的数据接口。由于arcsde采用c/s体系结构,大量用户可同时针对同一数据进行操作。arcsde提供了应用程序接口(api),开发人员可将空间数据检索和分析功能集成到应用工程中去,以完成前端的应用开发,最终提供数据的存储、查询和分发服务。如图1所示: 图1结构图

第5章创建数据库及存储引擎

第五课: ?创建数据库 ?删除数据库 ?数据库的存储引擎 ?如何选择存储引擎 MySQL中,创建数据库是通过SQL语句CREATE DATABASE实现的。其语法形式如下:创建数据库命令:--CREATE(可瑞他) DATABASE 数据库名;-- -- 每条语句后面带分号 查看数据库命令:--SHOW DATABASES; - -会打开已经创建好的数据库 删除数据库命令:-- DROP(照扑) DATABASE 数据库名; 存储引擎就是指表的类型。数据库的存储引擎决定了表在计算机中的存储方式。 存储引擎的概念是MySQL的特点,而且是一种插入式的存储引擎概念。这决定了MySQL数据库中的表可以用不同的方式存储。用户可以根据自己的不同要求,选择不同的存储方式、是否进行事务处理等。 查看MySQL数据库支持的存储引擎类型:命令如下: SHOW ENGINES(安晶)\G ;可以在后面加上\G对结果有序的进行排列 :这是一个数据库的存储引擎 Engine :MyISAM—这是一种存储引擎类型还有:MEMORY InnoDB(默认的)MySQL 这三种存储引擎Support:YES—表示支持这种存储引擎,如果显示DEFAULT表示默认的存储引擎. Comment:内容略–对它的描述 TranSactions:NO - -是否支持事物 XA :NO- -是否支持分布式XA规范 Savepoints:NO- - 是否支持保存点 mysql> SHOW V ARIABLES LIKE "HA VE%";--查看存储引擎的命令 +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | have_community_features | YES | | have_compress | YES | | have_crypt | NO | | have_csv | YES | | have_dynamic_loading | YES | | have_geometry | YES | | have_innodb | YES |--是否支持innodb 后面是YES表示支持。 | have_ndbcluster | NO | | have_openssl | DISABLED | | have_partitioning | YES | | have_query_cache | YES | | have_rtree_keys | YES | | have_ssl | DISABLED | | have_symlink | YES | +-------------------------+----------+ 14 rows in set (0.00 sec) mysql> SHOW V ARIABLES LIKE 'storage_engine';--查看默认的存储引擎。 +----------------+--------+ | Variable_name | Value | +----------------+--------+ | storage_engine | InnoDB | +----------------+--------+ 1 row in set (0.00 sec) 如何修改存储引擎:两种方式,一种是在开始菜单里打开软件进行重新设置(视频里有).一种是改MYSQL

MySQL数据库引擎

MySQL数据库的数据库引擎 MySQL(和PHP搭配之最佳组合)的自带MySQL数据库引擎肯定是够用了,但是在有些情况下,其他的引擎可能要比手头所用更适合完成任务。如果愿意的话,你甚至可以使用MySQL(和PHP搭配之最佳组合)++ API来创建自己的数据库引擎,就像打穿气缸装上自己的化油器。现在让我们来看看你该如何选择引擎,以及如何在可用引擎之间切换。 选择你的引擎 你能用的数据库引擎取决于MySQL(和PHP搭配之最佳组合)在安装的时候是如何被编译的。要添加一个新的MySQL数据库引擎,就必须重新编译 MySQL(和PHP搭配之最佳组合)。仅仅为了添加一个特性而编译应用程序的概念对于Windows的开发人员来说可能很奇怪,但是在UNIX世界里,这已经成为了标准。 在缺省情况下,MySQL(和PHP搭配之最佳组合)支持三个引擎:ISAM、MyISAM和HEAP。另外两种类型InnoDB和Berkley(BDB),也常常可以使用。 ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL(和PHP搭配之最佳组合)能够支持这样的备份应用程序。 MyISAM MyISAM是MySQL(和PHP搭配之最佳组合)的ISAM扩展格式和缺省的数据库MySQL数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。 MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的MyISAMPack工具。 MyISAM强调了快速读取操作,这可能就是为什么MySQL(和PHP搭配之最佳组合)受到了Web 开发如此青睐的主要原因:在Web开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。 HEAP HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。 HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。让我再重复一遍:在你用完表格之后,不要忘记删除表格。 InnoDB和Berkley DB InnoDB和Berkley DB(BDB)数据库引擎都是造就MySQL(和PHP搭配之最佳组合)灵活性的技术的直接产品,这项技术就是MySQL(和PHP搭配之最佳组合)++ API。在使用MySQL(和PHP搭配之最佳组合)的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理也不支持外来键。 尽管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。

C语言标准库函数

标准库函数 本附录描述了标准C支持的库函数①。使用此附录时,请记住下列要点。 为了简洁清楚,这里删除了一些细节。如果想看全部内容,请参考标准。本书的其他地方已经对一些函数(特别是printf函数、scanf函数以及它们的变异函数)进行了详细介绍,所以这里 只对这类函数做简短的描述。为了获得关于某个函数更详细的信息(包括如何使用这个函数的示 例),请见函数描述右下角用楷体列出的节号。 每个函数描述结尾都有其他与之相关函数的列表。相似函数非常接近于正在描述的函数。相关函数经常会和在描述的函数联合使用。(例如,calloc函数和realloc函数与malloc函数“类似”, 而free函数则与malloc函数“相关”。)也可参见的函数和在描述的函数没有紧密联系,但是却 可能有影响。 如果把函数行为的某些方面描述为由实现定义的,那么这就意味着此函数依赖于C库的实现方式。 函数将始终行为一致,但是结果却可能会由于系统的不同而千差万别。(换句话说,请参考手册了 解可能发生的问题。)另一方面,未定义的行为是一个不好的消息:不但函数的行为可能会因系统 不同而不同,而且程序也可能会行为异常甚至崩溃。 中许多函数的描述提到了定义域错误和取值范围错误。在本附录的末尾对这两种错误进行了定义。 601 下列库函数的行为是会受到当前地区影响的: 字符处理函数(除了isdigit函数和isxdigit函数)。 格式化输入/输出函数。 多字节字符和字符串函数。 字符串转换函数。 Strcoll函数、strftime函数和strxfrm函数。 例如,isalpha函数实际上检测字符是否在a到z之间或者在A到Z之间。在某些区域内也把其他字符看成是字母次序的。本附录描述了在"C"(默认的)地区内库函数的行为。 一些函数实际上是宏。然而,这些宏的用法和函数完全一样,所以这里不对它们区别对待。 abort 异常终止程序 void abort(void); 产生SIGABRT信号。如果无法捕获信号(或者如果信号处理函数返回),那么程序会异常 终止,并且返回由实现定义的代码来说明不成功的终止。是否清洗输出缓冲区,是否关 闭打开的流,以及是否移除临时文件都是由实现定义的。 相似函数exit函数、raise函数 相关函数assert函数、signal函数 也可参见atexit函数 26.2节abs 整数的绝对值 int abs(int j); 返回整数j的绝对值。如果不能表示j的绝对值,那么函数的行为是未定义的。 ①这些材料经ANSI许可改编自American National Standards Institude ANSI/ISO 9899?1990。这个标准的副本可从 ANSI购买(ANSI, 11 West 42nd Street, New York, NY 10036)。

SQL Server 2005数据库引擎启动服务器的方法

SQL Server 2005 不允许远程连接解决方法 做课程设计时,很多学生都遇到这个问题。把解决方法写在这儿,供参考。 刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误:"在连接到SQL Server 2005 时,在默认的设置下SQL Server 不允许进行远程连接可能会导致此失败。(provider: 命名管道提供程序, error: 40 - 无法打开到SQL Server 的连接) "搜MSDN,上面有一片机器翻译的文章,是在让人难以明白,现在总结如下:明白了SQL Server是个网络数据库就可迎刃而解了,简单的分为下面的集中情况。 1. 数据库引擎没有启动。 有两种启动方式: (1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动; (2)可打开:开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,选中SQL Server 2005服务中SQL Server(MSSQLSERVER) ,并单击工具栏中的"启动服务"按钮把服务状态改为启动; 使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL Server 2005配置管理器"中的SQL Server 2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了. 2. 是否已经允许远程连接。 这个部分可以简单的分为4个方面,分别是在SQL Server上启用远程连接、启用SQL Server 浏览服务、在Windows 防火墙中为SQL Server 2005 创建例外和在Windows 防火墙中为“SQLBrowser”创建例外。下面是几个具体的操作方式,摘自MSDN,个人觉得文章的黑体部分应当特别的一起我们的注意。 在SQLServer 实例上启用远程连接 1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器” 2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器” 3.然后单击展开“数据库引擎”,选中“远程连接”,在右边选中“本地连接和远程连接”, 再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回 4.展开“数据库引擎”,选中“服务”,在右边单击“停止”,等到MSSQLSERVER 服务停止, 然后单击“启动”,重新启动MSSQLSERVER 服务。(更改其它选项后,一定要重启MSSQLSERVER 服务,才能将更改应用!!) 启用SQLServer 浏览器服务

1C语言入门_3简单函数_3形参和实参解读

第 3 章 简单函数 3. 形参和实参
下面我们定义一个带参数的函数, 我们需要在函数定义中指明参数的个数和每个 参数的类型,定义参数就像定义变量一样,需要为每个参数指明类型,参数的命 名也要遵循标识符命名规则。例如: 例 3.4. 带参数的自定义函数
#include
void print_time(int hour, int minute) { printf("%d:%d\n", hour, minute); }
int main(void) { print_time(23, 59); return 0; }
需要注意的是, 定义变量时可以把相同类型的变量列在一起,而定义参数却不可 以,例如下面这样的定义是错的:
void print_time(int hour, minute) {

printf("%d:%d\n", hour, minute); }
学习 C 语言的人肯定都乐意看到这句话:“变量是这样定义的,参数也是这样 定义的,一模一样”,这意味着不用专门去记住参数应该怎么定义了。谁也不愿 意看到这句话:“定义变量可以这样写,而定义参数却不可以”。C 语言的设计 者也不希望自己设计的语法规则里到处都是例外, 一个容易被用户接受的设计应 该遵循最少例外原则(Rule of Least Surprise)。其实关于参数的这条规定也不 算十分例外,也是可以理解的,请读者想想为什么要这么规定。学习编程语言不 应该死记各种语法规定,如果能够想清楚设计者这么规定的原因(Rationale), 不仅有助于记忆,而且会有更多收获。本书在必要的地方会解释一些 Rationale, 或者启发读者自己去思考, 例如上一节在脚注中解释了 void 关键字的 Rationale。 [C99 Rationale]是随 C99 标准一起发布的,值得参考。 总的来说,C 语言的设计是非常优美的,只要理解了少数基本概念和基本原则就 可以根据组合规则写出任意复杂的程序, 很少有例外的规定说这样组合是不允许 的,或者那样类推是错误的。相反,C++的设计就非常复杂,充满了例外,全世 界没几个人能把 C++的所有规则都牢记于心,因而 C++的设计一直饱受争议, 这个观点在[UNIX 编程艺术]中有详细阐述。 在本书中,凡是提醒读者注意的地方都是多少有些 Surprise 的地方,初学者如 果按常理来想很可能要想错, 所以需要特别提醒一下。而初学者容易犯的另外一 些错误, 完全是因为没有掌握好基本概念和基本原理,或者根本无视组合规则而 全凭自己主观臆断所致, 对这一类问题本书不会做特别的提醒,例如有的初学者 看完第 2 章 常量、变量和表达式之后会这样打印π 的值:
double pi=3.1416; printf("pi\n");
之所以会犯这种错误,一是不理解 Literal 的含义,二是自己想当然地把变量名 组合到字符串里去, 而事实上根本没有这条语法规则。如果连这样的错误都需要 在书上专门提醒,就好比提醒小孩吃饭一定要吃到嘴里,不要吃到鼻子里,更不 要吃到耳朵里一样。 回到正题。我们调用 print_time(23, 59)时,函数中的参数 hour 就代表 23,参 数 minute 就代表 59。确切地说,当我们讨论函数中的 hour 这个参数时,我们 所说的“参数”是指形参(Parameter),当我们讨论传一个参数 23 给函数时, 我们所说的“参数”是指实参(Argument),但我习惯都叫参数而不习惯总把 形参、实参这两个文绉绉的词挂在嘴边(事实上大多数人都不习惯),读者可以 根据上下文判断我说的到底是形参还是实参。 记住这条基本原理: 形参相当于函

北京地理编码数据库系统及标准地址匹配引擎

北京地理编码数据库系统及标准地址匹配引擎成功案例加入时间:2003-11-19 11:08:30 admin 点击:2152 地址编码概念 随着“数字城市”及“数字社区”概念的推广,这些“数字XX”的含义中很重要的一方面就是建立一个以空间位置为主线,将各种信息组织起来的复杂系统,为各种应用提供 快速、准确、充分和完整的信息。 地址编码(Geocoding)是将地址映射成地理坐标的过程。首先可根据企事业单位的通讯地址自动生成“路名+门牌或小区+楼号”形式的标准地址;然后根据标准地址,自动生成地图 坐标,从而建立地址编码库。 系统目标 系统的目标是利用空间定位技术及地址匹配技术,建立城市地址编码库,实现统一空间坐标,整合各种信息资源,在市政府各部门分散的信息资源库之间建立有机联系,为各政府部门实现信息共享、交换和整合提供基础信息支撑。

地址编码工作流程 系统功能及结构 全部系统由多个运行于信息中心Intranet上的模块组成,基于组件开发,可运行在 浏览器中。 (一)信息中心Intranet上的网络工作系统

系统管理工具:由系统管理员使用,主要是用户账号管理。 标准地址录入系统:由数据录入人员使用。负责对局部区域内的地址进行校验、标准化和编辑录入。使用局部影像图数据和矢量数据作为录入背景。

地址数据处理系统:由数据处理人员使用。主要用于对数据提供的原始录入数据进行校对和处理。包括利用中心库的数据进行地址数据校对;空间数据编辑修改、空间数据变换、空间数据拼接等。系统处理后的结果地址进入等待入库状态。 地址库管理维护系统:由中心数据管理人员使用。主要提供地址一致性、合法性更全面的自动检验,地址编码分配,地址入库;地址匹配索引建立和更新;地址检索效率调节, 制作下发数据等功能。 兴趣点生成系统:将黄页的数据利用地址正向匹配,批量自动转换入库。 (二)展示系统 展示系统:基于B/S结构的应用界面,利用地址匹配引擎的二次接口开发,结合背景图形数据,提供地址的双向查询功能(由标准地址匹配到地图上,由图上位置匹配到标准地 址)。

如何学好并精通C语言

程序员之路——如何学习C语言并精通C语言 程序员之路——如何学习C语言 学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C 语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。 一、要读就读好书,否则不如不读 所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。 大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:) Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。 如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。 切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。 二、Unix/Linux还是Windows,这是个很大的问题 不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。 对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。 所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC

海量空间数据组织及存储方案

本栏目责任编辑:代影数据库与信息管理Computer Knowledge and Technology 电脑知识与技术第6卷第29期(2010年10月)海量空间数据组织及存储方案 李慧玲 (长治学院计算机系,山西长治046011) 摘要:目前信息管理系统中需要存储的数据越来越多,而且数据的结构也变的越来越复杂。那么如何来组织和存储数据就变得很重要。该文以土地档案海量数据为例,从数据的存储方式、空间数据引擎以及利用关系数据库三个方面进行说明MAPGIS 是如何组织和管理海量空间数据的。 关键词:GIS 技术;海量空间数据;图档一体化 中图分类号:TP311文献标识码:A 文章编号:1009-3044(2010)29-8168-02 Organization and Storage Solutions of Massive Spatial Data LI Hui-ling (Computer Science Department,Changzhi University,Changzhi 046011,China) Abstract:The current information management systems need to store more data,and data structure becomes more and more complex.So how to organize and store data becomes very important.This land mass data files,for example,from the data is stored,spatial data and the use of relational database engines are described from three aspects that MAPGIS is how to organize and manage massive spatial data.Key words:GIS technology;massive spatial data;integration of drawing and files 现阶段,档案管理正在从以纸质档案管理为主逐步向以纸质档案管理和电子档案管理并重发展转变。随着信息化程度的提高,档案管理最终将以电子档案管理为主。土地档案的数据越来越多,而且除了海量属性数据之外,还有图形数据等等,那么如何来更好的存储这些海量空间数据才是真正的解决土地档案管理问题。本文利用GIS 技术和采用关系数据库结合的方式从三方面叙述并解决了这个问题,并能实现图档一体化管理。 1数据在GIS 中是如何存储的 目前,数据的存储方式有以下三种:1)GIS 数据是通过文件与关系数据库两者的结合来共同存储和管理的。当前大部分GIS 应用软件都是采用这种方式来对数据进行管理的。2)GIS 应用软件中的所有数据都存储在文件中。所谓的文件存储也就是将所有的数据包括空间数据和非空间数据都存储在一个或者多个文件中。3)采用数据库来存储和管理空间数据和属性数据的方式。通过这种方式来存储数据,包括空间数据和属性数据,即空间数据也可存放在数据库中。利用数据库来存储海量空间数据,这是GIS 应用软件发展的必然趋势。通过数据库来存储空间数据,解决了用文件存储空间数据时,对数据不能进行并发操作的缺点;用C/S (Client/Server)的操作模式,解决了以前空间数据不能进行分布式处理等问题。它从理论上保证了数据的完整性和数据的共享性,实现了属性数据和空间数据的一体化存储。利用关系数据库来存储空间数据将GIS 本身的问题转移到数据库的领域中,给开发GIS 应用软件的开发带来了新的解决方向[1]。就目前的形势,大型数据库厂商越来越重视空间数据的存储,通过研究与摸索,大型数据库厂商各自推出了自己的关于空间数据存储的解决方案,如0racle Satial ,B lade,Informix Satial 。GIS 技术的发展在这些厂商对于空间数据存储的支持下,有了更广阔的应用前景。无论采用哪种模式建立GIS 系统,通过利用0rac1e 的空间数据存储技术,在开发GIS 产品中,都可以跳过传统GIS 平台开发时所需要的一些必要的步骤,解决了大型空间数据不能多人维护数据的问题。另外数据库本身自带的一些特点,可以解决GIS 存在的一些问题:比如说数据库可支持多用户并发操作,克服了文件方式不能多用户同时操作数据的缺点,同时由于数据库的支持克服了以前由于不同GIS 厂商之间数据文件格式不同,导致的空间数据从一个GIS 平台移植到另外一个GIS 平台上数据处理的复杂性,从而保证空间数据能够做到完全意义上的共享,提高了GIS 系统的可用性和实用性[2]。这样GIS 平台的发展加上数据库技术的提高,两者的结合可以很好的解决土地档案海量空间数据的存储问题。 2SDE SDE 中文全称是,空间数据引擎。现在市场上的数据库几乎都是利用关系原理建立的,可是GIS 管理数据强调空间性以及拓扑关系,明显GIS 数据是不能直接存储在这些数据库中的,更不能对其进行查询了。所以要结合两者,并利用各自的优势,就要有一个中间件来联系数据库和GIS 系统。MAPGIS 就是在关系数据库的基础上,增加了联系二者的纽带?—空间数据引擎(SDE),空间数据引擎将客户端接收到的空间数据、属性数据的查询、添加、修改等操作转换成数据库中的关系操作。同时SDE 还优化了对数据库的操作,而且SDE 为系统管理员或客户端提供了GIS 的概念模型,利用SDE ,可以直接以GIS 的概念对数据进行维护和权限管理,使用户脱离了关系数据库中许多繁琐的细节等。空间数据引擎还增加了关系数据库中实现不了一些功能,对数据进行自动检查和维护功能,如拓扑一致性检查等。当然近些年来,关系数据库也在不断的更新和发展,其技术也慢慢地成熟起来,实现了利用关系数据库对空间数据和属性数据进行一体化管理和存储,这种现象已经成为GIS 平台发展的一个趋势。空间数据引擎(Satial Data Engine),收稿日期:2010-08-15 ISSN 1009-3044 Computer Knowledge and Technology 电脑知识与技术Vol.6,No.29,October 2010,pp.8168-8169E-mail:jslt@https://www.doczj.com/doc/c99595745.html, https://www.doczj.com/doc/c99595745.html, Tel:+86-551-569096356909648168

C++高级参考手册04

第4章初始化与清除 第2章利用了一些分散的典型C语言库的构件,并把它们封装在一个s t r u c t中,从而在库的应用方面做了有意义的改进。(从现在起,这个抽象数据类型称为类)。 这样不仅为库构件提供了单一一致的入口指针,也用类名隐藏了类内部的函数名。在第3章中,我们介绍了存取控制(隐藏实现),这就为类的设计者提供了一种设立界线的途径,通过界线的设立来决定哪些是用户可以处理的,哪些是禁止的。这意味着数据类型的内部机制对设计者来说是可控的和能自行处理的。这样让用户也清楚哪些成员是他们能够使用并加以注意的。 封装和实现的隐藏大大地改善了库的使用。它们提供的新的数据类型的概念在某些方面比从C中继承的嵌入式数据类型要好。现在C ++编译器可以为这种新的数据类型提供类型检查,这样在使用这种数据类型时就确保了一定的安全性。 当然,说到安全性,C ++的编译器能比C编译器提供更多的功能。在本章及以后的章节中,我们将看到许多C ++的另外一些性能。它们可以让我们程序中的错误暴露无遗,有时甚至在我们编译这个程序之前,帮我们查出错误,但通常是编译器的警告和出错信息。所以我们不久就会习惯:在第一次编译时总听不到编译器那意味着正确的提示音。 安全性包括初始化和清除两个方面。在C语言中,如果程序员忘记了初始化或清除一个变量,就会导致一大段程序错误。这在一个库中尤其如此,特别是当用户不知如何对一个s t r u c t 初始化,甚至不知道必须要初始化时。(库中通常不包含初始化函数,所以用户不得不手工初始化s t r u c t)。清除是一个特殊问题,因为C程序员一旦用过了一个变量后就把它忘记了,所以对一个库的s t r u c t来说,必要的清除工作往往被遗忘了。 在C ++中,初始化和清除的概念是简化类库使用的关键所在,并可以减少那些由于用户忘记这些操作而引起的许多细微错误。本章就来讨论C ++的这些特征。 4.1 用构造函数确保初始化 在s t a s h和s t a c k类中都曾调用i n i t i a l i z e()函数,这暗示无论用什么方法使用这些类的对象,在使用之前都应当调用这一函数。很不幸的是,这要求用户必须正确地初始化。而用户在专注于用那令人惊奇的库来解决他们的问题的时候,往往忽视了这些细节。在C ++中,初始化实在太重要了,所以不能留给用户来完成。类的设计者可以通过提供一个叫做构造函数的特殊函数来保证每个对象都正确的初始化。如果一个类有构造函数,编译器在创建对象时就自动调用这一函数,这一切在用户使用他们的对象之前就已经完成了。对用户来说,是否调用构造函数并不是可选的,它是由编译器在对象定义时完成的。 接下来的问题是这个函数叫什么名字。这必须考虑两点,首先这个名字不能与类的其他成员函数冲突,其次,因为该函数是由编译器调用的,所以编译器必须总能知道调用哪个函数。S t r o u s t r u p的方法似乎是最容易也是最符合逻辑的:构造函数的名字与类的名字一样。这使得这样的函数在初始化时自动被调用。 下面是一个带构造函数的类的简单例子:

MySQL数据库各种存储引擎及其作用简介

MySQL数据库各种存储引擎及其作用简介 本文我们主要介绍一下MySQL数据库的存储引擎,MySQL有多种存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。 MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。 注释:MEMORY存储引擎正式地被确定为HEAP引擎。 InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。 EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。 NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。 ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。 CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。 BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。 FEDERATED存储引擎把数据存在远程数据库中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。 当你创建一个新表的时候,你可以通过添加一个ENGINE 或TYPE 选项到CREATE TABLE语句来告诉MySQL你要创建什么类型的表: 1CREATE TABLE t (i INT) ENGINE = INNODB; 2 3CREATE TABLE t (i INT) TYPE = MEMORY; 虽然TYPE仍然在MySQL 5.1中被支持,现在ENGINE是首选的术语。 如何选择最适合你的存储引擎呢?

C语言库函数参考手册

C语言库函数参考手册 转载说明:可能有些函数已经过时,但从学习的角度来看,还是有一定的参考价值。 分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9') 返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度double atan(double x) 返回x的反正切tan-1(x)值,x为弧度double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度

相关主题
文本预览
相关文档 最新文档