摘要: 生产函数中的c.send(None)会跳转入消费者函数,然后这个函数回执行到yield的位置然后将执行权限交还生产者函数。在while循环中再次执行c.send(n)的时候再次回到消费者函数上次停留的地方,并且将n的值通过r传入然后进行消费。 理解起来有点比起传统思维困难一些。而这就是生成器的运作方 阅读全文
posted @ 2018-02-01 13:50 coder-sunyuw 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 网上的东西不可靠啊。。。要么就泛泛而谈要么就是代码有问题。。。。。。 按照我的理解,epoll模型是以事件为触发的。一旦一个fd上有任何的事件发生,epoll就会解除阻塞,那么接下来就要依据其fd找出我们要的那个socket对象,接着需要依据EPOLL消息的类型制定响应的策略。 不过我还有一事不解, 阅读全文
posted @ 2018-02-01 01:58 coder-sunyuw 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 学习一门语言不是简简单单的了解语法那么简单。需要从其他人的源码中去寻找对自己由裨益的东西。 一门语言的各种包,犹如大厦的基石,如同建筑工程师不需要知道每个结构如何制造,但是必须知道这个结构是在什么地方,如何使用,图纸在何处。尤其可以避免在使用的时候重复造轮子,或者写出质量不高的代码 补充三方 阅读全文
posted @ 2018-01-31 16:02 coder-sunyuw 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 0o10000 才是八进制数。 阅读全文
posted @ 2018-01-31 11:58 coder-sunyuw 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 使用普通的md5加盐的时候,笔者根据以往的经验都是随性而为,比如后缀或者前缀一个salt。 但是python提供给用户一种更为统一的加盐方式。就是hmac。别的不说直接上代码 注意字符串都是b格式的。 阅读全文
posted @ 2018-01-31 10:21 coder-sunyuw 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 我比较喜欢这种。__enter__()和__exit__()方法却有一个优势就是可以整合成为完全的面向对象的方式。而上面这种,似乎看起来只能是面向过程的 阅读全文
posted @ 2018-01-31 10:19 coder-sunyuw 阅读(87) 评论(0) 推荐(0) 编辑
摘要: import hashlib # 这个相比起php的一句话MD5是不是有点累赘?不过有个优势如果文件过大,可以分片进行update,最后结果是一样的。 md5 = hashlib.md5() md5.update('How to use md5?'.encode('utf-8')) print(md5.hexdigest()) 阅读全文
posted @ 2018-01-30 20:30 coder-sunyuw 阅读(89) 评论(0) 推荐(0) 编辑
摘要: python的struct是用于将对象变为二进制对象的方法。 顺便附上格式化字符的表 译(闲得无聊翻一下) 格式化字符有如下的意思;从C和Python之间的值的转化必须要明确的指定类型。当使用标准size的时候标准size的column是被packed的值的bytes size(大概意思就是说以被解 阅读全文
posted @ 2018-01-30 18:11 coder-sunyuw 阅读(308) 评论(0) 推荐(0) 编辑
摘要: #如果要很好的建立一些很小的类似Class的东西来使用。有时候真的大可不必使用Class。直接使用namedtuple即可 from collections import namedtuple Point = namedtuple('Point', ['x','y']) p = Point(1,2) print(p.x) print(p.y) 阅读全文
posted @ 2018-01-30 14:40 coder-sunyuw 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 实际上只要datetime的对象存在,就可以使用astimezone的方法转换到任何一个时区 阅读全文
posted @ 2018-01-30 14:27 coder-sunyuw 阅读(15724) 评论(0) 推荐(0) 编辑