自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 mysql日志:redo log、binlog、undo log 区别与作用

一、redo log   重做日志  作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。  内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。二、bin log  归档日志(二进制日志)  作用:用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。用于数据库的基于时间点的还原.

2021-06-30 23:22:14 2665

原创 微信红包架构设计,高并发系统应用实战

一:微信红包架构设计,高并发系统应用实战1. 微信红包架构1.1 业务场景微信红包(尤其是发在微信群里的红包,即群红包)业务形态上很类似网上的普通商品“秒杀”活动。用户在微信群里发一个红包,等同于是普通商品“秒杀”活动的商品上架;微信群里的所有用户抢红包的动作,等同于“秒杀”活动中的查询库存;用户抢到红包后拆红包的动作,则对应“秒杀”活动中用户的“秒杀”动作。不过除了上面的相同点之外,微信红包在业务形态上与普通商品“秒杀”活动相比,还具备自身的特点:首先,微信红包业务比普通商品“秒杀

2021-06-29 23:47:44 1111

原创 大数据查找中位数

所有数据不能一下子读入内存 中位数 --> 需要遍历所有数据2. 基本知识b --> bit 比特,位(二进制中的位) B --> Byte 字节,1个字节=8位,1B=8bit K --> KB 千字节,1KB = 1024B M --> MB 兆字节,1M = 1024KB = 1024*1024B G --> GB 1GB = 1024MB、问题分析:100亿个32位整数,那么占用内存为:100亿*32 b = 100亿*32/8 B.

2021-06-24 10:57:11 437

原创 谈谈线上CPU100%排查套路

一:谈谈线上CPU100%排查套路下面给出两种系统环节下的排查步骤,都是一模一样的,只是命令稍有区别!查消耗cpu最高的进程Pid 根据Pid查出消耗cpu最高的线程号 根据线程号查出对应的java线程,进行处理。准备一行死循环代码public class TestFor { public static void main(String[] args) { int random = 0; while (random < 100) {

2021-06-23 23:33:59 196

原创 ThreadLocal原理分析

一:什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。 既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该

2021-06-23 22:56:35 500

原创 kafka中zookeeper的作用,主要是做什么的?

zookeeper 是 kafka 不可分割的一部分,可见其重要程度,所以我们有必要了解一下 zookeeper 在 kafka 中的具体工作内容。而且,这也是面试时经常问的。zookeeper 存储了一些关于 consumer 和 broker 的信息,那么就从这两方面说明 zookeeper 的作用。1. broker状态zookeeper 记录了所有 broker 的存活状态,broker 会向 zookeeper 发送心跳请求来上报自己的状态。zookeeper 维护了一个正在

2021-06-22 23:48:01 2308

原创 ThreadPoolExecutor线程池参数设置技巧

一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理 设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭queueCapacity:任务队列容量(阻塞队列)当核心线程数达到最大时,新任务会放在队列中排队等待执行maxPoolSize:最大线程数当线程数>=corePoolSize,且任务

2021-06-22 23:25:32 2629

原创 springboot实现长链接转换为短链接

一:springboot实现长链接转换为短链接

2021-06-22 11:49:24 590

原创 算法之三数之和

一:三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]解决思路:排序 + 双指针本题的难点在于如何去除重复解。算法流程:

2021-06-21 23:26:09 158

原创 spring之循环依赖怎么解决的

一:spring之循环依赖怎么解决的

2021-06-21 21:43:54 1670 15

原创 什么时候会触发Full GC

一:什么时候会触发Full GC

2021-06-21 18:03:21 8258

原创 MySQL之explain select type、type类型说明

一:MySQL之explain select type、type类型说明

2021-06-21 00:02:24 300

原创 分布式系统生成唯一ID的几种方式

一:分布式系统生成唯一ID的几种方式

2021-06-20 00:01:18 2977

原创 SpringCloud微服务常见组件理解

概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。一、业务

2021-06-19 22:09:00 431

原创 Hystrix的实现原理

一:Hystrix的实现原理

2021-06-19 17:46:13 2201

原创 SpringBoot之请求参数解析

一:SpringBoot之请求参数解析

2021-06-18 23:44:27 655

原创 HashMap中通过key获取value源码剖析

public V get(Object key) { if (key == null) return getForNullKey(); Entry<K,V> entry = getEntry(key); return null == entry ? null : entry.getValue(); } private V getForNullKey() { if (size == 0)...

2021-06-17 23:19:49 1723

原创 设计模式之状态模式

一:设计模式之状态模式

2021-06-13 16:20:28 64

原创 JVM调优

一:jvm调优

2021-06-12 18:17:02 108

原创 设计模式之抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。...

2021-06-10 23:19:57 62

原创 MySQL之乐观锁和悲观锁

何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。...

2021-06-10 21:18:34 872

原创 BitMap

1. BitMapBit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。(PS:划重点节省存储空间)假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存在Java中,int占4字节,1字节=8位(1 byte = 8 bit)如果每个数字用int存储,那就是20亿个int,因而占用的空间约为 (2000000000*4/1024/102...

2021-06-09 23:06:20 372

原创 redis集群存储机制

一: 首先,在redis的每一个节点上,都有这么两个东西,一个是插槽(slot)可以理解为是一个可以存储两个数值的一个变量这个变量的取值范围是:0-16383。还有一个就是cluster我个人把这个cluster理解为是一个集群管理的插件。当你往Redis Cluster中加入一个Key时,redis会根据crc16的算法得出一个结果,然后把结果对16384 求余数,计算这个key应该分布到哪个hash slot中。(说明:1.一个hash slot中会有很多key和value。你可以理解成表的分区..

2021-06-08 22:47:35 1426

原创 手动修改消费偏移量的2种方式

工做中遇到过问题:包括数据Invalid Message和Failed_to_UNcompress等,会形成消费端的iterator损坏,致使消费进程挂掉,须要手动跳过某些数据;命令行Kafka的偏移量有保存在zookeeper和kafka中topic(_consumer_offset)2种方式...

2021-06-08 22:05:50 622

原创 kafka消息重复和丢失的场景及解决方案分析

一、生产者阶段重复场景 1、根本原因 2、重试过程 3、可恢复异常说明 二、生产者发送重复解决方案 1、启动kafka的幂等性 2、ack=0,不重试。 三、生产者和broke阶段消息丢失场景 1、ack=0,不重试 2、ack=1,leader crash 3、unclean.leader.election.enable 配置true 四、生产者和broke阶段消息丢失解决方案 1、配置:ack=all / -1,tries > 1,unclean.le

2021-06-08 21:56:16 317

原创 Kafka的ack机制

简述kafka的ack机制Kafka的ack机制,指的是producer的消息发送确认机制,这直接影响到Kafka集群的吞吐量和消息可靠性。而吞吐量和可靠性就像硬币的两面,两者不可兼得,只能平衡。ack有3个可选值,分别是1,0,-1。ack=1,简单来说就是,producer只要收到一个分区副本成功写入的通知就认为推送消息成功了。这里有一个地方需要注意,这个副本必须是leader副本。只有leader副本成功写入了,producer才会认为消息发送成功。注意,ack的默认值就是1。这.

2021-06-07 21:44:38 1984 2

空空如也

空空如也

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

TA关注的人

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