1. 简述数据库操作的过程。
以下给出的应用程序A读取数据库中数据的一般步骤和过程,并体现了三级模式的作用。不同的数据库管理系统其操作细节可能存在差异,但其基本过程大体一致。至于其它的数据操作,如写入数据、修改数据、删除数据等,其步骤会有增加或变化,但总体上是十分相似的,在此不在详细叙述,下面是操作过程的示意图,以及具体的步骤描述。
⑴ 应用程序A向DBMS发出读取数据的请求,同时给出记录名称和要读取的记录的关键字值;
⑵ DBMS接到请求之后,利用程序A所用的外模式来分析这一请求;
⑶ DBMS调用模式,进一步分析请求,根据外模式和模式之间变换的定义,决定应读入哪些模式记录;
⑷ DBMS通过内模式,将数据的逻辑记录转换为实际的物理记录;
⑸ DBMS向操作系统发出读所需物理记录的请求;
⑹ 操作系统对实际的物理存储设备启动读操作;
⑺ 读出的记录从保存数据的物理设备送到系统缓冲区;
⑻ DBMS根据外模式和模式的规定,将记录转换为应用程序所需的形式;
⑼ DBMS把数据从系统缓冲区传送到应用程序A的工作区;
⑽ DBMS向应用程序A发出请求执行的信息。
2. TCP/IP分层结构。
TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
TCP/IP分层模型的四个协议层分别完成以下的功能:
第一层 网络接口层
网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
第二层 网间层
网间层对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
第三层 传输层
传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
第四层 应用层
应用层对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、 HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。
3. MVC是什么?其各层有什么作用。
MVC与模板概念的理解
MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
MVC如何工作
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图(View)
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和 Web services.
如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型(Model)
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器(Controller)
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
4. a-z、0-9的字符组成3位密码,所有的密码组合。
#include <cstdio> #include <cstdlib> using namespace std; void print_pass(FILE* f,char* s,int index,int n){ if(index>=n) { s[index]='\0'; fprintf(f,"%s\n",s); return; } for(int i=0;i<36;i++){ if(i>=0&&i<=9) s[index]=i+'0'; else s[index]=i+'a'-10; print_pass(f,s,index+1,n); } } int main(){ FILE *f; f=fopen("a.txt","w"); if(f==0){ fprintf(stderr,"can't open file\n"); exit(0); } int n=3; char *s=new char[n+1]; print_pass(f,s,0,n); fclose(f); }
5. 反转字符串。
6. 有插入,删除和替换操作,从任意字符A变换到任意字符B所需要的最少的操作数。gumbo与gambol 编辑距离的问题
7. RSA SercuityID 原理。
8. 一个素数可以表示成两个正整数的和,如5表示为(1,4)or(2,3),那么1~N的所有素数可以表示成由多个数对构成的链,如2,3,5,7 ... 表示成(1,1)(1,2)(1,4)(1,6),由于每个素数有多种数对来表示,这个链也有多种形式。求具有最多个不同的正整数的链。如前面例子中出现1,2,4,6四个数。