版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目九:創(chuàng)建SpringBoot項目浪潮:2020年7月作者版本時間審核備注王健2.02020-7-13主要內容:創(chuàng)建SpringBoot項目。通過多種不同的形式創(chuàng)建SpringBoot項目。配置SpringBoot的日志。配置logback日志系統。將SpringBoot項目發(fā)布到Linux服務器上去。安裝JDK。配置JDK,并發(fā)布SpringBoot項目到Linux上去。通過nohug啟動springboot項目。一、創(chuàng)建SpringBoot項目的方法創(chuàng)建SpringBoot項目的方法有很多種,目前比較流行的為兩大種:在線創(chuàng)建在線通過start.spring.io創(chuàng)建SpringBoot項目,在創(chuàng)建完成以后,再導入到IDE中開發(fā)。使用IDE創(chuàng)建在IDE中直接使用SpringInit直接創(chuàng)建SpringBoot項目。IDE可以是STS也可以是IDEA。集成開發(fā)工具介紹開發(fā)SpringBoot項目,建議使用STS或IDEA。在使用之前,請給STS或IDEA安裝Lombok插件。安裝maven,并配置環(huán)境變量。(.m2/settings.xml配置細節(jié))Maven/gradle如果要開發(fā)任何java項目,Java項目依賴很多的其他的第三方的庫。第三方的庫,你可以手工的放到項目中。不要。Maven-在STS、IDEA里面,都自帶了。問題:如果使用自帶的,將會所有依賴下載到${user}/.m2/repository->30G+建議大家還要是自己安裝一個maven:1:下載M2:解壓3:配本地倉庫到其他的目錄配置:M2_HOME=安裝目錄PATH=%M2_HOME%\bin配置倉庫:二、創(chuàng)建Springboot項目1、在線創(chuàng)建步1、打開start.spring.io輸入項目名稱,選擇版本:(對每一項目做細節(jié)說明)1:maven為所使用的依賴工具。2:Java為開發(fā)語言。3:2.3.1為目前Release版本。4:Group為項目的包名。5:Artifact為項目的名稱。然后添加依賴:對每一個依賴做說明:1:Lombok用于簡化開發(fā)。2:bootdev為開發(fā)選項。3:Config用于讀取配置時的選項。4:Web網絡開發(fā)組件。5:Thymeleaf模板。6:Actuator健康檢查。7:JSR303驗證。步2、下載并導入導入到IDE中去,如STS/Eclipse中去:選擇導入的項目類型:選擇已經解壓好的項目:等待更新完成:可選的添加aliyunmaven倉庫:....</build> <repositories> <repository> <id>central</id> <url>/repository/central</url> </repository> <repository> <id>public</id> <url>/repository/public</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>/repository/central</url> </pluginRepository> <pluginRepository> <id>public</id> <url>/repository/public</url> </pluginRepository> </pluginRepositories></project>步3、配置配置的內容如下:server.port=8888=boot-demoserver.servlet.encoding.charset=UTF-8spring.messages.encoding=UTF-8spring.thymeleaf.cache=falsespring.thymeleaf.encoding=UTF-8spring.jackson.time-zone=GMT+8spring.jackson.date-format=yyyy-MM-ddHH:mm:sslogging.level.root==logs/${}.log具體含義說明.略。步4、開發(fā)開發(fā)index.html<!DOCTYPEhtml><htmlxmlns:th=""><head><metacharset="UTF-8"><title>Inserttitlehere</title></head><body> <p>Hello這是主頁</p></body></html>配置index.html配置index.html如下:packagecn.inspur.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.ViewControllerRegistry;importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;@ConfigurationpublicclassWebMvcConfigimplementsWebMvcConfigurer{ @Override publicvoidaddViewControllers(ViewControllerRegistryregistry){ registry.addViewController("index").setViewName("index"); registry.addViewController("/").setViewName("index"); registry.addViewController("").setViewName("index"); }}啟動:訪問測試:停止項目。開發(fā)HelloControllerpackagecn.inspur.api.hello.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importlombok.extern.slf4j.Slf4j;@RequestMapping("hello")@Controller@Slf4jpublicclassHelloController{ @GetMapping("hi") publicStringhi(){ ("hello..Hi.."); return"hello/hi"; }}添加超連接:<!DOCTYPEhtml><htmlxmlns:th=""><head><metacharset="UTF-8"><title>Inserttitlehere</title></head><body> <p>Hello這是主頁</p> <ahref="hello/hi">Hello/hi</a></body></html>添加hi.html頁面:<!DOCTYPEhtml><htmlxmlns:th=""><head><metacharset="UTF-8"><title>Inserttitlehere</title></head><body> <p>這是hi頁面</p></body></html>啟動項目,并測試訪問:顯示數據packagecn.inspur.api.hello.vo;importlombok.Getter;importlombok.Setter;@Getter@SetterpublicclassHello{ privateStringname; privateintage; privateStringaddress; publicHello(){ } publicHello(Stringname,intage,Stringaddress){ =name; this.age=age; this.address=address; }}packagecn.inspur.api.hello.service;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;importorg.springframework.stereotype.Service;importcn.inspur.api.hello.vo.Hello;@ServicepublicclassHelloService{ publicList<Hello>query(){ Randomr=newRandom(); List<Hello>list=newArrayList<>(); inta=r.nextInt(20); for(inti=0;i<a;i++){ list.add(newHello("Jack"+i,i*4,"北京"+i)); } returnlist; }}packagecn.inspur.api.hello.controller;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importcn.inspur.api.hello.service.HelloService;importcn.inspur.api.hello.vo.Hello;importlombok.extern.slf4j.Slf4j;@RequestMapping("hello")@Controller@Slf4jpublicclassHelloController{ @Autowired privateHelloServicehelloService; @GetMapping("hi") publicStringhi(Modelmodel){ ("hello..Hi.."); List<Hello>list=helloService.query(); model.addAttribute("datas",list); return"hello/hi"; }}運行結果:步5、添加bootstrap樣式下載樣式文件添加靜態(tài)文件配置packagecn.inspur.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;importorg.springframework.web.servlet.config.annotation.ViewControllerRegistry;importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;@ConfigurationpublicclassWebMvcConfigimplementsWebMvcConfigurer{ @Override publicvoidaddViewControllers(ViewControllerRegistryregistry){ registry.addViewController("index").setViewName("index"); registry.addViewController("/").setViewName("index"); registry.addViewController("").setViewName("index"); } @OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");}}在頁面上引用<!DOCTYPEhtml><htmlxmlns:th=""><head><metacharset="UTF-8"><title>Inserttitlehere</title><linkrel="stylesheet"type="text/css" th:href="@{/static/bootstrap/css/bootstrap.min.css}"><scripttype="text/javascript"th:src="@{/static/jquery.min.js}"></script></head><body> <divclass="container"> <divclass="row"> <divclass="col-12"> <p>Hello-這是主頁</p> <ahref="hello/hi">Hello/hi</a> </div> </div> </div></body></html>查看結果步6、使用vue/前后分離技術展示數據<!DOCTYPEhtml><htmlxmlns:th=""><head><metacharset="UTF-8"><title>Inserttitlehere</title><linkrel="stylesheet"type="text/css" th:href="@{/static/bootstrap/css/bootstrap.min.css}"><scripttype="text/javascript"th:src="@{/static/jquery.min.js}"></script><scripttype="text/javascript"th:src="@{/static/layer/layer.js}"></script><scripttype="text/javascript"th:src="@{/static/vue.min.js}"></script></head><body> <divclass="container"id="app"> <h2>{{message}}</h2> <divclass="row"> <divclass="col-12"> <button@click="add"class="btnbtn-primarybtn-sm">增加</button> <buttontype="button"class="btnbtn-infobtn-sm" @click="refresh($event)">刷新</button> </div> <divclass="col-12"> <tableclass="tabletable-borded"> <thead> <tr> <th>序號</th> <th>Name</th> <th>age</th> <th>address</th> </tr> </thead> <tbodyv-if="list.length>0"> <trv-for="(h,index)inlist"> <td>{{index+1}}</td> <td>{{}}</td> <td>{{h.age}}</td> <td>{{h.address}}</td> </tr> </tbody> <tbodyv-else> <trstyle="text-align:center"> <tdcolspan="4">無數據</td> </tr> </tbody> </table> </div> </div> <divid="addDiv"style="display:none;width:400px;"> <divclass="container"> Name:<inputtype="text"name="name"v-model=""><br> Age:<inputtype="text"name="age"v-model="hello.age"><br> Address:<inputtype="text"name="address"v-model="hello.address"><br> <inputtype="button"value="保存"@click="save"> </div> </div> </div></body><scripttype="text/javascript"> $(function(){ varlayerIndex=-1; varapp=newVue({ el:"#app", data:{ message:'使用VUE顯示數據', list:[], hello:{ name:"", age:0, address:"" } }, methods:{ refresh:function(e){ load(); }, add:function(){ layerIndex=layer.open({ type:1, title:"增加", content:$('#addDiv') }); }, save:function(){ varparam=$.param(app.hello); $.post("/hello/save",param,function(resp){ app.list.push(Object.assign({},resp.data)); alert(layerIndex); layer.close(layerIndex); }); } } }); functionload(){ $.post("/hello/hi2",function(data){ app.list=data.data; },"json"); } load(); });</script></html>使用STS創(chuàng)建SpringBoot項目選擇創(chuàng)建SpringStarterProject:輸入項目的GAV:選擇依賴的版本:然后就可以和上一個項目一樣,進入開發(fā)了:使用IDEA創(chuàng)建SpringBoot項目選擇創(chuàng)建Spring項目:輸入項目的GAV:選擇項目的依賴:發(fā)布項目在項目開發(fā)完成以后,就需要將項目發(fā)布到服務器上去。一般情況下,選擇的服務器為Linux.以此,我選擇CentOS7做為服務器。可選的Linux服務器為:1:本地安裝虛擬機。2:購買華為云、阿里云等做為服務器。以下我以本地虛擬機為環(huán)境演示。步1、啟動Linux配置靜態(tài)Ip地址。建議創(chuàng)建一個非root用戶。關閉防火墻。步2、安裝JDK安裝JDk配置環(huán)境變量。步3、打包項目使用package命令,打包SpringBoot項目,將會得到一個jar包。步4、上傳jar包并啟動jar包上傳Jar包,并使得nohupjava-jar...啟動這個java程序。步5、訪問并測試(略)三、項目日志1、日志簡介在項目的開發(fā)中,日志是必不可少的一個記錄事件的組件,所以也會相應的在項目中實現和構建我們所需要的日志框架。而市面上常見的日志框架有很多,比如:JCL、SLF4J、Jboss-logging、jUL、log4j、log4j2、logback等等,我們該如何選擇呢?通常情況下,日志是由一個抽象層+實現層的組合來搭建的。日志-抽象層日志-實現層JCL、SLF4J、jboss-logging@Slf4jjul、log4j、log4j2、logback而SpringBoot機智的選擇了SLF4J+Logback的組合,這個組合是當下比較合適的一組(log4j2其實很厲害,但是太厲害導致我駕馭不了~)以下圖示,說明了所有springBoot項目,都依賴的spring-boot-starter-logging,而spring-boot-starter-logging又依賴于logback和log4j:日志的級別日志的級別分為:debug,info,warn,error,fatal。另有兩個開關:on,off。日志級別是向上兼容的。即如果設置了日志的級別為:info,則只會輸出info及以上的日志信息。debug的日志信息,將不會再輸出。測試日志:packagecn.inspur;importmons.logging.Log;importmons.logging.LogFactory;importorg.junit.jupiter.api.Test;importorg.springframework.boot.test.context.SpringBootTest;@SpringBootTestpublicclassDemo01{ Loglog=LogFactory.getLog(Demo01.class); @Test publicvoidtest1(){ log.debug("Debug...."); ("Info..."); log.warn("Warning..."); log.error("Error..."); log.fatal("Fatal..."); }}可以在perties中配置日志的級別:如,我們將日志的級別設置為info:logging.level.root=INFO則,debug級別的日志將不會輸出:以下是輸出的日志,你不會發(fā)出有debug的信息輸出:2020-07-1915:28:49.740INFO13068---[main]cn.inspur.Demo01:Info...2020-07-1915:28:49.740WARN13068---[main]cn.inspur.Demo01:Warning...2020-07-1915:28:49.740ERROR13068---[main]cn.inspur.Demo01:Error...2020-07-1915:28:49.740ERROR13068---[main]cn.inspur.Demo01:Fatal...設置不同的類,輸出不同的日志級別也可以設置不同的包,輸出不同的日志級別。logging.level.root=INFO#這兒是設置根日志級別.inspur=DEBUG#這兒是設置cn.inspur包中的類,輸出的日志級別設置日志輸出的文件#日志的路徑=./logs/ttt-2.log5、設置日志的格式一般情況下,不需要設置日志的格式。默認SpringBoot已經為我們設置好的常用的格式。如果不符合要求,可以自己來設置格式:#輸出到控制臺的格式logging.pattern.console=%d{yyyy-MM-dd}[%thread]%-5level%logger{50}-%msg%n#輸出到文件中的格式logging.pattern.file=%d{yyyy-MM-ddHH:mm:ss}[%thread]%-5level%logger{50}-%msg%n默認的格式為:Appenderpatternforoutputtotheconsole.SupportedonlywiththedefaultLogbacksetup.Default:%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-ddHH:mm:ss.SSS}}){faint}%clr(${LOG_LEVEL_PATTERN:-%5p})%clr(${PID:-}){magenta}%clr(---){faint}%clr([%15.15t]){faint}%clr(%-40.40logger{39}){cyan}%clr(:){faint}%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}6、使用自己的日志配置文件如果不想在perites中配置日志信息,也可以創(chuàng)建自己的配置文件。如果想用自己的log配置,不用系統默認的,那么只需要按照官方要求,將該配置文件放在所需類的目錄下即可,也可以在resource中配置全局的。步1、刪除在perties文件中的關于logging的配置:步2、在classpath下添加logback.xml文件以下添加logback.xml文件:內容如下:<?xmlversion="1.0"encoding="UTF-8"?><configurationdebug="false"scan="false" scanPeriod="30second"> <!--按日期區(qū)分滾動日志--> <appendername="appender1" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>D:/logs/logback.log</file> <encoder> <pattern>%d%level%class[%thread]%m%n</pattern> </encoder> <filterclass="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <appendername="appender2" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d%level%class[%thread]%m%n</pattern> </encoder> <filterclass="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> </appender> <appendername="ASYNC-INFO"class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>512</queueSize> <appender-refref="appender1"></appender-ref> <includeCallerData>true</includeCallerData> </appender> <rootlevel="debug"> <!--同步日志--> <appender-refref="appender1"></appender-ref> <appender-refref="appender2"></appender-ref> <!--異步日志--> <!--<appender-refref="ASYNC-INFO"></appender-ref>--> </root></configuration>上面的配置中,分別配置了輸出數據到文件和數據數據到控制臺。查看日志輸出文件和控制臺輸出即可。7、分別輸出日志到不同的文件中在logback或是log4j中,都可以控制不同包的日志,輸出到不同的文件中。在logback中,可以通過添加<logger../>的方式控制不同包中的類輸出日志到不同的文件中:以下是完整的配置文件,其中有底色的為新添加的內容:<?xmlversion="1.0"encoding="UTF-8"?><configurationdebug="false"scan="false" scanPeriod="30second"> <!--按日期區(qū)分滾動日志--> <appendername="appender1" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>D:/logs/logback.log</file> <encoder> <pattern>%d%level%class[%thread]%m%n</pattern> </encoder> <filterclass="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <appendername="appender3" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>D:/logs/logback1.log</file> <encoder> <pattern>%d%level%class[%thread]%m%n</pattern> </encoder> <filterclass="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logback1.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <appendername="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d%level%class[%thread]%m%n</pattern> </encoder> <filterclass="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> </appender> <appendername="ASYNC-INFO"class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>512</queueSize> <appender-refref="appender1"></appender-ref> <includeCallerData>true</includeCallerData> </appender> <rootlevel="debug"> <!--同步日志--> <appender-refref="appender1"></appender-ref> <appender-refref="console"></appender-ref> <!--異步日志--> <!--<appender-refref="ASYNC-INFO"></appender-ref>--> </root> <!--指定不同的包輸出日志到不同的文件中additivity用于控制是否重復輸出--> <loggername="cn.inspur"level="debug"additivity=false> <appender-refref="appender3"></appender-ref> <appender-refref="console"></appender-ref> </logger> </configuration>三、SpringCloud簡介SpringCloud用于創(chuàng)建微服務分布式項目,SpringCloud的基礎是SpringBoot。在分布式的系統中,日志分布在多臺不同的主機上,所以有必要將所有主機上的日志收集到一個日志中心如ES或保存到同一個MySql數據庫中。以下我們將創(chuàng)建一個SpringBoot項目并注冊到SpringCloud注冊中心。這兒的注冊中心,我們使用Eureka(2018年已經閉源,但目前仍然在不斷的發(fā)展)。創(chuàng)建注冊中心項目步1、創(chuàng)建EurekaServer輸入項目的名稱:選擇依賴,只選擇Eureka-Server即可:步2、添加EurekaServer注解packagecn.inspur;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importflix.eureka.server.EnableEurekaServer;@EnableEurekaServer@SpringBootApplicationpublicclassCloudServerApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(CloudServerApplication.class,args); }}步3、修改perties配置文件如下=cloud-serverserver.port=8761#注冊自我發(fā)現默認=trueeureka.server.enable-self-preservation=true#服務注冊地址,根據具體環(huán)境,修改指定文件中的配置eureka.instance.hostname=localhost#是否在狀態(tài)欄顯示IP地址eureka.instance.prefer-ip-address=true#當前程序為客戶機,默認為trueeureka.client.enabled=true#是否將自己注冊到其他eureka服務器eureka.client.register-with-eureka=false#是否獲取自己注冊的信息,集群時需要eureka.client.fetch-registry=false#默認注冊地址eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/#可以覆蓋前面的定義spring.cloud.config.allow-override=truespring.main.allow-bean-definition-overriding=true#日志配置logging.level.root=INFO.ytn=DEBUG=logs/${}.log步4、啟動創(chuàng)建SpringCloud項目創(chuàng)建SpringCloud項目,并注冊到注冊中心。步1、輸入項目名稱名稱名稱為:cloud-demo包名:cn.inspur步2、選擇依賴步3、修改配置文件修改perties配置文件,配置本springcloud項目需要注冊到EurekaServer注冊中心:=cloud-demoserver.port=8002files.active=dev#EurekaClientconfigurationeureka.instance.hostname=localhosteureka.client.eureka-server-port=8761eureka.client.enabled=trueeureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${eureka.client.eureka-server-port}/eureka/eureka.instance.prefer-ip-address=true#mvcconfigserver.servlet.encoding.enabled=trueserver.servlet.encoding.charset=UTF-8server.servlet.encoding.force=truespring.messages.encoding=UTF-8spring.mvc.format.date=yyyy-MM-ddspring.jackson.time-zone=GMT+8spring.jackson.date-format=yyyy-MM-ddHH:mm:ss#default8KB,setgetparameterto20480bytesserver.max-http-header-size=20480#Loggingconfiglogging.level.root=INFO.inspur=DEBUG=logs/${}.log#actuator/info信息=${}=Inspurinfo.build.artifactId=cn.inspurinfo.build.version=1.0步4、添加EurekaClient的注解在啟動類中,添加EurekaClient的注解如下:packagecn.inspur;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importflix.eureka.EnableEurekaClient;@EnableEurekaClient@SpringBootApplicationpublicclassCloudDemoApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(CloudDemoApplication.class,args); }}步5、啟動項目先啟動eurekaserver,再啟動cloud-demo。然后查看eurakaserver上的信息如下:可見到,服務已經注解到EurekaServer注冊中心:步6、開發(fā)一個測試類開發(fā)一個測試類,用于訪問測試:packagecn.inspur.api.demo.controller;importjava.time.LocalDateTime;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("demo")publicclassDemoController{ @Value("${server.port}") privateStringport; @RequestMapping("hello") publicStringhello(){ return"HelloCurrentTimei
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年08月廣東2024屆廣發(fā)銀行信用卡中心管理培訓生(職能類)秋季校園招考筆試歷年參考題庫附帶答案詳解
- 2025年中天建設集團有限公司招聘筆試參考題庫含答案解析
- 2025年河南省商丘市煙草公司招聘筆試參考題庫含答案解析
- 2025年云南出版集團所屬曲靖新華書店有限責任公司招聘筆試參考題庫附帶答案詳解
- 2025年福建福州市鼓樓區(qū)陽光朵朵家庭服務有限公司招聘筆試參考題庫附帶答案詳解
- 2025年山東聊城東阿縣綜合行政執(zhí)法局所屬國有企業(yè)招聘筆試參考題庫附帶答案詳解
- 自愿搬遷協議書
- 年度HF-FB防彈玻璃市場分析及競爭策略分析報告
- 2025年道路貨運從業(yè)資格考
- 二零二五年度建筑企業(yè)工程款結算借款合同3篇
- 醫(yī)院醫(yī)用耗材SPD服務項目投標方案
- 建筑展望與未來發(fā)展趨勢
- “互聯網+”大學生創(chuàng)新創(chuàng)業(yè)大賽計劃書一等獎
- 水土保持方案投標文件技術部分
- 專題3-6 雙曲線的離心率與常用二級結論【12類題型】(原卷版)-A4
- 2024年人力資源年度工作總結參考(2篇)
- DB52T 1776.1-2023 耕地質量等別評價 第1部分:評價規(guī)范
- BIM工程師年終總結
- 釘釘OA辦公系統操作流程培訓
- 新生兒科年度護理質控總結
- 2024秋季新教材人教版體育與健康一年級上冊課件:1我們愛運動
評論
0/150
提交評論