自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式系统数据一致性详解

分布式系统数据一致性详解问题背景随着业务规模的增长,单应用和单数据库已经无法支撑,这时我们可能就会进行服务拆分、数据库拆分等来缓解单点压力。但这时数据存储于不同的事务单元但又要保证同步数据,这时就产生了分布式系统的数据一致性问题。分布式一致性目前有SOA一致性问题、多数据源一致性问题。常见场景如下:场景A:传统业务数据库瓶颈的分库方案比如订单和积分表分在两台机器的两个库中,完成订单后需...

2020-03-23 00:10:38 879 1

原创 服务限流-令牌桶算法和漏桶算法

服务限流-令牌桶算法和漏桶算法问题场景在系统中,有时可能遭遇突发大流量来请求,这时如果请求量达到系统压力上限,就可能导致服务运行缓慢甚至宕机。此时我们的选项无非就是三板斧:缓存、限流、服务降级。限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。常用的限流算法有令牌桶和和漏桶,而Google开源项目Guava中的RateLimiter使...

2020-03-20 00:52:20 442

原创 MySQL聚集索引和非聚集索引

MySQL聚集索引和非聚集索引聚集索引概念理解聚集索引中键值的逻辑顺序决定了数据表的物理顺序,即聚集索引的键值对的顺序与数据表中数据的顺序是一致的。所以每一张数据表,只能有一个聚集索引。一般来说MySQL中,聚集索引会自动选择主键列。其他情况稍后解释。在除了MyISAM引擎的其他引擎中,索引的叶子节点就是对应的数据节点。可以直接获取到对应的全部列的数据。而非聚集索引则需要二次查询。注意...

2020-03-18 23:35:20 321

原创 MySQL的回表查询与索引覆盖查询详解

MySQL的回表查询与索引覆盖查询回表查询名词解释上篇讲到,MySQL中分为聚集索引和非聚集索引。非聚集索引的btree叶子节点中存储的是当行数据的PK。所以为了取到具体数据,则需要通过PK回到聚集索引里去查询数据。着就叫回表查询。扫描了2次索引树。所以效率相对较低。有图有真相假设有个T表,如下图所示。id是聚集索引,name则是普通索引。idnamesex1小...

2020-03-18 23:34:32 2557

原创 一些想法

对于如何应对突发流量激增的一些想法服务限流熔断机制这个模式是需要系统在设计之初,就要把熔断措施考虑进去。当系统出现问题时,如果短时间内无法修复,系统要自动做出判断,开启熔断开关,拒绝流量访问,避免大流量对后端的过载请求。系统也应该能够动态监测后端程序的修复情况,当程序已恢复稳定时,可以关闭熔断开关,恢复正常服务。服务降级将系统的所有功能服务进行一个分级,当系统出现问题,需要紧急限流时,...

2020-03-15 00:43:24 176

原创 es学习笔记

Elasticsearch学习笔记 (之后看看IK分词器)为什么要学习es数据库数据量达到一定级别,可能会引发性能问题。多关键字搜索、分词搜索。传统数据库使用or拼接性能极差。权重、相关度排序,传统数据库orderby性能也极差。高亮处理总结:解决传统数据库大数据量下的性能瓶颈、优化复杂搜索的性能。安装事项es开发语言是java,运行es必须装jre,且得为1.8。con...

2020-03-13 01:34:30 165

原创 Docker复习

Docker什么是DockerDocker特点超级轻量的容器,相对传统虚拟机需要Hypervisor和虚拟一整套系统来说,Docker只需要在宿主机上运行一个Docker引擎。在Docker引擎上就可以直接安装我们应用的依赖和运行我们的应用。秒级启动的容器。相比传统虚拟机快得多。如此则可实现服务的快速扩展,使得服务的弹性更大。系统资源利用率很高,一台宿主机可以同时运行上千个Docker...

2020-03-11 00:38:25 258

原创 RabbitMQ学习笔记

RabbitMQ学习笔记什么是MQ消息队列(message queue),本质是个存放消息的队列,先进先出(FIFO),主要用于不同进程/线程间的通讯。为什么使用MQ?异步处理流量削峰组件解耦流量缓冲:比如下单量暴增,即使数据库读写分离,也会导致写节点可能挂逼,出现丢单之类的高风险事件,这时订单信息先打到MQ,然后在消费MQ里的信息处理DB。写多读少用队列,读多写少用缓存。R...

2020-03-09 22:37:28 188

原创 JVM类加载机制、类加载器、双亲委派

JVM类加载类加载过程加载这一步骤通常由JVM提供的类加载器来完成,我们也可以通过实现ClassLoder来自定义一个类加载器。指将类的class文件读入内存当中,并为之创建一个java.lang.Class的对象。连接验证 验证是连接阶段的第一步,这一步是为了保证当前Class文件的字节流中包含的信息符合当前虚拟机的要求,不会危害虚拟机自身的安全。 1. 文件格式验证...

2019-09-04 00:23:24 227

原创 Python学习笔记Ⅰ

函数定义def 函数名(参数):    方法体Demodef is_empty(list): if list == None or len(list) == 0: return True else: return Falseids = Noneprint(is_empty(ids))ids = [1]print(is_empty(ids))语法注:pyt...

2018-12-17 22:12:53 141

原创 九大排序算法(Ⅲ)

九大排序算法(Ⅲ)接上一篇,这次讲讲冒泡排序思路重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 代码实现package com.demo.main;/** * 冒泡排序 */publ...

2018-12-03 00:24:17 204

原创 九大排序算法(Ⅱ)

九大排序算法(Ⅱ)接上一篇,这次我们讲讲简单选择排序 1、简单选择排序思路从集合第一位开始,遍历完整个集合,遍历过程中发现有比第一位小的,则记录下标,如果后面发现有更小的,则更新记录的下标,到最后遍历完后,将记录下的最小值的下标与第一位互换位置,然后从集合第二位开始,遍历集合,重复以上步骤。图片来自:静默虚空 博客代码实现package com.demo.ma...

2018-12-02 04:04:47 150

原创 九大排序算法(Ⅰ)

九大排序算法(Ⅰ)常见的排序分为两类,一类是内部排序(直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序、基数排序),一类是外部排序。当N较大时,应该使用时间复杂度为O(nlog2n)的排序,如快速排序、堆排序、归并排序。快排是基于比较的内部排序中,最好的方法。 1、插入排序-直接插入排序思路假设数组为R[0]-R[n-1],第一次首先用R[0]...

2018-11-28 22:36:59 215

原创 Java解析Excel内存占用更低的解析方式,EasyExcel

Java解析Excel内存占用更低的解析方式,EasyExcelJava解析以及生成Excel有许多工具,Like(POI,JXL),但是他们的内存占用都比较严重,今天给大家介绍一款来自Alibaba的框架:EasyExcel。经过我不太严谨的初步测试(哈哈),能够使内存占用减少80%左右(注意啊不严谨的测试,数据仅供参考,具体可以自己测试一下哈),接下来进入正题。EasyExcel解析...

2018-11-25 22:07:21 3058 1

原创 Git使用及深入理解(Ⅰ)

Git使用及深入理解(Ⅰ)使用Git已经很长一段时间了,但是因为种种原因没有来得及去升入了解它,仅仅只是会使用IDE上集成的工具去提交、更新代码等,对于很多命令、操作都不太了解,从而也导致了平常我在提交、回滚、合并代码的时候,总是手抖抖、心慌慌,反正就是各种害怕,归根结底原因就是对于Git没有全方位的了解和认识。所以现在抽出时间,来好好扒一扒Git。Ⅰ、什么是GitGit是一个免费的开...

2018-11-22 22:12:21 386

空空如也

空空如也

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

TA关注的人

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