自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 tornado--打印block日志

Tornado在使用过程,碰到过性能瓶颈。 当碰到Tornado中有比较耗时的任务的时候,请求一多就会阻塞整个服务。这个时候就需要查看到底是什么任务阻塞了服务,然后针对性的进行优化。

2017-09-07 11:34:09 719

原创 Redis源码剖析--压缩列表

压缩列表(ziplist)是列表键和哈希键的底层实现之一。 Redis的列表键,哈希键,有序集合的底层实现都用到了ziplist。当列表键中包含比较少的元素,并且元素都是数字或者比较小的字符串的时候, redis会用压缩列表来作为列表键的底层实现。当哈希键的键和值都是比较小的整数或者较短的字符的时候,也是用压缩列表来作为底层实现。 因为压缩列表也能够节省内存。

2017-09-07 10:44:13 360

转载 Python的PIL库实现验证码图片

sudo apt-get install python-imaging现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一。这里就不详细介绍了,相信大家都遇到过。现在就给出用Python的PIL库实现验证码图片的代码。代码中有详细注释。#!/usr/bin/env python#coding=utf-8import randomfr

2017-09-01 18:55:55 293

转载 使用tornado让你的请求异步非阻塞

####前言也许有同学很迷惑:tornado不是标榜异步非阻塞解决10K问题的嘛?但是我却发现不是torando不好,而是你用错了.比如最近发现一个事情:某网站打开页面很慢,服务器cpu/内存都正常.网络状态也良好.后来发现,打开页面会有很多请求后端数据库的访问,有一个mongodb的数据库业务api的rest服务.但是它的tornado却用错了,一步步的来研究问题:####说明以

2017-09-01 12:24:27 829

转载 mongodb 使用$lookup做多表关联处理

原文地址: http://www.cnblogs.com/huangxincheng/p/5728791.html这篇我们来看mongodb另一个非常有意思的东西,那就是$lookup,我们知道mongodb是一个文档型的数据库,而且它也是最像关系型数据库的一种nosql,但是呢,既然mongodb是无模式的,自然就很难在关系型数据库中非常擅长的多表关联上发挥作用,在这之前,我们可

2017-08-30 19:00:14 5946 1

原创 Redis源码剖析--整数集合

整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。

2017-08-30 11:45:39 248

原创 Redis源码剖析--跳跃表

跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。跳跃表支持平均 O(\log N) 最坏 O(N) 复杂度的节点查找, 还可以通过顺序性操作来批量处理节点。在大部分情况下, 跳跃表的效率可以和平衡树相媲美, 并且因为跳跃表的实现比平衡树要来得更为简单, 所以有不少程序都使用跳跃表来代替平衡树。Redis 使用跳跃表作为有序集

2017-08-25 10:10:02 282

原创 Redis源码剖析-dict遍历算法

先贴一下整体的代码unsigned long dictScan(dict *d, unsigned long v, dictScanFunction *fn, dictScanBucketFunction* bucketfn,

2017-08-23 14:27:57 300

原创 Redis源码剖析-dict字典

改换一下策略,不直接介绍源码,打算先整体介绍一下思路,然后再根据源码解释具体的实现。如图所示,一个dict字典中由两个hashtable组成,分别为ht[0]和ht[1],用到的基本上都是ht[0]。 那么ht[1]什么时候用到呢?因为hash算出来的索引值是有可能重复的,也就是说不同的dictEntry有可能位于同一个hashtable的槽内,如果拥有的dictEntry的数量和slot的数量的比

2017-08-02 16:05:34 299

原创 Redis源码剖析-链表list

Redis另一个基础的数据结构是链表,C并没有内置的链表结构,因此Redis自己实现了一个列表。除了链表键之外, 发布与订阅、慢查询、监视器等功能也用到了链表, Redis 服务器本身还使用链表来保存多个客户端的状态信息, 以及使用链表来构建客户端输出缓冲区。List结构双端链表结点定义如下:typedef struct listNode { struct listNode *prev; /

2017-07-31 15:38:15 424

原创 Redis源码剖析--简单动态字符串sds

Redis 没有直接使用 C 语言传统的字符串表示, 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。Redis中所有的键都是用sds格式来保存的, 包括一部分值的保存,也是用的sds格式。SDS的定义sds.h中的定义如下:/* * 类型别名,用于指向 sdshdr 的 buf 属性 */

2017-07-31 12:10:42 316

原创 Tornado 线程池应用

Tornado是一个异步框架,在异步操作的时候能提升程序的处理性能。但是如果在程序中碰到同步的逻辑,由于GIL的关系,会直接卡死,导致性能急剧下降。目前对于mongodb以及redis都有比较不错的异步框架,但是对于Mysql,目前的异步框架都不是很成熟。在实际应用中,由于已开始不是特别了解,在用了Tornado框架的同时,采用了Sqlalchemy来处理Mysql数据。但是由于这部分Mysql操作

2017-07-25 19:07:37 1201

原创 Json Web Token

Token Auth机制JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。JWT通过用户发送用户名和密码给服务器,服务器验证通过之后,生成签名的token给客户端。客户端存储这个token,之后请求帐号相关的信息时带上token,服务端验证token之后,进行相应的处理。相比cookie的优势支持跨域站点访问Cookie是不允

2017-07-25 14:55:52 301

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-07-12 15:09:26 247

空空如也

空空如也

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

TA关注的人

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