自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (14)
  • 收藏
  • 关注

转载 负载均衡(Load Balancing)学习笔记三——负载均衡算法

引入在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为:图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数据。为了实现这些缓存机器的负载均衡,可以使用式子1来定位对象缓存的存储机器:m = hash(o) mod

2017-09-20 09:59:03 665

转载 负载均衡(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 489

原创 主从架构如何进行数据同步

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.问题来源

2017-09-06 17:02:00 326

原创 撤销进程详解

1.进程终止的一般方式是调用exit()库函数,该函数释放C函数库所分配的资源,执行编程者所注册的每个函数,并结束从系统回收进程的那个系统调用。exit()函数可能由编程者显示插入。另外,c编译程序总是把exit()函数插入到main()函数的最后一条语句之后2.在linux2.6中有两个终止用户态应用的系统调用(1)exit_group()系统调用:它终止整个线程组,即整个基于多线程的应

2017-09-06 14:24:52 4355

原创 内核中的进程管理部分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 610

原创 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)

(http://www.sunxiaowu.top)美学编程网、人工智能技术体系-机器学习基础第一讲、小五资料整合

2018-06-08

初学者好玩儿的小程序

初学者好玩儿的小程序 初学者好玩儿的小程序初学者好玩儿的小程序 初学者好玩儿的小程序

2017-12-04

感知机简单实现c++

感知机简单实现,整个项目直接打包,没有添加第三方库,方便大家学习调试 c++

2017-12-03

wine_data_set

机器学习 wine data set

2017-11-15

wine-dataset

机器学习中的wine-dataset数据集 机器学习中的wine-dataset数据集

2017-11-15

深度探索c++对象模型

深度探索c++对象模型c++进阶基本书籍,读完c++ primer,并做了一些小项目之后,就可以开始看这本书,从深层次和原理上深入探索c++的很多内存布局和机制等

2017-09-03

gperf-3.0.1-windows

完美哈希生成器

2017-08-05

unix环境高级编程源码(apue)

unix环境高级编程源码

2017-07-09

基于boost的tcp通信程序

基于boost库的最基本tcp通信程序,包括客户端和服务器端

2015-10-30

数值分析课件

数值分析的好课件 有助于同学们学习此门课程

2013-04-02

c语言编写多项式的加减乘

运用c语言 通过建立动态链表来实现多项式的加法 加法 和乘法

2012-11-23

运算符重载函数的运用

运用运算符重载函数对复数实施加减乘除的操作(c++编写)

2012-10-31

用c++编写的一元二次方程的解

用c++写的解一元二次方程的代码 输入“yes"可继续输入a,b,c的值 解除对应的解 输入其他则结束此程序

2012-10-12

空空如也

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

TA关注的人

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