自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习技术的路上不断沉淀自己

Java, SQL, Spring, 微服务, 分布式, JavaScript, React

  • 博客(65)
  • 收藏
  • 关注

原创 chapter6:SpringBoot与Docker

Docker是一个开源的轻量级应用容器引擎, 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到Linux机器中实现虚拟化。(沙箱机制)Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为“容器”,容器启动非常快速。类似windows系统里面的ghost镜像操作系统,安装好后什么都有了。

2023-05-28 22:37:07 199

原创 Chapter5: SpringBoot与Web开发2

在后置处理器中,从容器中获取所有的EmbeddedServletContainerCustomizer定制器,调用定制器的customize定制方法设置配置属性, ServerProperties#customize设置servlet相关配置.TomcatEmbeddedServletContainerFactory容器工厂对象创建,后置处理器发现是嵌入式Servlet容器工厂,就获取所有的定制器先定制Servlet容器的相关配置。5)web的IOC容器会创建嵌入式的Servlet容器工厂;

2023-05-24 22:00:38 381

原创 IDEA启动外部tomcat报异常:javax.management.InstanceNotFoundException: Catalina:type=Server

环境:Windows11系统,IDEA2023.1.1, apache-tomcat-9.0.0.M9一直卡在。

2023-05-21 23:16:48 24

原创 Chapter4: SpringBoot与Web开发1

尚硅谷SpringBoot顶尖教程1. web准备首先创建SpringBoot应用,选择我们需要的模块;SpringBoot已经默认将这些web场景配置好了,只需要在配置文件中指定少量配置就可以运行;web场景, SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?WebMvcAutoConfiguration:帮我们给容器中自动配置web组件WebMvcProperties:封装配置文件的内容最后自己编写业务代码即可.2. SpringBoot对静态资源的

2023-05-14 16:53:09 349

原创 Chapter3: SpringBoot与日志

SpringBoot中的日志框架整合

2023-03-18 20:45:04 414

原创 Chapter2 : SpringBoot配置

SpringBoot全局的配置文件

2023-03-12 21:14:50 1015

原创 Chapter 1: SpringBoot入门

SpringBoot用来简化Spring应用开发, 约定大于配置, 去繁从简, just run就能创建一个独立的、产品级的应用。背景:J2EE笨重的开发,繁多的配置,低下的开发效率,复杂的部署流程, 第三方技术集成难度大。spring全家桶时代。SpringBoot ➡ J2EE一站式解决方案。SpringCloud ➡ 分布式整体解决方案。快速创建独立运行的Spring项目以及与主流框架集成;使用嵌入式的Servlet容器,应用无需打成WAR包;starters起步依赖与版本控制;

2023-03-12 21:05:38 199

原创 RocketMQ专题03

实际应用中要结合业务场景,合理设置刷盘方式和主从复制方式, 尤其是SYNC_FLUSH方式,由于频繁地触发磁盘写动作,会明显降低性能。通常情况下,应该把Master和Save配置成ASYNC_FLUSH的刷盘方式,主从之间配置成SYNC_MASTER的复制方式,这样即使有一台 机器出故障,仍然能保证数据不丢,是个不错的选择。......

2022-08-16 22:30:10 139

原创 RocketMQ专题02

B站视频:黑马程序员RocketMQ系统精讲 P35 - P88手敲shop源码: 代码地址模拟电商网站购物场景中的【下单】和【支付】业务。用户提交订单后,扣减库存成功,扣减优惠券成功,使用余额成功; 但是在确认订单操作失败, 需要对库存,优惠券,余额进行回退。如果保证数据的完整性?UML图, 使用MQ保证在下单失败后系统数据的完整性。用户通过第三方支付平台(支付宝,微信)支付成功后,第三方支付平台要通过回调API异步通知商家支付系统用户的支付结果, 支付系统根据支付结果修改订单状态、记录支付日志和给

2022-08-14 23:37:57 829

原创 IDEA中实现Mapper接口到映射文件xml的跳转

在mapper接口中的方法,需要定位到mapper映射xml文件中位置时,只能全局搜索或打开mapper映射xml文件内搜索,有没有什么方式可以直接鼠标点击mapper接口方法,就能快速定位到mapper映射xml文件的id位置呢?经过一番搜索,发现了一款好用的插件.......

2022-07-27 21:36:33 6164

原创 RocketMQ专题01

B站视频:黑马程序员RocketMQ系统精讲 P1 - P34消息队列是一种"先进先出"的数据结构. Message Queue其应用场景主要包含以下3个方面应用解耦系统的耦合性越高, 容错性就越低。 以电商应用为例,,用户创建订单后,如果耦合调用库存系统,、物流系统,、支付系统, 任何一个子系统出现了故障或者因为升级等原因暂时不可用, 都会造成下单操作异常, 影响用户使用体验。使用消息队列解耦, 系统的耦合性就降低了。比如物流系统发生故障, 需要几分钟才能修复, 在这段时间内, 物流系统要处理的

2022-06-20 21:01:11 592 1

转载 Notepad++下载安装NppFtp插件

1.下载NppFTP https://sourceforge.net/projects/nppftp/files/latest/download 2.解压压缩包 你解压后会得到两个目录bin和doc,那个doc不用管,然后你需要将bin文件夹命名为NppFTP文件夹,注意一定不...

2022-05-26 22:27:54 675

原创 深入RocketMQ原理

第1章 RocketMQ概述一、MQ概述1 、MQ简介MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。B站视频: 【尚硅谷】RocketMQ教程丨深度掌握MQ消息中间件2 、MQ用途从网上可以查看到很多的关于MQ用途的叙述,但总结起来其实就以下三点。限流削峰MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。

2022-05-24 21:28:17 621

原创 Redis高级2

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. 简介Redis前面的基础部分此处不做记录 , 本篇记录狂神说讲解的Redis配置及高级应用的知识.Redis官网Redis中文网https://redis.com.cn/http://www.redis.cn/https://www.redis.net.cn/2. 特殊数据类型2.1 geospatial 地理

2022-04-22 20:02:45 856

原创 Redis高级1

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/简介Redis前面的基础部分此处不做记录 , 本篇记录周阳老师讲解的Redis配置及高级应用的知识.尚硅谷-周阳思维导图链接: https://pan.baidu.com/s/1jY8bh8D0MN_4WN1hqwIQeQ提取码: ezog课件,别感谢我!B站视频: 尚硅谷超经典Redis教程,redis实战,阳哥版从

2022-04-05 20:57:11 2224

原创 Redis学习笔记2

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. Redis入门1.1 Redis简介B站视频: https://www.bilibili.com/video/BV1CJ411m7Gc?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click1.1.1 Redis引入2007年1

2022-03-20 10:48:41 840

原创 面试题-消息中间件专题

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. MQ的应用场景有哪些呢?(1) 使用MQ异步发送优惠券(2) 使用MQ异步发送短信(3) 使用MQ异步扣库存总之, 将执行比较耗时的代码操作交给MQ异步实现接口.为什么使用MQ(1) 异步处理(多线程和MQ)(2) 实现解耦(3) 流量削峰 (MQ实现抗高并发)你们项目中有使用过MQ吗? 谈谈你对MQ的理解.

2022-03-07 18:26:09 1834

原创 Redis学习笔记1

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. Redis简介B站视频 : https://www.bilibili.com/video/BV1Cb411j7RA?spm_id_from=333.999.0.01.1 NoSQLNoSQL, 泛指非关系型数据库, NoSQL即Not-only SQL, 它可以作为关系型数据库的良好补充, 随着互联网web2.0网

2022-03-07 16:46:49 892

原创 分布式全局ID策略

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. Zookeeper如何实现分布式锁?2. 说说你如何用redis实现分布式锁?3. 集群高并发情况下如何保证生成分布式全局ID的唯一性?3.1 为什么需要分布式全局唯一ID以及分布式ID的业务需求在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识. 例如:美团点评的金融, 支付, 餐饮, 酒店.猫眼电影等

2022-02-20 16:42:55 528

原创 MySql与Redis延迟双删策略

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. MySql与Redis如何实现数据同步问题?见第4点先更新db再删除缓存 or 先删除缓存再更新db的详解.2. 什么是缓存延迟双删策略?见第4点先删除缓存再更新db中的延迟双删方案3. 为什么不建议使用延迟双删?见第4点先删除缓存再更新db中的方案选择4. 先更新db再删除缓存 or 先删除缓存再更新db?先

2022-02-20 16:32:01 5363 1

原创 MySql相关面试题

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. MySQL底层采用什么数据结构2. 为什么MySQL的Innodb存储引擎必须要有主键3. 一条SQL语句查询慢, 如何优化?4. explain工具使用5. Sql语句查询如何避免回表查询6. 索引为何需要遵循最佳左侧法则?7. like不走索引如何优化?8. 千万级数据, 如何查询优化?9. 如何分表分库?

2022-02-20 16:17:16 265

原创 Map线程安全的面试题

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. Hashtable与HashMap的区别(1), HashMap实现不同步, 线程不安全. HashMap中的key-value都是存储在Entry中的.​ Hashtable线程安全. 使用synchronized .​ jdk7 底层数据结构: 数组 + 链表.​ jdk8 底层数据结构: 数组 + 链

2022-02-20 15:58:49 333

原创 微服务项目发布及调用等面试题

个人博客欢迎访问个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. 为什么不选择dubbo? 却选择SpringCloud?dubbo属于RPC框架, 底层是netty封装;SpringCloud不属于RPC框架, 属于微服务全家桶框架, 提供了分布式微服务整套解决方案.服务治理: nacos, eureka, zookeeper, consule分布式配置中心 nacos,

2022-02-20 15:35:01 615

原创 JDK8 新特性

个人博客个人博客: https://www.crystalblog.xyz/备用地址: https://wang-qz.gitee.io/crystal-blog/1. 简介JDK8是官方发布的一个大版本, 提供了很多新特性功能给开发者使用, 包含语言、编译器、库、工具和JVM等方面的十多个新特性。 本文将介绍编码过程中常用的一些新特性. JDK8帮助文档Lambda表达式函数式接口方法引用和构造器调用Stream API接口中的默认方法和静态方法新的日期时间APIOptiona

2022-02-18 17:19:19 730 2

原创 创建Gradle项目

1. 安装配置Gradle1.1 下载gradle在官网下载gradle包1.2 IDEA安装gradle插件直接将gradle-5.2.1-bin.zip包拖到IDEA里面, 然后重启IDEA, 就可以看到IDEA已经安装好了gradle插件.1.3 IDEA配置gradle构建1.4 配置环境变量配置GRADLE_HOME, 值为本地gradle插件位置.配置path, 添加;%GRADLE_HOME%\bin2. 创建父工程创建gradle父工程 ssm-parent-d

2022-02-13 23:03:49 2010

原创 Tomcat多实例部署方案

1. 介绍​ 在工作中, 所有应用原本是使用IBM Websphere容器进行部署的, 然而IBM全家桶毕竟是收费的, 而且技术支持依赖人家. 所以有了改成tomcat容器部署的方案. 但在改造过程中, 项目组将改造的五六个应用分别构建成war包, 每个应用war包使用一个tomcat容器, 分配各自不同的http端口, 这样的方式也是没什么问题的.​ 但就在2021年, 日志实现框架log4j2被爆出重量级的漏洞, 最终解决方案是升级官方发布的jar包版本. 那如果tomcat也出现这样的问题,

2022-02-13 22:04:21 1049

原创 Shell脚本导入导出数据

1. 介绍在工作中 , 很多场景都会涉及到db数据的导入导出, 为了不影响正常业务, 一般会选择在夜间交易访问量小的时候定时任务跑批进行数据的导入导出. 我们公司, 由于分为了不同区域的开发中心, 应用系统也比较多, 所以业务相互关联的各系统间的数据依赖, 我们是通过数据中台做数据中转的, 比如: A系统要做客户信息的操作但自己没有这部分信息, 客户信息主要是B系统在维护, 这时候A系统就需要用到B系统的数据.方案就是B系统将客户信息数据资源发布到数据中台, 因为A系统向数据中台订阅了B系统的客户信

2022-02-13 21:42:55 3117

原创 微服务-seata分布式事务

1. 分布式事务问题在单机单库的时候, 有本地事务可以保证数据的一致性; 但在分布式架构中, 原来的单体应用被拆分成多个微服务应用且都有各自独立的数据源, 一个业务场景的完成可能需要不同微服务模块和不同的库来完成. 此时每个微服务模块内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没有办法协调保证.比如: 用户购买商品的业务逻辑, 需要由3个微服务提供支持.仓储服务: 对给定的商品扣除仓储数量.订单服务: 根据采购需求创建订单.账户服务: 从用户账户中扣除余额.架构图:一句

2022-01-11 22:33:16 456

原创 微服务-Sentinel流控降级

1. Sentinel简介1.1 Sentinel是什么?随着分布式系统变得越来越流行,服务之间的可靠性变得比以往任何时候都更加重要。Sentinel, 是一个强大的流控组件,以“流”为切入点,涵盖流控、并发限制、熔断、自适应系统保护等多个领域,保障微服务的可靠性, 简单理解就是流量哨兵, 类似SpringCloud里的熔断器Hystrix, 且比Hystrix更加强大.轻量级的流量控制、熔断降级的Java库→Sentinel的GitHub开源→Sentinel官方介绍→Sentinel官

2021-12-26 13:24:52 675 1

原创 微服务-Nacos注册中心兼配置中心

1. Nacos是什么Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。( Nacos: Dynamic Naming and Configuration Service )从上面对Nacos名称分解可以看出, Nacos就是 注册中心 + 配置中心的组合, 即 Nacos = Eureka+ Spring Cloud Config + Spring Cloud Bus. 替代Eu

2021-12-16 22:04:29 489

原创 分布式任务调度 xxl-job

1. 集中式任务调度集中式任务与分布式任务调度恰好相反的概念,集中式任务就是单机任务,一个项目,一台服务器,也就是我们常说的单体应用。对于集中式任务,也就是我们Java开发中常见的定时任务。1.1 定时任务定时任务是指在指定时间去执行任务(业务代码);定时任务基本概念图1.2 集中式任务调度的缺陷不支持分片任务. 处理有序数据时, 多机器分片执行任务处理不同数据.不支持生命周期统一管理. 不重启服务情况下关闭, 启动任务.不支持集群, 存在任务重复执行的问题.不支持失败重试. 出现异

2021-12-06 20:53:12 1127

原创 idea如何开启Run Dashboard

1. 使用场景IDEA开发工具中以 run 或 debug 方式启动多个 SpringBoot 应用时, 日志控制台排开在窗口上方, 服务间调用涉及日志追踪时, 不方便快速切换来查看日志信息 . 如下图所示:IDEA提供了强大Dashboard功能(运行仪表盘), 可以很好的将上面的多应用启动实例进行管理.使我们配置的项目可视化,方便spring boot项目重新配置、Run、Debug,简化了我们的操作步骤。2. 开启Run Dashboard不同版本的IDEA开启Run Dashboa

2021-12-06 20:25:13 7966 3

原创 微服务-链路追踪Spring Cloud Sleuth

1. 应用背景在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。如果在这个过程中出现了异常,就很难去定位问题。所以,必须要实现一个分布式链路跟踪的功能,直观的展示出完整的调用过程。如果想要诊断复杂操作,通常的解决方案是在请求中传递唯一的ID到每个方法来识别日志。Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案 ,

2021-12-05 15:42:00 464

原创 微服务-消息驱动Spring Cloud Stream

1. 什么是SpringCloudStream→官网 , 官网doc , Spring Cloud Stream中文指导手册Spring Cloud Stream是一个构建事件消息驱动的微服务框架, 提供了灵活的编程模型。它构建在SpringBoot上,提供了Kafka,RabbitMQ等消息中间件的个性化配置,引入了发布订阅、消费组和分区的核心概念.2. 为什么使用Spring Cloud Stream2.1 问题场景在实际开发过程中,服务与服务之间通信经常会用到消息中间件, 比

2021-12-02 21:44:03 1618

原创 微服务-消息总线 SpringCloud Bus

1. why上篇中的配置中心服务端可以实现从远程仓库拉取实时变更的配置, 但是客户端无法直接实现配置更新, 需要向客户端发送一个post请求刷新配置(/actuator/refresh), 客户端微服务少的时候还能接受, 一旦有成百上千个客户端微服务, 不可能让运维工程师向每个客户端发送一次post请求手动刷新配置. 那么, 可否通过一种广播技术大范围的自动刷新,实现一次通知, 处处生效呢? 那就是下面我要写的消息总线技术.2. 什么是消息总线在微服务架构的系统中,通常会使用轻量级的消息代理来构建一

2021-11-28 20:57:35 1340

原创 Windows系统安装RabbitMQ

1. RabbitMQ资源下载Wiindows环境安装RabbitMQ, 首先需要安装 Erlang 环境. 另外, RabbitMQ和Erlang有版本兼容关系需要注意, 可以去官网查看不同的RabbitMQ版本兼容的最低和最高Erlang版本.RabbitMQ和Erlang版本选择Erlang下载RabbitMQ官网下载点击release会跳转到GitHub→下载页也可以将上面下载页面往下面滑动, 看到Windows installer , 进入GitHub→最新版本下载页.往下

2021-11-27 12:19:30 1329

原创 微服务-配置中心Spring Cloud Config

1. 为什么需要配置中心微服务要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,每一个微服务自己带着一个application.yml,成千上百个配置文件的管理就比较头疼了. 所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题.2. 是什么官网资料→SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不

2021-11-22 22:05:33 750

原创 微服务-API网关gateway

1. 为什么放弃Zuulspring-cloud之前整合的Netflix公司的Zuul网关用的好好的 , 为什么spring官方又推荐使用gateway网关呢? 有以下几点原因.(1) 上一代Zuul-1.x已经停止更新维护, 意味着bug没有更好的解决.(2) Zuul-1.x 采用的是Tomcat容器,是一个基于阻塞 I/ O的 API网关, 使用Servlet 2.5阻塞架构, 它不支持任何长连接(如 WebSocket).Zuul 的设计模式和Nginx较像,每次 I/ O 操作

2021-11-18 21:33:59 531

原创 微服务-声明式接口调用OpenFeign

OpenFeign是什么OpenFeign与Feign的区别→GitHub开源链接→官网解释→Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口, 然后在上面添加注解@FeignClient。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters , Feign可以与Eureka和Ribbon

2021-11-13 20:38:03 625

原创 微服务-API网关Zuul

Why微服务为什么需要API网关, 因为在微服务架构中,后端服务往往不直接开放给客户端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方客户端和后端服务之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,而后将请求均衡分发给后台服务端。Spring Cloud提供了解决方案: zuul网关.Zuul简介Spring Cloud Zuul路由是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JV

2021-10-31 23:07:03 167

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除