??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一级视频在线观看,欧美性三三影院,欧美极品影院 http://www.aygfsteel.com/mhl1003/category/46143.htmlzh-cn Thu, 15 Nov 2012 05:12:56 GMT Thu, 15 Nov 2012 05:12:56 GMT 60 面向对象设计原则概述 http://www.aygfsteel.com/mhl1003/articles/391285.html自由战士 自由战士 Tue, 13 Nov 2012 16:34:00 GMT http://www.aygfsteel.com/mhl1003/articles/391285.html http://www.aygfsteel.com/mhl1003/comments/391285.html http://www.aygfsteel.com/mhl1003/articles/391285.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/391285.html http://www.aygfsteel.com/mhl1003/services/trackbacks/391285.html
设计原则名称
设计原则?/span>
重要?/span>
单一职责原则
(Single Responsibility Principle, SRP)
cȝ职责要单一Q不能将太多的职责放在一个类?/span>
★★★★☆
开闭原?/span>
(Open-Closed Principle, OCP)
软g实体Ҏ展是开攄Q但对修Ҏ关闭的,卛_不修改一
个Y件实体的基础上去扩展其功?/span>
★★★★★
里氏代换原则
( Liskov Substitution Principle, LSP)
在Y件系l中Q一个可以接受基cd象的地方必然可以接受一
个子cd?/span>
★★★★☆
依赖倒{原则
(Dependency Inversion Principle, DIP)
要针Ҏ象层~程Q而不要针对具体类~程
★★★★★
接口隔离原则
(Interface Segregation Principle, ISP)
使用多个专门的接口来取代一个统一的接?/span>
★★☆☆☆
合成复用原则
(Composite Reuse Principle, CRP)
在系l中应该量多用组合和聚合兌关系Q尽量少使用?/span>
至不使用l承关系
★★★★☆
q米Ҏ?/span>
(Law of Demeter, LoD)
一个Y件实体对其他实体的引用越越好,或者说如果两个c?/span>
不必彼此直接通信Q那么这两个cd不应当发生直接的怺?/span>
用,而是通过引入一个第三者发生间接交?/span>
★★★☆☆
]]> java事务处理 http://www.aygfsteel.com/mhl1003/articles/391284.html自由战士 自由战士 Tue, 13 Nov 2012 16:24:00 GMT http://www.aygfsteel.com/mhl1003/articles/391284.html http://www.aygfsteel.com/mhl1003/comments/391284.html http://www.aygfsteel.com/mhl1003/articles/391284.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/391284.html http://www.aygfsteel.com/mhl1003/services/trackbacks/391284.html ?/span> java的事务处?如果Ҏ据库q行多次操作,每一ơ的执行或步骤都是一个事?如果数据库操作在某一步没有执行或出现异常而导致事务失?q样有的事务被执行有的就没有被执?从而就有了事务?a target="_blank">回滚,取消先前的操?....
Java中用事务处理,首先要求数据库支持事务。如使用MySQL的事务功能,p求MySQL的表cd为Innodb才支持事务。否则,在JavaE序中做了commit或rollbackQ但在数据库中根本不能生效?
JavaBean中用JDBC方式q行事务处理
public int delete(int sID) {
dbc = new DataBaseConnection();
Connection con = dbc.getConnection();
try {
con.setAutoCommit(false);// 更改JDBC事务的默认提交方?
dbc.executeUpdate("delete from xiao where ID=" + sID);
dbc.executeUpdate("delete from xiao_content where ID=" + sID);
dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);
con.commit();//提交JDBC事务
con.setAutoCommit(true);// 恢复JDBC事务的默认提交方?
dbc.close();
return 1;
}
catch (Exception exc) {
con.rollBack();//回滚 JDBC事务
exc.printStackTrace();
dbc.close();
return -1;
}
}
在数据库操作中,一事务是指由一条或多条Ҏ据库更新的sql语句所l成的一个不可分割的工作单元。只有当事务中的所有操作都正常完成了,整个事务才能被提交到数据库,如果有一Ҏ作没有完成,必L消整个事务?
例如在银行的转帐事务中,假定张三从自q帐号上把1000元{到李四的帐号上,相关的sql语句如下Q?
update account set monery=monery-1000 where name='zhangsan'
update account set monery=monery+1000 where name='lisi'
q个两条语句必须作ؓ一个完成的事务来处理。只有当两条都成功执行了Q才能提交这个事务。如果有一句失败,整个事务必须撤消?
在connectioncM提供?个控制事务的ҎQ?
Q?Q?setAutoCommit(Boolean autoCommit):讄是否自动提交事务Q?
Q?Q?commit();提交事务Q?
Q?Q?rollback();撤消事务Q?
在jdbc api中,默认的情况ؓ自动提交事务Q也是_每一条对数据库的更新的sql语句代表一事务,操作成功后,pȝ自动调用commitQ)来提交,否则调用rollbackQ)来撤消事务?
在jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做ؓ一个事务,在所有操作完成之后,调用commitQ)来进行整体提交。倘若其中一?sql操作p|Q就不会执行commitQ)ҎQ而是产生相应的sqlexceptionQ此时就可以捕获异常代码块中调用rollbackQ)Ҏ撤消事务? ]]> java中成员变量和局部变量的区别 http://www.aygfsteel.com/mhl1003/articles/391232.html自由战士 自由战士 Mon, 12 Nov 2012 13:45:00 GMT http://www.aygfsteel.com/mhl1003/articles/391232.html http://www.aygfsteel.com/mhl1003/comments/391232.html http://www.aygfsteel.com/mhl1003/articles/391232.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/391232.html http://www.aygfsteel.com/mhl1003/services/trackbacks/391232.html
先看下面两段E序Q?/font>
E序一Q?/strong> public class Variable { int i; void test() { int j=8; if(j==i) System.out.println("相等"); else System.out.println("不相{?); } public static void main(String[] args) { Variable v=new Variable(); v.test(); } }
E序二: public class Variable { void test() { int i; int j=8; if(j==i) System.out.println("相等"); else System.out.println("不相{?); } public static void main(String[] args) { Variable v=new Variable(); v.test(); } }
----------------------------------------------------------------------------------------------------------
W一个程序很正常Q编译时不会出错。第二个E序~译时会提示如下错误Q?/font>
D:\Program\java\test>javac Variable.java Variable.java:9: 可能未初始化变?i if(j==i) ^ 1 错误
之所以会出现q样的错误是因ؓQ?strong style="line-height: normal">成员变量有默认|Q被final修饰且没有static的必L式赋|Q局部变量不会自动赋?/strong>
===========================================================
cM分ؓ两部分。变量定义部分所定义的变量被UCؓcȝ成员变量 Q在Ҏ体中定义的变量和Ҏ的参数都被称?strong style="line-height: normal">局部变?/strong>
java中成员变量和局部变量的区别
1.成员变量可以被publicQprotectQprivateQstatic{修饰符修饰Q?/font>局部变量不能被控制修饰W及static修饰Q两者都可以定义成final?/font>
2.成员变量存储在堆Q局部变量存储在?/font>
3.存在旉不同
4.成员变量有默认|Q被final修饰且没有static的必L式赋|Q局部变量不会自动赋?br style="line-height: normal" />-------------------------------------------------------------------------------------------------------------
思意?br style="line-height: normal" />什么是局部,Ҏ内部Q块内部都是局部,执行指o退出那个局部,局部变量自动清?br style="line-height: normal" /> 比如Ҏ中,不用?br style="line-height: normal" />块中 { int i=0; //q是一个局部变量,它的作用范围在其中 } 成员变量׃涉及到谁的成员,cȝ成员Q实例的成员Q?br style="line-height: normal" /> class A{ int i=0; //实例的成?br style="line-height: normal" />static j=1;//cȝ成员 } static 的差别,是否依赖于实例而存?br style="line-height: normal" />----------------------------------------------------------------------------------------------------------
成员变量Q作为类的成员而存在,直接存在于类中?/font>
局部变量:作ؓҎ或语句块的成员而存在,存在于方法的参数列表和方法定义中?/font>
局部变量在使用前必被E序员主动的初始化,和此形成ҎQ系l中的成员变量则会被pȝ提供一个默认的初始倹{所以在语法上,cȝ成员变量能够定义后直接用,而局部变量在定义后先要赋初|然后才能使用?/strong>
所有类的成员变量可以通过this来引用。成员变量又分成俩中cdQ实例变量和静态变量。静态变量在定义时要使用
static关键字?/font>
package com;
public class MemberVariable { int v_int; float v_float; boolean v_boolean; String v_string; byte v_byte; short v_short; char v_char; long v_long; public static void main(String[] args) { MemberVariable mv = new MemberVariable(); System.out.println("int的默认?"+mv.v_int); System.out.println("float的默认?"+mv.v_float); System.out.println("boolean的默认?"+mv.v_boolean); System.out.println("string的默认?"+mv.v_byte); System.out.println("short的默认?"+mv.v_short); System.out.println("char的默认?"+mv.v_char); System.out.println("long的默认?"+mv.v_long); } } int的默认?0 float的默认?0.0 boolean的默认?false string的默认?0 short的默认?0 char的默认?
]]> javaZ么可以跨q_ http://www.aygfsteel.com/mhl1003/articles/391230.html自由战士 自由战士 Mon, 12 Nov 2012 13:10:00 GMT http://www.aygfsteel.com/mhl1003/articles/391230.html http://www.aygfsteel.com/mhl1003/comments/391230.html http://www.aygfsteel.com/mhl1003/articles/391230.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/391230.html http://www.aygfsteel.com/mhl1003/services/trackbacks/391230.html
因ؓJAVA有个属于自己的运行环境,既:JAVA虚拟机,虚拟Zq_无关QJAVA代码l过~译后,直接q行于虚拟机上,实现了跨q_?/p>
1.Z么要使用Java虚拟?/p>
Java语言的一个非帔R要的特点是与^台的无关性。而用Java虚拟机是实现q一特点的关键。一般的高语言如果要在不同的^Cq行,臛_需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同^Cq行时不需要重新编译?span style="color: red">Java语言使用模式Java虚拟机屏蔽了与具体^台相关的信息,使得Java语言~译E序只需生成在Java虚拟Zq行的目标代?字节?,可以在多种q_上不加修改地q行。Java虚拟机在执行字节码时,把字节码解释成具体^C的机器指令执行?/strong>
2.谁需要了解Java虚拟?/p>
Java虚拟机是Java语言底层实现的基,对Java语言感兴的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定^C实现Java虚拟机的软g人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来?则必Lȝ解Java虚拟机的规范。另?如果你想扩展Java语言,或是把其它语a~译成Java语言的字节码,你也需要深入地了解Java虚拟机?/p>
]]>JavaҎ参数是引用调用还是D?——D?/title> http://www.aygfsteel.com/mhl1003/articles/391228.html自由战士 自由战士 Mon, 12 Nov 2012 12:54:00 GMT http://www.aygfsteel.com/mhl1003/articles/391228.html http://www.aygfsteel.com/mhl1003/comments/391228.html http://www.aygfsteel.com/mhl1003/articles/391228.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/391228.html http://www.aygfsteel.com/mhl1003/services/trackbacks/391228.html Ҏ调用(call by) 是一个标准的计算机科学术语。方法调用根据参C递的情况又分?strong>D? call by reference ) ?strong>引用调用( call by value ) 。江湖上有很多关于这两种调用的定?Q最通常的说法是传递值的是D用,传递地址的是引用调用。这其实很不恰当Q这U?nbsp;q些说法很容易让我们联想到Java的对象参C递是引用调用Q实际上Q?span style="color: rgb(0,0,255)">Java的对象参C递仍然是D?nbsp;?/strong> 我们首先用一D代码来证实一下ؓ什么Java的对象参C?nbsp;是D用?
public class Employee { public String name=null ; public Employee(String n){ this .name=n; } public static void swap(Employee e1,Employee e2){ Employee temp=e1; e1=e2; e2=temp; System.out.println(e1.name+" " +e2.name); } public static void main(String[] args) { Employee worker=new Employee("张三" ); Employee manager=new Employee("李四" ); swap(worker,manager); System.out.println(worker.name+" " +manager.name); } }
上面的结果让人很失望Q虽然Ş参对象e1,e2的内容交换了Q但实参对象worker,managerq没有互换内宏V这里面最重要的原因就在于形参e1,e2是实参worker,manager的地址拯?/span>
大家都知道,在Java中对象变量名实际上代表的是对象在堆中的地址(专业术语叫做对象引用 )。在JavaҎ调用的时候,参数传递的是对象的引用?span style="color: rgb(0,0,255)">重要的是QŞ参和实参所占的内存地址q不一P形参中的内容只是实参中存储的对象引用的一份拷贝?/span>
如果大家对JVM内存理?strong>Java?/span>
?strong>局部变量区 有所了解的话(可以参见?nbsp;Java 虚拟Zpȝ?/a> ?Q就很好理解上面q句话。在JVMq行上面的程序时Q运行mainҎ和swapҎQ会在Java栈中先后push两个叫做栈 的内存空间。main栈中有一块叫局部变量区的内存用来存储实参对象worker和manager的引用。而swap栈中的局部变量区则存储了形参对象e1和e2的引用。虽然e1和e2的引用值分别与worker和manager相同Q但是它们占用了不同的内存空间。当e1和e2的引用发生交换时Q下面的囑־清晰的看出完全不会媄响worker和manager的引用倹{?/p>
Java对象参数传递虽然传递的是地址(引用)Q但仍然是D用。是时候需要给引用调用和D用一个准的定义了?/p>
D?call by value) Q?/span> 在参C递过E中QŞ参和实参占用了两个完全不同的内存I间。Ş参所存储的内Ҏ实参存储内容的一份拷贝?span style="color: rgb(0,0,0)">实际上,Java对象的传递就W合q个定义Q只不过形参和实参所储存的内容ƈ不是常规意义上的变量|而是变量的地址。咳Q回q头xQ变量的地址不也是一U值吗Q?/span>
引用调用(call by reference) Q?/span> 在参C递的q程中,形参和实参完全是同一块内存空_两者不分彼此?/span>实际上,形参名和实参名只是编E中的不同符P在程序运行过E中Q内存中存储的空间才是最重要的。不同的变量名ƈ不能说明占用的内存存储空间不同?/p>
大体上说Q两U调用的Ҏq不在于传递的是D是地址(毕竟地址也是一个?Q而是在于形参和实参是否占用同一块内存空间。事实上QC/C++的指针参C递也是D用,不信试试下面的C代码吧!
#include<stdio.h> void swap(int *a1,int *b1){ int *t=a1; a1=b1; b1=t; } int main(){ int x1=100; int x2=200; int *a=&x1; int *b=&x2; printf("%d %d\n" ,*a,*b); swap(a,b); printf("%d %d\n" ,*a,*b); return 0; }
但C/C++是有引用调用的,q就是C/C++一U叫做引用的变量声明ҎQ?int a; int &ra=a; 其中ra是a的别名,两者在内存中没有区别,占用了同一个内存空间。而通过引用(别名)的参C递就W合引用调用的特点了。大家可以去试试
void swap(int &a1,int &b1);的运行结果?/p>
我们首先用一D代码来证实一下ؓ什么Java的对象参C?nbsp;是地址传递?/span>
public class Employee { public String name= null ; public Employee(String n){ this .name=n; } public static void change(Employee e1){ e1.name = "李四" ; System.out.println(e1.name); } public static void main(String[] args) { Employee worker= new Employee( "张三" ); change(worker); System.out.println(worker.name); } } ]]>
log4j的作?/title> http://www.aygfsteel.com/mhl1003/articles/391039.html自由战士 自由战士 Thu, 08 Nov 2012 09:09:00 GMT http://www.aygfsteel.com/mhl1003/articles/391039.html http://www.aygfsteel.com/mhl1003/comments/391039.html http://www.aygfsteel.com/mhl1003/articles/391039.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/391039.html http://www.aygfsteel.com/mhl1003/services/trackbacks/391039.html
一、什么是log4j Log4j 是Apache的一个开放源代码目Q通过使用Log4jQ我们可以控制日志信息输送的目的地是控制台、文件、GUIlg、甚x套接口服务器、NT的事件记录器、UNIX Syslog守护q程{;我们也可以控制每一条日志的输出格式Q通过定义每一条日志信息的U别Q我们能够更加细致地控制日志的生成过E。最令h感兴的是Q这些可以通过一个配|文件来灉|地进行配|,而不需要修改应用的代码?
二、日志简?br />日志指在E序中插入语句以提供调试信息。用日志能够监视程序的执行。例如,用户利用日志可以获得关于应用E序故障的完整信息。用户可以将调试语句Q如 System.out.printlnQ插入到E序中以获得详细的调试信息?
三、项目中Z么要用log4j 大家在编E时l常不可避免地要使用C些日志操作,比如开发阶D늚调试信息、运行时的日志记录及审计。调查显C,日志代码占代码总量?Q。通常大家可以单地使用System.out.println()语句输出日志信息Q但是往往会有一些判断,比如Q? if (someCondition) { System.out.println("some information."); }
q些判断造成正常的程序逻辑中杂了大量的输句。而在开发阶D写下的q些判断仅ؓ了调试的语句Q在开发完成时需要查扑ƈU除。部|运行后Q尤其是在一些企业应用系l中Q还l常需要进一步调试,q时遇C更大的麻烦。所以,我们需要一套完备的、灵zȝ、可配置的日志工具log4J是优秀的选择?
四、log4jlg Log4j ?logger、appender ?layout 三个lgl成。可以通过同名?Java c访?Log4j 的这三个lg?/font>
Logger - 在执行应用程序时Q接收日志语句生成的日志h。它是一U重要的日志处理lgQ?可以通过 log4j API ?logger cd其进行访问。它的方法有Qdebug、info、warn、error、fatal ?log。这些方法用于记录消息? Appender - 理日志语句的输出结果。执行日志语句时QLogger 对象接收来自日志语句的记录h。此h是通过 logger 发送至 appender 的。然后,Appender 输出结果写入到用户选择的目的地。对于不同的日志目的圎ͼ提供不同?appender cd。这?appender 包括Q用于文件的 file appender、用于数据库?JDBC appender 和用?SMTP 服务器的 SMTP appender? Layout - 用于指定 appender 日志语句写入日志目的地所采用的格式。appender 可以用来格式化输出结果的各种布局包括Q简单布局、模式布局?HTML 布局?/font>
]]> 几种d调度?Java 实现Ҏ与比?/title> http://www.aygfsteel.com/mhl1003/articles/390551.html自由战士 自由战士 Wed, 31 Oct 2012 09:23:00 GMT http://www.aygfsteel.com/mhl1003/articles/390551.html http://www.aygfsteel.com/mhl1003/comments/390551.html http://www.aygfsteel.com/mhl1003/articles/390551.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/390551.html http://www.aygfsteel.com/mhl1003/services/trackbacks/390551.html 阅读全文 ]]> Java学习之Iterator(q代?的一般用?Q{Q? http://www.aygfsteel.com/mhl1003/articles/390509.html自由战士 自由战士 Wed, 31 Oct 2012 03:25:00 GMT http://www.aygfsteel.com/mhl1003/articles/390509.html http://www.aygfsteel.com/mhl1003/comments/390509.html http://www.aygfsteel.com/mhl1003/articles/390509.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/390509.html http://www.aygfsteel.com/mhl1003/services/trackbacks/390509.html
q代器(IteratorQ?/font>
q代器是一U设计模式,它是一个对象,它可以遍历ƈ选择序列中的对象Q而开发h员不需要了解该序列的底层结构。P代器通常被称?#8220;轻量U?#8221;对象Q因为创建它的代价小?/font>
Java中的Iterator功能比较单,q且只能单向UdQ?/font>
(1) 使用Ҏiterator()要求容器q回一个Iterator。第一ơ调用Iterator的next()ҎӞ它返回序列的W一个元素。注意:iterator()Ҏ是java.lang.Iterable接口,被Collectionl承?/font>
(2) 使用next()获得序列中的下一个元素?/font>
(3) 使用hasNext()查序列中是否q有元素?/font>
(4) 使用remove()P代器新返回的元素删除?/font>
Iterator是Javaq代器最单的实现QؓList设计的ListIteratorh更多的功能,它可以从两个方向遍历ListQ也可以从List中插入和删除元素?/font>
q代器应用: list l = new ArrayList(); l.add("aa"); l.add("bb"); l.add("cc"); for (Iterator iter = l.iterator(); iter.hasNext();) { String str = (String)iter.next(); System.out.println(str); } /*q代器用于while循环 Iterator iter = l.iterator(); while(iter.hasNext()){ String str = (String) iter.next(); System.out.println(str); } */
]]> 外部讉KcȝU有Ҏ和私有属?/title> http://www.aygfsteel.com/mhl1003/articles/390499.html自由战士 自由战士 Wed, 31 Oct 2012 01:58:00 GMT http://www.aygfsteel.com/mhl1003/articles/390499.html http://www.aygfsteel.com/mhl1003/comments/390499.html http://www.aygfsteel.com/mhl1003/articles/390499.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/390499.html http://www.aygfsteel.com/mhl1003/services/trackbacks/390499.html import java.lang.reflect.Field; import java.lang.reflect.Method; /** * 用Java反射机制来调用privateҎ * @author WalkingDog * */ public class Reflect { public static void main(String[] args) throws Exception { //直接创徏对象 Person person = new Person(); Class<?> personType = person.getClass(); //讉KU有Ҏ //getDeclaredMethod可以获取到所有方法,而getMethod只能获取public Method method = personType.getDeclaredMethod("say", String.class); //压制Java对访问修饰符的检?nbsp; method.setAccessible(true); //调用Ҏ;person为所在对?nbsp; method.invoke(person, "Hello World !"); //讉KU有属?nbsp; Field field = personType.getDeclaredField("name"); field.setAccessible(true); //为属性设|?person为所在对?nbsp; field.set(person, "WalkingDog"); System.out.println("The Value Of The Field is : " + person.getName()); } } //JavaBean class Person{ private String name; //每个JavaBean都应该实现无参构造方?nbsp; public Person() {} public String getName() { return name; } private void say(String message){ System.out.println("You want to say : " + message); } } ]]> JSP内置对象之五——PAGE http://www.aygfsteel.com/mhl1003/articles/390171.html自由战士 自由战士 Wed, 24 Oct 2012 08:13:00 GMT http://www.aygfsteel.com/mhl1003/articles/390171.html http://www.aygfsteel.com/mhl1003/comments/390171.html http://www.aygfsteel.com/mhl1003/articles/390171.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/390171.html http://www.aygfsteel.com/mhl1003/services/trackbacks/390171.html page对象是指向当前JSP面本nQ有点象cM的this指针Q它是java.lang.Objectcȝ实例
序号 ????nbsp; 1 class getClass q回此Object的类 2 int hashCode() q回此Object的hash?nbsp; 3 boolean equals(Object obj) 判断此Object是否与指定的Object对象相等 4 void copy(Object obj) 把此Object拯到指定的Object对象?nbsp; 5 Object clone() 克隆此Object对象 6 String toString() 把此Object对象转换成Stringcȝ对象 7 void notify() 唤醒一个等待的U程 8 void notifyAll() 唤醒所有等待的U程 9 void wait(int timeout) 使一个线E处于等待直到timeoutl束或被唤醒 10 void wait() 使一个线E处于等待直到被唤醒 11 void enterMonitor() 对Object加锁 12 void exitMonitor() 对Object开?/p>
参考地址Qhttp://edu.codepub.com/2009/1018/16461_3.php
]]> pageContext的作?/title> http://www.aygfsteel.com/mhl1003/articles/390167.html自由战士 自由战士 Wed, 24 Oct 2012 07:55:00 GMT http://www.aygfsteel.com/mhl1003/articles/390167.html http://www.aygfsteel.com/mhl1003/comments/390167.html http://www.aygfsteel.com/mhl1003/articles/390167.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/390167.html http://www.aygfsteel.com/mhl1003/services/trackbacks/390167.html 我们之前曄使用qsession的setAttribute(){方法设定一个进E可以共用的属性物Ӟ使用session讑֮的属性在同一个进E中可以qQ除了session之外Q还有pageContext?request、application也都可以使用setAttribute()之类的方法(详请查阅API文gQ来讑֮可以q的属性物Ӟ只不q这四个物g所讑֮的属性其q范围各不相同?br />使用pageContext所讑֮的属性物Ӟ其共用范围限於同一?JSP面Q用request所讑֮的属性物Ӟ其在同一个request处理期间可以qQ包括forwardl其它JSP面Q,session物g所讑֮的属性物件则限於同一个进E作用期间可以共用,而application物g所讑֮的属性,则在整个Web应用E式中的JSP面都可以共用?br /> 以下举applicationZQ您可以一些物件当作属性设定给applicationQ则另一个JSP面可以在适当的时候取得这个属性物Ӟ例如Q?br /> <% String attr = "字串物g"; out.println("讑֮属性给applicationQ? + attr); application.setAttribute("str", attr); %> 我们先连上这个JSP|页以执行属性设定,然后我们再连上这个JSP|页Q?br /> <% String attr = (String) application.getAttribute("str"); out.println("取得application属性:" + attr); %> 由於我们之前已经字串物件设定在application中作为属性,所以我们可以在上面q个面中取得之前设定的物gQ同L道理Q您也可以用相同的方式设定属性给pageContext、request、session{物Ӟ只要在允许的作用范围中,可以取得所讑֮的属性物件?br /> 您可以用pageContext物g来设定属性,q指定属性的作用范围Q而不用用个别的pageContext、request、session?application来进行设定,q就是之前所提的Q以pageContext提供一个单一的API来管理属性作用范_您可以用以下的Ҏ来进行设定: getAttribute(String name, int scope) setAttribute(String name, Object value, int scope) removeAttribute(String name, int scope) 其中的scope可以使用以下的常数来q行指定QpageContext.PAGE_SCOPE、pageContext.REQUEST_SCOPE?pageContext.SESSION_SCOPE、pageContext.APPLICATION_SCOPEQ常数的名称已经直接指明属性范_我们可以上面的两个JSP面改ؓ以下的Ş式: <% String attr = "字串物g"; out.println("讑֮属性给applicationQ? + attr); pageContext.setAttribute("str", attr, pageContext.APPLICATION_SCOPE); %> <% String attr = (String) pageContext.getAttribute("str", pageContext.APPLICATION_SCOPE); out.println("取得application属性:" + attr); %> ]]> ServletRequest,HttpServletRequest ServletResponse,HttpServletResponse的区?/title> http://www.aygfsteel.com/mhl1003/articles/390166.html自由战士 自由战士 Wed, 24 Oct 2012 07:19:00 GMT http://www.aygfsteel.com/mhl1003/articles/390166.html http://www.aygfsteel.com/mhl1003/comments/390166.html http://www.aygfsteel.com/mhl1003/articles/390166.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/390166.html http://www.aygfsteel.com/mhl1003/services/trackbacks/390166.html 所有Servlet响应都实现ServletResponse接口。ServletResponse接口主要有以下方法: Q?Q从Servlet中可以通过getWriterҎ取得PrintWriter对象Q来输出字符数据。从Servlet中可以通过getOutputStreamҎ取得ServletoutputStream对象。ServletOutputStream既可以输出字W数据,也可以输出MIME格式的二q制数据。如果getWriterҎ已经被用过Q当使用getOutputStreamӞ会有java.lang.IllegalStateException例外抛出?br /> Q?QsetContentTypeҎQ在响应中可以表明内Ҏ式和长短?br /> Q?QsetBufferSizeҎQ设|Web容器的缓冲器大小; getBufferSizeҎq回Web容器的缓冲器大小; resetBufferҎ清空q|缓冲器Q用resetҎ清空~冲器、状态头信息Q用flushBufferҎ缓冲器内的所有输出内容向客户传递。用isCommittedҎ判断是否响应已经被行?#8220;履行”的定义是指状态码冬耕信息已l被写入响应?br /> Q?QsetLocalҎ讑֮响应的地域信息,主要在WebE序的国际货币国际化时用。这个方法应该在getWriter之前被用。默认的Web服务器的地域信息?br /> HttpServletResponsel承了ServletResponse接口Qƈ提供了与Http协议有关的方法,q些Ҏ的主要功能是讄HTTP状态码和管理Cookie?br /> Q?QsetStatusҎ用来讄Servlet向客Lq回的状态码Q它用来讄没有出错的状态。如果Servletq行出错QServlet可以使用sendErrorҎ讄状态码Q如sendError(int sc)Ҏ讄错误状态代码。sendError(int sc,String msg)Ҏ除了讄状态码Q还向客户发Z条错误信息?br /> Q?QsetHeader可以指定特定名称的头信息的|addDateheaderQaddIntHeaderQsetDateHeaderQsetIntHeader可以加入或理性特定时间或整数型头信息?br /> Q?QaddCookieҎ可以在Web服务器响应中加入Cookie对象Q这个对象将被浏览器所保存。Cookie机制也被用来l护会话状态?br /> Q?QsendRedirectҎ向客户发Z旉新导向的响应。它生成的响应状态码?02。该响应l了客户一个新的URL风趣。如果缓冲器已经被清I,q个Ҏ会弹Z个IllegalStateException例外?/p>
内置对象是不需要声明,直接可以在JSP中用的对象QJSP有以下几U内|对象: request request表示HttpServletRequest对象。它包含了有x览器h的信息,q且提供了几个用于获取cookie, header, 和session数据的有用的Ҏ?br />response response表示HttpServletResponse对象Qƈ提供了几个用于设|送回览器的响应的方法(如cookies,头信息等Q?br />out out 对象是javax.jsp.JspWriter的一个实例,q提供了几个Ҏ使你能用于向览器回送输出结果?br />pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各U范围的名字I间、servlet相关的对象的APIQƈ且包装了通用的servlet相关功能的方法?br />session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信?br />application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信?br />config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数?br />page page表示从该面产生的一个servlet实例?/p>
Servlet API中的几个对象 JSP提供了八个内部对象,而其中的五个内部对象对应于Servlet API中的七个对象Q这也就使得我们正常理解q熟l用Servlet中的q七个对象显得尤光要。这五个JSP的内部对象和Servlet API中的对象的对应关pLQ?br />request对象对应于:javax.servlet.http.HttpServletRequest和javax.servlet.ServletRequest response对象对应于:javax.servlet.http.HttpServletResponse和javax.servlet.ServletResponse session对象对应于:javax.servlet.http.HttpSession application对象对应于:javax.servlet.ServletContext config对象对应于:javax.servlet.ServletConfig javax.servlet.http.HttpServletRequest q是一个接口,在我们提到接口之前,q是让我们来复习一下Java中接口的一个初步的解释Q?br />接口在语法上与类怼Q但是接口没有实例,使用接口Q只是指定类必须做什么而不是如何做?br />/*重点如下*/HttpServletRequest接口用来处理一个对Servlet的HTTP格式的请求信息?/span>javax.servlet.ServletRequest q也是一个接口,q个接口定义一个Servlet引擎产生的对象,通过q个对象QServlet可以获得客户端请求的数据。这个对象通过dh体的数据提供包括参数的名U、值和属性以及输入流的所有数据。而javax.servlet.http.HttpServletRequest也只是该接口的一个扩展,也就是说Q该接口的所有方法也可以被javax.servlet.http.HttpServletRequest所使用?/span> javax.servlet.http.HttpServletResponse接口 该接口用来描qC个返回到客户端的HTTP回应?br />javax.servlet.ServletResponse接口 该接口用来定义一个Servlet引擎产生的对象,通过q个对象QServlet对客L的请求作出响应。这个响应应该是一个MIME实体Q可能是一个HTMLc图象数据或其他MIME的格式。javax.servlet.http.HttpServletResponse接口是该接口的扩展?br />javax.servlet.http.HttpSession接口 该接口用来描qC个sessionQ至于什么是session我想在这里就没必要说了吧?br />javax.servlet.ServletContext接口 该接口用来定义了一个Servlet的环境对象。也可是认ؓq是多个客户端共享的信息Q它与session的区别在于应用范围的不同Qsession只对应于一个用戗?br />javax.servlet.ServletConfig接口 该接口定义了一个对象,通过q个对象QServlet引擎配置一个Servlet。每一个ServletConfig对象对应着一个唯一的Servlet?br />javax.servlet.http.Cookiec?br />q个cLqC一个cookieQcookie的作用其实与session很类|只是cookie保存在客LQsession保存在服务器?/p>
]]> protectedҎ能不能被l承 http://www.aygfsteel.com/mhl1003/articles/336474.html自由战士 自由战士 Fri, 29 Oct 2010 04:40:00 GMT http://www.aygfsteel.com/mhl1003/articles/336474.html http://www.aygfsteel.com/mhl1003/comments/336474.html http://www.aygfsteel.com/mhl1003/articles/336474.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/336474.html http://www.aygfsteel.com/mhl1003/services/trackbacks/336474.html public 都可以被l承或访问;
protected在同一包,他的子类都可以去l承或访问;
defaultQ在同一包中可以被承或讉KQ子cd果和父类不在一个包Q也不能l承Q?
private,必须在一个类中才能被讉K?
]]> ArrayList,Vector,LinkedList的区?/title> http://www.aygfsteel.com/mhl1003/articles/336267.html自由战士 自由战士 Wed, 27 Oct 2010 04:27:00 GMT http://www.aygfsteel.com/mhl1003/articles/336267.html http://www.aygfsteel.com/mhl1003/comments/336267.html http://www.aygfsteel.com/mhl1003/articles/336267.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/336267.html http://www.aygfsteel.com/mhl1003/services/trackbacks/336267.html
ArrayList的定义:
public class ArrayList < E > extends AbstractList < E > implements List < E > , RandomAccess, Cloneable, Serializable
List 接口的大可变数l的实现。实C所有可选列表操作,q允许包?null 在内的所有元素。除了实?List 接口外,此类q提供一些方法来操作内部用来存储列表的数l的大小。(此类大致上等同于 Vector c,除了此类是不同步 的。)
ArrayList < Integer > a = new ArrayList < Integer > ();
a.add( 3 );
a.add( 4 );
for (Iterator < Integer > iterator = a.iterator(); iterator.hasNext();) {
int number = iterator.next();
System.out.println(number);
}
Vector定义Q?img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />
public class Vector < E > extends AbstractList < E > implements List < E > , RandomAccess, Cloneable, Serializable
Vector
cd以实现可增长的对象数l。与数组一P它包含可以用整数烦引进行访问的lg。但是,Vector
的大可以根据需要增大或~小Q以适应创徏 Vector
后进行添加或U除的操作?span style="color: red">Vector是同步的?/dt>
LinkedList定义Q?br />
public class LinkedList < E > extends AbstractSequentialList < E > implements List < E > , Deque < E > , Cloneable, Serializable
List 接口的链接列表实现。实现所有可选的列表操作Qƈ且允许所有元素(包括 null Q。除了实?List 接口外,LinkedList c还为在列表的开头及l尾 get ?tt>remove ?insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈 ?a title="java.util 中的接口" style="color: red" href="mk:@MSITStore:F:\备䆾文g\E盘备份\eclipse-jee-galileo-SR1-win32\JDK_API_1_6_zh_CN.CHM::/java/util/Queue.html">队列?a title="java.util 中的接口" style="color: red" href="mk:@MSITStore:F:\备䆾文g\E盘备份\eclipse-jee-galileo-SR1-win32\JDK_API_1_6_zh_CN.CHM::/java/util/Deque.html">双端队列。此实现不是同步 ?/p>
]]> Overriding和Overloding的区?/title> http://www.aygfsteel.com/mhl1003/articles/336219.html自由战士 自由战士 Tue, 26 Oct 2010 13:24:00 GMT http://www.aygfsteel.com/mhl1003/articles/336219.html http://www.aygfsteel.com/mhl1003/comments/336219.html http://www.aygfsteel.com/mhl1003/articles/336219.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/336219.html http://www.aygfsteel.com/mhl1003/services/trackbacks/336219.html
]]> Hashtable和HashMap的区?/title> http://www.aygfsteel.com/mhl1003/articles/336217.html自由战士 自由战士 Tue, 26 Oct 2010 13:22:00 GMT http://www.aygfsteel.com/mhl1003/articles/336217.html http://www.aygfsteel.com/mhl1003/comments/336217.html http://www.aygfsteel.com/mhl1003/articles/336217.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/336217.html http://www.aygfsteel.com/mhl1003/services/trackbacks/336217.html
public class Hashtable < K,V > extends Dictionary < K,V > implements Map < K,V > , Cloneable, Serializable
HashMap原型如下Q实CMap接口Q?
public class HashMap < K,V >
extends AbstractMap < K,V > implements Map < K,V > , Cloneable, Serializable
2.Hashtable是线E同步的QHashMap在默认情况下是非U程同步?br />
3.Hashtable不允许key和value为null,而HashMap允许?br />
4.׃底层的实现机制不同,HashMap的速度快于Hashtable,因ؓHashMap不需要同步检查,在非多线E环境中使用HashMap代替Hashtable?
]]> 古典问题Q有一对兔?.. http://www.aygfsteel.com/mhl1003/articles/336034.html自由战士 自由战士 Sun, 24 Oct 2010 11:51:00 GMT http://www.aygfsteel.com/mhl1003/articles/336034.html http://www.aygfsteel.com/mhl1003/comments/336034.html http://www.aygfsteel.com/mhl1003/articles/336034.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/336034.html http://www.aygfsteel.com/mhl1003/services/trackbacks/336034.html package com;
import java.util.Vector;
/**/ /*
* 题目Q古兔R题:有一对兔子,从出生后W?个月h?br />
* 月都生一对兔子,兔子长到第三个月后每个月又?br />
* 一对兔子,兔子的寿命都?0个月Q问每个月的兔子L为多?
*/
public class Test2 {
// 容器Q存储存zȝ兔子?/span>
private Vector vector = new Vector();
// ~号
private int No = 0 ;
// 构造函?/span>
public Test2()
{
InnerClass ic = new InnerClass();
ic.setNo(No ++ );
vector.add(ic);
}
public void born()
{
InnerClass ic = new InnerClass();
ic.setNo(No ++ );
vector.add(ic);
}
// 内部c?/span>
class InnerClass
{
private int no = 0 ;
private int life = 0 ;
public void setNo( int no)
{
this .no = no;
}
public void setLife( int life)
{
this .life = life;
}
public int getNo()
{
return this .no;
}
public int getLife()
{
return this .life;
}
}
public int calculate()
{
// 讄20个月内每个月的兔子数
int Max = 20 ;
// 初始?只兔?/span>
int sum = 2 ;
while (Max > 0 )
{
for ( int i = 0 ; i < vector.size(); i ++ )
{
InnerClass ic = (InnerClass)vector.elementAt(i);
int life = ic.getLife();
life ++ ;
if (life < 3 )
{
// do nothing
ic.setLife(life);
}
else // 可以生小兔子?/span>
{
born();
}
if (life >= 10 ) // 必须M
{
vector.removeElementAt(i);
}
}
System.out.println(" W?/span>" + ( 20 - Max) + " 月兔子数? " + vector.size() * 2 );
Max -- ;
}
return 0 ;
}
public static void main(String args[])
{
Test2 t2 = new Test2();
t2.calculate();
}
}
]]> 快速排序的递归实现 http://www.aygfsteel.com/mhl1003/articles/335995.html自由战士 自由战士 Sat, 23 Oct 2010 15:15:00 GMT http://www.aygfsteel.com/mhl1003/articles/335995.html http://www.aygfsteel.com/mhl1003/comments/335995.html http://www.aygfsteel.com/mhl1003/articles/335995.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/335995.html http://www.aygfsteel.com/mhl1003/services/trackbacks/335995.html /**/ /* 快速排序算法实?br />
* key的值在一ơ递归中是保持不变的,递归函数体就是把整个?br />
* l小于key的值放|在key的左边,大于key的放|在key?br />
* 双Q接着改变数组长度Q递归
* */
package com;
public class Test1 {
private int a[] = new int [] { 49 , 38 , 65 , 97 , 76 , 13 , 27 } ;
private final int LEFT = 1 ;
private final int RIGHT = 2 ;
private int flag = LEFT;
public void fast_sort( int index, int n)
{
int key = a[index];
int i = index;
int j = n;
while (i < j)
{
if (flag == LEFT)
{
if (key > a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
// key = a[j];
flag = RIGHT;
i ++ ;
}
else
{
j -- ;
}
}
else
{
if (key < a[i])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
// key = a[i];
flag = LEFT;
j -- ;
}
else
{
i ++ ;
}
}
}
if (index < i - 1 )
{
fast_sort(index,i - 1 );
}
if (i + 1 < n)
{
fast_sort(i + 1 ,n);
}
}
public void swap( int a, int b)
{
int tmp = a;
a = b;
b = tmp;
}
public void print()
{
for ( int i = 0 ; i < 7 ; i ++ )
{
System.out.print(a[i] + " " );
}
}
public static void main(String[] args)
{
Test1 t1 = new Test1();
t1.fast_sort( 0 , 6 );
t1.print();
}
}
]]>Eclipse如何q行单步调试 http://www.aygfsteel.com/mhl1003/articles/335994.html自由战士 自由战士 Sat, 23 Oct 2010 15:13:00 GMT http://www.aygfsteel.com/mhl1003/articles/335994.html http://www.aygfsteel.com/mhl1003/comments/335994.html http://www.aygfsteel.com/mhl1003/articles/335994.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/335994.html http://www.aygfsteel.com/mhl1003/services/trackbacks/335994.html ]]>IT职业生路线?Q初E) http://www.aygfsteel.com/mhl1003/articles/335988.html自由战士 自由战士 Sat, 23 Oct 2010 12:15:00 GMT http://www.aygfsteel.com/mhl1003/articles/335988.html http://www.aygfsteel.com/mhl1003/comments/335988.html http://www.aygfsteel.com/mhl1003/articles/335988.html#Feedback 0 http://www.aygfsteel.com/mhl1003/comments/commentRss/335988.html http://www.aygfsteel.com/mhl1003/services/trackbacks/335988.html
]]>
վ֩ģ壺
|
|
|
ű |
ɽ |
ϲ |
|
|
人 |
|
ַ |
կ |
ͤ |
³ɽ |
ƽ |
|
|
|
|
˹ |
ֶ |
Ǩ |
|
|
|
|
½ |
|
|
|
|
|
|
ֹ |
|
ƫ |
ɽ |
ԭ |
|
|
|