heap不属于STL容器,它扮演者priority queue的助手。heap是一种完全二叉树,可由数组来实现,但heap需要动态改变大小,所以最终选择了vector作为底层容器。STL默认提供最大堆。
题外话:分析heap的源码就能清楚的理解堆这种数据结构的例程,而STL库代码的质量又很高,所以看堆的代码,STL源码是一个很好的选择。
为了满足完全二叉树的性质,新插入的元素一...
分类:
其他好文 时间:
2014-07-22 23:04:53
阅读次数:
363
如题Ubuntu自带的OpenJDK只有jre环境,不提供源码,所以我们还是需要去下载。 JDK6:http://download.java.net/openjdk/jdk6/JDK7:http://download.java.net/openjdk/jdk7/下载好了后,只需要解压下载包下的一个子目录:/jdk/src/share/classes/,解压的路径记好了,如:/home/simon/...
分类:
编程语言 时间:
2014-07-22 23:04:52
阅读次数:
445
-----------------------------------------------------------------
在www.infoq.com/cn网站上看了一本书叫《ThoughtWorks文集》,里边有一章讲的是“对象健身操”,其中提到了“拒绝使用else关键字”。那么如何“拒绝使用else关键字”呢?
1、如果程序中只有一个else...
分类:
其他好文 时间:
2014-07-22 23:04:34
阅读次数:
409
在我们ios的开发中gdataxml是一个常用的开源实现,很多第三方的库在实现里也会加入它的源码。我们在使用此类库或者直接使用gdataxml库时,切记要在工程中引入libxml2这个框架,否则编译会报错,提示类似下面:
Undefined symbols for architecture armv7:
"_xmlDocDumpMemory", referenced from: xxx
...
分类:
移动开发 时间:
2014-07-22 23:04:33
阅读次数:
329
代理模式是一种结构型模式,通常源于下边的情况:人们对于复杂的软件系统常常有一种处理手法,即增加一个间接层,从而对系统获得一种更为灵活,满足特定需要的解决方案。例如下图中,B有安全控制或者是缓存控制。B中存在A根本不需要知道的控制方式。A直接使用B,结构上复杂,实现也不方便。A直接使用B的方式,控制不够灵活,可能要用到A根本不知道的方式。增加一个间接层,从而对系统获得更为灵活、满足特定需要的解决方案...
分类:
其他好文 时间:
2014-07-22 23:03:32
阅读次数:
278
[源码编译]
前期准备:
确认电脑上安装好g++等开发环境,否则执行
sudo apt-get install build-essential
2. 确认电脑上已经安装好svn以便下载最新的源代码,否则执行
sudo apt-get install subversion
3. 确保proj4的安装
$ curl -O...
分类:
系统相关 时间:
2014-07-22 23:02:53
阅读次数:
2542
最近编程时,发现一个针对HashMap的一个提示:
翻译过来就是:用SparseArray来代替会有更好性能。
那我们就来看看源码中SparseArray到底做了哪些事情:
一、构造
从构造方法我们可以看出,它和一般的List一样,可以预先设置容器大小,默认的大小是10:
[java] view
plaincopy
public Sp...
分类:
其他好文 时间:
2014-05-01 21:57:37
阅读次数:
483
Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表。Redis小到可以存储几万记录的CACHE,大到可以存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大。Redis的核心数据结构就是字典(dict),dict在数据量不断增大的过程中,会遇到HASH(key)碰撞的问题,如果DICT不够大,碰撞的概率增大,这样单个hash 桶存储的元素会越来愈多,查询效率就...
分类:
其他好文 时间:
2014-05-01 21:56:59
阅读次数:
398
[前序]
首先关于GDAL源码方面,GDAL开源项目源码是使用C++语言所写,通过源码的编译可以生成支持一系列语言如c++/java/php/csharp/perl/python/ruby开发所依赖的第三方包或头文件。GDAL的同时支持不同平台下的编译生成,在Win平台下使用起来出现的问题较多,比如编译时选择不同的编译选项32位或x64位产生出不同的依赖库,还有中文路径、中文读写问题...
分类:
编程语言 时间:
2014-05-01 17:53:24
阅读次数:
1741
编译android-4.3.1_r源码并刷到自己的Galaxy Nexus I9250真机上
作者:雨水 日期:2014-04-30
编译源代码的目的还是为了自己修改源代码,然后还能够运行在相应的手机上,只有这样才有意义. 我手上有一部三星的Galaxy Nexus I9250, 代号为maguro。但是在目前google的官方未提供针对android4.4.2版本所对应的硬件...
分类:
移动开发 时间:
2014-04-30 22:17:38
阅读次数:
475