自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MayMatrix 的博客

MayMatrix , May Sunshine

转载 什么是内存屏障(Memory Barrier)以及在java中的应用

1. 指令重排序 程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致,这就是内存乱序访问。内存乱序访问行为出现的理由是为了提升程序运行时的性能。这种内存乱序问题主要是由两种原因引起的: 编译器在编译时进行了编译优化,导致指令重排; 在多cpu环境下,为了尽可能地避免处理器访问主...

2020-06-02 15:05:28 8 0

转载 java为什么还需要分布式锁?锁的演进

原文:https://baijiahao.baidu.com/s?id=1655515801283332550&wfr=spider&for=pc 目前的项目单体结构的基本上已经没有了,大多是分布式集群或者是微服务这些。既然是多台服务器。就免不了资源的共享问题。既然是...

2020-05-29 15:54:57 28 0

转载 JAVA中的阻塞队列和非阻塞队列-简介

队列是一种数据结构,它有两个基本操作:在队列尾部加入元素和从队列头部移除元素。在我们日常开发中,经常用来并发操作数据。java包中有一些应用比较广泛的特殊队列:一种是以ConcurrentLinkedQueue为代表的非阻塞队列;另一种是以BlockingQueue接口为代表的阻塞队列。通过这两种...

2020-05-29 14:21:31 18 0

转载 Java中的BlockingQueue

1 Java中的阻塞队列 1.1 简介 一种支持两个附加操作的队列,是一系列阻塞队列类的接口 当存取条件不满足时,阻塞在操作处 队列满时,阻塞存储元素的线程,直到队列可用 队列空时,获取元素的线程会等待队列非空 阻塞队列常用于生产者/消费者场景,生产者是向队列里存元素的...

2020-05-29 14:18:07 19 0

转载 Linux系统中java线上问题常用排查命令

查询java线程占用的资源 1、ps -aux | grep java或者 jps 命令,找出java进程的pid 1564。 2、top -H -p 1564 查看进程下的线程资源占用情况。 3、jstack 1564 查看进程号1564下的线程信息。 4、步骤2中的...

2020-05-29 14:13:01 17 0

转载 Redis的并发竞争问题的解决方案总结【参考】

什么是Redis的并发竞争问题 Redis的并发竞争问题,主要是发生在并发写竞争。 考虑到redis没有像db中的sql语句,update val = val + 10 where ...,无法使用这种方式进行对数据的更新。 假如有某个key = "price", val...

2020-05-29 13:43:22 12 0

转载 ※HashMap底层实现原理(全)

HashMap底层实现原理(上) 本来想先在专栏里简单的说一下二叉树,红黑树的内容后再说HashMap的,但看到评论区里不断的出现HashMap这个词,怕大家等得着急,本篇文章就先说说HashMap吧,前面讲ArrayList和LinkedList时把源码说得很细,只要理解了这两块内容,本篇内容...

2020-05-29 12:48:03 15 0

转载 深入理解HashMap底层原理剖析(JDK1.8) 扩容方法resize()

接下来会从以下几个方面介绍 HashMap 源码相关知识:   1、HashMap 存储结构   2、HashMap 各常量、成员变量作用   3、HashMap 几种构造方法   4、HashMap put 及其相关方法   5、HashMap get 及其相关方法   6、Hash...

2020-05-29 12:41:59 55 0

转载 Linux中top命令参数详解、常用快捷键

1、命令 1.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 显示系统当前的进程和其他状况; top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为...

2020-05-28 17:50:43 68 0

转载 Redisson实现Redis分布式锁的原理

Redisson实现Redis分布式锁的原理 一、写在前面 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。 所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看...

2020-05-22 17:46:05 28 0

原创 java成神之路阅读笔记——常用工具

java成神之路阅读笔记: to be top javaer:https://hollischuang.github.io/toBeTopJavaer/#/menu 常用工具: 工具 git & svn maven & gradle git技巧 ...

2020-05-20 14:27:44 28 0

转载 Netty 原理

版本说明 Netty3(3.x)版本是比较旧的版本。 Netty4(4.x)版本是当前官方推荐的,目前一直在维护中。跟3.x版本相比变化比较大,特别是API。 Netty5(5.x)是被舍弃的版本,官方不推荐使用! Netty5舍弃的官方解释: 1. netty5 中使用了 ForkJo...

2020-05-20 10:47:26 31 0

转载 ShardingSphere、Mycat原理

1.ShardingSphere sharding-jdbc后续发展为Sharding-Sphere,包含sharding-jdbc、Sharding-Proxy、Sharding-Sidecar。 1)概述:ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sh...

2020-05-20 10:23:22 51 0

转载 共识算法:Raft

拜占庭将军问题https://www.jianshu.com/p/26adc88a1f49 针对简化版拜占庭将军问题,Raft 解决方案类比 我们还是用拜占庭将军的例子来帮助理解 Raft。 假设将军中没有叛军,信使的信息可靠但有可能被暗杀的情况下,将军们如何达成一致性决定? ...

2020-05-15 17:50:24 79 0

转载 Zookeeper:一致性协议之 ZAB(二)

1. 什么是 ZAB 协议? ZAB 协议介绍 ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。 Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用...

2020-05-15 15:50:56 49 0

转载 Zookeeper:一致性协议:Zab协议(一)

什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 崩溃恢复 如何保证数据一致性 Zab 协议如何数据同步 如何处理需要丢弃的 Proposal Zab 协议实现原理 选主过程 什么是Zab协议? Zab协议 的全称是 ...

2020-05-15 15:20:54 27 0

转载 一致性及解决一致性的两种方式:2PC和3PC

1一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当其满足以下条件时,我们说这个系统满足一致性: 全认同: 所有N个节点都认同一个结果 值合法: 该结果必须由N个节点中的过半节点提出 可结束: 决议过程在一...

2020-05-14 17:46:33 37 0

转载 数据库中ACID、CAP、BASE

   关系型数据库中遵循的ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操...

2020-05-14 17:18:30 25 0

转载 Zookeeper 在 Kafka 中的作用

leader 选举 和 follower 信息同步 如上图所示,kafaka集群的 broker,和 Consumer 都需要连接 Zookeeper。 Producer 直接连接 Broker。 Producer 把数据上传到 Broker,Producer可以指定数据有几个分区、几个备...

2020-05-12 15:43:17 38 0

转载 RabbitMQ和Kafka对比

一、语言不同 RabbitMQ是由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。 kafka是采用Scala语言开发,它主要用于处理活跃的流式数据,大数据量的数据处理上 二、结构不同 RabbitMQ采用AMQP(Advanced Message Queui...

2020-05-12 15:28:56 36 0

转载 Kafka 架构原理

Apache Kafka 最早是由 LinkedIn 开源出来的分布式消息系统,现在是 Apache 旗下的一个子项目,并且已经成为开源领域应用最广泛的消息系统之一。 Kafka 社区非常活跃,从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为"一...

2020-05-12 15:19:29 47 0

转载 Kafka 原理:深入理解架构

本文主要讲解 Kafka 是什么、Kafka 的架构包括工作流程和存储机制,以及生产者和消费者,最终大家会掌握 Kafka 中最重要的概念,分别是 broker、producer、consumer、consumer group、topic、partition、replica、leader、foll...

2020-05-12 13:59:06 50 0

转载 分布式定时任务调度框架选型

分布式定时任务调度框架选型 背景 业务场景 定期执行任务:如每天0点做资源稽查; 需求和痛点 集群部署服务时,如何确保任务不被重复执行?---最急迫 如何监控、告警等; 高可用、无单点故障; 优秀的并行处理能力、分片能力; 自研 or 开源 任何工具的使用都要结合自身的业务场景,脱落业务场...

2020-05-08 16:44:41 94 2

转载 RabbitMQ之消息确认机制(事务+Confirm)

概述 在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默...

2020-05-08 11:20:54 65 0

转载 理解linux cpu load - 什么时候应该担心了

译文原文: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 你可能已经很熟悉linux的平均load. 平均load是3个数 (可以用uptime或者top命令查看), 他们看着像下面这样: load...

2020-05-08 10:29:37 26 0

转载 Java中HashMap底层原理源码分析

在介绍HashMap的同时,我会把它和HashTable以及ConcurrentHashMap的区别也说一下,不过本文主要是介绍HashMap,其实它们的原理差不多,都是数组加链表的形式存储数据,另外本文所介绍的都是JDK1.8版本的。在介绍之前,先看下Map家族的继承体系图:其中,TreeMap...

2020-05-07 21:31:09 69 0

转载 Lucene底层 索引原理

  基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB级、万亿条数据记录的检索工作,这里向大家分享下Lucene底层...

2020-04-29 17:53:32 88 0

转载 Lucene索引过程中 内存管理与数据存储

Lucene的索引过程分两个阶段,第一阶段把文档索引到内存中;第二阶段,即内存满了,就把内存中的数据刷新到硬盘上。         倒排索引信息在内存存储方式     ...

2020-04-29 17:44:57 34 0

转载 Lucene索引存储结构

内存管理 与 数据存储 索引文档的总体结构 索引(index):Lucene的索引由许多个文件组成,这些文件放在同一个目录下 段(segment):一个Lucene的索引由多个段组成,段与段之间是独立的。添加新的文档时可以生成新的段,达到阈值(段的个数,段中包含的文件数等)时,不同的...

2020-04-29 17:41:30 81 0

转载 elasticsearch的核心概念、分布式特性

1、lucene和elasticsearch的前世今生 lucene,最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构) elasticsearch,基于lucene,隐藏复杂性,提供简单易用的r...

2020-04-26 10:52:00 66 0

转载 Lucene、solr以及elasticsearch之间的区别和联系

首先分别说明三者的概念:Lucene是一套信息检索工具包,并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。而solr和elasticsearch都是基于该工具包做的一些封装。Solr...

2020-04-26 10:08:20 100 0

原创 内存与硬盘读取速度对比

测试速度: https://diy.pconline.com.cn/556/5561296_2.html 内存条品牌:红色威龙增强版DDR4 2666HMz(16-18-18-43-2T)测试成绩 连续读取: L1CACHE大概是1700GB/s的水平 L3CACHE 大概是200G...

2020-04-22 21:22:09 226 2

转载 内存的寻址、传输、存取时间与延迟原理介绍

  现代的PC(包括NB)都是以存储器为核心的多总线结构,即CPU只通过存储总线与主存储器交换信息(先在Cache里找数据,如果找不到,再去主存找)。输入输出设备通过I/O总线直接与主存储器交换信息。在I/O设备和主存储器之间配置专用的I/O处理器。CPU不直接参与I/O设备与主存储器之间的信息传...

2020-04-22 21:07:47 137 0

转载 MYSQL索引之B+Tree

首先,正确的创建合适的索引,是提升数据库查询性能的...

2020-04-17 14:07:29 38 0

转载 Elasticsearch倒排索引与B+Tree对比

如何快速检索? Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在 18 和 30 之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型数据库的 b-tree 索引快在哪里?到底为什么快呢...

2020-04-17 12:02:30 198 0

转载 Elasticsearch中的倒排索引详解

Elasticsearch创建索引流程一文中,介绍了ES创建索引的流程。再流程中是调用Lucene的接口来创建索引的。本篇文章主要介绍ES中的索引——倒排索引 倒排索引是搜索引擎非常重要的一种数据结构,什么是倒排索引,倒排索引的原理是什么? 1 索引过程 在讲解倒排索引前,我们先了解索引创建...

2020-04-17 11:58:29 87 0

转载 布隆过滤器的原理、使用场景和注意事项

什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是...

2020-04-16 16:50:02 41 0

转载 BTree和B+Tree详解

B-Tree是平衡搜索多叉树。 B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。 在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和...

2020-04-16 16:11:05 76 0

转载 【算法基础】o(1), o(n), o(logn), o(nlogn)

由于平时接触算法比较少,今天看资料看到了o(1),都不知道是什么意思,百度之后才知道是什么意思。 描述算法复杂度时,常用o(1), o(n), o(logn), o(nlogn)表示对应算法的时间复杂度,是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 O后面的括号...

2020-04-16 10:45:06 92 0

转载 Spring PropertyPlaceholderConfigurer 用法

PropertyPlaceholderConfigurer 用法一、PropertyPlaceholderConfigurer 的继承体系二、PropertyPlaceholderConfigurer 的基本概念三、PropertyPlaceholderConfigurer 的基本使用Proper...

2020-04-10 19:09:14 18 0

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