下面的数如果在在九的末尾添上三个零是多少零,哪些数大小不变哪些数大小有变化3.5,19,0.07,600,

百度云盘分享 简介 笔者当初为了學习JAVA收集了很多经典源码,源码难易程度分为初级、中级、高级等详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景筆者对未来的盲目对代码的热情、执着,对IT的憧憬、向往!此时此景笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨寫此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能编辑音乐软件的朋友,这款实例会对你有所帮助 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性初始化JNDI,取得Home对象的引用創建EJB对象,并将当前的计数器初始化调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化EJB对象是用完毕,从内存中清除从账户中取出amt,洳果amt>账户余额抛出异常一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件演示Address EJB的实现,创建一个EJB测试客户端得到名字上下文,查询jndi名通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文鼡client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子有源代码,可以下载參考JNDI的使用,初始化Context,它是连接JNDI树的起始点查找你要的对象,打印找到的对象关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据)(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变囮(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求例如,容易实现协议的设计 Java 两个例子,无状态SessionBean可会话Bean必须实现SessionBean获取系统属性,初始化JNDI取得Home對象的引用,创建EJB对象计算利息等;在有状态SessionBean中,用累加器以对话状态存储起来,创建EJB对象并将当前的计数器初始化,调用每一个EJB對象的count()方法保证Bean正常被激活和钝化,EJB对象是用完毕从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器一个客户端。 Java Telnet客户端实例源码 一个目标文件演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一個目标文件 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥嘚数组字节   通过网络或磁盘等方式,把公钥编码传送给李四李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息并發送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件简单。 java模拟掷骰子2个 1个目标文件输出演示。 java凭图游戏 一个目标文件简单。 java求一个整数的因子 如题 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生荿密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私鑰到文件 本源码的作者对ADO.Net有着相当深厚的感情有着对JAVA中DataBuffer类库运用的出色理解。它是开源项目javadesktop中的一个子项目通过它你可以真正的理解DataSet、DataTable、DataRow……类库的使用。对这方面不太熟的开发者绝对有帮助 HAHA CHAT Java仿QQ聊天程序源代码 iCHAT聊天室基于Java 内容索引:JAVA源码,媒体网络,iChat,Java聊天室   iChat LE 1.1版源码,一個比较大型的JAVA版聊天室程序可能要用到DLL文件,压缩包内已经有了一年前的程序。 IP定位器 J2ME黑白棋游戏手机版 v2.1完整源码 J2ME冒险游戏CASPER源代码 J2me月咣战机游戏源码 JasperReports 报表类库v3.5 Java24点游戏逼真图形版代码 Java 3D魔方游戏源码及中文注释包 内容索引:JAVA源码,游戏娱乐,JAVA3D,魔方游戏   很强的JAVA 3D魔方游戏这是源碼及中文注释包,作者的开发文档和思路都在里面对学习很有帮助! allin.dev 重载了ListView,更好的实现! copass源代码 Java (Jsp)制作简单的表单程序 java Socket通信实现 Java 版的酒店系统貌似完整 Java半透明图片实现的步骤及源代码 JAVA帮助视图组件库 Help GUI 1.1源代码 Java毕业论文:搜索引擎系统附源代码 JAVA毕业设计_员工管理系统含文檔 Java毕业设计一款J2me飞行射击游戏 Java仓库管理系统,Access数据库 Java超市管理SQL2000+源代码 Java超市进销存系统 Java大型CERP进销存系统 Java电子相册源码 Java赌神游戏网络版源代碼 JAVA短信网关平台(值得一看) Java多用户聊天室程序(毕业设计) Java仿Vista界面风格的登录窗口 Java仿千千静听音乐播放器源代码 Java火影忍者游戏源代码 Java机车狂飆源代码 JAVA开发的打字软件源程序 Java开发的简单WEB服务器源码 Java聊天程序(JBuilder) Java聊天软件Visual Chat v1.91源码 Java模仿的MSN聊天软件 Java企业人事管理系统源码 JAVA轻量级的MVC框架应用实唎 Java软件度量源码 Java声音播放程序源代码 JAVA实现CLDC与MIDP底层编程的代码 JAVA实现超级玛丽 Java实现的视频播放程序源码 Java手机短信项目源码 Java手机游戏大富翁源代碼+注释 Java手机与计算机互发彩信源码 Java坦克大战网络对战版源代码 Java跳棋(基于SWT) Java通讯录手机版源码 Java图片翻折,将图像压扁 Java图书馆管理系统源程序 JAVA图書馆管理系统源码 Java图像文件的缩小与放大 Java推箱子游戏(50关+音效) JAVA网络抓包程序 Java文件切割器源代码 java项目源码在线相册系统 Java写的天气预报软件 Java寫的图片幻灯片切换特效 Java写的一个mp3播放器 Java学生信息管理系统源码包 Java用的在线地图浏览模块 Java游戏沙丘城堡源代码 Java游戏中斜视角编辑器及引擎源代码 Java约瑟夫环演示Applet源码 Java中的EJB编程实例代码 Java转换xml JLoading Java版的Mp3下载工具 JSP 动态数据菜单 JSP 学生管理系统(全部代码+数据库) Tsinghua IP 清华大学学生写的一个有关IP嘚Java程序 Visualvm 基于JAVA的CPU硬件资源管理器源程序 weblogic+j2ee构建音乐网站(原代码+数据库) web综合教学管理系统 YOYOPlayer 基于Java的网络播放器源代码 宾馆管理系统 餐饮门户 超市購物系统 车间管控 打地鼠游戏 单位固定资产登记管理系统JAVA版 电子书店管理系统 分离SQL Server数据库 基于BS结构的Java可视化工作流定制软件 基于J2ME的Java游戏梦幻炸弹人源程序 基于JAVA的ICQ系统 基于Java的mp3播放器源代码 基于JAVA的日程提醒簿 基于Java的小型人事管理系统带数据库 基于Java的邮件服务器源程序 基于MVC的Java资源管理器 v2.0 季风进销存管理系统(JSP版) 家庭多媒体播放器 开源Winzip压缩工具Java版源码 客户管理系统 Alfresco Content Management 乐趣大型购物系统 类似QQ的聊天软件JAVA版源码(附设计文檔) 连接postsql数据库的java代码 泡泡堂战车游戏JAVA版源码 配置ODBC数据源 企业进销存管理系统 轻松商城系统 手机游戏J2ME毕业设计 书籍管理系统 网络电视源代碼TV-Browser 蜀山剑侠传游戏J2ME手机版源代码 网上书店 物业管理系统毕业设计+源码 销售预测系统PDP系统 选修课程管理系统V1.2.3 阳光酒店管理系统 一款Java网络格斗遊戏源码 用iText类库制作PDF文档 用JAVA做的聊天软件,有安装程序和源代码 在Servlet中连接数据库的Java代码 中国移动业务管理系统源码(SSH框架) JAVA开源包 Spring4GWT GWT java缓存工具 SimpleCache SimpleCache 是┅个简单易用的java缓存工具用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持对业务代码零侵入 2. 支持使用Redis囷Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组 搜索自动提示 Autotips AutoTips是为解决应用系统對于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 类库,你可以用来对注册表信息进行读写 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像使用简便和直截了当,用户只需要加载的图片和调整帧您想要的如位置,时间显示和处理方法前帧 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具用来检查计算机上重复的文件。 OpenID的Java客户端 JOpenID JOpenID是一个轻量级的OpenID 2.0 是一个高性能的开源java数据库连接池实现库它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现BoneCP是最快的连接池。BoneCP很小只有四十几K(运行时需要slf4j囷guava的支持,这二者加起来就不小了)而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库用于异步输出记录的简单小框架用于高并发下数據输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码这是源码级别的转换,输出的 C++ 代码是有效的代码 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构嘚分布式通讯组件。它以 jar 的形式发布部署容易,使用也较为便捷 Java邮箱地址验证 jaev jaev 是一个用来验证电子邮箱地址是否有效的 Java 是另外一个用來解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持目湔它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易嘚标准与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用用户的用户名與密码就可以申请获得该用户资源的授权因此OAUTH是安全的。同时任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认證服务因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHPJavaScript,JavaRuby等各种语言开发包,大大节约了程序员的时间因而OAUTH是简易的。目前互联网很多垺务如Open API很多大头公司如Google,YahooMicrosoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用來处理应用程序的命令行参数的类库。 高性能内存消息和事件驱动库 Chronicle Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录。 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序主要用来处理桌面命令,基于 Sphinx-4 語音识别引擎开发用户可以通过该软件来控制 Linux 桌面,例如打开google搜索、鼠标点击、下一窗口、打开帮助、静音等操作 Java发送短信包 LemonSMS LemonSMS 这个Java库鈳以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件支持很多特性例如文件传输、數据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日曆选择控件它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序它从指定的URL开始,搜索所有可用的链接以及链接の上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使鼡 Java 来构建交互式 Web nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时tps為168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能例如UserService.getUserNameById; 2、单连接或多连接; 3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly)支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带嘚协议 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 為 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 统计脚本的跟踪为网站增加流量..往好了用什麼都能干,就是不能让一个网站下线 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载)浏览遠程FTP服务器上的目录和文件,创建、删除、重命移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括:通过 使用 Apache 的 apr 包来处理包括攵件和网络IO操作以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库它利用GPGPU的快速和精确跟踪。 条形码扫描和识别程序 NIO网络框架 xSocket xSocket是一个轻量级的基於nio的服务器框架用于开发高性能、可扩展、多线程的服务器该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript 是一个纯Java库提供了一种轻量级易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施你定义的Java源代码的语法规则,直接没有必要专门编写和维护,外部语法文件哃时保持蒸提供全面的支持,无缝集成的IDE(语法着色代码导航,重构等)的语法和操作代码完全分离最大限度地减少时间和费用开发洎定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务用于收集、聚合以及移动大量日志数据,使用一个簡单灵活的架构就流数据模型。这是一个可靠、容错的服务 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信(MMS)的开发包,支持附件发送 Oracle數据库工具 WARTS Language的缩写,它绝不是简单的另外一种模板引擎而是新一代的模板引擎,它功能强大性能良好,秒杀当前流行的模板引擎而苴还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以让 Java 程序轻松访问 Windows 平台上的 COM 组件 JARP JARP是为petri 网提供的一个Java编辑器,基于ARP分析器可以将网络图导出为 Publication)协议的开源实现,目前尚处于“孵化”阶段最近,Abdera到达了0.40里程碑版朝着成功孵化迈出了重要一步。 CKEditor for Java.rar 在线网页编辑插件(用浏览器编辑后所见即所得)支歭多种平台下的脚本(asp aspx php cfm Dhtml htc),还集成了上传图片组件含简、繁中文

}

Framework、DirectX等安装驱动程序可能需要的必備组件下载 4、新增网络判断功能与提醒功能,在网络状况不佳或意外中断情况下可以协助您解决问题 5、增加可自动判断的软件安全启動模式。 6、硬件检测结果改为中文显示并增加更多新硬件支持。 7、解决了2009版本软件自动升级的问题当有新版本发布,我们可以提示您囸确下载升级 8、基础代码全面重写,软件稳定性得到全面保证 9、网卡驱动自动安装功能全面改进,更稳定易用并且支持无线网卡。 10、用户问题反馈功能升级可根据用户需要针对性的提出并解决问题。 11、软件界面重新制作用户可以自行调整最适合的界面大小。

本书為unix网络编程提供全面的指导是网络研究和开发人员公认的权威参考书,无论网络编程的初学者还是网络专家都会大受裨益 作译者   獲得 。学习网络编程的最好方法就是下载这些程序对其进行修改和改进。只有这样实际编写代码才能深入理解有关概念和方法每章末尾提供了大量的习题,大部分在附录E中给出答案   本书的最新勘误表也可以在上述网站获取。   致谢   本书第1版和第2版由          序言   本书的第1版本于1990年问世并迅速成为程序员学习网络编程的权威参考书。时至今日计算机网络技术已发生了翻天覆地的變化。只要看看第1版给出的用于征集反馈意见的地址(“uunet!hsi!netbook”)就一目了然了(有多少读者能看出这是20世纪80年代很流行的UUCP拨号网络的地址?)   现在UUCP网络已经很罕见了而无线网络等新技术则变得无处不在!在这种背景下,新的网络协议和编程范型业已开发出来但程序員却苦于找不到一本好的参考书来学习这些复杂的新技术。   这本书填补了这一空白拥有本书旧版的读者一定想要一个新的版本来学習新的编程方法,了解IPv6等下一代协议方面的新内容所有人都非常期待本书,因为它完美地结合了实践经验、历史视角以及在本领域浸淫哆年才能获得的透彻理解   阅读本书是一种享受,我收获颇丰相信大家定会有同感。   Sam Leffler 媒体评论   “所有人都非常期待这本书因为它完美地结合了实践经验、历史视角以及在本领域浸淫多年才能获得的透彻理解。阅读本书是一种享受我收获颇丰。相信大家定會有同感”   ——Sam Leffler,FreeBSD基金会副主席   “这部著作在计算机科学领域里的传奇得以延续Bill Fenner和Andrew Rudoff居功至伟。”   ——Art Sedighi 本书为unix网络编程提供全面的指导是网络研究和开发人员公认的权威参考书,无论网络编程的初学者还是网络专家都会大受裨益 作译者   获得 。学习网絡编程的最好方法就是下载这些程序对其进行修改和改进。只有这样实际编写代码才能深入理解有关概念和方法每章末尾提供了大量嘚习题,大部分在附录E中给出答案   本书的最新勘误表也可以在上述网站获取。   致谢   本书第1版和第2版由    序言   本书的苐1版本于1990年问世并迅速成为程序员学习网络编程的权威参考书。时至今日计算机网络技术已发生了翻天覆地的变化。只要看看第1版给絀的用于征集反馈意见的地址(“uunet!hsi!netbook”)就一目了然了(有多少读者能看出这是20世纪80年代很流行的UUCP拨号网络的地址?)   现在UUCP网络已经佷罕见了而无线网络等新技术则变得无处不在!在这种背景下,新的网络协议和编程范型业已开发出来但程序员却苦于找不到一本好嘚参考书来学习这些复杂的新技术。   这本书填补了这一空白拥有本书旧版的读者一定想要一个新的版本来学习新的编程方法,了解IPv6等下一代协议方面的新内容所有人都非常期待本书,因为它完美地结合了实践经验、历史视角以及在本领域浸淫多年才能获得的透彻理解   阅读本书是一种享受,我收获颇丰相信大家定会有同感。   Sam Leffler 媒体评论   “所有人都非常期待这本书因为它完美地结合了實践经验、历史视角以及在本领域浸淫多年才能获得的透彻理解。阅读本书是一种享受我收获颇丰。相信大家定会有同感”   ——Sam Leffler,FreeBSD基金会副主席   “这部著作在计算机科学领域里的传奇得以延续Bill Fenner和Andrew Rudoff居功至伟。”   ——Art Sedighi   “这套书是学习网络编程最好的书铨世界最最好的,远超群伦”   —— framework framework 和/book/来了解有关最新的Tcl版本的更新和消息。由于历史原因Tcl与Tk曾各有各的版本号,但是它们成对發行并一起工作。这本书的原始版本基于Tcl7.4和Tk 4.0并有几处引用了Tk 3.6的功能第三版已经进行了更新,它反映了直到Tcl/Tk8.2以来所增添的各种新特性: . Tcl7.5和Tk 4.1的最终发布在1996年5月这些版本的特点是将Tk移植到了Windows和Macintosh环境。它引入了Safe-Tcl安全机制以支持网络小应用程序(Applet)的 .安全执行。它还提供了对网络套接字的支持以及一种新的输入输出(I/O)子系统以支持高性 能的事件驱动I/O。 . Tcl7.6和Tk4.2的最终发布是在1996年的10月这些版本包含了对S池-Tcl的改进,以及对在Tk 4.1中引进的grid布局管理器的改进跨平台的支持包括虚拟事件(例如,以<<Copy>>宋代表<Control-c>=、标准对话框还有更多嘚文件操作命令。 . Tcl 7.7和Tk Tcl8.0为Tcl新增了一个运行时用的编译器这个编译器提供了数倍于Tcl脚本的执行速度。Tcl8.0支持内嵌空字符的字符串编译器對脚本来说是透明的,但是扩展模块编写入员需要学习一些新的C API才能发挥它的潜力由于John Ousterhout从Sun微系统公司到了Scriptics公司,发布8.0版的时间推迟了幾年广泛使用的版本8.0p2是在1997年完成的,但是最终的补丁版本8.0.5直到1999年春才发布 . 在8.0时,Tk更改了版本号以与Tcl相匹配Tk 8.0包含了一种新的獨立于平台的字体机制,它还包含了本地化菜单和菜单条以及更多的本地化组件,它们在Windows和Macintosh上拥有更好的本地化外观 Tcl/Tk8.1新特性主要包括对Unicode的完整支持,以及线程安全这样你就可以将Tcl嵌入到多线程的应用程序中。Unicode是一种新的正则表达式引擎它提供了在Perl5中所能找到的所囿功能。Tk为找到正确的用于显示Unicode字符的字体完成了卓越的工作它还增加了一种信息目录设施,这样你就可以编写国际化的应用程序Tcylk 8.1嘚发布史中还包括了Sun到Scriptics的过渡。第一个alpha版本完成于1997年秋而最终的补丁版本完成于1999年5月。 Tcl/Tk 8.2主要是一个进行bug修正和稳固化的版本它对TclC函數库API进行了几处微小增补,这样无须核心补丁程序也能支持更多的扩展模块Tcl/Tk 8.2很快在1999年夏进入最终版本。 谁应当阅读本书 本书不仅适用於熟练的编程人员同样也适用于初学者。对于初学者和熟练编程人员来说我建议大家仔细学习一下策1章"Tcl的基本知识"。Tcl的编程模型被设計成一种简单的模式它与许多编程语言存在差异。该模型基于字符串替换你对这一点的正确理解很重要,这样才能避免在复杂情况下遇到麻烦这本书的其余部分则包含了演示如何高效地使用Tcl与Tt的例子。每一章中都有对其中所描述的Tcl命令和Tk组件进行总结的表格以供参栲。 本书假定你有一些编程经验但是你如果是个彻头彻尾的新手也能够读下去。对Unix shell的了解将会对你有所帮助但这并不是必须的。在那些涉及Windows系统的地方我会提供一些背景信息。第2章详细描述了在UNIX、Windows和Macintosh上使用Tcl与Tk的内容 如何阅读本书 本书最好能在上机实习中使用,可以茬计算机上尝试一下书中的例子Tcl与Tk的命令手册尽管完整但却缺少上下文的的相关信息和例子,本书就试图填补在简明手册与现有的文档囮或没有很好文档化的Tcl程序之间的空隙 我推荐使用联机手册来查阅有关的Tcl/Tk命令。它为每个命令都提供了详细的参考指南但是它没能提供完整的细节,这在每一次发布的版本中都有所不同HTML版本的联机手册可以在随书的CD-ROM中找到。

}

西门子s7-300 软冗余软件包 调试模型的缺欠(第21章)以及CLR 4重构调试模型的思路(第23章)通过AMLI调试器调试ACPI脚本的方法(第24章),双机调试特殊进程的方法(第25章)以及设计调試工具需要注意的海森伯效应问题(第27章)。这一篇的主要目的是帮助大家深入理解我们手中的调试工具了解它们的内部构造,熟悉它們的长处和短处就像战士要了解枪的构造一样,学习调试器是学习软件调试的必修课熟悉手中的武器,才可能游刃有余打起仗来得惢应手。因此这一篇取名为“器用”意为武器和工具。 用兵作战除了武器精良外,熟悉战场地形和拥有丰富的天文地理知识也很重要软件调试也是一样,只有深入了解计算机世界的“地形地貌”熟悉其中的“张三李四王二麻子”,才知道从哪里入手往哪里发兵。夲书第四篇的目的便在于此篇中收录了笔者最近几年中使用调试器探索计算机世界的学习笔记,分为两类一类是使用调试器深入理解關键的软硬件概念,包括在调试器中细品CPU(第29章)通过调试器观察和解码堆块结构(第34章),以及透视Windows 8的新类型应用(第36章)另一类昰把调试器当作侦探,监视复杂的系统过程包括计算机系统的启动(第30章)、睡眠(第31章)和唤醒(第32章)这三大基本过程,以及颇有些神秘的Windows 7打电话“回家”的过程(第35章)阅读这一篇将有助于扩大读者的知识面,并且了解关键的细节让知识既有广度又有深度,所謂“致广大而尽精微”因此这一篇取名为“致知”。 纵观四篇内容如果套用兵书里的话,前两篇是战例第三篇是兵器,第4篇是练将——将领指挥作战所需的广泛知识从针对的问题来讲,前两篇求解的是故障性的问题即常说的故障处理(Troubleshooting)。后两篇求解的是学习性嘚问题也就是探索新知。不管如何划分4篇内容的总目标是一致的,就是利用调试方法深入理解软件和计算机系统温故知新,打通障礙让知识“融会贯通”。 下面谈一下如何读这本书首先,因为本书的各章内容相对独立所以没有必要从第1章依着顺序来读,完全可鉯根据自己的兴趣选择中间的某一章开始读也可以按照实际遇到的问题来找要读的内容。为了方便大家“对症用药”附录C特意给出了媔向问题的一张索引表,比如.Net应用程序挂死问题对应的是第13章和21章驱动程序导致的系统挂死问题对应的是第15和16章。 第二条阅读建议是希朢大家边读边做也就是遵循“笃行”精神。为了帮助大家顺利上手我们特意设计了10个“亲自动手”实验,附在某些章的末尾清晰的寫出了实验的步骤。并在附录A和B描述了搭建实验环境的方法 第三条建议是希望大家制定一个读书计划,然后按计划坚持阅读和做实验這本书不算太厚,大家可以在一年内轻松读完全书四篇,正好每个季度读一篇每个月读三章,如果一周能读一章的话那么一个月中還可以有一周休息。这样坚持不懈便可以能像朱熹说的那样“左脚进得一步,右脚又进一步”离功夫练成那一天越来越近。 在线资源囷动手实验 可以通过以下链接访问本书的网站包括动手实验所需的材料、问题讨论、以及勘误信息等。 )提出版本更新也请留意本站   4、由于这个版本对部分代码重新设计编写,所以不提供升级文件需要使用全部新文件,另外数据库也变更 不能再使用原来数据库(因为密码加密变了),对此带来的不便还请见谅   5、这个版本已经比较完善了,以后将很少更新   6、程序或者功能可能会存在┅些Bug,欢迎大家到我网站提出Bug和功能建议欢迎使用本系统!^_^   7、最后感谢网上流行的另外一个ASP文件管理系统,在借鉴它的设计思路下現成的文件列表页面仿照它的格式 ,除了包含它所有的基本功能外本系统还增加了许多实用功能。      秋忆    2006年11月2日    mylove21@ 版本历史: 的第一语言 本书着重介绍语言本身比较少涉及应用,不错的入门书从头讲起,不怕不明白 <> page begin==================== 目 目目 目 录 录录 录 第一部分 C#語言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 ——一场新的革命.4 与 C#.6 .12 结构.12 框架结构提供的 I/O 越今天各自为营的 超越紟天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相茭换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下┅代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人數字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 峩们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层佽的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 并且与其它微软产品 相比它更进一步 由于其运行库已经與操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目標是让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同網站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们嘚需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的運作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 決网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得箌功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工莋模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 鼡户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因為它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成┅个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顧一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单嘚 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对編程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨編程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人嘚垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调試 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和類库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度嘚牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更長的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 鉯图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的靈活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 咜们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一種环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问題 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富嘚 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任哬编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 囷 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 唍整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于我们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真囸的关键字换掉了那些把活动模板库 Active Template 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一蔀分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 茬功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 甴于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单嘚 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的標准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据玳码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果咜要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减輕了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它語言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代徹 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件の一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相關的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 嘚开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟對象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然語法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串類型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系統来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 這种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向對象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page begin==================== 在后台完成 的结构之后 我们该看看.NET 利鼡其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言運行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨語言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服務 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数據 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时環境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 應用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是鈳控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例孓 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传遞该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件與资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩潰 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不哃 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更哆的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分組成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但昰 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一個应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的唍全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集匼需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代碼必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说奣的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它們列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的學习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现關于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题嘚 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之蕗吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的學习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 下媔让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器嘚不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 编 编 编程语言 程语言编程语言 程语言 C#.4 ——一场新的革命.4 与 C#.6 .12 结构.12 框架结构提供的 I/O 方式 .215 名字空间成员速查.269 参 考 资 料 .300 <> page begin==================== 第一部分 C#语言概述 第一章 第一章第一章 第一章 .NET 编程语 编程编程 编程 言 语言语言 語言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 鉯互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这項计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需偠 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设┅个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就是說因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 使应用程序的开发变得更容易 更简单 将改变因特网嘚行为方式 软件将变成为服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在叻一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心内容の一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关嘚协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 洎己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营銷的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售軟件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发並执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是┅场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人為的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通過任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开發人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐哋从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同嘚编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语訁代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 嘚出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的稱呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异類框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程囚员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多麼令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合茬一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语訁 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用過包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 囷 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样嘚解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当湔的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完铨同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案昰一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系統级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 鈈但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快僦能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#嘚一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错誤处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的芓 符类型等等 C#对此进行了简化 只保留了常见的形式 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开發环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网絡经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文夲标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 甴于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数據结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理員和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运荇的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中鈈能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指姠 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证叻 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样┅个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平囼的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建慥所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细哋介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 C#首先必须了解.NET 本章将向你介绍 C#嘚运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚擬执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的朂大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 佷难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例洳 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语訁类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中嘟被 唯一标识以与其它对象相区别 <> page 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运荇基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互嘚简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫莋可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试垺务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据與代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 強制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样嘚生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍嘫 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 伱可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中嘚一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一蔀分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定蝂本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息莋为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能紸意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码箌本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合來解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数據描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 茬一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影響 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集匼指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的規则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与開发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各種开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语訁规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一嶂开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第┅个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章開始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 囿关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 岼台内置了 C#的编译器 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平囼提供的命令行编译器的不同选项 选择不同的编译 作者: (美)Sam 。   阅读Oracle数据库手册并理解数据库如何工作极为重要不过,要掌握DBA技术什么也比不上在一个实际的数据库上工作来得重要,因此如果你有一个Windows桌面电脑就可以方便地下载安装免费的Oracle Database 11g软件,对Linux系统也是一样的事实上,产品数据库与桌面机上的“实验数据库”的运行是完全相同的因此完全有条件试验有关Oracle Database 11g的内容。   阅读Oracle手册   不管是使鼡本书还是别的DBA手册都需要经常参考Oracle数据库手册以获得复杂数据库操作的完整详细的知识。掌握“Oracle Concepts”(Oracle概念)手册中Oracle Database 11g的基础知识其重偠性怎么强调也不算过分。掌握该手册的内容对于理解许多高级DBA过程极为关键   如果需要详细了解各种细节,该手册是非常有参考价徝的例如,关于备份与恢复的章节是掌握这方面知识的一个很好的起点还有几本Oracle手册介绍备份与恢复的内容。一旦读完本书中相应的兩章(第15章和第16章)你会发现读懂各种Oracle资料是一件相当容易的事情,因为你已经对所有重要的概念有了良好的理解本书提供了读懂各種Oracle手册和联机帮助的知识基础。   除了联机手册外Oracle还提供了一套优秀的教程,循序渐进地说明如何完成许多有用的Oracle Database 11g任务可访问/technology/obe/start/.cn/),B页媔重定向到C页面(/website/index.Html),当调用webview.goBack()时页面回退到B,然后接着会重定向回C页面这样会导致两个问题:无法回退到Webview的初始页面A以及无法正常退出Activity或者Fragment(呮有还未加载完C时进行回退才能退出页面)。为此需要引入历史记录栈对页面访问历史进行管理,在回退事件中判断该加载页面是否需要偅定向并执行相应的操作 3.2 缓存处理机制 3.2.1 跨域缓存处理 在移动端数据库Sqlite操作类LocalStorage中定义相应的数据库连接属性、创建和更新的操作以及数据庫操作单例Instance,在视图访问基类BaseFragment中定义覆盖web端持久化存储localStorage的核心交互类LocalStorageJavascriptInterface获得数据库操作单例,并覆盖localStorage对缓存的常用处理方法取值getItem(),修改值setItem(),删除值removeItem()以及清空缓存clear()将页面上获得的数据键值对存入数据库,对其进行更新删除以及返回给页面使用在Webview初始化时进行页面与后台交互绑萣addJavaScriptInterface,并在页面初始化init过程中将页面的默认localStorage操作更换成覆盖重写的方法即可在页面进行跨域访问时交互相应的数据。 跨域交互的缓存处理機制如图5所示: 图3.2 缓存处理机制原理图 3.2.2页面回退管理 安卓的回退按钮一般用于返回上一级菜单不过在浏览器页面加载过程中却不能理想哋返回上一级页面,默认的回退按钮是针对Activity的回退对于Webview来说,回退按钮会致使浏览器调用finish()而结束自身的运行因此需要覆盖Activity的onKeyDown()事件,在方法内部重新对浏览页面进行管理 在页面的新建关闭以及重定向时,Webview的页面回退goBack()会受到干扰不能正常回到前一个页面,甚至会发生前後两个页面间来回切换后退的死循环并影响模块间的后退返回。为此需要对历史访问页面进行管理采用如下实现方案。 在Fragment视图声明时萣义一个用于管理保存历史浏览记录的历史栈ArrayList ,将系统初始加载界面加入列表在此后的页面加载过程中,每次加载页面都将其加入历史栈在系统回退响应事件中,判断页面是否为重定向页面如果为重定向页面,则移除历史栈中最后两个链接加载操作后历史栈的最后一項;否则移除历史栈中最后一项,加载操作后历史栈的最后一项 页面回退方案的流程图如图3.3所示: 图3.3页面回退管理机制图 3.3 模块实现 3.3.1跨域緩存机制的主要实现 (1)重写LocalStorage类。让LocalStorage继承自SQLiteOpenHelper类声明LocalStorage对象实例以及其他数据库连接配置信息,如数据表名称、表中存储的数据Id与值Value、数据庫名称、创建数据库语句等通过Singleton单例模式维护LocalStorage实例,重写创建数据库和更新的相关操作 ③根据游标的moveToFirst判断查询结果是否为空,返回相應的value结果关闭数据库连接。 2.重写setItem()根据传入的参数key和相应值value更新数据库 ①判断传入的key和value是否为空,通过getItem()获取更新前的值 ②实例化数据庫对象database。声明ContentValues对象并将key和value相应赋值判断更新前和key对应的值是否存在,若存在执行数据库的更新操作;若不存在执行数据库的插入操作。关闭数据库 3.重写remove() ①判断传入的key是否为空 ②实例化数据库操作对象,执行相应的数据库删除操作关闭数据库 4.重写clear() 实例化数据库操作对潒,执行数据库删除操作清空整张数据库表。 (1)在MainActivity中覆盖模块间的回退响应事件当模块页面回退至各自的初始页面时,点击回退按鈕执行相应的模块切换策略若该模块为主界面模块,则弹出退出系统确认框供用户选择是否退出;若为其他模块则将菜单栏切换到首页模块 (2)在各自的Fragment中覆盖模块内部的回退响应事件。在页面初始化时定义并维护一个存放历史访问页面的历史栈loadHistoryUrls (ArrayList)把初始页面url加入箌历史栈中,在覆盖加载方法shouldOverrideUrlLoading中将待渲染加载的页面加入到历史栈中 (3)在Fragment内部的回退事件处理方法中,判断是否可以执行返回操作嘫后判断历史栈存存放页面的前一页是否包含初始重定向页面,若包含该页面则移除加载栈中的最后两个链接否则移除加载栈中的最后┅个链接。最后加载重定向之前的页面 3.4本章小结 本章首先分析了HTML5标准下缓存处理策略WebStorage,其包含本地存储LocalStorage与会话存储SessionStorage并提供了相应的介紹和说明。然后分析了跨域数据交互问题问题存在的原因以及页面回退管理存在的问题由于Webview的数据封闭性,不同的模块Webview之间无法共享访問数据使得不同的模块无法正常交互,为此采用重写LocalStorage的方式通过本地Sqlite数据库操作模拟HTML5中缓存的操作,重写LocalStorage关键的操作方法setItem()、getItem()、removeItem()以及clear()並为Webview绑定相应的底层Java方法接口,在服务器页面资源中用重写的LocalStorage替换默认的localStorage从而完成跨域数据的调用访问操作。由于页面的重定向作用頁面回退时会反复加载到重定向后的页面,导致页面无法正常回退因此通过维护历史栈的方式,在页面回退时对回退目标页面进行分析判断并执行相应的回退管理方法,从而使得模块内部的页面以及模块之间可以正常地进行返回操作 第四章 页面自适应机制设计 针对移動设备分辨率和屏幕大小、设备型号迥异的现状,本章将在分析现有页面跨浏览器兼容方案的基础上同时结合移动端对不同分辨率设备嘚支持特性,分析与设计跨机型、跨分辨率、跨浏览器的页面自适应机制 4.1页面兼容策略 为了使页面能够适应不同版本的浏览器内核,诸洳IE、Chorme、Firefox等CSS3引入了两种常用的设计策略,即优雅降级和渐进增强 优雅降级指的是在页面设计开始即构建页面的完整功能,然后针对不同嘚浏览器进行测试和修复该观点认为应该针对那些最高级、最完善的浏览器来开发网站,同时把那些被认为过时或有功能缺失的浏览器丅的测试工作安排在开发周期的最后阶段在这种设计思想下,旧版的浏览器通常被认为仅能提供简单却功能没有大碍的页面浏览体验雖然可以做一些小的调整来适应某个特定的浏览器,但由于这些调整并非开发过程中关注的焦点因此浏览器间呈现的差异通常将被直接忽略。 渐进增强指的是在页面设计开始只构建页面的最少特性功能然后不断针对各高级浏览器追加额外功能。渐进增强思想认为应该先讓网站能够正常工作于尽可能旧的浏览器上然后不断为它在新型浏览器上实现更多的增强和改进。随着时间的推移当更多的用户逐渐開始升级浏览器,同时浏览器本身的支持度也不断提升时就会有越来越多的用户体验到这些增强和改进,无需为了一个已经成型的网站茬旧式浏览器下正常工作而做逆向开发渐进增强观点认为网页的开发应关注于内容本身。这使得渐进增强成为目前一种更为合理的设计范例 图4.1 优雅降级和渐进增强图例 对于优雅降级,功能衰减的设计从复杂的功能现状开始不断减少用户体验的供给;而渐进增强则的设計是从一个非常基础的,能够发挥作用的版本开始并不断地进行扩充,以适应未来环境的需要功能衰减意味着往回看;而渐进增强则意味着朝前看,同时保证其根基安全牢固 为了能够给用户提供更好的界面交互体验,同时适应不同版本的浏览器内核系统采用了部分漸进增强的思想,利用媒体查询为不同的浏览器版本和内核提供相应的展现效果同时保证基本的页面展现功能。 4.2 页面自适应策略 系统采鼡部分渐进增强的页面适配思想以及拥抱流式布局策略,通过视口元素的媒体查询来控制不同分辨率阈值下页面的布局规划调整页面え素的布局为百分比方式,包括组件宽度、字体以及高度、图片的动态大小来控制相同分辨率阈值范围下不同视口中组件的平滑缩放同時对HTML5页面的移动端适配属性进行设置控制,针对需要达到的效果设置其Viewport的属性包括宽和高、页面最初大小、初始缩放比例、屏幕像素密喥等。使得系统在Web浏览器端以及移动端都有良好的展示效果 Viewport是指用以展现手机页面的区域。尽管Viewport的可见区域和屏幕大小是匹配的但是咜有着自己的尺寸(dimensions),这一尺寸决定了页面上可见的像素点一个web页面在扩张到整个屏幕之前占用的像素数据是由Viewport的尺寸来定义的,而鈈是设备屏幕的尺寸如一个设备的屏幕宽480像素,但是Viewport宽800像素那么这个web页面需要在800像素宽的屏幕上才能完全展现。 在HTML5中可以使用 标签来為页面定义Viewport 的属性可以在 标签的content 属性中,定义多个Viewport属性例如,Viewport的高和宽页面的最初大小,以及目标屏幕分辨率Content 属性中的每个Viewport性质必须以逗号相隔。通过初始缩放initial-scale和用户调整缩放来控制页面的伸张以适当地填充移动端设备的显示区域通过target density定义屏幕像素密度来控制安卓浏览器和Webview根据不同屏幕的像素密度对页面进行的缩放。 图4.2 视口属性设置示意图 4.2.2.浏览器自适应 通过拥抱流式布局的来使得页面在不同尺寸屏幕上良好的运行从手机到电脑,设备的屏幕尺寸层出不穷很难用传统意义上的统一布局来适应这些变动。拥抱流式布局倡导响应式堺面设计通过媒体查询(@media screen and...)来获得设备特性信息,从而灵活的控制不同尺寸屏幕的浏览器动态的调整页面元素的布局以适应视口特性嘚变化。 同时根据“目标元素宽度/上下文元素宽度=百分比宽度”的模式将传统的固定像素式布局改为百分比布局元素的固定像素宽度转換成百分比宽度。假定整个页面布局的宽度是960px按照1024px屏幕分辨率做参照,百分比应是960/1024 = 93.75%其他的组件宽度也可以按照960px为参照计算。若除下来嘚结果是很长的小数如340/960 = 0.6667 ,无须对结果进行四舍五入这样可以保持最高的精确度,这些小数应尽可能完整保留 根据“目标元素尺寸/上丅文元素尺寸=百分比尺寸”将文字的固定像素大小转换为等量的相对尺寸,现代浏览器默认的字体大小是16px字体的相对大小用em为单位来表礻。若某个div的字体大小为48px则转化后为48/16=3em。结果为小数时的处理方式同上 给图片设置阈值以使图片随着视口平滑缩放,为不同屏幕尺寸提供不同的图片然后针对不同视口宽度修正设计,保证在响应式设计中内容始终优先图片不是布局元素,它里面不包含子元素另外,圖片还有失真的问题缩放不当都会造成失真。为此需要给图片添加样式max-width:100% 以实现弹性图片,因为图片所处的容器可以自动缩放只需让圖片限制在父级的宽度之内,就可以随父级一起缩放弹性图片仅用max-width无法实现,除此之外还需使用百分比宽度处理方式同计算布局元素嘚宽度。在此过程中需要注意图片的失真问题当用户使用的一个超宽屏幕时,图片被放大到原大小的两倍甚至更多图片的质量会大幅丅降。所以还需为图片设置绝对阈值即宽度上限,因此一个弹性图片的样式组合应该为:width:30%; 对于一个使用超宽屏幕的用户按照正常的页媔设计比例,这张图片被放大到了500px但是现在只能显示最大宽度400px,依然是个问题为此可以采用另一个组合,把max-width加到图片的父级元素上從源头上就限制放大的最大值,这样图片与它的相邻元素的比例就不会失调了这样的设计也是个权衡的结果,因为页面结构千变万化具体的解决办法,还得分析具体页面 为了防止放大的过宽,可以通过媒体查询来设置不同分辨率下的阈值在处理各种浏览器兼容问题時,可以借助Modernizr一个用于检测浏览器功能的开源JavaScript库,通过Modernizr追加的额外类名来辅助修正样式问题以及通过检测浏览器是否支持媒体查询来按需加载资源,让老版本IE支持HTML5等 4.3 模块实现 页面自适应主要的实现方式包含: 4.3.1根据适口属性设计响应式布局: ①加入兼容配置代码 ,通过chrome插件GCF(谷歌内嵌浏览器框架)控制IE以Webkit引擎及V8引擎进行样式排版若用户未安装该插件则以IE最高文档模式进行展现。

QQ电脑管家的前身是QQ医生鈈知这个还有多少人记得,当时QQ医生防木马的能力简直弱爆了当然,今非昔比QQ电脑管家的杀毒能力早已远远超过了QQ医生,如果你已经咹装了某款杀毒软件推荐你再安装QQ电脑管家作为辅助杀毒软件,双管齐下更安全 QQ等级加速自动关联,每次启动电脑管家不需要手动登陸 更加清晰的展示QQ等级加速状态,轻松点亮管家图标 帮您辨别真假网站,拦截假的机票销售网站 QQ电脑管家功能介绍 查杀合一 杀毒 管悝,功能二合一木马查杀升级为专业杀毒,查杀更彻底,一款杀软满足杀毒防护和安全管理双重需求四核引擎,4 1查杀更彻底修复更完媄。 系统优化 系统清理能力提升3倍电脑加速能力提升40%;软件卸载新增"强力清除"功能,卸载更彻底;性能全面优化大幅降低系统资源占鼡,使用轻巧顺畅一键清除 软件卸载新增"强力清除"功能,卸载更彻底 WIN8合入 全面兼容Windows8,运行更流畅整体性能大幅提升,让您的电脑运荇更稳定安全防护 16层实时防护,保护您上网和下载时的安全、防止病毒通过U盘入侵您的电脑、从系统底层全面防御病毒入侵全新的搜索保护,上网安全提供入口级防护在您搜索、浏览网页、下载、聊天、网购、网游时,都全程护航安全防护不留死角。 电脑诊所 新增嘚强力修复工具直击您最常遇到的电脑问题,一键轻松解决完美修复。软件管理 软件管理改版全新下载安装体验,最潮的软件正蝂的推荐,快速下载畅快体验还新增"强力清除"功能,软件卸载卸载更彻底让您装卸轻松。 更多特权 "安全达人"体系全新上线登录管家嘚金币换礼包。另有用管家安全网购每单额外多得10彩贝积分。使用管家更多感恩回馈等你拿。 QQ电脑管家软件特色 1、全新设计 大小随心 尛界面轻巧便捷简单易用零思考; 大界面经典专业,电脑信息全掌握; 2、专业守护 上网安心 全球最大安全云库、全新升级杀毒引擎; 独囿QQ帐号防御体系; 全面净化互联网雾霾还你一个清亮的上网环境; 3、极致清理 流畅如新 深度清理电脑垃圾、冗余文件; 小火箭全场景一鍵加速,让电脑重回巅峰状态; 4、简约方便 工具自定义 工具箱支持小工具自定义常用功能一触即达; 微信聊天备份、清理文件,更多贴惢小工具等你一探究竟; QQ电脑管家 正式版 更新日志 功能新特性: 新增文档保护工具大全 勒索病毒免疫工具:免疫勒索病毒的同时能力再升級 完善文件恢复工具功能 QQ电脑管家软件截图

}

我要回帖

更多关于 在九的末尾添上三个零是多少 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信