上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 38 下一页
摘要: 生成器是一种专门负责创建对象的类,实际上这是工厂方法设计模式的一种应用, 当时用生成器创建对象时,它不需要任何参数,而工厂方法一般需要参数。import java.util.Iterator;import java.util.Random;//一般来说一个生成器只定义一个方法,该方法用以产生新的对象interface Generator { public T next();}//一个继承体系class Coffee { private static long counter = 0; private final long id = counter++; @Override public St. 阅读全文
posted @ 2013-11-21 21:50 E_star 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理的创建时期,代理类可以分为两种。静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。静态代理:interface IBase{ public void 阅读全文
posted @ 2013-11-21 20:22 E_star 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 什么是反射在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射有什么用1,在运行时判断任意一个对象所属的类;2,在运行时构造任意一个类的对象;3,在运行时判断任意一个类所具有的成员变量和方法;4,在运行时调用任意一个对象的方法;5,生成动态代理。实现Java反射的类1)Class:它表示正在运行的Java应用程序中的类和接口2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限3)Constructor:提供关于类的单个构造方法的信息以及对它 阅读全文
posted @ 2013-11-21 17:24 E_star 阅读(305) 评论(0) 推荐(0) 编辑
摘要: RTTI可以帮助我们在运行时识别对象和类的信息。一般传统的RTTI有三种实现方式:1. 向上转型或向下转型(upcasting and downcasting),在java中,向下转型(父类转成子类)需要强制类型转换2. Class对象(用了Class对象,不代表就是反射,如果只是用Class对象cast成指定的类,那就还是传统的RTTI)3. instanceof或isInstance()通过Class对象实现RTTI interface HasBatteries{}interface Waterproof{}interface Shoots{}class Toy{ Toy() {} Toy 阅读全文
posted @ 2013-11-20 18:47 E_star 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 一般来说比起功能有限的String类,我们更愿意构造功能强大的正则表达式。我们可以通过Pattern 与 Matcher 来构建功能强大的正则表达式import java.io.File;import java.io.FileNotFoundException;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public cl 阅读全文
posted @ 2013-11-19 22:00 E_star 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 首先正则表达式在处理字符串问题时,真的非常强大。正则可以帮助我们处理字符串的: 匹配, 选择, 编辑, 验证等问题。正则中"\\"表示插入一个"\"这里仅是记录String 与 正则的结合:1:验证:import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in 阅读全文
posted @ 2013-11-19 19:06 E_star 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 来自: Java编程思想P287public class Main { /** * @param args */ @Override public String toString() { return "Main" + this; // 这里我们调用this的话,就默认调用了toString() 无限递归了 } public static void main(String[] args) { // TODO Auto-generated method stub Main a = new Main(); System.out.println(a); }} 阅读全文
posted @ 2013-11-19 17:09 E_star 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 1.首先你需要到oracle官网下载最新版本的JDK。跑到oracle官网,自己到Download下面找找吧2.转到下载路径,对下载后的文件解压缩,比如我下载的文件名为jdk-7u7-linux-i586.tar.gzcdxxx(你的下载路径)sudotar zxvfjdk-7u7-linux-i586.tar.gz3.要将解压缩出来的文件夹拷贝到/usr/lib/jdk中,假设我解压出来的文件夹为jdk1.7.0_07sudocp -rjdk1.7.0_07/usr/lib/jdk注意:如果/usr/lib/jdk不存在,就自己手动建一个,名字叫jdk或者jvm啥的都可以sudomkdir 阅读全文
posted @ 2013-11-18 18:20 E_star 阅读(295) 评论(1) 推荐(0) 编辑
摘要: 如果在一个构造器的内部调用正在构造的的对象的某个动态绑定的方法,会发生什么情况?我们来看一个例子:class Glyph{ public void draw() { System.out.println("Glyph draw"); } Glyph() { System.out.println("Glyph before draw"); draw(); //调用动态绑定的方法 System.out.println("Glyph after draw"); }}class RoundGlyph extends Glyph{ privat 阅读全文
posted @ 2013-11-16 10:03 E_star 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承,重载。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法。注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。1、final类 final类不能被继承,因此final类的成员方法没有机会 阅读全文
posted @ 2013-11-15 11:39 E_star 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的 阅读全文
posted @ 2013-11-14 18:23 E_star 阅读(415) 评论(0) 推荐(0) 编辑
摘要: System.gc :告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的。只是建议进行回收System.runFinalization():网上搜了一下很多人都说强制调用已经失去引用的对象的finalize方法。但是我用下边的程序测试了一下class Chair{ public int i; public static int created = 0; public Chair() { i = ++created; } @Override protected void finalize() throws Throwable { System.out.println(" 阅读全文
posted @ 2013-11-14 18:16 E_star 阅读(2250) 评论(1) 推荐(1) 编辑
摘要: 转载:http://blog.csdn.net/weizhee/article/details/562833析构函数在下边3种情况时被调用:1.对象生命周期结束,被销毁时;2.delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时;3.对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。情况1请看下边代码:#includeclass A{public:A(){coutclass A{public:A(){coutclass A{public:A(){cout<<"constructing A"<&l 阅读全文
posted @ 2013-11-13 17:29 E_star 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 首先this作为关键字其实是随着对象的创建而产生的,当我们调用对象的一个方法的时候:例如:A a = new A();a.f(1) 其实我们可以理解为a.f(a,1) 编译器默默的把所操作的对象的引用作为第一个参数传递给了f()。 而this就代表了这个引用。 this只能在方法内部使用,表示“调用该方法的那个对象的引用”this调用类中的属性就不多说了,就表示传进来的对象调用属性。重点记录一下this语句, 如果想在构造函数里面调用构造函数的话就必须用到了this语句。给出一个例子来说明this语句的用法import java.math.BigInteger;import java.util 阅读全文
posted @ 2013-11-13 17:08 E_star 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 首先不带标签的break,continue 就不介绍了。大家平时用的最多的也就是这样的情况了。首先Java中没有goto,但是可以利用带标签的break, continue来实现类似的跳转。首先来看一个例子: label: for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { System.out.println(j); continue label; } } label: for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++... 阅读全文
posted @ 2013-11-13 10:38 E_star 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 流控制语句: for…done语句 格式:for 变量 in 名字表 do 命令列表 done 例子: #!/bin/shfor DAY in Sunday Monday Tuesday Wednesday Thursday Friday Saturdaydoecho "The day is : $DAY"done select 变量 in 关键字do command 1 ... ... command ndoneselect把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令。case…esac语句,格式: case 变量 in... 阅读全文
posted @ 2013-11-09 23:06 E_star 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 首先来一个小程序,来查看所在目录,以及该目录下的文件#!/bin/sh # “#!”指定用sh执行shell脚本#this is to show workstation # “#” 表示注释echo "We are currently in the following directory" # echo 表示输出/bin/pwd #输出用户所在目录echo # 换行echo "This directory contains the following files"/bin/ls #列出该目下的文... 阅读全文
posted @ 2013-11-09 20:34 E_star 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 计划任务: 为什么要设置计划任务 : 实现数据库备份,发送系统通知神马的..... 计划任务的命令: 一: at : 安排作业在某一时刻执行一次 nbatch 安排作业在系统负载不重时执行一次 cron : 安排周期性运行的作业 at命令的功能和格式: 功能:安排一个或多个命令在指定的时间运行一次 at的命令格式及参数: at [-f 文件名] 时间 at -d or atrm 删除队列中的任务 at -l or atq 查看队列中的任务 at命令指定时间的方式: 绝对计时方法: midnight noon teatime hh:mm [... 阅读全文
posted @ 2013-11-08 13:00 E_star 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 基本概念: 进程和程序的区别 : 1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。 2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有可顺序地执行若干个程序。 父进程与子进程: 1、子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。 2、在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。 3、父进程终止子进程自然终止。 (避免出现孤儿进程, 僵尸进程) 前台进程和后台进程: 前... 阅读全文
posted @ 2013-11-08 12:26 E_star 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 主要讲两个用户管理的案例:1:限制用户su为root,只允许某个组的的用户su # groupadd sugroup 首先添加我们的用户组 # chmod 4550 /bin/su 改变命令的权限 # chgrp sugroup /bin/su 改变命令的所属组# ls -l /bin/su 查看命令的权限-r-sr-x--- 1 root sugroup 18360 Jan 15 2010 /bin/su设定后,只有sugroup组中的用户可以使用su切换为root# useradd helen# passwd helen# usermod -G sug... 阅读全文
posted @ 2013-11-08 00:14 E_star 阅读(409) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 38 下一页