
java程序开发
文章平均质量分 61
shuailangzi
这个作者很懒,什么都没留下…
展开
-
java对象的强引用,软引用,弱引用…
众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果原创 2014-09-03 12:15:50 · 338 阅读 · 0 评论 -
Buffer和Cache的区别
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。 缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即原创 2014-09-03 12:15:46 · 338 阅读 · 0 评论 -
java中抽象类
通过继承它实现多态,后期绑定,可以为将来要实现的东西做好接口,实现重用性,例如:abstract class A { public abstract void doSomething();}class B extends A { public void doSomething() { System.out.println("do B"); }}原创 2014-09-03 12:15:57 · 302 阅读 · 0 评论 -
风雨20年:我所积累的20条编…
原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你在本文中看到自己的身影。从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为转载 2014-09-03 12:16:14 · 336 阅读 · 0 评论 -
java修饰符:public、protected、d…
public权限最大,同类,同包,不同包,同包子类父类之间,不同包子类父类之间都可以访问。 java默认的权限是default,即friendly(注:friendly 在java中没有,是c的说法。)同类,同包,同包子类父类都可以访问。 protected受保护的,同类,同包,同包子类父类,不同包子类父类都可以访问 private 私有的权限最小,同类可以访原创 2014-09-03 12:16:19 · 407 阅读 · 0 评论 -
java修饰符:volatile关键字
volatile关键字 不常用 Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始原创 2014-09-03 12:16:25 · 356 阅读 · 0 评论 -
java修饰符:static关键字
static关键字 static修饰符可以用来修饰类的成员变量,成员方法和代码块。 用 static 修饰的成员变量表示静态变量,可以直接通过类来访问。 用 static 修饰的成员方法表示静态方法,可以直接通过类名来访问。 用 static 修饰的程序代码块表示静态代码块,当JAVA虚拟机加载类时,就会执行该代码块。原创 2014-09-03 12:16:29 · 325 阅读 · 0 评论 -
java.util.Iterator(迭代器)
java.util.Iterator 接口描述的是以统一的方式对各种集合元素进行遍历 / 迭代的工具,也称“迭代器”。迭代器( Iterator )模式,又叫做游标( Cursor )模式,是用于遍历集合类的标准访问方法。 GOF 给出的定义为:提供一种方法访问一个容器( container )对象中各个元素,而又不需暴露该对象的内部细节。java.util.Iterator 接口的定义:原创 2014-09-03 12:15:44 · 1098 阅读 · 0 评论 -
java修饰符:Synchronize关键字
Synchronize 关键字 先提出问题,如果开启多线程同时操作同一实例变量,Thread-0线程从主内存中取出的值a 为1,然后a++; Thread-1线程也从主内存中取出的值 a 进行a+=2操作;Thread-0存入2到主内存中,Thread-1也存入,这样就覆盖了Thread-0存入的值. 原因是在JAVA的内存模型中,是每一个进程都有一个主内原创 2014-09-03 12:16:27 · 501 阅读 · 0 评论 -
Java语言提供的clone()方法、深克…
所有的Java类都继承自java.lang.Object。事实上,Object类提供一个clone()方法,可以将一个Java对象复制一份。因此在Java中可以直接使用Object提供的clone()方法来实现对象的克隆。 需要注意的是能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个Java类支持被复制。如果一个类没有实现这个接口但是调用了clone()方法,原创 2014-09-03 12:16:36 · 456 阅读 · 0 评论 -
java修饰符:transient关键字
transient关键字 首先是JAVA的序列化,简单来说就是将某一个类存储以文件形式存储在物理空间,下次再从本地还原的时候,还可以将它转换回来,这种形式便利了网络上的一些操作。 序列化只能保存对象的非静态成员交量,不能保存任何的成员方法和静态的成员变量,而且串行化保存的只是变量的值,对于变量的任何修饰符都不能保存。 以文件形式描述某些信息时,容易涉及到安全问题,原创 2014-09-03 12:16:23 · 425 阅读 · 0 评论 -
java.lang.Thread 和 ja…
thread是类runnable是接口 实现多线程有两种方式:1.继承Thread,然后重写他的run方法2.实现Runnable接口,并实现他的run方法 启动线程时也有区别:继承Thread的类直接调用start方法即可实现Runnable接口要这样启动runab :是实现Runnable接口类的对象Thread thr = new Thread(runab);thr.原创 2014-09-03 12:15:59 · 434 阅读 · 0 评论 -
Comparable实现对象排序
当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。下面通过两个例子分别用Comparable和Comparator实现对User对象中年龄排序。 1.通过实现Comparable接口,根据User的年龄进行排序。 Java代码 import java.util.Arrays;原创 2014-09-03 12:15:55 · 412 阅读 · 0 评论 -
Java Callable用法
Callable 和 Runnable 的使用方法大同小异, 区别在于: 1.Callable 使用 call() 方法, Runnable 使用 run() 方法 2.call() 可以返回值, 而 run()方法不能返回。 3.call() 可以抛出受检查的异常,比如ClassNotFoundException,而run()不能抛出受检查的异常。 Callable示例原创 2014-09-03 12:16:03 · 436 阅读 · 0 评论 -
java中重载和覆盖区别
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型、参数个数、参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:voida ()和int a() ,如果调用a(),出现歧义) 3.main方法也是可以被重载的覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是原创 2014-09-03 12:16:12 · 485 阅读 · 0 评论 -
org.apache.log4j.Logger 使用
1、Log4j的概念 Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过Logger原创 2014-09-03 12:15:42 · 586 阅读 · 0 评论 -
java中的foreach循环
foreach的语句格式: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } 一、foreach简化数组和集合的遍历 下面通过两个例子简单例子看看foreach是如何简化编程的。代码如下: 1 importjava.util.Arrays; 2 importjava.util.List; 3 importjava.原创 2014-09-03 12:15:53 · 528 阅读 · 0 评论 -
log4j日志等级
一、Log4j配置第一步:加入log4j-1.2.8.jar到lib下。第二步:在CLASSPATH下建立log4j.properties。内容如下: Java代码 log4j.rootCategory=INFO, stdout , R log4j.appender.stdout=org.apache.log4j.ConsoleAppender原创 2014-09-03 12:16:01 · 344 阅读 · 0 评论 -
java修饰符:abstract
abstract修饰符 abstract 修饰符可以用来修饰类和成员方法 用 abstract 修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化,即不允许创建抽象类本身的实例。没有用abstract 修饰的类称为具体类,具体类可以被实例化。 用 abstract 修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描原创 2014-09-03 12:16:32 · 368 阅读 · 0 评论 -
java修饰符:final
final 具有不可更改的意思,它可以修饰非抽象类,非抽象成员方法和变量。 用 final 修饰的类不能被继承,没有子类 如 String 用 final 修饰的方法不能被子类的方法覆盖 用 final 修饰的变量表示常量,只能被赋值一次 用 final不能修饰构造方法,因为方法覆盖这一概念仅适用于类的成员方法,而不适用于类原创 2014-09-03 12:16:21 · 321 阅读 · 0 评论 -
java接口 interface
JAVA接口 在JAVA中,接口有两种意思: 一种是指系统对外提供的所有服务。类的所有能被外部使用者访问的方法构成了类的接口。 二是指用 interface关键字定义的实在的接口,也称为接口类型。它用于明确的描述系统对外提供的所有服务,能够更加清晰的把系统的实现细节与接口分离。 接口 类型和抽象类都不能实例化。原创 2014-09-03 12:16:34 · 335 阅读 · 0 评论