• 5.14 每日小三练


    一行代码实现删除列表中重复的值 ?

    a = [1,2,3,5,6,9,8,2,4,5,2,3]
    b = {}
    b = b.fromkeys(a)
    c = list(b.keys())
    print('去重后为:',c)

    Python是如何进行内存管理的? Python的程序会内存泄漏吗?说说有没有什么方面阻止或检测内存泄漏

    Python是如何进行内存管理的:1>引用计数:每个对象中都有ob-refcnt来做引用计数,当一个对象增加,ob-refcnt就会增加;反之减少,从而也释放一定空间;

                                                       2>标记清除:解决循环引用的问题。先按需分配,等到没有空闲内存的时候,从寄存器和程序栈上的引用出发,遍历所有对象和引用把所有能访问的打标记,最后将没有标记的对象释放掉;

                                                       3>分代技术:提高效率,提高垃圾回收的效率,按照存活时间,分成不同的集合。将内存块按照其存活时间划分为不同的集合

    Python的程序会内存泄漏吗:Python也会内存泄露,Python本身的垃圾回收机制无法回收重写了del的循环引用的对象;

    说说有没有什么方面阻止或检测内存泄漏:1>程序员管理好每个python对象的引用,尽量在不需要使用对象的时候,断开所有引用

                                                                         2>尽量少通过循环引用组织数据,可以改用weakref做弱引用或者用id之类的句柄访问对象

                                                                         3>通过gc模块的接口可以检查出每次垃圾回收有哪些对象不能自动处理,再逐个逐个处理

    哈希冲突回避算法有哪几种, 分别有什么特点?

    开放定址法:就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 ,公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1) ;

    再哈希法:有多个不同的Hash函数,当发生冲突时,使用第二个,第三个,….,等哈希函数计算地址,直到无冲突。虽然不易发生聚集,但是增加了计算时间;

    链地址法:每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以用这个单向 ;

    立公共溢出区:这种方法的基本思想是:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。

  • 相关阅读:
    30天内自动登录
    本地保存cookie
    thymeleaf 基本表达式
    适配器(adapter)与fragment之间、fragment与activity之间的通信问题
    String/Stringbuilder/StringBuffer
    if else与switch for与foreach
    iOS App 签名的原理
    iOS category内部实现原理
    iOS中的事件的产生和传递
    RunLoop
  • 原文地址:https://www.cnblogs.com/ljy123/p/12892375.html
Copyright © 2020-2023  润新知