摘要: 1. 二分法查找算法,判断一个数是否在一个有序数组中存在,最快的方法就是二分法,时间复杂度为O(Logn) 2. 利用二分思想,每次与中间数值比较,缩小查找范围。 3. 写好二分查找需要注意,循环条件是low <= high; mid取值最好不用mid=(low+high)/2, 而是用low + 阅读全文
posted @ 2020-08-22 11:58 lswtianliang 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 桶、基数,计数排序都是针对海量数据的排序方法,时间复杂度为O(n)。 1. 桶排序 顾名思义,会用到“桶”,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 桶排序的限制条件。 a.要排序的数据需要 阅读全文
posted @ 2020-08-22 09:21 lswtianliang 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1. 排序算法很多,常见的有冒泡/插入/选择 O(n^2)、归并/快速 O(nLogn)、桶排序/计数/基数O(n)。 2. 排序过程中,我们需要考虑算法 a. 原地算法,即不需要额外的空间 b. 是否是稳定的算法, 保持原有的顺序不变。比如按照一个对象的多个属性排序,稳定排序算法更好实现,效率更好 阅读全文
posted @ 2020-08-21 23:18 lswtianliang 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 1,队列是一种先进先出的数据结构。它一般只有入队和出队的两个操作,队列跟栈一样,也是一种操作受限的线性表数据结构。 2, 队列用于生产者消费者模型,或者资源数量一定的场景,比如线程池,数据库连接池,常见的变形有循环队列、阻塞队列、并发队列。它们在很多偏底层系统、框架、中间件的开发中,起着关键性的作用 阅读全文
posted @ 2020-08-21 09:20 lswtianliang 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 1. 栈是一种先进后出的,操作受限的数据结构,他只有入栈和出栈两个操作,即push和pop操作。他可以用数组和链表来实现。 2. 为什么函数调用要用“栈”来保存临时变量呢?用其他数据结构不行吗?其实,我们不一定非要用栈来保存临时变量,只不过如果这个函数调用符合后进先出的特性,用栈这种数据结构来实现, 阅读全文
posted @ 2020-08-20 09:42 lswtianliang 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 1. 链表,常见的有单链表,双向链表,循环链表 2. 双向链表是常见的空间换时间的策略 3. 淘汰缓存的做法一般有几个,一般用链表结构,常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策 阅读全文
posted @ 2020-08-19 19:05 lswtianliang 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 1. 是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。所以JS中的Array不是真正意义上的数组,实际上是散列表存储。 2. CPU缓存也有优势,CPU时间是一次读取当前内存,往后多一点的内容,避免频繁与内存交互,效率更高。 3. 为何索引是从0开始的? a. 历史原因, 阅读全文
posted @ 2020-08-19 16:42 lswtianliang 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 1. 算法中,评判一个算法是否优秀,通常是依靠复杂度的多少来断定的。 2. 复杂度分时间和空间复杂度,用字母大O来表示。 复杂度是指用来分析算法执行效率与数据规模之间的增长关系,常见的复杂度有 O(1), O(n), O(logn) 这里我们对数一般不指定底数,2,3,x都可以,O(nLog n), 阅读全文
posted @ 2020-07-26 21:04 lswtianliang 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 当我们要谈一个事物/概念的时候,需要问自己三个终极问题--是什么?为什么?怎么样?什么是数据结构和算法数据结构,就是一组数据的存储结构。算法,就是操作数据的一组方法。数据结构是为算法服务的,算法要作用在特定的数据结构之上。为什么需要数据结构和算法来谈谈应用层面的原因。在计算机科学和互联网迅猛发展下, 阅读全文
posted @ 2020-07-26 19:16 lswtianliang 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 1. https工作在http和tcp层之间,添加了加密逻辑,让整个传输过程更安全,不会被黑客操纵和截取明文报文。https的握手过程是在tcp三次握手之后额外添加2次RTT来完成。 2. 这中间涉及到对称加密和非对称加密,使用非对称加密(RSA代表)协商出对称加密(AES代表)的密钥,主要是因为非 阅读全文
posted @ 2020-06-12 23:57 lswtianliang 阅读(1104) 评论(0) 推荐(0) 编辑