自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

卷毛迷你猪的博客

踏踏实实写代码

  • 博客(30)
  • 收藏
  • 关注

原创 小肥柴的Hadoop之旅

从门外汉边学边上课,到入门的菜鸡,对如何正确的学习Hadoop有了一点点自己的理解和感想,遂做成一个教程方便同学们在线学习(努力避免误人子弟),同时与网友们分享交流。(2)学习Hadoop要有较为扎实的Java语言、数据结构与算法、计算机网络、软件工程(特别是各种设计模式)和操作系统基础知识,能做到心中有概念,现学现用即可。(4)多看源码、多思考、多验证、多练习;【声明】我的博客内容是参考了《Hadoop权威指南》和《马士兵版Hadoop》教程的内容,根据个人的理解分享的知识,如有侵权,请及时联系本人。

2023-12-28 13:29:33 786

原创 小肥柴慢慢手写数据结构(C篇)(0-开篇的话)

许多低年级计算机类专业的朋友受限于各类原因,编程基础不扎实,学《数据结构》/算法课,直接上清华严版的数据结构很容易复现从入门到翻车最后放弃的流程。自己翻看一些经典教材和资料后,觉得还是从零开始对照原理手动编出代码后,再返回去看严版数据结构这本工具书,适度刷刷算法题 (比如Leecode),或许对大家学习DS这门课能有帮助和提升。

2020-10-23 08:49:16 1117 2

原创 小肥柴慢慢手写数据结构(C篇)(5-5 Huffuman编码)

(1)Huffman编码的应用非常广泛。(2)Huffman编码是一种变长的编码,可配合类似树状的数据结构存储编码表。(3)对于森林这个概念,我们没有介绍,直接在实践中学习。【吐槽】C的传值解决方法不太优雅。

2024-04-09 13:57:02 1004

原创 小肥柴慢慢手写数据结构(C篇)(5-4 中场小结)

主线任务先告一段落,对初学者我个人建议先绕后面的章节学习散列、堆、并查集和图论初步,因为从这儿开始之后的数据结构的复杂度(包括具体实现和数学推导)和学习难度陡增,需要投入更多的精力反复琢磨;但正式这些复杂的工具却往往是实际工程应用中最实用的基础部件,且在面试中属于面试官摸底的必选题库,属于典型的手搓费劲、用起来真香。兜兜转转,咱们的讨论还是回到了第一次讨论数据结构的一个点,即:“数据的存储与组织”,算是扣题了。(1)它不仅能通过计算key值实现数据快速的查、取和尽可能的均匀、分散的存储。

2024-02-18 15:38:17 840 1

原创 小肥柴慢慢手写数据结构(C篇)(5-3 树的遍历)

小肥柴慢慢学习数据结构笔记(C篇)(5-3 树的遍历)目录5-10 BST/AVL的前序、中序和后序遍历5-10-1 直观理解有序二叉树的3种遍历5-10-2 更加一般的规律5-11 再看二叉树的前/中/后序遍历5-11-1 经典问题热身5-11-2 二叉树递归框架5-11-3 再看3种遍历5-11-4 尝试解决复杂问题5-11-5 深度优先搜索(DFS)与二叉树遍历浅谈5-12 层序遍历5-12-1 层序遍历的原理5-12-2 层序遍历队列实现5-12-3 层序遍历数组实现5-12-4 层序遍历与广度优先

2024-01-19 18:45:19 1294

原创 1.2 Hadoop概述

通过前一篇帖子的介绍,特别是问题思考部分的说明,我们大致能够感受到为何需要新的技术体系来解决大数据问题,接下来咱们继续梳理细节。step_0 传统方案既贵又搞不定大数据问题。(1)传统数据的处理模式:用户+集中式系统+关系型数据库优点是架构相对简单,但缺陷也十分明显:1)集中式的存储,集中式的计算,中心系统的工作十分繁忙。2)随着数据和业务的不断增长,往往需要购置更高配置的设备来满足这些需求。关键在于:高配置的机器好贵的!!!配套设施好贵的!!!维护人工好贵的!!!

2024-01-08 13:45:15 1224

原创 1.1 理解大数据(2)

step_0 大数据定义【《大数据算法设计分析》】:通常来讲大数据(Big Data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。对这段定义的理解重点在加粗的两处:(1)“一定时间范围内”:这半句话其实揭示了一个事实,即很多大数据问题不是无法求解,而是无法在有限时间内高效的求解!==> 若非要上升到理论视角,那就是NP问题的讨论。

2023-12-29 19:30:38 963

原创 1.1 理解大数据(1)

e.g6:全国铁路5T系统每天采集90.3TB(1TB≈1021B)的图片、2.1TB温度数据、15.6TB的音频数据、3.8TB的运行状态数据,每年产生总计40.8PB的数据。(3)我们在学习一门新技术时,应该静下心来,寻找内在演化规律,才能抓住本质,切莫人云亦云,仅看他人的读书笔记或者简化版教程往往会成为半吊子,也是典型的中式苏俄学习法的弊端。【结论】面对海量数据的存储和计算,以往的处理手段不再有效,需要重新思考解决问题的方案,甚至整理出一套的理论去指导如何进行可靠的大数据存储和高校的大数据计算。

2023-12-28 21:13:21 947

原创 小肥柴慢慢手写数据结构(C篇)(5-2 AVL树)

小肥柴慢慢学习数据结构笔记(C篇)(5-2 AVL树目录5-5 AVL出现的原因5-5-1 平衡树5-5-2 平衡二叉树的具体案例5-6 AVL平衡策略的讨论5-7 不使用平衡因子的实现(黑皮书,训练思维)5-8 使用平衡因子的实现(更加常见的实现方法)5-9 一些数学讨论参考文献目录5-5 AVL出现的原因5-5-1 平衡树(1)设想如下场景:使用之前实现的BST,从空树开始向其中插入如下序列n1,n2,...nkn_1,n_2, ... n_kn1​,n2​,...nk​,且ni−1<ni

2023-12-26 23:49:06 1292

原创 小肥柴慢慢手写数据结构(C篇)(5-1-2 BST的相关操作讨论)

(1)为了方便编码实现上述4个问题的解决方案,且考虑到黑皮书中有关key的描述,我们决定将BST的节点struct升级,引入键key,值value(简记为val)的概念,并在节点中存储以当前节点为根的子树的所有节点数(N)i.按照常理,最小key节点肯定左枝(left),但如果当前节点T没有左枝,因为右枝(right)所有节点key值均大于当前节点,那当前节点T就是需要删除的最小key节点,删除之后直接返回右枝即可。如果要实现这个操作,必然需要知晓当前节点为根的子树的总节点数。(姑且称之为range操作)

2023-12-25 20:42:44 1227

原创 小肥柴慢慢手写数据结构(C篇)(5-1 二叉搜索树)

在前面的学习中,我们讨论的数据结构一般操作的时间复杂度在O(n)级别;于是人们开始思考:是否能够设计一种不同于已有的数据结构(线性表)去实现更高效的操作呢? 答案自然是树了。

2023-12-06 10:00:53 1114

原创 小肥柴慢慢手写数据结构(0-2 经典问题)

小肥柴慢慢手写数据结构(0-2 经典问题)目录0-5 讨论问题的初衷0-6 问题(1)最大公约数问题(GCD,欧几里得算法)0-7 问题(2)数值的整数次方(幂运算)0-8 问题(3)斐波那契数列0-9 问题(4)最大子序列和(重要的切入点)0-10 小结目录0-5 讨论问题的初衷(1)讨论问题的范围:(黑皮书第1、2章)查询、递归、动态规划案例。(2)讨论问题的目的:通过经典问题帮助大家找回编程感觉。(3)大致感受一下课程学习的真实难度,对黑皮书中的案例做出补充和优化。【注】相关复杂度分析结果

2023-11-29 12:28:08 923

原创 小肥柴慢慢手写数据结构(0-1 基础知识)

个人十分认可《计算机程序设计艺术(第1卷)》中的描述,因为它直接点明了what-why-how中的前两项,特别是“为什么咱们计算机大类专业的同学(或者807/808)必须要学习《数据结构》和《算法》这两个项目的相关课程”这个核心问题的源头。(4)不要太过于纠结算法理论部分的研究,等有闲暇时光了,慢慢的找对应的辅助教程一点一点的磨《算法导论》和网上的算法OJ题;(2)在完成(1)的基础上,踏踏实实的沿用参考教材(黑皮书),尽量依靠自己完成对应(1)的编码实现;最后再给出挑选过的有意义的学习链接。

2023-11-27 15:44:01 171

原创 小肥柴慢慢学习数据结构笔记(Java篇)(3-1 栈Stack(Array实现))

还是老博主(HelloWorld_EE),但Stack的实现比较简单,从1.0开始借助Vector实现的。(4)上代码:ArrayStack.java。(2)上代码:Array.java。(3)上代码:Stack.java。注:代码参考刘大佬的github。(1)明确需要实现的类。

2023-11-23 20:07:03 59

原创 小肥柴慢慢手写数据结构(C篇)(4-2 队列应用)

(2)但看来看去,觉得2021年我抛出的一些思路还是正确的,并在此丰富以下表达出来:数据结构的学习,核心是设计思想的学习,训练包括设计思想的编码落地和解决实际问题算法变现,绝对不能硬上。(3)编码上JDK的实现思路很清晰,没有刻意强调list为“空数据”链表的特例,当然也做了合适的处理,例如下面 if(oldFirst == NULL)处的注释:操作时总是围绕newNode展开,这是一个不易出错的编写方法。(2)手动挡数组实现双端队列(单调队列) ==> 这个重点讨论,毕竟咱们的实现太臭了。

2023-11-23 18:34:33 206

原创 小肥柴慢慢手写数据结构(C篇)(4-1 队列Queue)

小肥柴慢慢手写数据结构(C篇)(3-4 队列Queue)目录3-6 括号匹配(平衡符号)目录3-6 括号匹配(平衡符号)在黑皮书P52中,这个问题被称为“平衡符号”,而在严版教材P49中设为3.2.2 括号匹配的检验,问题本质是一样的。【问题描述】编译器会检查当前代码中括号是否都能成对出现,否则会造成编译问题,也就是说:“[()]”是合法的,而“[(])”是非法的。【思考】这个问题明显可以用栈去解决:每次从被检测数组中取出一个元素,(1)如果是括号,则同栈顶元素比较,如果两个元素(都是括号)能匹配

2021-10-25 22:39:38 506 2

原创 小肥柴慢慢手写数据结构(C篇)(3-2 Stack应用举例)

小肥柴慢慢手写数据结构(C篇)(3-2 Stack应用举例)目录3-6 括号匹配(平衡符号)3-7 计算器(后缀表达式)3-8 迷宫问题(其实可以不用栈)3-9 最小栈(双栈的第一次使用)3-10 单调栈(正向栈和反向栈)目录3-6 括号匹配(平衡符号)在黑皮书P52中,这个问题被称为“平衡符号”,而在严版教材P49中设为3.2.2 括号匹配的检验,问题本质是一样的。【问题描述】编译器会检查当前代码中括号是否都能成对出现,否则会造成编译问题,也就是说:“[()]”是合法的,而“[(])”是非法的。

2021-10-18 00:11:41 554

原创 小肥柴慢慢手写数据结构(C篇)(3-1 Stack栈简介)

小肥柴慢慢手写数据结构(C篇)(3-1 Stack栈)目录3-1 栈的概念3-2 栈的动态数组实现3-3 栈的链表实现3-4 时间复杂度3-5 实际项目案例目录3-1 栈的概念3-2 栈的动态数组实现使用之前实现的动态数组,要点如下:(1)仅在数组尾部进行push和pop操作;(2)动态数组的标记topIndex标记top元素;(3)pop操作并没有将元素真正剔除出数组,只是使用topIndex屏蔽了后续元素;(4)push操作时,若现有数组满员,扩容;(5)pop操作时现有数组使用元素低

2021-01-22 15:16:46 458 1

原创 小肥柴慢慢手写数据结构(C篇)(2-7 多项式)

小肥柴慢慢手写数据结构(C篇)(2-7 多项式)目录2-26 多项式数据结构分析2-27 解决问题的自强方案2-27-1 设计思路2-27-2 具体代码实现2-27-3 简单的讨论2-28 严版教材解决方案2-29 浙大版数据结构课程解决方案目录2-26 多项式数据结构分析多项式形式p(n)=anxn+an−1xn−1+...+a2x2+a1x+a0{p(n)}={a_n}x^{n}+{a_n-1}x^{n-1}+...+{a_2}x^{2}+{a_1}x+{a_0}p(n)=an​xn+an​−

2020-12-24 22:54:05 235 1

原创 小肥柴慢慢手写数据结构(C篇)(2-6 双链表 DoubleLinkedList)

小肥柴慢慢手写数据结构(C篇)(2-6 双链表 DoubleLinkedList)目录2-20 双链表的概念2-20-1 为什么需要双链表2-20-2 双链表样式2-21 朴素的ADT2-22 严版教材的相关讨论2-23 黑皮书的相关讨论2-24 Linux链表源码解析目录2-20 双链表的概念2-20-1 为什么需要双链表还是那句话:任何数据结构都有自己诞生的特定场合,是对某种指定功能的特型优化!脱离应用场景单独讨论某个数据结构是不合适的。那么为什么会产生链表呢?(1)某些场景下我们希望获得一

2020-12-08 15:23:25 273

原创 小肥柴慢慢手写数据结构(C篇)(2-5 SkipList 跳表)

小肥柴慢慢手写数据结构(C篇)(2-5 跳表)目录2-14 跳表(skip list)的概念2-15 参考论文的实现2-15-1 初始化2-15-2 插入节点2-15-3 查询(这个才是我们想要的核心功能)2-15-4 打印2-15-5 删除节点2-15-6 清空2-15-7 完整代码2-16 复杂度分析2-16-1 时间复杂度2-16-2 空间复杂度2-17 跳表的另一种实现2-18 重要的应用----Redis2-18 小结目录我在网上传播的答案中,找了一个相对简单的实现,方便手写。2-14 跳表

2020-12-02 16:22:38 360

原创 小肥柴慢慢学习数据结构笔记(Java篇)(2-1 单链表LinkedList)

小肥柴慢慢学习数据结构笔记(Java篇)(2-1 单链表LinkedList)目录2-1 上代码2-2 代码细节2-3 源码阅读2-4 总结目录在 小肥柴慢慢手写数据结构(C篇)(2-1 单链表 SingleLinkedList self版实现(1))中我们实现了C版的单链表,后又学习了反转、快慢指针等知识点,还对比了严版教材的实现,现在用Java再写一遍,练习OOP。注:代码参考刘大佬的github2-1 上代码MyLinkedList.javapublic class MyLinkedL

2020-11-17 13:07:48 147

原创 小肥柴慢慢手写数据结构(C篇)(2-4 单链表 严版教材实现浅析)

小肥柴慢慢手写数据结构(C篇)(2-4 单链表 严版教材实现浅析)目录2-11 单链表完整代码2-11-1 头文件c2-5.h2-11-2 具体实现bo2-6.cpp2-11-3 测试和调用main2-6.cpp2-12 循环单链表完整代码2-12-1 头文件c2-2.h2-12-2 具体实现bo2-4.cpp2-13 静态链表2-13 小结目录我在网上传播的答案中,找了一个相对简单的实现,方便手写。2-11 单链表完整代码2-11-1 头文件c2-5.h这是严版教材中较为实用的一个实现方案,抱佛

2020-11-15 12:01:31 275

原创 小肥柴慢慢手写数据结构(C篇) (2-3 单链表 SingleLinkedList self版实现(3)--循环链表与快慢指针)

小肥柴慢慢手写数据结构(C篇)(2-3 单链表 SingleLinkedList self版实现3--循环链表与快慢指针目录2-10 循环链表2-10-1 循环链表的关键2-10-2 具体代码实现2-11 快慢指针2-11-1 快慢指针的概念2-11-2 常用解题场景目录2-10 循环链表2-10-1 循环链表的关键2-10-2 具体代码实现2-11 快慢指针2-11-1 快慢指针的概念2-11-2 常用解题场景参考:[1] 单链表反转详解(4种算法实现)...

2020-11-15 00:26:23 313

原创 小肥柴慢慢手写数据结构(C篇)(2-2 单链表 SingleLinkedList self版实现(2)--链表反转与head/tail讨论)

小肥柴慢慢手写数据结构(C篇)(2-2 单链表 SingleLinkedList self版实现--链表反转与head/tail讨论)目录2-5 啥是链表反转?2-6 常见的反转四种方法2-7 head与tail的讨论2-8 总结与反思目录2-5 啥是链表反转?如图所示,就是把原来的链表逆序重新组装起来。建议学习时请遵循:“先画图,弄清步骤再写代码”的原则,一定不能死背代码,要靠自己把反转逻辑推导出来。2-6 常见的反转四种方法迭代反转画图,考虑仅完成部分节点反转的状态:设当前需要反转的

2020-11-08 20:50:37 854

原创 小肥柴慢慢手写数据结构(C篇)(2-1 单链表 SingleLinkedList self版实现(1))

小肥柴慢慢手写数据结构(C篇)(2-1 单链表 SingleLinkedList self版实现)目录2-1 为啥要有链表2-2 出列ADT2-3 边想边写2-4 反思一下目录2-1 为啥要有链表在1篇中“动态”数组ArrayList的学习中,我们发现这个动态是依靠resize操作实现的,非真正意义上的动态,因为我们需要随时关注size和capacity之间的关系。虽然ArrayList的查询效率非常高,但是插入和删除开销大。针对以上弱点,给出一个新的数据结构–链表。2-2 出列ADT节

2020-10-30 13:41:15 513 2

原创 小肥柴慢慢学习数据结构笔记(Java篇)(1-1 动态数组ArrayList)

小肥柴慢慢学习数据结构笔记(Java篇)(1-1 动态数组ArrayList)目录1-1 上代码1-2 代码细节重点1-3 源码阅读1-4 总结目录在链接 小肥柴慢慢手写数据结构(C篇)(1-3 线性表 ArrayList 严版教材实现浅析).中,给出了大佬的git仓,现在就跟着大佬的脚步用java再写一遍(Java和C++都是面向对象的,写起来顺畅很多)1-1 上代码MyArrayList.javapublic class MyArrayList<E> { private st

2020-10-29 14:16:05 206

原创 小肥柴慢慢手写数据结构(C篇)(1-3 线性表 ArrayList 严版教材实现浅析)

小肥柴慢慢手写数据结构(C篇)(1-4 线性表 ArrayList 严版教材实现浅析)目录1-9 对比代码,理顺学习思路和基本语法1-10 回归数学原理,看书推公式1-11 翻一翻Linux源码目录准备工作复习指针:(1)C语言重点——指针篇(一篇让你完全搞懂指针)https://zhuanlan.zhihu.com/p/101934152?utm_source=wechat_session其中有一段评论我觉得是学习的真谛,直接debug看地址,看数据:(2)从5个维度来看C语言指针(指

2020-10-27 16:38:32 314

原创 小肥柴慢慢手写数据结构(C篇)(1-2 线性表 ArrayList 升级版本)

小肥柴慢慢手写数据结构(C篇)(1-2 线性表 ArrayList 升级版本)目录1-5 要改进哪些点?1-6 开始施工1-7 完整代码和测试1-8 接下来做什么目录1-5 要改进哪些点?我们将在前一篇代码的基础上做修改,老样子先列个单子预测下工作内容及可能出现的麻烦。存储数据的data数组大小应该是动态生成的。如果当前存储单元使用达到上限(capacity),那么自动扩容。在create和add操作中会有一些改动,可能需要解bug。1-6 开始施工对照单子,一步步来:使用指针保存d

2020-10-25 15:06:15 476 2

原创 小肥柴慢慢手写数据结构(C篇)(1-1 线性表 ArrayList 原始版本)

小肥柴慢慢手写数据结构(C篇)(1-1 线性表 ArrayList 原始版本)目录1-1 为啥要有线性表1-2 自己出列一个单子(ADT),看看要做什么1-3 边想边写1-4 反思一下目录1-1 为啥要有线性表许多低年级计算机类专业的朋友受限于各类原因,编程基础不扎实,学《数据结构》/算法课,直接上清华严版的数据结构很容易复现从入门到翻车最后放弃的流程。自己翻看一些经典教材和资料后,觉得还是从零开始对照原理手动编出代码后,再返回去看严版数据结构这本工具书,适度刷刷算法题 (比如Leecode),或许对

2020-10-23 20:42:50 767

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除