`
文章列表
装饰者模式       继承是OOP程序设计的一大特点,但其实对于很多复杂问题来说,利用继承关系处理问题往往具有很高的耦合性,不利于代码的维护。利用组合很大程度上可以做到降耦。多 用组合,少用继承是OOP设计的重要 ...
(1) 为啥要用HahSet?       假如我们现在想要在一大堆数据中查找X数据。LinkedList的数据结构就不说了,查找效率低的可怕。ArrayList哪,如果我们不知道X的位置序号,还是一样要全部遍历一次直到查到结果,效率一样可怕。HashSet ...
代理(Proxy)实际上是一种设计模式。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作 ...
1、Tomcat5.x/6.0 卸载后重新安装出错                              问题提出: 正常卸载掉以前的Tomcat,重新安装Tomcat5.x/Tomcat6.0都会在安装过程中弹出一个 安 装到c:\program files\java\jre6\bin\client\jvm.dll 的对话框,对话框中显示f ailed to install tomcat6 service.check your settings and permissions 。下面有三个按钮:重试、 ...
public class Test{ public static void main(String[] args){ int i=1; System.out.println("主线程:"+i); } }        当我们运行上面这段简单代码的时候,很多人都会认为虚拟机只运行了一个主线程。其实不然,虚拟机还会运行一些服务性的线程,比如垃圾回收线程。而这一类线程就是守护线程 。        在Java中有两类线程:User Threa ...
根目录 ("/") :目录树的起点。 其下包含了 几个重要的子目录 (1) "/usr" 目录包含所有的命令、程序库、文档和其他文件。这些文件在正常操作中不会被改变的。 这个目录也包含你的Linux发行版本的主要的应用程 ...
★ 线程状态        Java虚拟机将线程运行过程分成四种状态 。 (1) New 新生;(2) Runnable 可运行;(3) Blocked 阻塞;(4) Dead 死亡。      值得注意的是: 线程的可运行状态并不代表线程一定在运行(runnable != running ) 。 大家都知道:所有现代桌面和服务器操作系统都使用了抢占式的线程调度策略 。一旦线程开始执行,并不是总是保持持续运行状态的。当系统分给它的时间片(非常小的运行时间单位)用完以后,不管程序有没有执行完,线程被强制放弃CPU,进入就绪状态,直到下次被调度后开始继续执行。也就是说, Runnable可运行状态的 ...
★ Java对象赋值   Employee e1=new Employee("李"); //Employee是一个自定义类 Employee e2=e1; //赋值对象 e2.setName("王");//改变对象e2的名字 System.out.println(e1.getName()); //打印e1的结果: 王 Employee e1=new Employee("李"); //Employee是一个自定义类 Employee e2=e1; //赋值对象 e2.set ...
      在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto binding) 。     ★ 静态绑定机制 // ...
★ 类常量       Java类常量(final修饰) 的值在编译阶段就已经写入了class文件的常量池中(可见《Class文件内容及常量池 》)。该类在JVM中运行的任何阶段都不可能改变这个常量值。这也就形成了Java常量定义的两个语法规定:( ...
      方法调用(call by) 是一个标准的计算机科学术语。方法调用根据参数传递的情况又分为值调用( call by reference ) 和引用调用( call by value ) 。江湖上有很多关于这两种调用的定义 ,最通常的说法是传递值的是值调用,传递地址的是引用调用。这其实很不恰当,这种 这些说法很容易让我们联想到Java的对象参数传递是引用调用,实际上,Java的对象参数传递仍然是值调用 。       我们首先用一段代码来证实一下为什么Java的对象参数传递 是值调用。 public class ...
软件开发中一个古老的说法是:80%的工作使用20%的时间。80%是指检查和处理错误所付出的努力。在许多语言中,编写检查和处理错误的程序代码很乏味,并使应用程序代码变得冗长。原因之一就是它们的错误处理方式不是语言的一部分。尽管如此,错误检测和处理仍然是任何健壮应用程序最重要的组成部分。   Java 提供了一种很好的机制,用强制规定的形式来消除错误处理过程中随心所欲的因素:异常处理。它的优秀之处在于不用编写特殊代码检测返回值就能很容易地检测错误。而且它让我们把异常处理代码明确地与异常产生代码分开,代码变得更有条理。异常处理也是Java中唯一正式的错误报告机制。         1、抛出异常 ...
Java中判断相等关系一般有两种手段:(1) “==”关系操作符  (2) equals()方法。 显然,基本数据类型变量之间只能用"=="。而对象之间两种手段都是合法的。但是有很多初学者会在“判断Java的相等关系”上面犯错误,这里我 ...
Global site tag (gtag.js) - Google Analytics