03 2023 档案
摘要:伸展树 通过 Splay/伸展操作 不断将某个节点旋转到根节点,使得整棵树仍然满足二叉查找树的性质,能够在均摊 O(logn)时间内完成插入,查找和删除操作 局部性。如刚刚被访问的节点,极有可能很快的再次被访问,下一次要访问的节点,极有可能就在刚被访问的节点附近。 伸展树是局部性原理的应用:将刚被访
阅读全文
摘要:BST 二叉搜索树 任一节点均不小于/不大于其左/右后代 BST的中序遍历序列,必然单调非降 BST的查找:O(h)。(减而治之) BST的插入:O(h)。 BST的删除:O(h)。 平衡二叉搜索树 BST的等价转化都可以视作是一系列的旋转而成 zig/zag 顺时针/逆时针 适度平衡 任一节点 左
阅读全文
摘要:计算机很在意效率,但是不能推而广之,你的人生不见得是这样的。科学与技术本来不一样,科学技术和人文也不一样,科学技术和人生也不一样。--邓俊辉
阅读全文
摘要:以对象管理资源 常见的资源包括:内存,文件描述符,互斥锁,数据库连接,图形界面中的字型和和笔刷,以及网络socket 获得资源后立刻放进管理对象 (RAII resource acquisition is initialization,资源取得时机便是初始化时机) 管理对象运用析构函数确保资源被释放
阅读全文
摘要:视c++为一个语言联邦 C Object_Oriented C++ (c with classes) Template C++ STL 宁可以编译器替换预处理器 static 成员需要一个放在实现文件的定义式。放在头文件的是declaration,放在实现文件的是defination。 对于单纯常量
阅读全文
摘要:了解C++默默编写并调用哪些函数 编译器会默默编写构造函数,拷贝构造,拷贝赋值,析构函数 有自己的构造函数,编译器不会给出默认构造函数 内含const和引用成员,或者某个base class将copy assignment 声明为private,编译器会拒绝给出拷贝赋值函数 若不想使用编译器自动生成
阅读全文
摘要:CPU使用一种“内存映射”的技术来向I/O设备发射命令,地址空间中有一块地址是为与I/O设备通信保留的 局部性原理:时间局部性,空间局部性,一个良好的计算机程序具有良好的局部性 程序的空间局部性很有趣,“抖动“描述的就是高速缓存反复加载和驱逐相同的高速缓存块的组 高速缓存为什么用中间的位来做组索引而
阅读全文