题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 分析: 1)开辟新数组。用空间换时间。 遍历老数组,遇到奇数就放到新数组里。 再遍历老数组,遇到偶数就放到新数组里。 把 ...
分类:
编程语言 时间:
2019-01-21 13:43:20
阅读次数:
211
深入到计算机的本质,其实,很多东西还是细节需要深入分析的,比如我最近的一份工作 内联函数和宏很类似,都是以空间换时间,都能一定程度上加快程序的执行。而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以 ...
分类:
其他好文 时间:
2019-01-12 20:55:59
阅读次数:
213
《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。 上文提到过现代的商用虚拟机的都是采用分代收集的,不同的区域用不同的收集器。常用的7种收集器,其适用的范围如图所示 Serial、ParNew、Parallel Scavenge用于新生代 ...
分类:
其他好文 时间:
2019-01-09 18:41:37
阅读次数:
179
前几节学习了「链表」、「时间与空间复杂度」的概念,本节将结合「循环链表」、「双向链表」与 「用空间换时间的设计思想」来设计一个很有意思的缓存淘汰策略:LRU缓存淘汰算法。 三种最常见的链表结构 循环链表的概念 如上图所示:单链表的尾结点指针指向空地址,表示这就是最后的结点了。而循环链表的尾结点指针是 ...
分类:
编程语言 时间:
2018-12-24 16:25:52
阅读次数:
179
lucene索引文件大小优化小结 1 数值数据类型索引优化 1.1 数值类型索引问题 lucene本质上是一个全文检索引擎而非传统的数据库系统,它基于倒排索引,非常适合处理文本,而处理数值类型却不是强项。 1.2 lucene解决方法 为解决这一问题, Schindler和 Diepenbroek提 ...
分类:
Web程序 时间:
2018-12-21 15:22:10
阅读次数:
256
实现一个算法,寻找字符串中出现次数最少的、并且首次出现位置最前的字符如"cbaacfdeaebb",符合要求的是"f",因为他只出现了一次(次数最少)。并且比其他只出现一次的字符(如"d")首次出现的位置最靠前。 空间换时间 ...
分类:
编程语言 时间:
2018-12-12 11:49:08
阅读次数:
200
最新项目需求是要做一个实时排行榜,有积分Score变动就直接影响排行榜,这里讲一种比较高效的实现,欢迎指正。 基本实现原理: 1、排行榜用的数据结构是跳表 SkipList (跳表是一种有序的链表,随机检索、插入和删除的性能非常高,Redis和LevelDB都有采用跳表这种数据结构,是一种空间换时间 ...
分类:
其他好文 时间:
2018-11-30 13:47:19
阅读次数:
320
数据库反范式设计是一个老生常谈的话题,最近两年我用的也确实非常多,我个人觉得合理的反范式设计才是更合理的设计,严格的范式设计在某种程度上会加大开发的复杂度,并且带来性能上的耗损 对于反范式的优劣势,欢迎大家留言讨论 一、关系数据库三大范式回顾 第一范式:原子性,每一列都是不可分割的 第二范式:每个表 ...
分类:
其他好文 时间:
2018-11-20 15:09:22
阅读次数:
201
1.多线程定义: 在单个程序中同时运行多个线程完成不同的工作.多线程本质上是空间换时间.单个程序是什么?一个正在执行的程序就是进程.线程是什么?线程是程序中一个单一的顺序控制流程.线程是程序中最小的执行单位,与进程同样都为基本单元,在一些老式操作系统中是不存在线程这个概念存在的.在这类操作系统中是无 ...
分类:
编程语言 时间:
2018-11-12 11:17:14
阅读次数:
113
题目描述: 设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。 示例: 解题思路: 分析:题目的难点在于有delete操作的情况下,要保证getRandom( )等概率随机返回集合中的一个元素。 一般地,题目的对时间复杂度的要求越高,都需要使用更多的辅助结构,以“空间换时间”。这 ...
分类:
其他好文 时间:
2018-11-08 10:59:06
阅读次数:
542