posts - 30,  comments - 28,  trackbacks - 0
华为笔试题:计算字符串“010111001100....”中‘0’和‘1’连续出现的次数。

#include<iostream>;

void main() {

   char *charArray="01000111100011100111100001";
   int max[2]    ={0,0};
   int count[2]  ={0,0};

  while(*charArray){
      
  int   index     =*charArray-'0';

  count[index]++;
  count[index^1] =0;

  if(count[index]>max[index])
        max[index]=count[index];

  charArray++;
  }
 
 std:cout<<"Max times of 0 is"<<max[0]<<std:endl;
 std:cout<<"Max times of 1 is"<<max[1]<<std:endl;
}
//~:end the codes

程序代码的艺术化,呵呵
posted @ 2006-09-26 03:57 murainwood 阅读(344) | 评论 (0)编辑 收藏

自己想的一道题,算是30%原创吧 
String a=new String("Hello");
  a+="World";

 问:a的内容最后是什么?
         这两个语句,共生成了几个Java对象?

简单不?看样子非常简单吧,呵呵。
第一问:a(确切地说a引用的内容)是HelloWorld
 
第二问: 两个语句,一共生成了几个对象?
    看第一个语句,说实话,用这种方式初始化String,实在是代码垃圾。这先不管啦。这个语句是老生长谈,一个或两个对象。
    为何?第一次执行时创建了二个, 一个为字面量"Hello"(它本身是一个String对象), 一个为new String("Hello")(它是通过new创建的, 功能上和字面量"foo"完全一样, 但却是另一个对象).

第二次执行时, 只创建一个, 即new String("Hello"), 这是因为: "Hello"作为String字面量, 是存在于String Pool里面的, 第二次使用它时, 直接指向原有的String, 而不再创建新的String; 但new String("Hello")却每执行一次都创建一个新的,完全一样的String对象.

   第二个语句呢?
     3个对象。
     首先是“World”,毋庸质疑。
     那么然后呢?注意了,String是final类,不可改变。平时我们写Java会有个错觉,stringA+stringB就以为是前者尾巴接上后者脑袋。的确,在C/C++里就是如此。一点儿错都没有。
    但是Java不是,Java设计者为了更多方面的考虑,他们把String设计成了final。
    看一下JVM汇编指令吧
  0: aload_0
   1: invokespecial #1; //Method java/lang/Object."<init>":()V
   4: return

static void inti();
  Code:
   0: new #2; //class java/lang/String
   3: dup
   4: ldc #3; //String Hello
   6: invokespecial #4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9: astore_0
   10: new #5; //class java/lang/StringBuilder
   13: dup
   14: invokespecial #6; //Method java/lang/StringBuilder."<init>":()V
   17: aload_0
   18: invokevirtual #7; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   21: ldc #3; //String Hello
   23: invokevirtual #7; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   26: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
   29: astore_0
   30: return

}

仔细看一下我做的标记,JVM给我们生成了一个StringBuilder类。(我用的是JDK5,旧版本是StringBuffer类,单单这一点小改动就能让Java的速度提高很多)。让后用append方法载入Hello和World两个String的引用(明确地说转化成字符数组)。
当载入完成后,StringBuilder实例调用toString,生成一个新的String实例(暂时称为TempString)。
 最后把引用a指向TempString


总结:两句语句总共生成了4个或5个Java类实例

PS:Java中没有指针实在是太不方便了。特别是在操作原始数据类型的时候。个人认为Java应该在这点上学学C#。指针不是洪水猛兽,对优秀程序员而言,指针是编程中的一种享受。
        希望“海豚”(Java7)能出现指针吧---很不现实,还是等开源后的Java版本吧


posted @ 2006-08-14 03:18 murainwood 阅读(495) | 评论 (4)编辑 收藏
下学期会有找工作这类麻烦的事情,不过不管怎么说,还是以好好学习为主吧。
 1.学一种操作系统,Solaris,FreeBSD,Linux三者选一,至少达到熟练使用的程度。
 2.继续学习Java,巩固深入Java基础,JVM,反射,JNI,JDBC,
 3.学会一种Web框架,一种数据库持久框架
 4.放弃C++,复习巩固深入C
posted @ 2006-08-11 14:49 murainwood 阅读(176) | 评论 (0)编辑 收藏

Stack 和Heap的差别,上次华为研究生笔试题就考过。C语言的我很清楚:
 Stack: automatic variables within functions
  Heap: global variables (storage class external), and static variables

简而言之,最大的不同是:前者是函数变量的空间,后者是程序变量的空间

另外,Stack上分配内存是安全的。而Heap上分配内存则没那么爽了。调用malloc分配内存,是在Heap上开辟空间。一定要注意释放。否则老是memory leak
 
昨天有人问我JVM中的Stack和Heap的差别,当时心不在焉地照搬C语言敷衍了事。
中午起床,没事闲着看帖子。无意中想起这个问题,在Google搜索了一番。发现昨天的回答出了问题:
“ It is useful to know that these two different kinds of memory exist in Java. Stack memory is the program's memory, and heap memory resides outside of the program.”

Stack是程序内存,Heap内存存在于程序之外。这样子看起来和C语言中地Heap有些像诶(C语言中的Heap也是在mian()之外的)。再仔细看看

Stack memory stores primitive types and the addresses of objects. The object values are stored in heap memory.

类实例存在于Heap。类实例的的指针在Stack中存放。难怪JVM没有text segment ,在Stack就囊括了text segment

这样做的好处,就是为了实现Java的垃圾回收机制。任何的类对象实例都在Heap中,在Stack中有它们的引用。当所以的线程都不在需要某个引用时,JVM的那个资源回收线程就会把该实例从Heap当中清楚掉。

文章告诉我,回收线程要做全局的检测来确定某个实例是否已经“无用”了。这样子,我们可以在代码上做些工作,来给回收线程加速。
Test t = new Test();
 t.someAction();
 // all done
 t = null;
实例t不再有用时,就把他置为null,告诉JVM:你不用在Stack和Heap之间自己校验啦,我已经做好了标记,放心回收吧。

小结:Stack: Primitive data types(primitive types), the addresses of objects(=references).
                        Heap:  objects.
前者:基本类型和实例地址(引用),后者:类实例

posted @ 2006-07-31 16:28 murainwood 阅读(731) | 评论 (2)编辑 收藏
这是家执着的公司,在我心目中,她远比“特立独行”的苹果要伟大得多。现在的苹果,是一名衣着怪异的流行歌手,在舞台上耍cool。那么Sun,就是名失意的求道者。
祝Sun一路走好,一个承载着计算机业先贤们梦想的公司。
posted @ 2006-07-31 15:44 murainwood 阅读(168) | 评论 (0)编辑 收藏
  发发牢骚,自从课设做了SWT /JFace的客户端应用软件,感觉超好。优美的代码,清晰的结构,典雅的布局,简洁的事件机制,SWT太迷人啦。不愧为IBM的杰作,Java桌面开发的新贵。可惜就是没人用。不就是多了和平台相关的dll文件和几个Jar资源包嘛,批处理写得熟溜得人才不嫌麻烦呢,咯咯。

   Swing嘛,怎么说你好呢,你得结构是很清晰,论MVC的分离性,确实我觉得比SWT做得优秀些。可是你冗长的代码,麻烦的事件相应机制,有些让人不习惯的布局,特别是奇怪的界面....不是偶说你,偶不想理你啦。
 
   Java的GUI程序本来,我本来就不打算深究。精通一个SWT,了解一个Swing就够啦

  扯上个无关的,MFC,我越了解你就越讨厌你,越明白你就越恶心你。还好,当初没有误入歧途,把你当成宝贝(反正我估计基本不做桌面软件,^_^)
posted @ 2006-07-31 06:12 murainwood 阅读(769) | 评论 (0)编辑 收藏
没事可干,花了半小时做完了3到意法半导体的笔试题。C语言,极简单的算法罢了,全是记事本敲,然后g++编译。
温习C语言还是很必要滴。荒废了好久,我一直喜欢用C语言的底层思维来考虑Java,Java没有“指针”,我是一直很不爽的。
  意法半导体好歹也是家不错的公司啊?出的C语言算法题目怎么连华为的都不如?不过上次参加学院华为那个笔试,人家是特招研究生的。俺混进去给人做参考,感觉非常不错。可惜最后没留下个假名,手机号码也没写,唉...
  最丢人的还是那次法国汤姆逊,连OSI七层网络都忘了。好好吸取教训
posted @ 2006-07-31 06:01 murainwood 阅读(237) | 评论 (0)编辑 收藏

    项目第二阶段,管理客户端和管理服务器。架构C/S,技术RMI
    今天上午做了一个简单的测试系统,用来测试前两天所编写的构件:写了一远程服务器,一个命令行客户端。OK,编译时也没出错。
    然而运行起来,可怕的事情发生了:先前写的实体类无法传送给客户端。程序抛出了异常。仔细观察,发现是产生了对象无法序列化的IO异常。
    RMI底层通过TCP协议进行通讯,ObjectInputStream和ObjectOutputStream来负责对象的输入和输出。实在是不明白,以前做RMI系统实验的时候,根本没遇到这种序列化异常:传String就传String,传Vector就传Vector。
   猜想应该是我写的那些类无法序列化的缘故。参考了API文档,发现这个东西:MarshalledObject,可以对其构造方法的对象进行序列化(说穿了就是变成字节流)。
  迅速改造了测试程序,OK,能穿对象了。但是.....序列化以后无法反序列化!天,类对象实例全部变成了组毫无意义的字节数组。
  应该有其他的办法,SUN的Java文档实在不能和MSDN相比,太过于简单啦。
  经过3个小时的资料查阅和测试,终于找到了种正确而且异常简单的方法:对先前的代码进行简单的重构:让他们统统实现java.io.Serializable接口。只改一行代码,全部解决!
  ^_^

posted @ 2006-07-24 14:44 murainwood 阅读(263) | 评论 (0)编辑 收藏
这么多年来一直喜欢着那个女孩。我们是很好的朋友。喜欢她的样子,她的笑容,她的性格和她的言谈。
这么多年,似乎也喜欢过其他的人,然而就像烟雾一样,或长或短的时间里,慢慢消散。仿佛只留下浅浅的痕迹

就这样一直喜欢着她好了,也许能够变成永恒
posted @ 2006-07-21 22:49 murainwood 阅读(133) | 评论 (0)编辑 收藏
http://www.apache.org
著名的Apache基金会官网,经常看看很有收获

http://www.eclipse.org
Eclipse基金会官网

http://saloon.javaranch.com
翻译过来叫Java会客厅比较好吧

http://www.matrix.org.cn/
不用说了,国内比较好的Java论坛

http://www.csdn.net
国内最大的IT开发者站点....太浮躁,很喧嚣

http://www.mindview.net/
Bruce Eckel的网站,很值得一看




posted @ 2006-07-21 20:29 murainwood 阅读(161) | 评论 (0)编辑 收藏
仅列出标题
共3页: 上一页 1 2 3 下一页 
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

如果真的给你一片天,你敢不敢要?

常用链接

留言簿(3)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜