char b;
read(hdrfp, b, sizeof(char));
另外,建议在指令
printf("error!\n");
后面添加一行
exit(1);
才能真正表示打开文件失败后退出程序运行.
第二段:.NET开发平台留住Windows开发者
中南大学 罗新星 毕文杰
组件-容器 搭建体系架构
Home接口 Home接口定义一组方法来创建新的EJB对象,查找、定位和清除已有的EJB对象.在EJB组件部署时容器也会自动生成相应的Home对象,该对象负责查找和创建EJB对象,返回EJB对象的引用给客户;用户利用该引用调用EJB组件的方法,得到结果;最后Home对象清除EJB对象.我们可以形象地称Home接口为EJB对象的工厂.
会话Beans分无状态和有状态两种.一般无状态的会话Beans模拟商业逻辑,比如计算价格等.有状态的会话Beans通常模拟一个客户会话,它会临时保存客户信息,根据客户要求调用其他Beans来存取数据.两种会话Beans都不保存状态信息或数据,当客户断开连接或服务器关闭时,会话Beans也随之消失.一个会话Beans的典型例子是网站上的购物车.
实体Beans模拟商业数据,它表示一个数据存储,可以是状态信息或数据库中的一条纪录.实体Beans在客户断开连接或服务器关闭后,仍有服务保证其数据得以保存.一个实体Beans的典型例子就是客户账号信息.
消息驱动Beans在行为上很像会话Beans.不同的是仅在需要向这些Beans发送消息时才调用消息驱动Beans,比如在需要的时候发送用户确认信息等.
另外,在提交和部署EJB组件时,还需要两个文件:部署描述文件,容器根据该文件来部署Enterprise Beans,提供所要求的服务;EJB jar文件,它是提交给EJB容器的一个部署单元,容器(应用服务器)在部署时解开它,装入Enterprise Beans.
平台标准服务
目录服务 JNDI(Java Name and Directory) API为应用程序提供了一个统一的接口来完成标准的目录操作,由于JNDI是独立于目录协议的,应用程序可以用它访问各种目录服务,如LDAP、NDS、DNS等.
事务处理 JTA(Java Transaction Architecture)定义了一组标准的接口,为应用系统提供可靠的事务处理支持.JTS(Java Transaction Service)是CORBA OTS事务监控的Java实现.JTS规定了事务管理器的实现方式,该事务管理器在高层支持JTA标准,在底层实现了OMG OTS规范的Java映射.
消息服务 JMS(Java Message Service)是一组用于和面向消息的中间件相互通信的API.
它既支持点对点的消息通信,也支持发布/订阅式的消息通信. 电子邮件 JavaMail API允许在应用程序中以独立于平台、独立于协议的方式收发电子邮件.JAF(JavaBeans Activation Framework)负责处理MIME编码,JavaMail利用JAF来处理MIME编码的邮件附件.
多层应用模型
南京邮电学院 李建忠
微软的Windows开发用户群是微软通过Windows操作系统获得的最大财富.对于为什么要推出.NET开发平台,微软表示,主要原因之一就是由于Java向开发者承诺的硬件和操作系统无关性,可能会导致这些用户转向其他平台.虽然开发平台本身不会给微软带来很多收益,但Windows程序员是企业内部对微软产品的主要支持力量,商用软件的开发者形成了向客户销售微软产品的重要渠道.如果微软可以让开发者在.NET开发平台上编写应用程序,那么就会有更多的公司购买微软的其他产品.
认识.NET
认识.NET最好的方法是看它做什么..NET战略将互联网本身作为构建新一代操作系统的基础,并对互联网和操作系统的设计思想进行合理延伸,使开发人员能够创建出与设备无关的应用程序,以便轻松实现互联网连接..NET包括一个相当广泛的产品家族,它们构建于XML和互联网产业标准之上,为用户提供Web服务的开发、管理、应用和体验.图1是对.NET战略的总体描述.组成.NET战略的五个方面包括:
.NET服务器 能够提供广泛聚合和集成Web服务的服务器是搭建.NET平台的后端基础. .NET基础服务 密码认证、日历、文件存储、用户信息等基础服务是必不可少的.微软正在着力建设的.NET My Services等基础性服务平台是这方面可以借鉴的例子.
.NET终端设备 广泛的连接互联网并体验Web服务的终端设备是实现.NET的前端基础.PC、PDA以及各种嵌入式设备将在这个广阔的天地里发挥作用.
.NET用户体验 能够满足人们各种各样需求的用户体验是.NET的最终目标,也是.NET的价值实现.
在这五个组成部分当中,.NET开发平台中的 .net框架是.NET软件构造中最具挑战性的部分,其他四个部分则紧紧围绕.NET框架来进行组织整合.
.NET 框架内核
.NET框架实现了语言开发、代码编译、组件配置、程序运行、对象交互等各个层面的功能,为Web服务及普通应用程序提供了一个托管、安全、高效的执行环境.所有在.NET平台上创建的应用程序运行都需要两个核心模块:Common Language Runtime(CLR,通用语言运行时)和.NET Framework类库.CLR是一个软件引擎,用来加载应用程序,确认它们可以没有错误地运行,并进行相应的安全许可验证,执行应用程序,然后将被清除.
.NET Framework类库则向程序员提供软件组件,来编写在CLR的控制下运行的代码,它们按照单一有序的分级组织提供了一个庞大的功能集,包括从文件系统到对XML功能的网访问的每一样功能.该类库为开发提供了三种基本编程模板:基于ASP.NET的Web表单应用、基于ASP.NET的Web服务应用和基于传统GUI交互的Windows应用.
CLR——.NET的虚拟机
CLR为.NET应用程序提供了一个托管的代码执行环境.托管意味着将原来由程序员或操作系统做的工作剥离出来交由CLR来完成,从而使程序运行获得更高的安全性和稳定性.这些工作包括内存管理、即时编译、组件自描述、安全管理和代码验证,以及其他一些系统服务.CLR提供一个技术规范,无论程序使用什么语言编写,只要能编译成中间语言,就可以在它的支持下运行,这样.NET应用程序就可以独立于语言.CLR还在应用程序运行环境中为基于组件的编程提供了直接支持,比如它支持属性、事件、对象、继承性、多态性、接口等组件编程特性.
CLR中的自动垃圾收集器负责.NET应用程序运行时的内存分配、对象布局、内存释放等内存管理问题,彻底解决了多年来困扰程序员的内存泄漏问题,大大增强了应用程序的健壮性.
即时编译器在运行时将中间语言以调用的对象方法为单位动态编译成本地二进制代码.
值得指出的是,CLR通常寄宿在其他高性能服务器的应用程序中,比如互联网信息服务器(IIS)、SQL Server数据库服务器等.这样,开发者可以充分利用CLR诸多安全、高效的优点来部署自己的商业逻辑.
类库——组件和服务的家园
系统框架服务
服务框架包括一套开发人员希望在标准语言库中存在的基类库,如集合、输入/输出、字符串、数据等基类.基类库还提供访问操作系统服务的类,如图画、网络、线程、加密等类型.此外,服务框架也包括数据访问类库以及开发工具.
ADO.NET组件
XML数据组件
通过它开发人员可以对任何数据进行XML转换、传输和确认,所有数据都可以被看做是XML格式的.同时,系统也支持ADO.NET数据与XML数据之间的通用转换.
Windows表单组件
Windows表单组件为开发人员提供了强大的Windows应用程序模型和丰富的Windows用户口,包括传统的ActiveX控件和Windows XP的新界面,如透明的、分层的浮动窗口.对CLR的强大支持也是Windows表单组件令人兴奋的地方之一.
ASP.NET应用服务
ASP.NET的核心是其用于处理基于低级结构HTTP请求的高性能的运行语言,其编译运行的方式大大提高了它的性能.ASP.NET使用基于构件的.NET框架配制模板,所以呢它获得了诸如XCOPY配制、构件并行配制、基于XML配制之类的优点.它还支持应用程序的实时更新,同时提供高速缓冲服务,以改善性能.
ASP.NET Web表单
ASP.NET Web表单把VB表单高效率的优点带到了Web应用程序的开发中.ASP.NET Web单支持传统的将HTML内容与脚本代码混合的ASP语法,但是它提出了一种将应用程序代码和用户接口内容分离的、更加结构化的方法.它提供一套映射传统HTML用户接口部件(包括列表框、文本框和按钮)的ASP.NET Web表单控件和一套更加复杂的Web应用控件(如日历和广告转板).
对于.NET和Java本质区别最精辟的评述
java是平台无关的语言, #e.O?e
.NET是语言无关的平台. U 1[
lTuVLQ*e
java sBrpJc
whidows be@})?gH
个人看法:不过单纯从语言以及sun和ms的基本语言库来说,java已经比不上.net了(以前是.net学java,现在是java学.net).java剩下的只是哪将近十年来的经验积累 iHa)XtI
~◆H)"e
由于M$自己也有数据库系统软件,Oracle的这个最终幻想可能还要长久的幻想下去,而且有无终点还很难说. uAYFZ{%C$
net 是平台垄断 i }$soCE
java 是语言垄断 nV%#lMQ G
不过不考虑技术本质,考虑现在的市场现象,这个论断可以成立 0qwxi◆i
.net 基本看一本书就够了 而Java要看许多书 还不一定能干活 =#◆0HLGCFA
◆# .Q,V
.net就像品牌机,什么东西都预先由M$装好,但整体性能总是那么差强人意.JAVA更容易DIY,DIY就需要自看更多的书,当然这是取舍问题.
文中还提到,虽然以上的对比是当前的实情,但Java和.NET都在不断的发展中,彼此之间的差距还在持续的缩小.两个阵营都在相互学习,弥补自身的不足,最后的两个产品将会越来越相似.
.NET将开发工具的易用性发挥到了极致.但微软走的是傻瓜型工具的路线,这一点为诸多优秀程序员所不屑.但傻瓜型工具的特点会带来生产力的突破,可以预言,在一些小型的企业中,将会在未来几年更多的转向.NET的方案.尤其是现在使用VB、PB、Delphi的各个企业.
开放源码界给了Java很大的助力,而Java的很大一部分的魅力也是通过各个优秀的开放源码项目得到体现的.可能有一些企业并不关心开放源码,但这个态度其实是有问题的.开发源码的价值在于,他提供了一种生态环境:企业可以借助开源项目,在一个很高的起点上发展,然后再实现盈利的同时,反之回馈开源项目.在人的问题上,开源软件锻炼了大批优秀的程序员,这批程序员不是依赖于某个公司提供的傻瓜型工具,而是靠自己,靠集体的智慧来提高劳动生产率.这种发展模式是和.NET的路线截然不同的.所以Java下有很多关于软件管理、软件建模方面的研究,而.NET这方面就差很多了.
而值得称道的是,微软做了一件非常聪明的事情-将CLR规范和C#规范提交给了ECMA组织,从而实现了.NET底层框架的标准化,这使得一些程序员开始将一些优秀的开源项目转移到.NET上来.而Mono项目的发展,也使得.NET真正实现了跨平台的目标.这样,.NET就正式涉足到了Unit环境中.但微软还有很长的路要走.
养成良好的习惯,每天查看下log的内容,排除一些error和warning. 定期对log进行归档和更新
如有疑问可追问,满意请及时采纳,谢谢
是别的分区吧?因为正常情况下这是不会发生的.也许你挂载了别的分区.
执行df 和cat /etc/fstab贴出来看看?
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件.在文本文件中,数据都是以字符的ASCII代码值的形式存放.
EOF在windows对应的按键是CTRL◆Z键,在linux系统上对应的按键是CTRL◆D.比如下面的代码:
#include?stdio.h
int?main()
{
int?c;
while?((c?=?getchar())?!=?EOF)
putchar(c);
return?0;
}
? ?运行程序按CTRL◆Z键,即会显示"^Z",再次按回车键即可退出程序.
? ?