Java应用开发(中高级)课后练习答案_第1页
Java应用开发(中高级)课后练习答案_第2页
Java应用开发(中高级)课后练习答案_第3页
Java应用开发(中高级)课后练习答案_第4页
Java应用开发(中高级)课后练习答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【课后练习】1.下列可以设置允许接口匿名访问的是(A)。A.anonymousB.denyAllC.hasAnyRoleD.authenticated

2.下列注解中可以用来定义一个MyBatis的Mapper组件的是(D)。A.@MapperB.@ControllerC.@RepositoryD.@Component3.下列(C)不是SpringBoot读取配置的方式。A.@ConfigurationProperties注解读取方式B.@Value注解读取方式C.@ConfigurationD.读取application文件@Insert注解是MyBatis中负责实现数据插入的注解,使用时可以使用values注解为SQL语句传递参数。若想在插入数据成功后获取自增的主键,可用@Options注解。在SpringBoot中可以通过@RestController、@ResponseBody将接口的返回值转换成JSON字符串。MyBatis语句中,${}可以实现字符串替换的功能,而另一个#{}则是实现了预编译处理的功能。【课后练习】简述SpringBoot和Spring的区别。SpringBoot提供极其快速和简化的操作,让Spring开发者快速上手。SpringBoot提供了Spring运行的默认配置。SpringBoot为通用

\t"/qq_37904909/article/details/_blank"Spring项目提供了很多非功能性特性。简述接口文档和接口测试文档有什么区别。接口文档又称为API文档,一般是由开发人员所编写的,用来描述系统所提供接口信息的文档。

而接口测试文档则是在接口文档的基础上进行测试规范的编写。简述什么是RestfulAPI接口。RESTfulAPI就是REST风格的API,即rest是一种架构风格,跟编程语言无关,跟平台无关,采用HTTP做传输协议。第三章,【课后练习】一、选择题1.下列不是Redis事务相关命令的是()。A、MULTIB、EXECC、DISCARDD、DBSIZE2.系统运行时检测到了一个不正常的状态不应该使用下列那个日志级别()。A、Warn

B、InfoC、ErrorD、Fatal3.以下非RocketMQ缺点的是()。A、系统可用性降低B、系统复杂度提高C、一致性问题D、提高系统吞吐量二、填空题1.缓存的类型包括数据库缓存、静态缓存和动态缓存。2.Redis常用的五种数据类型它们是string(字符串)、list(列表)、set(集合)、hash(哈希)和zset(有序集合)。3.RocketMQ提供了两种消费模式集群消费以及广播消费。三、简答题1.为什么选择用Redis做缓存。Redis是基于内存、单线程架构的数据库,具有访问速度快,支持多种方式的持久化,支持多种数据结构,支持多种编程语言,简单稳定使用简单不依赖外部库,支持高可用和分布式等特点。2.请简述Redis常见使用场景。数据共享:Redis是分布式的独立服务,可以在多个应用之间共享。热点数据缓存:redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据。计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景。排行榜相关场景:redis使用sortedset可以轻松打造一个热度排行榜。消息队列:redis可以使用listpush和listpop等命令,能方便的执行队列操作。限时业务场景:redis中可以使用expire命令设置一个生存时间,到时间后redis会删除它。点赞、好友等相互关系的存储:利用Redis提供的Set数据结构,可以存储一些集合性的数据。3.RocketMQ如何实现分布式事务?1、生产者发送半消息给MQServer,发送成功后返回响应给生产者2、生产者收到MQServer成功响应之后执行本地事务,根据本地事务执行的结果(COMMIT/ROLLBACK)反馈到MQServer,MQServer根据返回的结果确定值执行消息投递(消息最终确认)还是消息回滚(消息删除)3、在上述执行的过程中有可能出现本地事务执行完成,但是还MQServer还未收到反馈的情况,生产者程序断网或者断电的情况,这种情况下,生产者程序重启后会自动去检查本地事务的状态,将本地事务执行状态返回给MQServer,MQServer根据返回的结果判定最终是执行COMMIT还是ROLLBACK。四、实训题1.搭建RocketMQ服务。(1)下载并解压RocketMQ(2)配置环境变量,在系统变量中增加下列环境变量(3)修改默认配置,本地开发调试的话,不需要使用太高的配置.而默认的配置占用的内存太高,往往导致启动失败,所以需要把默认配置启动内存调小。将runserver.cmd中的参数调整为:set"JAVA_OPT=%JAVA_OPT%-server-Xms256m-Xmx256m-Xmn128m-XX:MetaspaceSize=128m-XX:MaxMetaspaceSize=320m"将runbroker.cmd中的参数调整为:setCLASSPATH=.;%BASE_DIR%conf;"%CLASSPATH%"set"JAVA_OPT=%JAVA_OPT%-server-Xms256m-Xmx256m-Xmn128m"(4)启动NameServer进入bin目录,执行cmd命令:startmqnamesrv.cmd,启动NameServer。(5)启动Broker继续执行命令:startmqbroker.cmd-nlocalhost:9876,启动Broker。2.实现简单的生产者消费者模型(编写client)。生产者代码:publicclassProducer{privateStringproducerGroup="ORDER";privateDefaultMQProducerproducer;publicProducer(){//示例生产者producer=newDefaultMQProducer(producerGroup);//不开启vip通道开通口端口会减2producer.setVipChannelEnabled(false);//绑定nameserverproducer.setNamesrvAddr(JmsConfig.NAME_SERVER);start();}/***对象在使用之前必须要调用一次,只能初始化一次*/publicvoidstart(){try{ducer.start();}catch(MQClientExceptione){e.printStackTrace();}}publicDefaultMQProducergetProducer(){returnducer;}/***一般在应用上下文,使用上下文监听器,进行关闭*/publicvoidshutdown(){ducer.shutdown();}}消费者代码:publicclassConsumer{publicstaticfinalLoggerLOGGER=LoggerFactory.getLogger(Consumer.class);/***消费者实体对象*/privateDefaultMQPushConsumerconsumer;@AutowiredprivateOrderServiceorderService;/***消费者组*/publicstaticfinalStringCONSUMER_GROUP="ORDER";/***通过构造函数实例化对象*/publicConsumer()throwsMQClientException{consumer=newDefaultMQPushConsumer(CONSUMER_GROUP);consumer.setNamesrvAddr(JmsConfig.NAME_SERVER);//消费模式:一个新的订阅组第一次启动从队列的最后位置开始消费后续再启动接着上次消费的进度开始消费consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);//订阅主题和标签(*代表所有标签)下信息consumer.subscribe(JmsConfig.TOPIC,"*");////注册消费的监听并在此监听中消费信息,并返回消费的状态信息consumer.registerMessageListener((MessageListenerConcurrently)(msgs,context)->{//msgs中只收集同一个topic,同一个tag,并且key相同的message//会把不同的消息分别放置到不同的队列中try{for(Messagemsg:msgs){//消费者获取消息这里只输出不做后面逻辑处理Stringbody=newString(msg.getBody(),"utf-8");LOGGER.info("Consumer-获取消息-主题topic为={},消费消息为={}",msg.getTopic(),body);if(body!=null){intorderId=Integer.parseInt(body);finalintSTATE=1;sleep(5000L);orderService.updateState(STATE,orderId);}}}catch(UnsupportedEncodingException|InterruptedExceptione){e.printStackTrace();returnConsumeConcurrentlyStatus.RECONSUME_LATER;}returnConsumeConcurrentlyStatus.CONSUME_SUCCESS;});consumer.start();System.out.println("消费者启动成功=======");}}第四章,【课后练习】一、选择题1.下列哪个()不是SpringCloudNetflix的核心组件?A、dubboB、EurekaC、FeignD、Hystrix

2.下面哪个()是删除容器的docker命令?A、DockerdeleteB、DockerrmC、DockerrmiD、Dockerdeletei3.下列哪个()不是SpringCloudGateway的作用?A、注册服务B、限流控制C、权限校验D、路由转发二、填空题1.Eureka是springcloud中负责服务注册与发现的组件,其中EurekaServer是作为服务的注册与发现中心。EurekaClient既可以作为服务的生产者,又可以作为服务的消费者。2.Docker的核心组件包括镜像(Image)、容器(Container)和仓库(Repository)。3.Nginx负载均衡常用的server配置参数中使用upstream模块定义一组真实服务器。三、简答题1.简述SpringBoot和SpringCloud的区别。(1)Springboot是Spring的一套快速配置脚手架,可以基于springboot快速开发单个微服务;SpringCloud是一个基于SpringBoot实现的云应用开发工具;(2)Springboot专注于快速、方便集成的单个个体,SpringCloud是关注全局的服务治理框架;(3)springboot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,SpringCloud很大的一部分是基于Springboot来实现。(4)Springboot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开Springboot,属于依赖的关系。2.简述DockerFile中的命令COPY和ADD命令有什么区别。CO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论