摘要: 好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系。下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强、缺陷更少的程序。 我不要自我重复 — 这也许是在编程开发这最最基本的一个信条,就 阅读全文
posted @ 2011-08-18 11:41 petercao 阅读(496) 评论(0) 推荐(1)
摘要: 用GDB调试程序http://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F&variant=zh-hans使用 GDB 调试 Linux 软件http://www.ibm.com/developerworks/cn/linux/sdk/gdb/ 阅读全文
posted @ 2011-08-14 13:47 petercao 阅读(311) 评论(0) 推荐(0)
摘要: 本文为大家介绍软件设计中的一些原则,都是经过长期经验总结出来的知识,每一个程序员都应该了解,相信对大家在进行软件设计的过程中会有很大帮助。Don’t Repeat Yourself (DRY)DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个新的方法。参考:http://en.wikipedia.org/wiki/KISS_princ 阅读全文
posted @ 2011-08-12 16:05 petercao 阅读(373) 评论(0) 推荐(0)
摘要: 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相. 阅读全文
posted @ 2011-08-12 14:59 petercao 阅读(586) 评论(0) 推荐(0)
摘要: android低版本工程(如1.5)放到高版本环境中(如2.2)可能会上述错误,解决方法如下:1。 如果不修改android sdk版本,则使用project clean 命令作用于某工程即可。 (该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级)2。 如果修改android sdk版本,则需要以下几个步骤: 1)修改SDK选择工程,build path--> configure build path ---> library 删除引用的低版本SDK,然后add ExternalJARs,选择高版本SDK,OK,保存 2)修改classpath文件该文件可能存在该项:& 阅读全文
posted @ 2011-08-12 14:49 petercao 阅读(223) 评论(0) 推荐(0)
摘要: SQL Server 开发指南http://www.blogjava.net/hoojo/archive/2011/07/21/354788.html 阅读全文
posted @ 2011-08-11 18:36 petercao 阅读(480) 评论(0) 推荐(0)
摘要: JDOM 操作XMLhttp://www.blogjava.net/hoojo/archive/2011/08/10/356264.html使用Dom4j操作XMLhttp://www.blogjava.net/hoojo/archive/2011/08/11/356310.html 阅读全文
posted @ 2011-08-11 18:35 petercao 阅读(177) 评论(0) 推荐(0)
摘要: 1. String 类 String 类是属于不可变类,任何对String的操作都会引起新的String对象的产生 String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。 因此String的操作都是改变赋值地址而不是改变值操作Java代码StringS1=“abc”;For(intI=0;I<10000;I++){S1+=“def”;S1=“abc”;} 这样操作后,如果GC没 阅读全文
posted @ 2011-08-11 18:33 petercao 阅读(408) 评论(0) 推荐(0)
摘要: 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件. 因此如果你的Activity里如果用到别的layout,比如对话框上的layout,你还要设置对话框上的layout里的组件(像图片ImageView,文字TextView)上的内容,你就必须用inflate()先将对话框上的layout找出来,然后再用这个layout对象去找到它上面的组件,如: Viewview=View.inflate(this,R.layout.dialog_l... 阅读全文
posted @ 2011-08-11 14:51 petercao 阅读(332) 评论(0) 推荐(0)
摘要: volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void test(){do1();while(flag==0);do2();} 这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。变量flag的值由别的程序更改,这个程序. 阅读全文
posted @ 2011-08-11 11:00 petercao 阅读(417) 评论(0) 推荐(0)