一图胜千言

一图胜千言

既然已经在session有了,直接session取就行了,为什么要再放threadlocal,之后再从threadlocal清掉,一直从session拿不就行了?

答:

放在Threadlocal里面,是为了后面的Controller、Service、Dao任何地方只要是当前业务处理的线程都能 直接并且方便的 获取到用户对象. 如果我们不做这种处理,那只能从Session中获取,当Service里面要获取user的时候,Controller在调用service方法时就必须传递HttpServletRequest这种容器相关参数,增加了业务与底层实现的耦合,造成业务处理关注点的增多;而且每个Controller都需要接收HttpServletRequest参数,因为不能预估未来是否要获取user对象来逻辑处理。

2 nginx的配置中root和alias的区别?

答:

root和alias的区别是酱紫的:

配置root需要访问路径要叠加目录路径,比如配置了

location /images {

root /path/to/img;

}

那么有张图/path/to/img/a.jpg,那么浏览器中访问到这张图片就需要http://localhost:8081/images/path/to/img/a.jpg

而alias就简单多了,url中不需要关心本地目录路径

location /images {

alias /path/to/img;

}

http://localhost:8081/images/a.jpg 这样就能访问,所以建议使用alias,尤其是windows下 ;

如果非要使用root配置的话,那只能使用相对路径了,相对nginx的安装路径,比如

你将nginx安装在D:\nginx下

你可以将图片放在D:\nginx\img,比如你想访问D:\nginx\img\1.jpg,配置好:

location /images {

root img;

}

就可以通过http://localhost/images/1.jpg就可以了,

否则可以使用alias,就可以使用windows绝对路径了

3.freemarker的那些文件哪里可以下载?静态文件在哪里

答:

freemarker文件在单体工程house-web/src/main/resources/templates目录下,是以.ftl结尾的文件

图片文件在单体工程house-web/src/main/resources/static目录下

4.datasource 加载失败,空指针异常

答:

确保mysql驱动及Mybatis-Starter已经依赖,house-web已经依赖上了house-biz,并且配置文件中包含有spring.druid的配置

5.发现我的spring-boot 的配置文件不支持 的druid的 spring.druid.xx的属性格式,只能用spring.datasource.xx的格式,这是为什么?

答:

ConfigurationProperties注解有两种使用方式,一种是注解在Properties类上,作用是将application.properties(yaml)上的配置绑定到该类属性上,另外一种是注解在Bean方法上,作用是将作用是将application.properties(yaml)上的配置绑定到该bean方法返回对象上。前者通过注解处理器是可以生成/META-INF/metadata.json文件,用于IDE代码提示的,后者就无法生成也就IDE不能进行提示,再者,在Bean方法上注解@ConditionalOnProperty的property,IDE也无法提供提示。

你也考虑使用druid-spring-starter来替换DruidConfig,事先要删除DruidConfig。课程中使用DruidConfig是更加轻量可控的方式。

6.提示userService找不到

.答:

请检查service注解及package是否属于启动类所在package的子package。所有bean找不到,mapper找不到的错误,要先确保启动类

所在package是root package,SpringBoot默认会扫描root package下面的子package来发现Spring bean,这个尤其要注意

7 . Cannot expose session attribute 'user' because of an existing model object of the same name

答:

注释掉同名user的attribute设置

8.Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService'

答:

首先看底层的mapper bean,datasource bean创建是否正常,数据库有没有连接上,然后再检查下application.properties的mybatis配置是否正确

9.用户模块一般作为独立的服务数据库,比如其它业务模块(订单模块) 我的每笔订单都是跟人绑定的。这里是需要用表join的。类似于这样的业务数据应该有很多,这样的表结构如何划分微服务。

答:

微服务改造时要以限定上下文进行拆分,假设订单和用户分属两个不同的限定上下文。根据实际经验,用户通常作为一个最基础的服务,用户涉及的关联关系很多,为防止用户服务变的过于庞大,关联关系往往分拆到其它领域模型中进行维护,比如订单用户关系会放在订单服务中维护。

微服务拆分后,对于订单查询的场景,可以从订单用户关系表中的userid来查询出订单id列表,然后通过订单id列表查询订单表。对于多维度条件、分页、范围查询的场景可以将用户和订单表合并成一个宽表输出到ES中,来解决跨库join的问题

10.分布式事务和消息队列的内容有涉及到吗

答:

会有涉及,因课程篇幅所限,会从理论上讲解,缺少代码实现部分,还请见谅

11.多库的数据统计问题,在实际应用中,拆为多库时,联表查询统计怎么处理?

答:

如果是应用中有复杂条件查询的逻辑,应该将多张数据表合并成宽表同步到ES中,进行查询.

数据统计应该和应用开发分离,由专门的团队负责,一般是将数据表定期或实时同步到hive表,通过hive sql进行离线统计。

12.在mapper接口上添加注解+SQL(比如select("select * from ..."))的方式,和课程中接口定义在类中,SQL语句定义在XML文件中这种方式,两者之间除了实现方式不同外还有其它区别吗?

答:

注解方式无法利用mybatis动态sql的功能,当sql变多变复杂将成为噩梦;对于数据库操作要求较高的项目如果进行sql审核将变得不方便;sql与代码放在一起,也难以维护

13.服务的消费者需要注册到注册中心吗,还是只需要服务的提供者注册到注册中心就行?

答:

对于SpringCloud Eureka只需要服务提供者注册,但同时要注意很多服务是 兼具这两种角色的--既是服务消费者又是服务提供者

14.为啥我实例在Eureka DashBoard不显示IPxxxx,而是显示机器名?

答:

添加一个配置eureka.instance.prefer-ip-address = true,如果还是机器名说明你本地只有一个回环地址127.0.0.1,那么

还需要加上eureka.instance.instance-id=${你的ip}:${你的port}才行

15.SpringCloud版本与Springboot的版本对应的问题

答:

虽然SpringCloud版本与SpringBoot没有强制对应关系,但是还是建议在选用SpringCloud版本时要同时选择与其兼容的SpringBoot版本。通过http://projects.spring.io/spring-cloud/#quick-start输入不同SpringCloud版本返回对应的SpringBoot版本

16.recomHouse变量没有值,Freemarker报错的问题,FreeMarker template error (DEBUG mode; use RETHROW in production!): The following has evaluated to null or missing: ==> recomHouses [in template "homepage/index.ftl" at line 107, column 27]

答:

recomHouses没有值,是不是还有学到推荐那一节,建议先注释掉,等学到热门推荐再解开

17.mybatis.config-location=classpath:/mybatis/mybatis-config.xml,这个是写在web下的,但config.xml是在biz下的,最后是怎么找到的

答:

最后打成一个jar包,jar包里面又包含biz的jar,所以能找到

18.能否简单介绍下服务拆分,对于一个像旧系统 用户表\组织表菜单\这些基础的真不知道如何下手呀

答:

服务拆分涉及很多,基本的拆分原则,组织架构,项目特点,业务场景,历史经验都有关系;

从业务功能之上来看服务拆分,而不是数据表 , 将每个 “联系紧密的业务 " 划定成一个限定上下文;

然后再分析限定上下文包含哪些业务模型,上下文 之间 可以分析出哪些共享模型

19.技术书都有哪些推荐

答:

《Java TCP/IP Socket编程》 网络编程快速入门,讲的通俗易懂

《Java并发编程实战》 并发编程经典书,必读

《Effactive Java 2.0》 Java编程的最佳实践,依然值得细读

《java并发编程的艺术》 引导你深入JDK并发包源码,建议边研究源码边参考本书

《从Paxos到Zookeeper分布式一致性原理与实践》 借助zookeeper组件的深入剖析,让你可以了解分布式系统领域的设计原理

《精通Spring 4.X:企业应用开发实战精通》 如果非要推荐一本Spring的书,我觉得陈雄华写的这本还是不错的,我看过Spring3.x企业应用开发实战,可以当做字典书

《Mysql技术内幕》 系列的书,可以让你了解Mysql的原理

《大型网站技术架构-核心原理与案例分析》及 《大型网站系统与Java中间件实践》 可以让你了解互联网系统架构的演进过程

《深入理解Java虚拟机》

20.feign的作用还有哪些常用的呢

答:它也是基于http,让你从复杂的http请求构建过程中解脱出来

21.Spring Cloud Config怎么样

答:

SpringCloud Config 它相比一些开源的分布式配置中心(Disconf, Dismond)还有一些差距,比如它不支持变更通知

22.我们应该对spring boot 的线程池进行设置吧。。还是默认的配置就能万金油了?

答:

并发量大,业务处理耗时较久的业务场景下要将线程数开大,比如如果你使用tomcat,那么在application.properties(yaml)中

添加配置server.tomcat.max-threads=2000

23.添加注解Async执行异步没有生效

答:

Spring处理异步是通过AOP来实现的,需要调用的Service与添加@Async方法的Service分开,同时@Async注解的方法不能有返回值(或者返回Future),也不能定义为private

24.多环境配置的时,是通过pom定义多个profiles,还是定义多个application-*.yml(如:application-dev.yml)这样的文件

答:

生产环境建议使用的前者,因为不同环境,不止只有application.properties(yaml)不同,还有其它配置文件不同环境也不一样。

25.添加依赖后IDE没有生效

答:

如果使用Eclipse,使用Maven-Update Project..

如果使用Idea,选择Maven Projects -> reimport all maven projects

26.hystrix是不是都要在各个服务跟网关都需要配置实现呢

答:

要看具体业务情况,对外部业务依赖都应该配置,但API Gateway一定是配的最全的

27.这个课程为什么有没有讲到spring session

答:

像SpringSession、Spring Data Redis、Spring Kafka,我们生产环境都没有用,侵入性太强,不易定制化.

课程中更希望大家能理解解决方案的思路和原理,而不是方案的套用,否则无法达到举一反三的目的,引入spring很多技术栈也会带来不少维护成本

java微服务案例分析_《Java深入微服务原理改造房产销售平台》知识点梳理与问答总结...相关推荐

  1. java深入微服务原理改造房产销售平台,Java深入微服务原理改造房产销售平台

    端午大礼包,等你来拿 今天推送的教程是:Java深入微服务原理改造房产销售平台 Java深入微服务原理改造房产销售平台 微服务是近年来非常流行的架构,是后端资深开发工程师必备技能.本课程将基于房产销售 ...

  2. .metadata是什么项目文件_《深入微服务》之 如何给老婆解释什么是微服务的基础框架SpringBoot?

    前言 本章我们主要从以下几个方面夯实我们的基础: 微框架 Spring Boot 的基本认识 实战学习 Spring Boot 的基本使用 多种方式获取 Spring Boot 配置 如何自定义一个 ...

  3. 【项目实战】Java从单体到微服务打造房产销售平台(一) - 整体概述

    Java从单体到微服务打造房产销售平台 可掌握技能:从0-1业务设计 + SpringCloud(微服务改造) https://coding.imooc.com/class/174.html

  4. JAVA计算机毕业设计房产销售平台Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计房产销售平台Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计房产销售平台Mybatis+系统+数据库+调试部署 项目架构:B/S架构 开发语言:Java语言 开发软 ...

  5. JAVA房产销售平台计算机毕业设计Mybatis+系统+数据库+调试部署

    JAVA房产销售平台计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA房产销售平台计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  6. 基于JAVA房产销售平台计算机毕业设计源码+系统+lw文档+部署

    基于JAVA房产销售平台计算机毕业设计源码+系统+lw文档+部署 基于JAVA房产销售平台计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...

  7. java毕业设计房产销售平台Mybatis+系统+数据库+调试部署

    java毕业设计房产销售平台Mybatis+系统+数据库+调试部署 java毕业设计房产销售平台Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  8. 2022最新基于 Spring Cloud 的微服务架构分析,java 技术经理岗位职责

    构建在开发团队之外的 API 网关必须具备负载均衡能力,可以配置多个 IP 地址.通过该 API 网关也最好具备和 Docker 容器扩展后的服务自动注册和地址加入扩展能力. Eureka 的竞品分析 ...

  9. 前后端分离和微服务_为什么说微服务,要从前后端分离开始?一文带你揭秘深入微服务...

    前言 既要低头赶路,又要抬头望天,科技是为人服务的,任何技术背后都有更深层次的考量. 之前的文章中咱们聊了很多微服务的相关内容,简而言之,微服务的本质,就是一种可以加速分工.促进合作的新协作机制.知其 ...

最新文章

  1. 成功解决Module Not Found Error : No module named mglearn
  2. Nginx在安装过程经常出现的问题
  3. (41)Xilinx MMCM IP核配置(二)(第9天)
  4. 《机器学习实战》学习总结(四)逻辑回归原理
  5. ubuntu下gns3 0.7安装笔记
  6. Python学习笔记(未完)
  7. Spring mvc mybatis cxf Add CGLIB to your classpath. 错误
  8. 程序设计语言的发展过程
  9. 罗技键盘连计算机,罗技键盘怎么连接电脑(罗技键盘使用教程及性能评测)
  10. Opencv中rectangle函数与Rect函数的用法
  11. web3.0、元宇宙、AIOT探讨-产品思维修炼(15)
  12. php小说阅读例子,Thinkphp掌上阅读功能完善强大的小说源码 - 四套模板
  13. Centos7 | etc 目录下文件详解
  14. 计算机术语翻译(Term.)及缩写整理(Abbr.)
  15. nodepad++之jsonviewer插件
  16. 服务器多个cpu的作用,服务器多核CPU是什么?多核CPU有什么用?
  17. sql 添加注释的方法
  18. Minecraft 1.12.2 生化8 模组 2.0版本 新Buff、病毒分析仪登场
  19. 哥大暴跌16名!2023 USNews 全美大学排名发布!
  20. 北斗/GPS授时原理

热门文章

  1. 跟涛哥一起学嵌入式 26:深入浅出计算机编码、乱码问题
  2. 池州计算机一级考试试题题库,池州科目一考试题库
  3. Nginx是什么??
  4. 依赖倒转原则与里氏代换原则
  5. Springboot课程教学平台设计与实现4mu05计算机毕业设计-课程设计-期末作业-毕设程序代做
  6. Win10 WUP网易云应用出现网络异常
  7. python中forward(200)什么意思_Python中的Phyllotaxis模式| 算法植物学的一个单位
  8. 常见问题汇总:FLUENT面数据处理
  9. 淘宝京东APP节日更新布局 实现方式
  10. iptables结合ipset禁止国外IP进行访问