`
文章列表
上篇文章后半部分提到,我们在估算1亿条整数放到内存中,会占用多大的内存的时候,仅仅按照每个Integer 32bit算了,即按照原始类型int来估算的,结果严重超出预料。 仔细想想,对象在jvm中是怎么存的呢? 首先,java对象要包含的基本数据至少要有两部分: 1、类以及超类的实例声明的实例变量; 2、指向类数据的引用,jvm需要通过此引用找到该对象的(可能存在的)方法表、类型信息。其中类型信息包括类型基本信息、常量池、字段信息、方法信息、类变量信息、指向Class的引用、指向ClassLoader的引用等。这些类数据都放在方法区。 另外,还有一些其他信息: 3、多个线程 ...
提取出某日访问百度次数最多的那K个IP   基本思路:ip最多2^32个,放入内存也要40G,基本不现实。所以只有用外排序,把ip分割成到不同的小文件里,然后统计次数后,汇总。另外,ip本质就是一32bit的数值,不要拘泥于字符串表示的ip。 思路也可参考此处问题一 基于以上思路,看代码:   package com.kingdee.gmis.mass.data.ips; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader ...
TOP K堆就是堆,只是TOP K堆只用维护固定数量的元素,每次加进来新的,都要判断是否替换掉堆顶元素,如果需要,则删除堆顶元素,放入新元素,并重新构造堆。可以参考这里     package com.kingdee.gmis.common; import java.util.Random; /** * * @author hua_fan * */ public class TopNHeap<T extends Comparable<? super T>> { private int size; private int ...
堆排序算法,详细内容参考这里和这里,堆排序除了排序外,还可以用来从一堆数种选取top K(最大/小)个的对象/数字   以下是一个最小堆的实现代码,当然,也可以做最大堆用,T实现Comparable接口的时候,compareTo返回值颠倒下就行了。   package com.kingdee.gmis; /** * * @author hua_fan * */ public class HeapSort<T extends Comparable<? super T>> { private int size; private ...
大学没有好好上机敲算法,虽然考试前一周多时间把教材从头至尾完整看了一遍,也基本理解了,但是没有好好去敲过最基本的数据结构和算法。 毕业后又一个大学都过去了,没有认真再学习,工作中也没怎么写过,当然也不是完全没写过,还是写了个Huffman编码树和C4.5决策树展示算法的。 忽然觉得还是需要学习下的,于是就捡起来吧。一边敲点网上面试题的实现,一边捡起数据结构和算法。就算工作中真的再也用不到,至少也可以锻炼下思维吧。 接下来一系列内容,主要用Java实现,偶尔也会用Javascript来实现。

Java里操蛋的泛型

    博客分类:
  • java
BT的#java泛型#,我只想创建个泛型实例! 悲惨的是就连ArrayList<T>里边的elementData都是Object[]...不是T[]... 更悲惨的是,Collections.sort<T>处的T还是extends Comparable呢 等到实现代码里头调用到Arrays.sort的时候,传进去的就只是Object[]了 public static <T extends Comparable<? super T>> void sort(List<T> list) { Object[] a = ...
先写个例子,用Java启动tomcat package com.yymt.pf.rpc.loadbalance; import java.io.File; import java.io.IOException; public class ExecFileUtil { public static void main(String[] args) throws IOException { run("cmd /C start startup.bat", null, new File( "E:\\develop_tools\\apa ...
  >>@variable声明数组变量,如@arr=()//空元素;$arr[0]访问数组第一个元素 >>qw quoted word加引号的单词,可以用来声明字符串数组:@arr = qw(hello world) 等价于 @arr = ('hello','world') >>%variable声明hash表,%hash_var=(1,'a',2,'b');或者%hash_var2 = ('a' => 'aa','b' => 'bb') >>$var{key}访问hash某个key的值。如$hash_var{1} == ' ...
前几天,又是工作上的问题。发现一个对象实例在instanceof XXX的时候,竟然返回了false,看看对象的内部结构,明明跟XXX的内部定义一样的。于是乎开始怀疑instanceof是不是有bug了,因为之前在创建一数组,在调了一圈之后,instaceof Array竟然也是false。不过后来阿飞调试之后,发现完全是因为跨页面传递了对象导致的。。。现将问题重现一下: 1、创建一个页面outer.html,并添加一个iframe <iframe align="center" border="1" width="70%" t ...
近来工作中遇到一问题,查看单据信息的时候,要禁用刷新功能。这里列出一个初步的实现: 1、打开新页面的时候,要这样打开: <a href="#" onclick="window.open('child.html','content','toolbar=no,menubar=no,location=no')">   这样在IE下边,新打开的页面会没有工具条、菜单栏和地址栏。而在FireFox里边,却依然有地址栏,会导致光标在地址栏的时候,仍然可以刷新。2、在新页面里,要禁用掉F5,F6和Ctrl+R var initFn = functio ...
先看一个例子: Gmis.ext.Animal = function() { this.run = function() { Gmis.util.printMessage("Animal run"); }; this.swim = function() { Gmis.util.printMessage("Animal swimming"); }; this.shout = function() { Gmis.util.printMessage("Animal shout&quo ...
本文列举了《JavaScript高级程序设计:第二版》书中讲到的6种创建JavaScript对象的模式,这里有英文版下载。 代码里边用到的一些公用方法本文后边有附。附件为源码。 1、原型链 Gmis.inheritance.Animal = function(nickname, legCount, characters) { this.nickname = nickname; this.legCount = legCount; this.characters = characters; } Gmis.inheritance.Animal.prototype = { con ...
本文列举了《JavaScript高级程序设计:第二版》书中讲到的8种创建JavaScript对象的模式,这里有英文版下载 代码里边用到的一些公用方法本文后边有附 1、最简单的方式 /****************************************************************************************** * 1、最简单的方式 * 缺点:如果创建类似的对象,会出现大量的重复代码 */ var person1 = new Object(); person1.nickname = 'maitian'; person1.a ...
1、开发工具     一般使用eclipse的spket插件做JavaScript的开发,支持ExtJs和jQuery等的自动完成和链接源码功能 2、调试工具   2.1、IE8内置的调试工具。IE8的调试工具目前并不太好用,页面刷新后,可能会加载新的脚本文件,导致在原来文件中打的断点不起作用;直接查看全局变量值也不是很方便,不像firefox一样,把鼠标放上去就可以看到;调用堆栈信息显示的也不直观,如果某个文件过大,点到相关文件的堆栈链接进文件的时候,会近1分钟才有反应。     这里有些资料可供参考:IE8“开发人员工具”使用详解上(各级菜单详解),IE8"开发人员工具" ...
这部分主要介绍bit string/binary、reference、port identifier、pid、record。这些数据类型都是erlang的数据类型,python是没有这些数据类型的 1、bit string和binary binary是一种用来存储大量raw type数据的数据类型,binary存储数据比lists和tuples的空间效率高。如果binary可打印字符串,就会输出为字符串,否则就输出为整数序列。参考资料 29> <<67,68,69>>. <<"CDE">> 32> < ...
Global site tag (gtag.js) - Google Analytics