10 2017 档案
摘要:Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量、低延迟、健壮、简单,但不过分要求其扩展性。下面将展示一些该协议的核心内容: 另,本文仅讨论Zook
阅读全文
摘要:编者按:本文由「高可用架构后花园」群讨论整理而成。 有人的地方,就有江湖 有江湖的地方,就有纷争 问题的起源 在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、
阅读全文
摘要:互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对高并发分布式系统设计、架构(数据一致性)做了分析,祝各位早日走上属于自己的"成金之路"。 目录:问题分析概念解读Most Simple原理解读eBey、去哪儿、蘑菇
阅读全文
摘要:前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记
阅读全文
摘要:1、使用watch,采用乐观锁 2、不使用悲观锁,因为等待时间非常长,响应慢 3、不使用队列,因为并发量会让队列内存瞬间升高 测试代码:
阅读全文
摘要:redis事务中的WATCH命令和基于CAS的乐观锁 在Redis的事务中,WATCH命令可用于提供CAS(check-and-set)功能。假设我们通过WATCH命令在事务执行之前监控了多个Keys,倘若在WATCH之后有任何Key的值发生了变化,EXEC命令执行的事务都将被放弃,同时返回Null
阅读全文
摘要:摘要:电商的秒杀和抢购,从技术的角度来说,会对Web系统产生巨大的考验。本期《问底》,徐汉彬将带大家关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因。 【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在
阅读全文
摘要:最初的理解 (也可以每个nginx都挂在上所有的应用服务器) nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单、配置简单、相关材料也特别多。 lvs是国内的章文嵩博士的大作,比nginx被广泛接受还要早7年,并且已经被红帽作为了系统内置软件,可谓很牛了。lvs相对于nginx来说
阅读全文
摘要:“七层”是OSI参考模型,即物理层 、 数据链路层 、 网络层、传输层、 会话层 、表示层、应用层 ; “四层”是TCP/IP参考模型,即物理链路层、 网络层、传输层、应用层。 虽说有四层和七层之说,但是其实一样的,TCP/IP中的物理链路层对应OSI中的物理层和数据链路层 ,网络层对应网络层,传输
阅读全文
摘要:拓扑如下所示 # 节点分布情况 LVS-dr-master eth0: 192.168.146.141 LVS-dr-slave eth0: 192.168.146.142 nginx1: eth0: 192.168.146.139 nginx2: eth0: 192.168.146.140 tom
阅读全文
摘要:通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。下面来以keepalived结合tomcat来实现一个web服务器的双机热备。keepalived的工作原理是VRRP(Virtual R
阅读全文
摘要:负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行。关于负载均衡介绍,可以参考:linux负载均衡总结性说明(四层负载/七层负载) 由于业务扩展,网站的访问量不断加大,负载越来越高。现需要在we
阅读全文
摘要:OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住。今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记。本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人。总体来说,OSI模型是从底层往上层发展出来的。 这个模型推出的最开始,是是因为美国人有两台机器之间进行通信的需求。
阅读全文
摘要:TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。 OSI和TCP/IP是很基础但又非常重要的网络
阅读全文
摘要:在常规运维工作中,经常会运用到负载均衡服务。负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 废话不多说,详解如下: 一,什么是负载均衡 1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能
阅读全文
摘要:1.虚拟IP是什么? 要是单讲解虚拟 IP,理解起来很困难,所以干脆把 动态 IP 、固定 IP 、实体 IP 与虚拟 IP都讲解一下,加深理解和知识扩展 实体 IP:在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机 IP 位址的定义。一个 IP 就好似一个门牌!例如,你要去微软的网站的
阅读全文
摘要:http://atong.blog.51cto.com/2393905/1347895
阅读全文
摘要:LVS官方网站:http://www.linuxvirtualserver.org/zh/lvs1.html
阅读全文
摘要:Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响 Mysql加锁过程详解(5
阅读全文
摘要:大二下学期学习数据结构的时候用C介绍过二叉树,但是当时热衷于java就没有怎么鸟二叉树,但是对二叉树的构建及遍历一直耿耿于怀,今天又遇见这个问题了,所以花了一下午的时间来编写代码以及介绍思路的文档生成! 目录: 1.把一个数组的值赋值给一颗二叉树 2.具体代码 1.树的构建方法 2.具体代码 输出
阅读全文
摘要:http://www.runoob.com/design-pattern/singleton-pattern.html
阅读全文
摘要:① 二叉树是不是树的特殊情况?答:不是!虽然二叉树也属于一种树结构,但它是另外单独定义的一种树,并非一般树的特例。它的子树有顺序规定,分为左子树和右子树。不能随意颠倒。②:满二叉树和完全二叉树有什么区别?答:满二叉树是叶子一个也不少的树,而完全二叉树虽然前n-1层是满的,但最底层却允许在右边缺少连续
阅读全文
摘要:6.5 Huffman 树 Huffman 树又称最优树,可以用来构造最优编码,用于信息传输、数据压缩等方面,是一类有着广泛应用的二叉树。 6.5.1 二叉编码树 在计算机系统中,符号数据在处理之前首先需要对符号进行二进制编码。例如,在计算机中使用的英文字符的 ASCII 编码就是 8 位二进制编码
阅读全文
摘要:6.4 树、森林 在介绍二叉树之后,我们回到树的存储及其操作的实现中来。 6.4.1 树的存储结构 树的存储结构主要有以下三种。 @双亲表示法设 T 是一棵树,表示 T 的一种最简单的方法是用一个一维数组存储每个结点,数组的下标就是结点的位置指针,每个结点中有一个指向各自的父亲结点的数组下标的域。
阅读全文
摘要:6.3 二叉树基本操作的实现 二叉树的基本操作在 6.2.1 小节中已经定义,在这些操作中有一组非常重要的操作就是遍历操作,下面首先介绍遍历及其实现,然后介绍其他操作的实现。 在以下操作的实现中涉及了实现二叉树的 BinaryTreeLinked 类中定义的两个成员变量:一个是二叉树结点类型的roo
阅读全文
摘要:6.2 二叉树 在进一步讨论树的存储结构及其操作之前,先讨论一种简单而极其重要的树结构—二叉树。因为任何树都可以转化为二叉树进行处理,并且二叉树适合计算机的存储和处理,因此在本章中二叉树是研究的重点。 6.2.1 二叉树的定义 每个结点的度均不超过 2 的有序树,称为二叉树( binary tree
阅读全文
摘要:第六章 树 目录 6.1 树的定义及基本术语 6.2 二叉树 <!--EndFragment-->6.3 二叉树基本操作的实现 6.4 树、森林 6.5 Huffman 树 6.1 树的定义及基本术语 6.2 二叉树 <!--EndFragment-->6.3 二叉树基本操作的实现 6.4 树、森林
阅读全文
摘要:http://www.runoob.com/design-pattern/design-pattern-tutorial.html
阅读全文
摘要:程序员必知的8大排序(一) 直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二) 简单选择排序,堆排序(java实现) 程序员必知的8大排序(三) 冒泡排序,快速排序(java实现) 程序员必知的8大排序(四) 归并排序,基数排序(java实现) 程序员必知的8大排序(五) 总结 总结
阅读全文
摘要:程序员必知的8大排序(一) 直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二) 简单选择排序,堆排序(java实现) 程序员必知的8大排序(三) 冒泡排序,快速排序(java实现) 程序员必知的8大排序(四) 归并排序,基数排序(java实现) 程序员必知的8大排序(五) 总结 7、
阅读全文
摘要:程序员必知的8大排序(一) 直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二) 简单选择排序,堆排序(java实现) 程序员必知的8大排序(三) 冒泡排序,快速排序(java实现) 程序员必知的8大排序(四) 归并排序,基数排序(java实现) 程序员必知的8大排序(五) 总结 5.
阅读全文
摘要:程序员必知的8大排序(一) 直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二) 简单选择排序,堆排序(java实现) 程序员必知的8大排序(三) 冒泡排序,快速排序(java实现) 程序员必知的8大排序(四) 归并排序,基数排序(java实现) 程序员必知的8大排序(五) 总结 3.
阅读全文
摘要:http://blog.csdn.net/pzhtpf/article/details/7559896 程序员必知的8大排序(一) 直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二) 简单选择排序,堆排序(java实现) 程序员必知的8大排序(三) 冒泡排序,快速排序(java实现)
阅读全文
摘要:经常可以在一些书上看到这样的公式:程序=数据结构+算法所以算法 的重要性是不言而喻的. 那么什么是算法呢? 算法的基本特性有: 1.确定性 算法中的每一条指令无二义性. 2.有穷性 算法经过有限的计算次数后结束. 3.可行性 算法是由一些基本可行的运算实现. 4.算法有0个或者多个输入. 5.算法有
阅读全文
摘要:1, 算法复杂度是在《数据结构》这门课程的第一章里出现的,因为它稍微涉及到一些数学问题,所以很多同学感觉很难,加上这个概念也不是那么具体,更让许多同学复习起来无从下手,下面我们就这个问题给各位考生进行分析。 首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是
阅读全文