2 R_P_J

尚未进行身份认证

个人学习笔记整理

等级
TA的排名 10w+

基于zookeeper实现分布式锁的底层原理

注:关于什么是分布式锁及其应用场景这里不赘述,需要了解请自行百度!一zookeeper分布式锁原理:原理图基于curator(zookeeper客户端框架),具体代码实现看下官网API(很简单),此图解释了以下问题:多线程间如何获取锁资源?一个线程内重复加锁如何处理?争抢锁资源时如何保证性能?节点挂机是否会造成死锁?如何解决高可用?二redis分布式锁RedLock算法简...

2018-10-31 23:08:18

图解elasticsearch的写入流程(包含对refresh、fsync、flush操作的理解)

elasticsearch写入数据时涉及到的核心概念讲解:segmentfile:存储逆向索引的文件,每个segment本质上就是一个逆向索引,每秒都会生成一个segment文件,当文件过多时es会自动进行segmentmerge(合并文件),合并时会同时将已经标注删除的文档物理删除;commitpoint(重点理解):记录当前所有可用的segment,每个commitpoin...

2018-08-31 12:06:43

Eureka启动流程 - EurekaBootStrap源码解析

cloud源码:https://github.com/spring-cloud/spring-cloud-netflixnetflix源码:https://github.com/Netflix/eurekaeureka-server中web.xml解读:配置了一个监听器(启动核心入口,重点分析):<listener><listener-class&g...

2018-08-08 19:19:38

十分钟了解23种设计模式

注:适用于设计模式入门和面试突击什么是设计模式?是经过前人无数次的实践总结出的,设计过程中可以被反复使用的,可以解决特定问题的设计方法,java面向对象编程的所有思想都出自这23种设计模式,无处不用。1)单例模式(以下几种单例务必掌握):饿汉式、懒汉式、双重锁(使用volatile防止指令重排)、静态内部类的单例模式(自己封装时最常用)、枚举(最安全的单例)//做...

2018-07-19 00:01:03

Git常用命令

git入门命令1.对一个已有的项目初始化git版本库//进入此项目根目录下:gitinit解释:gitinit命令作用是将此项目交给git托管,创建的.git隐藏目录实际上就是存储了你的每个代码文件的每个版本。2.对代码进行版本控制gitadd--all.gitcommit-m'自己输入的所需日志'解释:git本地仓库结构有三个区域...

2018-07-12 00:12:51

并行流parallel,CompletableFuture与Executors线程池的使用与区别

list并行操作在项目开发可以极大提高代码效率与性能,java8对其进行了很好的封装,简单使用研究一下:1.先自己创建一个list://list在实际使用中要注意线程安全,Collections.synchronizedList写操作性能高,CopyOnWriteArrayList读操作性能较好List<String>list=Arrays.asList(newS...

2018-03-16 15:57:53

redis-cluster核心原理分析:gossip通信、jedis smart定位、主备切换

1、节点间的内部通信机制1.1基础通信原理rediscluster节点间采取gossip协议进行通信维护集群的元数据有两种方式:集中式和gossip集中式:优点在于元数据的更新和读取,时效性非常好,一旦元数据出现变更立即就会更新到集中式的存储中,其他节点读取的时候立即就可以立即感知到;不足在于所有的元数据的更新压力全部集中在一个地方,可能导致元数据的存储压力。gossip:

2017-12-15 15:02:27

redis-cluster集群搭建

本人最近在搭建一套主从复制+高可用+多master的rediscluster集群,搭建环境是CentOS7,redis版本3.2.8。1、补充redis-trib.rb文件基本知识redis-rib.rb是redis的集群管理工具,集成在redis的src目录下,是redis作者使用ruby脚本语言编写的,此工具提供了一下功能:1、create:创建集群2、check:检查集群3、in

2017-12-02 23:39:35

Redis哨兵架构详解

1、哨兵(sentinal)的介绍哨兵是redis集群架构中非常重要的一个组件,主要功能如下:集群监控:负责监控redis的master和slave进程是否正常工作;消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员;故障转移:如果masternode挂掉了,会自动转移到slavenode上;配置中心:如果故障转移发生了,通知client客户端新的maste

2017-11-20 19:51:32

笔记:elasticsearch在项目中的使用需求

(摘抄自公司大牛的笔记,自己总结一下)类比mysql,我们需要=、>、>=、<、<=、or、and、in、like、count、sum、groupby、orderby、limit在高版本的ES里面使用了boolquery替换了filter1、等于号=QueryBuilders.termQuery("isDel",1));//termQuery相当于=,相当于isDel=12、大于小于

2017-11-16 21:19:36

第十七篇:elasticsearch java API的使用

首先添加上maven依赖:<dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.logging.

2017-11-06 20:42:20

第十六篇 深入elasticsearch聚合数据分析

1.bucket与metric两个核心概念单词意思就可以理解:bucket:桶就是对我们的数据进行分组;sql中相当于:groupbyuser_idmetric:度量标准就是对一个数据分组执行的某种聚合分析的操作,比如说求平均值,求最大值,求最小值;2、家电卖场案例背景以一个家电卖场中的电视销售数据为背景,来对各种品牌,各种颜色的电视的销量和销售额,进行各种各样角度的分析//添

2017-11-03 20:34:51

补充篇 基于linux centos 7安装elasticsearch

强调:elasticsearch是基于JDK1.8运行的,安装前请务必安装完jdk1.8一、安装elasticsearch1、进入我的安装目录:cd/usr/local/2、执行下载命令:wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.tar.gz3、执行解压命令:tar-zxfe

2017-11-02 18:20:54

第十五篇 深度揭秘elasticsearch的搜索技术

1.手动控制全文检索结果的精准度1.1为帖子数据添加标题字段POST/forum/article/_bulk{"update":{"_id":"1"}}{"doc":{"title":"thisisjavaandelasticsearchblog"}}{"update":{"_id":"2"}}{"doc":{"title":"thi

2017-11-02 17:17:49

第十四篇 elasticsearch的结构化搜索(全)

1.使用term、filter来搜索数据1.1插入一些数据POST/forum/article/_bulk{"index":{"_id":1}}{"articleID":"XHDK-A-1293-#fJ3","userID":1,"hidden":false,"postDate":"2017-01-01"}{"index":{"_id":2}}

2017-11-02 14:27:31

第十三篇 elasticsearch的Query DSL搜索语法

QueryDSL基本语法{QUERY_NAME:{ARGUMENT:VALUE,ARGUMENT:VALUE,...}}{QUERY_NAME:{FIELD_NAME:{ARGUMENT:VALUE,ARGUMENT:VALUE,...

2017-10-31 18:01:12

第十二篇 elasticsearch中的mapping透彻理解

首先插入几条数据,让es自动为我们建立一个索引PUT/website/article/1{"post_date":"2017-01-01","title":"myfirstarticle","content":"thisismyfirstarticleinthiswebsite","author_id":11400}PUT/website/a

2017-10-31 17:00:33

第十一篇 elasticsearch的分页搜索和deep_paging性能问题

1.分页搜索的语法size,fromGET/_search?size=10GET/_search?size=10&amp;from=0GET/_search?size=10&amp;from=202.deeppaging性能探究deeppaging简单来说,就是搜索的特别深,比如总共有60000条数据,每个shard上分20000条,每页是10条数据,这个时候你要搜索到第1000页,实际上要拿到的

2017-10-31 14:25:50

第十篇 elasticsearch的写一致性原理以及quorum机制深入剖析

1.consistency参数:one(primaryshard),all(allshard),quorum(default)我们在发送任何一个增删改操作时比如put/index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么:put/index/type/id?consistency=quorumone:要求我们这个写操作,只要有一个primar

2017-10-30 17:50:49

第九篇 elasticsearch的document数据路由原理

1.document是怎么路由到shard上的?路由算法:shard=hash(routing)%number_of_primary_shards假如一个index有3个primaryshard,P0,P1,P2;在每次增删改查一个document的时候都会带过来一个routingnumber,默认就是这个document的_id(可能是手动指定,也可以自动生成);elas

2017-10-30 14:13:55

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!