python
红岸水滴
https://github.com/fenglei110
从孤独中寻找自由。
展开
-
Python是怎么进行内存办理的?
Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),用于办理对小块内存的请求和释放.内存池(memory pool)的概念:当 创立很多耗费小内存的目标时,频频调用new/malloc会导致很多的内存碎片,致使功率下降。内存池的概念就是预先在内存中请求必定数量的,巨细相等 的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这...原创 2018-04-26 14:02:55 · 588 阅读 · 0 评论 -
Flask 源码解读 --- 从请求到响应的流程
学flask有短时间了,一直想了解源码,最近看了大神的一篇博客分析的很透彻,竟然看懂了.现在也来分析下.1. 提起Flask, 说下 WSGI:了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是: 浏览器发送一个HTTP请求; 服务器收到请求,生成一个HTML文档; 服务器把HTML文档作为HTTP响应的Body发送给浏览器; ...原创 2018-07-02 17:43:51 · 1152 阅读 · 0 评论 -
Requests源码解析---<1>常用API
前言:从Flask源码走出来后非常过瘾(当然只是读懂了皮毛),但总感觉意犹未尽,总有种挥之不去的冲动,终于在一个周末的下午,它爆发了,把我带进了Requests的源码(废话不多说,看源码), 走进Requests, 仿佛看到了一个暗恋多年优雅美女的裸体...哈哈,原谅自己不知如何表达它的美好了,那首先要做的就是对美女的外表做一些研究了.简介1.开发哲学Requests是以 PEP20 的箴言为中心...原创 2018-07-15 17:19:58 · 1616 阅读 · 2 评论 -
通过动态获取cookie爬取国家企业信用信息公司系统
更多总结查看Github1.首先分析,通过设置heads头,requests包来爬取网页总返回521,其实就应该明白做了简单的反爬。我们要动态获取cookie,然后通过每次返回的cookie去获取数据。百度也查到很多解析前端js代码来获取cookie的,感觉太麻烦了。我这里使用的webdriver中的phantomJS(看下源码就知道webdriver支持很多,也可以使用Chrome)2....原创 2018-08-20 09:11:18 · 16447 阅读 · 8 评论 -
Python协程
1. 协程是啥线程和进程的操作是由程序触发系统接口,最后的执行者是系统,它本质上是操作系统提供的功能。而协程的实质是程序员指定的,在python中遇到yield阻塞,则调用另一代码块执行,人为的实现并发处理,可以理解为根据现有的机制虚拟出的概念。协程存在的意义:对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时。协程,则只使用一个线程,分解一个线程成为多个“微线程”...原创 2018-04-26 15:47:08 · 260 阅读 · 0 评论 -
Tornado之源码解析
因为最近做项目,一直接触tornado,所以抽空把源码的一些原理搞一搞。tornado采用多进程+异步+epoll的模型,可以提供比较强大的网络响应性能。通过Nginx+tornado一起部署,可以同时支持多个实例的运行,从而支持加倍的请求响应,可达数千并发连接。模块分析tornado服务器主要三大处理模块,IOLoop,IOStream,HTTPConnection。1. 先说说...原创 2018-11-13 17:12:23 · 2163 阅读 · 0 评论 -
给元祖命名
开发中经常遇到 mysql.conn.fetchall() 返回一个元祖,如何快速给元祖中每个字段命名并且可读性高呢?第一种自定义枚举类from enum import IntEnum # 内置枚举类res = ("Bob", 22, "male") # 定义一个元祖class Student(IntEnum): NAME = 0 AGE = 1 SE...原创 2018-12-19 19:31:19 · 572 阅读 · 3 评论 -
有关词频统计
统计一个数组或者一个文档中出现频率最高的词,或者对元素排序是数据统计中经常用到的。先说下最常用到的方法:from random import randintdata = [randint(100, 110) for _ in range(30)] # 初始化一个长度为30的随机列表d = dict.fromkeys(data, 0) # 初始化一个字典,data中值为key, ...原创 2018-12-19 22:19:24 · 451 阅读 · 0 评论 -
字典有序
collections中封装了OrderedDict方法,目的是给dict 增加有序功能。但是从python3.6 开始,dict默认就有序了。来测试下from collections import OrderedDictod = OrderedDict()od['a'] = 1od['b'] = 2od['c'] = 3od.keys()>>> odic...原创 2018-12-20 20:50:01 · 910 阅读 · 0 评论 -
自定义MapReduce
1. 在python程序中,每个类只能有一个构造器,就是__init__方法。2. 通过@classmethod机制,可以用一种与构造器相仿的方式来构造类的对象。3. 通过类方法多态机制,可以更通用的方式构建子类以上为核心构造一个MapReduce ,首先定义一个类读取数据:class InputData(): """基类""" def read(self):...原创 2018-12-25 19:37:55 · 644 阅读 · 0 评论 -
flask+jieba+redis实现全文检索API
首先业务需求是mysql数据要提取到redis,同时在redis建立索引做分词(别问我为什么这么做,要求就这样),使用flask框架一共四个py文件# __init__.pyimport pymysql# 与mysql交互pymysql.install_as_MySQLdb()接下来是配置和model创建import osfrom flask import Flaskfrom flas...原创 2018-07-02 11:15:34 · 1992 阅读 · 0 评论 -
进程、线程和协程的总结
进程、线程和协程是三个在并发情况下常听到的概念,三者各有区别又相互联系进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程线程是在进程之后发展出来的概...原创 2018-05-30 08:53:46 · 260 阅读 · 0 评论 -
scrapy 中settings.py配置文件详解
settings.py配置文件中:# -*- coding: utf-8 -*- # Scrapy settings for demo1 project # # For simplicity, this file contains only settings considered important or # commonly used. You can find more ...原创 2018-05-24 17:27:40 · 915 阅读 · 0 评论 -
django项目:实现一个完整的博客功能(2)
上次完成用户模块和模板的继承,此次咱们来完成文章模块部分功能前戏部分1.添加应用2.更改settings配置3.第三部配置文章模块url高潮来了1.在models.py里添加需要的模型类from django.db import modelsfrom datetime import datetimefrom users.models import UserProfile# Create ...原创 2018-05-10 15:14:02 · 983 阅读 · 0 评论 -
django项目:实现一个完整的博客功能(1)
blog开发流程1.分析博客页面:1)完成网站的模块划分2)从模板页面中抽象出父模板,完成模板页面继承3)分析模块当中的数据模型,确定模型类当中的字段2.分析博客实现的功能:1)用户模块的注册登录,增删改查,模型类的继承,form验证,2)一篇文章有一个作者,多个标签,一种类型,评论,浏览量,点赞数3)文章排行榜,归档4)标签云5)文章分页6)添加删除文章#调用django内部用户模块,相关字段都...原创 2018-05-04 20:21:58 · 3192 阅读 · 0 评论 -
我会编程,学习数据结构和算法做啥?
个人认为数据结构是编程最重要的基本功没有之一!刚开始学习编程时有一种误解,会编程就行,研究什么数据结合啊?《数据结构》是计算机专业的一门必修课, 学习时,觉得用处不大, 还不如学个java,python来的直接一点,根本就没好好学。等到工作了以后做业务系统开发,发现根本就用不到那些书中的讲的二叉树、图、排序算法, 更加觉得这门课是在浪费时间了。前段时间又重新复习数据结构,询问了些大牛,才发现这种想...原创 2018-04-23 18:30:58 · 1632 阅读 · 0 评论 -
scrapy-redis架构
更过总结查看Github1. scrapy 与 scrapy-redisScrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个主机的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。而Scrapy-Redis则是一个基于Redis的Scrapy分布式组...原创 2018-05-22 19:17:27 · 1777 阅读 · 1 评论 -
爬虫项目实战:51job抓取--scrapy版存于数据库
准备要抓取的数据和得到链接的xpath创建项目 scrapy startproject pythonjob创建爬虫scrapy genspider job 51job.comjob.py中代码:# -*- coding: utf-8 -*-import scrapyfrom scrapy_redis.spiders import RedisSpiderfrom pythonjob.ite...原创 2018-05-22 19:52:38 · 682 阅读 · 0 评论 -
基础算法(栈、队列、排序)
栈# 定义一个栈(FILO)class Stack(object): def __init__(self): self.stack = [] def pop(self): if self.is_empty(): return None else: return self.stack.p...原创 2018-06-11 18:09:05 · 785 阅读 · 0 评论 -
八皇后问题
前言中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每走一步都更靠近目标结果一些,直到遇到障碍物,我们才考虑往回走。然后再继续尝试向前。通过这样的波浪式前进方法,最终达到目的地。当然整个过程需要很多往返,这样的前进方式,效率比较低下。此为递归算法。接下来的这个问题也和...原创 2019-05-31 15:33:37 · 499 阅读 · 0 评论