自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用JavaMail发送邮件时嵌入公司logo图片

使用JavaMail发送邮件时嵌入公司logo图片

2023-08-17 22:23:43 1176

原创 Sublime 全选后光标在每一行、全局替换、全局换行

Sublime 全选后光标在每一行、全局替换、全局换行

2023-06-30 14:38:53 2015

原创 K8S环境下配置SpringBoot健康检查(活性探针)

容器存活性检查,用于判断容器是否健康,告诉 kubelet 一个容器什么时候处于不健康的状态。如果 LivenessProbe 探针探测到容器不健康,则 kubelet 将删除该容器,并根据容器的重启策略做相应的处理。如果ReadinessProbe探针探测到失败,Endpoint Controller 将从 Service 的 Endpoint 中删除包含该容器所在 Pod 的 IP 地址的Endpoint条目。:容器启动后要等待多少秒后存活和就绪探测器才被初始化,默认是 0 秒,最小值是 0。

2023-05-23 11:34:20 1787

原创 将HttpClient5封装成Http请求工具类

使用HttpClient5封装Http请求工具类

2023-03-27 17:38:23 384

原创 Java | PDF和Image格式的文件转ZPL格式 - 工具类

Java | PDF和Image面单转ZPL格式工具类

2023-01-06 15:39:09 837 1

原创 Java | ZIP打包下载文件

Java | ZIP打包下载文件

2022-12-21 11:38:34 218

原创 Postman 在请求时过滤请求体中加注释(预请求配置)

Postman在请求体中加注释

2022-12-02 15:51:22 806

原创 Java | 读取resources下面的Json文件

Java | 读取resources下面的Json文件

2022-11-30 15:21:50 869

原创 RocketMQ | Docker安装RocketMQ详细教程(foxiswho/rocketmq:4.8.0)

RocketMQ | Docker安装RocketMQ详细教程(foxiswho/rocketmq:4.8.0)

2022-10-13 20:45:00 1582

原创 redis报错:MISCONF Errors writing to the AOF file: No space left on device

redis报错:MISCONF Errors writing to the AOF file: No space left on device。原因和解决方案

2022-10-13 12:48:49 8871

原创 ES(六)| ES集群搭建、使用cerebro来监控ES集群状态

ES(六)| ES集群搭建、使用cerebro来监控ES集群状态

2022-08-25 21:00:00 953

原创 ES(五)| 集群搭建、集群脑裂问题、分布式存储和查询、集群故障转移

ES(五)| 集群搭建、集群脑裂问题、分布式存储和查询、集群故障转移

2022-08-25 20:30:00 500

原创 ES(四)| 数据聚合(分组、求和、求平均值、求最大最小值)

ES(四)| 数据聚合(分组、求和、求平均值、求最大最小值)

2022-08-24 22:45:00 1495

原创 ES(三)| 查询、排序、分页(深度分页问题)、高亮显示、Java使用RestClient进行ES操作

ES(三)| 查询、排序、分页(深度分页问题)、高亮显示、Java使用RestClient进行ES操作

2022-08-24 22:00:00 701

原创 ES(二)| 安装ES、Kibana、IK分词器、拼音分词器(自动补全)

ES(二)| 安装ES、Kibana、IK分词器、拼音分词器(自动补全)

2022-08-23 21:45:00 1393

原创 ES(一)| ES简介、倒排索引、索引库操作语法、文档操作语法、Java使用RestClient进行ES操作

ES简介、倒排索引、索引库操作语法、文档操作语法、Java使用RestClient进行ES操作

2022-08-23 21:00:00 484

原创 Canal | 工作原理、安装部署、使用第三方插件与SpringBoot完美整合

一、简介1.1.工作原理1.1.1.MySQL主备复制原理1.1.2.canal 工作原理1.2.使用场景1.2.1.抓取业务数据新增变化表1.2.2.更新缓存1.3.重要版本更新说明1.4.多语言二、安装和配置Canal1.开启MySQL主从1.1.开启binlog1.2.设置用户权限2.安装Canal2.1.创建网络2.2.安装Canal三、监听Canal(使用第三方插件)5.3.1.引入POM依赖:5.3.2.编写配置:5.3.3.编写Item实体类5.3.4.

2022-07-03 16:00:00 1038

原创 Redis分布式缓存(四)| 分片集群搭建、散列插槽、集群伸缩、故障转移、与SpringBoot集成分片集群

Redis分片集群1.搭建分片集群1.1.集群结构1.2.准备实例和配置1.3.启动1.4.关闭1.5.创建集群1.6.创建集群报错1.7.测试集群连接2.散列插槽2.1.插槽原理2.2.插槽切换测试2.3.小结3.集群伸缩3.1.向集群中添加一个节点分析3.2.创建新的redis实例3.3.添加新节点到redis3.4.转移插槽3.5.测试插槽转移3.6.从集群中删除一个节点4.故障转移4.1.自动故障转移4.2.手动故障转移4.2.1.案例需求:.....

2022-07-02 22:30:00 693

原创 Redis分布式缓存(三)| 哨兵集群原理、哨兵集群搭建、集群故障恢复、与SpringBoot集成

Redis哨兵集群1.哨兵原理1.1.集群结构和作用1.2.集群监控原理1.3.集群故障恢复原理1.4.小结2.搭建哨兵集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.测试3.使用Java的RedisTemplate连接哨兵集群3.1.新建一个SpringBoot的Demo工程3.1.引入POM依赖3.2. 新加一个 TestController 类:3.3.配置yml文件中的Redis地址3.4.配置读写分离......

2022-07-02 09:00:00 546

原创 Redis分布式缓存(二)| 主从架构搭建、全量/增量同步原理、主从同步优化

Redis主从架构1.搭建主从架构1.1.集群结构1.2.准备实例和配置1.3.启动1.4.停止1.5.开启主从关系1.6.测试2.主从数据同步原理2.1.全量同步2.2.增量同步2.3.repl_backlog原理3.主从同步优化

2022-07-02 08:30:00 895

原创 Redis分布式缓存(一)| 单机安装、RDB和AOF持久化

分布式缓存0.单机安装Redis0.1.首先需要安装Redis所需要的依赖:0.2.下载reids安装包1.Redis持久化1.1.RDB持久化1.1.1.执行时机1.1.2.RDB原理1.1.3.小结1.2.AOF持久化1.2.1.AOF原理1.2.2.AOF配置1.2.3.AOF文件重写1.3.RDB与AOF对比......

2022-07-01 22:30:00 525

原创 RabbitMQ(五) | MQ集群搭建、部署、仲裁队列、集群扩容

接上一篇:RabbitMQ(四) | 惰性队列 - 解决消息堆积问题RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。在RabbitMQ的官方文档中,讲述了两种集群的配置方式:镜像集群虽然支持主从,但主从同步并不是强一致的,某些情况下可能有数据丢失的风险。因此在RabbitMQ的3.8版本以后,推出了新的功能:仲裁队列来代替镜像集群,底层采用Raft协议确保主从的数据一致性。普通集群,或者叫标准集群(classic cluster),具备下列特征:结构如

2022-06-24 23:45:00 1200

原创 RabbitMQ(四) | 惰性队列 - 解决消息堆积问题

接上一篇:RabbitMQ(三) | 死信交换机、死信队列、TTL、延迟队列(安装DelayExchange插件)当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。解决消息堆积有两种思路:要提升队列容积,把消息保存在内存中显然是不行的。从RabbitMQ的3.6.0版本开始,就增加了Lazy Queues的概念,也就是惰性队列。惰性队列的特征如下:而要设置一个队列为惰性队列,只需要在声明队列时

2022-06-24 23:30:00 2097

原创 RabbitMQ(三) | 死信交换机、死信队列、TTL、延迟队列(安装DelayExchange插件)

接上一篇:RabbitMQ(二) | 消息可靠性(消息确认机制、消息持久化、消息重试机制)什么是死信?当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter):如果这个包含死信的队列配置了属性,指定了一个交换机,那么队列中的死信就会投递到这个交换机中,而这个交换机称为死信交换机(Dead Letter Exchange,检查DLX)。如图,一个消息被消费者拒绝了,变成了死信:因为simple.queue绑定了死信交换机 dl.direct,因此死信会投递给这个交换机:如果这个死信交

2022-06-24 23:15:00 1494

原创 RabbitMQ(二) | 消息可靠性(消息确认机制、消息持久化、消息重试机制)

接上一篇:RabbitMQ(一) | MQ技术对比,以及对RabbitMQ五种消息模型的使用消息从发送,到消费者接收,会经历多个过程:其中的每一步都可能导致消息丢失,常见的丢失原因包括:针对这些问题,RabbitMQ分别给出了解决方案:RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。返回结果有两种方式:首先,修改publisher服务中的applicati

2022-06-24 23:00:00 659

原创 RabbitMQ(一) | MQ技术对比,以及对RabbitMQ五种消息模型的使用

MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。比较常见的MQ实现:几种常见MQ的对比:追求可用性:Kafka、 RocketMQ 、RabbitMQ追求可靠性:RabbitMQ、RocketMQ追求吞吐能力:RocketMQ、Kafka追求消息低延迟:RabbitMQ、KafkaRabbitMQ官方提供了5个不同的Demo示例,对应了不同的消息模型:建立一个父工程,包含两个SpringBoot子工程。如下图:demo工程地址:在父工程p

2022-06-24 22:45:00 543

原创 Docker | 安装RabbitMQ详细教程,以及安装遇到的问题:Stats in management UI are disabled on this node

一、前言鉴于前面看过几个用Docker安装RabbitMQ的文章,在自己安装他们的安装教程后都会遇到的一个问题,这里我就重新再写一遍Docker安装RabbitMQ流程(内心复杂,就不能好好的让我把你们的安装教程链接分享出去吗,还要我自己来写一篇,让广大程序员避坑)。前面多数是跟别的安装教程重复的,老手可略过。二、找到对应镜像进入docker hub镜像仓库地址:https://hub.docker.com/.左上角搜索框输入rabbitMq,进入官方的镜像,可以看到以下几种类型的镜像;我们可.

2022-06-24 18:35:29 3425 4

原创 Docker 挂载数据卷、查看数据卷、清理数据卷

Docker 挂载数据卷、查看数据卷、清理数据卷创建容器并设置数据卷挂载查看所有数据卷列表清除数据卷

2022-06-24 15:21:34 3516

原创 try(){}用法中,括号()的作用

属于Java7的新特性。经常会⽤try-catch来捕获有可能抛出异常的代码。如果其中还涉及到资源的使⽤的话,最后在finally块中显⽰的释放掉有可能被占⽤的资源。但是如果资源类已经实现了AutoCloseable这个接⼝的话,可以在try()括号中可以写操作资源的语句(IO操作),会在程序块结束时⾃动释放掉占⽤的资源,不⽤再在finally块中⼿动释放了。不使用括号(try{}使用:)InputStream is = null;OutputStream os = null;try {}

2022-05-13 10:04:25 1166

原创 MySQL 行转列

一、从图一转为图二图一:图二:二、SQL:图一sql:SELECT warehouse_code, operate_type, sum(qty) FROM `warehouse_operate_record`group by warehouse_code, operate_type;图二sql:SELECT a.warehouse_code, sum(if(a.operate_type = 'container', a.qty, 0)) AS contain

2022-04-22 15:22:40 64

原创 SpringBoot整合Redisson使用分布式锁,模拟茅台抢购场景

SpringBoot整合Redisson使用分布式锁,模拟茅台抢购场景一、前言介绍二、项目Demo2.1.Demo下载地址2.2.模拟用户抢购2.2.1.将库存缓存到redis2.2.2.JMeter设置线程数:2.2.3.JMeter设置http请求:2.2.4.调用结果三、POM依赖四、配置类,可配置单节点和集群五、参考博客一、前言介绍前段时间研究了下分布式锁,实现分布式锁也有很多种方案,有基于数据库,基于zookeeper,基于redis+lua。一般我们常用redis+lua进行实现,zooke

2022-04-01 23:00:00 4732

原创 InnoDB解决幻读的方案 -- LBCC&MVCC

InnoDB解决幻读的方案 – LBCC&MVCC最近看了一篇写的挺不错的文章,分享给大家,文章对LBCC和MVCC都做了比较详细的解释说明,看完会有一种通透的感觉:https://mp.weixin.qq.com/s/738dB9Da-AIbMuaQLgqlzA.

2022-04-01 20:45:00 382

原创 Git | 配置命令、项目命令、常见问题、git-crypt加密解密

这里写目录标题@[TOC](这里写目录标题)一、Git安装和配置1.linux上安装git:2.查看git配置信息3.查看git用户名、密码、邮箱的配置4.设置git用户名、密码、邮箱的配置5.设置git用户名、密码、邮箱的配置(全局配置):6.git生成公钥:7.查看密钥(linux):8.查看密钥(windows):二、操作项目-常用命令汇总1.常用命令2.git子模块命令:2.git报错:命令command not found四、扩展:git-crypt加密解密1.How to Encrypt Rep

2022-03-14 12:25:04 1455

原创 Linux上git pull等操作需要每次都输入用户名和密码等问题

在linux上拉取项目代码后,发现每次git pull都需要输入用户名和密码,设置全局的都没有用,终于找到解决方法,直接用以下的命令即可。git config --global credential.helper store使用此命令后还会需要输入一次用户名和密码,但是下一次就不需要了...

2022-03-14 12:23:11 2838

原创 不要再问我怎么设置Postman的环境变量和全局变量了

最近有同事问我怎么设置postman的环境变量和全局变量token,避免每次更换环境进行接口测试还需要手动改请求地址,也避免每次token后失效重新获取的token还需要手动替换。比如我们有三个环境,本地、测试、正式,一般正式不对外进行开放。下面就开始实操:一、设置环境变量(图片较多,尽量说的详细点)1.示例首先,打开新版的postman(旧版和新版有一点小区别,就是环境变量后面的图标可能变了),如下图:刚开始的时候我新建了一个请求,测试登录,看右上角是没有环境变量的,然后那个眼睛的图标其.

2022-01-06 10:06:29 12640

原创 SpringBoot 实现异步调用@Async | 以及使用@Async注解可能会导致的问题

首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题?为什么要用异步框架,它解决什么问题?在SpringBoot的日常开发中,一般都是同步调用的。但实际中有很多场景非常适合使用异步来处理,如:注册新用户,送100个积分;或下单成功,发送push消息等等。就拿注册新用户这个用例来说,为什么要异步处理?第一个原因:容错性、健壮性,如果送积分出现异常,不能因为送积分而导致用户注册失败;因为用户注册是主要功能,送积分是次要功能,即使送积分异常也要提示用户注册成功,然后后面在针对积分异常.

2021-12-01 20:30:00 11986 7

原创 Exception | 优雅的输出Exception异常信息

这两种输出方式一直在用,趁着无聊把这个发出来,顺便自己记录一下,大家视不同情况使用。通常e.getMessage()并不能获取全部的错误信息,需要用到e.printStackTrace()查看完整错误信息,但是这个方法是void 只能在控制台输出。注意:e.printStackTrace()要尽量少用或不用,可能会导致锁死有两种方式推荐1.logger方式一个直接通过logger打印出来,这个方法是最简便的import org.slf4j.Logger;import org.slf4j..

2021-11-18 20:45:00 4286

原创 Kubernetes/k8s | kubectl、stern命令行工具安装,以及常用命令汇总

文章目录一、Kubernetes/k8s基本概念CKA证书:二、kubectl常用命令汇总三、stern命令行工具安装安装命令:stern常用命令:四、其他kubectl命令文章一、Kubernetes/k8s基本概念不了解k8s的pod、svc等概念的可以阅读一下k8s的官方文档,目前已有中文版:https://kubernetes.io/zh/docs/home/.CKA证书:有兴趣的开发或运维同学可以考一下CKA证书CKA考试报名,目前支持中文:https://training.lin

2021-11-18 20:00:00 1622

原创 发现一个好用的Java本地缓存解决方案 | Google 的 Guava CacheBuilder

public static void main(String[] args) { final Cache<String, Object> cache = CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.SECONDS).build(); Thread t1 = new Thread(() -> { while (true) { try { Thread.sleep(1

2021-08-05 09:36:13 566

原创 Explain详解与索引优化实践 | 文章记录

https://www.cnblogs.com/tufujie/p/9413852.htmlhttps://blog.csdn.net/qq_25667815/article/details/108682715

2021-08-05 09:35:02 118

mybatis_plus-17版本.zip

mybatis_plus插件,idea快速从mapper.java文件进入mapper.xml文件,通用版。使用起来开发更快捷,mybatis一键跳转工具,安装可参考“我的博客->idea开发相关->idea快速从mapper.java跳转到mapper.xml文件的插件”。

2019-07-29

generator-Mybatis快速生成实体类和mapper文件

generator工具包,Mybatis快速生成实体类和mapper文件,这个工具可以更快的实现。操作简单!详细注释!自动bat文件一键式操作! ps:由于第一次没有写使用说明,现在补上,各位就不要下载那个啦。csdn貌似不能删除(懵逼脸)

2018-08-01

mybatis_plus,idea快速从mapper进入xml工具-15版

mybatis_plus插件,idea快速从mapper.java文件进入mapper.xml文件,15版。使用起来开发更快捷,mybatis一键跳转工具,附带详细说明

2018-08-01

Mybatis快速生成实体类和mapperAndXml

大家使用mabatis时需要创建的实体类、dao层以及xml非常繁琐,这个工具可以更快的实现。操作简单!详细注释!自动bat文件一键式操作,再也不用敲啦!

2018-07-31

空空如也

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

TA关注的人

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