




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1Java 编程Java 程序设计2Java 编程课程提纲教材: 郑莉 (第三版,清华) 内容: Chaper1-Chaper12 and additional chapters(J2EE 架构)3参考资料:/javase/tutorial/Tutorial/Java/CatalogJava.htm Fifth edition, Deitel & Deitel 耿祥义Java2实用教程(第三版)(清华) 方振宇Java Web 开发-从初学到精通(电子工业) 李刚,轻量级Java EE企业应用实战,电子工业出版社, 2011 李刚,精典Java EE 企业应用实战,电子工业出版社,2009(美
2、)Cay S.Horstmann 著,最新Java2 核心技术 卷:高级特性(V1.3)5E,机械工业出版4Java 编程 课程要求实验上机检查,要求回答相关提问方能通过 所有实验要求独立完成,一旦发现抄袭,双方 给予零分处理 合作项目要求小组成员各负其责 鼓励自行申报兴趣项目,期末总分中加分(加满100分为止) 规定时间内不能完成实验的同学,可以推后一周,此后不再检查推荐网址/v/play_tudou.asp?XwfB67ef3Ro5第一章Java 语言入门1.1 Java 的诞生1.2 Java 的特点1.3 安装SUN公司的SDK1.4 一个Java程序的开发过程1.5 一个简单的Jav
3、a应用程序的开发过程1.6 一个简单的Java小应用程序(Java Applet)6Sun的历史美国SUN(Stanford University Network)公司成立于1982年,在中国大陆的正式中文名为“太阳计算机系统(中国)有限公司”,在台湾的正式中文名为“升阳电脑公司”。创立伊始, Sun的创立者就以与众不同的洞察力率先提出“网络就是计算机”(THE NETWORK IS THE COMPUTER)的独特理念。这一理念已驱使Sun成为向为全球用户提供最具实力的硬件、软件与服务的领先供应商。 71.1 Java 的诞生Sun认为计算机技术发展的一个趋势是数字家电之间的通讯;1990年
4、,Gosling领导的开发小组(Green Project),开始致力于开发一种可移植的、跨平台的语言(能够实现网络交互的语言 ),该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码(编译后的目标代码与芯片无关)。他们的精心专研和努力促成了Java语言的诞生。8Green Project小组的主要研究目的是针对移动设备: Star7, handheld, wireless PDA.由于TV和PDA市场发展速度缓慢,影响了Java语言的应用;1993年, Internet的迅猛发展为Java的应用提供了良好的契机,并转向Internet的应用开发。91995年6月, Sun公式正式向外界
5、宣布其Java为革命性的编程语言;Java计算平台包括JVM(Java虚拟机)和Java API(Java应用编程接口) 现在,Java主要应用于动态、交互网页开发和移动通信设备应用程序开发,比如移动电话、个人电脑、跨国金融系统和卫星通讯等。IBM、Oracle、微软、Netscape、Apple、SGI等大公司纷纷与Sun Microsystems公司签订合同,授权使用java平台技术。国内诸多软件厂商,像中软,用友,金蝶,东软等均推出了以Java为基础的软件 。10Java在嵌入式系统中的应用实例Java在汽车系统中的应用网络电话:通过电话线路提供上网浏览、电子邮件以及其它定制化服务。;互
6、联网电视:广播数字电视服务信息量大、选择多;智能卡:Java卡应用环境已开始向制造商销售许可。 11Oracle Oracle是世界领先的信息管理软件开发商,因其复杂的关系数据库产品而闻名。 整个产品线包括:数据库、服务器、企业商务应用程序以及应用程序开发和决策支持工具。Oracle的关系数据库是世界第一个支持SQL语言的数据库。 Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。12Sun的问题固守高端。Sun不使用其他公司生产的零部件,而是在服务器上采用了自行设计的高端处理器和服务器软件。采用标准硬件过迟。竞争对手戴尔和惠普则通过向大型企业
7、和存活下来的网络公司销售基于X86的服务器获得了稳健的业务 。直到10年之后,Sun才开始销售基于AMD X86处理器的服务器 。重金收购 。2005年斥资40亿美元收购磁带存储系统生产厂StorageTek、以10亿美元收购开源数据库公司MySQL 。但收购后的整合工作进展得并不顺利 。132009年4月Oracle以74亿美元收购Sun 14收购后的影响Oracle获得Sun两项软件资产Java和Solaris,客户将长期受益;Oracle的很多软件都是基于java的。Oracle将确保Java技术的创新和投资,使客户和Java社区受益;收购Sun后, Oracle可以根据Solaris一
8、些特有的高端功能优化其数据库软件。加速存储、网络与计算技术的融合。 15收购前景通过Sun的Java、 Solaris两项产品,Oracle在2009年获纯利15亿,2010年增加到20亿。 16补充了解手机操作系统苹果的iPhone(iPhone 3G)Google的Android (T-Mobile G1)微软的Windows Mobile(HTC Touch Diamond)(Windows Phone)Nokia的S60第三版Symbian(N96)RIM的BlackBerry(BlackBerry Bold)。171.2 Java语言的特点1.2.1 特点面向对象机器语言、汇编语言、
9、结构化语言、面向对象的语言平台无关性编译后的字节码对应于Java虚拟机(JVM),因此可在不同平台上运行解释型不针对CPU进行编译,而是生成字节码由JVM进行解析执行多线程Java是第一个在语言级提供内置多线程支持的高级语言(C+通过调用OS的多线程功能来进行多线程程序设计)18程序和库的动态维护Java的类是运行时动态装载,程序或类发生变化时,只需替换变化的class文件,不需全部重新编译、链接内存管理Java对内存自动进行管理并进行垃圾回收安全性Java不支持指针,确保了内存安全java虚拟机采用的是“沙箱”运行模式,即把java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该
10、内存空间外的内存如果是applet程序,还不允许访问客户端机器的文件系统。 191.2.2 Java语言的优点易于学习开发程序快体系结构中立,纯Java程序不依赖于平台一处编写,各处运行201.3 安装SUN公司的SDKSun公司要实现“编写一次,到处运行”(Write once,run anywhere)的目标,必须提供相应的Java运行平台,目前Java 2 运行平台主要分为4个版本: J2SE(Java 2 Platform,Standard Edition) : Java 标准平台 ,提供SDK(JDK)开放平台,用于个人计算机上的应用程序开发,可以开发Java应用程序、低端服务器应用
11、程序、Java Applet程序J2EE(Java 2 Platform,Enterprise Edition)用于企业服务器端应用程序开发;J2ME(Java 2 Platform,Micro Edition)用于信息家电等资源有限的设备上的应用程序开发;JCP(Java Card Platform)用于智能卡上的应用程序开 发。 学习J2SE是使用其它两种平台的基础 21Java环境安装以jdk-6u21-docs.zip 为例下载地址/technetwork/java/index.html下载文件jdk-6u21-windows-i586.exe jdk-6u21-docs.zip 安装
12、直接运行jdk-6u21-windows-i586.exe 文档解开jdk-6u21-docs.zip 22系统环境变量Path 值的设置 SDK平台提供的Java编译器(javac.exe)和Java解释器(java.exe)位于Java安装目录的bin文件夹中,为了能在任何目录中使用编译器和解释器,应在系统特性中设置Path。对于Windows2000、Windows2003、Windows XP,用鼠标右键点击“我的电脑”,弹出菜单,然后选择属性,弹出“系统特性”对话框,再单击该对话框中的高级选项,然后点击按钮“环境变量”,添加如下的系统环境变量23系统环境ClassPath 值的设置
13、SDK的安装目录的jre文件夹中包含着Java应用程序运行时所需要的Java类库,这些类库被包含在jrelib目录下的压缩文件rt.jar中 Or: set path=c:jdk1.6bin24Java集成开发环境: EclipseEclipse 是IBM 投资 4000 万美元开发的基于Java的集成开发环境 (IDE)一般包括代码编辑器、编译器、调试器该程序可以独立运行,也可以和其它程序并用, 而这个IDE是允许安装第三方开发的插件来使自身的功能得到扩展和增强的(通过插件构建开发环境)安装JDK可进行Java程序的开发安装CDT可进行C/C+程序的开发安装相应的插件可进行C程序的开发25E
14、clipse安装下载地点/下载文件(需JDK的支持)eclipse-SDK-3.2-win32.zip emf-sdo-runtime-2.2.0.zipGEF-runtime-3.2.zipVE-SDK-1.2.3_jem.zip安装方式解压即可获得API帮助文档见(插件):C:Eclipseeclipsepluginsbdsc.java.doc26MyEcliplse XXX(建议使用)是对Eclipse IDE的扩展,利用它我们可以在应用程序图形开发、数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、
15、测试和发布功能,完整支HTML,struts,JSF,CSS,Javascript, SQL, Hibernate。本期使用MyEcliplse9.0, 见提供的安装软件包27Javac:Java编译器,用来将java程序编译成 Bytecode。 Java:Java解释器,执行已经转换成Bytecode的java应用程序。 Jdb:Java调试器, 用来调试java程序。 Javap:Java类分析器,反编译,将类文件还原回方法和变量。 Javadoc:文档生成器,创建HTML文件。 Appletviwer:Applet解释器, 用来解释已经转换成Bytecode的java小应用程序。Jav
16、a开发工具包括281.4 一个Java程序的开发过程29一次编写,各处运行301.5 一个简单的Java应用程序 public class Hello public static void main (String args ) System.out.println(你好,很高兴学习Java); 主类必须有一个主方法main(),作为程序运行的入口类体类方法31保存 将源文件保存到C:1000中,并命名为Hello.java。注意不可写成hello.java,因为Java语言是区分大小写的。源文件的命名规则是这样的,如果源文件中有多个类,那么只能有一个类是public类。如果有一个类是publ
17、ic类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java。如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了。 编译 当创建了Hello.java这个源文件后,就要使用Java编译器(javac.exe)对其进行编译。 C:1000javac Hello.java运行 Java应用程序必须通过Java虚拟机中的Java解释器(java.exe)来解释执行其字节码文件。Java应用程序总是从主类的main方法开始执行。因此,必须如下运行Java应用程序: C:1000java Hello32import javax.swing.JO
18、ptionPane;public class WelcomeJP public static void main(String args) JOptionPane.showMessageDialog(null, Welcome to Java!); System.exit(0); /terminal the program 33Applet小应用程序运行于支持Java的Web浏览器中浏览器的解释器把字节码转换成和机器匹配的指令,在网页中执行小程序。Applet和Application的差别:运行环境的不同,小应用程序总是放在Web浏览器的图形用户界面中Applet不能访问文件系统一个简单的Ja
19、va小应用程序(Java Applet)34当用户访问这样的网页时, Applet被下载到用户的计算机上执行,(前提是用户使用的是支持Java的网络浏览器)。由于Applet是在用户的计算机上执行的,因此它的执行速度不受网络带宽或者Modem存取速度的限制。用户可以更好地欣赏网页上Applet产生的多媒体效果。 35Applet的工作原理 含有Applet的网页的HTML文件代码中部带有 和这样一对标记,当支持Java的浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。 下例带有一个Applet的主页html An Example Homepage Welc
20、ome to TX homepage! This is an example homepage, you can see an applet in it。 36JAVA Applet:import java.awt.Graphics;import java.applet.Applet;public class MyApplet extends Appletpublic String s;public void init() s=new String(Hello World !); public void paint(Graphics g) g.drawString(s,25,25); HTML
21、:Applet举例37Applet举例Graphics类使得applet绘制直线、矩形、椭圆形、字符串等方法init()初始化方法paint() 中 (paint是applet的方法之一,在applet执行时自动被调用)g为Graphics类的对象。调用了Graphics的drawString方法绘制字符串。此方法执行的结果就是从坐标(60,40)开始绘制出字符串Hello World! 。38编译 c:1000javac Boy.java运行Java Applet由浏览器来运行,因此我们必须编写一个超文本文件 (含有applet标记的web页)通知浏览器来运行这个Java Applet。以下
22、是一个简单的html文件:Boy.html 39Boy.html Test This is a test program40使用 appletviewer appletviewer Boy.html使用browser F:Java2006Java2Exampleexample1-341实验实验目的熟悉JDK运行环境学会MyEcliplse基础的操作和调试熟悉简单Java应用程序和Applet的开放及运行获得API帮助文档将教材例1-1,例1-2分别在JDK (java, aplletviewer)和MyEclidpse下进行编译和运行421.3 基本数据类型(自学)变量与常量基本数据类型表达式
23、与运算符类型转换431.3.1 变量与常量(自学)变量一个由标识符命名的项每个变量都有类型, 例如 int 类型或 Object类型, 变量还有作用域.变量的值可以被改变. 常量 常量一旦被初始化以后就不可改变。在变量声明前加final44标识符标识符是一个名称,与内存中的某个位置(地址)相对应标识符的第一个字符必须是下列字符之一: 大写字母 (A-Z) 小写字母 (a-z) 下划线(_) 美元符号 ($) 标识符的第二个字符及后继字符必须是: 上述列表中的任意字符 数字字符 (0-9) 451.3.2 基本数据类型两种基本数据类型Primitive(基本) and reference(引用)
24、Primitive Data typelogical type: Boolean x;character type: char x;integer type: int x; byte x; short x; long x;float: float x;double: double x;Reference Data typeArray, class, interface461.3.3 标识符和关键字(自学)用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。简单地说,标识符就是一个名字。Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字
25、符。 关键字就是Java语言中已经被赋予特定意义的一些单词。不可以把这类词作为名字来用。 471.3.4 Java语言的基本数据类型(自学18)基本数据类型也称作简单数据类型。Java语言有8种简单数据类型,分别是: boolean、byte 、short、int、long、float、double、char。 这8种数据类型习惯上可分为4大类型:逻辑类型:boolean字符类型:char整数类型:byte、short、int、long浮点类型:float、double481.逻辑类型变量的定义: boolean x, tom使用关键字boolean来定义逻辑变量,定义时也可以赋给初值: bo
26、olean x=true,tom=false; 492.int 型 使用关键字int来定义int型整型变量,定义时也可以赋给初值: int x= 12,tom=-1230,height=9898,number; 对于int型变量,内存分配给4个字节(byte),一个字节由8位(bit)组成,4个字节占32位。503.byte 型 使用关键字byte 来定义byte 型整型变量,可以一次定义几个,定义时也可以赋给初值: byte m=-12,deep=28,speed=98;对于byte型变量,内存分配给1个字节,占8位。 514.short 型 使用关键字short来定义short型整型变量,
27、可以一次定义几个,定义时也可以赋给初值: short x=12,tom=1234,漂亮=9876,jiafei;对于short型变量,内存分配给2个字节,占16位。 526.Char型 变量使用关键字char来定义字符变量,可以一次定义几个,定义时也可以赋给初值:char x=A,tom=爽,jiafei;对于char型变量,内存分配给2个字节,占16位,最高为不用来表示符号 。53例子1public class Example2_1 public static void main (String args ) char chinaWord=你,japanWord=; int p1= 2032
28、8,p2= 12358; System.out.println(“汉字你在unicode表中的顺序位置:+(int)chinaWord); System.out.println(日语在unicode表中的顺序位置:+(int)japanWord); System.out.println(unicode表中第20328位置上的字符是:+(char)p1); System.out.println(unicode表中第12358位置上的字符是:+(char)p2); 547.float 型 使用关键字float来定义float型变量,可以一次定义几个,定义时也可以赋给初值: float x= 12.
29、76F, tom=1234.987f;对于float型变量,内存分配给4个字节,占32位 .558.double 型 使用关键字double来定义double型变量,可以一次定义几个,定义时也可以赋给初值: double x=12.76,tom=1234098.987;double型变量,内存分配给8个字节,占64位 569.基本数据类型的转换扩展转换byte, short, int, long, float, double char从一种整数类型到另一种整数类型,或者从float到double的转换不损失任何信息从整数类形向float或double转换,会损失精度窄化转换double, fl
30、oat, long, int, short, byte,char窄化转换可能会丢失信息57赋值转换将表达式结果的类型自动转换为制定变量的类型方法调用转换适用于方法或构造方法调用中的每一个参数强制转换将一个表达式转换为指定的类型例如 (float)5.0字符串转换只当一个操作数是String类型时,适用于+运算符的操作数 当把一种基本数据类型变量的值赋给另一种基本类型变量时,就涉及到数据转换。基本类型数据的下列类型会涉及到数据转换,不包括逻辑类型和字符类型。将这些类型按精度从“低”到“高”进行排列: byte short int long float double 当把在级别低的变量的值赋给级别
31、高的变量时,系统自动完成数据类型的转换。例如,float x=100;如果输出x的值,结果将是100.0例如 int x=50; float y; y=x;如果输出y的值,结果将是50.0。 59当把级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。显示转换的格式: (类型名)要转换的值;例如: int x=(int)23.89; long y=(long)34.98F;如果输出x,y的值将是23和34,强制转换运算可能导致精度的损失 60例子1public class Example2_2 public static void main (String args ) int c=2
32、200; long d=8000; float f; double g=123456789.123456789; c=(int)d; f=(float)g; /导致精度的损失. System.out.print(c= +c); System.out.println( d= +d); System.out.println(f= +f); System.out.println(g= +g); 61例子2:调用转换public class cascate public static void main(String args) int s=5; test(s); public static void
33、 test(short s) System.out.println(short+s); public static void test(int i) System.out.println(int+i); public static void test(float f) System.out.println(float+f); 62数组由同一类型的一连串对象或者基本数据组成,并封装在同一个标识符(数组名称)下。数组是对象运行时动态初始化1.4 数组的概念63数组元素数组中的变量被称作数组的元素元素没有名字,通过数组名字和非负整数下标值引用数组元素。每个数组都有一个由 public final 修
34、饰的成员变量:length ,即数组含有元素的个数(length可以是正数或零)641.5 数组的创建和引用数组的声明数组的创建数组元素的初始化数组的引用多维数组65数组的创建和引用1.5.1 数组的声明 声明(Declaration)声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间不能直接使用,必须经过初始化分配内存后才能使用66Type arrayName; 例如:int intArray; String stringArray; Type arrayName ; 例如:int intArray; String stringArray;1.5.1 数组的声明(续) 数组的创建和
35、引用67用关键字new构成数组的创建表达式,可以指定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量 基本类型数组的每个元素都是一个基本类型的变量;引用类型数组的每个元素都是对象的的引用 1.5.2 数组的创建 数组的创建和引用68arryName=new Typecomponets number;例如:int ai; ai=new int10;String s; s=new String3;或者可以将数组的声明和创建一并执行int ai=new int10;可以在一条声明语句中创建多个数组 String s1=new String3, s2=new String8;1.5.2 数组
36、的创建(续) 数组的创建和引用69声明数组名时,给出了数组的初始值,程序便会利用数组初始值创建数组并对它的各个元素进行初始化 inta=22, 33, 44, 55; 创建数组的时,如果没有指定初始值,数组便被赋予默认值初始值。 基本类型数值数据,默认的初始值为0;boolean类型数据,默认值为false; 引用类型元素的默认值为null。 程序也可以在数组被构造之后改变数组元素值数组的创建和引用1.5.3 数组元素的初始化 70通过下面的表达式引用数组的一个元素:arrayNameindex数组下标必须是 int , short, byte, 或者 char.下标从零开始计数. 元素的个数
37、即为数组的长度,可以通过 arryName.length引用元素下标最大值为 length 1,如果超过最大值,将会产生数组越界异常(ArrayIndexOutOfBoundsException) 数组的创建和引用1.5.4 数组的引用 71int data = new int10;data -1 非法的data 10 非法的 data 1.5 非法的 data 0 合法的 data 9 合法的 数组的创建和引用1.5.4 数组的引用(续) 72public class MyArray public static void main(String args) int myArray; /声明数
38、组 myArray=new int10; /创建数组 System.out.println(IndexttValue); for(int i=0; imyArray.length;i+) System.out.println(i+tt+myArrayi); myArray10=100; 数组的创建和引用1.5.4 数组的引用(续) /将产生数组越界异常73例子3public class Example2_3 public static void main(String args) int a=100,200,300; int b=10,11,12,13,14,15,16; System.out
39、.println(数组a:+a0+,+a1+,+a2); System.out.println(数组b:+b0+,+b1+,+b2); b=a; b0=123456; System.out.println(数组a:+a0+,+a1+,+a2); System.out.println(数组b:+b0+,+b1+,+b2); System.out.println(数组b的长度:+b.length); 数组a:100,200,300数组b:10,11,12数组a:123456,200,300数组b:123456,200,300数组b的长度:3如果要保持74例子4/ArrayTest.javaimpo
40、rt java.awt.Graphics;import java.applet.Applet;public class ArrayTest extends Applet int n =32, 27, 64, 18, 95, 14, 90, 70, 60, 37;/paint the applet public void paint(Graphics g) int yPos = 25; g.drawString(Element, 25, yPos); g.drawString(Value, 100, yPos);for(int i = 0; i n.length; i+)yPos +=15;g.
41、drawString(String.valueOf(i), 25,yPos);g.drawString(String.valueOf(ni), 100, yPos); 75如何将数组传递给调用方法两种传值方法call-by-value (基本数据类型原值的copy被传给调用方法)原值不会因调用方法对copy值的改变而改变call-by-reference (对象数组、用户定义数据类型)直接进入调用的数据,并可直接修改该数据,原值改变数组传值方法传递整个数组call-by-reference传递单个数组元素call-by-valueExample: basicpassArray.javaCall
42、-by-value定义数组:int a = new int 10;方法中调用数组元素:modifyArray(a3);方法实现:public void modifyArray(int e) . Call-by-reference定义数组:int a = new int 10;方法中调用数组:modifyArray(a);方法实现:public void modifyArray(int b ) . /a3before modify System.out.println(a3 before modify is: + a3);/pass an array element with call by v
43、alue modifyElement(a3);System.out.println(a3 after modify is: + a3); public void modifyArray(int b)for(int j=0;ja.length;j+) bj*=2; public void modifyElement(int e) e *=2; System.out.println(modified value for a3 is : + e); public static void main(String args) passArray pa=new passArray(); pa.passar
44、ray(); import java.awt.*;public class passArray int a=0,1,2,3,4,5,6; void passarray() /original value of array System.out.println(The value of the original array are:); for(int i=0;ia.length;i+) System.out.print(ai+ ); System.out.println(); /pass a entire array with call by /reference modifyArray(a)
45、; System.out.println(Effects of passing entire array call by reference:); for(int i=0;ia.length;i+) System.out.print(ai+ ); System.out.println(); The value of the original array are:0 1 2 3 4 5 6 Effects of passing entire array call by reference:0 2 4 6 8 10 12 a3 before modify is: 6modified value f
46、or a3 is: 12a3 after modify is: 677二维数组二维数组的声明 Type arrayName ; or Type arrayName; int intArray ; or int intArray; 二维数组的创建 arrayName = new Typelength1length2;注:length1表示行,length2表示列Java语言不要求多维数组的每一维长度相同 Type arrayName ; arrayName=new Typelenght1 ; /指定行数 arrayName0=new Typelength20; /0行为20列 arrayName
47、1=new Typelength30; /1行为30列int a ;a = new int2;int0=new int3;int1=new int5; 78二维数组的初始化 int a = 1,2,3,4,5,6;二维数组行、列的获取arrayName.length 获得二维数组的行数arrayNamei.length获得二维数组第i行的列数79实例:int myArray;myArray = new int3;myArray0 = new int3;int x= 0,2;int y= 0,1,2,3,4;myArray1 = x;myArray2 = y;数组实现过程80二维数组举例public class TwoArray public static void main(Str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山地户外运动训练基地企业制定与实施新质生产力战略研究报告
- 环保工程治理效果长期监测行业跨境出海战略研究报告
- 零碳排放商业中心企业制定与实施新质生产力战略研究报告
- 创意摄影艺术培训行业深度调研及发展战略咨询报告
- 微乳制剂稳定性研究企业制定与实施新质生产力战略研究报告
- 跨境电商物流园区行业深度调研及发展战略咨询报告
- 高效清洁用品企业制定与实施新质生产力战略研究报告
- 抗氧化保健胶囊企业制定与实施新质生产力战略研究报告
- 祛痘修护洁面乳企业制定与实施新质生产力战略研究报告
- 课题开题报告:新时代我国教师教学公正信念培育研究
- 力与运动的关系(专题训练)【三大题型】(原卷版)-八年级物理下册
- DB4205T70-2024 既有住宅加装电梯技术规范
- 耳穴压豆治疗便秘
- 《商场用电安全培训》课件
- 《ROHS知识培训》课件
- 《焊工培训课件》课件
- 违法建筑课件教学课件
- 重大火灾隐患判定方法知识培训
- 三人股权合同模板
- 2024版抗菌药物DDD值速查表
- 装配式部分包覆钢-混凝土组合结构技术规程
评论
0/150
提交评论