垃圾回收机制与字符编码

  • 垃圾回收机制

    在python中,申请和释放内存空间都是由python自动完成的,在清除垃圾文件的时候有三种垃圾回收机制
    • 引用计数

      当数据值绑定一次,他的引用计数为1,当数据值的引用数据为0时,说明这个数据值没有被绑定,是个垃圾文件,就会被垃圾回收机制回收
      但有一个问题,当两个垃圾文件相互引用时,引用计数回收机制就失效了,这时候就得用上第二个垃圾回收机制了
    • 标记清除

      用于处理循环引用的问题,每过一段时间,将内存空间程序产生的所有数据值都检查一遍,检查是否存在循环引用,将检查出来的打上标记,最后一起清除
      可是每过一段时间就检查一次所有数据值,资源浪费太多,所以最后有了第三个垃圾回收机制
    • 分代回收

      为了减少资源的损耗,设置了三代管理,新数据都放在第一代里,每过5分钟检查一次,检查了三次以后如果还是有很多的引用计数,则会放到下一代
      每一代的检测频率会逐渐降低
  • 字符编码简介

    • 字符编码只有文本文件才能使用,在python里就是字符串数据类型
    • 计算机只能识别二进制数0和1
    • 我们能在计算机里打出各种文字就是因为将文字和二进制数一一对应
    • 转换的关系应该有统一的一个标准,不能每个人都不同所以有了字符编码表
  • 字符编码发展史

    • 初期

      计算机最开始由美国人发明,美国人需要让计算机能够识别英文字符,当时他们就只考虑了大小写字母、数字和英文符号,只用了1bytes就能够全部存下,所以发明除了ASCII码:用来记录英文字符和二进制数的对应关系
      在这里插入图片描述
    • 中期

      其他国家也有计算机了,也需要让计算机能够识别自己国家的文字,所以需要开发一套属于自己的编码表
      中国:GBK码,记录了中文字符,英文字符,数字与二进制数的对应关系,用1bytes存储英文字符,2bytes存储中文字符(遇到生僻字使用更多字节)
      日本:shift_JIS码,记录了日文字符,英文字符,数字与二进制数的对应关系
      韩国:Euc_kr码,记录了韩文字符,英文字符,数字与二进制数的对应关系
      此时在中国计算机的文件发给日本计算机打开,会发生乱码的情况
    • 后期

      万国码(Unicode):兼容所有国家字符,所有的字符都以2bytes以上存储
      因为所有字符都以2bytes以上存储,占用的存储空间太多了所以有了utf
      utf家族(针对于Unicode的优化版):英文采用1bytes,其他均使用3bytes(内存里边使用的Unicode,硬盘使用utf8)
  • 字符编码实操

    • ###怎么解决乱码
      使用编码的格式解码
    • 编码与解码

      编码是以指定的编码将人类的字符转换成计算机可以识别的数字
      解码是将计算机能识别的数字以指定的编码转换成人类的字符
      """字符串有内置方法能够直接转换"""
      # 1.编码
      s1 = '编码与解码'
      r1 = s1.encoed('utf8')
      print(r1)  # b'\xe7\xbc\x96\xe7\xa0\x81\xe4\xb8\x8e\xe8\xa7\xa3\xe7\xa0\x81'  开头的b是bytes的意思
      
      # 2.解码
      t1 = r1.decode('utf8')  # 只能以编码的方式解码,否则会报错
      print(t1)  # 编码与解码
      
      # 3.解释器
      """utf8出现的时间比python2晚,所以python2中默认使用的是ASCII码
      python2中想要写中文需要在开头加上文件头:
      # coding:utf8
      然后再在字符串的开头加上字母u
      """
      
  • 文件操作简介

    • 文件操作是什么

      是通过编写代码来控制文件读写
    • 什么是文件

      文件就是计算机让用户能够操作硬盘数据的快捷方式之一
    • 怎样用代码操作文件

      # 使用关键字open
      # 第一种方式
      file = open(‘路径’, r, encoding='utf8')  # 三个参数分别是文件路径,读写模式,字符编码
      print(file.read())
      file.close()  # 需要手动关闭
      # 第二种方式
      with open('路径', r, encoding='utf8') as file:
      	print(file.read())
      # 子代码执行结束后自动调用close方法
      
      """针对文件路径"""
      # 文件路径可能存在特殊含义(比如\n、\r),此时在路径字符串前加上字母r可以取消特殊含义
      
  • 练习

    	# 1.统计列表中每个数据值出现的次数并组织成字典战士
    # 	eg: l1 = ['jason','jason','kevin','oscar']
    #       结果:{'jason':2,'kevin':1,'oscar':1}
    # 	真实数据
    l1 = ['jason', 'jason', 'kevin', 'oscar', 'kevin', 'tony', 'kevin']
    d1 = {}  # 创建一个空字典保存结果
    for i in l1:  # 循环列表,拿出每一个数据值
        if i in d1:  # 判断当前数据值是否在字典里
            d1[i] += 1  # 存在则次数+1
        else:
            d1[i] = 1  # 不存在则新建,值等于1
    print(d1)
    
    
    # 2.编写员工管理系统
    #     1.添加员工信息
    #     2.修改员工薪资
    #     3.查看指定员工
    #     4.查看所有员工
    #     5.删除员工数据
    # 	 提示:用户数据有编号、姓名、年龄、岗位、薪资
    #     数据格式采用字典:思考如何精准定位具体数据>>>:用户编号的作用
    user_dict = {}
    while True:
        choice = input("""    
        1.添加员工信息
        2.修改员工薪资
        3.查看指定员工
        4.查看所有员工
        5.删除员工数据
        6.退出管理系统
        
        请输入您要使用的功能:""").strip()
        if choice == '1':
            print('\n--添加员工信息--\n')
            number = input('number:').strip()
            if not (user_dict.get(number) is None):  # 判断输入的编号是否存在
                print('该编号以占用')
                continue
            name = input('name(letter):').strip()
            age = input('age(num):').strip()
            post = input('post(letter):').strip()
            pay = input('pay(num):').strip()
            if age.isdigit() and pay.isdigit() and (not name.isdigit()) and (not post.isdigit()):  # 判断用户输入的数据格式是否正确
                user_dict[number] = {'name': name, 'age': age, 'post': post, 'pay': pay}  # 以编号为键,用户信息字典为值,保存在user_dict中
                print(f'员工{name}添加成功')
            else:
                print('\n数据格式错误')
        elif choice == '2':
            print('\n--修改员工薪资--\n')
            post_num = input('希望修改薪资员工的编号:').strip()
            if not (user_dict.get(post_num) is None):  # 判断编号对应员工是否存在
                print(f'员工姓名:{user_dict[post_num]["name"]},当前薪资:{user_dict[post_num]["pay"]}')
                set_post = input('新的薪资:').strip()
                if set_post.isdigit():  # 判断新的薪资是否是数字
                    user_dict[post_num]['pay'] = set_post
                else:
                    print('修改失败')
            else:
                print('该员工不存在')
        elif choice == '3':
            print('\n--查看指定员工--\n')
            check_num = input('想要查看员工的编号:').strip()
            if not (user_dict.get(check_num) is None):  # 判断编号对应员工是否存在
                print(f'number:{check_num}')
                for k, v in user_dict.get(check_num).items():  # 循环该员工的信息
                    print(f'{k}:{v}')
            else:
                print('该员工不存在')
        elif choice == '4':
            print('\n--查看所有员工--\n')
            for k, v in user_dict.items():  # 循环大字典,取出编号和小字典
                print(f'number:{k}')  # 先打印编号
                for k1, v1 in v.items():  # 循环小字典
                    print(f'{k1}:{v1}', end='\t')  # 打印字典内信息
                print('\n')
        elif choice == '5':
            print('\n--删除员工数据--\n')
            del_num = input('输入想要删除员工编号:')
            if not (user_dict.get(del_num) is None):  # 判断编号对应员工是否存在
                sure = input(f"是否删除以下员工name:{user_dict[del_num]['name']}(确定输入y)")  # 打印员工姓名并询问是否确定删除
                if sure.lower() == 'y':  # 如确定则删除
                    del_dict = user_dict.pop(del_num)
                    print(f'员工{del_dict["name"]}已删除')
                else:
                    print('取消删除')
    
        elif choice == '6':
            print('\n--退出管理系统--\n')
            break
        else:
            print('输入正确的数字')
    
    
3GPP无线通信协议集(中文版45份文件) cwts-reports-001系统连接模式下的层间过程.doc cwts-reports-002系统空闲模式下UE过程与连接.doc cwts-reports-002系统空闲模式下UE过程与连接模式下小区重选过程.doc cwts-reports-003无线资源管理 (RRM) 策略.doc cwts-reports-004系统无线资源管理策略.doc cwts-reports-005系统UE无线接入能力.doc cwts-specs-001名词术语.doc cwts-specs-002系统无线接口物理层技术规范:概述.doc cwts-specs-003物理信道和传输信道到物理信道的映射.doc cwts-specs-004复用与信道编码.doc cwts-specs-005扩频与调制.doc cwts-specs-006物理层过程.doc cwts-specs-007物理层测量.doc cwts-specs-008物理层提供的服务.doc cwts-specs-009MAC.doc cwts-specs-010RLC.doc cwts-specs-011PDCP.doc cwts-specs-012广播多点传送控制BMC.doc cwts-specs-013-RRC331.doc cwts-specs-014系统Iu接口技术规范-概述.doc cwts-specs-015系统Iu接口技术规范-层1.doc cwts-specs-016系统Iu接口技术规范:信令传输.doc cwts-specs-017无线接入网络应用部分(RANAP).doc cwts-specs-018Iu接口技术规范-数据传输及传输信令.doc cwts-specs-019用户平面协议.doc cwts-specs-020系统Iub接口技术规范.doc cwts-specs-021系统Iub接口技术规范:层1.doc cwts-specs-022信令传输.doc cwts-specs-023NBAP信令.doc cwts-specs-024用于公共传输信道数据流的数据传输和传输信令.doc cwts-specs-025用于公共传输信道数据流的用户平面协议.doc cwts-specs-026系统Iur接口技术规范:概述.doc cwts-specs-027层1.doc cwts-specs-028信令传输.doc cwts-specs-029RNSAP信令.doc cwts-specs-030用于公共传送信道数据流的数据传输和传输信令.doc cwts-specs-031用于公共传送信道数据流的用户平面协议.doc cwts-specs-032系统IubIur接口技术规范.doc cwts-specs-033系统Iub-Iur接口技术规范.doc cwts-specs-034.doc cwts-specs-036TD-SCDMA-RRC.doc cwts-specs-037.doc cwts-specs-038.doc cwts-specs-039.doc
ATE ATL ATM ATP ATQ ATT ATV ATX ATZ AT&C AT&D AT&F AT&S AT&Z AT&M AT&V AT&W AT+CIMI AT+COPS AT+CFUN AT+CPIN AT+CSQ AT+CPINR AT+CESQ AT+CGDCONT AT+CGDSCONT AT+CGTFT AT+CGATT AT+CGACT AT+CGDATA AT+CGREG AT+CEREG AT+CGCONTRDP AT+CGEQOSRDP AT*DIALMODE AT*AUTOAPN AT*CGDFLT AT+EPIN AT+MSTK AT+MEDCR AT*BAND AT*BANDRD AT*REGOPT AT*AU THReq AT*CGDFAUTH AT$MYFOTA AT*SELECTSIMSLOT AT+SINGLESIM ATO AT+CGMI AT+CGMM AT+CGMR AT+CGSN AT+CSCS AT+WS46 AT+DS AT+GMI AT+GMM AT+GMR AT+GSN AT+GOI AT+GCAP AT+GCI AT+ICF AT+IFC AT+IDSR AT+ASTO ATA ATD ATH AT+CSTA AT+CMOD AT+CVMOD AT+CHUP AT+CBST AT+CRLP AT+CEER AT+CRC AT+CVHU AT+CNUM AT+CREG AT+CLCK AT+CPWD AT+CLIP AT+CLIR AT+COLP AT+CDIP AT+CCFC AT+CCWA AT+CUSD AT+CHLD AT+CAOC AT+CSSN AT+CLCC AT+CPOL AT+CPLS AT+COPN AT+CNAP AT+COLR AT+CSSAC AT+CNEM AT+CPSMS AT+CEDRXS AT+CEDRXRDP AT+CCIOTOPT AT+CPAS AT+CIND AT+CPBS AT+CPBR AT+CPBF AT+CPBW AT*CPBC AT+CCLK AT+CSIM AT+CRSM AT+CACM AT+CAMM AT+CPUC AT+CCWE AT+CLAC AT+CTZU AT+CTZR AT+CGLA AT+CRLA AT+CCHO AT+CCHC AT+CUAD AT+CGPIAF AT+CISRVCC AT+CIREP AT+CEN AT+CAVIMS AT+CPNER AT+CIREG AT+CASIMS AT+CMEE AT+CGQREQ AT+CGQMIN AT+CGEQREQ AT+CGEQMIN AT+CGCMOD AT+CGPADDR AT+CGCLASS AT+CGEREP AT+CGSMS AT+CGSCONTRDP AT+CGTFTRDP AT+CGEQOS AT+CEMODE AT+CSCON AT+CIPCA AT+CNMPSD AT+CEUS AT+CEVDP AT+CMMIVT AT+CABTSR AT+CABTRDP AT+CGAPNRC AT+CDU AT+FCLASS AT+VTS AT+VTD AT+CSUEPOLICY AT+CRUEPOLICY AT+C5GREG AT+C5GQOS AT+C5GNSSAI AT+C5GPNSSAI AT+C5GNSSAIRDP AT*APPSTART AT*SETUEOSID AT*UTTEST AT+C5GCAPA AT+CWUS AT+CLADN AT+CMICO AT*overheat AT*voltagefreq AT*CDNID AT*CAG AT+C5GUSMS AT+C5GURSPQRY AT+Z5GTD AT*TSNCTRL AT+CSMS AT+CPMS AT+CMGF AT+CSMP AT+CSDH AT+CSCB AT+CSAS AT+CRES AT+CNMI AT+CMGL AT+CMGR AT+CMGS AT+CMSS AT+CMGW AT+CSCA AT+CNMA AT+CMGD AT+CMGC AT+CMMS AT AT*SLT AT*PMICREG AT*REGRW AT*RFTEMP AT*RFTEMPEX AT*SSGLPC AT*MORESMS AT*MRD_CDF AT*MRD_IMEI AT*CalInfo AT*MRD_SN AT*L1DEBUG AT*DSPINFO AT+CMUX AT*READVER AT*READCPUUID AT+RESET AT+RSTSET AT+IPR AT+DNS AT$MYPOWEROFF AT$MYSOCKETLED AT$MYGMR AT$MYCCID AT$MYNETURC AT$MYTYPE AT$MYNETCON AT$MYNETACT AT$MYIPFILTER AT$MYNETSRV AT$MYNETOPEN AT$MYNETREAD AT$MYNETWRITE AT$MYNETCLOSE AT$MYNETACK AT$MYNETACCEPT AT$MYNETCREATE AT$MYBCCH AT$MYBAND AT$MYTIMEUPDATE AT$MYLACID AT$MYGPSPOS AT$MYGETKEY AT$MYSYSINFO AT$MYSYSINFOURC AT$MYDOWNLOAD AT^SPN AT+CPIN2 AT*EPIN AT*SIMDETEC AT*EUICC AT+CWRITESIM AT*CLCK AT*MEPCG AT*ENVSIM AT*CNMA AT*RSTMEMFULL AT+CMEMFULL AT*CSCB AT*CBMCS AT*CBRAT AT+CMRSS AT+CMGSS AT+CMSMS AT+CMGMS AT*CMGF AT^LKSMSSTA AT+EEMOPT AT+EEMGINFO AT*PROD AT*POSFUN AT+ATDB AT*TGSINK AT+CGSEND AT*ICSSINK AT+VPDUS AT+VHDL AT+VECHO AT+VDUMP AT*COMMTR AT+LTEPOWER AT*LTETR AT*GSMTR AT*CISCC AT*CIIND AT*IMSSRV AT*POCCMD AT*PRXYSET AT*PRXYRSP AT*CHAPAUTH AT*WIFICTRL AT*NETACT AT*NETREF AT*NETDNS AT*NETIF AT*NETIFCM AT*MPSAPN AT*COMCFG AT*IMLCONFIG AT*ENVCFG AT+ECHUPVT AT$VTS AT*DIALE AT*ECCLIST AT*IMSSRV AT*POCCMD AT*PRXYSET AT*PRXYRSP AT*CHAPAUTH AT*WIFICTRL AT*NETACT AT*NETREF AT*NETDNS AT*NETIF AT*NETIFCM AT*MPSAPN AT*COMCFG AT*IMLCONFIG AT*ENVCFG AT+ECHUPVT AT$VTS AT*DIALE AT*ECCLIST AT*CSCS AT*CCIREG AT^CACAP AT+GETIP AT*NVMFLUSH AT+PEER AT*REJCAUSE AT*CFUN AT*CTZR AT*ADMINDATA AT+CGCI AT+CGOI AT*BANDIND AT*POWERIND AT*FASTDORM AT*CELL AT*BLACKCELL AT+ERGA AT+ERTCA AT*FILETEST AT*CGSN AT*MODEMRESET AT*HTCCTO AT*EHSDPA AT*FDY AT^SYSINFO AT*NASCHK AT+BGLTEPLMN AT*GATR AT*GRIP AT*CGMR AT*CGATT AT*LTECOEX AT*CSQ AT+CPLMNS AT*URSLCT AT*SECCAP AT+OPERCFG AT*PSDC AT+MPBK AT+TRUSTNUM AT+CHKTRUSTNUM AT*FDNBYPASS AT+LOG AT*LWIPCTRL AT*NTP AT*MTU AT*ISIMAID AT^HVER AT+ZDON AT*ASRCOPS AT*ICCID AT*SIMPOLL AT*REGMODE AT+CELLINFO AT*VER AT+PACSP AT*GETIP AT*ROAMINGDATA AT*AUTOTZ AT*DNSCFG AT+AOPS AT+AOPSCFG AT+MSCLASS AT*DELFBPLMN AT*COMFEATURE AT*RESENDPARA AT+CMER AT*CSCO AT+APQUIT AT+wifi AT+sdiophase AT+MIFIMAC AT+FUNC AT+MIFISSID AT+WIFIMIXEDKEY AT+WIFIFUN AT+FLASHBP AT*MRD_SECOND_SN AT+GETCHIPUID AT*VIRTUALICCID AT+UEICCID 以上是我通过AT+CLAC指令返回的信息,给我整理下每个指令的含义
最新发布
12-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值