python3中的字符编码问题

如果说在python2中处理字符编码很蛋疼的话,如果幻想着python3不那么蛋疼,那么我只想说,你想多了,好不容易在python2中把字符编码的问题捣腾清楚了,但是换成python3,它会将之前的体系重新构建,使得之前的知识体系不能很好的运用,只能重新来构建。感觉是从一个坑跳到了另外一个坑,下面来看看这个令人头疼的python编码问题。

阅读全文


python中使用优先队列

相信对于队列的概念大家都不会陌生,这种先入先出的数据结构应用很广泛,像一般的生产消费都会用到队列,关于Queue的用法介绍可以参考我之前的文章 python中的Queue与多进程(multiprocessing)还有栈,栈是一种先入后出的数据结构,面优先队列有别于普通的队列与栈,在实现上,它一般通过堆这一数据结构,而堆其实是一种完全二叉树,它会对进入容器的元素进行排序(根据事先指定的规则),出队的顺序则会是二叉树的根结点代表的元素。接下来介绍几种优先队列的实现。

阅读全文


python中使用加盐哈希函数加密密码

开发网站离不开用户的注册与登录,今天来说说在网站开发的时候关于用户密码的保存方式,传统的方式有以下几种

  • 明文存储:肉眼就可以识别,没有任何安全性。 谁用谁傻缺
  • 加密存储:通过一定的变换形式,使得密码原文不易被识别。密码加密的几类方式:
  1. 明文转码加密:BASE64, 7BIT等,这种方式只是个障眼法,不是真正的加密。

  2. 对称算法加密:DES, RSA等。

  3. 签名算法加密:也可以理解为单向哈希加密,比如MD5, SHA1等。加密算法固定,容 易被暴力破解。如果密码相同,得到的哈希值是一样的。

  4. 加盐哈希加密:加密时混入一段“随机”字符串(盐值)再进行哈希加密。即使 密码相同,如果盐值不同,那么哈希值也是不一样的。现在网站开发中主要是运 用这种加密方法

本篇文章主要介绍第四种 「加盐哈希加密」

阅读全文


python中的异步实践与tornado应用

最近项目中由于在python3中使用tornado,之前也有用过,是在python2中,由于对于协程理解不是很透彻,只是套用官方文档中的写法,最近比较细致的看了下协程的用法,也将tornado在python3中异步的实践了一下。

阅读全文


pymongo中的特殊查询

python操作mongo常用的增删改查看这一篇就够了Python操作MongoDB看这一篇就够了

最近在整理一些在pymongo中相对使用较少的查询。

阅读全文


别小看元组

元组(tuple)和列表(list),每个写python的都知道,而且都知道,元组是不可变的,但是仅仅因为一个不可变就要创造出一个新的数据类型吗?
答案肯定不是,那么我们来看看元组究竟有哪些用法

阅读全文


python中关于map,lambda,高阶函数与装饰器的使用

有一点python基础的朋友在看到一些老鸟写的一些函数的时候,他们会有意的写出一些高阶函数,要么带个map啊,要么带个lambda呀,再高一点的带个@装饰器啊,其它这些也没有什么难的,用法上高级一些,如果能捋顺它的逻辑,准确的在实际应用中使用,还是会给程序效率上带来一定的提高,至于可读性,当你习惯了这些用法时你就会觉得它的可读性也很好,之所以你不习惯,主要还是由于你不懂它的用法,说到可读性,这是另外的话题,以后再详细的聊聊,今天要说的主要是高阶函数与装饰器的使用。希望看完此篇文章的朋友有所收获。

阅读全文


python中的list排序问题以及sort,sorted的使用

列表list排序是一种非常常见的操作,里面有很多的方法也有很多的坑,这里简单的记录一下。

阅读全文


python中的日志按天保存单独的文件

在运行web的python程序时,日志最好是使用按天的保存,这样查看起来会很方便,也不至于日志文件太大不好打开
python 自带的logging模块有着非常强大的作用

阅读全文


利用logging模块轻松地进行Python日志记录(转)

在开发过程中,如果程序运行出现了问题,我们是可以使用我们自己的 Debug 工具来检测到到底是哪一步出现了问题,如果出现了问题的话,是很容易排查的。但程序开发完成之后,我们会将它部署到生产环境中去,这时候代码相当于是在一个黑盒环境下运行的,我们只能看到其运行的效果,是不能直接看到代码运行过程中每一步的状态的。在这个环境下,运行过程中难免会在某个地方出现问题,甚至这个问题可能是我们开发过程中未曾遇到的问题,碰到这种情况应该怎么办?
如果我们现在只能得知当前问题的现象,而没有其他任何信息的话,如果我们想要解决掉这个问题的话,那么只能根据问题的现象来试图复现一下,然后再一步步去调试,这恐怕是很难的,很大的概率上我们是无法精准地复现这个问题的,而且 Debug 的过程也会耗费巨多的时间,这样一旦生产环境上出现了问题,修复就会变得非常棘手。但这如果我们当时有做日志记录的话,不论是正常运行还是出现报错,都有相关的时间记录,状态记录,错误记录等,那么这样我们就可以方便地追踪到在当时的运行过程中出现了怎样的状况,从而可以快速排查问题。
因此,日志记录是非常有必要的,任何一款软件如果没有标准的日志记录,都不能算作一个合格的软件。作为开发者,我们需要重视并做好日志记录过程。

阅读全文