- 博客(294)
- 资源 (2)
- 收藏
- 关注
原创 mysql自带数据库分析mysql数据库性能
events_statements_summary_by_digest 表保存了所有 SQL 语句的执行摘要信息,包括语句的执行次数、平均执行时间、总执行时间等等。events_waits_summary_global_by_event_name 表保存了 MySQL 服务器等待事件的统计信息,包括事件的计数、总等待时间等等。可以使用 events_waits_summary_global_by_event_name 表查看 MySQL 服务器等待事件的瓶颈。
2024-09-09 17:15:38
877
原创 线上问题排查神器 arthas使用
1、RUNTIME(系统运行环境JVM相关信息,运行时长等)4、GARBAGE-COLLECTORS(垃圾回收器相关)5、MEMORY-MANAGERS(内存管理信息)2、CLASS-LOADING(类加载信息)查看前10的 列出cpu占用前10的线程详情。3、 COMPILATION(编译信息)6、MEMORY(内存信息)
2024-07-04 20:32:34
276
原创 公用nacos,实现只调用本机相应服务,不出现负载均衡到别人机器上
当我们有两个研发同时在调试一个微服务模块时,你和对方本地都会启动服务,这就导致在nacos会同时注册两个实例。默认情况下请求这个服务,具体处理请求的程序会在你和对方之间来回轮询,即一下你的服务一下对方的服务。其结果就导致你的程序一下正常一下异常。
2024-06-11 17:07:05
893
原创 mysql当前状态分析(show status)
Innodb_row_lock_time:自系统启动到现在,锁定的总时间,单位:毫秒 ms。Innodb_row_lock_waits:自系统启动到现在,锁等待次数,即锁定的总次数。Innodb_row_lock_time_avg:平均锁定的时间,单位:毫秒 ms。Innodb_row_lock_time_max:最大锁定时间,单位:毫秒 ms。Innodb_row_lock_current_waits:当前锁等待的数量。等待中的线程数(Threadpool_waiting_threads):0。
2024-06-07 15:37:53
1360
转载 Linux服务器如何查看CPU使用率、内存占用情况
Top命令Top命令很常用,在第三行有显示CPU当前的使用情况。字段说明:PID:进程标示号USER:进程所有者PR:进程优先级NI:进程优先级别数值VIRT:进程占用的虚拟内存值RES:进程占用的物理内存值SHR :进程使用的共享内存值S :进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死%CPU :进程占用的CPU使用率%MEM :进程占用的物理内存百分比TIME+:进程启动后占用的总的CPU时间Command:进程启动的启动命令名称Free命令查看总内存、使用、空
2022-04-22 17:29:02
13826
原创 MySQL添加索引导致表死锁问题
出现该问题描述:由于SQL慢,希望通过索引优化,发现很多单字段索引、且组合索引缺少一些关键字段,便决定删除单字段索引,补全组合索引。修改完索引后提交,发现执行时间几个小时都没有执行完成。造成结果:测试环境数据库表死锁,一些数据库执行语句查询超时。MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;
2022-04-01 15:58:04
4806
原创 SpringBoot启动流程详解(二)
执行run(args)方法源码 public ConfigurableApplicationContext run(String... args) { //创建任务计时器,并开始计时 StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; Collection<SpringBootExceptionReporter>
2022-03-23 16:56:03
705
原创 SpringBoot启动流程详解(一)
启动流程图(个人理解)我们都是知道SpringBoot启动其实了类似下面的代码自动定义启动类代码@Configuration@Component@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})public class StudySpringApplication { public static void main(String[] args) { SpringApplication.run(Stud
2022-03-23 16:11:03
909
1
原创 SpringBoot项目中有些依赖不加版本号原因
我们都知道maven其实是一个坐标体系一样,我们平常看到的groupId、artifactId、version节点,其实就是Maven的坐标,通过这些坐标,可以唯一定位一个Jar包。找到SpringBoot的版本依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</artifactId> <version&g
2022-03-22 17:32:49
2422
转载 @Component和@Configuration的区别
源码@Configuration@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Configuration { @AliasFor( annotation = Component.class ) String value() default ""; boolean proxyBeanMethod
2022-03-22 12:53:01
378
原创 SpringBoot自动装配原理源码详解
文章目录自动装配原理及源码解析自动装配实现流程图简述自动装配步骤详解核心代码加载SpringBoot可以自动装配集合利用LinkedHashSet对得到的需要自动装配的集合去重过滤@SpringBootApplication注解中exclude参数集合利用AutoConfigurationImportFilter过滤器对不满足条件的配置类,进行过滤OnClassConditionOnWebApplicationConditionOnBeanCondition源码解析按照优先级,对配置类进行实例化(bean初
2022-03-21 17:36:12
2858
原创 @SpringBootApplication注解详解
首先我们看下@SpringBootApplication注解的源码:从上面的源码中可以看出,@SpringBootApplication是由@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan这三个核心注解构成的,也就说我们其实也可以使用这三个注解代替@SpringBootApplication注解。下面我们来逐一简单分析下这三个注解@SpringBootConfiguration作用:标识该类为配置类首先依赖看源代码;
2022-03-21 12:37:33
617
转载 kafka相关命令
topic相关创建topickafka-topics.sh --bootstrap-server ${kafkaAddress} --create --topic ${topicName} --partitions ${partipartions} --replication-factor ${replication}查看topickafka-topics.sh --bootstrap-server ${kafkaAddress} --topic ${topicName} --describe
2022-03-16 09:06:03
261
原创 kafka常见问题处理
消费消息超时,导致重复消费问题,消息堆积报错日志示例org.springframework.kafka.KafkaListenerEndpointContainer#2-0-C-1 org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.maybeAutoCommitOffsetsSync:648 - Auto-commit of offsets {gate_contact_modify-0=OffsetAndMetadata{of
2022-03-10 16:26:03
5516
原创 Kafka rebalance触发条件
首先我们需要kafka的rebalance的一些概念:版的消费者客户端对此进行了重新设计,将全部消费组分成多个子集,每个消费组的子集在服务端对应一个GroupCoordinator对其进行管理,GroupCoordinator是Kafka服务端中用于管理消费组的组件。而消费者客户端中的ConsumerCoordinator组件负责与GroupCoordinator进行交互。ConsumerCoordinator与GroupCoordinator之间最重要的职责就是负责执行消费者再均衡的操作,包括前面提及
2022-03-09 18:12:47
5001
原创 RabbitMQ实现延迟队列
实现方式一:死信队列AMQP协议和RabbitMQ队列本身没有直接支持延迟队列功能,但是可以通过以下特性模拟出延迟队列的功能。但是我们可以通过RabbitMQ的两个特性来曲线实现延迟队列:1、Time To Live(TTL)RabbitMQ可以针对Queue设置x-expires 或者 针对Message设置 x-message-ttl,来控制消息的生存时间,如果超时(两者同时设置以最先到期的时间为准),则消息变为dead letter(死信)RabbitMQ针对队列中的消息过期时间有两种方法可
2022-03-08 18:44:03
3857
原创 延迟队列实现之Netty
首先我们了解是时间轮的算法:时间轮:就像上面的时间盘,里面有8个格子组成一个时间轮,如果每个格子代表的时间为1s,那么一圈的就代表8秒。加入我们将延迟任务加入时间轮的时间为时间轮中0秒的位置,延迟5秒执行,那就是说当转到6个格子的时候就会开始执行定时任务,如果超过8秒,需要延时20秒的,那就需要转多个圈。按以上实例,需要转2圈+4个格子,那就那就是转了2圈后在5标号的格子开始。首先我们看下netty 中的时间轮类Netty构建延时队列主要用HashedWheelTimer,HashedWheelT
2022-03-07 12:00:44
1024
原创 Error creating bean with name ‘jwtTokenEnhancer‘ defined in class path resource
报错信息Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jwtTokenEnhancer' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/resource/ResourceServerTokenServicesConfigurati
2022-03-05 10:09:59
2362
1
原创 Spring Security前台传入加密密码,后台比对实现
这里我们利用后台模拟全台传递的密码为加密密码,采用AES加密方式AES加密工具类public class EncryptUtil { /** * 密钥, 256位32个字节 */ public static final String DEFAULT_SECRET_KEY = "uBdUx82vPHkDKb284d7NkjFoNcKWBuka"; private static final String AES = "AES"; /** * 初
2022-03-01 23:08:59
3004
1
原创 BCryptPasswordEncoder原理分析
首先我们需要知道 BCryptPasswordEncoder 类其实是 Spring Security一个加密类下面我们下来探究下 BCryptPasswordEncoder我们在SpringBoot中新建一个测试类@RunWith(SpringRunner.class)public class PasswordEncoderTest { @Test public void encode() { BCryptPasswordEncoder bCryptPasswor
2022-03-01 23:00:12
2011
转载 MySQL架构总览->查询执行流程->SQL解析顺序
文章目录一、MySQL架构总览:二、查询执行流程1.连接2.处理3.结果三、SQL解析顺序准备工作create database testQuerySQL解析1. FROM2 ON过滤3 Join4. WHERE5. GROUP BY6. HAVING7. SELECT8 .ORDER BY9 .LIMIT 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构—>查询执行流程—>语句执行顺序来探讨一下其
2022-02-26 16:29:41
547
转载 MySQL优化实例
MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。常见SQL错误用法1. LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,
2022-02-26 15:46:17
373
原创 kafka消息丢失
文章目录消息传递语义消息丢失场景Producer端丢失场景Broker 端丢失场景Consumer 端丢失场景剖析消息丢失解决方案Producer 端消息丢失解决方案Broker 端解决方案Consumer 端解决方案全文概览图消息传递语义1)首先当 Producer 向 Broker 发送数据后,会进行 commit,如果 commit 成功,由于 Replica 副本机制的存在,则意味着消息不会丢失,但是 Producer 发送数据给 Broker 后,遇到网络问题而造成通信中断,那么 Prod
2022-02-22 20:50:36
1611
2
原创 布隆过滤器
布隆过滤器的定义:布隆过滤器(Bloom Filter)是由布隆(Burton Howard Bloom)在 1970 年提出的,bloom过滤器由长度为m的位向量或位列表(仅包含0或1位值的列表)组成,最初所有值都设置为0。用于检查值“可能存在集合中”或绝对不存在集合中。存在一定误判率。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。布隆过滤器的原理解析如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存
2022-02-17 22:36:18
287
原创 Redis数据迁移(三)
redis-dump方式安装环境依赖:安装RVM查看是否安装ruby ,或者当前安装的版本ruby -v安装ruby 环境//配置DNS解析vi /etc/hosts199.232.28.133 raw.githubusercontent.com//安装秘钥gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59//一下命令需要多次执行,才能成功,可能由于网络问题,具体原因赞不清楚curl -L get.r
2022-02-16 11:44:32
459
原创 Redis数据迁移(二)
方式一:使用redis-cli迁移数据迁移代码(将)192.168.31.216服务器上redis的0数据库的所有数据迁移到执行命令的服务器上redis的0数据库:新建文件vim redis-mv.sh 并添加下面内容redis-cli -h 192.168.31.216 -p 6379 -n 0 keys "*" | while read keydo redis-cli -h 192.168.31.216 -p 6379 -n 0 --raw dump $key | perl -p
2022-02-14 22:29:09
910
转载 redis数据迁移
实现方式1:利用redis主从复制特性在新的一台服务器上安装同版本的redis ,将配置文件同步到新的服务器。增加下列信息replicaof 192.168.31.216 6379然后使用客户端工具查看keys是否同步完成最后将备份服务redis服务器设置成主服务器命令//链接客户端redis-cli //查看当前主从信息 info replication //设置当前从服务器为主服务器 slaveof no one//查看设置成功后的服务器主从信息 info replicati
2022-02-12 21:49:28
4231
原创 redis安装报错
报错1 默认分配器报错报错截图报错代码zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录分配器allocator, 如果有MALLOC 这个环境变量, 会有用这个环境变量的 去建立Redis。而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加
2022-02-12 20:38:43
1117
原创 Redi集群增加删除节点
文章目录增加主节点1、新建节点文件夹,并复制实例信息2、删除以前节点的数据信息,不然会导致后面节点添加失败3、修改配置文件4、启动两个redis 实例5、增加主节点redis原有集群图我们现在需要在以上集群的基础上在增加两个节点服务器 10.0.8.149 端口 9007服务器 10.0.8.149 端口 9008并且打算9007作为主节点 9008作为从节点。增加主节点1、新建节点文件夹,并复制实例信息cd /usr/software/redis-cluster//新建两个节点的文件夹
2022-02-11 11:46:24
443
原创 Node 10.0.8.149:9008 is not empty. Either the node already knows other nodes
首先来看错误截图信息我可以思考为什么会产生这个错误啦,其实导致这个错误的原因在与我们在开启新的redis实例时,是直接将其他实例的文件完全复制过来的,这就导致redis的部分持久化相关文件还是之前实例的信息,所以产生的以上错误,那么解决起来就很简单的找到一下文件appendonly.aofdumm.rdbnode*.conf(该文件名是根据你自己命名决定的)删除之前节点的历史文件rm -rf appendonly.aof dumm.rdb node*.conf然后查看对应的进程,kil
2022-02-11 10:41:35
410
原创 redis集群值插槽算法灵魂拷问
文章目录为什么要有这个插槽算法为什么插槽只有16384,而不是更多插槽算法的是如何实现的,怎么去验证他啦在redis集群的时候使用的是总共有插槽数16384,会根据key值分配不同的插槽,由此我们产生了一下疑问1、插槽是什么,为什么要有这个插槽算法2、为什么插槽只有16384,而不是更多3、插槽算法的是如何实现的,怎么去验证他啦为什么要有这个插槽算法虚拟槽分区是 redis cluster 中默认的数据分布技术,虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有数据映射到一个固定范围
2022-02-10 17:37:34
1206
1
原创 SpringBoot整合redis集群(多主节点多从节点)
1、引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.5.9</version> </dependency>
2022-02-10 16:52:32
2315
mybatis_plu.rar
2019-11-12
时间工具类
2018-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人