《Java应用开发(中高级)课后练习答案.docx》由会员分享,可在线阅读,更多相关《Java应用开发(中高级)课后练习答案.docx(7页珍藏版)》请在优知文库上搜索。
1、第一章,【课后练习】1 .下列可以谀说允许接口匿名访问的是(A,A. anonymousB. denyAIIC. KasAnyRoIeD. authenticated2,下列注解中可以用来定义一个MyBatiS的MaPPer俎件的是(D)dA. MaPPerB. (Contro1.1.erC. RepositoryD. Component3.下列(C)不足SPringBOot读取配置的方式.A. COnf1.gUrationPrOPen1.eS注解读取方式B. VaIUe注解读取方式C. ConfigurationD.诫IUaPP1.iCatiOn文件1. 1.nsert注解是MVBatiS中
2、负货实现数据插入的注解,使用时Ur以使用VaIUeS注解为SQ1.语句传递参数.若想在插入数据成功后获取自增的主犍.可用。PtionS注解.2. 在SPrIn8Boot中可以通过RestControIIer、ResponseBodv利接口的返回值转换成JSON字符串。3. MyBatis语句中,$)可以实现字符申杵换的功能,而另一个#则是实现了预编译处理的功标4.第二章,【课后练习】1 .简述SpringBootfi1.Spring的区别.SPrInBBOOt提供极其快速和尚化的操作,让Spring开发者快速上手。SpringBOOt提供了Spring运行的帙认配置SpringBoot为通用S
3、pring项目提供fIU多非功能性特性.2 .简述接口文档和接口测试文档有什么区别.接口文档又称为AP1.文档,一般是由开发人员所编写的,用来描述系统所提供接口佰恩的文档。而接口测试文档则是在接口文档的班础上进行测试规范的编写。3 .简述什么是RestfuIAPI接口.RESTftIIAP1.就是REST风格的API,即rest是一种架构风格,跟编程语吉无关,跟平台无关,枭用HnP做传输协议,第三章,【课后练习】一、选择起1.下列不是RediS事务相关命令的是C.A、MU1.TIBxEXECC、DISCARDD.DBSIZE2系统运行时检测到了一个不正常的状态不应该使用下列那个11志级别O。A
4、、WarnInfoC、ErrorD、Fata1.3.以下非RocketMQ缺点的是()。A、系统可用性降低B、系统红杂度提麻C、一致性问题0.提海系统吞吐收二、埴空感1 .缓存的类型包括数班摩缓存、静态缓存和动态缓存.2 .Red1.s常用的五种数据类型它们是String(字符串)、瞰例衣)、Set像合)、hash(哈希)和ZSeU有序集台)MRocketMQ提供了两种消费模式集群消费以及广播消费.三、简答超1.为什么选择用Redis做缓存.Red6是兼干内存、总规程架构的数据内,具行访问速度快,支持多种方式的持久化,比持多种数据结构,支持多种纸程谙才,简单稳定使用简单不依赖外部库,支持高可川
5、和分布式等特点.2,请简述RediS常见使用场景。数据共享rRedis是分布式的独立服务,可以在多个应用之间共享。热点数据缓存:redis访问逑度块、支持的数擀类型比较丰富.所以redis做适合用来存储热点数据.计数器:访阿探行榜、商品浏览数等和次数相关的数值统计场景。排行榜相关场景:redis使用SorIedSe1.可以轻松打造个热度排行榜。消息认列:redis可以使用IiStPUSh和IiStPOP等命令.能方便的执行队列操作.限时业务场景:redis中可以使用expire命令设fit个生存时间,到时间后redis会删除它。点吩、好友等相互关系的存储:利用RediS等供的Set数据结构,可
6、以。储一些象台性的教据.3.RocketMQ如何实现分布式事务?1、生产者发送半消息给MQserVer,发送成功后返何响应给生产者2、生产者收到MQSerVCr成功响应之后执行本地事务,根据本地事务执行的结果反馈到MQSerVer.MQServer根楙返回的结果确定值执行消息投递(浦总最终确认)还是消AM可滚(消息删除)3、在上述执行的过程中有可能出现本地沙务执行完成,但是还MQServer还未收到反馈的情况,生产者程序断网或者断电的情况,这种情况卜,生产者程序重启后公自动去将育本地事务的状态.将本地事务执行状态返网给MQServer.MQServer根据返回的结果判定条终是执行COMMIT还
7、是RO1.1.BACK.四、实训题1.搭建ROCketMQ服务。(1)下载并解压ROcketMQ(2)配置环境变fit,在系统变JIt中增加下列环境变收(3)修改默认配置,本地开发调试的话,不需要使用太高的配置.而默认的配置占用的内存太面.往往导致启动失败,所以需要把默认配置启动内存调小.将runserver.cmd中的IHk整为:$etMJAVA_OPT=%JAVA_OPT%-server-Xms256n-Xm256mXm128mXX:MetaSPaCeSiZe=I28m-XXMaxMetaspaceSize=320m,将runbroker.cmd中的卷数调整为:setC1.ASSPATH=
8、.;%BASE_DIR%conf;%C1.ASSPATH%setHJAVA_OPT=%JAVA_OPT%-server-Xms256m-Xmx256m-Xmn1.28m(4)启动NameSerVer进入bin目录,执行Cmd命令:startmqnamesrv.cmd*后动NameSerVer,(5)启动BrOker继续执行命令:startmqbroker.cmd-nIoCaIhOSt:9876启动Broker.2.实现简单的生产者消费者模型编写c1.ient).生产者代码:pub1.icc1.assProducerprivateStringPrOdUCerGroUP=ORDER1*;priva
9、teDefauItMQProducerproducer;pub1.icProducer()示例生产者producer=newDefau1.tMQproducer(ProducerGroup);不开启vip通道开通门然口会诚2producer.setVipChanne1.Enab1.ed(fa1.se);沸定nameserverproducer.setNamesrvAddr(JmsConfig.NAME-SERVER);Start0;)* 对象在使用之前必须要调用一次,只能初始化一次7pub1.icvoidstart(Ktrthis.producer.start();catch(MQciIent
10、Exceptione)e.printStackTrace();)pub1.icDefauItMQProducergetProducer()returnthis.producer;)/* 一股在应用上下文,使用上下文监听器,进行关闭7pub1.icvoidshutdow110(this.producer.shutdown();消费者代码:pub1.icc1.assConsumerpub1.icstaticfina1.1.ogger1.OCGER=1.oggerFactory.get1.ogger(Consumer.c1.ass);* 消费者实体对象7privateDefau1.tMQpushCo
11、nsumerconsumer;AutowiredprivateOrderServiceOrderService;* 消费者组7pub1.icstaticfina1.StringCONSUMER_GROUP=ORDER;尸 通过构造函数实例化对象7pub1.icConsumer()throwsMQCIientExceptionconsumer=newDefau1.tMQPushConsumer(CONSUMER-GROUP);Consumer.SetNamesrvAddr(JmsConfig1NAMEeSERVER);消费模式:一个新的订例处第一次启动从列的见后位皿开始消曲后续再启动接希上次消费
12、的进度开始消费cosumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME-FROM-1.AST-OFFSET);订阅上瞪和标签/msgs中只收集同一个topic,同“个tag,并且key柑I可的message/会把不同的消息分别放置到不同的队列中try(for(Messagemsg:msgs)消费者获取消息这里只输出不做后面遗轨处理Stringbody=newString(msg.getBody(),utf-8);1.GER.info(Co11sumer-获取消息-主题topic为三)r消费消息为msg.getTopic(),body);if(bo
13、dyI=nu1.1.)intorder1.d=Integer.parse1.nt(body);fina1.intSTATE=1;steep(501.;OrderService.updateState(STATE.order1.d);)catch(UnsupportedEncodingExceptionInterruptedExceptione)e.printStackTrace();returnCOnSUmeConCUrrent1.YStatUS.RECONSUMJ1.ATER;)returnConsumeConcurrent1.yStatus.CONSUME_SUCCESS;);ConSUm
14、er.start。;SyStemQUt.print1.n(消费者启动成功“”);第四章,【课后练习】一.选择题1.下列哪个(不是SpringC1.oudNetf1.ix的核心组件?AsdubboB、EurekaC、FeignD.Hystrix2 .下而哪个()是刷除容器的docker命令?A、Dockerde1.ete6%DockerrmC、DockerrmiD、Dockerde1.etei3 .下列哪个(不是SpringC1.oudGateway的作用?A、注册股务Bx限流控制C.权限校验D、路由转发二、埴空典1.Eureka是SPringCI。Ud中负责服务注册与发现的物件,其中EurekaServer是作为服务的注册与发现中心.Eurekaaient既可以作为极务的生产拧,又可以作为服务的消费者.2.Docker的核心组件包括tt(ImaKe;)、核心(Container)和仓:IV(RepOSitoM3Nginx负载均衡常用的SerVer配置参数中使用upstream模块定义一蛆真实极务器.三、简