`
喻红叶
  • 浏览: 40818 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论
文章列表
Java 1.5新增的一项特性-注解。注解也称为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。注解不直接对源代码产生作用,源码会直接忽略注解。注解的用处在于其他地方:注解可以帮助编译器发现错误,消除警告;在编译期或者部署时,可以通过注解生成代码或其他文件;注解还可以在运行时发挥作用。注解的最广泛的应用是减少配置文件的编写,Java主流的框架都依赖配置文件运行,程序员为了实现某个功能,要写一份业务代码(也就是Java代码),同时还要在另一个文件编写配置信息(通常是xml)。注解的出现提供了一种将业务代码与配置代码统一的方式,减少了编写累赘的配 ...
将一个类的定义放到另一个类的定义内部,这就是内部类。 平凡内部类 平凡内部类就是最普通的内部类,没有static修饰类名,就像这样的类 public class Outer{ class Inner {} } 普通内部类能访问其外部类的所有成员,拥有所有成 ...
今天中午的时候有人问了我一个问题:求二叉树中节点的最大距离。这是《编程之美》上的一个问题。 花了一中午的时间总算解决了这个问题,有一点是很明确的:如果把树看做是一个图的话,它必然是连通的,任一节点总有 ...
基数排序 使用例子来讲基数排序是最直观的。假设有10个0~999之间的十进值数,分别是64 8 216 512 27 729 0 1 343 125,对这几个数如何使用基数排序呢?基数排序顾名思义跟基数有关系,这里的数都是十进制的,所以基数Radix = 10。十 ...
一个系统或者模块的类和类之间的交互如下图所示: 从图中可以看出,每一个类几乎都与另外所有的类有交互,如果类A发生了修改,那么类B,D,E,G,I等类也需要随着修改;反过来,如果其他几个类有变动,那么类A也需要修改。这个系统中,类与类之间耦合度太高,如果是一个真正的系统,那么会有比这多的多的类,如果类与类这间也是这样的交互关系,那就真是牵一发而动全身了,这个系统几乎就是无法维护,无法修改,无法扩展的。这是一个过度耦合的系统,在软件开发中,我们一定要避免这种情况的发生。可是该如何避免呢? 上图中的繁杂在于多个对象之间都有交互,从而导致耦合过密,不利于对象的修改和扩展。如果我们再引进一个对象扮 ...
在当下的中国医疗环境下,病人去医院看病,一般都需要自己去挂号,然后去门诊,医生诊断完成之后,去划价,然后取药。这个流程是医院强加给病人的,病人为了看病就只能屈从于医院的这种安排,病人必须掌握这种流程,必须去一一做这些事情,想当一个合格的病人或者病人家属还挺不容易的。如果把看病作为一个子系统,挂号,门诊,划价,取药就是这个子系统中的具体模块,我们给出一个示意性代码:/* 挂号的示意性代码 */ class Register { public void doRigister() { System.out.println("挂号成功,请去门诊候诊!"); } } /*诊断 ...
clone()方法的约定 Cloneable接口的目的是作为对象的一个混合接口,表明这样的对象允许克隆(clone),但是这个接口却没有定义clone(),这是它的缺陷:无法约束子类实现clone()方法。Object定义了一个受保护的clone()方法。Cloneable虽然没有定义clone()方法,但是却影响了Object.clone()方法的行为:如果一个类实现了Cloneable,调用Object的clone()就会返回该对象的逐域拷贝,否则抛出CloneNotSupportedException。这真是一种非常规的用法,Cloneable接口没有规定实现类的视图,却改变了父类受保护 ...
插入排序 插入排序是最简单的排序算法之一,对于N个元素的序列,需要进行N-1次的插入来完成排序。插入排序的算法: (1)对于位置P,0到P-1位置上的元素已经是有序的,P从1开始; (2)将P指向的元素放到[0,P]正确的位置,这样0到P位置上的元素也是有序的。 插入排序确实很简单,不需要过多的介绍,直接用一个示例来演示其过程,待排序列:2 4 6 1 3 5 总共有6个元素,所以需要5趟排序,P从1开始 (1)2是一个有序序列 (2)P=1,将4插入到正确位置,排序后:2 4 (3)P=2,将6插入到正确位置,排序后:2 4 ...
算法思想 快速排序(quicksort)是在实践中最快的已知排序算法,快速排序算法是一种分治的递归算法,对数组S进行快速排序的步骤: (1)如果S中的元素个数是0或者1,则返回; (2)取S中任一元素v,称之为枢纽元(pivot); ...
引言 激情火热的世界杯已经进行到了四分之一决赛,相信各位球迷都已熬夜熬的心肝脾肺肾俱虚。一场足球比赛包括以下几个部分:上半场比赛,中场休息,下半场,加时赛,点球大战。这五部分构成了一场完整的杯赛比赛, ...
Java有8种基本类型,每种基本类型又有对应的包装类型。在Java中,一切都以对象作为基础,但是基本类型并不是对象,如果想以对象的方式使用这8中基本类型,可以将它们转换为对应的包装类型。基本类型和包装类型的对应: int(4字节) Integer byte(1字节) Byte short(2字节) Short long(8字节)
Java从诞生时就以平台无关性作为卖点,Java程序步不直接运行在操作系统上的,而是在操作系统上又提供了一层虚拟机。虚拟机为Java程序员提供了一套规范,这套规范与操作系统无关,与操作系统相关的工作就交由Java虚拟机来完 ...
在Java中,方法调用是非常基本、非常频繁的行为,但是Java中方法是怎么调用的呢?我们先来看一下Java中的类方法和实例方法。 类方法和实例方法 根据Java语言规范(JLS 3th),静态方法的规定为: 被声明为static的方法叫做类方 ...
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。与单例模式对应的,多例模式中的多例类可以有多个实例,多例类也必须自己创建、管理自己的实例,并向外界提供自己的实例。本文会着重探讨单例模式 ,并把多例模式也介绍一下。单例类看似简单,实则暗藏了很多坑,稍不注意就会出错。 单例模式的特点 单例模式的要点有三个: (1)单例类只能有一个实例,将构造方法设为private,保证外部无法实例化该类,同时把它设为静态变量; (2)它必须自行创建这个实例,在类的内部创建,且只创建一次; (3)它必须自行向整个系统提供这个实例,提供一个静态的工厂方法,返回该类 ...
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。 jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id(使用jps查看),和所选参数。参考格式如下: jstat [ option vmid [ inter ...
Global site tag (gtag.js) - Google Analytics