摘要:
Hash索引 (1) 它会使用到hash函数,算出一个确切的值 , 如果key发生变化. hash值也会跟着发生变化. 而且还存在着hash冲突的情况. (2) 联合索引的情况 hash(id+name) = hash值 , 不能支持 部分索引查询和范围查找. 红黑树 (1) 树太高,读取磁盘的次数 阅读全文
摘要:
HashMap需要注意以下几方面 (1) HasMap底层是用Node数组table存储数据, 它是采用懒加载的方式初始化的, 初始长度16, 加载因为0.75, 每次扩容2倍, 在扩容时,移动节点都是采用尾插法. 而JDK8之前都是采用的头插法(这里有个典型的问题,多线程可能死循环). (2) J 阅读全文
摘要:
常见算法与数据结构暴力:二分: 前提,有序 , 时间复杂度O(lgn) > 转换成数据结构: 二叉树(二叉查找树,二叉搜索, 二叉有序树)哈希: 最高效 , O(1), hash冲突 , jdk1.8 hashmap中的数据结构: 链表+红黑树(处理hash冲突的)插值索引: 搜索引擎 ,Lucen 阅读全文
摘要:
进程和线程都是由操作系统控制调度的, 协程是是函数级别的调度,可以由程序员写代码控制 python中使用async和await两个关键字来支持原生协程 # python后期使用async和await两个关键字来定义协议, 这样就可以与生成器表示区别开来, 语义也更加明确 # 底层也是使用生成器来实现 阅读全文
摘要:
def gen(): """子生成器""" yield 1 def gen1(gen): """委托生成器""" yield from gen def main(): """调用方""" g = gen() g1 = gen1(g) g1.send(None) # 启动生成器 上面的代码有3个角色, 阅读全文
摘要:
yield from 是python3.3中新增的语法, 语法结构: yield from iterable 在上一篇文章中自定义了一个my_chain函数,现在可以yield from方法对其进行精简 # 自定义一个chain def my_chain(*args, **kwargs): """注 阅读全文
摘要:
使用itertools工具类中的chain方法,可以很方便的将多个iterable对象一起遍历. 不过,对于dict类型的iterable对象,只会遍历key. from itertools import chain my_list = [1, 2, 3] my_dict = { 'name': ' 阅读全文
摘要:
使用python内置的sorted方法,可以很方便的对dict元素排序 if __name__ == '__main__': my_dict = {} my_dict['CD'] = 12 my_dict['XA'] = 60 my_dict['BJ'] = 15 my_dict['GZ'] = 1 阅读全文
摘要:
使用sort方法,可以将list中的元素按自定义属性进行排序 class Person(object): def __init__(self, name, age): self.name = name self.age = age def __str__(self): return 'name:{} 阅读全文