`
文章列表
簇索引并不是索引的一种分支类型,更确切的说,它是数据存储的一种方式.它和普通索引仅仅在实现上有着不同的区别,Innodb的簇索引实际是将索引和数据存储在同一B-Tree中的存储结构.当某表中含有簇索引,表中的数据实际是存储在索引树的叶节点中.所谓的"簇",意思着包含相邻键的数据也存储在相邻的区域中.每张表只能存在唯一一个簇索引,因为你总不能把一份数据同时存储在两个地方.因为索引的实现是各个存储引擎实现的一部分,不是所有的存储引擎都只是簇索引.目前有solidDb和Innodb对簇索引提供了支持.我们这里主要对Innodb的簇索引进行讨论,但是其中的一些概念都适用于所有支持 ...
有的时候你需要对包含很长的文本数据进行索引,这不仅让索引占用非常大的空间,索引的检索效率也会非常低下,有一种策略是在该列上建立哈希类型的索引,但是有时候我们不想因为索引值的特殊性(长度)而增加它的维护成本,所以,我们有一种更通用的方式来解决上面的问题.   首先应该想到的是截断索引长度,通过对文本数据的前缀字符进行索引,达到不仅能节省空间,而且会使一部分查询变得快速,但是如果文本数据的可选择度很低,这种方式的性能提升就不是那么明显了.这里,索引的可选择度指的是索引列包含的唯一值数量与索引列所有数据行数的比例(T),一个高选择度的列索引会使MySQL在检索时过滤掉更多的数据,最好的一种情况 ...
我相信在绝大部分的mysql应用中,存放日期时间的字段类型都会选择使用datetime或者timestamp类型,datetime的日期范围从1001到9999年,采用8位整数将日期转换为'YYYYMMDDHHMMSS'的形式进行存放.timestamp就是unix时间戳(1970-2038),采用4为整数进行存储,并且默认提供自动更新功能.所以,很多人或者文章都会说在时间范围允许的情况下最好采用timestamp进行日期类型值得存储.   我做了对于datetime和timestamp字段进行不同情况下的查询操作的benchmark(使用jdbc作为app层进行数据获取),得到如下结果: ...
在mysql中执行查询时,如果没有将查询条件(条件列)隔离出来,那么查询引擎则无法利用建立在该列上的索引进行数据获取.这里的"隔离"意味着查询条件字段不能作为表达式的一部分出现,所以,如果在查询语句中指定表达式条件,就必须单独将条件列置于表达式的一边.举个简单例子,   SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5;  ,mysql无法对上述的actor_id进行索引查询,尽管从人们能一眼看出actor_id为4,但是mysql不会对该表达式进行计算.这种计算完全靠你来完成的,你应该养成简化查询语句 ...
这时一篇关于面向对象程序(软件对我来说还太宽泛)中组合和继承的概念比较文章翻译,原文:http://www.artima.com/designtechniques/compoinh.html,翻译的不好请见谅.   组合与继承-组织类关系的两种基本方法,Bill Venners,于1998年10月发布于javaworld           摘要           在我的Desion Technique系列的这个部分中,我对组合和继承的可扩展性及性能进行分析,并且提出几点使用这两种方法的准则.   软件系统设计的一个基本步骤是明确不同类间的关系.这其中有两种基本的方法即继承和组 ...
        java在linux上调用本地第三方进程时,有时候会出现阻塞的情况如终端标准输出阻塞,java调用进程停滞.我能想到得一点是在被调用程序中调用了c标准io函数导致的缓冲区阻塞的原因,java调用的进程会将第三方程序的stdin,stdout,stderr导向到java进程中,所以,如果你不读取三方进程的标准流(如果有的话),就会出现阻塞情况.         我的机器:fedora14,j2se1.6.0_23,获得到的java进程标准输出缓冲区大小为64k.

java动态编译

1.java通过getSystemJavaCompiler得到的是com.sun.tools.javac.api.JavacTool(应该吧)   2.如果不存在jdk的话(只安装jre),搜寻路径是System.getProperty("java.home")+lib+tools.jar;   3.编译时如果没有指定class生成路径,会在System.getProperty("user.dir")下生成字节码文件,如果需要指定生成路径,可以通过指定编译参数e.g:   String[] path = new String[]{"- ...

关于抽象

编程是将事物从客观体中抽象出来的过程。
翻译自:hadoop权威指南;   和RDBMS的比较:           为什么我们不能在许多磁盘上运用数据库机型大规模批量分析?为什么MapReduce是不可或缺的?           问题的答案来自于另一个磁盘的发展趋势:寻道时间的提高远不 ...
其实我一直在想一个问题,为什么我觉得学习计算机算法比高中的数学难?   记得高中的数学那是信手撵来(当然不是每一道题目),不谈学得有多好,但是起码对待每一道数学题都有自己的思路,想法,一般都能解出来,但是为什么学习计算机算法的时候就没有这种感觉呢。宏观上看过去第一眼肯定是计算机算法一般都是文字性表述,应该比高中的数学逻辑简单吧。但是,为什么学习计算机算法就感觉特别不自然。对于简单的题目套用简单的解法思路都好难实现出来,难道是我的脑袋退化了?   不过,客观上讲,大学课程,当然要比高中课程层次要高。   由于我看的是算法导论,所以讲的比较清楚(PS:翻译不说有多好,但是肯定会有晦涩的地 ...
1.获得给定小于给定key中的最大值,如果包含给定key,则返回该key;         不谈找到指定key,这个问题就是寻找如果将给定key插入到树中,其后趋。如果是获得大于key中的最小值,则是寻找将该值插入到树中的前趋。         2分查找树中的中序遍历就是按升序排列的数列。 K floorKey(K key){ 160 K p = root; 161 while(p!=null){ 162 if(key>p){ 163 ...
采用树形结构,根是object,将子类的对象构成其节点。。   堆,应该是小根堆,因为对象不管是怎样的方式考虑,貌似object的key是最小的。。方便了初始化类的实例的时候,找到其父类,查找效率,优化的树形结构很好。   我承认我低端了。。。
Notice that connect just filters the packets sent and received; that is, it does not establish a real connection with the remote host, so the method itself does not send anything and never fails, unlike TCP     我承认我低端,调用connect不可能返回false;   上面是引用的:http://www.techrepublic.com/article/using-datagr ...
说起端口,对于网络编程的人来说已经很熟系了,我原来以为我也很熟悉,可是当我深入了解的时候,计算机系统中的端口不仅仅是一个入口,可能很多人会说端口是“计算机与外界交流的出口”,其实我很好奇为什么是“出口 ...
c中关于自增操作我测试了一小段代码:   int i = 0; int increment(){ int j = 0; return ++j; } void main(){ ++i; } ~ ~ ...
Global site tag (gtag.js) - Google Analytics