SpringCloud微服务架构系列服务的注册发现与调用

简介众所周知,SpringCloud是一个微服务框架,本质上是基于SpringBoot的一整套实现微服务的框架。包含了服务发现、负载均衡、断路器、服务网关、分布式配置等组件。其中服务注册、发现又有Netflix的Eureka,阿里的Dubbo,Apache的Consul等,本篇文章将以Eureka进行讲解。 EurekaEureka是Netflix开发的服务发现框架,本身是一个基于REST的...

浅析常用设计模式创建型

单例模式一. 概念单例模式是一种常见的设计模式。通过单例模式可以确保某个类有且仅有一个对象实例,能够自行实例化并向整个系统提供了这个实例。确保所有对象访问的都是同一个实例,避免对资源的多重占用,减少系统的性能开销。 注: Spring的bean默认为单例模式 二. 实现方法 将构造函数设置为私有,限制外部实例化该对象 提供一个getInstance方法返回内部创建的实例对象 三. 几种基本...

SpringBoot系列日志配置

导入 Maven 包SpringBoot 默认使用了 LogBack 日志系统,所以如无需求是没有必要改为其他日志系统的,也无需再进行多余的配置,LogBack 默认将日志打到控制台上。 当我们新建 SpringBoot 项目时,Maven 会自动引用 spring-boot-starter 或 spring-boot-starter-web,而这两个起步依赖中已经包含了对于 spring-...

SpringBoot系列整合Redis做缓存

一. 缓存的作用当应用体积大了,用户量上去了,数据规模也越来越大之后,数据库查询操作将成为用户体验的瓶颈,这时使用缓存会是一个非常好的解决办法。Spring 开始从3.1 开始就为我们提供了基于注解的缓存支持,通过注解方式低侵入地为我们的应用提供缓存支持。在SpringBoot中,更是以一系列自动配置的方式使我们能更加方便的使用缓存功能。 二. 几个重要的注解 名称 解释 @Ena...

SpringBoot系列整合Druid数据库连接池

概念数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。(摘自百度百科) 说白了,就是可以重复使用同一个数据库连接,不再需要进行打开、关闭连接,一切都交由数据库连接池去处理,一般可搭配 Mybatis 食用...

JVM学习笔记内存区域

最近在看点JVM的东西,看到JVM的内存区域就做了点笔记。 运行时数据区域先来看看虚拟机的内存区域的基本组成吧。 JDK1.8之前:JVM运行时数据区域.png JDK1.8以后:20193Java运行时数据区域JDK1.8.png 其中,内存区域主要分为线程私有和线程共享。 线程私有: 程序计数器 虚拟机栈 本地方法栈 线程共享: 堆(heap) 方法区 直接内存(非运行时数据区域的...

Mybatis动态SQL含运算语句

最近在一个小项目中用到分页,网上找到一条MySQL分页的公式 12345int page; //page为当前页int pageSize; //pageSize为每页数量//limit m, n 表示从第几条开始检索,查询多少条记录select * from table limit (page - 1)*page , pageSize; 看起来好像很简单,稍微改下mapper文件就行 12/...

网页样式不见了

在一个Spring Boot项目中,将HTML文件放到templates文件夹里有一个好处,可以在Controller里直接返回HTML文件的文件名 123456789@Controller@RequestMapping("/anima")public class animaController { @RequestMapping("/index...

SpringBoot系列使用Generator进行自动生成

Maven导入Generator插件properties标签下配置版本信息 12<mybatis-generator-maven-plugin.version>1.3.7</mybatis-generator-maven-plugin.version><mybatis-generator-core.version>1.3.7</m...

缓存穿透缓存雪崩缓存击透的概念及解决方案

缓存穿透当客户端频繁地向服务器请求一个缓存中不存在的数据时,服务器会不断查询数据库,数据库可能会因此挂掉。 解决方案 这里有一个简单粗暴的方法。 当查询数据库时,如果结果返回null,这时仍然对其结果进行缓存,但缓存的过期时间很短。 缓存雪崩在设置缓存时都设置了相同的过期时间,致使缓存同时失效,所有请求将全部转发给数据库,数据库瞬时压力过重,导致雪崩。 解决方案 可以在原有的失效时间...