摘要:
排序过程详细的动态图可参考https://www.cnblogs.com/onepixel/articles/7674659.html 1.插入排序 稳定O(n^2) 稳定的意思是a=b,原本a在b前面,排序完成后a也在b前面。 插入排序的思路就是将数组逻辑上分成两段,一段是排好序的,一段是未排序的 阅读全文
摘要:
什么叫递归?举个例子,我们排队,想知道自己排在第几个,那么我们可以问前面的那个人,前面的人继续问前面,直到问到第一个人,这就是传递的过程。然后再从第一个人回来,这就是归(回溯)的过程。传递过去再回归回来,这就是递归。第一个人就是我们所说的递归出口,也就是说到哪个点应该回归了,如果没有出口,那么就会死 阅读全文
摘要:
之前用定时任务的线程池,设置了个任务,但是突然今天产品说,某些个操作需要中断某些任务(如果任务还没有执行),使其不能再到点执行了。于是查了API果然有这样一个方法。 一看API,需要移除的是一个Runnable对象,想当然的就把任务调度的传入的Runable对象保留下来,然后进行删除。简要代码如下 阅读全文
摘要:
队列也是一种特殊的线性表,它只允许在两端进行操作,插入或者取出,不允许操作中间的数据。比如只允许在对头出队,队尾入队。这样就具有先进先出的特性(first in first out-FIFO)。就像排队买东西一样,不允许插队,先排先买。 队列分为单向队列(有序队列),就是上面所说的排队模型,先进先出 阅读全文
摘要:
假设我们要求输入类似这样一个表达式:9+(3-1)*3+10/2,输出结果。我们知道先括号,再乘除,最后加减,中学时候使用的科学计算器,是允许输入这样的表达式计算结果的,那么计算机怎么知道这个串里面先算括号再算乘除呢?我们先来介绍下栈这种数据结构,再来解决这个问题。 前面已经说过数组的连表,现在来说 阅读全文
摘要:
链表和数组一样也是线性表的一种。和数组不同,它不需要再内存中开辟连续的空间。 链表通过指针将一组零散的内存块连接在一起。我们把内存块称为链表的“结点”(是节点还是结点,结点连接起来打个结所以叫“结点”?开个玩笑),也就是说这些结点可以在内存的任意地方,只要有其他的结点的指针指向这个位置就可以。 链表 阅读全文
摘要:
线性表,顾名思义就像一条线一样,线性表是有序的,这个“有序”不是从小到大之类的概念。当然与之对应就是散列表,散就是乱的,无序的。Java中List和Set,我们遍历List每次结果都是一样,这就是所谓的有序,遍历Set,每次出来的结果可能都不一样,这就是无序的。 数组是一种相同数据类型的元素组成的集 阅读全文
摘要:
时间复杂度和空间复杂度是我们算法效率的度量方法。 时间复杂度我们用大O表示法,比如O(1),O(n),O(logn),O(n2)等,那么这个是怎么计算出来的呢。 简单来说就是看某段代码的执行次数。 注意: 1.如果是常数级别的都是O(1),这里的常数是指的我们已经很确定这段代码执行多少次,不存在变化 阅读全文
摘要:
Redis我们一般是用作缓存,扛并发;或者用于某些特定的业务场景,比如前面说到redis各种数据类型的使用场景以及redis的哨兵和集群模式。 这里主要整理了下redis用作缓存,存在的一些问题,以及改善方案。 简单的流程就像这个样子,一般请先到缓存区获取,如果缓存没有再到后端的数据库去查询。 1. 阅读全文
摘要:
前面简单介绍了ELK三剑客中的其中两个Elasticsearch和Kibana的简单使用,如果对这两个不了解,可以看下下面的 Centos7安装Elasticsearch和Kibana 搜索引擎基础 分词和倒排索引简述 Elasticsearch基础入门 现在来看看这最后一个Logstash 还是这 阅读全文