自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis内存回收机制-内存淘汰策略和过期策略

Redis是基于内存操作的非关系型数据库,在内存空间不足的时候,为了保证程序的运行和命中率,就会淘汰一部分数据。如何淘汰数据?这就是Redis的内存回收策略。Redis中的内存回收策略主要有两个方面:Redis过期策略:删除已经过期的数据;Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰策略回收数据。在Redis 官方文档中,有下面一段话其中 activeExpireCycle() 和 freeMemoryIfNeeded() 就是内存回收策略实现的方法。

2023-10-19 15:16:31 399

原创 Java 诊断利器 Arthas monitor/watch/trace命令

Arthas monitor/watch/trace命令

2023-01-14 17:55:41 5325 1

原创 Java 诊断利器 Arthas 快速入门

Java 诊断利器 Arthas 快速入门

2023-01-06 10:07:11 1888 1

原创 Java 诊断利器 Arthas JVM命令

jvm 相关命令

2023-01-06 10:02:46 2366

原创 Sentinel 控制台实时监控持久化到MySQL

Sentinel 控制台中监控数据聚合后直接存在内存中,未进行持久化,且仅保留最近 5 分钟的监控数据。官方文档提供持久化方案,本篇文章,基于官方给出的文档,将监控数据持久化到MySQL数据库中,并且使用MyBatis Plus 对监控数据进行操作。官方地址:https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel监控Sentinel 会记录资源访问的秒级数据(若没有访问则不进行记录)并保存在本地日志中,具体格式请见 秒级监控日

2022-04-14 23:37:27 4024

原创 CentOS 搭建Kafka集群

搭建 Kafka 集群

2022-04-10 22:14:44 3541 2

原创 CentOS 搭建 Zookeeper 集群

zookeeper集群搭建

2022-04-10 15:51:29 3332

原创 Spring Cloud OpenFeign/Hystrix 超时配置

OpenFeign/Hystrix 超时配置

2022-03-13 01:44:53 1075

原创 Spring Cloud Eureka整合 Seata 实现分布式事务

一、Seata 介绍Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

2022-03-07 18:04:07 2893 4

原创 Spring Cloud Nacos整合 Seata 实现分布式事务

seata

2022-01-07 18:28:10 1412

原创 阿里云安装rocketmq-dashboard管理控制台开启登录功能

阿里云安装rocketmq-dashboard管理控制台开启登录功能

2021-12-24 16:38:17 3120

原创 阿里云安装RocketMQ 4.9.2

阿里云安装RocketMQ 4.9.2

2021-12-24 15:55:59 1482

原创 CentOS 8 安装 Redis 6.2.6

阿里云安装Redis 6

2021-12-10 11:19:39 1182

原创 阿里云CentOS 8.3 安装MySQL 8.0

一、阿里云服务器配置1、修改阿里云hostname修改/etc/hostname文件,替换原有内容并重启服务器。2、查看系统是否安装的MariaDB数据库查看系统是否由默认安装的MariaDB数据库,如果有,安装下面操作卸载即可,如果没有,可以跳过这一步。rpm -qa | grep mariadbmariadb-libs-5.5.60-1.el7_5.x86_64卸载系统安装的MariaDB数据库rpm -e --nodep...

2021-11-17 01:15:54 913 3

原创 设计模式——策略模式的实践和应用(下)

我们在上一篇中简单介绍了策略设计模式,相信大家对策略设计模式大致了解了,但是如何在项目中去使用呢?这是好多人的问题,东西一学就会,一用就一篇空白,今天,我就介绍一下策略设计模式在实际中的运用。工欲善其事必先利其器,如果还不了解策略设计模式的,可以先学习一下策略设计模式设计模式——策略模式的实践和应用(上)在生活中,我们也常常会遇到类似的情况,实现某一个功能有多种方法,每种方法对应一种算法,此时我们可以使用一种设计模式来实现不同的解决方案,同时也利于后期扩展,这就是今天要介绍的策略设计模式。我

2021-02-23 15:46:59 223

原创 设计模式——策略模式的实践和应用(上)

策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 StrategyContext 对象的执行算法。策略模式中一般会涉及到三个角色:策略接口Strategy:用来约束一系列具体的策略算法,策略上下文角色StrategyA 使用此策略接口来调用具体的策略所实现的算法。具体策略实现角色StrategyA、..

2021-02-23 15:26:35 141

转载 OSI七层模型与TCP/IP五层模型

一、OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识——OSI参考模型。1、OSI的来源 OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。 ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。 2、OSI七层模型的划分...

2021-02-02 00:32:34 255

原创 深入理解Java虚拟机——垃圾收集器

在学习Java虚拟机时,我们了解了常见的三种垃圾收集算法:标记-清除(Mark-Sweep)算法、标记-复制算法、标记-整理算法但是收集算法是内存回收的方法论,而圾收集器就是内存回收的实践者,接下来我们来了解一下常见的垃圾收集器,其中CMS、G1、ZGC垃圾收集器是我们关注的重点,其他的可以一笔带过。一、Serial收集器Serial收集器是最基础、历史最悠久的、单线程收集器,Serial收集器在进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。HotSpot虚拟机新生代默认的垃圾收

2021-02-01 15:21:14 151

原创 Elasticsearch7.x 基本查询

一、Elasticsearch 基本查询基本查询语法:GET /索引名/_search{ "query": { "查询类型": { "查询属性": "查询条件值" } }}查询类型:match_all、term、match、match_phrase、range、fuzzy、bool等二、测试数据文章末尾三、基本查询3.1、简单查询1、查询所有GET /item/_search2、简单查询GET /ite...

2020-11-19 01:54:03 1654

原创 Elasticsearch 7.X索引、文档基本操作

ElasticSearch是基于Lucene框架的全文搜索引擎,是文档型数据库,索引(Index)定义了文档的逻辑存储和字段类型,文档类型是文档的集合,文档以索引定义的逻辑存储模型。ElasticSearch的对象模型,本质也是存储数据,很多概念与MySQL类似的。 索引(Index):相当于MySQL 实例中的一个 Database,用于定义文档类型的存储;在同一个索引中,同一个字段只能定义一个数据类型; 文档类型(Type):相当于MySQL 中的 Table,描述文档中的各个字段的

2020-11-18 15:52:53 817

原创 Redis5过期删除策略和内存淘汰机制

Redis是基于内存操作的非关系型数据库,在内存空间不足的时候,为了保证程序的运行和命中率,就会淘汰一部分数据。如何淘汰数据?这就是Redis的内存回收策略。Redis中的内存回收策略主要有两个方面: Redis过期策略:删除已经过期的数据; Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据。 一、Redis过期策略通过EXPIRE命令和PEXPIRE命令,可以以秒或者毫秒精度为Redis中的某个key设置生存时间(Time To Live,TTL),在经

2020-11-12 17:43:00 245

原创 JVM——三色标记(Tri-color Marking)和写屏障

并发标记的主要问题是垃圾回收器在标记对象的过程中,用户线程可能正在改变对象引用关系图,从而造成漏标和错标。错标不会影响程序的正确性,只是造成所谓的浮动垃圾。但漏标则会导致可达对象被当做垃圾收集掉,从而影响程序的正确性。为了区别对象的不同状态,引入了三色标记法。一、三色标记(Tri-color Marking)垃圾收集器依据可达性分析算法判断对象是否存活时,将遍历GC Roots过程中遇到的对象,按照“是否访问过”这个条件,把对象标记成白色(white)、灰色(gray)、黑色(black)三种颜色,

2020-11-06 17:53:21 1021

原创 Explain执行计划key_len详解

我们在使用Explain查看SQL执行计划时,其中有一列为key_kenEXPLAIN select * FROM user WHERE id = 1;key_len表示使用的索引长度,key_len可以衡量索引的好坏,key_len越小索引效果越好,那么key_len的长度是如何计算的?常见的列类型长度计算:列类型 是否为空 长度 key_len 备注 tinyint 允许NULL 1 key_len = 1+1 允许NULL,k.

2020-11-05 01:06:58 8348 4

原创 MySQL性能优化——Explain执行计划详解

我们通过慢查询日志已经知道哪些SQL慢了,为什么慢呢?慢在哪里?MySQL提供了一个执行计划的工具,在MySQL架构中,SQL语句通过优化器最终生成的就是一个执行计划。通过EXPLAIN我们可以模拟优化器执行SQL查询语句的过程,来知道MySQL是怎么处理一条SQL语句的。通EXPLAIN我们可以分析语句或者表的性能瓶颈,然后进行优化。我们新建三张表,三张表只有主键索引,来详细讲解一下EXPLAIN。我们通过慢查询日志已经知道哪些SQL慢了,为什么慢呢?慢在哪里?MySQL提供了一个执行计划

2020-11-04 23:15:38 1496

原创 Elasticsearch 7.9.2启动报错及解决方案

1、can not run elasticsearch as rootelasticsearch不允许以root用户启动需要使用其他用户才行root用户无法启动官方说明:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/modules-scripting-security.html#_do_not_run_as_root配置elasticsearch启动用户Elasticsearch为了安全考虑不允许使用roo

2020-11-01 21:25:34 932

原创 CentOS 7.8 查看和关闭防火墙

CentOS 7.0默认使用的是firewall作为防火墙查看防火墙状态firewall-cmd --state停止firewallsystemctl stop firewalld.service禁止firewall开机启动systemctl disable firewalld.service

2020-11-01 16:02:58 2046

原创 ELK(Elasticsearch 7 + Logstash 7 + Kibana 7)实时日志分析平台

一、ELK 是什么?“ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch:是一个搜索和分析引擎。Logstash:是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana:则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。二、ELK环境2.1、软件版本软件 版本 Ce

2020-10-30 14:20:52 1331

原创 腾讯云CentOS 7.8安装JDK11

Centos7安装完成,默认安装了openjdk,为了避免JDK不兼容导致的其他问题,我们通常会卸载CentOS自带的openjdk,安装自己的JDK。一、软件下载1、JDK下载地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html如果使用rpm安装方式,下载jdk-11.0.9_linux-x64_bin.rpm,如果下载tar.gz压缩包解压安装方式,下载jdk-11.0.9_linux-x64_..

2020-10-29 01:28:03 908

原创 MySQL索引(一)—— 索引介绍

一、索引索引是什么?打个比方来说,我们要从一本字典中查一个字,我们怎么查?首先我们根据这个字的读音,在目录找到这个字所在的页码,然后再根据页码,找到这个字。目录的好处就是我们能够快速的查到这个字,索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响。要找到一个合适的平衡点,这对应用程序的性能至关重要。在InnoDB存储引擎中,支持以下几种常见的索引:B+树索引

2020-10-22 10:45:20 718 2

原创 MySQL日志(一)—— 重做日志文件redo log

在InnoDB存储引擎的数据目录下会有两个名为ib_logfile0和ib_logfile1的文件。在MySQL官方手册中将其称为InnoDB存储引擎的日志文件,不过更准确的定义应该是重做日志文件(redo log file)。为什么强调是重做日志文件呢?因为重做日志文件对于InnoDB存储引擎至关重要,它们记录了对于InnoDB存储引擎的事务日志。...

2020-10-03 14:29:12 448

原创 MySQL锁 —— 记录锁、间隙锁、临键锁、自增锁

一、MySQL数据库锁介绍锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问,在MySQL数据库中,MyISAM引擎只支持表锁,而InnoDB引擎既支持表锁,也支持行锁。MySQL中的锁分为如下几种:1.1、行锁InnoDB存储引擎实现了如下两种标准的行级锁:共享锁(行锁):Shared Locks排它锁(行锁):Exclusive LocksS和X锁都是行锁,兼容是指对同一记录(row)锁的兼容性情况。 X .

2020-09-26 11:27:24 1380

原创 JVM虚拟机——G1垃圾收集器分区Region

G1之前的垃圾收集器都会将堆分成三个部分,新生代(Young Generation)、老年代(Old Generation)和永久代(Permanent Generation),根据不同的分区类型,采用不同的策略进行回收。G1仍然保留新生代和老年代的概念,但新生代和老年代不再是固定的了,它们都是一系列区域(不需要连续)的动态集合。G1把连续的Java堆划分为多个大小相等的独立区域(Region),每一个Region都可以作为新生代的Eden空间、Survivor空间,或者老年代空间。G1堆和操作系统

2020-09-23 16:27:31 3363

原创 JVM虚拟机——G1垃圾收集器介绍

G1垃圾收集器Garbage First收集器(简称G1),是一种服务端应用使用的垃圾收集器,目标是用在多核、大内存的机器上,它在大多数情况下可以实现指定的GC暂停时间,同时还能保持较高的吞吐量。可以与CMS收集器之类的应用程序线程并行运行。 紧凑的自由空间,无需较长的GC引起的暂停时间。 需要更多可预测的GC暂停时间。 不牺牲系统的吞吐量。 gc不要求额外的内存空间。G1收集器开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。G1收集器出现之前的所有其他收集器,将堆

2020-09-17 15:07:56 290

原创 MySQL日志(一)—— 慢查询日志slow log

一、慢查询日志(slow log)慢查询日志,就是查询超过一定的时间没有返回结果的时候,MySQL会将执行的SQL记录到日志中,这个日志,就称为慢查询日志。通过分析慢查询日志,可以快速找出执行慢的SQL语句,然后进行优化。二、开启慢查询日志默认情况下,MySQL并不开启慢查询日志,需要用动开启show variables like 'slow_query_log';mysql> show variables like 'slow_query_log';+-----------

2020-09-11 19:04:35 2881

原创 MySQL日志(二)—— 二进制日志binlog

一、binlog介绍mysql-binlog是MySQL数据库的二进制日志,记录了所有的DDL和DML语句(不包括select语句),还包含语句所执行的消耗的时间,另外MySQL的二进制日志是事务安全型的。一般来说开启binlog日志会有一定的性能损耗。二、binlog使用场景无论是增量备份还是主从复制,都是需要开启mysql-binlog日志,并且在磁盘故障的时候可以利用mysql-binlog恢复数据。1、主从复制:mysql replication在master端开启binlog,

2020-08-26 21:37:52 1355

原创 Java虚拟机-JVM内存布局

一、程序计数器(Program Counter Register)程序计数器是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。字节码解释器通过改变计数器的值来选取下一条需要执行的字节码指令,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。Java虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,为了使线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,程序计数器为“

2020-08-13 09:59:56 139

原创 查看JVM默认垃圾收集器

一、查看JVM默认垃圾收集器java -XX:+PrintCommandLineFlags -version[root@jeespring ~]# java -XX:+PrintCommandLineFlags -version-XX:InitialHeapSize=132500800 -XX:MaxHeapSize=2120012800 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressed

2020-08-11 20:09:36 1613 1

原创 MySQL事务(一)—— 事务简介

一、事务简介事务是数据库操作的最小工作单元,是一组不可再分割的操作集合,要么全部执行,要么全部失败。在MySQL中,事务是一组具有原子性的SQL语句,一组 SQL 语句要么全部执行,要么全部不执行。事务支持是在引擎层实现的,只有使用了 Innodb 数据库引擎的数据库或表才支持事务,MyISAM引擎不支持事务,事务用来管理 insert,update,delete 语句,同时事务是数据...

2020-03-07 11:29:50 181

原创 Redis知识点总结(三)—— 基本操作命令

Redis是使用c语言开发的一个高性能键值数据库。Redis通过一些键值类型来存储数据。Redis常用的数据类型有以下几种:一、string1、get、set、delset key value :设置key的值valueget key :获取key的值del key :删除key127.0.0.1:6379> clear127.0.0.1:6379...

2020-02-23 18:17:20 268

原创 Redis知识点总结(二)—— 通用命令

Redis通用命令1、keyskeys * :遍历所有keykeys [pattern]:遍历符合条件的key127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379> set key1 value1OK127.0.0.1:6379> keys *1) "key1"127.0.0.1:6...

2020-02-23 16:27:08 99

空空如也

空空如也

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

TA关注的人

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