弄浪的鱼

在数据库的增删改查操作中,用的最多的就是查询操作了,查询操作又可以分成一对一查询、一对多查询和多对多查询。一个人属于一个部门,查询人的时候要查出他的部门,这是一对一查询;一辆车有四个轱辘,查询车的时候要查出这四个轱辘,这是一对多查询;一个学生选了多门课,一门课也是被多个学生选的,学生与课程之间用一张关联表来联系,这是多对多查询。

本文介绍 Mybatis 是如何处理这几种查询方式的,包括以下三个部分:

  1. Mybatis 一对一查询
  2. Mybatis 一对多查询
  3. Mybatis 多对多查询
  4. discriminator 鉴别器映射

上一篇文章 RestTemplate实现服务之间的调用中调到了使用 RestTemplate 跨应用调用 Restful 形式的接口。这样的方式存在两个弊端:一是 URL 需要硬编码,二是服务挂掉之后没有备用措施。

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

Eureka的服务注册与发现

如上图所示,Eureka 中有三种角色

  • Eureka Server:注册中心,提供服务的注册和发现
  • Service Provide:服务提供者,将自身的服务注册到 Eureka Server
  • Service Consumer:服务消费者,从 Eureka Server 中获取注册表,调用 Provider 的服务

为什么老年代的 Full GC 要比新生代的 Minor GC 慢很多倍,一般在 10 倍以上?我们可以从了解老年代常用的垃圾回收器 CMS 的工作原理开始回答这个问题。

与新生代采用的复制算法不同,CMS 采用的垃圾回收算法是标记整理算法。且老年代的垃圾回收更加复杂,总共分成 4 个阶段,它们分别是:初始标记、并发标记、重新标记、并发清理。

我们从 CMS 的垃圾回收基本原理开始,了解 CMS 是如何工作的。

开始系统学习微服务相关的知识点,现在微服务中的主流框架是 Spring Cloud 和 Dubbo,因为公司用的是 Spring Cloud,我就从 Spring Cloud 着手实战微服务。

先来看两个服务之间的调用,Spring Boot 是怎么帮我们做的?存在什么弊端?要如何解决?

RestTemplate

Spring Boot 在 org.springframework.web.client.RestTemplate 中提供了 RestTemplate 能够帮助我们调用 Restful 形式的服务接口。