NekoChip's Blog

一生懸命

文章

我在 GitHub 上的开源项目

SpringDemo Java 🤩1  ⭐️4  🖖4 SpringBoot & SpringCloud 使用 Demo 2. nekochips.github.io HTML 🤩1  ⭐️0  🖖0

Spring Boot 应用监控管理

Spring Boot 默认提供了 Actuator 组件来监控 Spring Boot 应用。我们可以通过使用 Actuator 中的 REST API 来查看应用的一些端点信息,从而了解应用程序的运行状况。 而 Spring Boot Admin 是一款基于 Spring Boot Actuator 的 Web 服务,并提供图形化界面,可以更加直观地查看 Spring Boot 应用的运行状态。 在最近使用 Spring Boot Admin 的同时,发现它的图形化界面开始支持中文了,这无疑对国内的开发运维人员提供了便捷。本文将通过最新版本的 Spring Boot 2.3.0.RELEASE 结合 Spring Boot Admin 2.2.3 来简单介绍一下 Spring Boot Admin 的使用。 1. Spring Boot Actuator 在使用 Spring Boot Admin 之前,我们需要先行了解 Spring Boot Actuator 提供了哪些功能。 1.1. 添加依赖 <dependency> <groupId>org.spr....

Spring Boot 深入学习(6) —— Spring 事务管理

前言: 有关事务的特性 ACID ,想必大家已经熟记于心了。(如果还有不了解事务特性的朋友,建议先花点时间进行了解,以便文中下面的内容不会对您造成困扰。) 本文我们主要以 Spring 的事务管理为主,MySQL 的事务相关内容可参考 MySQL 系列文章:MySQL 学习总结(一) —— 认识 MySQL 以及简单应用。 1. Spring 事务说明 虽然说 Spring 提供了对事务的支持,但并不代表在程序中使用了 Spring 的事务管理就能保证我们的项目一定支持事务。 为什么这么说呢? 因为 Spring 的事务管理本质上使用的是项目中所使用的数据库的事务。简单点说,如果项目中使用的数据库本身就不支持事务,那么即使我们开启了 Spring 的事务管理也是徒劳。 下面这张表中可以看出在 MySQL 5.7 版本中仅有 InnoDB 引擎是支持事务的: +--------------------+---------+----------------------------------------------------------------+--------------+---....

MySQL 学习总结(二) —— 认识索引

前言:在 MySQL 学习总结(一)文中末尾提到了有关 SQL 优化的一些认识,可以看到 SQL 优化与索引的使用密切相关。所以为了提升 SQL 的性能,了解索引以及如何正确地使用索引也就成了我们的必修课。 文中所提到的内容均为本人学习过程中自己的理解,如有不当之处欢迎指出和补充🙏。 1. 什么是索引? 🌰 举个栗子:我们有一本书,就拿《高性能 MySQL》为例。我们要查看这本书中与 “索引” 相关的内容,通常情况下有两种方式选择:1. 从第一页开始往后翻,直到翻到 “索引” 相关内容处开始阅读;2. 查看书中的目录,找到 “创建高性能索引” 目录,该目录指向的页码数为 141, 直接将书翻至 141 页开始阅读。 我们都知道,第一种方式的看书效率非常低。而第二中方式就能很快地找到对应的章节进行阅读。 而 索引 的作用就如同 目录 的功能一样,能够快速地从大量的数据中找出目标内容。 2. MySQL 中的索引原理 MySQL 支持很多类型的索引,其中 B+Tree 是谈得最多也是用得最多的索引类型。这里先推荐一篇文章:MySQL InnoDB 索引原理 ,文中对 InnoDB....

Spring Boot 使用 Kafka 生产和消费消息

引用一段官网的说明: Apache Kafka 是 一个分布式流处理平台 ,主要有以下三个特性: 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。 可以储存流式的记录,并且有较好的容错性。 可以在流式记录产生时就进行处理。 Kafka 的一些基本概念: Kafka 是以一个集群的方式运行在一台或者多台服务器上的。 Kafka 的消息以 topic 来进行区分。 将向 Kafka 集群中指定的 topic 发布消息的服务称为 Producer。 将从 Kafka 集群中指定的一个或多个 topic 中获取消息并消费的服务称为 Consumer。 以上内容均来自:Kafka 中文文档 。有关 topic、producer、consumer、client 的详细讲解可阅读官方文档。 1. 搭建 Kafka 环境 由于个人较为倾向于使用 Docker 搭建服务环境,所以文中只介绍如何使用 Docker 搭建 Kafka 环境。 在 kafka 目录下创建 docker-compose.yml 文件。 docker-compose.yml 文件内容: vers....

Spring Boot Mybatis 优雅解决敏感信息加解密问题

前言:在一些特定的应用场景下,需要对用户的敏感信息做加密处理,同样的在读取用户信息的时候又需要解密处理。 1. 常见解决方案 针对这种应用场景,通常我们的做法是:在数据入库之前,对敏感数据进行加密。执行查询 sql 返回结果后,再对结果进行解密。 我们很容易想到如下代码: @Override public int saveOne(VipCard vipCard) { vipCard.setName(encrypt(vipCard.getName())); vipCard.setCardNo(encrypt(vipCard.getCardNo())); vipCard.setIdNumber(encrypt(vipCard.getIdNumber())); vipCard.setPhoneNumber(encrypt(vipCard.getPhoneNumber())); return vipCardMapper.saveOne(vipCard); } @Override public VipCard findById(Integer id) { VipCard vipCard = v....

Spring Boot WebSocket 使用 SockJS 实现简单的聊天室功能

Spring Boot 提供了 Websocket 组件,直接使用即可。Spring 同时也封装了 SockJs 的消息传递功能,使用起来较为方便,开发过程中推荐使用。本文只讨论 SockJs 的方式。 1. 添加依赖 <!-- websocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2. 自定义消息处理器 Spring Boot 提供了一个 WebSocketHandler 消息处理接口,源码如下: public interface WebSocketHandler { void afterConnectionEstablished(WebSocketSession session) throws Exception; void handleMessage(WebSocketS....

Spring Boot 基于 AOP 搭建日志模块

AOP 是一种编程思想,Spring AOP 可以让我们从业务流程中抽取出一些通用的功能,然后针对这些通用的功能编写业务代码。而系统操作日志的记录功能就是这种通用的功能。 1. 添加依赖 Spring Boot 提供了 spring-boot-starter-aop 组件,我们直接拿来使用就可以。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 2. 自定义注解 出于便捷性,通常情况下我们使用注解方式来标明通用功能的生效范围。 定义自定义日志记录注解 @RecordLog : @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface RecordLog { String value() default ""; } 这....

Spring Boot 整合 Swagger2

现在我们大多都是做的前后端分离的项目,那后台开发人员就难免需要编写接口文档提供给前端开发人员进行接口调试。虽说市面上已经有很多文档工具,如 ShowDoc 。而编写接口文档本身也是件比较耗时的事情,为了节省在这方面的耗时,Swagger 也就应运而生了。 使用 Swagger2 可以自动生成 RestFul API 接口文档, 并且以页面的形式展示出来,还提供了接口调试功能。一看这些功能,就感觉很舒服了。 👀 这里提醒一下,Swagger 是一款基于 RESTFul 风格的 API 文档生成工具,所以我们需要提前对 RESTFul 有一个了解,如何编写 RESTFul 风格的接口是至关重要的。 1. 添加依赖 <swagger.version>2.9.2</swagger.version> <!-- swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifact....

Spring Boot 使用 Mybatis 配置多数据源

本文以 Spring Boot 整合 Mybatis 为基础,在该基础上配置多数据源。 1. 修改配置文件 回顾一下在 Spring Boot 整合 Mybatis 中 application.yml 文件配置: spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: ## 数据库连接 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false username: demo password: demo ....... 我们将数据源配置交给 druid 来管理,所以配置多数据源时只需要在 druid 中添加数据源配置即可: spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: db1....

一生懸命

© 2021 NekoChip's Blog

Powered by Solo
Theme solo-sakura by adlered
  ❥(^_-)Enjoy Code Enjoy Life❥
版权所有 ICP 证:鄂ICP备19026877号-1

主题 | Theme