版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、桃李科技 httpSpring Boot學(xué)習(xí)目標(biāo)1.使用Spring BootSpring Boot簡(jiǎn)介Spring Boot 是Spring Framework 最激動(dòng)人心的 Spring 框架。如果說(shuō) Spring Framework 目標(biāo)是幫助開(kāi)發(fā)者寫(xiě)出好的系統(tǒng),那么 Spring Boot 的目標(biāo)就是幫助開(kāi)發(fā)者用更少的代碼,更快地寫(xiě)出好的系統(tǒng)。Spring Boot 為開(kāi)發(fā)者帶來(lái)了更好的開(kāi)發(fā)體驗(yàn),但完成代碼只是長(zhǎng)征路上的一小步,后續(xù)的運(yùn)維工作才是讓很多人真正感到無(wú)助的。Spring Boot 在運(yùn)維方面做了很多的工作,部署、度量,無(wú)一不在其涉獵范圍之內(nèi),結(jié)合Spring Cloud 框
2、架,還可以輕松實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)、服務(wù)降級(jí)等功能。相對(duì)于 SSH 和 SSM 需要做大量的配置文件,Spring Boot 就簡(jiǎn)單的多了,可以用寥寥數(shù)行代碼完成構(gòu)建一套基于 Spring 的并滿足生產(chǎn)需求的框架。并且它還自帶了不少非功能性的特性,比如安全、度量、健康檢查、內(nèi)嵌服務(wù)器和外置配置,這些都讓 Spring Boot 的流行成為了一種順理成章的結(jié)果。特點(diǎn)簡(jiǎn)化配置1.2. 下一代框架3. 入門(mén)級(jí)的微框架微服務(wù)架構(gòu):Spring CloudHello World環(huán)境javamaven1.8.0_1313.3.9第 1 頁(yè) 共 37 頁(yè)桃李科技 http創(chuàng)建項(xiàng)目第 2 頁(yè) 共 37 頁(yè)桃李科技 h
3、ttp第 3 頁(yè) 共 37 頁(yè)桃李科技 httpHello World 程序啟動(dòng)方式1. IDEA 里直接運(yùn)行 SbHlloApplication 的 main 方法2. CMD 命令打開(kāi)命令行窗口,進(jìn)入項(xiàng)目目錄路徑下運(yùn)行命令:mvn spring-boot:run3. 使用mvn 命令打包,并運(yùn)行 jar 文件mvn install進(jìn)入到 target 目錄下java 命令執(zhí)行 jar 包c(diǎn)d targetjava -jar sb_hello-0.0.1-SNAPSHOT.jar第 4 頁(yè) 共 37 頁(yè)桃李科技 http啟動(dòng)banner 的定制這個(gè)啟動(dòng)的 banner 是可以定制的。/sof
4、tware/taag/#p=display&h=3&v=3&f=Stop&t=ittaoli1. 打開(kāi):2.3. 在項(xiàng)目的 resources 目錄中,創(chuàng)建一個(gè) banner.txt 的文件4. 將網(wǎng)頁(yè)中生成的字符拷貝到 banner.txt 文件中。重啟程序,就可以看到的圖標(biāo)了。啟動(dòng)banner 的關(guān)閉第 5 頁(yè) 共 37 頁(yè)SpringBootApplication public class GirlApplication public static void main(String args) /SpringApplication.run(GirlAppl
5、ication.class, args); SpringApplication app=new SpringApplication(GirlApplication.class); app.setBannerMode(Banner.Mode.OFF);app.run(args);桃李科技 http配置文件perties 文件application.yml 文件自定義屬性配置1. 普通值的配置2. 配置文件里變量使用別的配置3. 配置多項(xiàng)到一個(gè)類(lèi)里第 6 頁(yè) 共 37 頁(yè)桃李科技 httpapplication.ymlHelloController.javaOurcl
6、assProperties.java第 7 頁(yè) 共 37 頁(yè)Component ConfigurationProperties(prefix = "ourclass") public class OurclassProperties private String phase; private String grade;public String getPhase() return phase;public void setPhase(String phase) public class HelloController Value("$room") pri
7、vate String room;Value("$ittaoli") private String ittaoli;Autowiredprivate OurclassProperties ourclassProperties;RequestMapping("/hello") public String hello()return "hi"+ittaoli+ourclassProperties.getPhase();server:port: 8081context-path: /sbhelloroom: training2 price:
8、 10000ittaoli: "room: $room,price: $price" ourclass:phase: 2grade: 1704桃李科技 http生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境配置application-dev.ymlapplication-pro.ymlapplication.yml使用java 命令運(yùn)行項(xiàng)目時(shí)可以指定配置文件第 8 頁(yè) 共 37 頁(yè)java -jar sb_hello-0.0.1-SNAPSHOT.jar -files.active=prospring:profiles: active: devserver:port: 8080 o
9、urclass:phase: 2grade: 1704 room: training2 price: 10000server:port: 8081ourclass: phase: 2grade: 1704 room: training2 price: 30000this.phase = phase;public String getGrade() return grade;public void setGrade(String grade) this.grade = grade;桃李科技 httpController 的使用基本用法相同與 spring-mvc Controller Reque
10、stMappingPathVariable獲取url 中的數(shù)據(jù)RequestParam獲取請(qǐng)求參數(shù)的值組合注解GetMapping擴(kuò)展有:RestController 直接返回 JSON 數(shù)據(jù)等同于 Controller+ResponseBodyThymeleaf 模板引擎的使用1.添加thymeleaf 依賴(lài)包2.添加配置文件application.yml 文件3.Controller 添加器4.添加模板文件第 9 頁(yè) 共 37 頁(yè)<!DOCTYPE html><html lang="" xmlns:th=""><head
11、>RequestMapping(value="/admin/main",method = RequestMethod.GET) public String main(Mmm.addAttribute("name","spring boot"); return "main"thymeleaf: cache: false<!-thymeleaf-><dependency><groupId>org.springframework.boot</groupId><a
12、rtifactId>spring-boot-starter-thymeleaf</artifactId></dependency>RequestMapping(value = "user",method = RequestMethod.GET)/GetMapping(value="user")public String user(RequestParam(value = "user",required = false,defaultValue = "admin") String use
13、r)return user;桃李科技 http5.添加靜態(tài)文件第 10 頁(yè) 共 37 頁(yè)<meta charset="UTF-8" /><title>Title</title><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, um-scale=1.0, minimum-scale=1.0" /><link rel="stylesheet"
14、 th:href="/layui/css/layui.css" /><script th:src="/js/jquery.min.js"></script><script th:src="/layui/layui.js"></script></head><body class="layui-layout-body">內(nèi)容區(qū)域<script>/JavaScript 代碼區(qū)域layui.use('element',
15、 function() var element = layui.element;element.tabAdd('demo', title: '選項(xiàng)卡的標(biāo)題',content: '<div id="1"></div>' /支持傳入 html,id: '1');$.get('/admin/main/test', function(res) $('#1').html(res);, 'html'););</script></bod
16、y></html>桃李科技 http6.thymeleaf 默認(rèn)的模式是 html5 的,對(duì) html 的要求比較嚴(yán)格,所以我們會(huì)做如下操作。參考文章:spring-data-jpa 的使用JPA(Java Persistence API)定義了一系列對(duì)象持久化的標(biāo)準(zhǔn),只定義了標(biāo)準(zhǔn),未做實(shí)現(xiàn)。Hibernate、TopLink 等是對(duì) JPA 的實(shí)現(xiàn)。第 11 頁(yè) 共 37 頁(yè)thymeleaf: cache: falsemode: LEGACYHTML5<!-thymeleaf-><dependency><groupId>net.sour
17、ceforge.nekohtml</groupId><artifactId>nekohtml</artifactId><version>1.9.22</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>桃李科技 http
18、增刪改查示例:RESTful API 設(shè)計(jì)使用spring-data-jpa,需要添加的 jar 包第 12 頁(yè) 共 37 頁(yè)<!-jpa-><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-mysql-><dependency><groupId>mysql</groupId
19、>請(qǐng)求類(lèi)型請(qǐng)求路徑功能GET/users獲取用戶數(shù)據(jù)POST/users創(chuàng)建用戶GET/users/id獲取某個(gè)用戶PUT/users/id某個(gè)用戶DELETE/users/id刪除某個(gè)用戶桃李科技 http配置application.yml增刪改查User.java 類(lèi)第 13 頁(yè) 共 37 頁(yè)Entitypublic class User IdGeneratedValue(generator = "_native") GenericGenerator(name="_native",strategy = "native") p
20、rivate Integer id;private String username; private String address;public Integer getId() return id;public void setId(Integer id) this.id = id;spring:profiles: active: devdatasource:driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql:/:3306/lub_jsp username: rootpassword: root jpa:hiber
21、nate:#create,每次程序運(yùn)行都會(huì)創(chuàng)建一個(gè)新的表,原來(lái)的數(shù)據(jù)也會(huì)消失#ddl-auto: create#update:如果沒(méi)有則創(chuàng)建,如果有則不刪除數(shù)據(jù),更新ddl-auto: updateshow-sql: true<artifactId>mysql-connector-java</artifactId></dependency>桃李科技 httpUserController.java第 14 頁(yè) 共 37 頁(yè)RestController RequestMapping("/user") public class UserCont
22、roller Autowiredprivate UserService userService; GetMapping("/users")public List<User> findAll()List<User> users=userService.gl(); return users;PostMapping("/users")public User createUser(User user)User user1=userService.createUser(user); return user1;GetMapping("
23、;/users/id")public User findOne(PathVariable("id") Integer id) return userService.findOne(id);PutMapping("/users/id")public String getUsername() return username;public void setUsername(String username) this.username = username;public String getAddress() return address;public
24、 void setAddress(String address) this.address = address;桃李科技 httpUserService.java第 15 頁(yè) 共 37 頁(yè)Servicepublic class UserService Autowiredprivate UserRepository userRepository;public List<User> gl() return userRepository.findAll();public User createUser(User user) return userRepository.save(user)
25、;public User findOne(Integer id) return userRepository.findOne(id);public User updateOne(User user) return userRepository.save(user);public void deleteOne(Integer id) userRepository.delete(id);public User updateOne(PathVariable("id") Integer id,RequestBody User user) user.setId(id);return
26、userService.updateOne(user);DeleteMapping("/users/id")public String deleteOne(PathVariable("id") Integer id)userService.deleteOne(id); return "刪除"桃李科技 httpUserRepository.javaPostMan 測(cè)試安裝:https:/article/f54ae2fc1302f31e92b849e6.html第 16 頁(yè) 共 37 頁(yè)public interface UserRepos
27、itory extends JpaRepository<User,Integer> /通過(guò)姓名public List<User> findByUsername(String userName);桃李科技 httpJpaRepository 的第 17 頁(yè) 共 37 頁(yè)桃李科技 http自定義Query可以通過(guò)自定義語(yǔ)句進(jìn)行數(shù)據(jù)的查找Specification動(dòng)態(tài)動(dòng)態(tài)拼接 sqlUserRepository.java 要繼承一個(gè)接口 JpaSpecificationExecutorUserService 中使用第 18 頁(yè) 共 37 頁(yè)public List<Use
28、r> specificationUsers(User user)List<User> all = userRepository.findAll(new Specification<User>() OverridepublicPredicatetoPredicate(Root<User>root,CriteriaQuery<?>criteriaQuery, CriteriaBuilder criteriaBuilder) Predicate conjunction = criteriaBuilder.conjunction();/是否有用戶名
29、的條件if (user.getUsername() != null && !"".equals(user.getUsername() conjunction.getExpressions().add(criteriaBuilder.like(root.get("username"),publicinterfaceUserRepositoryextendsJpaRepository<User,Integer>, JpaSpecificationExecutor<User>/通過(guò)姓名public List<Use
30、r> findByUsername(String userName);/HQLQuery("select u from User u where u.username like %?1") public List<User> findUsers(String name);/原生 SQLQuery(value = "select * from user order by rand() limit ?1",nativeQuery = true) public List<User> randomUsers(Integer limi
31、t) ;public interface UserRepository extends JpaRepository<User,Integer> /通過(guò)姓名public List<User> findByUsername(String userName);/HQLQuery("select u from User u where u.username like %?1%") public List<User> findUsers(String name);/原生 SQLQuery(value = "select * from us
32、er order by rand() limit 1",nativeQuery = true) public List<User> randomUsers(Integer limit) ;桃李科技 http遞歸取數(shù)據(jù)第 19 頁(yè) 共 37 頁(yè)RequestMapping("/comments") ResponseBodypublic List<mentTree>ments()List<mentTree>mentment(1,0); returnmentTrees;/構(gòu)建評(píng)論回復(fù)所有遞歸內(nèi)容public List<mentT
33、ree>ment(Integer articleid,Integer replyId) /取得所有的直接評(píng)論的信息,即:replyId=0List<mentTree> comments = articlment(articleid,replyId); for(mentTree comment : comments)List<mentTree> replys = new ArrayList<mentTree>(); / 實(shí)例化回復(fù)的集合comment.setChildren(replys); / 設(shè)置評(píng)論的回復(fù)集合ment(ment, replys);
34、/ 構(gòu)建評(píng)論與回復(fù)信息return comments;/* 構(gòu)建評(píng)論與回復(fù)評(píng)論的關(guān)系* param comment*/privatevoidment(IntegerarmentTreecomment, List<mentTree> replys)List<mentTree>ments=articlment(ment.getId(); / 獲取評(píng)論的所有回復(fù)"%" + user.getUsername() + "%");/是否有的條件if (user.getAge() != null) conjunction.getExpressi
35、ons().add(criteriaBuilder.gt(root.get("age"),user.getAge();return conjunction;);return all;桃李科技 httpjava 的注釋縮進(jìn)問(wèn)題進(jìn)入 Settings -> Code Style -> Java ,在右邊選擇 “Code Generation” Tab,然后找到 Comment第 20 頁(yè) 共 37 頁(yè)replys.addAll(ments); / 把所有的回復(fù)添加到評(píng)論實(shí)例化的回復(fù)集合中for(mentTree c :ments) / 遍歷回復(fù)中的回復(fù)List<
36、;mentTree> replyss = new ArrayList<mentTree>(); / 實(shí)例化回復(fù)的集合c.setChildren(replyss);ment(articleid,c, replyss); / 遞歸調(diào)用RequestMapping(value="/admin/main",method = RequestMethod.GET) public String main(Mm)m/取菜單數(shù)據(jù)List<mreturn "main"private List<faultValue="0")
37、Integer pid)List<id);for(List< mt.setChildren(childs); this.buildreturn allprivate void buildList<Tree> allss =Service.gls(pid); System.out.println(allss);mts.addAll(allss);for (Tree mtt:allss)List<Tree> childss=new ArrayList< mtt.setChildren(childss);this.buildChilds(mtt.getId(
38、),childss);桃李科技 httpCode 那塊,把Line comment at first column Block comment at first column兩個(gè)前面的復(fù)選框去掉就可以了。事務(wù)管理表單驗(yàn)證對(duì)象參數(shù)第 21 頁(yè) 共 37 頁(yè)/* 添加用戶* return*/ PostMapping(value="/users") public User userAdd(User user)user.setAge(user.getAge(); user.setUsername(user.getUsername(); userRepository.save(use
39、r);public class UserService Autowiredprivate UserRepository userRepository;Transactionalpublic void insertTwoUser() User user1=new User(); user1.setAge(19);user1.setUsername("zhangsan"); userRepository.save(user1);User user2=new User(); user2.setAge(19); user2.setUsername("zhangsan&qu
40、ot;); userRepository.save(user2);桃李科技 http驗(yàn)證第 22 頁(yè) 共 37 頁(yè)限制說(shuō)明Null限制只能為 nullNotNull限制必須不為 nullAssertFalse限制必須為 falseAssertTrue限制必須為 trueDecimalMax(value)限制必須為一個(gè)不大于指定值的數(shù)字DecimalMin(value)限制必須為一個(gè)不小于指定值的數(shù)字Digits(integer,fraction)限制必須為一個(gè)小數(shù),且整數(shù)部分的位數(shù)不能超過(guò) integer,小數(shù)部分的位數(shù)不能超過(guò) fractionFuture限制必須是一個(gè)將來(lái)的日期Max(va
41、lue)限制必須為一個(gè)不大于指定值的數(shù)字Min(value)限制必須為一個(gè)不小于指定值的數(shù)字Past限制必須是一個(gè)過(guò)去的日期Pattern(value)限制必須符合指定的正則表達(dá)式Size(max,min)限制字符長(zhǎng)度必須在 min 到max 之間Past驗(yàn)證注解的元素值(日期類(lèi)型)比當(dāng)前時(shí)間早NotEmpty驗(yàn)證注解的元素值不為 null 且不為空(字符串長(zhǎng)度不為 0、集合大小不為 0)NotBlank驗(yàn)證注解的元素值不為空(不為 null、去除首位空格后長(zhǎng)度為 0),不同于NotEmpty,NotBlank 只應(yīng)用于字符串且在比較時(shí)會(huì)去除字符串的空格return user;桃李科技 htt
42、pUser.java 對(duì)要驗(yàn)證的屬性進(jìn)行注解新增數(shù)據(jù)時(shí)加入驗(yàn)證AOP 處理面向切面編程思想添加jar 包Aspect 的類(lèi)第 23 頁(yè) 共 37 頁(yè)Aspect Componentpublic class HttpAspect /在器執(zhí)行前被掉。UserController 的所有方法,如要指定方法,將* 號(hào)換成對(duì)應(yīng)方法名Before("execution(public * cn.lub.UserController.*(.)")<dependency><groupId>org.springframework.boot</groupId>
43、<artifactId>spring-boot-starter-aop</artifactId></dependency>/* 添加用戶* return*/ PostMapping(value="/users")public User userAdd(Valid User user, BindingResult bindingResult) if(bindingResult.hasErrors()System.out.println(bindingResult.getFieldError().getDefaultMessage(); re
44、turn null;user.setAge(user.getAge(); user.setUsername(user.getUsername(); userRepository.save(user);return user;Min(value=18,message = "18 歲未成年少年入內(nèi)") private Integer age;限制說(shuō)明驗(yàn)證注解的元素值是,也可以通過(guò)正則表達(dá)式和 flag 指定自定義的格式桃李科技 http上面的Before 和After 里的execution 都是一樣的,我們應(yīng)該避免重復(fù)的代碼定義切面,并且使用 logger第 24 頁(yè) 共 3
45、7 頁(yè)Aspect Componentpublic class HttpAspect /使用日志功能:spring 自帶的 sl4jprivate final static Logger logger= LoggerFactory.getLogger(HttpAspect.class);/在器執(zhí)行前被掉。UserController 的所有方法,如要指定方法,將* 號(hào)換成對(duì)應(yīng)方法名Pointcut("execution(public * cn.lub.UserController.*(.)") public void log()Before("log()"
46、;) public void doBefore()/System.out.println("被了-前"); ("被了-前");After("log()") public void doAfter()/System.out.println("被了-后"); ("被了-后");public void doBefore() System.out.println("被了");After("execution(public * cn
47、.lub.UserController.*(.)") public void doAfter()System.out.println("被了");桃李科技 http切面獲取參數(shù)第 25 頁(yè) 共 37 頁(yè)Aspect Componentpublic class HttpAspect /使用日志功能:spring 自帶的 sl4jprivate final static Logger logger= LoggerFactory.getLogger(HttpAspect.class);/在器執(zhí)行前被掉。UserController 的所有方法,如要指定號(hào)換成對(duì)應(yīng)方Poi
48、ntcut("execu public void log()Before("log()")public void doBefore(JoinPoint joinPoi/System.out.println("被("被ServletRequestAttributes=(ServletRequestAttributes)ReqHttpServletRequest request = attributes.getRequest();/("url=",request.getReque
49、stURL();/("method=",request.getMethod();/("ip=",request.getRemoteAddr();/類(lèi)-方法 需要參數(shù) JoinP("class-method",joinPoint.getSignature().getDeclaringTypeName()+"-"+joinPoint.getS ignature().getName();/參數(shù)("ar
50、gs=",joinPoint.getArgs();After("log()") public void doAfter()/System.out.println("被了-后"); ("被了-后");/返回器執(zhí)行后返回的內(nèi)容AfterReturning(pointcut = "log()",returning = "o")桃李科技 http結(jié)果:統(tǒng)一異常處理統(tǒng)一異常處理,可以放便我們的代碼維護(hù)。提高編碼效率。下圖是優(yōu)化后的一個(gè)整體結(jié)構(gòu)。第 26 頁(yè) 共 37 頁(yè)pu
51、blic void doAfterReturning(Object o) ("response=",o);桃李科技 http統(tǒng)一封裝返回值結(jié)果Result.java 封裝了返回給前臺(tái)的固定格式。這樣無(wú)論是否有錯(cuò),前臺(tái)接受到的數(shù)據(jù)都是統(tǒng)一的數(shù)據(jù)格式。方便前端開(kāi)發(fā)編碼。第 27 頁(yè) 共 37 頁(yè)public class Result<T> private Integer code; private String msg; private T data;public Integer getCode() return code;public voi
52、d setCode(Integer code) 桃李科技 http在 UserService 里模擬拋出不同值的異常UserController 調(diào)用 UserService 的代碼UserService 中封裝的UserException 類(lèi)。由于 Exception 只能傳遞錯(cuò)誤消息一個(gè)參數(shù)類(lèi)型。所以,封裝了的異常類(lèi),擴(kuò)展了 code 字段。注意:繼承的是 RuntimeException,只有繼承了這個(gè)類(lèi),拋異常后才會(huì)回滾。第 28 頁(yè) 共 37 頁(yè)GetMapping(value = "users/getAge/id")public void getAge(Path
53、Variable("id") Integer id) throws Exception userService.getAge(id);public void getAge(Integer id)User user=userRepository.findOne(id); Integer age = user.getAge(); if(age<10)/返回你還在上小學(xué)吧throw new UserException(UserResultEnum.PRIMARY_SCHOOL);else if(age<18)/返回你可能還在上初中throw new UserExcep
54、tion(UserResultEnum.MIDDLE_SCHOOL);/如果大于 18.this.code = code;public String getMsg() return msg;public void setMsg(String msg) this.msg = msg;public T getData() return data;public void setData(T data) this.data = data;桃李科技 http這里面還是用了一個(gè) UserResultEnum 的枚舉,統(tǒng)一了不同錯(cuò)誤下的狀態(tài)碼和錯(cuò)誤消息最后是捕獲異常的類(lèi) ExceptionHandle,注意
55、注解關(guān)鍵字第 29 頁(yè) 共 37 頁(yè)public enum UserResultEnum UNKNOWN_ERROR(-1,"未知錯(cuò)誤"), SUCESS(0,""),PRIMARY_SCHOOL(100,"你可能還在上小學(xué)"), MIDDLE_SCHOOL(101,"你可能還在上初中"),;private Integer code; private String msg;UserResultEnum(Integer code, String msg) this.code = code;this.msg = msg
56、;public Integer getCode() return code;public String getMsg() return msg;public class UserException extends RuntimeException private Integer code;public UserException(UserResultEnum userResultEnum) super(userResultEnum.getMsg();this.code = userResultEnum.getCode();public Integer getCode() return code
57、;public void setCode(Integer code) this.code = code;桃李科技 http單元測(cè)試測(cè)試Service右擊 Service 中的某個(gè)方法,Go To -> Test ,創(chuàng)建新的 Test,選擇要測(cè)試的方法。該加的注解不能少。第 30 頁(yè) 共 37 頁(yè)RunWith(SpringRunner.class)/表示要在測(cè)試環(huán)境下運(yùn)行,底層用的是jUnit SpringBootTest/表示將啟動(dòng)整個(gè) spring boot 工程public class UserServiceTest Autowiredprivate UserService userService; Testpublic void findOne() throws Exception Integer id=1;User user=userService.findOne(id); System.out.println(user);Assert.assertEquals(new Integer(12),user.getAge();Control
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版旅行社在線旅游平臺(tái)接入服務(wù)合同4篇
- 二零二五版房地產(chǎn)測(cè)繪與土地整治項(xiàng)目合作合同3篇
- 二零二五版金融機(jī)構(gòu)客戶信息保密服務(wù)合同范本6篇
- 2025年度煤廠信息化管理系統(tǒng)采購(gòu)合同4篇
- 二零二五版區(qū)塊鏈技術(shù)應(yīng)用開(kāi)發(fā)合同3篇
- 2025版智能城市建設(shè)項(xiàng)目合伙人投資合同范本4篇
- 二零二五版農(nóng)產(chǎn)品倉(cāng)儲(chǔ)保鮮技術(shù)合作合同2篇
- 2025年消防排煙系統(tǒng)產(chǎn)品安全性能檢測(cè)與評(píng)估合同3篇
- 二零二五年智能家居設(shè)備研發(fā)與銷(xiāo)售合作協(xié)議3篇
- 2025年度旅游包車(chē)應(yīng)急預(yù)案合同4篇
- 2025年下半年貴州高速公路集團(tuán)限公司統(tǒng)一公開(kāi)招聘119人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 資產(chǎn)評(píng)估服務(wù)房屋征收項(xiàng)目測(cè)繪實(shí)施方案
- 2025年經(jīng)濟(jì)形勢(shì)會(huì)議講話報(bào)告
- 北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)第五單元《周長(zhǎng)》測(cè)試卷(含答案)
- 國(guó)家安全責(zé)任制落實(shí)情況報(bào)告3篇
- 2024年度順豐快遞冷鏈物流服務(wù)合同3篇
- 六年級(jí)下冊(cè)【默寫(xiě)表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓(xùn)
- 電工基礎(chǔ)知識(shí)培訓(xùn)課程
- 鐵路基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
- 金融AI:顛覆與重塑-深化理解AI在金融行業(yè)的實(shí)踐與挑戰(zhàn)
評(píng)論
0/150
提交評(píng)論