自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 crontab修改默认编辑器

crontab默认编辑器为nano修改crontab默认编辑器为vi或者其他的编辑器 可以用命令select-editor修改一般我都会选择3再用crontab -e

2017-09-12 15:57:52 1473

原创 Redis源码剖析--对象Object

之前介绍的都是Redis的基础数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合, 等等,不过Redis并没有直接用这些结构来实现键值对的数据库,而是对其进行了封装, 所有的键和值都是用对象Object来表示的。

2017-09-09 12:26:11 405

原创 tornado--打印block日志

Tornado在使用过程,碰到过性能瓶颈。 当碰到Tornado中有比较耗时的任务的时候,请求一多就会阻塞整个服务。这个时候就需要查看到底是什么任务阻塞了服务,然后针对性的进行优化。Tornado使用logging打印日志,我们可以指定当某个请求的处理时间超过设定时间的时候,打印这个请求的stack trace。源码如下: def set_blocking_log_threshold(self, s

2017-09-09 12:22:25 686

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

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

2017-09-09 12:21:38 235

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

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

2017-09-08 21:26:28 336

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

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

2017-09-08 21:25:28 1038

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

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

2017-09-08 21:23:58 34861 6

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

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

2017-09-08 21:22:26 217

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

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

2017-09-08 21:21:12 218

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

先贴一下整体的代码

2017-09-08 21:19:59 306

原创 Redis源码剖析-dict字典

改换一下策略,不直接介绍源码,打算先整体介绍一下思路,然后再根据源码解释具体的实现。如图所示,一个dict字典中由两个hashtable组成,分别为ht[0]和ht[1],用到的基本上都是ht[0]。

2017-09-08 21:18:27 240

原创 Redis源码剖析-链表list

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

2017-09-08 21:17:05 217

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

Redis 没有直接使用 C 语言传统的字符串表示, 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。Redis中所有的键都是用sds格式来保存的, 包括一部分值的保存,也是用的sds格式。

2017-09-08 21:15:56 268

原创 Tornado 线程池应用

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

2017-09-08 21:13:53 3567

原创 Json Web Token

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

2017-09-08 21:11:12 477

空空如也

空空如也

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

TA关注的人

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