当前位置:文档之家› 介绍一下.net和Java的特点和区别

介绍一下.net和Java的特点和区别

介绍一下.net和Java的特点和区别

介绍一下.net和Java的特点和区别

java的特色,网上多得是!这里主要补充一些实际的例子!1,用java开发业务教复杂的程序,相对来说要轻松一些!因为java社区丰富!本身灵活度很高,并且是OO的语言!可以套现设计模式!2,java的多数框架都是开源的!学习java很方便!成本低!(.net 不开放源码)3,.net是一个框架,与java语言不相关!具体可以与一些开源框架比较,例如spring,webwork,hibernate等等.4,java 的执行效率没有.net高!综述,.net适合做网站,中型的!java适合做后台,企业系统,大型网站!java与.net的相同:1.都有虚拟机2.都有庞大的类库3.代码都在虚拟机保护模式下运行java与.net的不同:1.java是多次运行时都解析,而.net是在第一次运行时解析后,以后执行的就是本机代码https://www.doczj.com/doc/9c2424934.html,虚拟机代码公开,各种语言都可以基于.net虚拟机进行开发https://www.doczj.com/doc/9c2424934.html,暂时不支持跨平台,不过只要虚拟机一跨平台,你所有的程序就跨平台了.

1

[全]C#.NET:面试必备线程基础知识点

C#.NET:面试必备线程基础知识点 基础概念 线程(Thread)是操作系统能够进行运算调度的最小单位。它是进程中的实际运作单位,一个进程中可以启动多个线程,每个线程可以并行执行不同的任务。严格意义上来说,同一时间可以并行运行的线程数取决于CPU 的核数。 根据线程运行模式,可以把线程分为前台线程、后台线程和守护(Daemon)线程: ?前台线程:主程序必须等待线程执行完毕后才可退出程序。C# 中的Thread 默认为前台线程,也可以设置为后台线程。 ?后台线程:主程序执行完毕立即跟随退出,不管线程是否执行完毕。C# 的ThreadPool 管理的线程默认为后台线程。 ?守护线程:守护线程拥有自动结束自己生命周期的特点,它通常被用来执行一些后台任务。 每次开启一个新的线程都要消耗一定的内存,即使线程什么也不做,也会至少消耗1M 左右的内存。 多线程并行(Parallelism)和并发(Concurrency)的区别: ?并行:同一时刻有多条指令在多个处理器上同时执行,无论从宏观还是微观上都是同时发生的。

?并发:是指在同一时间段内,宏观上看多个指令看起来是同时执行,微观上看是多个指令进程在快速地切换执行,同一时刻可能只有一条指令被执行。 PS:以上概念来源Google 的多个搜索结果,稍加整理。 Thread、ThreadPool 和Task 对C# 开发者来说,不可不理解清楚Thread、ThreadPool 和Task 这三个概念。这也是面试频率很高的话题,在StackOverflow 可以找到有很多不错的回答,我总结整理了一下。 Thread Thread 是一个实际的操作系统级别的线程(OS 线程),有自己的栈和内核资源。Thread 允许最高程度的控制,你可以Abort、Suspend 或Resume 一个线程,你还可以监听它的状态,设置它的堆栈大小和Culture 等属性。Thread 的开销成本很高,你的每一个线程都会为它的堆栈消耗相对较多的内存,并且在线程之间的处理器上下文切换时会增加额外的CPU 开销。 ThreadPool ThreadPool(线程池)是一堆线程的包装器,由CLR 维护。你对线程池中的线程没有任何控制权,你甚至无法知道线程池什么时候开始执行你提交的任务,你只能控制线程池的大小。简单来说,线程池调用线程的机制是,它首先调用已

ASP NET基础知识

https://www.doczj.com/doc/9c2424934.html,的两种编码方式是什么,什么是代码内嵌,什么是代码后置?Web页面的父类是谁? 代码内嵌和代码后置。代码内嵌把业务逻辑编码和显示逻辑编码交叉使用。代码后置式业务逻辑代码和显示逻辑代码分开使用。system.web.ui.page 2.Web控件的AutoPostBack属性的作用是什么? 控件的值改变后是否和服务器进行交互(自动回传) 3.验证服务器控件有哪些,他们有哪些常用的属性,ControlToValidate属性的作用是什么?有哪两种服务器控件? RequiredFieldValidator:controltovalidate(验证的控件ID,共有的属性),text,ErrorMessage||||(dropdownlist控件验证时InitialValue属性是如果用户没有改变初始值,会验证失败)CompareValidator:controltocompare(要进行对比的控件),type(比较类型设置),operator(比较运算符,默认为等于),ValueToCompare(进行比较的值) RangeValidator:type(验证类型(5种)),MaximumValue(最大值),MinimumValue(最小值)(包括上下限) RegularExpressionValidator:ValidationExpression(设置要匹配的正则表达式)ValidationSummary:showMessageBox(是否显示弹出的提示消息),ShowSummary(是否显示报告内容) HTML服务器控件和web服务器控件 4.什么是Session,如何进行Session的读写操作,使用什么方法可以及时释放Session?Session 是用于保持状态的对象。Session 允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象。 通过键值对的方式进行读写;clear()和abandon()方法 5.运行https://www.doczj.com/doc/9c2424934.html,程序需要安装和配置什么,.NET Framework是不是必须要安装? 安装IIS和.NET Framework 必须安装 https://www.doczj.com/doc/9c2424934.html,配置信息分别可以存储在什么文件中? web.config文件和machine.config文件中 7.常用服务器控件,如Label、Button、TextBox、HyperLink、DropdownList的常用属性有哪些?label:text ,forecolor,visible Button:CommandName,CauseValidation, TextBox:AutopostBack,TextMode Hyperlink:NavigateUrl(单击Hyperlink时跳转的Url),Text,Target(设置NavigateUrl属性的目标框架),ImageUrl(设置Hyperlink中显示图片文件的Url) Dropdownlist:AutoPostBack 8.XMLHttpRequest对象的常用属性和方法有哪些? 方法是open()和send() 属性:ReadyState和Status,ResponseText,ResponseXML,ResponseStream https://www.doczj.com/doc/9c2424934.html,中的常用的指令有哪些?谈谈这些指令的常用属性的作用?

NET基础知识(三)

https://www.doczj.com/doc/9c2424934.html, 基础知识(三) 我们知道.NET对不同数据源,使用不同的数据提供程序,这使得我们可以更高效的访问相应的数据源。除了.NET数据提供程序外,我还得说说另外一位功臣:连接字符串(Connection Strings),它也为https://www.doczj.com/doc/9c2424934.html,在解决“不同”与“一致”的矛盾中,贡献出了非常重要的力量。 1. 什么是连接字符串? 我们已经知道,https://www.doczj.com/doc/9c2424934.html,类库为不同的外部数据源提供了一致的访问。这些数据源可以是本地的数据文件(如excel、txt、access,甚至是SQLite),也可以是远程的数据库服务器(如SQL Server、MySQL、DB2、Oracle等)。数据源似乎琳琅满目,鱼龙混杂。请试想一下,https://www.doczj.com/doc/9c2424934.html,如何能够准确而又高效的访问到不同数据源呢?在上一篇《你必须知道的https://www.doczj.com/doc/9c2424934.html,(二)了解.NET数据提供程序》中,你或许已经清楚,https://www.doczj.com/doc/9c2424934.html,已经为不同的数据源编写了不同的数据提供程序。但是这个前提是,我们得访问到正确的数据源。否则的话,只会“张冠李戴,驴头不对马嘴”。就好比,我们用SQL Server数据提供程序去处理excel数据源,结果肯定是让人“瞠目结舌”的。英雄总在最需要的时候出现,连接字符串,就是这样一组被格式化的键值对:它告诉https://www.doczj.com/doc/9c2424934.html,数据源在哪里,需要什么样的数据格式,提供什么样的访问信任级别以及其他任何包括连接的相关信息。哦!如果你这样想的话,那么以后你使用连接字符串的时候,或许就不会小觑了吧! 2.理解语法格式 其实,连接字符串虽然影响深远,但是其本身的语法却是十分的简单。连接字符串由一组元素组成,一个元素包含一个键值对,元素之间由“;”分开。语法如下: key1=value1;key2=value2;key3=value3... 典型的元素(键值对)应当包含这些信息:数据源是基于文件的还是基于网络的数据库服务器,是否需要账号密码来访问数据源,超时的限制是多少,以及其他相关的配置信息。我们知道,值(value)是根据键(key)来确定的,那么键(key)如何来确定呢?语法并没有规定键(key)是什么,这需要根据你需要连接的数据源来确定的。在下一节中,我将详细讲解几种常用的连接字符串。 3.例举几种典型连接字符串 3.1 SQL Sever连接字符串 (1)标准的安全连接 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword; 说明: Data Source:需要连接的服务器。需要注意的是,如果使用的时Express版本的SQL Server 需要在服务器名后加\SQLEXPRESS。例如,连接本地的SQL Server 2008 Express版本的数据库服务器,可以写成Data Source = (local)\SQLEXPRESS或者.\SQLEXPRESS。 Initial Catalog:默认使用的数据库名称。 User ID:数据库服务器账号。 Password:数据库服务器密码。 或者也可以写成这样: Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False; (2)可信连接

ADO NET 基础知识(一)

https://www.doczj.com/doc/9c2424934.html, 基础知识(一) 作为.NET框架最重要的组件之一,https://www.doczj.com/doc/9c2424934.html,扮演着应用程序与数据交互的重要的角色。本文将从宏观的角度来探讨https://www.doczj.com/doc/9c2424934.html,,和大家一起了解https://www.doczj.com/doc/9c2424934.html,来龙去脉以及https://www.doczj.com/doc/9c2424934.html,的主要组成部分。 1. 什么是https://www.doczj.com/doc/9c2424934.html,? 简单的讲,https://www.doczj.com/doc/9c2424934.html,是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。对于https://www.doczj.com/doc/9c2424934.html,来说,可以处理数据源是多样的。可以是应用程序唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如文本文件、XML、关系数据库等)。 具体来说,https://www.doczj.com/doc/9c2424934.html, 对Microsoft SQL Server 和XML 等数据源以及通过OLE DB 和XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用https://www.doczj.com/doc/9c2424934.html, 来连接到这些数据源,并检索、处理和更新所包含的数据。 作为.NET框架的重要组成部分,https://www.doczj.com/doc/9c2424934.html, 类封装在System.Data.dll 中,并且与System.Xml.dll 中的XML 类集成。当编译使用System.Data 命名空间的代码时,需要引用System.Data.dll 和System.Xml.dll。 2. 理清https://www.doczj.com/doc/9c2424934.html,与ADO的关系 作为一个普通的缩略词,"https://www.doczj.com/doc/9c2424934.html,”并只不是"ADO”的简单升级版本。严格的讲,https://www.doczj.com/doc/9c2424934.html,和ADO是两种截然不同的数据访问方式。 ADO的全称是Activex Data Objects,它是早期(.NET还未实施)开发人员用来访问数据的组件。随着.NET的发展,https://www.doczj.com/doc/9c2424934.html,顺其自然地以其显著的优越性逐步取代ADO。从技术层面讲,ADO使用OLE DB接口并基于微软的COM技术,而https://www.doczj.com/doc/9c2424934.html,拥有自己的https://www.doczj.com/doc/9c2424934.html, 接口并且基于微软的.NET体系架构。 虽然大多数基于.NET 的新应用程序将使用https://www.doczj.com/doc/9c2424934.html, 来编写,但.NET 程序员仍然可以通过.NET COM 互操作性服务来使用ADO。 3. 认识https://www.doczj.com/doc/9c2424934.html,最核心的组成部分 System.Data命名空间提供了不同的https://www.doczj.com/doc/9c2424934.html,类,它们既分工明确,又相互协作地提供表格数据的访问服务。该类库包含两组重要的类:一组负责处理软件内部的实际数据(DataSet),一组负责与外部数据系统通信(Data Provider)。具体架构如下图所示:

c#.net一些基本知识文档

.net文档 一、测试数据库连接的叫.udl 二、vshost.exe 即宿主进程。宿主进程是Visual Studio 2005 中的一项功能,能提高调试性能,支持部分信任调试并支持设计时表达式计算。宿主进程文件的文件名中包含vshost,并位于项目的输出文件夹中。 作用: 宿主进程创建一个应用程序域并将调试器与应用程序关联起来。执行这些任务会导致在开始调试和开始运行应用程序之间有很明显的延迟。通过在后台创建应用程序域和关联调试器,并在运行应用程序之间保存应用程序域和调试器状态,宿主进程使性能得到提高。部分信任调试及设计时表达式计算(即时窗口)。部分信任在安全页中配置 三、服务 (一)环境变量:置环境变量有两种方式:第一种是在命令提示符运行窗口中设置;第二 种是通过单击“我的电脑→属性→高级”标签的“环境变量”按钮设置。 系统变量:系统中所有用户的变量。 用户变量:当前登录用户的变量。 Path变量:值到底是用户变量中的值还是系统变量中的值,或者两者都不是呢?答案是两者都不是。path变量的值是用户变量中的值与系统变量中的值的 叠加。%PA TH% 代表的是可执行文件的搜索路径,默认为Windows 目录 (C:\windows)和系统目录(C:\windows\system32),在此两个目录中的文件或文 件夹不需要输入完整路径即可通过运行打开。如,在运行中输入system32: 打开C:\windows\system32 文件夹,输入notepad:打开 C:\windows\notepad.exe (就是记事本),输入dllcache:打开 C:\windows\system32\dllcache 文件夹,等等。只要是这两个文件夹内的文件或 文件夹,直接输入名称即可打开。你还可以把其他路径加入到%Path% 变量, 这样你就可以通过运行开输入你要打开的程序。 环境变量和环境变量的值不要含有空格,也不要用中文,切记! (二)Installuitl.exe 的用法: 先设置Installutil.exe的环境变量,即在环境变量的Path变量中加上Installutil.exe 的路径,一般该路径为C:\WINDOWS\https://www.doczj.com/doc/9c2424934.html,\Framework\v2.0.50727\; (三)服务的安装 在使用installutil.exe命令安装该服务的时候,必须首先添加了该服务的Installer1类后并在该安装类的构造函数中写上必要的代码后才可以安装 HostInstaller = new ServiceInstaller();

https://www.doczj.com/doc/9c2424934.html,知识结构框架

.NET知识结构框架 .NET介绍微软。NET战略及技术体系,。NET Framework框架类库(FCL),公共语言运行时(CLR),通用类型系统(CTS),公共语言规范(CLS),程序集(Assembly),应用程序域(Application Domain)。了解微软。net技术框架。 一、C#编程 1、C#语言入门 (1)。基本概念:类型、变量、条件判断,循环,类型转换、表达式、语句、命名空间。 (2)。面向对象编程:类,结构体,枚举,抽象类,接口,属性,继承与派生,方法覆盖,方法重载事件与委托,委托声明,异步委托,事件声明,事件订阅。C#异常处理:异常概述,处理机制。NET垃圾回收机制,清理非托管资源,强制垃圾回收、泛型、匿名方法、迭代器、部分类型、可空类型。掌握C#语法,面向对象的程序设计方法,C#的异常处理,垃圾回收,语言特性。 2、C#语言进阶算法与数据结构 ⑴。文件和数据流:IO概述、文件的基本操作、文件压缩/解压缩、文件监控、文件加密/解密、独立存储。 ⑵。多线程:多线程基本概念、创建线程、线程的生命周期及控制、线程的调度、互斥与同步、线程池。 ⑶。反射与属性:反射概述、反射的用途和应用领域、动态加载程序集、动态方法调用、利用反射实现多态性为类定制属性,为方法定制属性。 ⑷。NET程序集:程序集概述、版本控制、强命名程序集、全局程序集缓存、程序集的全局/私有部署,程序集安全、资源文件的使用。掌握算法与数据结构,C#文件流操作,多线程编程,反射原理,程序集概念及其部署方式。 3、C#高级编程 ⑴。网络编程:使用Socket,TCP,UDP进行网络通信,数据传输。 ⑵。C#与XML:DDT,XSD,C#的XML API,System.Xml命名空间,XmlReader,XmlWrieter,XML的导航,XML的XSL转换。 ⑶。序列化/反序列化:序列化概述、二进制序列化、XML序列化。 ⑷。NET远程处理(Remoting):远程对象,信道注册,服务注册,租约和生存期控制,异步远程调用,远程对象安全性,身份验证和授权。掌握网络通信编程,在C#中使用XML,多种形式的对象序列化,。NET远程处理框架。 阶段项目(MSN V1.0)开发一个类似于MSN的聊天工具。实现点对点聊天,文件传输,发送邮件,短信的功能。掌握C#中的网路编程技术,多线程技术,IO编程技术。 4、软件工程OOAD与UML面向对象分析与设计,UML语法,设计模式。Visual Studio 企业架构版的使用。掌握设计模式,掌握面向对象分析与设计的方法。 5、数据访问技术及数据库编程⑴。SQLServer2008使用与开发 数据库基本知识,基本的DDL,DCL,DML语句,索引,约束,视图,使用T-SQL 编写触发器,存储过程,游标,函数。根据SQLServer对。NET的支持,使用C#语言编写数据库对象,SQLServer内置对XML的支持,使用SQLSever报表服务(Reporting Services)。

Net史上最全的面试题及.NET基础知识

.Net 基础知识 什么是面向对象 面向对象OO(object oriented) = 面向对象的分析OOA(Object Oriented Analysis) + 面向对象的设计OOD(Design) +......OOP; 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完 成自己的功能,而不是像C 那样分成一个个函数; 现在纯正的OO 语言主要是java 和C#,C++也支持OO,C 是面向过程的。 阐述面向接口、面向对象、面向方面编程的区别面向对象不好解释,可以理解为以一切元素都是对象,在设计时以 对象为单位,考虑它的属性及 方法。设计中采用了封装、继承、抽象的手法 面向接口本身就是面向对象的,无所谓区别,只不过面向接口的好处是耦合性低 面向方面Aspect-Oriented Programming (AOP)就是大名鼎鼎的AOP。其实有点象struts里的拦截。 举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为D ata Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据 对象。 为了完成上述并发访问同一资源的功能,需要引入锁Lock 的概念,也就是说,某个时刻,当有 一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立即解锁unLocked,再 供其它访问类访问。 面向对象的思想主要包括什么?继承:子类拥有父类的所有数据和操作。 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内。多态:一个程序 中同名的不同方法共存的情况。有两种形式的多态–重载与重写。 抽象类是否可以继承实体类?抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。 当类T 只声明了私有实例构造函数时,则在T 的程序文本外部,是否可以从T 派生出新的类,是否可以直接创 建T 的任何实例。 不可以,不可以 C#中有没有静态构造函数,如果有是做什么用的? 有. 静态构造函数用于初始化类。在创建第一个实例或引用任何静态成员之前,将自动调用静态 构造函数来初始化类。静态构造函数既没有访问修饰符,也没有参数。在创建第一个实例或引用任何静 态成员之前,将自动调用静态构造函数来初始化类。无法直接调用静态构造函数。在程序中,用户无法 控制何时执行静态构造函数。静态构造函数的典型用途是:当类使用日志文件时,将使用这种构 造函数向日志文件中写入项。 什么是.net? .net 是一种平台和框架, .net 不是单纯的语言也不是单纯的工具,它是从底层平台开始构建起来 的一个整体框架

https://www.doczj.com/doc/9c2424934.html,WEB知识点

第一章 2编程方式和软件部署 ②从传输协议和速度上来看 ③从功能和程序依赖性这个角度来看 RIA模式优点:综合了传统C/S模式和传统B/S模式的优点,使之既能像C/S那样在客户端完成复杂的企业级业务管理,又能像B/S那样易于部署。缺点:必须先将插件安装到客户端,客户端才能正常运行部署在Web服务器上的RIA程序 B/S三层架构设计。(P3) 1.数据支持 2.逻辑处理 3.用户界面 2.W3C的三种标准。(P5) 结构化标准(HTML,XML,XHTML)、表现标准(CSS)和行为标准(DOM、ECMAScript)。 3.简要叙述静态网页与动态网页的区别和联系。 静态网页是指客户端从Web服务器获取网页后,该网页与Web服务器没有任何交互的HTML页。动态网页是指网页与服务器协同工作,随不同用户不同时间的操作,返回不同信息的网页。静态网页和动态网页各有特点,网站采用哪一种技术,主要取决于网站的功能需求和网站内容的多少。如果网站功能比较简单,内容更新量不是很大,采用静态网页的方式会更简单。反之,一般采用动态网页技术实现。 实际上,静态网页和动态网页之间也并不矛盾,为了使网站适应搜索引擎检索的需要,即使采用动态网站技术,也可以将网页内容转化为静态网页发布。 动态网站也可以采用动静结合的原则,把一些简单而且不经常变化的内容,用静态网页技术实现,其他采用动态网页技术实现。 第二章 4. URL(统一资源定位符)用于定位Web上的文件信息。URL有绝对和相对之分。 绝对URL就是指完整的资源地址。 具体形式为:协议名称://计算机域名/路径和文件名 相对URL指资源相对于当前页面的路径。 5. //#表示链接目标是文档中某个标记的id 更多唐诗

.net基础知识

.n e t基础知识

https://www.doczj.com/doc/9c2424934.html,/itedu/200802/104138.html 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举https://www.doczj.com/doc/9c2424934.html, 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer

4.第三方服务工具,如WebService 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、3 4...... 求第30位数是多少,用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i <= 0)

return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#中的委托是什么?事件是不是一种委托?答: 委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别

.NET知识点整理

需要整理的知识点有:.NET、SQL、JS、CSS、AJAX https://www.doczj.com/doc/9c2424934.html,框架基础----------------------------------------------- 什么是CLR? 它包括哪2个部分? 通用语言运行库。包含.NET程序的引擎和符合CLI的类库。 什么是.NET框架? 就是CLR。 什么是CLI? 通用语言基础结构,是一份语言和数据格式的规范。 什么是CTS? 通用类型系统,定义了能够在CLR上运行的语言规范。 什么是CLS? 通用语言规范,定义了所有.NET程序需要符合的最小规范集。 .NET程序开发所需的最基本环境? 一个文字编辑器和针对编码语言的编译器。 运行.NET程序需要什么? .NET Framework组件。 什么是程序集、应用程序域? 程序集:模块与资源文件的集合。 应用程序域:类似于OS的进程,提供代码运行范围、错误隔离和安全设置隔离的逻辑单元,其创建和开销较进程小。 .NET的运行机制是什么? (1)编译C#代码 (2)把代码编译成中间语言,并包装成装配件 (3)通过JIT将装配件编译成机器码 什么是程序集强签名?它有哪四个元素来唯一区别。 是一个带有公钥和数字签名的程序集。 四个元素是:文件名、版本号、语言文化和公钥。 -------------------------------------------------C# .NET语法基础--------------------------------------------- 什么是虚方法? 子类可以用override关键字来覆盖父类方法,实现该方法的另一种功能实现。 new关键字的作用?

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