- 博客(20)
- 资源 (14)
- 收藏
- 关注
转载 负载均衡(Load Balancing)学习笔记三——负载均衡算法
引入在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为:图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数据。为了实现这些缓存机器的负载均衡,可以使用式子1来定位对象缓存的存储机器:m = hash(o) mod
2017-09-20 09:59:03 667
转载 负载均衡(Load Balancing)学习笔记二
概述文章负载均衡(Load Balancing)学习笔记(一) 讲述了负载均衡的一般性原理,本文继续介绍常见的实现负载均衡的方法。HTTP重定向HTTP重定向服务器是一台普通的Web服务器,用户的请求先到达重定向服务器,这台服务器会挑选一台后端服务器的地址(例如使用轮询的方式),并将该地址写入HTTP重定向响应结果中(以响应状态码302返回)返回给用户。用户将根据这个新的地址重新发送请
2017-09-19 17:23:43 541
转载 负载均衡(Load Balancing)学习笔记一
概述在分布式系统中,负载均衡(Load Balancing)是一种将任务分派到多个服务端进程的方法。例如,将一个HTTP请求派发到实际的Web服务器中执行的过程就涉及负载均衡的实现。一个HTTP请求到达Web服务器,这中间涉及多个过程,也存在多种不同负载均衡的方法。本文讲述负载均衡的基本原理与派发策略,下图1是负载均衡的基本原理图,图1中客户端的请求请求经过达负载均衡器(Load Balanc
2017-09-19 16:30:54 479
原创 编程题练习1-元素查找
题目描述:有一个排过序的数组,包含n个整数,但是这个数组向左进行了一定长度的移位,例如,原数组为[1,2,3,4,5,6],向左移位5个位置即变成了[6,1,2,3,4,5],现在对于移位后的数组,需要查找某个元素的位置。请设计一个复杂度为log级别的算法完成这个任务。给定一个int数组A,为移位后的数组,同时给定数组大小n和需要查找的元素的值x,请返回x的位置(位置从零开始)。保证数
2017-09-19 10:49:31 692
转载 字符串匹配问题解决方案之二-BM算法
Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。下面,我根据Moore教授自己的例子来解释这种算法。1.假定字符串为"HERE IS A SIMPLE EXAMPLE",搜索词为"EXAMPLE"。2.首先,"字符串"与"搜索词"头部对齐,从尾
2017-09-18 11:20:16 721
转载 字符串匹配问题解决方案之一KMP算法
阅读目录1 字符串匹配2 KMP算法3 算法实现回到顶部1 字符串匹配 字符串匹配是计算机的基本任务之一。 字符串匹配是什么?举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三
2017-09-18 10:33:33 490
原创 主从架构如何进行数据同步
1.什么是主从数据同步当master(主)节点的数据发生变化的时候,变化会实时的同步到slave(从)节点。2.主从同步的好处(1)水平扩展负载能力(主要通过读写分离)(2)容错、高可用(通过主从机制的维持,主节点失效,通过共识算法选出一个新主节点作为主节点,我们还可以接入很多从节点)(3)数据备份3.主从同步的原理我们以常见的mysql数据库的主从机制
2017-09-17 10:28:24 6320
转载 以两军问题为背景来演绎Basic Paxos
背景在计算机通信理论中,有一个著名的两军问题(two-army problem),讲述通信的双方通过ACK来达成共识,永远会有一个在途的ACK需要进行确认,因此无法达成共识。两军问题和Basic Paxos非常相似1) 通信的各方需要达成共识;2) 通信的各方仅需要达成一个共识;3) 假设的前提是信道不稳定,有丢包、延迟或者重放,但消息不会被篡改。Basic Paxos最早
2017-09-11 14:06:08 289
转载 Paxos算法细节详解(一)--通过现实世界描述算法
Paxos分析最近研究paxos算法,看了许多相关的文章,概念还是很模糊,觉得还是没有掌握paxos算法的精髓,所以花了3天时间分析了libpaxos3的所有代码,此代码可以从https://bitbucket.org/sciascid/libpaxos 下载。对paxos算法有初步了解之后,再看此文的效果会更好;如果你也想分析libpaxos3的话,此文应该会对你有不小帮助;关于paxos的
2017-09-11 13:29:24 203
原创 撤销进程详解
1.进程终止的一般方式是调用exit()库函数,该函数释放C函数库所分配的资源,执行编程者所注册的每个函数,并结束从系统回收进程的那个系统调用。exit()函数可能由编程者显示插入。另外,c编译程序总是把exit()函数插入到main()函数的最后一条语句之后2.在linux2.6中有两个终止用户态应用的系统调用(1)exit_group()系统调用:它终止整个线程组,即整个基于多线程的应
2017-09-06 14:24:52 4357
原创 内核中的进程管理部分2-pidhash和链表
内核必须能从进程的pid导出对应的进程描述符指针当然,前面我们说过,内核为我们维护了一个进程链表(所有进程描述符都链接成一种环形双向链表的形式管理),但如果根据pid字段顺序扫描进程链表,效率相当低效。为了快速查找,内核引入了4个散列表(哈希表)。为什么需要4种哈希表?因为进程描述符包含了表示不同类型pid的字段
2017-09-06 09:54:52 499 2
原创 内核中的进程管理部分1
1.什么是list_head数据结构(用来组建双向循环链表)可参见我的另一篇博文(点击此处)。为什么我们需要了解这个知识?因为内核对进程的管理很多都是用此结构的2.进程链表重点:内核使用进程链表把所有进程的描述符(task_struct)链接起来管理。进程链表的头是init_task描述符,它是所谓的swapper进程的进程描述符。内核提供了一套管理这个进程链表的接口。(可自行
2017-09-05 15:00:09 231
原创 内核中常用的双向链表数据结构(list_head)详解
1.什么是list_head结构内核定义了list_head结构来实现链表结构。字段next和prev分别表示通用双向链表向前和向后的指针元素。list_head字段的指针中存放的是另一个list_head字段的地址,而不是含有list_head结构的整个数据结构地址文件在include/linux/list.hstruct list_head { struct list
2017-09-05 14:20:45 1148
原创 进程中的用户堆栈、内核栈
1.什么是内核栈?在创建进程(即在内存中构建task_struct结构体)时,内核会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换当进程因
2017-09-05 11:39:48 683
原创 C++中Copy Constructor的构造操作
1.会以一个object的内容作为另一个class object的初值的三种基本情况class X{...};X x;第一种: X xx = x;第二种:值传递给函数 void test(X x);第三种:作为函数返回类型 X test();2.什么是Default Memberwise Intialization当class object以相同clas
2017-09-03 13:30:59 611
原创 c++中编译器必须为未申明constructor的classes合成一个default constructor的4种情况详解
对于class X,如果没有任何user-declared constructor,那么会有一个default construtor被隐式声明出来-一个被隐式声明出来的default constructor将是一个trivial(没用的)construtor1.带有默认构造函数的成员类对象如果一个class没有任何constructor,但它内含一个member object,而后者有
2017-09-02 20:31:08 650
转载 两种高效的服务器设计模型:Reactor和Proactor模型
此篇文章写的不错Reactor模型 Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程/进程阻塞在多路复用器上;一旦有I/O事件到来或是准备就绪(文件描述符或socket可读、写),多路复用器返回并将事先注册的相应I/O事件分发到对应的处理器中。 Reactor
2017-09-01 14:10:49 320
原创 unix网络编程-I/O模型
这个内容非常重要,今后我们将要讨论的各种并发服务器模型都是基于一种或多种I/O模型之上的,网络服务器的性能差异很大程度上就是因为选择了不同I/O模型Unix下可用的5种I/O模型阻塞式I/O模型最流行的是这种模型。目前为止的例子都使用该模型。默认情况下,套接字都是该模型。 使用UDP为例(TCP复杂,还涉及套接字低水平标记等)是因为它简单:数据报要么收
2017-09-01 11:17:42 272
转载 Reactor模型的演变
无论是C++还是Java编写的网络框架,大多数都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,特别适合处理海量的I/O事件。1.2.1. 单线程模型Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下:1)作为NIO服务端,接收客户端的TCP连接;2)作为NIO客户端,向服务端发起TCP连接;
2017-09-01 10:55:40 406
小五整理-机器学习第一讲-课件和笔记(包含统计学习方法pdf)
2018-06-08
深度探索c++对象模型
2017-09-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人