自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雨剑的博客

一起嗨!

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

原创 动态规划步骤

使用拼硬币的案例:面值为2元、5元、7元的3种类型硬币,最少可以使用多少枚硬币拼出27元钱?

2022-08-10 22:41:47 287 1

原创 一文彻底理解各种排序算法

排序算法种类繁多,每一种复杂度都不一样,差异较大,我们不禁有个疑问:我们为什么要记那么多种算法,为什么不直接使用最好的一种排序算法呢?答案是,这个要看具体的待排序数据,没有一种排序算法在任何场景下性能都是最优的。这就需要我们真正的理解每种算法的特性,本文针对各种算法进行统一整理比对,彻底理解它们。

2022-01-24 16:02:35 766 1

原创 mybatisPlus之自动填充工具MetaObjectHandler使用demo及注意点

文章目录一. 使用场景二. 使用姿势1.实现MetaObjectHandler接口2. 实体类上添加注解三. 不生效的场景1. 试试2. dad一. 使用场景MetaObjectHandler是元对象字段填充控制器抽象类,实现公共字段自动写入。比如通常,我们在建表时,会设置几个公共字段:创建人(creator)、更新人(uptater)、创建时间(create_time)、更新时间(update_time)。每次将实体对象新增入库时,都要设置创建人和创建时间;每次更新实体对象时,都要设置更新人和更新

2022-01-10 15:27:15 12448 4

原创 线程池ThreadPoolTaskExecutor实战

文章目录1. ThreadPoolTaskExecutor是什么2. 为什么使用ThreadPoolTaskExecutor2.1直接使用ThreadPoolExecutor2.2 使用ThreadPoolTaskExecutor3. 如何使用ThreadPoolTaskExecutor3.1 配置3.2 业务中使用3.3 TaskDecorator1. ThreadPoolTaskExecutor是什么ThreadPoolTaskExecutor是Spring基于java本身的线程池ThreadPoo

2021-11-27 17:52:00 10960 1

原创 Mysql系列(四)彻底理解MVCC+行锁+表锁+间隙锁

文章目录一. 什么是MVCC二.什么是行锁、表锁、间隙锁三. MVCC与各种锁的关系四. MVCC的实现原理4.1 多版本4.2 undo log4.2 readview一. 什么是MVCCMVCC(Multi-Version Concurrency Control),即多版本并发控制。不使用锁,主要是用来提高数据库的并发性能;算是一种概念,不同的数据库有不同的实现方式,本文主要介绍mysql的innodb引擎中的实现方式。在mysql的innodb中,前面我们有篇文章《Mysql系列(二)Mysql

2021-08-29 12:09:52 2349

原创 springboot2.x +RedisCacheManager + CacheManager +@Cacheable 实现注解化缓存管理

文章目录一. 环境准备1.1 引入redis starter依赖1.2 配置CacheManager1.2.1 springboot2.x1.2.2 springboot1.x二. 具体使用2.1 @Cacheable2.2 @CachePut2.3 @CacheEvict三. RedisCacheConfiguration参数说明实际业务开发中,免不了会使用redis作为缓存,加快接口响应速度。一个典型的场景:前端请求到后端服务时,后端服务先查询redis缓存,如果查到则使用缓存数据,否则再查mysql

2021-07-17 18:25:22 1641 2

原创 分库分表神器sharding-jdbc在springboot中的全场景使用demo

文章目录一.概述1.1 sharding-jdbc身份介绍1.1.1实现原理1.1.2 适用范围1.2 sharding-jdbc版本二.sharding-jdbc分表2.1 项目环境准备2.1.1 maven依赖2.1.2 数据库2.1.3 项目结构2.2 application.properties文件配置2.3 分表测试demo2.3.1 数据插入2.3.2 查询数据2.3.3 关联查询二.sharding-jdbc分库一.概述我们知道,如果你的业务表,比如商品表数据达到千万级别甚至更高,数据库的

2021-06-27 19:00:06 4559 3

原创 Nacos系列(一)docker安装单机版nacos服务

文章目录一.概述二.部署步骤2.1 下载demo文件2.2 安装并启动2.3 Nacos 控制台2.4 服务注册与发现2.5 配置发布与获取一.概述2018 阿里巴巴将Nacos开源,nacos是开源后的名字,是基于阿里内部Configserver(注册中心)、Diamond(持久化配置中心)、Vipserver(类似Configserver的注册中心,提供路由信息)的核心代码整合而成,目标是打造全球最牛逼的服务注册以及配置中心。本文简单部署一个nacos服务,来一个直观的认识。二.部署步骤由于是

2021-06-05 16:18:53 996

原创 springboot源码(二)@SpringBootApplication注解中exclude参数使用及原理

上篇文章中,《springboot源码(一)启动流程+自动配置原理分析》,简单分析了启动流程,其中涉及到了@SpringBootApplication注解,本文针对其中的exclude属性的作用及其原理,进行分析。

2021-06-04 10:04:04 10329 3

原创 Charles使用说明&手机抓包

文章目录一.简介二.下载安装https 证书安装三.移动端抓包一.简介常用的抓包工具有:charles:可以运行在windows和macOs和linux;收费的,如果不交钱,只能每半小时重启一次;fiddler:只能运行在windows;wireshark:可以运行在windows和macOs和linux。其中,wireshark是一个老牌抓包工具,针对网卡层级,可以看到详细的报文交互细节过程,但是针对应用层面的接口抓包分析,它的界面不如charles和fidder更直观。fiddler只

2021-05-23 14:43:58 713

原创 Kubernetes系列(一)k8s架构设计说明

文章目录一.简介二.架构设计图2.1Master2.2 Node一.简介Kubernetes是由谷歌开发的,使用GO语言,最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。参考Kubernetes中文文档:http://docs.kubernetes.org.cn/二.架构设计图架构核心组件整体分为左右两个部分,Master组件和Node组件。2.1MasterMaster部分,属于主控节点,控制node部分有序的工作,主要包含如下几个部分:API server :k8

2021-05-23 11:31:07 284 6

原创 Docker系列(二)docker常用命令

文章目录一. docker帮助命令说明1.1docker所有的命令,都是以 docker开头 。比如 :1.2帮助命令二.常用命令总结拉取镜像启动容器退出容器删除容器docker命令非常多,非常灵活,本文总结下常用的命令,方便查阅。一. docker帮助命令说明先说明比较重要的两点:1.1docker所有的命令,都是以 docker开头 。比如 :docker psdocker image1.2帮助命令如果忘记了命令具体用法,可以使用docker的帮助:docker --help输出

2021-05-17 17:32:01 609

原创 Docker系列(一)docker desktop安装使用&运行redis容器

文章目录一.docker下载安装二. docker Desktop使用三.测试启动redis容器3.1启动redis容器3.2desktop上管理容器3.3命令验证:四.配置阿里镜像docker是目前很火的容器应用,使用docker可以很方遍的进行应用部署,本文介绍docker的安装使用,来直观的感受下docker。一.docker下载安装docker官方文档给出了详细的安装步骤,参考地址:https://docs.docker.com/get-docker/docker本身也是一个应用程序,支持在

2021-05-16 12:18:17 9471 1

原创 RocketMQ系列(六)rocketmq架构设计总结

文章目录一. 消息存储二. 通信机制本文水一下,主要做个记录,详细说明直接看官方文档。官方设计文档:https://github.com/apache/rocketmq/blob/master/docs/cn/design.md一. 消息存储CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,消息内容不是定长的。单个文件大小默认1G ,文件名长度为20位,左边补零,剩余为起始偏移量,比如00000000000000000000代表了第一个文件,起始偏移量

2021-05-15 22:07:58 120 2

原创 RocketMQ系列(五)异常处理:发送失败、重复消费

文章目录生产者失败消费者幂等处理使用消息队列,不论是消息生产者还是消费者,都容易存在异常情况。生产者失败异常情况:生产者在把消息发送到mq的broker的过程中,容易存在以下情况:1.发送时,网络异常,消息没有到达broker;2.发送同步消息时,消息到达broker,但是当broker相应生产者时,网络异常,生产者没有收到响应,认为发送失败;解决方案:如果是发送异步消息,也就是生产者不会等待broker响应,此种情况就会产生消息丢失;如果业务场景不在乎少量消息丢失,则不要处理;否则可以采用

2021-05-05 11:39:58 5979 2

原创 RocketMQ系列(四)springboot集成rocketmq的简单使用

文章目录一. 配置1. 添加依赖2. 配置文件二. 发送消息三. 接收消息一. 配置1. 添加依赖直接添加rocketmq的 starter包,版本根据springboot的版本来,<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version&g

2021-04-24 21:40:42 1875

原创 RocketMQ系列(三)消息生产消费原生写法

文章目录一.生产消息1.1 同步消息二.消息消费上篇文章《RocketMQ系列(二)双主双从集群搭建》中,我们搭建了双主双从的集群环境,并启动了可视化平台rocketmq-console,本文我们使用原生api发送一些消息到mq中,然后进行消费。一.生产消息导入mq客户端的依赖包: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-clie

2021-04-20 21:45:38 595

原创 RocketMQ系列(二)双主双从集群搭建

文章目录一.配置文件1.1 配置文件说明1.2 服务环境准备1.3 配置文件修改二.集群启动2.1 启动nameserver集群2.2 启动borker集群三.rocketmq-console控制台3.1 下载rocketmq-externals3.2 启动rocketmq-console3.3 访问rocketmq-console上一篇RocketMQ系列(一)下载安装介绍了单master模式,本文介绍双主双从的集群模式搭建。一.配置文件1.1 配置文件说明安装包我们放在/data/applica

2021-04-18 18:06:01 435

原创 RocketMQ系列(一)下载安装

文章目录一.下载二.安装配置2.1 jdk配置2.2 部署模式选择2.3 配置文件三.单master模启动3.1 启动NameServer3.2 启动broker一.下载1.进入官网:RocketMQ已经托管给Apache,所以官网是在apache:官网,上面显示的是最新发布版本2.下载历史版本如果需要历史版本,则点击【Getting Started】按钮进入,然后左边菜单选择download,就可以看到历史版本:3.下载我们下载4.4.0版本,其中,Source是源码,可以下载源码进

2021-04-17 18:53:45 934

原创 Netty系列(三)Netty工作模型

以下是Netty工作架构图:方案说明:Netty 抽象出两组线程池BossGroup和WorkerGroup,BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写;BossGroup和WorkerGroup类型都是NioEventLoopGroup;NioEventLoopGroup 相当于一个事件循环线程组, 这个组中含有多个事件循环线程 , 每一个事件 循环线程是NioEventLoop;每个NioEventLoop都有一个selector , 用于监听注

2020-09-29 14:12:00 310 1

原创 Netty系列(二)Reactor模式详解

文章目录一. 什么是Reactor模式二. Reactor模式实现种类在正式进入Netty编程模型之前,还需要了解Reactor模式,因为netty就是基于Reactor模式做了一定的改进形成的netty模型。一. 什么是Reactor模式首先,Reactor是一种设计模式,不是具体的类,上篇文章中,简单介绍了java NIO相关内容,其中的demo就是Reactor模式的一种最简单的实现。实际上的Reactor模式,是基于Java NIO的,在他的基础上,抽象出来两个组件——Reactor和Han

2020-09-29 14:10:57 1888

原创 ElasticSearch系列(七)es内存大小设置

近期发现线上es服务内存告警,使用率超过90%,需要处理,下面记录下处理流程。1. 查看进程内存占用情况使用top命名,可以显示进程列表,然后键盘按下M键,可以按照内存降序,结果如下:elastic+就是es的进程。2.查看es配置的内存大小使用 ps -ef | grep java (或者按照上面的进程号找),显示java进程,如下是es进程:可以看到es进程启动时设置的java堆内存为-Xms5g -Xmx-5g,也就是5g,这两个参数一般建议设置成一样。修改之前,这里设置的是6g

2020-08-10 17:37:33 29363 4

原创 Logback.xml配置笔记

文章目录简述logback.xml文件详解使用简述logback是java的日志开源组件,也是log4j创始人写的,属于改良版本,据说性能比log4j要好10倍;同时,logback遵循SLF4J接口规范,由logback改为其他日志组件,比如log4j或者其他只要遵守SLF4J接口规范的,都只需要更换jar包,不需要修改业务代码。总之,目前普遍推荐使用logback日志组件,下面记录一下它的配置文件中的各项配置含义。logback.xml文件详解直接上配置文件,结合配置文件介绍:<?x

2020-07-26 16:17:41 245

原创 Mysql系列(三)Mysql索引优化技术总结

文章目录一、索引类型二、索引结构三、索引优化3.1 哪些情况下需要创建索引3.2 哪些情况下不需要创建索引3.3 explain3.4 索引失效本文总结下Mysql索引优化需要注意的要点。一、索引类型类型1.单值索引:一个索引只包含一个列,一个表可以有多个单列索引;2.唯一索引:索引列的值必须唯一,但允许有空值;3.复合索引:一个索引包含多各列。基本语法说明:中括号[]表示可以省略;1.创建CREATE [UNIQUE] INDEX indexName ON myTable (clou

2020-06-30 19:04:34 252

原创 mac中配置gradle并在idea中使用

之前一直用windows,现在公司电脑是macbook,想配置环境变量啥的,过程不太一样,这里记录下;实际上mac和linux配置步骤基本一样。一、下载官网下载地址:https://gradle.org/install/#manually1.默认下载是最新版本,如果想下载历史版本,点击下边的 releases page;2.下载有两种类型,二进制文件和完整版本(包括源码和文档),一般建议下载binary-only,想看文档啥的,可以去官网在线看。本文下载的是最新版本 6.4.1;二、安装因为

2020-05-21 20:24:57 7593 3

原创 Maven工具的一些必备知识点

文章目录Maven Scope常见Maven命定本文记录Maven相关的知识点。Maven Scopescope定义了类包在项目的使用阶段。项目阶段包括: 编译,运行,测试和发布。分类说明:compile默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会达到包里去。test该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比...

2020-05-16 18:28:03 204

原创 ElasticSearch系列(六)springboot中使用QueryBuilders、NativeSearchQuery实现复杂查询

本文继续前面文章《ElasticSearch系列(二)springboot中集成使用ElasticSearch的Demo》,在前文中,我们介绍了使用springdata做一些简单查询,但是要实现一些高级的组合等查询,还是需要使用ES的一些原生方法。本文介绍一些高级查询用法。需要看环境搭建的,先直接看前文。数据准备:es中事先插入了20多条数据,用于测试,一、 ElasticsearchR...

2020-05-05 21:37:13 50948 40

原创 ElasticSearch系列(五)linux环境中搭建ES集群

文章目录概念一、集群搭建二、使用head连接测试之前文章中,我们搭建过单节点的es服务《ElasticSearch系列(一)linux环境ElasticSearch+Kibana(6.8.2)下载安装启动步骤》,本文,我们记录下linux环境中搭建es集群步骤,使用版本7.3.0 。概念下图是es集群的逻辑结构和物理结构示意图:es在存储数据时,默认分为5个分片(绿色方框),每个分片有...

2020-04-14 09:43:02 2916

原创 ElasticSearch系列(四)ES集成IK分词器以及使用方式

ES的分词器ES默认的分析器,是标准分词器,{ "tokens": [ { "token": "正", "start_offset": 0, "end_offset": 1, "type": "<IDEOGRAPHIC>", "posit...

2020-04-13 23:02:19 10017 1

原创 ElasticSearch系列(三)linux环境中安装配置head插件以及使用方法

文章目录一、安装head插件二、安装nodejs1.检查nodejs是否已经安装2.下载nodejs3.安装nodejs4.安装grunt之前文章《ElasticSearch系列(一)linux环境ElasticSearch+Kibana(6.8.2)下载安装启动步骤》,我们安装了elasticsearch,并实现了间的增删改查。但是存到ES中的数据,无法直观的看到。本文介绍一款插件head,用...

2020-04-12 00:05:23 2610

原创 jvm 性能监控、故障处理工具

文章目录一、jps 输出java进行列表二、jstat 输出运行时垃圾收集等信息三、jinfo 实时查看和调整虚拟机参数四、Jmap java内存映像工具五、jhat 虚拟机转储快照分析工具六、jstack java堆栈跟踪工具七、JCconsole java监视与管理控制台八、VisualVM 多合一故障处理工具本文总结下jvm常用的排查问题的工具,包括jps、jstat、jinfo、jmap...

2020-04-05 21:56:00 252

原创 如何在MacBook苹果电脑中打出中文括号【】

记录个问题,就是在刚开始使用苹果电脑时,想使用中文输入法打印出【】,发现怎么都打不出来,都是[],很恼火,网上搜了下,都说使用option+shift+b,这种方式确实可以,但不是最根本的解决方式。正确方式:系统偏好设置】->【键盘】->【输入法】->【简体拼音】,然后取消勾选 [使用半角标点符号] 即可。...

2020-03-28 16:52:19 14561

原创 Mac 版IDEA 快捷方式使用

之前一直用Windows版本的idea,后来有了macbook,发现真的不好用,很多快捷方式竟然都不一样,强迫症的我,决定把常用的快捷方式都给改成和window版本一样的。下面按照类型分模块修改。先说下苹果键盘几个特殊按键:commond :有时候等同于 Ctrl,比如复制黏贴等option :等同于 AltControl :还是Control菜单类一开始打算打开Settings...

2020-03-28 16:43:13 1532 2

原创 史上最全的StarUML使用教程

文章目录一. 版本二. 界面说明三. 画图种类介绍1. 类图(Class Diagram)2. 用例图(Use Case Diagram)3. 时序图(Sequence Diagram)4. 组件图(Component Diagram)5. 部署图(Deployment Diagram)6. 协作图(Comunication Diagram)7. 对象图(Object Diagram)8. 活动图...

2020-03-21 11:11:57 132908 32

原创 设计模式7大原则详解

文章目录一、单一职责二、接口隔离(Interface Segregation)三、依赖倒转(Dependence Inversion)四、里氏替换原则五、开闭原则(Open Close PrincIple)六、迪米特法则(Demeter Principle)七、合成复用原则(Composite Reuse Principle)本文结合demo,总结下设计模式的几个原则,掌握设计模式的原则,才能真...

2020-03-15 21:57:03 233

原创 synchronized 底层原理总结

文章目录一.synchronized介绍二.synchronized使用方式三.java对象组成四.锁的升级过程本文总结下Synchronized关键字的底层实现原理。一.synchronized介绍synchronized是JVM内置锁,通过内部对象Monitor(监视器锁)来实现,基于进入与退出monitor对象来实现方法与代码块的同步,监视器锁的实现,最终依赖操作系统的Mutex lo...

2020-03-12 19:15:13 352

原创 ActiveMQ系列(六)ActiveMQ高级特性总结

文章目录一.异步投递二.延时投递和定时投递三.消费重试机制四.死信队列五.防止重复调用本文总结下ActiveMQ高级特性。一.异步投递ActiveMQ支持消息的异步和同步发送,默认使用异步发送,以此来提高生产者的消息发送性能。1.同步发送ActiveMQ在以下两种情况下使用同步发送模式:1.明确指定使用同步发送;2.在非事务模式下,使用持久化机制发送消息;这样producer每次发送...

2020-03-09 18:23:02 569

原创 ActiveMQ系列(五)ActiveMQ持久化配置

文章目录一.持久化机制简介二.KahaDB三. JDBC四.JDBC Persistence with ActiveMQ Journal五. LevelDB本文总结ActiveMQ持久化配置。官方文档:http://activemq.apache.org/persistence一.持久化机制简介为了避免消息队列服务意外宕机后丢失消息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久...

2020-03-08 21:30:51 1202

原创 ActiveMQ系列(四)ActiveMQ核心功能持久化、事务、签收

文章目录一. Jms生产者Demo二. JMS介绍三. 消息的持久化本文总结下ActiveMQ的核心功能,涉及一些概念和API。一. Jms生产者Demo先上一个生产者的小demo,然后围绕demo展开:import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;public class JmsPro...

2020-03-07 17:22:25 427 1

原创 ActiveMQ系列(三)springboot整合ActiveMQ实现消息的发布订阅

上篇文章《ActiveMQ系列(二)》中实现了消息队列模式,本文开始实现主题消息的发布和订阅。maven依赖新建springboot的过程不再赘述,这里在pom文件中直接以用maven依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp...

2020-02-29 18:12:44 284

空空如也

空空如也

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

TA关注的人

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