<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[菜鸟之神的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/csdntt00</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; csdntt00]]></copyright><item><title><![CDATA[python发送邮件一]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/79007505</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/79007505</guid><author>csdntt00</author><pubDate>Mon, 08 Jan 2018 21:49:13 +0800</pubDate><description><![CDATA[1）文件形式的邮件
#!/usr/bin/env python3  
#coding: utf-8  
import smtplib  
from email.mime.text import MIMEText  
from email.header import Header  
  
sender = 'xxxx@163.com'  
receiver = 'xxxx@163.]]></description><category></category></item><item><title><![CDATA[socket编程二]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78966044</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78966044</guid><author>csdntt00</author><pubDate>Wed, 03 Jan 2018 22:02:07 +0800</pubDate><description><![CDATA[TCP可靠性的实现：
（1）校验码
（2）接收方反馈
（3）信息包附带序号
UDP：
（1）快 不需要花费时间建立和关闭连接
（2）快 偶尔丢失一两个消息包无所谓，但是TCP会严格检查
（3）快 UDP的限制是一个信息包不超过64KB的数据


TCP和UDP区别就是UDP不建立连接，只保证数据的完整性，数据传输快，但是不保证数据是否真的被收到，也不保证数据是够只接收一次，也不]]></description><category></category></item><item><title><![CDATA[socket编程一]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78947645</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78947645</guid><author>csdntt00</author><pubDate>Mon, 01 Jan 2018 21:40:05 +0800</pubDate><description><![CDATA[客户端与服务端通信
util.py

import socket

import time

class InitSocketTest(object):

    def __init__(self, host, port, type):

        self.host = host
        self.port = port
        self.add]]></description><category></category></item><item><title><![CDATA[12.25公开课（九宫格等）]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78917457</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78917457</guid><author>csdntt00</author><pubDate>Wed, 27 Dec 2017 23:19:52 +0800</pubDate><description><![CDATA[1）
class CountNumber(object):
    '''ABCD * 9 = DCBA
    通过计算机的方法，给我们计算出A = ?  B = ? C = ? D = ?
    A: 1-9
    B: 0-9
    C: 0-9
    D: 1-9
    A != B != C !=D
    '''
    #def __init__(sel]]></description><category></category></item><item><title><![CDATA[celery二]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78858749</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78858749</guid><author>csdntt00</author><pubDate>Wed, 20 Dec 2017 23:19:35 +0800</pubDate><description><![CDATA[# 多worker，多队列实例
# demo.py
from celery import Celery

app = Celery()
app.config_from_object("celeryconfig")

@app.task
def taskA(x,y):
    return x + y

@app.task
def taskB(x,y,z):
    return x + y + z]]></description><category></category></item><item><title><![CDATA[celery一]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78849015</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78849015</guid><author>csdntt00</author><pubDate>Wed, 20 Dec 2017 07:19:04 +0800</pubDate><description><![CDATA[Celery是一个python开发的异步分布式任务调度模块。
Celery本身并不提供消息服务，使用第三方服务，也就是borker来传递任务，目前支持rebbimq，redis， 数据库等
简单的例子：


from celery import Celery
broker="redis://192.168.48.131:6379/5"
backend="redis://192.168.4]]></description><category></category></item><item><title><![CDATA[消息队列二]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78838342</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78838342</guid><author>csdntt00</author><pubDate>Mon, 18 Dec 2017 23:51:34 +0800</pubDate><description><![CDATA[# queue只有maxsize一个构造参数，用来指定队列容量，指定为0的时候代表容量无限。
# 主要有以下成员函数：
#     Queue.qsize()：返回消息队列的当前空间。返回的值不一定可靠
#     Queue.empty()：判断消息队列是否为空，返回True或False。同样不可靠
#     Queue.full()：类似上边，判断消息队列是否满
#     Queue.pu]]></description><category></category></item><item><title><![CDATA[消息队列一]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78818046</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78818046</guid><author>csdntt00</author><pubDate>Sat, 16 Dec 2017 08:42:36 +0800</pubDate><description><![CDATA[# 消息队列”是在消息的传输过程中保存消息的容器
# 消息队列最经典的用法就是消费者和生成者之间通过消息管道来传递消息，消费者和生成者是不通的进程
# 生产者往管道中写消息，消费者从管道中读消息
# 操作系统提供了很多机制来实现进程间的通信，multiprocessing模块就提供了Queue和Pipe两种方法来实现
from multiprocessing import Queue,Proces]]></description><category></category></item><item><title><![CDATA[多线程二]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78808416</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78808416</guid><author>csdntt00</author><pubDate>Thu, 14 Dec 2017 23:08:57 +0800</pubDate><description><![CDATA[import threading
# 多线程和多进程不同之处在于多线程本身就是可以和父进程共享内存的，
# 这也是为什么其中一个线程挂掉以后，为什么其他线程也会死掉的原因
def worke(l):
    l.append("hello")
    l.append("world")
    l.append("python")

if __name__ == "__main__":
    l]]></description><category></category></item><item><title><![CDATA[多线程一]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78797875</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78797875</guid><author>csdntt00</author><pubDate>Wed, 13 Dec 2017 22:59:23 +0800</pubDate><description><![CDATA[# Python中提供了threading模块来对多线程的操作
import threading
def worker(n):
    print("start worker{0}".format(n))

# 方法二：从Thread继承，并重写run()
class MyThread(threading.Thread):
    def __init__(self,args):
        ]]></description><category></category></item><item><title><![CDATA[多进程三]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78787209</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78787209</guid><author>csdntt00</author><pubDate>Tue, 12 Dec 2017 23:12:01 +0800</pubDate><description><![CDATA[1）manager

# Python中提供了强大的Manage专门用来做数据共享的，其支持的类型非常多，包括，Value， Array，list，dict， Queue, Lock等
import multiprocessing
import time
def worker(d,l):
    l += range(11,16)
    for i in xrange(1,6):
     ]]></description><category></category></item><item><title><![CDATA[多进程二]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78778036</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78778036</guid><author>csdntt00</author><pubDate>Mon, 11 Dec 2017 23:43:47 +0800</pubDate><description><![CDATA[1）进程锁

import multiprocessing
import time

# lock = multiprocessing.Lock()
# lock.acquire  获得锁
# lock.release  释放锁
# with lock:

# 不加锁程序，多个进程可以随机进行运作
# number  +1
# number  +3
# def add(number,value]]></description><category></category></item><item><title><![CDATA[多进程一]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78756730</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78756730</guid><author>csdntt00</author><pubDate>Sat, 09 Dec 2017 00:35:37 +0800</pubDate><description><![CDATA[import multiprocessing
import time

p = Multiprocessing.cpu_count()  # 统计cpu的个数
m = Multiprocessing.active_children()  # 列出存在的子进程

# 创建一个Process对象
def worker(interval):
    time.sleep(interval)
    pr]]></description><category></category></item><item><title><![CDATA[python对nosql的操作五]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78747482</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78747482</guid><author>csdntt00</author><pubDate>Fri, 08 Dec 2017 00:05:38 +0800</pubDate><description><![CDATA[import memcache
mc = memcache.Client(["127.0.0.1:11211"])
mc.set("k1","v1")  # 赋值
print(mc.get("k1"))  # 取值
mc.add("k2","v2")  # 赋值
print(mc.get("k2"))
# set和add的区别
# 如果这个key值存在，add就会报错；set不会报错，会重新赋值并]]></description><category></category></item><item><title><![CDATA[python对nosql的操作四]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78736636</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78736636</guid><author>csdntt00</author><pubDate>Wed, 06 Dec 2017 23:48:32 +0800</pubDate><description><![CDATA[1）memcache简介及安装
Memcached是一个高性能的分布式内存对象缓存系统，用于动态Web应用以减轻数据库负载，它通过在内存中缓存数据和对象减少读取数据库的次数，从而提高动态、数据库驱动网站的速度。
安装：
cd /usr/local/src
wget 
http://memcached.org/latest
tar -zxvf lstest
cd memcached-1]]></description><category></category></item><item><title><![CDATA[Python对nosql的操作三]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78726076</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78726076</guid><author>csdntt00</author><pubDate>Tue, 05 Dec 2017 23:03:39 +0800</pubDate><description><![CDATA[import redis
pool = redis.ConnectionPool(host="localhost", port=6379, db=0)
r = redis.Redis(connection_pool=pool)
# hash类型的操作,就是以一个name对应一个字典存储的
# hset hget hmset hmget
# hset(name,key,value)
# name对应]]></description><category></category></item><item><title><![CDATA[python复习帖]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78714851</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78714851</guid><author>csdntt00</author><pubDate>Mon, 04 Dec 2017 22:47:40 +0800</pubDate><description><![CDATA[模块使用


模块是Python组织代码的基本方式
一个Python脚本可以单独运行，也可以导入到另一个脚本中运行，当脚本被导入运行时，我们将其称为模块（module）
所有的.py文件都可以作为一个模块导入
模块名称与脚本的文件名相同，例如我们编写了一个名为hello.py的脚本，则可以在另一个脚本中用import hello语句来导入它


包（模块的集合）：
Python]]></description><category></category></item><item><title><![CDATA[python对nosql的操作二]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78650633</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78650633</guid><author>csdntt00</author><pubDate>Mon, 27 Nov 2017 23:47:27 +0800</pubDate><description><![CDATA[1）字符串操作

# redis中的string在内存中都是按照一个key对应一个value来存储的
'''set的使用方法：
set(name, value, ex=None, px=None, nx=False, xx=False)
     ex，过期时间（秒）
     px，过期时间（毫秒）
     nx，如果设置为True，则只有name不存在时，当前set操作才执行,同setn]]></description><category></category></item><item><title><![CDATA[Python对nosql的操作一]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78629976</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78629976</guid><author>csdntt00</author><pubDate>Sat, 25 Nov 2017 09:53:38 +0800</pubDate><description><![CDATA[1）简介
NoSQL，泛指非关系型的数据库
非关系型数据库的优势：1. 性能NOSQL是基于键值对的，可以想象成表中的主键和值的对应关系，而且不需要经过SQL层的解析，所以性能非常高。2. 可扩展性同样也是因为基于键值对，数据之间没有耦合性，所以非常容易水平扩展。
关系型数据库的优势：1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。2. 事务支持使得对于安全性]]></description><category></category></item><item><title><![CDATA[Python对mysql的操作四]]></title><link>https://blog.youkuaiyun.com/csdntt00/article/details/78620399</link><guid>https://blog.youkuaiyun.com/csdntt00/article/details/78620399</guid><author>csdntt00</author><pubDate>Thu, 23 Nov 2017 23:55:00 +0800</pubDate><description><![CDATA[# 删除数据# 要求：有些老师不好好上次，导致课程的及格率太低，最后名最差的5名老师将会被开除
# 第一步，查询出及格率排最后的5位老师
select sorce.couid,course.tid,sorce.grade,count(course.tid) as count_teacher
  from sorce join course on course.couid = sorce.couid]]></description><category></category></item></channel></rss>