摘要:原文: https://juejin.im/post/6844903848587296781 这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。 我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通 阅读全文
posted @ 2020-10-21 17:09 sunsky303 阅读(38) 评论(0) 推荐(0) 编辑
摘要:树的基本概念 为了完整的建立有关树的基本概念,以下给出两种树的定义,即自由树和有根 术语 节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一棵树中,最大的节点的度称为树的度;叶节点或终端节点:度为零的节点;非终端节点或分支节点:度不为零的节点;双亲节点或父节点:若一个结点含有子节点,则这个 阅读全文
posted @ 2020-10-21 11:36 sunsky303 阅读(21) 评论(0) 推荐(0) 编辑
摘要:堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。 堆的常用方法: 构建优先队列 支持堆排序 快速找出一个集合中的最小值(或者最大值) 在朋友面前装逼 堆属性 堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。 在最大堆中,父节 阅读全文
posted @ 2020-10-21 11:28 sunsky303 阅读(37) 评论(0) 推荐(0) 编辑
摘要:知乎上有一个问题是这样的: 堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序? 昨天刚好写了一篇关于快排优化的文章,今天再多做一个比较吧。首先先看一个排序算法图: 排序方法平均情况最 阅读全文
posted @ 2020-10-21 11:04 sunsky303 阅读(32) 评论(0) 推荐(0) 编辑
摘要:在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Addre 阅读全文
posted @ 2020-10-20 18:26 sunsky303 阅读(14) 评论(0) 推荐(0) 编辑
摘要:什么是hash冲突? 假设hash表的大小为9(即有9个槽),现在要把一串数据存到表里:5,28,19,15,20,33,12,17,10 简单计算一下:hash(5)=5, 所以数据5应该放在hash表的第5个槽里;hash(28)=1,所以数据28应该放在hash表的第1个槽里;hash(19) 阅读全文
posted @ 2020-10-20 15:54 sunsky303 阅读(16) 评论(0) 推荐(0) 编辑
摘要:前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是 阅读全文
posted @ 2020-10-20 15:36 sunsky303 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目: 某酒主人要宴请客人,他共有1000瓶酒,其中1瓶有毒。一旦喝了毒酒后,会在一周后发作,现在如果我们用试纸进行检测,滴了毒酒 的试纸会在1周后变色,问最少需要多少张试纸可以检测出哪瓶有毒? 解答: 10张试纸即可。 10张试纸按从左到右的顺序一字排好,每瓶酒也编上号1到1000,并把编号转换成 阅读全文
posted @ 2020-10-20 14:18 sunsky303 阅读(31) 评论(0) 推荐(0) 编辑
摘要:为什么要内存逃逸分析 C/C++中动态分配的内存需要我们手动释放,导致猿们平时在写程序时,如履薄冰。这样做有他的好处:程序员可以完全掌控内存。但是缺点也是很多的:经常出现忘记释放内存,导致内存泄露。所以,很多现代语言都加上了垃圾回收机制。 Go的垃圾回收,让堆和栈对程序员保持透明。真正解放了程序员的 阅读全文
posted @ 2020-10-19 11:48 sunsky303 阅读(26) 评论(0) 推荐(0) 编辑
摘要:总结了10条Linux下提高效率的小技巧,并与Vim对应命令进行对比。 (1) <Ctrl a>:Linux 命令行下执行该命令,将光标移动到行首 (a 是 ahead 的缩写) 快速移动光标,不仅是在 Vim 下的高优需求,也是 Linux 命令行下的常见工作场景。 例如,在 Linux 命令行下 阅读全文
posted @ 2020-09-03 10:44 sunsky303 阅读(84) 评论(0) 推荐(0) 编辑
显示搜索