JVM系列(六) - JVM垃圾回收器
前言在之前的几篇博客中,我们大致介绍了,常见的 垃圾回收算法 及 JVM 中常见的分类回收算法。这些都是从算法和规范上分析 Java 中的垃圾回收,属于方法论。在 JVM 中,垃圾回收的具体实现是由 垃圾回收器(Garbage Collector)负责。 正文概述在了解 垃圾回收器 之前,首先得了 ...
阅读更多
浅谈Nginx服务器的内部核心架构设计
前言Nginx 是一个 免费的,开源的,高性能 的 HTTP 服务器和 反向代理,以及 IMAP/POP3 代理服务器。 Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。Nginx是一个 Web 服务器,也可以用作 反向代理,负载均衡器 和 HTTP 缓存。 很多高知名度 ...
阅读更多
浅谈消息队列及常见的消息中间件
前言消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段。它具有 低耦合、可靠投递、广播、流量控制、最终一致性 等一系列功能。 当前使用较多的 消息队列 有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ 等,而部分 数据库 如 Redis、MyS ...
阅读更多
浅谈SAML, OAuth, OpenID和SSO, JWT和Session
前言通常为了弄清楚一个概念,我们需要掌握十个概念。在判断 JWT(JsonWebToken) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 refresh token 的区别。 了解什么是 OAuth,什么是 SSO,SSO 下不同策略 O ...
阅读更多
从零开始学习Quartz任务调度框架
前言Quartz 是个 任务调度工具,就是 定时 执行指定的任务。Quartz 提供了极为广泛的特性如 持久化任务,集群 和 分布式任务 等。Quartz 是用 Java 构建的,与 Spring 集成方便,伸缩性,负载均衡,高可用性。 本文只关注基于 数据库 的 Quartz 集群,基于 Qu ...
阅读更多
实战Spring Boot 2.0系列(六) - 单机定时任务的几种实现
前言定时任务 一般会存在 中大型企业级 项目中,为了减少 服务器、数据库 的压力,往往会以 定时任务 的方式去完成某些业务逻辑。 常见的就是 金融服务系统 推送回调,一般支付系统订单在没有收到成功的回调返回内容时会 持续性的回调,这种回调一般都是 定时任务 来完成。 还有就是 报表的生成,我们一般 ...
阅读更多
实战Spring Boot 2.0系列(五) - Listener, Servlet和Filter, Controller和Interceptor
前言用户认证授权、日志记录 MDC、编码解码、UA 检查、多端对应等都需要通过 拦截请求 来进行处理。这时就需要 Servlet、Filter、Listener、Interceptor 这几种组件。而把非 Spring Boot 项目转换成 Spring Boot 项目,需要沿用以前的这些代码,所 ...
阅读更多
实战Spring Boot 2.0系列(四) - 使用WebAsyncTask处理异步任务
前言上文介绍了基于 @Async 注解的 异步调用编程,本文将继续引入 Spring Boot 的 WebAsyncTask 进行更灵活异步任务处理,包括 异步回调,超时处理 和 异常处理。 正文1. 处理线程和异步线程在开始下面的讲解之前,在这里先区别下两个概念: 处理线程:处理线程 属于 ...
阅读更多
实战Spring Boot 2.0系列(三) - 使用@Async进行异步调用详解
前言异步调用 对应的是 同步调用,同步调用 指程序按照 定义顺序 依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用 指程序在顺序执行时,不等待 异步调用的语句 返回结果 就执行后面的程序。 正文1. 环境准备利用 Spring Initializer 创建一个 gradle ...
阅读更多
实战Spring Boot 2.0系列(二) - 全局异常处理和测试
前言在日常 web 开发中发生了异常,往往需要通过一个统一的 异常处理,来保证客户端能够收到友好的提示。本文将会介绍 Spring Boot 中的 全局统一异常处理。 正文1. 创建项目利用 Spring Initializer 创建一个 gradle 项目 spring-boot-globa ...
阅读更多