zoukankan      html  css  js  c++  java
  • 易错易忘点

    1、python2与python3的区别

    1、默认字符编码
    python2:ascii
    python3: utf-8
        
    2、print
    python2:
        1、打印时可加括号,也可不加
        2、打印一个值,输出无括号
        3、打印多个值,若打印时加了括号,输出也有括号,并且有逗号分隔,即元组形式
        4、打印多个值,若打印时没加括号,输出也没括号,并且没有逗号分隔,与python3一致
        5、python3中,打印时必须要加括号
    3、input
    	1、python2中有两种打印语句:input和rawinput
        2、python2中input接收用户输入时,需要指定数据类型,input接收的就是该类型的数据
        3、python2中rawinput接收用户输入时,不需要指定类型,全部接收为字符串
        4、python3中只有input,不需要指定类型,全部接收为字符串
    4、字符串
    	1、py2中:unicode类型表示字符串序列,str表示字节序列
        2、py3中str表示字符串序列,byte类型表示字节序列
    5、global与nonlocal
    	1、py3中新增了关键字nonlocal,声明变量为多层嵌套函数整个局部
    

    2、装饰器

    1、本质是闭包函数
    2、使用闭包的思想,生成一个新的同名函数,不同的名称空间
    3、不改变源代码,不改变调用方式
    4、新的名称空间中,在执行真正的原函数代码之前,必须执行添加额代码块,可以是判断,可以是新增的功能
    4、使用新的同名函数,不会改变调用方式,并且真正的函数代码没有改变
    

    3、多线程、多进程

    IO密集型使用多线程编程
    计算密集型使用多进程编程
    使用线程池、进程池设定最大线程、进程数量
    使用互斥锁保证数据安全,即数据完整和数据同步
    

    4、GIL

    1、全局解释器锁,本质是线程互斥锁
    2、每个进程内都有一把
    3、由于进程内线程共享全局资源,为了保证共享数据的完整性和状态同步,GIL使得同一时间只有一个线程能够访问共享数据
    

    5、OSI七层协议

    应用层	HTTP,FTP,NFS
    表示层	Telnet,SNMP
    会话层	SMTP,DNS
    传输层	TCP,UDP
    网络层	IP,ICMP,ARP
    数据链路层	Ethernet,PPP,SLIP,FDDI
    物理层	IEEE 802.1A,IEEE 8O2.11
    

    6、HTTP协议

    作用
    	超文本传输协议,规定了传输数据的数据格式
    四大特征
    	1、基于TCP/IP作用于应用层之上的协议
        2、基于请求响应
        3、无状态:服务器不保留客户端的任何状态,降低服务器的记忆负担,提高响应速度
        4、无连接:每次连接只处理一个请求,响应完成,即断开连接,大大降低了www服务器的执行效率
       	(长连接:可以保持连接,连续发送多个数据包,当没有数据时,需要双方发送链路检测包)
    
    数据格式
    	1、请求格式
        	请求首行(请求方式,协议版本)
         	请求头
         	
    
         	请求体
    	2、响应格式 
         	响应首行
         	响应头
         	
    
         	响应体
             
    数字编码
    	将文字信息对应成数字编号,便于传输和编程,自定义对应关系
        1**:服务端成功受到请求,正在处理,客户端可以继续提交其他数据
        2**:服务端成功响应了数据
        3**:重定向
        4**:客户端错误,如404请求资源不存在,403当前不符合某一些条件,拒绝访问
        5**:服务器内部错误
    

    7、垃圾回收机制

    存储机制:
    	栈区:存储变量名和变量值内存地址关联关系
        堆区:存储变量值
        内存管理回收的是堆区的内容
    
    1、引用计数
    	变量值引用计数为0,变量值所占的内存会被释放
    2、标记清除
    	循环引用:
        	1、容器对象包含其他对象,存储的只是其他对象的内存地址,添加引用而已
            2、循环引用指的就是容器对象互相包含,即互相引用了,那么当栈区变量名与内存关联被删除后,它们的值存储了对方的引用,即引用计数不为0,然后又跟其他的任何对象不产生关联。
    		3、容器对象,如列表,字典,元组,集合,类等都可以包含其他对象的引用,都可能产生循环引用问题
    	标记清除:
        	1、使用GC算法
            2、标记:遍历所有的GC Roots对象(栈区中的所有内容或者线程),将所有GC Roots对象能直接或者间接访问到的d对象标记为存活状态,其余的均为非存活状态,应该被清除
            3、清除:遍历堆中所有的对象,将没有标记的对象全部清除
    2、分代回收
    	背景:基于引用计数的回收机制,每次回收内存,都需要把所有对象的引用计数都遍历一遍,非常耗时
    	分代:指的是根据变量在多次扫描后,都没有被回收的变量,gc机制将其扫描频率降低,这样多次分级之后,大大减少了遍历的变量个数,节省了时间
        回收:依然是,引用计数为0就回收内存
    

    8、进制转换

    bin()  # 将十进制转换成二进制
    oct()  # 将十进制转换成八进制
    hex()  # 将十进制进制转换成十六进制
    int(value,num)  # 将num进制的value转换成十进制
    

    9、eval与exec的区别

    ''''
    相同点:将字符串的引号去掉,执行里面的代码
    不同点:eval不能识别逻辑代码
    '''
    # 例如:
    code1 = "print('hello')"
    code2 = "for i in range(10):print(i)"
    eval(code1)
    exec(code2)
    '''
    hello
    hello
    '''
    
    eval(code2)  # 报错
    exec(code2)
    
    
  • 相关阅读:
    dojo 官方翻译 dojo/string 版本1.10
    dojo 官方翻译 dojo/_base/lang 版本1.10
    dojo 官方翻译 dojo/_base/array 版本1.10
    flex 数字上标
    delphi 权限控制(delphi TActionList方案)
    DELPHI 字符串与日期格式互转
    Delphi格式化函数Format、FormatDateTime和FormatFloat详解
    如何优雅的给TDatetimePicker控件赋值(Delphi)
    ListView中用鼠标拖动各项上下移动的问题。(100分)
    Delphi中实现文件拷贝的三种方法
  • 原文地址:https://www.cnblogs.com/WM2019/p/11872947.html
Copyright © 2011-2022 走看看