自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Docker快速入门——Docker-Compose

Docker快速入门——Docker-Compose一、Docker-Compose简介1、Docker-Compose简介Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Comp...

2019-07-03 15:31:52 267

转载 JVM调优

这里介绍4个垃圾收集器,如果进行了错误的选择将会大大的影响程序的性能。    时至今日,仍然有两个事情困扰着开发人员:垃圾收集(GC)和了解异性(程序猿的悲鸣),后者我确实不太了解,因为我被前者搞的无暇顾及怎么了解异性,特别是当知道在JAVA8中对这一区域有了很大的改进和提升还有移除了PermGen和以一些新的令人兴奋的调优。    当我们谈到垃圾回收时,我们绝大多数都知道利用它的概念在我...

2019-01-02 14:01:25 268

原创 Spring-@Transactional的事务隔离级别

//支持当前事务,如果当前没有事务,就新建一个事务。Spring默认事务级别。int PROPAGATION_REQUIRED = 0;  //支持当前事务,如果当前没有事务,就以非事务方式执行。int PROPAGATION_SUPPORTS = 1;  //支持当前事务,如果当前没有事务,就抛出异常。int PROPAGATION_MANDATORY = 2;  //新...

2018-10-29 09:46:12 4317 2

转载 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式

一.系统吞度量要素:  一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间        QPS(TPS):每秒钟request/事务 数量        并发数: 系统同时处理的reque...

2018-10-09 10:53:34 262

转载 三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)  (资料来自网络,做了部分的补充说明)LVS:    1. 抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低    2. 工作在网络4层,通过VRRP协议(仅作代理之用),具体的流量是由linux内核来处理,因此没有流量的产生。    3. 稳定,可靠性高,自身有完美的热备方案(Keepalived+...

2018-09-12 15:41:38 166

转载 深入理解Java内存模型(七)——总结

处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:...

2018-09-06 18:19:15 121

转载 深入理解Java内存模型(六)——final

与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说明这两...

2018-09-06 17:38:30 100

转载 深入理解Java内存模型(五)——锁

锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a...

2018-09-06 17:37:07 112

转载 深入理解Java内存模型(四)——volatile

volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L;...

2018-09-06 17:35:42 117

转载 深入理解Java内存模型(三)——顺序一致性

数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存一致性做了如...

2018-09-06 17:33:59 123

转载 深入理解Java内存模型(二)——重排序

数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称 代码示例 说明 写后读 a = 1;b = a; 写一个变量之后,再读这个位置。 写后写 a = 1;a = 2; 写一个变量之后,再写这个变量。 读后写 a = b;b = 1; 读一个变量之后,...

2018-09-06 17:32:55 110

转载 深入理解Java内存模型(一)——基础

并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通...

2018-09-06 17:30:43 107

转载 23种设计模式

一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两...

2018-09-03 15:11:29 113

转载 常用架构模式

根据维基百科中的定义:架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。在本文中,将简要地解释以下10种常见的体系架构模式,以及它们的用法、优缺点。分层模式 客户端-服务器模式 主从设备模式 管道-过滤器模式 代理模式 点对点模式 事件总线模式 模型-视图-控制器模式 黑板模式...

2018-08-30 11:06:33 444

转载 Mysql(3):事务、锁及锁级别

1、什么是事务事务是一条或多条数据库操作语句的组合,具备ACID,4个特点。原子性:要不全部成功,要不全部撤销隔离性:事务之间相互独立,互不干扰一致性:数据库正确地改变状态后,数据库的一致性约束没有被破坏持久性:事务的提交结果,将持久保存在数据库中 2、事务并发会产生什么问题1)第一类丢失更新:在没有事务隔离的情况下,两个事务都同时更新一行数据,但是第二个事务却中途...

2018-08-30 08:49:48 2846

转载 Mysql(2):MyISAM和InnDB的区别

MyISAM:不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储表的总行数; 一个MYISAM表有三个文件:索引文件、表结构文件、数据文件; 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。InnoDb:支持ACID的事务,支持事务的四种隔离级别; 支持行级锁及外键约束:因此可以支持写并发...

2018-08-30 08:46:07 1472

转载 Mysql(1):由浅入深探究mysql索引结构原理、性能分析与优化

第一部分:基础知识:索引官方介绍索引是帮助MySQL高效获取数据的数据结构。笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里,不用一页一页查阅找出需要的资料。关键字index-------------------------------------------------------------唯一索引强调唯一,就是索引值必须唯一,关键字unique index...

2018-08-29 10:29:57 301

转载 并发基础(1):wait、sleep、await、yield的区别

是否释放锁:调用sleep和yield的时候不释放当前线程所获得的锁,但是调用await/wait的时候却释放了其获取的锁并阻塞等待。 调用后何时恢复:# sleep让线程阻塞,且在指定的时间之内都不会执行,时间到了之后恢复到就绪状态,也不一定被立即调度执行;# yield只是让当前对象回到就绪状态,还是有可能马上被再次被调用执行。# await/wait,它会一直阻塞在条件队...

2018-08-29 08:49:44 2946

转载 Dubbo(4):服务提供方Invoker到Exporter的转换

一、前言前面dubbo整体架构分析里面我们讲解了服务提供者暴露一个服务的详细过程是,首先具体服务的实现类转换为了Invoker对象,然后Invoker在转换为Exporter,本文就来讲解第二步转换。image.png二、Invoker到Exporter的转换服务提供方的Invoker到Exporter的转换是下面代码完成的:image.png其中protocol是...

2018-08-28 16:35:56 546

转载 Dubbo(3):服务提供方实现类到Invoker的转换

一、前言前面dubbo整体架构分析里面我们讲解了服务提供者暴露一个服务的详细过程是,首先具体服务的实现类转换为了Invoker对象,然后Invoker在转换为Exporter,本文就来讲解第一步转换。 二、实现类到Invoker对象的转换服务提供方式是通过下面方法实现服务提供的实现类到Invoker对象的转换其中proxyFactory是代理类的扩展接口,默认情况下这里...

2018-08-28 16:31:40 418

转载 Netty(1):线程模型

本文主要介绍Netty线程模型及其实现,介绍Netty线程模型前,首先会介绍下经典的Reactor线程模型,目前大多数网络框架都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,非常适合处理海量的I/O事件。下面简单介绍下Reactor模式及其线程模型。Reactor模式Reactor模式首先是事件驱动的,有一个或多个并发输入源,有一个Service Handler,...

2018-08-28 16:25:24 161

转载 Dubbo(2):分组与版本号

一、前言在Dubbo中接口类并不能唯一确定一个服务,在dubbo中接口+服务分组+版本号才能唯一确定一个服务,本文就来讲解下服务分组和版本号的使用。二、服务分组当一个接口有多种实现时,可以用 group 区分。服务提供方: image.png 上面配置在服务提供方法提供了com.test.UserServiceBo接口的两套实现,服务分组分别为olddubbo,newd...

2018-08-28 12:09:52 978

转载 Dubbo(1):线程模型

一、前言Dubbo默认的底层网络通讯是使用Netty来做的,在服务提供方NettyServer使用两级线程池,其中EventLoopGroup(boss)主要用来接受客户端的链接请求,并把接受的请求分发给EventLoopGroup(worker)来处理,boss和worker线程组我们称为IO线程。如果服务提供方的逻辑能迅速完成,并且不会发起新的 IO 请求,则直接在 IO 线程上处理更...

2018-08-28 12:09:06 150

转载 服务溶断、降级、限流(1):概念

服务熔断在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进。但是,一个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调用完成。这就带来一个问题,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长...

2018-08-28 11:21:55 4581

转载 iptables(1):介绍

iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得它很复杂,但是一旦你理解iptables的工作原理,你会发现其实它很简单。首先介绍iptables的结构:iptables -> Tables -> Ch...

2018-08-28 09:37:48 334

转载 iptables(2):使用

一、iptables:从这里开始删除现有规则iptables -F(OR)iptables --flush设置默认链策略iptables的filter表中有三种链:INPUT, FORWARD和OUTPUT。默认的链策略是ACCEPT,你可以将它们设置成DROP。iptables -P INPUT DROPiptables -P FORWARD DROPiptab...

2018-08-28 09:36:13 312

转载 iptables(3):NAT网络

本文主要介绍如何使用iptbales实现linux2.4下的强大的NAT功能。关于iptables的详细语法请参考“用iptales实现包过虑型防火墙”一文。需要申明的是,本文绝对不是 NAT-HOWTO的简单重复或是中文版,在整个的叙述过程中,作者都在试图用自己的语言来表达自己的理解,自己的思想。一、概述1. 什么是NAT在传统的标准的TCP/IP通信过程中,所有的路由器仅仅是充当一...

2018-08-28 09:11:59 218

转载 Otter+Canal入门篇(4)

前言在前几节我们已经做好了关于otter的准备工作,配置好了zookeeper,manage和node,本节就来完成otter第一个实际功能,单相数据同步.单向数据同步可以解决跨机房主从的问题,所有读操作都能从本地的从库进行操作,而写可以通过外网连接到主服务器进行写入,并且通过otter同步到各个从服务器,可以很好地应对多机房读业务偏多的场景,那么话不多说就开始本节的正文吧!附上:喵了...

2018-08-27 18:04:04 606

转载 Otter+Canal入门篇(3)

前言哈咯大家好呀!今天是对otter准备的最后一个流程,配置好node,并且吧manager,zookeeper和node组合起来形成一个完整可以进行Mysql同步任务的服务,话不多说我们今天就来来事准备工作的最后一步Node搭建吧!附上:喵了个咪的博客:w-blog.cnOtter项目地址:https://github.com/alibaba/otterOtter文档地址:h...

2018-08-27 18:03:05 486

转载 Otter+Canal入门篇(2)

前言上一节已经简单介绍了Otter的基本信息,本节我们就来开准备搭建一个我们自己的Otter环境,因为一个Otter需要Manage+node+数据库还有很多的依赖,本节我们先来搭建Otter的管理服务器Manager.附上:喵了个咪的博客:w-blog.cnOtter项目地址:https://github.com/alibaba/otterOtter文档地址:https://...

2018-08-27 18:02:26 702

转载 Otter+Canal入门篇(1)

前言呜啦啦啦啦!今天笔者又来开坑了,这次开坑的对象呢是阿里的一个开源项目Otter,Otter它是一个数据同步解决方案,可以解决本地跨网络跨机房跨地域的数据同步问题,并且拥有可观的效率,web管理工具等特点,而且背景也很优秀,据说阿里B2B内部的本地/异地机房的同步需求基本全上了otter。附上:喵了个咪的博客:w-blog.cnOtter项目地址:https://github.c...

2018-08-27 18:01:38 1031

转载 Canal

背景   早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解...

2018-08-27 14:04:58 1473

转载 分布式事务(1):场景

问题的提出在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景。1、火车站售票假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行----一切似乎都是那么和谐。想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的火车只剩下最后一张车票,可能在同一时刻,不同售票窗口的另一位...

2018-08-27 12:04:00 652

转载 分布式事务(2):一致性协议

2PC与3PC在分布式系统中,每一个机器节点虽然都能够明确地知道自己在进行事务操作过程中的结果是成功或失败,但却无法直接获取到其他分布式节点的操作结果。因此,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID特性,就需要引入一个称为"协调者(Coordinator)"的组件来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点则被称为"参与者(Participant)"...

2018-08-27 11:35:04 198

转载 负载均衡算法(3):实现

什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这...

2018-08-27 11:33:07 211

转载 负载均衡算法(2):手段

负载均衡器可以是专用设备,也可以是在通用服务器上运行的应用程序。 分散请求到拥有相同内容或提供相同服务的服务器。 专用设备一般只有以太网接口,可以说是多层交换机的一种。 负载均衡器一般会被分配虚拟IP地址,所有来自客户端的请求都是针对虚拟IP地址完成的。负载均衡器通过负载均衡算法将来自客户端的请求转发到服务器的实际IP地址上。负载均衡算法 1 2 3 4...

2018-08-23 15:10:27 194

转载 负载均衡算法(1):简单介绍

负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。什么是负载均衡负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元...

2018-08-23 15:08:39 2673

转载 存淘汰算法--LRU算法

1. LRU1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当链表...

2018-08-23 14:58:16 3818

转载 LVS+Keepalived搭建高可用负载服务

LVS+Keepalived1》Keepalived简介             Keepalived是Linux下一个轻量级别的高可用解决方案,高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来            讲就是之主机的冗余和接管,它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络...

2018-08-23 10:22:01 256

转载 十大经典排序算法(摘抄至一像素博客)

0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 0.2 算法复杂度0.3 相关概念...

2018-08-22 18:10:00 252

空空如也

空空如也

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

TA关注的人

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