zoukankan      html  css  js  c++  java
  • py2/py3区别, 列表生成式, 网络编程, socketserver, 线程, uuid模块

    一. py2/py3区别
        - 编码&字符串
            字符串:
                py2:
                    unicode         v = u"root"    本质上用unicode存储(万国码)
                    (str/bytes)     v = "root"     本质用字节存储
                py3:
                    str                v = "root"     本质上用unicode存储(万国码)
                    bytes           v = b"root"    本质上用字节存储
            编码:
                py2:
                    - ascii
                    文件头可以修改:#-*- encoding:utf-8 -*-
                py3:
                    - utf-8
                    文件头可以修改:#-*- encoding:utf-8 -*-

                注意:文件是如何存储?
        - 继承
            py2: 经典类/新式类
            py3: 新式类
        - 范围
            py2:range/xrange
            py3:       range
        - 输入
            py2: v1 = raw_input('请输入用户名:')
            py3: v2 = input('请输入用户名:')
        - 打印
            py2: print 'xx'
            py3: print(123)

    二. 列表生成式
    v = [lambda x: x + i for i in range(10)]
    print(v)   # 10个内存地址组成的列表

    三. 网络编程

        1. 我的电脑有网卡,网卡里有mac地址

        2. 我到某个地方插上网线,路由器或交换机中的DHCP服务为我自动分配IP地址。
            IP: 192.168.13.84
                 IPv4
                    00000000.00000000.00000000.00000000
                    0~255    0~255    0~255    0~255
                 IPv6
                    00000000.00000000.00000000.00000000.00000000.00000000
            子网掩码:255.255.255.0
                192.168.13.84
                255.255.255.0   # 也可以是255.255.254.0

                192.168.12.84
                255.255.255.0
                将挡住的IP位数作为网段。
                未挡住的部分作为可变的值。

            网关IP:192.168.13.1

            局域网内、城域网、广域网:
                广播
                单播
                广播风暴
                arp协议


        DNS
            网络连接:
                - 域名解析
                    www.bitfinex.com  127.91.64.33
                - 连接
                    sk = socket.socket()
                    sk.connect(('47.95.64.113',80))
                    ...
            问题来了,域名和IP的对应关系在哪里?
                本地:
                    Win本地电脑:
                        C:WindowsSystem32driversetchosts
                            11.11.11.11 bitifnex.com
                    Linux/Mac电脑:
                        /etc/hosts

                DNS服务器:全球顶级DNS服务器13台
                    www.bitfinex.com  127.91.64.33

            创业:
                a. 租一个服务器+公网IP
                b. 租域名
                    域名+IP解析

    四. socketserver

        注意:如果想要提高效率可以使用多线程。

        """
        pip3 install requests   # 需要安装
        """
        import threading
        import requests
        import uuid
    
        url_list = [
            'https://www3.autoimg.cn/newsdfs/g28/M05/F9/98/120x90_0_autohomecar__ChsEnluQmUmARAhAAAFES6mpmTM281.jpg',
            'https://www2.autoimg.cn/newsdfs/g28/M09/FC/06/120x90_0_autohomecar__ChcCR1uQlD6AT4P3AAGRMJX7834274.jpg',
            'https://www2.autoimg.cn/newsdfs/g3/M00/C6/A9/120x90_0_autohomecar__ChsEkVuPsdqAQz3zAAEYvWuAspI061.jpg',
        ]
    
        def task(url):
            """
            1. DNS解析,根据域名解析出IP
            2. 创建socket客户端    sk = socket.socket()
            3. 向服务端发起连接请求 sk.connect()
            4. 发送数据(我要图片) sk.send(...)
            5. 接收数据            sk.recv(8096)
            接收到数据后写入文件。
            """
            ret = requests.get(url)
            file_name = str(uuid.uuid4()) + '.jpg'
            with open(file_name, mode='wb') as f:
                f.write(ret.content)
    
        for url in url_list:
    
            t = threading.Thread(target=task,args=(url,))
            t.start()
    

    五. 线程

    import time
    import threading
    
    
    def task(n):
        print('开始执行任务:',n)
        time.sleep(10)
        print('...')
        print('任务%s 执行完毕:'%n)
    
    while True:
        name = input("请输入任务:")
        t = threading.Thread(target=task,args=(name,))
        t.start()
    

    六. uuid模块

    import uuid
    v = str(uuid.uuid4())
    print(v)
    
  • 相关阅读:
    高斯拉普拉斯算子(Laplace of Gaussian)
    Windows的TCP协议参数
    poj 1182食物链(并查集)
    linux网络体系架构
    谈谈对于企业级系统架构的理解
    Redis源码解析(1)——源码目录介绍
    在多台服务器上简单实现Redis的数据主从复制
    利用Nginx做负载均衡
    C#中的BackgroundWorker控件
    C#中的线程(四)高级话题
  • 原文地址:https://www.cnblogs.com/NachoLau/p/9601139.html
Copyright © 2011-2022 走看看