自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TheSamaritan-City

为了挖掘自己更神深层次的力量

  • 博客(36)
  • 资源 (4)
  • 收藏
  • 关注

转载 (八)实际项目中涉及到的缓存数据结构及算法

软件开发中常用的缓存算法主要有:FIFO-先进先出算法,LRU-最近最久未使用,LFU-最近最少使用。实际项目中缓存算法对这些都有涉及。一、理论:1.FIFO(First Input First Output):特点:先进先出,符合公平性,实现简单。数据结构:使用对列淘汰原则:如果一个数据最先进入缓存中,则应该最早淘汰掉。也就是说,当缓存满的时候,应当把最先进入缓存的数据给淘汰

2017-01-19 15:34:28 642

转载 (七)实际项目中常用的加密算法及使用场景

实际项目中的登陆认证、web api接口调用、支付接口调用等场合经常涉及到:md5、sh、 rsa等算法。各大银行接口中经常使用MD5算法对调用接口参数进行签名防篡改。1.MD5(1)MD5定义:MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已

2017-01-19 15:33:59 757

转载 (六)实际项目中分布式ID生成算法

一、需求缘起几乎所有的业务系统,都有生成一个记录标识的需求,例如:(1)消息标识:message-id(2)订单标识:order-id(3)帖子标识:tiezi-id这个记录标识往往就是数据库中的唯一主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。这个记录标识上的查询,往往又有分页或者排序的业务需

2017-01-19 15:33:33 293

转载 (五)实际项目中分布式系统设计涉及算法总结

paxos算法:basic paxos(读帕克索斯)实现的,另外一种是基于fast paxos算法。1)问题描述分布式中有这么一个疑难问题,客户端向一个分布式集群的服务端发出一系列更新数据的消息,由于分布式集群中的各个服务端节点是互为同步数据的,所以 运行完客户端这系列消息指令后各服务端节点的数据应该是一致的,但由于网络或其他原因,各个服务端节点接收到消息的序列可能不一

2017-01-19 15:33:11 582

转载 (四)实际项目中负载均衡调度算法实际应用

实际项目中负载均衡软件是怎么实现负载均衡功能的呢?通过特定的负载均衡算法来实现:(一).HAProxy的负载均衡调度算法有如下8种:一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;二、static-rr,表示根据权重,建议关注;三、leastconn,表示最少连接者先处理,建议关注;四、source,表示根据请求源IP,建议关注;五、uri

2017-01-19 15:32:43 509

转载 (三)实际项目中数据结构—队列的应用

1.队列:定义:一种数据结构,有非阻塞对列和阻塞对列特点:先进先出两种典型操作:队尾添加、队头删除几种对列:非阻塞队列:当对列满或空时进行插入或者读取删除操作,抛出异常或者返回false,不对当前线程阻塞,没有同步或者唤醒策略。阻塞队列:当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。有界队列:一般来说队列的长度都预先

2017-01-19 15:31:54 985

转载 (二)实际项目使用的开发语言中排序算法实现

一.常用排序算法:冒择路希快归堆。数组排序算法时间复杂度对比:算法时间复杂度空间复杂度 最佳平均最差最差QuicksortO(n log(n))O(n log(n))O(n^2)O(log(n))MergesortO(n log(n))

2017-01-19 15:31:18 337

转载 (一)实际项目中树形数据结构与递归算法应用

前言:在大部分个项目中几乎都涉及到菜单的展示,在这里普遍用到了树形数据结构和递归算法:1.举例:建表:(1)模拟效果图:(2)代码片段:2.数据库中运用sql进行树形查询:(1)mysql比较麻烦,稍后展开论述(2)oracle树形查询:使用Start with...Connect By子句递归查询,一般用于一个表维护树形结构的应

2017-01-19 15:30:45 379

原创 python资源大合集

这里有最全的python资源,整理自各个经典书籍和网站https://github.com/hotface

2017-01-19 09:52:44 1445

原创 RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)

什么是ProtoBuf?     一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。     它可以作为RabbitMQ的Message的数据格式进行传输,由于是结构化的数据,

2017-01-16 18:01:47 272

原创 RabbitMQ消息队列(九):Publisher的消息确认机制

在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack。那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consumer处理呢?毕竟对于一些非常重要的数据,可能Publisher需要确认某个消息已经被正确处理。      在我们的系统中,我们没有是实现这种确认,也就是说,不管Message是否被Consume了

2017-01-16 18:00:05 229

转载 RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)

在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成。那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会通过其它节点求来斐波纳契完成示例。1. 客户端接口 Client interface        为了展示一个RPC服务是如何使用的,我们将创建一段很简单的客户端class。 它将会向外

2017-01-16 17:59:01 209

转载 RabbitMQ消息队列(六):使用主题进行消息分发

在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统。Consumer可以监听不同severity的log。但是,这也是它之所以叫做简单日志系统的原因,因为是仅仅能够通过severity设定。不支持更多的标准。        比如syslog unix的日志工具,它可以通过severity (info/warn/crit...) 和模块(auth

2017-01-16 17:58:17 188

转载 RabbitMQ消息队列(五):Routing 消息路由

上篇文章中,我们构建了一个简单的日志系统。接下来,我们将丰富它:能够使用不同的severity来监听不同等级的log。比如我们希望只有error的log才保存到磁盘上。1. Bindings绑定    上篇文章中我们是这么做的绑定:[python] view plain copychannel.queue_bind(exchange=ex

2017-01-16 17:51:54 218

转载 RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)

上篇文章中,我们把每个Message都是deliver到某个Consumer。在这篇文章中,我们将会将同一个Message deliver到多个Consumer中。这个模式也被成为 "publish / subscribe"。    这篇文章中,我们将创建一个日志系统,它包含两个部分:第一个部分是发出log(Producer),第二个部分接收到并打印(Consumer)。 我们将构建两个Con

2017-01-16 17:48:00 251

转载 RabbitMQ消息队列(三):任务分发机制

在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题。在实际的应用场景中,这是远远不够的。从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级用法。   当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load。试想一下,对于web applica

2017-01-16 17:30:38 485

转载 RabbitMQ消息队列(二):”Hello, World“

本文将使用Python(pika 0.9.8)实现从Producer到Consumer传递数据”Hello, World“。     首先复习一下上篇所学:RabbitMQ实现了AMQP定义的消息队列。它实现的功能”非常简单“:从Producer接收数据然后传递到Consumer。它能保证多并发,数据安全传递,可扩展。     和任何的Hello world一样,它们都不复杂。我们将会

2017-01-16 17:18:32 186

转载 RabbitMQ消息队列(一): Detailed Introduction 详细介绍

1. 历史    RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ

2017-01-16 17:17:23 280

原创 负载均衡算法

负载均衡的基本算法,主要有以下几种(参考F5产品):随机:负载均衡方法随机的把负载分配到各个可用的服务器上,通过随机数生成算法选取一个服务器,然后把连接发送给它。虽然许多均衡产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。轮询:轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有的服务器。轮询算法在大多数情况下都工作的不错,但是如果负

2017-01-16 16:53:47 244

原创 负载均衡一致性hash算法

一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。     一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1

2017-01-16 16:46:25 548

原创 分布式环境中的负载均衡策略

在分布式系统中相同的服务常常会部署很多台,每一台被称为一个服务节点(实例)。通过一些负载均衡策略将服务请求均匀地分布到各个节点,以实现整个系统支撑海量请求的需求。本文描述一些简单的负载均衡策略。Round-robin简单地轮询。记录一个选择位置,每次请求来时调整该位置到下一个节点:curId = ++curId % nodeCnt随机选择随机地在所有节点中选择

2017-01-16 14:33:28 1079

原创 ubuntu安装rabbitmq和python的使用实现

在安装openstack的时候,需要安装rabbitmq,百度了下rabbitmq,发现是用erlang写的,基于对erlang的好感,于是就想了解下rabbitmq。rabbitmq中文翻译的话,主要还是mq字母上:Message Queue,即消息队列的意思。前面还有个rabbit单词,就是兔子的意思,和python语言叫python一样,老外还是蛮幽默的。rabbitmq服务类似于mys

2017-01-16 11:02:19 499

原创 python使用rabbitmq实例七,相互关联编号correlation id

上一遍演示了远程结果返回的示例,但是有一个没有提到,就是correlation id,这个是个什么东东呢?假设有多个计算节点,控制中心开启多个线程,往这些计算节点发送数字,要求计算结果并返回,但是控制中心只开启了一个队列,所有线程都是从这个队列里获取消息,每个线程如何确定收到的消息就是该线程对应的呢?这个就是correlation id的用处了。correlation翻译成中文就是相互关联,也

2017-01-16 11:01:53 1476

原创 python使用rabbitmq实例六,远程结果返回

前面的例子都有个共同点,就是发送端发送消息出去后没有结果返回。如果只是单纯发送消息,当然没有问题了,但是在实际中,常常会需要接收端将收到的消息进行处理之后,返回给发送端。处理方法描述:发送端在发送信息前,产生一个接收消息的临时队列,该队列用来接收返回的结果。其实在这里接收端、发送端的概念已经比较模糊了,因为发送端也同样要接收消息,接收端同样也要发送消息,所以这里笔者使用另外的示例来演示这一过程

2017-01-16 11:00:26 1060

原创 python使用rabbitmq实例五,路由键模糊匹配

上一篇说了路由键的功能,通过设置路由键,可以将消息发送到相应的队列,这里的路由键是要完全匹配,比如info消息的只能发到路由键为info的消息队列。路由键模糊匹配,就是可以使用正则表达式,和常用的正则表示式不同,这里的话“#”表示所有、全部的意思;“*”只匹配到一个词。看完示例就能明白了。这边继上一篇,还是用send.py和receive.py来实现路由键模糊匹配的功能。send.py表示

2017-01-16 11:00:04 472

原创 python使用rabbitmq实例四,路由键

第三篇说明了关于交换机的使用,已经能实现给所有接收端发送消息,但是如果需要自由定制,有的消息发给其中一些接收端,有些消息发送给另外一些接收端,要怎么办呢?这种情况下就要用到路由键了。路由键的工作原理:每个接收端的消息队列在绑定交换机的时候,可以设定相应的路由键。发送端通过交换机发送信息时,可以指明路由键 ,交换机会根据路由键把消息发送到相应的消息队列,这样接收端就能接收到消息了。这边继上一

2017-01-16 10:59:37 270

原创 python使用rabbitmq实例三,交换机

交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里接收到信息。rabbitmq交换机工作原理下面用send.py和receive.py来模拟实现交换机的功能。send.py表示发送端,receive.py表示接收端。receive.py代码分析和第一篇里的receive.py相比,主要是做了两个改动:

2017-01-16 10:59:08 738

原创 python使用rabbitmq实例二,工作队列

消息也可以理解为任务,消息发送者可以理解为任务分配者,消息接收者可以理解为工作者,当工作者接收到一个任务,还没完成的时候,任务分配者又发一个任务过来,那就忙不过来了,于是就需要多个工作者来共同处理这些任务,这些工作者,就称为工作队列。结构图如下:rabbitmq的python实例工作队列准备工作(Preparation)在实例程序中,用new_task.py来模拟任务分配者,

2017-01-16 10:58:42 232

原创 python结合rabbitmq实例

这一段时间学习了下rabbitmq,在学习的过程中,发现国内关于Python采用pika库使用rabbitmq的资料很少,官网有这方面的资料,不过是都英文的。于是笔者结合自己的理解,就这方面内容写了一些示例,总共有七篇笔记,分享出来。笔记依次是循序渐进的,笔记内贴出的代码笔者都实际运行过,运行系统ubuntu 12.04,rabbitmq版本是2.7.1,python版本是2.7.3。

2017-01-16 10:57:10 1271

转载 MYSQL explain详解

explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。先解析一条sql语句,看出现什么内容EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addressFROM uchome_space ASs,uchome_

2017-01-12 17:04:19 176

原创 Mysql数据库调优和性能优化的21条最佳实践

作者:andyao原文link: http://andyao.iteye.com/admin/show/144033转载请留名1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响。MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此在产品中使用MySQL

2017-01-11 17:01:40 507

原创 数据库性能优化三:程序操作优化

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第三部分  数据库性能优化三:程序操作优化概述:程序访问优化也可以认为是访问SQL语句的优化,一个好的SQL语句是可以减少非常多的程序性能的,下面列出常用错误习惯,并且提出相应的解决方案   一、操作符优化  1. IN、NOT IN 操作符  IN和EXISTS 性能有外表和内表区分的,但是在大

2017-01-11 16:54:11 194

原创 数据库性能优化二:数据库表优化

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第二部分  数据库性能优化二:数据库表优化   优化①:设计规范化表,消除数据冗余  数据库范式是确保数据库结构合理,满足各种查询需要、避免数据库操作异常的数据库设计方式。满足范式要求的表,称为规范化表,范式产生于20世纪70年代初,一般表设计满足前三范式就可以,在这里简单介绍一下前三范式先给大家

2017-01-11 16:53:38 197

原创 数据库性能优化一:数据库自身优化(大数据量)

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第一部分  数据库性能优化一:数据库自身优化  优化①:增加次数据文件,设置文件自动增长(粗略数据分区)  1.1:增加次数据文件  从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情况下有一个主数据文件(MDF)就够了,但是有些大型的数据库,由于信息很多,而且查询频繁,所以为了

2017-01-11 16:52:54 369

原创 如何理解 python UnicodeEncodeError :python 的 string 和 unicode

初学 python 的人基本上都有过如下类似经历:UnicodeDecodeError123Traceback (most recent call last): File "", line 1, in UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: o

2017-01-10 10:28:51 267

转载 深入剖析Redis主从复制

一、主从概述Redis 支持 Master-Slave(主从)模式,Redis Server 可以设置为另一个 Redis Server 的主机(从机),从机定期从主机拿数据。特殊的,一个从机同样可以设置为一个 Redis Server 的主机,这样一来 Master-Slave 的分布看起来就是一个有向无环图 DAG,如此形成 Redis Server 集群,无论是主机还是从机都是 Redi

2017-01-04 10:26:21 2117 1

CentOS7安装zabbix教程

2016-11-14

consolo运行环境搭建

2016-10-22

python实现算法

python实现算法

2016-09-12

常用正则表达式大全

常用正则表达式大全

2016-08-05

空空如也

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

TA关注的人

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