排序:
默认
按更新时间
按访问量

数据结构之二叉树基础

树是什么 计算机中的树是一种数据结构,它是由n个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根在上而叶子在下。 树的特点 每个节点有零个或多个子节点 没有父节点的节点称为根结点 每一个非根节点有且只有一个父节点 除了根结点外,每个子节点可以分为多个不相...

2018-11-16 11:33:59

阅读数:11

评论数:0

算法之哈希算法

哈希算法定义 将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法。 哈希算法实现的要求 从哈希出来的值不能反向推导出原始数据。也就是说,哈希算法是单向的。 对原始数据十分敏感,输入数据改变一点,输出的数据就会大不相同。 散列冲突的概率要非常小。 哈希算法的执行效率要十分...

2018-11-13 10:35:25

阅读数:11

评论数:0

算法之二分查找

概念 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到想要查找的元素,或是区间被缩小为0。 时间复杂度 二分查找的时间复杂度为O(logn)O(logn)O(logn) lognlognlogn是一个非常恐怖的数...

2018-11-12 22:30:25

阅读数:6

评论数:0

算法之排序

排序算法是一种非常基础也非常重要的算法。 要选择合适的排序算法为自己的程序做优化,那么就需要了解不同算法优劣的衡量依据。 衡量排序算法的依据 执行效率 1.1 最好时间复杂度、最坏时间复杂度、平均时间复杂度 1.2 在数据规模不大时,低阶、系数、常量也需要考虑 1.3 时间复杂度相同,需要考虑比...

2018-11-09 17:13:21

阅读数:5

评论数:0

算法之递归

何时用递归 需满足三个条件: 一个问题的解可以分解为几个子问题的解 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样 存在递归终止条件 使用递归时注意要点 要注意避免堆栈溢出 要注意不要过量的重复性计算(可以利用map存储计算值) 递归与迭代的区别 递归是函数调用函数自身 ...

2018-11-08 09:34:33

阅读数:8

评论数:0

数据结构之散列表

概述 散列表的英文名叫“Hash Table”,所以,我们也叫它为哈希表。 散列表利用数组支持下标随机访问数据的特性,是数组的一种扩展,由数组演化而来。 散列函数 我们需要把键值key映射为数组的下标。所以需要一个映射的函数,这个映射的函数就是散列函数。 散列函数有三个基本要求: 散列函数计算得...

2018-11-07 09:14:15

阅读数:6

评论数:0

数据结构之跳表

跳表是什么 跳表是一种经过改进的链表。是一种查找效率要比链表更高的带有索引的链表。 跳表是怎么出现的 我们都知道链表相比于数组在存储上很占优势。不过查询时的时间复杂度为O(n),相比于下标随机查找下的数组的时间复杂度O(1)要逊色很多。 所以大家都希望可以对链表的查询时间复杂度做一些提高,就算是要...

2018-11-06 08:27:27

阅读数:5

评论数:0

数据结构之队列

概念 可以把队列想象成排队买票,先来的人先买,后来的人站在队尾排队后买,不允许插队,先进者先出,这就是典型的“队列”。 特点 先进者先出,后进者后出,不允许在中间进行插入、删除操作。 基本操作 入队:在队列的末尾插入元素 出队:在队列的头部取出元素 常见队列 普通队列、循环队列、阻塞队列、并发队列...

2018-11-05 13:11:11

阅读数:12

评论数:0

数据结构之栈

什么是栈 从栈的操作特性上来看,栈是一种 “操作受限”的线性表,只允许在一端插入和删除数据,且满足先进后出、后进先出的特性。 实现一个栈 栈可以用数组或链表来实现,数组实现的叫顺序栈,链表实现的叫链式栈。 栈的时间复杂度 入栈与出栈的时间复杂度均为O(1) 动态扩容的顺序栈 与数组动态扩容类似,用...

2018-10-31 10:19:15

阅读数:6

评论数:0

数据结构之链表

数组和链表对比 数组是连续的内存区域、链表不是连续的内存区域。 因此,数组在通过下标查询时的时间复杂度低,而链表在查询时需要遍历链表,所以时间复杂度较高。 对于插入和删除,因为数组是连续的内存区域,所以每次插入和删除都需要做数据的迁移,因此时间复杂度较高。而链表因为在内存区域本身就不是连续的,所以...

2018-10-30 08:09:24

阅读数:13

评论数:0

数据结构之数组

数组的三种操作时间复杂度 按下标随机查找时间复杂度:O(1) 插入时间复杂度:O(n) 删除时间复杂度:O(n) 查找操作 因为数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。所以,我们在通过下标i查找某个元素的时候,通过计算a[i]_address = base_...

2018-10-29 11:19:11

阅读数:15

评论数:0

算法的复杂度分析

复杂度分析是什么 代码的复杂度分为时间复杂度与空间复杂度。 数据结构与算法解决的核心问题就是让代码更“快”、更“省”。具体来说,就是执行的时间尽可能的短,占用的空间尽可能的少。 而代码到底有多“快”、有多“省”,需要对应的衡量标准,时间复杂度就作为代码有多“快”的衡量标准,空间复杂度就作为有多“省...

2018-10-27 10:06:03

阅读数:155

评论数:0

数据结构与算法学习背景概述

为什么要学习数据结构与算法? 1. 面试必备 站在一个比较现实且功利的角度来看,做计算机技术的大公司,如BAT、Google、Facebook,它们在招聘技术人员时,数据结构与算法是必考查的知识点。如果想要进入这样的大公司,那么掌握数据结构与算法就是必不可少的。 这点作为正在秋招时期的我深有感触。...

2018-10-26 22:41:00

阅读数:638

评论数:1

python中的if __name__=='__main__'

背景 初学者在学习Python的过程中,一定都遇到过if __name__ == '__main__'这样的语句。那么,这样的一个语句有什么作用呢?在什么时候需要使用这个判断语句呢? 举个例子 执行: def main(): print "hell...

2018-09-10 15:28:25

阅读数:41

评论数:0

计算广告基础

背景 我们都知道,互联网最重要的就是流量与数据。有了流量与数据就有了变现的基础。我们都知道互联网变现大部分要依靠广告,于是近些年在线广告发展突飞猛进。所谓在线广告,指的就是在互联网平台上投放的广告。那么,计算广告又是什么呢?本文大致对计算广告的基础进行讲述。 广告 要说到计算广告是什么,那么...

2018-06-04 17:48:02

阅读数:74

评论数:0

搭建docker镜像私有仓库碰到的问题

之前我有过一篇博客是专门讲如何搭建docker镜像私有仓库的。《搭建docker镜像私有仓库》 最近将docker升级到1.12版本后又搭建了私有仓库。当镜像仓库的容器运行起来之后,我在其它节点上想要拉取该仓库中的镜像,遇到了如下报错: 该报错的原因在于: docker从1.3版本以后对...

2018-05-17 10:29:44

阅读数:271

评论数:0

Docker底层的内核知识——cgroups

概述 我的上一篇博客Docker底层的内核知识——namespace讲解了内核中支持Docker作资源隔离的机制namespace。本篇文章主要讲述Docker背后内核的另一机制——cgourps。cgroups不仅可以用来限制被namespace隔离的资源,还可以为资源设置权重、计算使用量、操...

2018-05-08 12:25:19

阅读数:196

评论数:0

Docker底层的内核知识——namespace

概述 用过Docker的开发者都知道,Docker容器在本质上是宿主机上的一个进程。也就是常说的容器是操作系统级的虚拟化。容器与容器之间做了资源的隔离,所以在一个容器内部的各种操作会给人一种仿佛在独立的系统环境中的感觉。外部应用对容器进行访问时,也会有这种感觉。而做这种容器资源隔离的Linux内...

2018-04-15 14:36:39

阅读数:823

评论数:0

Kubernetes的调度器

(本文基于Kubernetes v1.7) 概述 调度器Scheduler是Kubernetes的重要组件之一。其作用是要将待调度的Pod依据某调度策略调度到最适合它运行的节点上运行。这里就涉及到三个对象:待调度的Pod、调度策略、待部署的节点队列。 我们先来看下Scheduler及其相...

2018-03-29 11:19:50

阅读数:473

评论数:0

Kubelet启动的时候做了什么

(本文基于Kubernetes v1.3)Kubelet是Kubernetes中的重要组件之一。如果把APIServer、Controller Manager、Scheduler比做大脑的话,那么Kubelet毫无疑问就是双手。它是做具体工作的组件。它运行于Slave节点中,监听10250端口,接...

2017-12-28 11:29:20

阅读数:591

评论数:0

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