Windows在
%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data
Mac OS X在
~/Library/Application Support/Google/Chrome/
Linux在
$HOME/?.config/google-chrome
用编辑器打开Local State这个文件, 找到以下两行
"last_known_googleurl": "http://www.google.***/",
"last_prompted_googleurl": "http://www.google.***/",
将它们改为:
"last_known_googleurl": "http://www.google.com/",
"last_prompted_googleurl": "http://www.google.com/",
打开Chrome以后随便搜索个东西...他会提示你正在使用google.com, 要不要更换到google.***|.
选择继续使用, 大功告成! 嘿嘿
Assignment 5, 泥玛那个是什么脑残傻缺的ADT啊`! 放着Slide里这么好的三种ADT你不用啊`!!! 你跑去弄什么x-min-heap外加y-BST, 还弄个好听的名字叫Heap-tree`!!! 泥玛就是个残废啊`有木有有木有~!!! 不光残废啊, 是连TA自己都搞不懂到底该怎么用啊`!!! 连"You can slightly break the heap proerty"都说出来了...这种东西随便写写就让他过去吧`!!!!! 以后做工程真的用, 程序怎么死的都不知道啊`!!!
我们日常生活中的很多数据并不是一对一的KVP (不懂KVP的请去看, 总结四 - BST篇).
拿Slide里的例子来说, 买一台电脑, 不光要看它的CPU是什么型号, 还要看内存多大, 硬盘多大, 显卡怎么样, 价钱多少, etc. 这样的数据都是一个key对多个value.
这种情况下, 如果我需要找一台CPU 2.2GHz以上+内存4G-8G的电脑, 就需要从我的data中进行Range Search Query, 而且是2D的Range Search. 如果我在这个条件上再+要至少3T硬盘存xx...那就是3D的Range Search了.
插值查找法 Interpolation Search
- 在已知Array A大小的前提下, 假设A中的数据呈线性排列
- 用比例推测所查找值 K, 可能存在的Index I
I = Ilow + (Iupper - Ilow)(K - Klow) / (Kupper - Klow)- 如果A中的数据分布比较平均, 此法效率比BS高
- 否则相反
- 更详细的解释, 可参考: 【演算】內插搜尋法 - Interpolation Search
Gallop Search
- 先推测出K所在的范围, 然后执行BS
- 适用于数据量大的搜索. 通过减小BS的搜索范围, 优化性能.
跳跃列表 Skip Lists (我觉得最有意思的数据结构)
自排序搜索 Self-Organizing Search
- 如果我们知道某一系列数据中, 每一个item可能被访问的概率
- 依照每一项的概率对数据进行排序, 优化高概率item的访问效率
- 如果不知道可能的访问概率, 则需要...
动态排序 Dynamic Ordering
- 方法一: Move-To-Front(MTF)
- 将每次搜索到的item移到最前
- 近期内再搜索此item的时候, 效率会提高
- 方法二: Transpose
- 将每次搜索到的item与其前一项互换
- 多次访问同一item以后, 该item的排序会提前很多, 访问效率会提高