自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用urllib2库实现有道翻译

有道翻译的提交方式是POST,请求内容在form表单里,基本思路就是针对POST请求的普通爬虫,模拟表单的发送,然后问题出现了,{“errorCode”:50}。我记得一年前是可以用这样的思路解决的,结果现在不行了,看来是有道翻译的爬虫机制加了点什么,使用抓包工具抓取多次form表单,对比发现有两个值是变化的salt sign这两个是什么东西,一般这种能在页面直接变化的东西都是用J...

2019-04-13 17:07:44 224

原创 Django连接mysql数据库(python3.6)

我们都知道,python3和python2调用mysql的驱动是不同的,首先我们要先进入虚拟环境(如果你不是用虚拟环境的,建议你了解一下),选择虚拟环境,下载安装pymysql:pip3 install PyMySQL然后setting.py里设置DATABASES = { 'default': { 'ENGINE': 'django.db.backend...

2019-03-29 19:33:28 264

原创 初识Django

MVC大部分开发语言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用 m表示model,主要用于对数据库层的封装 v表示view,用于向用户展示结果 c表示controller,是核心,用于处理请求、获取数据、返回结果MVTDjango是一款python的web开发框架 与MVC有所不同,属于...

2019-03-29 19:18:26 226

原创 用户登陆——数据库逻辑

用户登录业务过程如下: 输入用户名、密码 密码加密 判断redis中是否记录了用户名,如果有则成功 如果redis中没有用户名,则到mysql中查询 从mysql中查询成功后,将用户名记录到redis中#encoding=utf-8from t2 import RedisHelper # 之前封装好的redis操作from t3 import MysqlHelper # 之...

2019-03-24 10:38:43 356

原创 Redis与python交互

安装包到中文官网查找客户端代码 联网安装sudo pip install redis使用源码安装unzip redis-py-master.zipcd redis-py-mastersudo python setup.py install交互代码引入模块import redis连接try: r=redis.StrictRedis(host='...

2019-03-24 10:36:17 138

原创 Redis的发布订阅与主从配置

发布订阅发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推...

2019-03-24 10:34:57 289

原创 Redis数据操作

数据操作redis是key-value的数据,所以每个数据都是一个键值对 键的类型是字符串 值的类型分为五种: 字符串string 哈希hash 列表list 集合set 有序集合zset 数据操作的全部命令,可以查看中文网站 接下来逐个介绍操作各类型的命令stringstring是redis最基本的类型 最大能存储512MB数据 s...

2019-03-24 10:33:36 206

原创 Redis简介与安装

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内...

2019-03-24 10:30:44 109

原创 MongoDB与python交互

与python交互点击查看官方文档 安装python包进入虚拟环境sudo pip install pymongo或源码安装python setup.py引入包pymongoimport pymongo连接,创建客户端client=pymongo.MongoClient("localhost", 27017)获得数据库test1db=client.te...

2019-03-23 14:59:28 168

原创 MongoDB高级——复制(副本集)

复制(副本集)什么是复制复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性 复制还允许从硬件故障和服务中断中恢复数据为什么要复制数据备份 数据灾难恢复 读写分离 高(24* 7)数据可用性 无宕机维护 副本集对应用程序是透明复制的工作原理复制至少需要两个节点A、B... A是主节点,负责处理客户端请求 其余的都是从...

2019-03-23 14:57:52 195

原创 MongoDB高级——安全

超级管理员为了更安全的访问mongodb,需要访问者提供用户名和密码,于是需要在mongodb中创建用户 采用了角色-用户-数据库的安全管理方式 常用系统角色如下: root:只在admin数据库中可用,超级账号,超级权限 Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 创建超级管理用户use admindb.createUser({ ...

2019-03-23 14:54:28 174

原创 MongoDB高级——聚合

聚合 aggregate聚合(aggregate)主要用于计算数据,类似sql中的sum()、avg()语法db.集合名称.aggregate([{管道:{表达式}}])管道管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入ps ajx | grep mongo在mongodb中,管道具有同样的作用,文档处理完毕后,通过管道进行下一次处理常用管道$gro...

2019-03-23 14:53:33 170

原创 MongoDB数据查询

数据查询基本查询方法find():查询db.集合名称.find({条件文档})方法findOne():查询,只返回第一个db.集合名称.findOne({条件文档})方法pretty():将结果格式化db.集合名称.find({条件文档}).pretty()比较运算符等于,默认是等于判断,没有运算符 小于$lt 小于或等于$lte 大于$gt 大于...

2019-03-21 21:13:18 219

原创 MongoDB基础

简介MongoDB 是一个基于分布式文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站MongoDB特点模式自由 :可以把不同结构的文档存储在同一个数据库里 面向集合的存储:适合存储 JSON风格文件的形式 完整的索引支持:对任何属性可索引 复制和高可用性:支持服务器之间的数据复制,支持主-从...

2019-03-21 21:11:29 73

原创 python与MySQL的交互

要想和MySQL数据库交互,首先需要安装数据库驱动模块,python2和python3的数据库驱动是不同的。python2中的数据库模块是MysqLdb,可以通过以下命令安装sudo apt-get install python-mysql在文件中引入模块import MySQLdbpython3中模块名为PyMySQL,我用pip3安装的sudo pip3 ins...

2019-03-19 20:22:07 129

原创 MySQL高级

关系创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生表引用过来,关系也是一条数据;根据范式要求应该存储学生的编号,而不是学生的姓名等其它信息 同理,科目表也是关系列,引用科目表中的数据创建表的语句如下create table scores(id int prima...

2019-03-18 18:34:11 135

原创 MySQL查询语句

条件使用where子句对表中的数据筛选,结果为true的行会出现在结果集中 语法如下:select * from 表名 where 条件;比较运算符等于= 大于> 大于等于>= 小于< 小于等于<= 不等于!=或<> 查询编号大于3的学生select * from students where id>3;查询编号不...

2019-03-18 18:30:42 111

原创 MySQL基础

简介主要知识点包括:能够与mysql建立连接,创建数据库、表,分别从图形界面与脚本界面两个方面讲解 相关的知识点包括:E-R关系模型,数据库的3范式,mysql中数据字段的类型,字段约束 数据库的操作主要包括: 数据库的操作,包括创建、删除 表的操作,包括创建、修改、删除 数据的操作,包括增加、修改、删除、查询,简称crud E-R模型当前物理的数据库都是按照E-R...

2019-03-16 15:30:55 80

原创 动态服务器以及WSGI

服务器动态资源请求1. 浏览器请求动态页面过程2.WSGI怎么在你刚建立的Web服务器上运行一个Django应用和Flask应用,如何不做任何改变而适应不同的web架构呢?在以前,选择Python web 架构会受制于可用的web服务器,反之亦然。如果架构和服务器可以协同工作,那就好了:但有可能面对(或者曾有过)下面的问题,当要把一个服务器和一个架构结合起来...

2019-03-13 15:49:02 136

原创 一个简单的动态web服务器

这个动态web服务器的思路是在静态服务器的基础上添加对URL的判断,如果URL中带有脚本信息,那么服务器会去执行脚本而不是直接返回静态界面#-*-coding:utf-8-*-import sysimport refrom socket import *from multiprocessing import Process#设置静态文件根目录HTTP_ROOT_DIR...

2019-03-13 14:53:47 834

原创 gevent版TCP服务器

gevent版-TCP服务器import sysimport timeimport geventfrom gevent import socket,monkey# 猴子补丁,在执行时动态替换monkey.patch_all()def handle_request(conn): while True: data = conn.recv(1024) ...

2019-03-13 14:44:13 330

原创 协程

协程协程,又称微线程,纤程。英文名Coroutine。协程是啥首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元。 为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息...

2019-03-13 14:38:16 85

原创 单进程服务器-epoll版

epoll版-TCP服务器1. epoll的优点:没有最大并发连接的限制,能打开的FD(指的是文件描述符,通俗的理解就是套接字对应的数字编号)的上限远大于1024 效率提升,不是轮询的方式,不会随着FD数目的增加效率下降。只有活跃可用的FD才会调用callback函数;即epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,epoll的效率就会远远高...

2019-03-13 14:17:07 98

原创 单进程服务器-select版

select版-TCP服务器1. select 原理在多路复用的模型中,比较常用的有select模型和epoll模型。这两个都是系统接口,由操作系统提供。当然,Python的select模块进行了更高级的封装。网络通信被Unix系统抽象为文件的读写,通常是一个设备,由设备驱动程序提供,驱动可以知道自身的数据是否可用。支持阻塞操作的设备驱动通常会实现一组自身的等待队列,如读/写等待队列用...

2019-03-13 14:15:01 126

原创 并发服务器模型——多线程服务器

多线程服务器#coding=utf-8from socket import *from threading import Threadfrom time import sleep# 处理客户端的请求并执行事情def dealWithClient(newSocket,destAddr): while True: recvData = newSocket.r...

2019-03-13 14:04:35 252

原创 并发服务器模型——多进程服务器

多进程服务器1. 多进程服务器from socket import *from multiprocessing import *from time import sleep# 处理客户端的请求并为其服务def dealWithClient(newSocket,destAddr): while True: recvData = newSocket.rec...

2019-03-13 14:03:27 120

原创 并发服务器模型——单进程服务器

单进程服务器1. 完成一个简单的TCP服务器from socket import *serSocket = socket(AF_INET, SOCK_STREAM)# 重复使用绑定的信息serSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR , 1)localAddr = ('', 7788)serSocket.bind(local...

2019-03-13 14:02:24 182

原创 一个简单的静态web服务器

用python的socket写的一个简单多进程服务器#-*-coding:utf-8-*-import refrom socket import *from multiprocessing import Process#设置静态文件根目录HTTP_ROOT_DIR = "./html"def fun(cli_socket): #接收数据 request_dat...

2019-03-07 20:44:17 383

原创 Ubuntu清理磁盘

1.清理依赖关系sudo apt-get autoremove2.清理安装时的安装包sudo apt-get clean

2019-03-07 18:31:52 1401

原创 Ubuntu解除端口占用

为了解决端口占用问题,通过端口查找进程,再通过该进程的pid来kill该进程。Ubuntu查看端口使用情况,使用netstat命令:1.查看已经连接的服务端口(ESTABLISHED)netstat -a2.查看所有的服务端口(LISTEN,ESTABLISHED)netstat -ap3.查看指定端口,可以结合grep命令: netstat -ap | g...

2019-03-07 18:28:18 6225

原创 TCP简介

tcp三次握手tcp四次挥手tcp十种状态注意:当一端收到一个FIN,内核让read返回0来通知应用层另一端已经终止了向本端的数据传送 发送FIN通常是应用层对socket进行关闭的结果tcp的2MSL问题说明2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包...

2019-03-05 19:49:53 137

原创 UDP模拟QQ通信

用UDP模拟QQ通信 ,代码如下#-*-coding:utf-8-*-from threading import Threadfrom socket import *#接受函数def recv_func(port): udpSocket = socket(AF_INET,SOCK_DGRAM) udpSocket.bind(("",int(port))) ...

2019-03-04 15:55:44 575

原创 UDP简介

1.UDP介绍UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可...

2019-03-04 15:54:58 824

原创 socket简介

1.本地的进程间通信(IPC)有很多种方式,例如队列 同步(互斥锁、条件变量等)以上通信方式都是在一台机器上不同进程之间的通信方式,那么问题来了网络中进程之间如何通信?2. 网络中进程之间如何通信首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网...

2019-03-04 15:54:48 127

原创 计算机网络简介

1 TCP/IP协议(族)早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准。因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和I...

2019-03-02 17:22:41 204

原创 访问一个网站的过程

ip地址是逻辑地址,mac地址是物理地址,在网络传输中ip地址是不变的,为了找到下一跳,mac地址一直在变。以百度为例简单来说1.先要解析出baidu.com对应的ip地址 1.先要知道默认网关的mac 1.使用arp获取默认网关的MAC地址 2.组织数据发送给默认网关(ip还是服务器的ip,但是mac地址是默认网关的mac地址) ...

2019-02-26 17:54:00 511

原创 重建二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# ...

2019-02-26 13:00:43 86

原创 同步、互斥锁、死锁、异步

同步的概念1. 多线程开发可能遇到的问题假设两个线程t1和t2都要对num=0进行增1运算,t1和t2都各对num修改10次,num的最终的结果应该为20。但是由于是多线程访问,有可能出现下面情况:在num=0时,t1取得num=0。此时系统把t1调度为”sleeping”状态,把t2转换为”running”状态,t2也获得num=0。然后t2对得到的值进行加1并赋给num,使得n...

2019-02-25 17:21:00 637

原创 Python多任务——线程

多线程-threadingpython的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用1. 使用threading模块单线程执行#coding=utf-8import timedef saySorry(): print("亲爱的,我错了,我能吃饭了吗?") time.sleep(1)...

2019-02-25 12:03:09 184

原创 进程间通信——Queue

进程间通信-QueueProcess之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。1. Queue的使用可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理:#coding=utf-8from multiprocessing import Queueq=...

2019-02-24 18:05:23 131

基于8086的温度测控系统,有引脚连线图

基于8086CPU的温度测控系统实验报告,有芯片的引脚连线图

2018-12-31

空空如也

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

TA关注的人

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