精华内容
下载资源
问答
  • (Kotlin语言描述)》/ 陈光剑内容简介本书主要介绍基本数据结构以及相关的经典算法,强调“问题-数据-算法”的抽象过程,采用“模型-关系思考法”问题解决方法论,关注数据结构与算法的时间空间效率,提升编写出高效...

    《数据结构与算法 (Kotlin语言描述)》/ 陈光剑

    内容简介

    本书主要介绍基本数据结构以及相关的经典算法,强调“问题-数据-算法”的抽象过程,采用“模型-关系思考法”问题解决方法论,关注数据结构与算法的时间空间效率,提升编写出高效程序从而解决实际问题的综合能力。

    全书目录


    1.Kotlin 概述

    1.1 为什么用Kotlin?

    1.2 Kotlin快速入门

    小结

    2 问题求解方法论

    2.1 数据结构与抽象数据类型

    2.2 算法特性及分类

    2.3 模型-关系思维方法论

    小结

    3.算法复杂度

    3.1 时间复杂度

    3.2 空间复杂度

    3.3 大O记法

    小结

    4.数组

    4.1 数组的基本概念

    4.2 数组的操作

    4.3 应用案例

    小结

    5.栈

    5.1 栈的基本概念

    5.2 栈的操作

    5.3 栈与递归

    5.4 递归转非递归

    5.5 应用案例

    小结

    6.队列

    6.1 队列的基本概念

    6.1 队列的操作

    6.2 应用案例

    小结

    7.链表

    7.1 链表的基本概念

    7.2 链表的操作

    7.3 单链表

    7.4 循环链表

    7.5 双向链表

    7.6 应用案例

    小结

    8.映射

    8.1 映射的基本概念:一切皆是映射

    8.2 映射的操作

    8.3 应用案例

    小结

    9.树

    9.1 树的定义

    9.2 树的抽象数据结构及树的遍历

    9.3 树的链式存储结构

    9.4 树的父指针表示法

    9.5 树的顺序存储和K叉树

    9.6 二叉树的概念

    9.7 二叉树的抽象数据结构

    9.8 二叉树的搜索

    9.9 二叉树的存储结构

    9.10 二叉搜索树

    9.11 堆与优先队列

    9.12 Huffman树及其应用

    9.13 Trie 树

    9.14 AVL 树

    9.15 Splay 树

    小结

    10.红黑树

    10.1 红黑树的基本概念

    10.2 红黑树的5大特性

    10.3 左旋与右旋

    10.4 查找操作

    10.5插入操作

    10.6 删除操作

    10.7 应用案例

    小结

    11.字符串算法

    11.1 字符串基本概念

    11.2 字符串的存储结构

    11.3 字符串运算的算法实现

    11.4 字符串的快速模式匹配

    小结

    12.排序算法

    12.1 冒泡排序

    12.2 选择排序

    12.3 插入排序

    12.4 归并排序

    12.5 快速排序

    12.6 希尔排序

    12.7 堆排序

    12.8 基数排序

    小结

    13 索引算法

    13.1 索引的概念

    13.2 静态索引

    13.3 倒排索引

    13.4 B 树

    13.5 B+ 树

    13.6 位索引技术

    小结

    展开全文
  • 数据结构与算法之美 入门二知识点: 1、数据结构服务于算法;算法也是作用在特定的数据结构 2、算法学习核心:复杂度分析 3、20个最基础最常用的数据结构和算法 10个数据结构:数组,队列,栈,堆,链表,散列表,...

    菜鸟今天又来完成所说的诺言,也希望大家督促,在今天的学习中,菜鸟有了新的认知,我会将上一篇中理解不完善的一些地方进行补充,学习本就是不断打破自己的认知,如果思考都不做,何来的知识的积累

    数据结构与算法之美

    入门二知识点:
    1、数据结构服务于算法;算法也是作用在特定的数据结构
    2、算法学习核心:复杂度分析
    3、20个最基础最常用的数据结构和算法
    10个数据结构:数组,队列,栈,堆,链表,散列表,二叉树,跳表,图,树;
    10个算法:递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,动态规划,回溯算法,字符串匹配算法
    (知识是一点一点积累,我也很想快点知道这些具体的东西,但是先确定好框架,知道要学什么,再来学习也只不过是:磨刀不误砍柴工)

    趣谈网络原理

    第一板块二知识点:
    1、网络上跑的包都是完整的,可以有下层没上层,但不可能有上层没下层
    2、二层、三层设备:这些设备处理的也是完整的包,只是程序不同,二层设备解析MAC层,看看是转发、丢弃还是自己留着,三层设备就是处理二层设备处理之后的包,然后解析IP层,看看是留下,丢弃还是转发
    3、不能比喻为层层封装的比喻都是不恰当的,自己想一个贴切的例子:MAC(IP(TCP(HTTP(正文))))像俄罗斯套娃一样,越高层越在里面
    4、评论精华+自己总结:
    包在到达目的地址(国家)时,是不知道目标的MAC地址的,而是大吼谁的IP是XXXX,然后目标IP返回一个MAC地址(ARP协议),所以包在传递过程中MAC会变,但目的IP不会;如果是本地通信,则可以自己在自己的网络范围大吼目标IP(ARP协议),或者甚至可以直接靠MAC直接通信

    最后配上极客时间的图文解析(大家有理解得不一样的,欢迎评论):

    讲解:
    当一个网络包从一个网口经过的时候,你看到了,首先先看看要不要请进来,处理一把。的网口配置了混杂模式,凡是经过的,全部拿进来。

    拿进来以后,就要交给一段程序来处理。于是,你调用process_layer2(buffer)。当然,这是一个假的函数。但是你明白其中的意思,知道肯定是有这么个函数的。那这个函数是干什么的呢?从 Buffer 中,摘掉二层的头,看一看,应该根据头里面的内容做什么操作。

    假设你发现这个包的 MAC 地址和你的相符,那说明就是发给你的,于是需要调用process_layer3(buffer)。这个时候,Buffer 里面往往就没有二层的头了,因为已经在上一个函数的处理过程中拿掉了,或者将开始的偏移量移动了一下。在这个函数里面,摘掉三层的头,看看到底是发送给自己的,还是希望自己转发出去的。

    如何判断呢?如果 IP 地址不是自己的,那就应该转发出去;如果 IP 地址是自己的,那就是发给自己的。根据 IP 头里面的标示,拿掉三层的头,进行下一层的处理,到底是调用process_tcp(buffer) 呢,还是调用 process_udp(buffer) 呢?

    假设这个地址是 TCP 的,则会调用process_tcp(buffer)。这时候,Buffer 里面没有三层的头,就需要查看四层的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。如果是发起或者应答,接下来可能要发送一个回复
    包;如果是一个正常的数据包,就需要交给上层了。交给谁呢?是不是有process_http(buffer) 函数呢?

    没有的,如果你是一个网络包处理程序,你不需要有process_http(buffer),而是应该交给应用去处理。交给哪个应用呢?在四层的头里面有端口号,不同的应用监听不同的端口号。如果发现浏览器应用在监听这个端口,那你发给浏览器就行了。至于浏览器怎么处理,和你没有关系。

    浏览器自然是解析 HTML,显示出页面来。电脑的主人看到页面很开心,就点了鼠标。点击鼠标的动作被浏览器捕获。浏览器知道,又要发起另一个 HTTP 请求了,于是使用端口号,将请求发给了你。

    你应该调用send_tcp(buffer)。不用说,Buffer 里面就是 HTTP 请求的内容。这个函数里面加一个 TCP 的头,记录下源端口号。浏览器会给你目的端口号,一般为 80 端口。

    然后调send_layer3(buffer)。Buffer 里面已经有了 HTTP 的头和内容,以及 TCP 的头。在这个函数里面加一个 IP 的头,记录下源 IP 的地址和目标 IP 的地址。

    然后调用send_layer2(buffer)。Buffer 里面已经有了 HTTP 的头和内容、TCP 的头,以及 IP 的头。这个函数里面要加一下 MAC 的头,记录下源 MAC 地址,得到的就是本机器的 MAC 地址和目标的 MAC 地址。不过,这个还要看当前知道不知道,知道就直接加上;不知道的话,就要通过一定的协议处理过程,找到 MAC 地址。反正要填一个,不能空着。

    万事俱备,只要 Buffer 里面的内容完整,就可以从网口发出去了,你作为一个程序的任务就算告一段落了。

    深入浅出计算机组成原理

    入门三知识点:
    首先附上一张极客时间老师的思维导图

    导图解析(按顺序学习)

    1、计算机的基本组成

    学习计算机的硬件组成,是如何应用在冯.诺依曼体系结构上的,也就是:运算器,控制器,存储器,输入设备和输出设备,还需要了解计算机的两大核心指标:性能和功耗

    2、计算机的指令和计算

    指令部分:搞明白我们每天撰写的代码是如何在计算机上运行起来的,而这一条条指令执行的控制过程,就是由控制器完成的。
    计算部分:从二进制和编码入手,理解数据在计算机里面的表示,以及怎么从数字电路层面,实现加法、乘法,实现运算功能的ALU其实就是运算器。

    3、处理器设计(CPU设计)

    CPU时钟可以构造寄存器和内存的锁存器和触发器,搞明白为什么需要CPU时钟,以及寄存器和内存是由什么硬件组成,之后就可以看看数据通路——连接了整个运算器和控制器,并最终组成了CPU

    4、存储器的原理

    通过存储器的层次结构作为基础的框架引导,你需要掌握从上到下的 CPU 高速缓存、内存、SSD 硬盘和机械硬盘的工作原理,它们之间的性能差异,以及实际应用中利用这些设备会遇到的挑战。存储器其实很多时候又扮演了输入输出设备的角色,所以你需要进一步了解,CPU 和这些存储器之间是如何进行通信的,以及我们最重视的性能问题是怎么一回事;理解什么是IO_WAIT,如何通过 DMA 来提升程序性能。对于存储器,我们不仅需要它们能够正常工作,还要确保里面的数据不能丢失。于是你要掌握我们是如何通过 RAID、Erasure Code、ECC 以及分布式 HDFS,这些不同的技术,来确保数据的完整性和访问性能。

    这只是一份单纯的导图,菜鸟看完也是一脸懵逼,很多名词完全不认识,但是我相信在后面一步一步的学习中,这个导图会越来越清晰的出现在各位以及菜鸟的脑海之中。(知识是一点一点积累,我也很想快点知道这些具体的东西,但是先确定好框架,知道要学什么,再来学习也只不过是:磨刀不误砍柴工)

    展开全文
  • 本书以Java为描述语言,介绍了数据结构与算法的基本知识。书中结合企业界的工程实践提炼教学内容,特别对数据结构中易混淆的问题进行了梳理,对每一个问题提出不同的解决方案。本书是一本优秀的数据结构方面的教材。...
  • 数据结构与算法,能有效训练大脑思考能力,使我们看待问题的深度,解决问题的角度就会完全不一样。提升个人的核心竞争力。 什么是数据结构?什么是算法? 从广义上讲,数据结构就是指一组数据的存储结构。算法就是...

    为什么学习数据结构与算法?

    • 直接的好处是能够写出性能更优的代码。
    • 算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。
    • 数据结构与算法,能有效训练大脑思考能力,使我们看待问题的深度,解决问题的角度就会完全不一样。提升个人的核心竞争力。

    什么是数据结构?什么是算法?

    从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。

    从狭义上讲,也就是《数据结构与算法之美》这个专栏要讲的,是指某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。这些都是前人智慧的结晶,我们可以直接拿来用。我们要讲的这些经典数据结构和算法,都是前人从很多实际操作场景中抽象出来的,经过非常多的求证和检验,可以高效地帮助我们解决很多实际的开发问题。

    数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。

    学习的重点在什么地方?

    首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。

    它是数据结构和算法学习的精髓。数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。

    搞定复杂度分析,就要进入数据结构与算法的正文内容了。

    下图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。
    在这里插入图片描述
    作为初学者,或者一个非算法工程师来说,并不需要掌握图里面的所有知识点。

    20 个最常用的、最基础数据结构与算法:

    10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;

    10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

    学习技巧:

    • 边学边练,适度刷题
    • 多问、多思考、多互动
    • 打怪升级学习法
    • 知识需要沉淀,不要想试图一下子掌握所有
    展开全文
  • 很多程序员在初次接触到算法之后因为其知识点多、复杂、思考太过艰深选择放弃,但是数据结构与算法对于程序员的重要性不言而喻,不管是提升代码质量还是面试,可以说都是必备技能。 那么,如何才...

     

    数据结构与算法的应用在计算机编程领域非常广泛,甚至可以说无处不在,比如图像视频处理、数据压缩、数据库、游戏开发、操作系统、编译器、搜索引擎、AR、VR、人工智能、区块链等等领域,都是以数据结构与算法为基石。

    很多程序员在初次接触到算法之后因为其知识点多、复杂、思考太过艰深选择放弃,但是数据结构与算法对于程序员的重要性不言而喻,不管是提升代码质量还是面试,可以说都是必备技能。

    那么,如何才能快速、清晰地学好数据结构与算法呢?

    iOS两大流行开源框架作者,小码哥教育创始人李明杰老师特意联合汇丰银行技术总监董甫耸老师联合打造《恋上数据结构与算法》通过结合大量企业真实案例讲解,由浅入深的帮助同学们每个数据结构,每个算法的每一行代码实现,从底层了解数据结构与算法,体会数据结构与算法的魅力。

    腾讯课堂搜索小码哥教育即可

    另可添加码宝宝微信(IT-SEEMYGO)免费获取课件资料

    展开全文
  • 数据结构与算法】-- 1.知识图谱

    千次阅读 2019-04-05 09:05:15
    想扎实内功,想提高大脑的思考力,想提升看问题的深度,绕不开数据结构与算法,来一份数据结构和算法的知识图谱,每一个都需要一点一点的啃,学技术切忌浮躁,沉淀中。 ...
  • 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威...当然,对需要提升算法和数据结构等方面能力的程序员而言,本书的价值也是显而易见的。
  • 理解指针或引用的含义技巧二:警惕指针丢失和内存泄漏技巧三:利用哨兵简化实现难度技巧四:重点留意边界条件处理技巧五:举例画图,辅助思考技巧六:多写多练,没有捷径 一、js单链表代码(增删查)
  • 本仓库主要用于学习数据结构与算法,同时作为笔试、面试刷题积累,主要用于提升自身的编程能力。在自己思考的基础之上融入高手们的编程思想,做好详细记录。 如何写出正确的程序? 明确变量的含义 循环不变量 小数据...
  • IT名企算法与数据结构题目解》中的题目全面且经典,更重要的是,《程序员代码面试指南:IT名企算法与数据结构题目解》收录了大量题目和解分析,这些内容源自笔者多年来“死磕自己”的深入思考。 码农们,你们做好...
  • IT名企算法与数据结构题目解》中的题目全面且经典,更重要的是,《程序员代码面试指南:IT名企算法与数据结构题目解》收录了大量题目和解分析,这些内容源自笔者多年来“死磕自己”的深入思考。 码农们,你们做好...
  • 跟完这个课程自己学到的不光是数据结构的知识,还有很多附加的老师潜移默化带给我的其他编程方面的提升思考问题的方式、角度,对编程的理解等等课程由简入繁,逐步解析。从大体思路, 到核心细节,再到非常形象的...
  • 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。...当然,对需要提升算法和数据结构等方面能力的程序员而言,本书的价值也是显而易见的。 ——《豆瓣读书》
  •  班级动态由学校老师所发,可以进行评论点赞等操作,为了提升这种非结构数据的访问效率,存储于Mongodb中,冗余了学校名称字段,假设班级表也冗余了学校名称字段。而冗余字段的存在可能会带来数据不一致问题。...
  • 在做项目时候发现自己的js水平还有非常大提升空间,偶进入了一个群看到一篇阿里工程师写的文章:程序猿学习的过程是由精到广,所以买了两本《你不知道的JavaScript》上,中卷,以及《JavaScript数据结构与算法》学习...
  • 9.4.4 计数器的设置性能数据收集 276 9.5 运行场景,得到测试结果和相关数据(Execution阶段) 277 9.5.1 脚本的开发 277 9.5.2 数据的生成 278 9.5.3 并发登录测试 279 9.5.4 负载测试 279 9.6 分析测试瓶颈...
  • 缺乏着重点以及数据支撑,目标结果不够一致 材料缺少结构化,不仅体现在内容结构化上,还体现在思考结构化上 材料展现出来的内容没有match到「能力模型-评委版」上要求的点,给人的感觉就是内容缺少对应职级的高度...
  • 10个提升效率的编程好习惯

    万次阅读 多人点赞 2020-03-24 15:14:45
    我结合最近自己的学习经历和思考以及最近在数据结构与算法的折磨下得出的一些心得。 唐代大臣魏徵的【谏太宗十思疏】中写道,“善始者实繁,克终者盖寡”。大概的意思是:如果有好多人同时做一件事情,善于开始去做...
  • Oracle DBA手记:数据库诊断案例性能优化实践(一线Oracle DBA工作思考的心得,盖国强亲自策划) 基本信息 作者: 《Oracle DBA手记》编委会 出版社:电子工业出版社 ISBN:9787121101397 上架时间:2010-1-19 ...
  • 数据运营思维导图

    2018-04-26 14:24:22
    影响因素问题数据之间的相关关系 原因 优化策略 数据化运营7大经典思路 以目标为导向,学会数据拆分 细分到极致 追踪思路 运营的问题,是追踪出来的,不是一次就看出来的 所有的数据都是靠积累和沉淀才能...
  • 算法概论基础

    2018-04-02 23:50:00
    1.今天在思考一个问题,技术能力。技术可以通过学习而提升,但是能力想提升却比较难。...数据结构:分为逻辑结构和物理结构。 逻辑结构:线性结构/树形结构/图形结构等 物理结构:顺序存储结构 链...
  • 2019数据运营思维导图

    2019-03-29 21:34:09
    数据分析是精细化运营,要建立起体系化思维(金字塔思维) 自上而下 目标—维度拆解—数据分析模型—发现问题—优化策略 自下而上 异常数据 影响因素 影响因素问题数据之间的相关关系 原因 优化策略 数据化运营7大...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 291
精华内容 116
关键字:

数据结构思考与提升

数据结构 订阅