- 浏览: 540081 次
- 性别:
- 来自: 广州
最新评论
-
liuxiuhao:
前端通过时间戳传递 也可以解决
fastjson对Date的处理 -
Yunba云巴:
我们(https://yunba.io/)是基于MQTT协议实 ...
mqtt消息中间件Mosquitto的安装和配置 -
yyyj8j8:
感谢楼主分享
使用Django1.9开发博客教程 - 目录汇总贴 -
mohaowen1989:
马马虎虎,还行吧。。哈哈哈哈
企鹅日记(三):文件权限与目录配置 -
mohaowen1989:
马马虎虎 还行吧
字符编码笔记:ASCII,Unicode和UTF-8
文章列表
使用python开发RabbitMQ应用
(参考了RabbitMQ网站上提供的英文版本入门指南: http://www.rabbitmq.com/getstarted.html)
测试环境:CentOS 6.2
1,测试环境准备
安装python(一般系统都自带了python)
安装RabbitMQ server可以参考前面的文章。
安装pika
使用pip安装的时候可能会报错:
importerror no module named pkg_resources
请用下面命令解决这个问题:
$ curl https://bitbucket.org/pypa/setu ...
***在 CentOS 6.4上安装python***
注意啊,自己手动安装python2.7.5,不要动系统上面其他的版本
1,先安装GCC,用如下命令yum install gcc gcc-c++
yum install zlib
yum install zlib-devel
2,下载python-2.7.5.tar.gz文件,修改文件权限chmode +x python-7.5.tar. ...
纯归并排序的复杂度为: O(nlgn),而纯插入排序的时间复杂度为:O(n^2)。数据量很大的时候采用归并排序
但是在n较小的时候插入排序可能运行的会更快点。因此在归并排序中当子问题变得足够小时,采用插入排序来使得递归的叶子变粗可以加快排序速度。那么这个足够小到底怎么去衡量呢? 请看下面:
这么几个我不证明了,比较简单:
A,插入排序最坏情况下可以在O(nk)时间内排序每个长度为k的n/k个子列表
B,在最坏情况下可在O(nlg(n/k))的时间内合并这些子表
C,修订后的算法的最坏情况运行时间复杂度是O(nk + nlg(n/k))
那么,O(nk+nlg(n/k))=O(nl ...
先介绍下最常见的元字符metacharacter:
literal 匹配字符串的值 foo
re1|re2 匹配正则式re1或re2 foo|bar
. 匹配一个任何字符(换行符除外) b.b
^ 匹配字符串开始 ^Dear
$ 匹配字符串结束 /bin/*sh$
* 匹配前面出现的零次或多次 [A-Za-z0-9]*
+ 匹配前面出现的一次或多次 [a-z]+\ ...
引用计数算法:
判定一个对象是否还存活,一个比较简单的算法就是引用计数算法。比较著名案例就是微软的COM技术、使用ActionScript 3的FlashPlayer、Python语言以及游戏脚本中的Squirrel都利用这个算法进行内存管理。但是Java中并没有使用这项技术,主要原因是循环引用问题。
根搜索算法:
在主流的商用程序语言中,包括Java、C#、Lisp等都使用的是根搜索算法 GC Root Tracing判定对象是否存活。任何对象到GC Roots的路径不可达的时候就认定需要回收了,而不管它们之间的循环引用。
在Java中,可作为GC Roots的对象包括下面几 ...
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。
按照《Java虚拟机规范(第2版)》的规定,Java虚拟机所管理的内存将包括以下几个运行时数据区域,来个图更加直观点,如下图所示:
解释下各个部分
程序计数器:
Program Counter Register是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 每个线程都有一个独立的程序计数器,各个线程之间计数器互不影响,独立存储。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。
J ...
# coding: utf-8
__author__ = 'Administrator'
# 冲突函数
# 如果下一个皇后和正在考虑的前一个皇后的水平距离为0,
# 或者等于垂直距离(在一条对角线上),返回True
def conflict(state, nextX):
nextY = len(state)
for i in range(nextY):
...
从淘宝网的技术架构中总结几个比较有用的:
应用拆分后,各个模块之间的同步调用,可以使用HSF框架
异步消息通知框架 -- Notify
缓存使用Redis
Session使用Tbsession框架
分布式数据访问,分库分表后统一数据访问层,使用TDDL框架,工具有Rtools/JAPE,用于数据备份、复制、主备切换等。
如果是用python:
django做前台,flask或者web.py做API, rabbitmq做消息代理,celery做异步任务,redis做緩存和高速消息交換。。。我觉得都快成模板了。。。
本人博客已搬家,新地址为:http://www ...
,1,RDB方式持久化:
save 900 1
save 300 10
save 60 10000
dir配置目录,dbfilename配置持久化db文件。redis通过快照复制内存数据到快照文件中,然后替换dbfilename文件,实现一次快照持久化操作。
2,AOP方式
append only file方式配置:
...
1,redis事务
redis中的事务transaction是一组命令集合,要么都执行,要么都不执行。
# MULTI
# SADD "user:1:following" 2
# SADD "user:2:followers" 1
# EXEC
redis将客户端发送的事务执行链放入一个队列queue中,然后接受到EXEC请求后才顺序执行这个命令串,同时保证执行这些的时候不被其他命令打扰。
错误处理:
* 语法错误,redis直接返回错误,连语法正确的其他命令也不会执行
* 运行错误,只有那条出错的语句不会执行成功,其他照样执行
r ...
1,KEYS pattern,获得符合规则的键名列表
glob风格的通配符规则:
? 匹配一个字符
* 匹配任意个包括0个字符
[]匹配任一个字符,可以使用-表示一个范围
\x 匹配x,用于转义字符
KYES命令需要遍历redis中所有键,当键数量较多 ...
4)sets
Redis的set是string类型的无序集合。set元素最大可以包含(2的32次方)个元素。
set的是通过hash table实现的,所以添加、删除和查找的复杂度都是O(1)。hash table会随着添加或者删除自动的调整大小。需要注意的是调整hash table大小时候需要同步(获取写锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted set中使用了。关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过 ...
1)strings类型及操作
string是最简单的类型,你可以理解成与Memcached是一模一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。
string类型是二进制安全的。意思是redis的string可 ...
一 Redis介绍
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
Redis能运行在大多数POSIX(Linux, *BSD, OS X 和Solaris等)系统上,官方没有支持Windows的版本。目前最新的版本是2.2.11,这个版本主要是修复了一个2.2.7版本中遍历方式优化带来的一个bug。
和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashe ...
先推荐几本好书:
1.《鸟哥的Linux私房菜-基础学习篇》-- 鸟哥
2.《Linux Shell 脚本攻略》-- Sarath Lakshman
3.《鸟哥的Linux私房菜-服务器架设篇》-- 鸟哥
4.《Unix环境高级编程》-- W.Richard...
5.《Linux系统编程》 -- Robert Love
6.《Linux内核设计的艺术》-- 新设计团队
7.《Linux内核设计与实现》--Robert Love
1,查找已安装软件并卸载
rpm -qa|grep libevent # 查看系统是否带有该安装软件,如果有执行命令:
rpm -e li ...