自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL - 分库分表产生的问题&解决方案

1.为什么分业务拆分,将一个大的业务拆分成多个小服务,服务之间通过RPC调用,不同服务的数据使用独立的数据库存储 应对高并发,读多写少,增加从库应对读流量,读少写多,分库分表,均衡写流量 数据隔离,C端数据和B端数据分隔,核心数据与非核心数据分隔,使其不要相互影响2.怎么分在分库分表之前,数据库表的主键自增可以唯一标记一条记录,但是分库分表之后,无法使用数据库的id,因为可能造成全局的主键id重复冲突常见的是采用一个分布式发号器实现,Twitter的Snowflake,美团的leaf等..

2020-08-02 11:09:18 2068 1

原创 MySQL - 异步复制,半同步复制,增强半同步复制,组复制,全告诉你

1.什么是主从复制主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库。可以理解为,主数据库的数据的任何变化,从数据库都会跟着发生变化。2.主从复制的作用 在从服务器可以执行查询工作,降低主服务器压力;(主库写,从库读,降压)读写分离 在从主服务器进行备份,避免备份期间影响主服务器服务;容灾 当主服务器出现问题时,可以切换到从服务器。提高可用性 3.主从复制的基本原理步骤含义: SQL语句操作变化存入BinLog...

2020-07-21 19:40:17 3834

原创 分布式最新理论 - PACELC (外加实践运用)

分布式最新理论 - PACELC (外加实践运用)PACELC理论是CAP理论的扩展,PACELC理论定义为:如果有分区partition ,系统就必须在availability 和consistency (A and C)之间取得平衡; 否则else (E) 当系统运行在无分区情况下,系统需要在 latency (L) 和 consistency 之间取得平衡当前分布式系统设计指导理论应当采用PACELC理论替代CAP理论,理由如下:PACELC更能满足实际操作中分布式系统的工作场景是更好的工

2020-07-09 23:35:02 1760 1

原创 数据库如何实现弹性伸缩

1.写在前面在之前文章中,探讨过到底为什么要云原生,以及云原生的核心应该是【弹性伸缩】和【按需计费】。并且简单描述了下应用层做到【弹性伸缩】所需要解决的问题。所以本文主要是继续探讨一下,弹性伸缩如何应用在数据库上。以及目前业界一些案例。2.弹性伸缩前提要实现【弹性伸缩】的前提是什么?答:通过一些监控指标,自动化快速拉起一个服务,无需人工介入而要做到这点,业界提出一个概念:服务无状态既然有无状态,那么就会存在有状态,两者的区别是什么呢?无状态:如果发布一台新机器无需..

2020-06-19 18:11:08 2103 1

原创 为什么要云原生?

为什么要云原生?文章目录为什么要云原生?1.写在前面2.服务的发展之路2.1 单体架构阶段2.2 RPC架构阶段2.3 微服务架构阶段3. 当下矛盾点4. 解决之道5. 问题就解决了?6. 总结1.写在前面目前业界对于云原生的声音越来越大,很多业界大牛给云原生布道,但是对于普通程序员来说,总有一些问题在困扰着,云原生到底是什么?云原生有什么好?怎么才能做到云原生?本文希望探讨云原生的诞生场景。以及解决的问题。2.服务的发展之路简单总结下过去十多年服务的演化之路,总体可以分为如下3个阶段【单体架

2020-05-21 13:37:38 1181

原创 一分钟带你彻底理解同步异步,阻塞非阻塞的区别

同步异步&阻塞非阻塞区别1. 同步&异步2. 阻塞&非阻塞. 几种IO分类3.1. 同步阻塞IO3.2. 同步非阻塞IO3.3. IO多路复用(Reactor模式)3.4. 异步IO(Proactor模式)1. 同步&异步同步与异步:关心的是消息通知机制如果调用方发起调用后,需要等待这个返回值,调用方主动去等它的返回,那么就是同步如果调用方发起调用后,立刻返回了,不同调用方去主动等它返回或者主动询问它返回,那么就是异步下面简单列举几个例子同步A a = read

2020-05-16 18:20:56 886

原创 ElasticSearch - 新老选主算法对比

1.7.X之前的选主流程Zen Discovery采用Bully算法,它假定所有节点都有一个唯一的ID,使用该ID对节点进行排序。任何时候的当前Leader都是参与集群的最高ID节点。该算法的优点是易于实现。但是,当拥有最大ID的节点处于不稳定状态的场景下会有问题。例如,Master负载过重而假死,集群拥有第二大ID的节点被选为新主,这时原来的Master恢复,再次被选为新主,然后又假死...

2020-04-22 14:51:32 2905

原创 ElasticSearch系列 - ElasticSearch读写原理分析

1.写流程Elasticsearch 是当前主流的搜索引擎,其具有扩展性好,查询速度快,查询结果近实时等优点,本文将对Elasticsearch的写操作进行分析。1.1.lucene的写操作及其问题Elasticsearch底层使用Lucene来实现doc的读写操作,Lucene通过publiclongaddDocument(...);publiclongdelet...

2020-03-22 18:10:07 1045

原创 分支预测是什么?为什么有序数组比无序数组快?

【12】今天是晴天还是下雨1. 背景1.1. 问题的提出2. 前情提示2.1. 流水线2.2. 分支预测器2.2.1. 久远的历史2.2.2. 在现代CPU中的情况2.2.2.1. 没有分支预测器会怎样?2.2.2.2. 有分支预测期的pipeline2.2.2.3. 常见的分支预测器3. 分析4. 结论1. 背景import java.ut...

2020-03-02 22:12:53 698

原创 ElasticSearch为什么检索快?对比Mysql分析

1.ES一定快吗?1.1.数据库的索引是B+tree结构主键是聚合索引 其他索引是非聚合索引,见下图如果是一般搜索,一般从非聚集索树上搜索出id,然后再到聚集索引树上搜索出需要的内容。1.2.elasticsearch倒排索引原理Term Index 以树的形式保存在内存中,运用了FST+压缩公共前缀方法极大的节省了内存,通过Term Index查询到Te...

2020-02-22 17:01:34 9110 3

原创 ElasticSearch系列 - Mapping

ElasticSearch系列 - Mapping文章目录ElasticSearch系列 - Mappingdynamic Mapping自定义MappingIndex Template & Dynamic Templatedynamic MappingMapping类似数据库中的schema定义,作用如下定义索引中的字段的名义定义字段的数据类型,例如字符串,数字,布尔字段,...

2019-11-17 15:54:20 424

原创 JDK8中HashMap依然会死循环!

JDK8中HashMap依然会死循环!​ 是否你听说过JDK8之后HashMap以及解决的扩容死循环的问题,虽然HashMap依然说线程不安全,但是不会造成服务器load飙升的问题。​ 然而事实并非如此。少年可曾了解一种红黑树成环的场景,=v=​ 今日在查看监控时候发现,某一台机器load飙升感觉问题不对劲,ssh大法登陆机器,top,top -Hp,jstack,jmap四连击保存...

2019-09-26 21:53:34 8137 7

原创 ElasticSearch系列 - analyzer分词

ElasticSearch系列 - analyzer分词文章目录ElasticSearch系列 - analyzer分词什么是AnalyzerAnalyzer的组成ElasticSearch 的内置分词器ElasticSearch 使用分词器中文分词的难点中文分词的原理基于字符串匹配基于理解的分词方法基于统计的分词方法什么是AnalyzerElasticSearch中数据的存储是要经过分词再...

2019-09-24 23:27:43 510

原创 ElasticSearch系列 - 倒排索引

文章目录ElasticSearch系列 - 倒排索引倒排索引ElasticSearch 索引结构概述ElasticSearch 索引原理ElasticSearch系列 - 倒排索引倒排索引MySQL是存储结构化数据的数据库,所以MySQL中的索引是正向索引,key->value,需要注意的是,MySQL中的scheme定义了表的结构,我们定义B-tree索引也只能定义在表字段上,从某种...

2019-09-11 10:33:06 519

原创 ElasticSearch系列 - 文档基本操作

ElasticSearch系列 - 文档基本操作运行EKL(ElasticSearch+Kibanan+Logstash)进入Kibanna页面选择控制台Console,可以在线输入命令,方便学习进入cerebro集群控制台查看当前集群情况,一共4个索引,前三个是Kibanna测试数据,后面movies是通过Logstash导入的绿色加粗代表是主分片,虚线代表是副本分片。此时我运...

2019-08-31 10:03:57 914

原创 ElasticSearch系列 - 集群&节点和分片

ElasticSearch系列 - 集群&节点和分片文章目录ElasticSearch系列 - 集群&节点和分片ElasticSearch 特性节点Master eligible Node & Master NodeData NodeCoordinating NodeHot & Warm NodeMachine Learning NodeTribe Node配置节...

2019-08-31 10:00:48 4753

原创 ElasticSearch系列 - 文档&索引

文章目录ElasticSearch系列 - 文档&索引对比MySQL文档(Document)JSON文档元数据索引(Index)TypeElasticSearch系列 - 文档&索引对比MySQLElasticSearchMysqlTableIndex(Type)RowDocumentColumnFieldSchemaMappin...

2019-08-31 09:58:10 508

原创 ElasticSearch系列 - 安装

ElasticSearch系列 - 安装ElasticSearch 安装elasticSearch下载选择MACOS 下载,然后解压zip包Elasticsearch目录结构为:目录配置文件描述bin脚本文件,包括起点elasticsearch。安装插件,运行统计数据等configelasticsearch.yml集群配置文件,user,role b...

2019-08-31 09:55:24 368

原创 LeetCode-求众数

LeetCode-求众数题目给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思路我们可以设置一个标志位temp,标记数组的第一个值出现一次,temp=1,result=nu...

2019-08-25 13:07:47 355

原创 协程-初探

目录1.协程定义2.进程,线程,协程3.协程优点3.1.内存小3.2.效率高3.3.减少同步锁3.4.同步代码思维写异步代码4.协程的缺点4.1.无法利用多核资源4.2.协程中不能有阻塞操作4.3.CPU密集型不是长处5.Java实现协程(Kilim)的原理6.例子1.协程定义Coroutines are co...

2019-08-17 20:33:06 1532

原创 一分钟了解DHCP

目录DHCP是什么有什么作用为什么需要DHCPDHCP的过程DHCP是什么DHCP动态主机配置协议有什么作用动态的为新加入本网络的主机分配ip地址为什么需要DHCP假设在没有DHCP的年代,我的电脑带入了公司,想要上网,那么要经历什么样的步骤呢假设公司的网络号是192.168.1.x,那么我带了一台mac进来,我为自己分配了个ip,假设...

2019-08-10 22:08:37 586 1

原创 一分钟了解网卡知识

ip addr命令网卡中的inet是ip地址,能看到子网掩码 例如 10.20.53.115/24网卡中的link/ether 这个是Mac地址,一个网卡的物理地址,16进制 6byte 全球唯一eth0 网卡ip后面是global,代表这个网卡可以对外通信,接收各地的包lo 网卡ip后面是 host,表示这个网卡只可以和本机通信,分配的ip是127.0.0.1 lo 全...

2019-08-10 22:06:59 3972

原创 一文看懂JDK12中新版垃圾回收器-Shenandoah GC

目录1.简介2.流程3.实现3.1.GC 前3.2.GC 疏散阶段(Concurrent Evacuation)3.3.GC 更新引用阶段(Concurrent Update References)3.4.GC更新引用阶段(Final Update Refs)4.对象比较怎么办?5.适用场景6.性能对比7.大神猜测8.附1...

2019-05-18 13:36:09 6765

原创 长尾请求

1.什么是长尾?长尾请求一般是指明显高于均值的那部分占比较小的请求。 业界关于延迟有一个常用的P99标准, 也就是99%的请求延迟要满足在一定耗时以内, 1%的请求会大于这个耗时, 而这1%就可以认为是长尾请求。2.长尾会导致什么危害假设,一个服务B,有1%的可能性响应时间大于1s,如果此刻一个上游服务A需要完成一次查询,需要同时查询100次的话,那么服务A响应时间超过1s的...

2019-04-14 22:01:43 2774 3

原创 InnoDB怎么解决幻读的?

1.结论首先说结论,在RR的隔离级别下,Innodb使用MVVC和next-key locks解决幻读,MVVC解决的是普通读(快照读)的幻读,next-key locks解决的是当前读情况下的幻读。2.幻读是什么事务A,先执行:update table set name=“hh” where id>3;结果为:OK row xx 表名成功影响多少行数据...

2019-04-03 20:39:52 27853 17

原创 服务等级协议SLA到底是在说什么?

SLA(Service Level Agreement)服务等级协议它描述是双方的一种约定,是一种服务可用性的指标。服务可用性也是用百分比表示,但是与TP线含义不同tp99%表示 满足99%的请求所用的最大响应时间可用性99%表示一定时间内提供服务的停机时间。拿一年为例1年 = 365天 = 8760小时99.9 = 8760 * 0.1% = 8760 * 0.001 =...

2019-03-27 22:16:19 32431

原创 为什么Caffeine比Guava好?

目录1.缓存淘汰算法1.1.FIFO1.2.LRU1.3.LFU2.几种缓存的实现2.1.原生Java2.2.Guava2.3.Caffeine3.参考资料1.缓存淘汰算法1.1.FIFO先进先出:最先进入的缓存被最先淘汰掉,这个基本不会有人用来做缓存1.2.LRU最近最少未使用:每次访问就把这个元素放到队列头部...

2019-03-27 22:13:45 15001 5

原创 运行期间动态切换Redis数据库

public void selectDB(int db) { LettuceConnectionFactory factory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory(); factory.setDatabase(db); fac...

2019-03-06 23:15:33 2883 1

原创 Mockito快速使用教程

1. 什么是 MockitoMockito 是一个强大的用于 Java 开发的模拟测试框架, 通过 Mockito 我们可以创建和配置 Mock 对象, 进而简化有外部依赖的类的测试. 2. 为什么使用Mockito我们系统一般的功能是controller->biz->service→Dao如果我们只想测试一个biz中的功能,我们必须配置好类与类之间的关系,组装好一...

2019-02-15 19:49:24 8435

原创 Redis-单机数据库的实现-数据库原理

目录1. 服务器中的数据库2. 数据库键空间2.1. 读写空间时的维护操作3. 过期时间4. 过期删除策略4.1. 定时删除4.2. 惰性删除4.3. 定期删除4.4. Redis删除策略5. AOF、RDB和复制功能对对过期键的处理5.1. RDB5.2. AOF5.3. 复制6. 数据库通知1. 服务器中的数据库Redis也是个程...

2019-01-23 11:30:18 552

原创 流控神器-Sentinel-资源节点树的构成(NodeSelectorSlot)

目录 1. 概述2. 一些需要知道的前提2.1. Resource2.2. Context2.3. Entry2.4. Node3. 深入分析3.1. demo启动3.2. 创建Context3.3. 创建Entry3.4. 执行NodeSelectorSlot.entry3.4.1. 相同资源名情况下3.4.2. 不同资源名情况下1. ...

2019-01-20 23:52:02 1945

原创 流控神器-Sentinel-工作原理

Sentinel 是面向分布式服务架构的轻量级流量控制框架,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。 1. Sentinel资源&规则我们说的资源,可以是任何东西,服务,服务里的方法,甚至是一段代码。使用 Sentinel 来进行资源保护,主要分为两个步骤:定义资源 定义规则先把可能需要保护的资源定义好,之后再配置规则。...

2019-01-17 17:24:20 6475 1

原创 Redis-数据结构与对象-对象

1.作用Redis使用对象作为五种不同类型的底层实现,字符串,列表,哈希,集合,有序集合等而对象是基于之前的分析的数据结构创建的。每个对象都至少用到一种数据结构,这意味着,Redis五大类型,底层实现是可以有多种实现的,这方便在不同场景下选择合适的底层结构,优化性能在Redis中,键和值均为一个对象2.数据结构typedefstructredisObject{...

2019-01-17 17:08:05 7589 9

原创 Redis-数据结构与对象-压缩列表

1. 作用压缩列表是列表键和哈希键的底层实现之一当一个列表键只包含少量列表项,并且每个列表要么就是小整数值,要么就是长度比较短的字符串,那么使用压缩列表作为底层实现当一个哈希键只包含少量键值对,而且每个键值对的键和值要么是小整数值要是就是长度比较短的字符串,那么底层实现是压缩列表 2. 数据结构压缩列表是Redis为了节约内存而开发的,是一系列特殊编码的连续内存块组成的顺序...

2019-01-17 17:04:59 439

原创 Redis-数据结构与对象-整数集合

1. 作用整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多,Redis会使用整数集合作为集合的底层实现 2. 数据结构typedef struct intset{    //编码方式    uint32_t encoding;    //集合包含的元素数量    uint32_t length;    //保存元素的数组...

2019-01-17 17:03:17 352

原创 Redis-数据结构与对象-跳跃表

1. 作用跳跃表在Redis中主要运用在有序集合和集群节点用作内部数据结构 2. 数据结构typedef struct zskiplist{    zskiplistNode *header; //跳跃表头节点    zskiplistNode *tail;   //跳跃表尾节点    int level;   //层数,跳跃表中节点最大层数    int len...

2019-01-08 11:57:57 416

原创 Redis-数据结构与对象-字典

1. 作用字典类似Java中的Map在Redis中用在做数据库底层和哈希键的使用例如  SET  msg  “redis”   msg就是键,redis就是值,底层就是保存在字典中当一个哈希键包含的键值对比较多,又或者键值对中的元素都是比较长的字符串,Redis会使用字典作为哈希键的实现那么,比较少键值对就不会使用字典咯?2. 数据结构typedef struct d...

2019-01-04 16:31:49 455

原创 Redis-数据结构与对象-链表

1. 作用Redis中链表被广泛运用在很多地方,例如列表键,发布订阅,慢查询,监视器,Redis服务器本身还是要链表保存多个客户端状态信息,以及运用链表构建客户端输出缓冲区2. 数据结构typedef struct listNode{    //前置节点    struct listNode *prev;    //后置节点    struct listNode ...

2019-01-04 16:30:08 366

原创 Redis-数据结构与对象-简单动态字符串

1. Redis中的String在Redis中没有使用c语言的字符串,而是使用了一种叫做简单动态字符串的数据结构,简称SDS,而c中的字符串在Redis只有字面量,且无需对字符串内容修改的时候才使用,其他时候都是使用SDS例如  set msg “redis”  其中msg和”redis“  底层均为SDS例如  redisLog("asdasdasd")  这个时候就是使用c语言字符...

2019-01-03 19:41:31 374

原创 Navicat for Premium 12 Mac 破解

1.为什么选择使用Navicat for Premium感觉Navicat的ui很好看,习惯了Navicat,功能也确实强大 2.下载可以破解的版本首先不能在官网上下载最新版本,目前我找到的方法支持120版本。 链接:https://pan.baidu.com/s/1WAodDADiir7z-exQzoMI3w  密码:t8lz为啥官网的版本不能破解,因为在其/Applicat...

2018-12-03 23:13:27 1204 3

Tomcat8源码研究可直接导入eclipse

tomcat8源码研究, 直接导入eclipse即可使用,无bug,

2018-04-18

空空如也

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

TA关注的人

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