自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 收藏
  • 关注

原创 Sublime Text 常用插件

文章目录ConvertToUTF8BracketHighlighterEmmetJsFormatCompact Expand CSS CommandColor HighlighterSublimeTmplAlignmentAutoFileNameDocBlockrSublimeCodeIntelHTML-CSS-JS PrettifySideBarEnhancementsView In BrowserLiveReloadTortoiseSVNTheme-SodaTheme-FlatlandTheme-Nex

2020-11-02 15:04:08 11289 1

原创 Sublime Text 常用快捷键

文章目录通用(General)编辑(Editing)选择(Selecting)查找&替换(Finding&Replacing)跳转(Jumping)窗口(Window)屏幕(Screen)工欲善其事,必先利其器。本文收集 Sublime Text 常用快捷键,持续更新中…通用(General)↑↓←→:上下左右移动光标Alt:调出菜单Ctrl + Shift + P:调出命令板(Command Palette)Ctrl + `:调出控制台编辑(Editing)Ctrl

2020-11-02 15:01:32 758

原创 JVM 内存分析工具 - MAT

文章目录1 简介2 使用2.1 准备 MAT2.2 准备堆转储文件(Heap Dump)2.3 分析堆转储文件2.3.1 Histogram2.3.2 Leak Suspects2.3.3 内存快照对比MAT(Memory Analyzer Tools)是一个快速且功能丰富的 Java 堆分析器,可帮助您查找内存泄漏并减少内存消耗。使用 MAT 分析具有数亿个对象的高效堆转储,快速计算对象的保留大小,查看谁阻止垃圾收集器收集对象,运行报告以自动提取泄漏嫌疑者。1 简介MAT 是一款非常强大的内存分析工

2020-10-29 17:17:26 2213

原创 Elasticsearch 常用命令

文章目录1 全局2 索引3 文档4 搜索4.1 普通4.2 匹配4.3 组合4.4 过滤4.5 聚合4.6 官方搜索例子通过本文学习 Elasticsearch 常用命令,以下所有命令都在 Kibana 的 Dev Tools 中执行。1 全局查看集群健康状态:GET /_cat/health?v查看节点状态:GET /_cat/nodes?v查看所有索引信息:GET /_cat/indices?v2 索引新增索引:PUT /user新增索引-自定义settings:PUT /us

2020-10-21 16:00:40 326

原创 Spring Boot 整合 Elasticsearch

文章目录1 概述1.1 简介1.2 基本概念1.3 常用命令2 创建工程并配置3 使用4 测试学习在 Spring Boot 中 Elasticsearch。在 Spring Boot 中,使用的 Elasticsearch 实际上是 Spring Data Elasticsearch , Spring Data 是 Spring 家族的一个子项目,用于简化 SQL 和 NoSQL 的访问,在 Spring Data 中,只要你的方法名称符合规范,它就知道你想干什么,不需要自己再去写 SQL 。1 概述

2020-10-16 18:13:06 1052

原创 MySQL binlog 详解

文章目录1 概述2 配置及常用操作2.1 配置 binlog 日志2.2 验证 binlog 日志是否开启2.3 查看所有 binlog 日志列表2.4 刷新 log 日志2.5 清除日志文件到指定文件2.6 重置(清空)所有 binlog 日志2.7 查看 binlog 日志(使用 mysqlbinlog)2.8 根据 binlog 日志恢复数据(使用 mysqlbinlog)3 数据恢复实战3.1 准备测试数据3.2 模拟误操作3.3 模拟误操作之后数据的正常变更3.4 根据 binlog 日志恢复数据

2020-07-14 08:58:37 627

原创 Redis 实现 UV 统计

文章目录1 概述2 基本使用本文学习在 Redis 中通过 HyperLogLog 实现 UV 统计。1 概述一般我们评估一个网站的访问量,有几个主要的参数:PV(Page View)网页的浏览量、UV(User View)访问的用户量。有很多第三方工具可以统计,如 cnzz,友盟等。如果自己实现的话,PV 比较简单,可以直接通过 Redis 计数器实现。但是 UV 就不一样,UV 涉及到去重的问题。常规思路:我们首先需要在前端给每一个用户生成一个唯一 id,无论是登录用户还是未登录用户都需要,这

2020-07-14 08:57:42 1614

原创 Redis 实现消息队列

文章目录1 概述2 基本使用2.1 消息队列2.2 延迟消息队列本文学习在 Redis 中通过 List/ZSet 实现消息队列。1 概述我们平时使用的消息队列有 RabbitMQ、RocketMQ、ActiveMQ 以及大数据里边的 Kafka,他们都非常专业,提供了很多功能。如果我们的需求或场景非常简单,用他们就有点大材小用了,比如我们只需要 1 个消息队列,且只有 1 个消费者,类似这种简单情况我们可以直接使用 Redis 来做消息队列。2 基本使用2.1 消息队列Redis 作为消息队

2020-07-14 08:57:12 705

原创 Redis 实现分布式锁

文章目录1 概述2 基本使用3 使用 Lua 脚本解决超时问题本文学习在 Redis 中通过 String 实现分布式锁。1 概述业务场景:一个简单的用户操作,一个线程去修改用户的状态,首先从数据库中读出用户的状态,然后在内存中进行修改,修改完成后,再存回去。在单线程中,这个操作没有问题,但是在多线程中,由于读取、修改、存这是三个操作,不是原子操作,这样会出问题。对于这种类似问题,我们可以使用分布式锁来限制程序的并发执行。分布式锁实现的思路很简单,就是进来一个线程先占位,当别的线程进来操作时,发

2020-07-14 08:56:34 208

原创 Redis 中的 Java 客户端(Jedis / Lettuce)

文章目录1 开启远程连接2 Jedis2.1 基本使用2.2 连接池3 Lettuce本文学习使用 Java 客户端(Jedis / Lettuce) 操作 Redis 。1 开启远程连接Redis 默认是不支持远程连接的,需要手动开启,修改 redis.conf ,主要有 3 个地方改动:vi /usr/local/redis-5.0.8/redis.conf# bind 127.0.0.1protected-mode norequirepass 123456之后重新启动 Redis

2020-06-15 08:49:43 806

原创 Redis 常用命令

文章目录1 基本数据类型相关命令2 key 相关命令通过本文学习 Redis 常用命令。1 基本数据类型相关命令参考 Redis 基本数据类型(字符串、列表、集合、散列、有序集合) 。2 key 相关命令key 相关的命令,对不同的数据类型都通用。del以删除一个已经存在的 key 。127.0.0.1:6379> set k1 helloOK127.0.0.1:6379> del k1(integer) 1127.0.0.1:6379> get k1(nil

2020-06-15 08:48:27 195

原创 Redis 基本数据类型(字符串、列表、集合、散列、有序集合)

文章目录1 String1.1 String1.2 Bit2 List3 Set4 Hash5 ZSetRedis 中的数据都是以 key/value 的形式存储的,key 都是字符串,value 支持多种不同的数据类型,其中基本数据类型有:String(含 Bit)、List、Set、Hash、ZSet。1 StringString 是 redis 中最基本的数据类型,redis 中的 String 类型是二进制安全的,即它可以包含任何数据,比如一个序列化的对象甚至一张 jpg 图片,要注意的是 r

2020-06-15 08:47:07 479

原创 Redis 安装

文章目录1 简介2 安装2.1 编译安装(推荐)2.2 使用 Docker 安装2.3 直接安装2.4 在线体验3 启动4 连接5 关闭手把手带你使用多种姿势安装 Redis 。1 简介Redis(Remote Dictionary Service) 是一个使用 ANSI C 编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。从 2015 年 6 月开始,Redis 的开发由 Redis Labs 赞助,而 2013 年 5 月至 2015 年 6 月期间,其开发由 Pivotal 赞助。

2020-06-15 08:45:08 180

原创 IntelliJ IDEA 常用快捷键

文章目录工欲善其事,必先利其器。本文收集 IntelliJ IDEA 常用快捷键,持续更新中…搜索所有文件:双击Shift搜索类文件:Ctrl+N搜索文件:Ctrl+Shift+N搜索函数:Ctrl+Alt+Shift+N全局内容搜索:Ctrl+Shift+F全局内容替换:Ctrl+Shift+R快速打开或隐藏工程面板:Alt+1切换代码视图:Alt+左箭头/右箭头关闭当前代码文件:Ctrl+F4查看近期文件:Ctrl+E查看近期位置:Ctrl+Shift+E查看变量

2020-06-04 14:30:48 260

原创 IntelliJ IDEA 常用配置

文章目录System SettingsFile and Code TemplatesFile EncodingsMavenApplication ServersRun/Debug ConfigurationsBuild project automaticallyGitGitHub工欲善其事,必先利其器。本文收集 IntelliJ IDEA 常用配置,持续更新中…System SettingsFile and Code TemplatesFile EncodingsMavenApplica

2020-06-04 14:29:38 360

原创 Spring Boot 整合 MyBatis 通用 Mapper(TkMybatis)

学习在 Spring Boot 中整合 MyBatis 通用 Mapper(TkMybatis)。通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作。通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,使用它可以很方便的进行开发,可以节省开发人员大量的时间。1 概述通用 Mapper 都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。极其方便的使

2020-05-25 10:43:55 1276

原创 Spring Cloud Alibaba Sentinel 断路器

学习在 Spring Cloud 中使用 Sentinel 实现断路器,类似 Spring Cloud Netflix Hystrix ,包括实时监控、簇点链路、流控、降级等功能。 Sentinel 提供的功能更强大,使用更方便,可以替代 Hystrix ,还能结合 Nacos 中的配置中心一起使用。1 概述Sentinel 的使用场景丰富,有完备的实时监控,广泛的开源生态。Sentinel 整体上可以分为两个核心部分:核心库和控制台。2 安装首先下载控制台 jar 包,这是一个 Spring B

2020-05-25 10:42:51 954

原创 Spring Cloud Alibaba Nacos 服务配置中心和注册中心

学习在 Spring Cloud 中使用 Nacos 实现服务配置中心和注册中心,类似 Spring Cloud Config 和 Spring Cloud Netflix Eureka 提供的功能。1 概述Spring Cloud Alibaba 是阿里巴巴提供的一套微服务开发一站式解决方案。主要提供的功能:分布式配置中心服务注册与发现服务限流降级消息驱动分布式事务阿里云对象存储(绑定阿里云)阿里云短信(绑定阿里云)提供的组件:Nacos:主要提供了服务动态配置、服务及元数据

2020-05-25 10:40:38 345

原创 Spring Cloud Sleuth 链路追踪

学习在 Spring Cloud 中使用 Sleuth 实现链路追踪,包括基本使用、异步任务、定时任务等功能,并结合 Zipkin 展示收集到的信息。1 概述在大规模的分布式系统中,一个完整的系统是由很多种不同的服务来共同支撑的。不同的系统可能分布在上千台服务器上,横跨多个数据中心。一旦系统出问题,此时问题的定位就比较麻烦。在微服务环境下,一次客户端请求,可能会引起数十次、上百次服务端服务之间的调用。一旦请求出问题了,我们需要考虑很多东西:如何快速定位问题?如果快速确定此次客户端调用,都涉及到哪些

2020-05-25 10:38:52 754

原创 Spring Cloud Stream 构建消息驱动的微服务

学习在 Spring Cloud 中使用 Stream 构建消息驱动的微服务,包括基本使用、自定义消息通道、消息分组、消息分区、定时任务等功能。1 概述Spring Cloud Stream 提供了一个微服务和消息中间件之间的粘合剂,这个粘合剂叫做 Binder , Binder 负责与消息中间件进行交互。而开发者则通过 inputs 或者 outputs 这样的消息通道与 Binder 进行交互。2 基本使用创建 Spring Boot 项目 spring-cloud-stream ,添加 Web

2020-05-25 10:37:30 267

原创 Nginx 配置 SSL 支持 HTTPS(自签证书)

Nginx 配置 SSL ,使其支持 HTTPS(自签证书)。1 检查 Nginx 是否支持 SSL/usr/local/nginx/sbin/nginx -V查看是否包含 --with-http_ssl_module 模块,如果没有,则需要在编译时指定或增加该模块。未安装过 Nginx具体安装步骤参考: Nginx 安装 - Linux# 只需要在 ./configure 时指定 ssl 模块--with-http_ssl_module已安装过 Nginx如果已经安装过 N

2020-05-22 11:59:35 6020

原创 IntelliJ IDEA 常用插件

工欲善其事,必先利其器。本文收集 IntelliJ IDEA 常用插件,持续更新中…Alibaba Java Coding Guidelines阿里巴巴《Java 开发手册》配套插件,可以实时检测代码中不符合手册规约的地方,助你码出高效,码出质量。使用:当我们违反手册规约时,该插件会自动检测并进行提示。同时提供了一键检测所有代码规约情况和切换语言的功能。如果你想修改某条规约的检测规则的话,可以通过设置的 Editor -> Inspections 进行修改。Easy Code

2020-05-15 18:30:00 564

原创 Spring Cloud Bus 消息总线

学习在 Spring Cloud 中使用 Bus 实现消息总线,包括配置文件自动批量刷新、逐个刷新等功能。1 概述Spring Cloud Bus 通过轻量级的消息代理连接各个微服务,可以用来广播配置文件的更改,或者管理服务监控。在 Spring Cloud Config 分布式配置中心 一文中,我们提到,当配置文件发生变化之后, config-server 可以及时感知到变化,但是 config-client 不会及时感知到变化,默认情况下, config-client 只有重启才能加载到最新的配置文件。当

2020-05-15 18:29:12 295

原创 Spring Cloud Config 分布式配置中心

学习在 Spring Cloud 中使用 Config 实现分布式配置中心,包括基本使用、配置文件位置、配置文件加解密、Config Server 安全管理、结合注册中心、配置文件动态刷新、请求失败重试等功能。1 概述常见的分布式配置中心的解决方案有:Spring Cloud Config、QConf(360)、diamond(淘宝)、disconf(百度)、Apache Commons Configuration、owner、cfg4j 等。Spring Cloud Config 是一个分布式系统配置管理

2020-05-15 18:28:33 453

原创 如何在人力资源管理系统中提高 RabbitMQ 消息消费的可靠性

学习如何在人力资源管理系统中提高 RabbitMQ 消息消费的可靠性,避免消息被重复消费。1 概述在 如何在人力资源管理系统中提高 RabbitMQ 消息发送的可靠性 一文中,我们确保了消息发送的可靠性。但是,在这样的机制下,又带来了新的问题,就是消息可能会重复投递,进而导致消息重复消费。例如一个员工入职了,结果收到了两封入职欢迎邮件。我们需要通过技术手段去处理这个问题。比如增加消息消费确认机制,可以有效的提高消息消费的可靠性。说到这个话题,我们就不得不先来说说消息幂等性。2 幂等性幂等性本身是

2020-05-09 17:00:28 308

原创 如何在人力资源管理系统中提高 RabbitMQ 消息发送的可靠性

学习如何在人力资源管理系统中提高 RabbitMQ 消息发送的可靠性,避免因为网络抖动等原因导致消息发送失败。1 概述我们在人力资源管理系统中引入了消息中间件 RabbitMQ ,并结合 RabbitMQ 搭建了独立的邮件服务器 hr-mail 。当在系统中录入一个员工后,系统会自动向消息中间件 RabbitMQ 发送一条消息,这条消息包含了新入职员工的基本信息。然后邮件服务器从 RabbitMQ 上消费消息,根据收到的消息,自动的发送一封入职欢迎邮件。RabbitMQ 虽然用着方便,有很多优势,但

2020-05-09 16:59:59 389

原创 Spring Cloud Gateway 服务网关

学习在 Spring Cloud 中使用 Gateway 实现服务网关,包括基本使用、自动代理、 Predicate 、 Filter 等功能。1 概述Gateway 的主要功能如下:限流路径重写动态路由集成 Spring Cloud DiscoveryClient集成 Hystrix 断路器和 Zuul 相比,有如下区别:Zuul 是 Netflix 公司的开源产品, S...

2020-05-05 09:22:41 337

原创 Spring Cloud Netflix Zuul 服务网关

学习在 Spring Cloud 中使用 Zuul 实现服务网关,包括基本使用、请求过滤、忽略路径、前缀等功能。它是 Netflix 家族成员之一。1 概述由于每一个微服务的地址都有可能发生变化,无法直接对外公布这些服务地址,基于安全以及高内聚低耦合等设计,我们有必要将内部系统和外部系统做一个切割。一个专门用来处理外部请求的组件,就是服务网关,常用功能:权限问题统一处理数据剪裁和聚合...

2020-05-05 09:21:20 361

原创 Spring Cloud Resilience4j 断路器

学习在 Spring Cloud 中使用 Resilience4j 实现断路器,包括断路器 CircuitBreaker 、限流 RateLimiter 、请求重试 Retry 等功能。1 概述Resilience4j 是 Spring Cloud Greenwich 版推荐的容错解决方案,相比 Hystrix , Resilience4j 专为 Java 8 以及函数式编程而设计。它主要提...

2020-04-30 09:28:36 1179 1

原创 Spring Cloud OpenFeign 声明式服务调用

学习在 Spring Cloud 中使用 OpenFeign 实现声明式服务调用,包括简单调用、参数传递、继承特性、日志配置、数据压缩、服务降级/容错等功能。1 概述前面无论是基本调用,还是 Hystrix ,我们实际上都是通过手动调用 RestTemplate 来实现远程调用的。使用 RestTemplate 比较繁琐,每一个请求的参数、请求地址、返回数据类型不同,其他都是一样的,所以我们...

2020-04-25 18:18:30 481

转载 瞬间几千次的重复提交,我用 Spring Boot + Redis 扛住了(实现接口自动幂等)

使用 Spring Boot + Redis + Interceptor + 自定义 Annotation 实现接口自动幂等,解决接口重复提交问题。转载自:https://www.jianshu.com/p/c806003a85301 前言在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的...

2020-04-22 16:11:09 285

原创 Spring Cloud Netflix Hystrix 断路器

一文读懂 Spring Cloud 中使用 Hystrix 实现断路器,包括服务降级/容错、异步调用、异常处理、请求缓存、请求合并等功能。1 概述Hystrix 叫做断路器/熔断器。微服务系统中,整个系统出错的概率非常高,因为在微服务系统中,涉及到的模块太多了,每一个模块出错,都有可能导致整个服务出错,只有当所有模块都稳定运行时,整个服务才算是稳定运行。我们希望当整个系统中,某一个模块无法...

2020-04-19 16:46:18 202

原创 Spring Cloud Consul 服务注册与发现

学习在 Spring Cloud 中使用 Consul 实现服务注册与消费。1 概述在 Spring Cloud 中,大部分组件都有备选方案,例如服务注册中心,除了常见 Eureka 之外,还有 Zookeeper 和 Consul 等。 Consul 是 HashiCorp 公司推出来的开源产品,主要提供了服务发现、服务隔离、服务配置等功能。相比于 Eureka 和 Zookeeper ...

2020-04-16 14:30:35 234

原创 Spring Cloud 中 RestTemplate 的使用说明

本文整理在 Spring Cloud 中 RestTemplate 的使用说明,包括 GET/POST/PUT/DELETE 请求以及一些通用的请求执行方法 exchange/execute ,结合 @LoadBalanced 注解可以实现客户端负载均衡。1 概述Java 中的 HTTP 请求工具有 HttpURLConnection( JDK 自带)/HttpClient/OkHttp 等...

2020-04-16 14:28:54 416

原创 Spring Cloud Netflix Eureka Client 服务注册与发现

学习在 Spring Cloud 中使用 Eureka Client 实现服务注册与消费。1 服务注册服务注册就是把一个微服务注册到 Eureka Server 服务注册中心上,这样,当其他服务需要调用该服务时,只需要从 Eureka Server 上查询该服务的信息即可。创建 Spring Boot 项目 eureka-client-provider ,作为我们的服务提供者,添加 Web...

2020-04-16 14:27:53 354

原创 Spring Cloud Netflix Eureka Server 搭建服务注册中心

学习在 Spring Cloud 中使用 Eureka Server 搭建服务注册中心,手把手带你实现单机和集群两种模式。Eureka 本身是使用 Java 来开发的, Spring Cloud 使用 Spring Boot 技术对 Eureka 进行了封装,所以,在 Spring Cloud 中使用 Eureka 非常方便,只需要引入 spring-cloud-starter-netflix...

2020-04-16 14:26:25 1157

原创 Spring Cloud Netflix Eureka 概述

Eureka 是 Spring Cloud 中的服务注册中心,类似于 Dubbo 中的 Zookeeper 。本文学习 Eureka 概述、工作细节、集群等。1 服务注册中心什么是注册中心,我们为什么需要注册中心?我们首先来看一个传统的单体应用:在单体应用中,所有的业务都集中在一个项目中,当用户从浏览器发起请求时,直接由前端发起请求给后端,后端调用业务逻辑,给前端请求做出响应,完成一次调...

2020-04-16 14:25:35 267

原创 Spring Cloud 概述

通过本文学习微服务介绍、 Spring Cloud 介绍,让大家对 Spring Cloud 有个初步的认识。1 微服务介绍2009 年, Netflix 公司重新定义了它的应用程序员的开发模型,这个算是微服务的首次探索。2014 年, 《Microservices》 这篇文章以一个更加通俗易懂的方式,为大家定义了微服务。互联网应用产品的两大特点:需求变化快。用户群体庞大。在这...

2020-04-16 14:24:33 318

原创 Spring Boot 整合 DevTools(实现热部署)

Spring Boot 整合 DevTools ,实现类文件和静态资源文件的热部署,只需要添加 spring-boot-devtools 依赖就可以轻松实现。1 自动编译配置在 Eclipse 中文件修改后,保存就会自动编译,但在 IDEA 中没有显示的文件保存操作,因此默认情况下文件修改后不会自动编译,需要手动编译(快捷键: Ctrl + F9 ),从而触发项目自动重启。当然我们可以通过配...

2020-04-07 14:19:13 1306

原创 Spring Boot 整合邮件发送

学习在 Spring Boot 中发送邮件,使用对应的自动化配置类,实现非常方便。1 邮件概述常用的邮件协议有 SMTP、POP3、IMAP 。现在假设从 aaa@qq.com 发送邮件到 111@163.com ,邮件投递过程如下:aaa@qq.com 先将邮件投递到腾讯的邮件服务器。腾讯的邮件服务器将我们的邮件投递到网易的邮件服务器。111@163.com 登录网易的邮件服务器查...

2020-04-02 16:43:33 879

空空如也

空空如也

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

TA关注的人

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