1. 前言 在配置MySQL主从复制后,执行show slave status;查询同步状态,出现报错,Slave_SQL_Running为No,Last_Error是报错信息。 Last_Error:Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ‘ANONYMOUS’ at source log binlog.000001, end_log_pos 1000. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any. 顺着报错信息,来到performance_schema.replication_applier_statu ...
1. 引言 对于Java开发人员,不需要直接操作内存,很容易因为编码不规范的情况造成内存使用不当,出现OOM异常,本篇文章来梳理有哪些场景会造成OOM,以及对应的解决方法。 注:本篇文章为个人学习所用,可能存在不严谨或出错的地方,还请谅解。 2. Java堆溢出 堆的唯一作用就是存储对象的实例,堆占用的内存是有限的,如果对象实例的大小达到了最大限制,就会出现内存溢出的情况。 下面这段代码是造成堆溢出的代码示例,运行前指定堆大小(如果堆的最小值和最大值相同,堆的大小就不会动态扩展),并配置堆溢出时导出堆转储文件。 package com.mrman.OOM;//VM options: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryErrorimport java.util.ArrayList;import java.util.List;public class HeapOOM { static class TestObject { } public static void ...
1. 概述Java和C++的一个关键区别就是对内存的控制,C++需要在编码时直接管理内存,需要开发者对内存的知识了如指掌。而Java却将管理内存的权利交给了Java虚拟机(JVM),使得开发人员不需要执行分配/释放内存等操作,提升了开发效率。但是一旦出现问题,很容易让人摸不清头脑,因此,只有掌握了JVM如何管理内存,处理问题才能如鱼得水,这篇文章从最基本的讲起,讲一讲JVM都包含哪些区域。 注:本篇文章为个人学习所用,可能存在不严谨或出错的地方,还请谅解。 2. 运行时区域划分2.1 整体架构图本文以JDK1.8版本为例,展开讲解。 2.2 程序计数器程序计数器所占用的内存空间很小,可以将他看做线程执行字节码的行号指示器,表示当前执行的具体位置,程序执行过程中,通过修改程序计数器的值来指定下一条需要执行的字节码指令,因此程序的顺序执行、循环、跳转、异常执行等功能都是依赖程序计数器完成的。 同时,程序在多线程的情况下,需要在多个线程之间轮流切换,为了实现线程切换回来后还能从原来的位置继续执行,每个线程都会有一个独立的程序计数器,不同线程之间互不影响,因此程序计数器是“线程私有”的 ...
一、概述Kafka 既是一个高性能的分布式流处理平台,也是一个具有高吞吐量、低延迟和高可靠性的消息传递系统。它不仅仅是一个简单的消息队列,还是一个面向实时数据流处理的基础设施。广泛应用于大数据分析、日志聚合、监控和事件流处理等场景。 二、Kafka架构分析(一)Kafka结构及重要组件 如上图所示,Kafka由Producer、Broker、Consumer 以及负责集群管理的 ZooKeeper 组成,各部分功能如下: Producer:生产者,负责消息的创建并通过一定的路由策略发送消息到合适的 Broker; Broker:服务实例,负责消息的持久化、中转等功能; Consumer:消费者,负责从 Broker 中拉取(Pull)订阅的消息并进行消费,通常多个消费者构成一个分组,消息只能被同组中的一个消费者消费; ZooKeeper:负责 broker、consumer 集群元数据的管理等,在2.8版本及之后,Kafka移除了对Zookeeper的依赖; topic:消息主题。Kafka 按 topic 对消息进行分类,我们在收发消息时只需指定 topic。 par ...
Docker
未读1. 前置说明 本文使用阿里云ECS服务器,系统为Alibaba Cloud Linux 3.2104 LTS 64位,是完全兼容CentOS的。 CentOS安装Docker官网:https://docs.docker.com/engine/install/centos/ 2. 安装前卸载旧版本sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 直接执行上面的命令,如果出现下面图片的效果,说明系统中没有Docker。 3. 执行安装安装yum-utils软件包 该软件包是一个yum工具集 ...
1. 布隆过滤器大致介绍 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。 简单来说,布隆过滤器就是用来检查一个元素是否在一个集合里的,接下来就来具体分析下布隆过滤器。。 2. 底层结构 布隆过滤器的底层数据结构是位图,可以理解为只存储二进制数值的数组,每个位置只能存放0或1,0表示不存在,1表示存在。 3. 在缓存穿透中的应用什么是缓存穿透 在实际的开发中,难免会遇到数据缓存在redis中,当用户访问数据的时候,都是先请求缓存,那么假如要查询的数据在缓存中和数据库中都不存在,当缓存中查询不出数据的时候,会直接查询数据库,就会造成大量的请求作用到数据库,会对数据库造成很大的压力,容易出现宕机的情况,像恶意攻击,就会出现这种情况,请求查询大量不存在的key,极容易发生宕机,这种情况就叫做缓存穿透。 缓存穿透的解决办法 缓存空数据:将从mysql中查询到的空数据缓存到redis中,当 ...