摘要:
1、with操作符 在python中读写文件,可能需要这样的代码 try-finally读写文件 同样,在python中使用线程锁,可能需要这样的代码 try-finally线程锁 可能你会觉得这种写法很不方便,python提供了with操作符,你可以这样操作 with读写文件 with线程锁 是不 阅读全文
摘要:
使用django开发,对python manage.py ***命令模式肯定不会陌生。比较常用的有runserver,migrate。。。 本文讲述如何自定义扩展manage命令。 1、源码分析 manage.py文件是通过django-admin startproject project_name 阅读全文
摘要:
本文讲述,如何理解Elasticsearch的分片、副本和路由策略。 1、预备知识 1)分片(shard) Elasticsearch集群允许系统存储的数据量超过单机容量,实现这一目标引入分片策略shard。在一个索引index中,数据(document)被分片处理(sharding)到多个分片上。 阅读全文
摘要:
1、EsRejectedExecutionException异常示例 2、EsRejectedExecutionException异常解释 EsRejectedExecutionException异常,从字面意思上看是ES拒绝执行请求。这个异常的触发场景如下。 使用Elasticsearch的时候, 阅读全文
摘要:
本文实现了一个重试的装饰器,并且使用了指数退避算法。指数退避算法实现还是很简单的。先上代码再详细解释。 1、指数退避算法 欠奉。http://hugnew.com/?p=814 2、重试装饰器retry实现 这里我们自己定义了两个东西: 1)枚举类Result,标识过程调用的状态,其中有三个状态,成 阅读全文
摘要:
之前写过一篇博客,里面吭哧吭哧半天,使用Redis实现了一个分布式锁。 今天闲来没事看源码,突然发现redis set命令的用法可以直接指定nx和ex,文档中没有明说这是个原子方法,但是后面给出了一个例子使用set nx ex的方法实现了redis锁。 感觉应该是原子性的,挺好。 相比这篇文章里的方 阅读全文
摘要:
1、安装RabbitMQ 1)下载和安装erlang 下载erlang 安装erlang,root用户使用rpm安装 2)下载和安装RabbitMQ 下载RabbitMQ 安装RabbitMQ,root用户使用rpm安装 一般来说不会有什么问题,如果安装RabbitMQ过程中遇到如下错误,清空rpm 阅读全文
摘要:
本文介绍在使用curator框架的时候如何handle session expire。 1、什么是zookeeper的会话过期? 一般来说,我们使用zookeeper是集群形式,如下图,client和zookeeper集群(3个实例)建立一个会话session。 在这个会话session当中,cli 阅读全文
摘要:
本文记录一些redis事务相关的原理。 1、基本概念 1)什么是redis的事务? 简单理解,可以认为redis事务是一些列redis命令的集合,并且有如下两个特点: a)事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 阅读全文
摘要:
在前一篇我们说了,mybatis-generator反向生成代码。 这里我们开始说如何在django中反向生成mysql model代码。 我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码。 正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数 阅读全文