terminate application
第四章 Call level interface
前面介绍的接口提供了C++方便而且可靠的数据访问机制。但其有两个不足:
1.这是非常C++化的从而不能够用于其它语言
2.只适用于对的本地连接(同属于一个系统)
下面说明的接口克服了这两个限制。采用了纯ANSI C函数集,因而利用其将任意的程序设计语言映射到fastdb是很容易实现的。客户端与服务器的连接通过socket(不论是本地的还是标准的TCP/IP sockets)。当然这个接口比起C++接口来说不是那么友好并且易于出错,但这是灵活性的代价。所有的类型,常量和函数都在cli.h文件中声明。
fastdb提供了多线程服务器来处理客户端的CLI会话。可以在SubSQL工具中用start server 'HOST:PORT' <线程数> 命令来启动这个服务器。该服务器可以接受本地(在一个系统中)和全局的客户连接然后将线程池中的一个线程与一个连接黏附。线程池的大小由“线程数”参数控制。但如果有更多的主动连接服务器可以派生出超过制定数字的线程,。一个线程与一个客户黏附知道会话结束。如果一个线程异常中止,该客户所作的任何改变都将被回滚。服务器可以通过相应的stop server 'HOST:PORT'命令停止。
CLI functions return codes
Error code
Description
cli_ok
Succeful completion
cli_bad_address
Invalid format of server
cli_connection_refused
Connection with server could not be established
cli_bad_statement
Text of SQL statement is not correct
cli_parameter_not_found
Parameter was not found in statement -
cli_unbound_parameter
Parameter was not specified
cli_column_not_found
No sucj colunm in the table
cli_incompatible_type
Conversion between application and database type is not possible
cli_network_error
Connection with server is broken
cli_runtime_error
Error during query execution
cli_bad_descriptor
Invalid statement/session description
cli_unsupported_type
Unsupported type for parameter or colunm
cli_not_found
Record was not found
cli_not_update_mode
Attempt to update records selected by view only cursor
cli_table_not_found
There is no table with specified name in the database
cli_not_all_columns_specified
Insert statement doesn't specify values for all table columns
cli_not_fetched
method was not called
cli_already_updated
method was invoked more than once for the same record
cli_table_already_exists
Attempt to create existed table
cli_not_implemented
Function is not implemented
Supported types
Description
cli_oid
Object identifier
cli_bool
Boolean type
cli_int1
Timy interger type
cli_int2
Small interger type
cli_int4
Interger type
cli_int8
Big interger type
cli_real4
Single precision floating point type
cli_real8
Double precision floating point type
cli_asciiz
Zero terminated string of bytes
cli_pasciiz
Pointer to zero terminated string
cli_array_of_oid
Array of references
cli_array_of_bool
Array of booleans
cli_array_of_int1
Array of tiny integers
cli_array_of_int2
Array of small integers

cli_array_of_int4
Array of integers
cli_array_of_int8
Array of big integers
cli_array_of_real4
Array of reals
cli_array_of_real8
Array of long reals
int cli_open(char const* server_url,
int max_connect_attempts,
int reconnect_timeout_sec);
与服务器建立连接
参数:
server_url-0终止的字符串,服务器地址和端口,如"localhost:5101", "195.239.208.240:6100"...
max_connect_attempts-建立连接的尝试次数
reconnect_timeout_sec-连接尝试的时间间隔,以秒为单位
返回值:
>= 0 - 将由所有其它cli调用使用的连接描述符
<0 - cli_result_code中说明的错误吗
int cli_close(int session);
关闭会话
参数:
session-cli_open返回的会话描述符
返回值:
如cli_result_code所述
int cli_statement(int session, char const* stmt);
指定要在服务器端执行的SubSQL语句。可以建立参数和列的绑定。
参数:
Session - cli_open返回的会话描述符
Stmt -0终止的SubSQL语句字符串
返回值:
>= 0 - 语句描述符
<0 cli_result_code所述的错误码
int cli_parameter(int statement,
char const* param_name,
int var_type,
void* var_ptr);
将参数与语句绑定
参数:
statement- cli_statement返回的描述符
param_name-0终止的参数名字符串。参数名必须以'%'开始
var_type- cli_var_type中所述的参数类型。只支持标量和0终止字符串类型
var_ptr-指向变量的指针。
返回值:
cli_result_code所述的结果编码
第五章 容错支持
在计算机网络中还有其他类型的拓扑结构:环网中的每个结点均成为网络可靠性的瓶颈,结点之间按广播方式通信,但是结构复杂。备用链表,已用链表,结点空间,单链表,表中,分配结点,头指针,space,链表,结点,cur,一个,元素,指针,备用,静态,删除,空间,【数据结构与算法】静态链表的游标实现 【数据结构与算法】静态链表的游标实现 【数据结构与算法】静态链表的游标实现,数据结构,算法,静态,链表,游标,实现 【数据结构与算法】静态链表的游标实现,数据结构,算法,静态,链表,游标,实现,} if( k == space[r]。中央结点主要功能有:1) 为需要通信的设备建立物理连接2) 为两台设备通信过程中维持这一通路3) 在完成通信或不成功时,拆除通道在文件服务器/工作站(file server/workstation )局域网模式中,中心点为文件服务器,存放共享资源。
要使用容错支持,应该使用REPLICATION_SUPPORT可选项来重新编译fastdb.在makefile开始把FAULT_TOLERANT变量设置为1来把它打开。应该使用dbReplicatedDatabase来代替dbDatabase。在open方法的参数中,除了名和文件名之外,应当指定这个结点的标志符(从0到N-1的整数),包含所有结点地址(主机:端口)的数组以及结点数(N).然后就可以在N个结点的每一个启动程序。一旦所有的实例都启动,ID=0的结点成为活动的(主结点)。在这个实例中open方法返回true.其他结点在open方法堵塞。如果主结点崩溃,其中一个备用结点被激活(open方法返回true),然后这个实例继续执行。如果崩溃的实例重新启动,它将尝试连接所有服务器,恢复其状态然后作为备用结点,等待其代替崩溃的主结点的机会。如果主结点正常终止,所有备用结点的close方法返回false.
比如说,r2学习到r1发送过来的网络1不可达的信息,它先将网络1的跳计数更改成16跳,然后根据毒性反转,它把向r1送回一条网络1不可达的更新。将头结点移到下一个数据.问题四:在删除结点时,没有删除到输出数据那个结点.解决方案: 用两个指针s和q ,当计数count x-1时,先将s q,计数计到count x后,这时q指向要输出的数据,再将s- next q- next,再free q ,这样就可以删除对应的结点了.问题五:因为v c++6.0不支持window 这个函数,无法创建弹出式菜单,需要转移到win-tc下. josephus 函数在v c++6.0编译环境下运行没问题,复制到win-tc下就出现问题,已经定义的指针,提示我在还没定义之前就已经使用了.解决方案: v c++6.0环境下:void initlist linklist *&ll linklist * malloc sizeof linklist 。c++实验报告:链表的基本操... 3页 10财富值 实验一 煤的工业分析 5页 20财富...然后定义在其上操作的函数,有在首部插入结点、在尾部插入结点、在某一个结点前...。
硬盘分区魔术师能够优化磁盘使应用程序和系统速度变得更快,不损失磁盘数据下调整分区大小,对磁盘进行分区,并可以在不同的分区以及分区之间进行大小调 整、移动、隐藏、合并、删除、格式化、搬移分区等操作,可复制整个硬盘资料到分区,恢复丢失或者删除的分区和数据,无需恢复受到破坏的系统就可磁盘数据恢 复或拷贝到其他磁盘。是目前为止最好用的磁盘管理工具之一,能够优化磁盘使应用程序和系统速度变得更快,不损失磁盘数据下调整分区大小,对磁盘进行分区,并可以在不同的分区以及分区之间进行大小调整、移动、隐藏、合并、删除、格式化、搬移分区等操作,可复制整个硬盘资料到分区,恢复丢失或者删除的分区和数据,无需恢复受到破坏的系统就可磁盘数据恢复或拷贝到其他磁盘。硬盘分区大师中文版,顾名思义就是对硬盘的进行分区的软件啦,硬盘分区大师可以在优化磁盘使应用程序和系统速度变得更快,不损失磁盘数据下调整分区大小,对磁盘进行分区,并可以在不同的分区以及分区之间进行大小调整、移动、隐藏、合并、删除、格式化、搬移分区等操作,可复制整个硬盘资料到分区,恢复丢失或者删除的分区和数据,无需恢复受到破坏的系统就可磁盘数据恢复或拷贝到其他磁盘。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-106153-8.html
怎么想都觉得可怕