




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Eclipse+JBoss+EJB3的SessionBean注释方法有时需要在Session Bean中初始化和释放一些资源。这些工作应该在SessionBean的PostConstruct和PreDestroy方法中进行。其中用 PostConstruct注释的方法在SessionBean的构造方法调用之后以后EJB容器在处理完一些其他工作后调用。用 PreDestroy注释的方法在SessionBean的对象实例被EJB容器销毁之前调用。除此之外,当有状态的SessionBean存在一定时间未被调用时,EJB容器会将该SessionBean对象钝化(Passivate),也就是保存在硬盘中
2、。当再次访问时,EJB容器会激法该SessionBean。在这两种情况下,EJB容器会分别调用 SessionBean的 PrePassivate和PostActivate方法。可以在PrePassivate方法中将sessionbean中的资源保存或释放,如打开的数据库连接等。在PostActivate方法中可以恢复相应的资源。如下面的代码所示:packageservice; importjava.util.ArrayList; importjava.util.List; importjavax.annotation.PostConstruct; importjavax.annotation
3、.PreDestroy; importjavax.annotation.Resource; importjavax.ejb.PostActivate; importjavax.ejb.PrePassivate; importjavax.ejb.SessionContext; importjavax.ejb.Stateful; Stateless publicclassShoppingCartBeanimplementsShoppingCart privateListshoppingCart=newArrayList(); Resource privateSessionContextsessio
4、nContext; publicShoppingCartBean() System.out.println(constructor:+sessionContext); PrePassivate publicvoidMyPassivate() System.out.println(passivate); PostConstruct publicvoidinit() System.out.println(sessionContext.getInvokedBusinessInterface(); PreDestroy publicvoiddestory() System.out.println(de
5、story); PostActivate publicvoidstart() System.out.println(start); Override publicvoidaddCommodity(Stringvalue) shoppingCart.add(value); Override publicListgetCommodity() returnshoppingCart; hibernate关系映射对象-关系 映射基础1.对象间的基本关系关联关系:关联关系在设计模式中是被提倡优先使用于继承关系的。关联关系就是将一个对象做为别一个对象的成员,是一种包含的关系。依赖关系:对与对象之间的方法的调
6、用,不存在包含的关系。聚集关系:这个关系比较有趣,比如人的手和身体。如果身体不存在了,手也就不存在了。是一种整个与部分的关系。一般关系:就是继承关系。上边的这四种关系是对前一天的补充。对象-关系的映射基础没有涉及这些,而是单一对象通过hibernate与数据库的映射关系。2.持久化类的属性及访问方法首先回顾一下持久化,我们知道持久化层是从业务逻辑层中分离出来的专门用于数据库操作的这些部分。持久化层中的持久化类,便是我们之前早已学习的domain类。1).持久化类的访问者有两个,一是JAVA应用程序,二是hibernate。写:Java应用程序通过setter设置持久化对象的属性,hiberna
7、te通过getter获取持久化对象的属性并生成相应的SQL语句对表格进行操作。读:hibernate通过setter设置持久化对象的属性,Java应用程序通过getter获取持久化对象的属性。2).基本数据类型和包装类型通过前天的日志,我们知道关联对象的属性与表格的字段是通过property元素节点设置的:基本的type是hibernate的类型,我们在持久化类中定义的gender属性为int。定义为int类型会有什么弊端?比如,我们有个学生成绩表。如果某个学生没有参加某一学科的考试,但我们却使用了int类型,它的默认值为0,当查看学生成绩时,他到底是考了0分还是没有考试?所以最好将持久化类中
8、的gender属性定义为Integer,它的默认值为null。查询成绩时看到的是null,那么他肯定是没参加考试哦!(注意:数据库中的对应字段应该为字符型)3).hibernate访问持久化类属性的策略Hibernate通过name指定的值访问持久化对象。Hibernate通过name值,反射持久化对象的对方法。比如,name的值为 gender。Hibernate会直接反射持久化对象的getGender和setGender方法。所以我们必须保证持久化对象中有对应的方法。这是因为property有一个access属性,它的默认值为property。如果指定access的值为field,则hib
9、ernate直接根据name值反射持久化对象的属性。此时,我们必须保证持久化对象中有对应的属性。4).在持久化类的方法中加入程序逻辑通过3)我们知道,如果access的值为property,hibernate直接反射持久化对象的方法。在这个方法中我们就可以加入程序逻辑。老徐举了一个生动的例子,比如Customer类中有firstname和lastname两个属性。但我们只想让hibernate通过 getName方法获得一个firstname+lastname的字符串,此时我们就可以在getName方法中将firstname与 lastname两个属性值合并为一个中间使用 “.”连接的字符串返
10、回。使用hibernate获取数据表中的数据时,hibernate会调用持久化对象的setName方法。我们在这个方法中将传递进来的参数使用“.”分隔,然后分别设置到firestname和lastname属性中。5).hibernate的hql语句我们在使用JDBC、DBUtil时使用的都是SQL语句。但hibernate比较特殊,它使用的是自己的一套东西叫hql语句。比如我们调用session.find方法,传递的hql语句为:from customer as c where =itcast其中的customer指向持久化对象的映射文件,name指向持久化对象的映射文件中的property元
11、素的name属性。此时需要注意access属性的值。6).设置派生属性Property元素中,有一个formula属性。它的值是一个sql表达式,hibernate将根据此表达式计算的值设置到持久化对象的属性上。比如,我们要统计订单表中的总计:Hibernate一对多单向关系1. 数据库schemaTeachers表:create table TEACHERS(ID NUMBER(10) not null,TEACHERNAME VARCHAR2(15)alter table TEACHERSadd constraint DERE primary key (ID)Students表:creat
12、e table STUDENTS(ID NUMBER(10) not null,STUDENTNAME VARCHAR2(15),TEACHER_ID NUMBER(10)alter table STUDENTSadd constraint RERE primary key (ID)alter table STUDENTSadd constraint FFF foreign key (TEACHER_ID)references TEACHERS (ID);2. Teacher.java和Student.javaTeacher.javapackage mypack;public class Te
13、acher /教师idprivate Long id;/教师名称private String teacherName;/* 缺省构造函数*/public Teacher() /* 得到教师id* return Long 教师id*/public Long getId() return id;/* 设置教师id* param id Long 教师id*/public void setId(Long id) this.id = id;/* 得到教师名称* return String 教师名称*/public String getTeacherName() return teacherName;/*
14、 设置教师名称* param teacherName String 教师名称*/public void setTeacherName(String teacherName) this.teacherName = teacherName;/* 构造函数* param teacherName String*/public Teacher(String teacherName) this.teacherName = teacherName;Student.javapackage mypack;public class Student /学生idprivate Long id;/学生名称private
15、 String studentName;/教师类private Teacher teacher;/* 缺省构造函数*/public Student() /* 得到学生id* return Long 学生id*/public Long getId() return id;/* 设置学生id* param id Long 学生id*/public void setId(Long id) this.id = id;/* 得到学生名称* return String 学生名称*/public String getStudentName() return studentName;/* 设置学生名称* pa
16、ram studentName String 学生名称*/public void setStudentName(String studentName) this.studentName = studentName;/* 得到教师对象* return Teacher 教师对象*/public Teacher getTeacher() return teacher;/* 设置教师对象* param teacher Teacher 教师对象*/public void setTeacher(Teacher teacher) this.teacher = teacher;/* 构造函数* param s
17、tring String* param teacher Teacher*/public Student(String studentName, Teacher teacher) this.studentName = studentName;this.teacher = teacher;3. perties# Oraclehibernate.connection.username jbcmhibernate.connection.password jbcmhibernate.connection.url jdbc:oracle:thin:localhost:1521:wsy4.5. 数据库操作类
18、BusinessService.javapackage mypack;import net.sf.hibernate.*;import net.sf.hibernate.cfg.Configuration;import java.util.*;public class BusinessService/session工厂类public static SessionFactory sessionFactory;/实始化session工厂statictry/建立配置类,添加Student类和Teacher类Configuration config = new Configuration();conf
19、ig.addClass(Student.class).addClass(Teacher.class);/得到sessionFactory对象sessionFactory = config.buildSessionFactory();catch(Exception e)e.printStackTrace();/* 通过学生类,查找教师类* param student Student* throws Exception* return List*/public List findTeacherByStudent(Student student) throws ExceptionSession se
20、ssion = sessionFactory.openSession();Transaction tx = null;try tx = session.beginTransaction();List orders=(List)session.find(from Student as o where o.teacher.id=+student.getId();mit();return orders;catch (Exception e) if (tx != null) tx.rollback();throw e; finally session.close();/* 查找指定id的学生类* pa
21、ram student_id long* throws Exception* return Student*/public Student findStudent(long student_id) throws ExceptionSession session = sessionFactory.openSession();Transaction tx = null;try tx = session.beginTransaction();Student student=(Student)session.load(Student.class,new Long(student_id);mit();r
22、eturn student;catch (Exception e) if (tx != null) /发生错误,回滚tx.rollback();throw e; finally /没有错误,关闭sessionsession.close();/* 级连保存Teacher对象和Student对象* throws Exception*/public void saveTeacherAndStudentWithCascade() throws ExceptionSession session = sessionFactory.openSession();Transaction tx = null;tr
23、y tx = session.beginTransaction();Teacher teacher=new Teacher(myTeacher);Student student1=new Student(student1,teacher);Student student2=new Student(student2,teacher);session.save(student1);session.save(student2);mit();catch (Exception e) if (tx != null) /发生错误,回滚tx.rollback();e.printStackTrace(); fi
24、nally / 没有错误,关闭sessionsession.close();/* 保存教师和学生对象* throws Exception*/public void saveTeacherAndStudent() throws ExceptionSession session = sessionFactory.openSession();Transaction tx = null;try tx = session.beginTransaction();Teacher teacher=new Teacher(teacher1);session.save(teacher);Student stude
25、nt1=new Student(student001,teacher);Student student2=new Student(student002,teacher);session.save(student1);session.save(student2);/提交事务mit();catch (Exception e) if (tx != null) /发生错误,回滚tx.rollback();throw e; finally / 没有错误,关闭sessionsession.close();/* 输出学生对象集合* param students List*/public void print
26、Students(List students)for (Iterator it = students.iterator(); it.hasNext();) Student student=(Student)it.next();System.out.println(OrderNumber of +student.getTeacher().getTeacherName()+ :+student.getStudentName();/* 测试方法* throws Exception*/public void test() throws ExceptionsaveTeacherAndStudent();
27、/ saveTeacherAndStudentWithCascade();/ Student student=findStudent(1);/ List students=findTeacherByStudent(student);/ printStudents(students);public static void main(String args) throws Exception new BusinessService().test();sessionFactory.close();目录结构示意:ClassesHperty/mypackTeacher.javaStudent.javaB
28、usinessService.javaJ2me中实现StringTokenizer的功能由于JavaME 中没有StringTokenizer,而我们又经常使用StringTokenizer的功能!而事实上,在rms的读取数据过程中经常会用到字符串的分割。这样没有办法!我们就只好编写一个类,代码如下:ps:编译一下,然后引入编译器!写个实例!运行可见结果!但需注意此类中方法的使用!import java.util.*;public class StringTokenizer implements Enumerationprivate void setMaxDelimChar()if(delim
29、iters = null)maxDelimChar = 0;return;char c = 0;for(int i = 0; i delimiters.length(); i+)char c1 = delimiters.charAt(i);if(c c1)c = c1;maxDelimChar = c;public StringTokenizer(String s, String s1, boolean flag)currentPosition = 0;newPosition = -1;delimsChanged = false;str = s;maxPosition = s.length()
30、;delimiters = s1;retDelims = flag;setMaxDelimChar();public StringTokenizer(String s, String s1)this(s, s1, false);public StringTokenizer(String s)this(s, tnrf, false);private int skipDelimiters(int i)if(delimiters = null)throw new NullPointerException();int j;for(j = i; !retDelims & j maxDelimChar |
31、 delimiters.indexOf(c) 0)break;return j;private int scanToken(int i)int j;for(j = i; j maxPosition; j+)char c = str.charAt(j);if(c = 0)break;if(retDelims & i = j)char c1 = str.charAt(j);if(c1 = 0)j+;return j;public boolean hasMoreTokens()newPosition = skipDelimiters(currentPosition);return newPositi
32、on maxPosition;public String nextToken()currentPosition = newPosition = maxPosition)throw new NoSuchElementException(); elseint i = currentPosition;currentPosition = scanToken(currentPosition);return str.substring(i, currentPosition);public String nextToken(String s)delimiters = s;delimsChanged = tr
33、ue;setMaxDelimChar();return nextToken();public boolean hasMoreElements()return hasMoreTokens();public Object nextElement()return nextToken();public int countTokens()int i = 0;for(int j = currentPosition; j = maxPosition)break;j = scanToken(j);i+;return i;private int currentPosition;private int newPo
34、sition;private int maxPosition;private String str;private String delimiters;private boolean retDelims;private boolean delimsChanged;private char maxDelimChar;JavaIO读取文件中文乱码问题1、JAVA读取文件,避免中文乱码。/* 读取文件内容* param filePathAndName String 读取文件路径* return String 文件中的内容*/public static String readFile(String f
35、ilePathAndName) String fileContent = ;try File f = new File(filePathAndName);if(f.isFile()&f.exists()InputStreamReader read = new InputStreamReader(new FileInputStream(f),UTF-8);BufferedReader reader=new BufferedReader(read);String line;while (line = reader.readLine() != null) fileContent += line;re
36、ad.close(); catch (Exception e) System.out.println(读取文件内容操作出错);e.printStackTrace();return fileContent;2、JAVA写入文件,避免中文乱码。/* 写文件* param filePathAndName String 写文件路径* param fileContent String 需要写入的内容*/public static void writeFile(String filePathAndName, String fileContent) try File f = new File(filePat
37、hAndName);if (!f.exists() f.createNewFile();OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),UTF-8);BufferedWriter writer=new BufferedWriter(write);/PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName);/PrintWriter writer = new PrintWriter(
38、new FileWriter(filePathAndName);writer.write(fileContent);writer.close(); catch (Exception e) System.out.println(写文件内容操作出错);e.printStackTrace();JavaMap遍历速度最优解第一种:Map map = new HashMap();Iterator iter = map.entrySet().iterator();while (iter.hasNext() Map.Entry entry = (Map.Entry) iter.next(); Object
39、key = entry.getKey();Object val = entry.getValue();效率高,以后一定要使用此种方式!第二种:Map map = new HashMap();Iterator iter = map.keySet().iterator();while (iter.hasNext() Object key = iter.next();Object val = map.get(key);效率低,以后尽量少使用!HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:public class H
40、ashMapTest public static void main(String args) .HashMap hashmap = new HashMap();for (int i = 0; i 1000; i ) .hashmap.put( i, thanks);long bs = Calendar.getInstance().getTimeInMillis();Iterator iterator = hashmap.keySet().iterator();while (iterator.hasNext() .System.out.print(hashmap.get(iterator.ne
41、xt();System.out.println();System.out.println(Calendar.getInstance().getTimeInMillis() - bs);listHashMap();public static void listHashMap() .java.util.HashMap hashmap = new java.util.HashMap();for (int i = 0; i 1000; i ) .hashmap.put( i, thanks);long bs = Calendar.getInstance().getTimeInMillis();java
42、.util.Iterator it = hashmap.entrySet().iterator();while (it.hasNext() .java.util.Map.Entry entry = (java.util.Map.Entry) it.next();/ entry.getKey() 返回与此项对应的键/ entry.getValue() 返回与此项对应的值System.out.print(entry.getValue();System.out.println();System.out.println(Calendar.getInstance().getTimeInMillis()
43、- bs);对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。注:Hashtable的遍历方法和以上的差不多!JAVASCRIPT中修改CSS1.js修改单个元素的css属性document.getElementByIdx(obj).className=”,document.getElementByIdx(obj).style.backgroundColor=”#003366 ,2.js修改整个页面的css属性 3.js和css的styl
44、e属性对照表盒子标签和属性对照CSS语法 (不区分大小写) JavaScript语法 (区分大小写)border borderborder-bottom borderBottomborder-bottom-color borderBottomColorborder-bottom-style borderBottomStyleborder-bottom-width borderBottomWidthborder-color borderColorborder-left borderLeftborder-left-color borderLeftColorborder-left-style bor
45、derLeftStyleborder-left-width borderLeftWidthborder-right borderRightborder-right-color borderRightColorborder-right-style borderRightStyleborder-right-width borderRightWidthborder-style borderStyleborder-top borderTopborder-top-color borderTopColorborder-top-style borderTopStyleborder-top-width bor
46、derTopWidthborder-width borderWidthclear clearfloat floatStylemargin marginmargin-bottom marginBottommargin-left marginLeftmargin-right marginRightmargin-top marginToppadding paddingpadding-bottom paddingBottompadding-left paddingLeftpadding-right paddingRightpadding-top paddingTop颜色和背景标签和属性对照CSS语法
47、(不区分大小写) JavaScript语法 (区分大小写)background backgroundbackground-attachment backgroundAttachmentbackground-color backgroundColorbackground-image backgroundImagebackground-position backgroundPositionbackground-repeat backgroundRepeatcolor color样式标签和属性对照CSS语法 (不区分大小写) JavaScript语法 (区分大小写)display displayli
48、st-style-type listStyleTypelist-style-image listStyleImagelist-style-position listStylePositionlist-style listStylewhite-space whiteSpace文字样式标签和属性对照CSS语法 (不区分大小写) JavaScript语法 (区分大小写)font fontfont-family fontFamilyfont-size fontSizefont-style fontStylefont-variant fontVariantfont-weight fontWeight文本
49、标签和属性对照CSS语法 (不区分大小写) JavaScript语法 (区分大小写)letter-spacing letterSpacingline-break lineBreakline-height lineHeighttext-align textAligntext-decoration textDecorationtext-indent textIndenttext-justify textJustifytext-transform textTransformvertical-align verticalAlign4.引起css改变的js事件HTML 4.0 的新特性之一是有能力使 H
50、TML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。FF: Firefox, N: Netscape, IE: Internet Explorer属性当以下情况发生时,出现此事件FFNIEonabort图像加载被中断134onblur元素失去焦点123onchange用户改变域的内容123onclick鼠标点击某个对象123ondblclick鼠标双击某个对象144onerror当加载文档或图像时发生某个错误134onfocus元素获得焦点123onkeydown某
51、个键盘的键被按下143onkeypress某个键盘的键被按下或按住143onkeyup某个键盘的键被松开143onload某个页面或图像被完成加载123onmousedown某个鼠标按键被按下144onmousemove鼠标被移动163onmouseout鼠标从某元素移开144onmouseover鼠标被移到某元素之上123onmouseup某个鼠标按键被松开144onreset重置按钮被点击134onresize窗口或框架被调整尺寸144onselect文本被选定123onsubmit提交按钮被点击123onunload用户退出页面123Example:JavaScript changes
52、CSS of linksfunction changeCss(taget) var nodes = document.getElementById(links).childNodes;/alert(nodes.length);for (var i = 0; i nodes.length; i+) /alert(nodesi.style);if (nodesi.tagName = A) nodesi.style.color = red;nodesi.style.fontSize = 15px;taget.color = blue;taget.fontSize = 18px;link1link2l
53、ink3link4link5link6Java赋值运算符与赋值表达式当需要为各种不同的变量赋值时,就必须使用赋值运算符“=”,这里的“=”不是“等于”的意思,而是“赋值”的意思,例如:a1=3;这个语句的作用是将整数3赋值给变量a1。使变量a1此时拥有的值为3。再看下面的语句:a1=a1+1;大家知道,这种表示方法在数学上是行不通的,但作为赋值语句,在以后的程序设计中是经常用到的,把a1加1后的结果再赋值给变量a1存放,若此语句执行前a1的值为3,则本语句执行后,a1的值将变为4。有时我们经常使用这样的语句:j=i=3;这种语句系统的处理方式是:首先将整数3赋值给变量i,然后将(i=3)这部分
54、内容转换成赋值表达式,这个表达式的值(运算结果)也是3,最后再将表达式(i=3)的值赋值给j,因此,此时变量j的值为3。Java关系运算符与关系表达式关系运算实际上是“比较运算”,将两个值进行比较,判断比较的结果是否符合给定的条件,Java的关系运算符都是二元运算符,由Java关系运算符组成的关系表达式的计算结果为布尔类型(即逻辑型)。在Java中,任何数据类型的数据(包括基本数据类型和复合数据类型)都可以通过“=”与“!=”来比较表达式的结果是否成立。关系运算符经常与逻辑运算符一起使用,作为程序流控制语句的判断条件。Java获得web的根路径java获取根路径有两种方式:1),在servle
55、t可以用一下方法取得:request.getRealPath(“/”) 例如:filepach = request.getRealPath(“/”)+”/upload/”;2),不从jsp,或servlet中获取,只从普通java类中获取:String path =getClass().getProtectionDomain().getCodeSource().getLocation().getPath();SAXReader() saxReader = new SAXReader();if(path.indexOf(“WEB-INF”)0)path = path.substring(0,pa
56、th.indexOf(“/WEB-INF/classes”)+16);/ /WEB-INF/classes为16位document = saxReader.read(path+filename);elsedocument = saxReader.read(getClass().getResourceAsStream(filename);weblogic tomcat 下都有效String path =getClass().getProtectionDomain().getCodeSource().getLocation().getPath();JAVA中UTC的使用由于使用Date类型在数据库
57、搜索大量数据时效率很低,公司采取使用Long型timecode进行搜索: Calendar calendar=Calendar.getInstance(); Long timecode=calendar.getTimeInMillis(); 但是由于不同机器不同系统的时区设置不同,所以同一时间产生的timecode的值也不同,导致搜索不到准确时间的数据的问题,所以采取如下方式进行解决: /将本地当前时间转换成UTC国际标准时间的毫秒形式 Date time=new Date(); Long timecode=time.UTC(time.getYear(), time.getMonth(), t
58、ime.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(); /将UTC国际标准时间的毫秒形式转换成本地的时间 Calendar calendar=Calendar.getInstance(); int offset=calendar.get(Calendar.ZONE_OFFSET); int dst=calendar.get(Calendar.DST_OFFSET); calendar.setTimeInMillis(timecode); calendar.add(Calendar.MILLISECOND, -(
59、offset+dst); Date resultDate=calendar.getTime();Java中实现浮点数的精确运算package com.lv;import java.math.BigDecimal;public class Arith public static double add(double v1,double v2)BigDecimal b1=new BigDecimal(Double.toString(v1);BigDecimal b2=new BigDecimal(Double.toString(v2);return b1.add(b2).doubleval_rue(
60、);public static double sub(double v1,double v2)BigDecimal b1=new BigDecimal(Double.toString(v1);BigDecimal b2=new BigDecimal(Double.toString(v2);return b1.subtract(b2).doubleval_rue();public static double mul(double v1,double v2)BigDecimal b1=new BigDecimal(Double.toString(v1);BigDecimal b2=new BigD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 龙骨地板简易施工方案
- 邵阳抗震支架施工方案
- 碱池裂缝施工方案方案
- 庭院苔藓施工方案
- jx防水混凝土施工方案
- 云计算安全知识培训课件
- 铸铁减速带施工方案
- 课题开题报告:基础学科研究生人才培养质量现状、影响机制及提升策略研究
- 联网报警施工方案
- 课题开题报告:湖北省民办高等教育对经济社会增长贡献水平调研
- 国内外材料牌号对照
- 建设工程施工合同培训PPT(49页)
- 巴黎卢浮宫介绍PPT模板课件
- 蒂森克虏伯电梯曳引轮钢丝绳安装布置
- LY∕T 2780-2016 松疱锈病菌检疫技术规程
- 航空服务形体训练课程标准
- 项目部安全管理组织机构网络图GDAQ20102
- 苏科版四年级劳动技术下册教学计划
- 电网公司客户资产接收管理细则
- 干部选拔任用工作报告(一报告两评议).doc
- 苏教版四年级下册数学第二单元认识多位数测试卷(含答案)
评论
0/150
提交评论