其他

垃圾回收机制

  1. 引用计数:根据变量值的引用数量
  2. 标记清除:用来解决循环引用带来的内存泄漏问题.
    • 标记:从根节点出发遍历对象,对能访问到对象值的打上标记,表示对象可达
    • 清除:对那些没有标记的对象进行回收
  3. 分代回收:降低引用计数的扫描频率,提高垃圾回收的效率,新生代老年代,新生代分为伊甸区幸存区。对象刚创建时存在于伊甸区,经过一次回收如果对象还存在时,放入幸存区,幸存区经过多次(一般为15次)回收依然存在,则放入老年代,回收时先回收新生代,如果内存足够时则不扫描老年代,否则扫描老年代

深浅拷贝

  1. 浅拷贝:是把原列表第一层的内存地址不加区分完全copy一份给新列表,修改可变类型中的值,影响原数据
    # python
    list1=[
     'egon',
     'lxx',
     [1,2]
    ]
    
    list3=list1.copy()
    
  2. 深拷贝:为了使得新列表与原列表的改操作完全独立开,区分开可变类型与不可变类型的copy机制
    import copy # 引入深拷贝模块
    list3 = copy.deepcopy(list1)
    

队列与堆栈

  1. 队列:FIFO,先进先出

    l = []
    
    # 入队
    l.append('first')
    l.append('second')
    l.append('thrid')
    
    # 出队
    l.pop(0)
    l.pop(0)
    l.pop(0)
    
  2. 堆栈:LIFO,后进先出

    l = []
    
    # 入栈
    l.append('first')
    l.append('second')
    l.append('thrid')
    
    # 出栈
    l.pop()
    l.pop()
    l.pop()
    

字符编码

  1. ACSII码表
  2. GBK、Shift-JIS
  3. unicode:
    1. 兼容万国字符、与万国字符都有对应关系
    2. 采用16位(8位=1Bytes)偏僻字采用4字节、8字节
  4. utf-8:unicode transform format-8
    英文->1Bytes、汉字->3Bytes

内存规定使用的是unicode,我们可以改变的是存入硬盘采用的格式unicode-gbk/unicode-shif-jis/unicode-utf-8

posted @ 2022-10-11 23:39  转角90  阅读(76)  评论(0编辑  收藏  举报