zoukankan      html  css  js  c++  java
  • 垃圾回收机制,正则模块

    一、垃圾回收机制
    1、不能被程序访问到的数据,就称之为垃圾
    2、引用计数:每一次对值地址的引用都可以使该值得引用计数加1
    每一次对值地址的释放都可以使该值得引用计数减一
    当一个值的引用计数为0时,该值就会被系统的垃圾回收机制回收
    3、循环导入:循环导入会导致某些值得引用计数永远大于0
    ls1 = [666]
    ls2 = [888]
    ls1.append(ls2)
    ls2.append(ls1)
    print(ls1) [666, [888, [...]]]
    print(ls2) [888, [666, [...]]]
    4、标记删除:解决了循环导入的垃圾回收
    标记:标记的过程其实就是遍历栈区中所有内容或者线程(GC Roots 对象),
    然后将所有GC Roots的对象可以直接或间接访问到的对象标记为存活的
    对象,存放到新的内存空间中
    删除:遍历堆中所有对象,将之前内容全部清除(之前标记的存活状态的值已经移到新的内存空间中)
    5、分代回收
    分代:指的是根据存活时间来为变量划分不同等级(也就是不同的代)

    新定义的变量,放到新生代这个等级中,假设每隔一分钟扫描新生代一次,如果发现变量依然被引用,那么
    该对象的权重(权重本质就是个整数)加一,当变量的权重大于某个设定的值(假设为3),会将它移到更高
    一级的青春代,青春代的gc扫描的频率低于新生代(扫描时间间隔更长),假设5分钟扫描青春代一次,这样
    每次gc需要扫描的变量的总个数就变少了,节省了扫描的总时间,接下来,青春代中的对象,也会以同样的方式
    被移到老年代中,被垃圾回收机制扫描的频率越低

    回收:依然使用引用计数作为回收的依据

    二、正则
    正则就是带语法的字符串,用来匹配目标字符串得到想要的字符串结果
    1、单个字符
    d == [0-9] 匹配一个数字字符
    D == [^0-9] 匹配一个非数字字符
    w == 字母+数字+_ 匹配数字字母下划线(包括中文)
    W == 非(字母+数字+_) 匹配非数字字母下划线
    [0-9A-Za-z] == 所有字母+数字
    . == 匹配所有单个字符(换行符除外)
    S == 匹配所有可见字符
    s == 匹配所有不可见字符 包括空格、制表符、换行符等
    2、多个字符
    z == {0,} {n,}贪婪匹配,尽可能多的匹配
    z == {1,2} {n,m}n到m,贪婪匹配,尽可能多的匹配
    zo* == zo{,n} 0到n个,贪婪匹配,尽可能多的匹配(以z开头,可以匹配z,也可以匹配zo,zoo,zooo...)
    zo+ == zo{1,} 1到n个,贪婪匹配,尽可能多的匹配(必须以zo开头,不能匹配z)
    zo? == zo{0,1} 0到1个,贪婪匹配,尽可能多的匹配(只能匹配z,zo)
    zo+? == zo{1,n} 1到n个,非贪婪匹配,尽可能少的匹配(只匹配zo)
    zo*? == zo{0,n} 0到n个,非贪婪匹配,尽可能少的匹配
    应用场景
    匹配多个zo: zozozozo (?:zo){1,}
    3、多行
    ^:以什么开头
    $:以什么结尾
    结合flags = re.M 可以按 来完成多行匹配
    re.S:将 也能被.匹配
    re.I:不区分大小写
    4、分组
    1、从左往右数(进行编号,自己的分组从1开始,group(0)代表匹配到的目标整体)
    2、(?:...):取消所属分组,()就是普通(),可以将里面的信息作为整体包裹,但不产生分组
    regexp = re.compile('(?:(?:http://)(.+)/)') 生成正则对象
    target = regexp.match('http://www.baidu.com/')
    print(target.group(1)) #www.baidu.com
    5、拆分
    print(re.split('s','123 456 789 000')) #['123', '456', '789', '000']
    6、替换
    1、不参与匹配的原样带下
    2、参与匹配的都会被替换为指定字符串
    3、在指定字符串值 um拿到具体分组
    4、其他字符串信息都是原样字符串
  • 相关阅读:
    MySQL (一)(未完成)
    HTML 学习笔记 CSS3 (边框)
    HTML 学习笔记 JavaScript (函数)
    HTML 学习笔记 JavaScript (对象)
    HTML 学习笔记 JavaScript (变量)
    HTML 学习笔记 JavaScript (实现)
    HTML 学习笔记 JavaScript(简介)
    iOS RunTime运行时(1):类与对象
    iOS UITableView 分割线从零开始
    HTML 学习笔记 CSS(选择器4)
  • 原文地址:https://www.cnblogs.com/yanminggang/p/10718005.html
Copyright © 2011-2022 走看看