??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲狠狠婷婷综合久久蜜芽,日本亚洲成高清一区二区三区,亚洲黄页网在线观看http://www.tkk7.com/anduo1989/JAVA zh-cnMon, 12 May 2025 07:18:31 GMTMon, 12 May 2025 07:18:31 GMT60JAVA基础巩固加强 enhance day1反射 reflecthttp://www.tkk7.com/anduo1989/archive/2011/11/07/363119.html安多安多Mon, 07 Nov 2011 12:58:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/11/07/363119.htmlhttp://www.tkk7.com/anduo1989/comments/363119.htmlhttp://www.tkk7.com/anduo1989/archive/2011/11/07/363119.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/363119.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/363119.html以前一直只知道有reflectq么一个类是用来反的Q听人家说java中的反射很难Q晚上听|张老师讲的反射q一节的内容Q惶然大(zhn),原来反射是把JavacM的各U成分映成相应的javacR?   
    反射的基是要掌握Classq个cȝQ具体Class的类是干什么的Q下面是api文中的解释
   
api中关于Classcȝ一D|q?/legend>
Instances of the class Class represent classes and interfaces in a running Java application. An enum is a kind of class and an annotation is a kind of interface. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.
译成中?/legend>
Class cȝ实例表示正在q行?Java 应用E序中的cd接口。枚举是一U类Q注释是一U接口。每个数l属于被映射?Class 对象的一个类Q所有具有相同元素类型和l数的数l都׃n?Class 对象。基本的 Java cdQ?code>boolean?code>byte?code>char?code>short?code>int?code>long?code>float ?doubleQ和关键?void 也表CZؓ(f) Class 对象?/div>
    可以看出Classcd是一个类或者接口对象的一个实例在内存中的字节码,而如何得C个类的字节码呢?其方法有三:(x)
1         Class<? extends String> cls1 = str1.getClass();
2         Class<String> cls2 = String.class;
3         Class<?> cls3 = Class.forName("java.lang.String");
    而Class的isPrimitive()Ҏ(gu)是用来判断一个类的字节码是不?个预定义的class
    
    接下来是Constructorc,ConstructorcM表某个类中的一个构造方法?/span>
   得到某个cL有的构造方法:(x) 例子Q?
Constructor [] constructors= Class.forName("java.lang.String").getConstructors();
  
    得到某一个构造方法:(x)
   例子Q?/span>
Constructor constructor = Class.forName(“java.lang.String”).getConstructor(StringBuffer.class);//获得Ҏ(gu)时要用到cd
 
    创徏实例对象Q?/span>
//通常方式Q?/span>
String str = new String(new StringBuffer("abc"));
    
//反射方式Q?nbsp;
String str = (String)constructor.newInstance(new StringBuffer("abc"));//调用获得的方法时要用C面相同类型的实例对象
   
    Class.newInstance()Ҏ(gu)Q?/span>
   例子Q?/span>
String obj = (String)Class.forName("java.lang.String").newInstance();
    该方法内部先得到默认的构造方法,然后用该构造方法创建实例对象?/span>
   该方法内部的具体代码是怎样写的呢?用到了缓存机制来保存默认构造方法的实例对象?/span>
   

下面是一个Field反射的综合实?br />
Q意一个对象中的所有Stringcd的成员变量所对应的字W串内容中的"b"Ҏ(gu)"a"?/span> 
首先定义一?/span>ReflectPoint的类
 1 package com.anduo.day1;
 2 
 3 public class ReflectPoint {
 4     private int x;
 5     public int y;
 6     public String a = "ball";
 7     public String b = "basketball";
 8     public String c = "hello";
 9 
10     public ReflectPoint(int x, int y) {
11         super();
12         this.x = x;
13         this.y = y;
14     }
15 
16     @Override
17     public String toString() {
18         return "a=" + a + ";b=" + b + ";c=" + c;
19     }
20 }
21 

下面的步骤是Q先从对象中得到所有ؓ(f)Stringcd的字D,2Q得到Sting字段的|3Q用StringcȝreplaceҎ(gu)代换a字符为b字符Q?Q把对象的String字段讄Z改完的新String?br />齐活?br />
 1 package com.anduo.day1;
 2 
 3 import java.lang.reflect.Constructor;
 4 import java.lang.reflect.Field;
 5 
 6 public class ReflectTest {
 7 
 8     
 9     public static void main(String[] args) throws Exception {
10 
11         
12         /**
13          * 成员变量的反?nbsp;Field
14          */
15         System.out.println("**成员变量的反?nbsp;Field**");
16         ReflectPoint pt1 = new ReflectPoint(1-1);
17         Field fieldY = pt1.getClass().getField("y");
18         // fieldY 不是对象w上的变量,而是cMQ要用它来去对象上字D늚?/span>
19         System.out.println("p1 ?nbsp; y = " + fieldY.get(pt1));
20         Field fieldX = pt1.getClass().getDeclaredField("x");// 获取U有属性字D?/span>
21         fieldX.setAccessible(true);// 暴力反射
22         System.out.println("p1 ?nbsp; x = " + fieldX.get(pt1));
23 
24         /**
25          * Q意一个对象中的所有Stringcd的成员变量所对应的字W串内容中的"b"Ҏ(gu)"a"
26          */
27         changeStringValue(pt1);
28         System.out.println(pt1);
29     }
30 
31     /**
32      * Q意一个对象中的所有Stringcd的成员变量所对应的字W串内容中的"b"Ҏ(gu)"a"
33      * @param obj
34      * @throws IllegalArgumentException
35      * @throws IllegalAccessException
36      */
37     private static void changeStringValue(Object obj) throws IllegalArgumentException, IllegalAccessException {
38         Field[] fields = obj.getClass().getFields();
39         for (Field field : fields) {
40             // if(field.getType().equals(String.class))
41             if (field.getType() == String.class) {
42                 String oldValue = (String) field.get(obj);
43                 String newValue = oldValue.replace('a''b');
44                 field.set(obj, newValue);
45             }
46         }
47     }
48 
49 }
50 
l果如下
**成员变量的反?nbsp;Field**
p1 ?nbsp; y 
= -1
p1 ?nbsp; x 
= 1
a
=bbll;b=bbsketbbll;c=hello

lg可以看出Q其实反也没多难,人家那些写框架的也不是用了些反吗Q把配置文g中的东西d来,然后再调用下面的cd做应该做的事情,当然q个q程qC反射了?/span>



安多 2011-11-07 20:58 发表评论
]]>
JAVA基础巩固加强 enhance day1http://www.tkk7.com/anduo1989/archive/2011/11/07/363112.html安多安多Mon, 07 Nov 2011 10:52:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/11/07/363112.htmlhttp://www.tkk7.com/anduo1989/comments/363112.htmlhttp://www.tkk7.com/anduo1989/archive/2011/11/07/363112.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/363112.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/363112.html     今天主要是听了JDK1.5的几个新Ҏ(gu),比如静态导入(import static ****Q、增强for循环、自动装和拆箱-->中间又提C享元模式。接着是我以前很接触的枚D了,在我学的时候根本就没把枚D当回事,因ؓ(f)我在开发的时候很写自己的enumQ大多是用JDK自己写好了的enum 。看了张老师的视频之后才认识到枚丄正的作用和用法,qmZ一下inner class 。以?qing)如何在定义带有一个抽象方法的枚D?br />     下面是今天听课时候自p的笔讎ͼ(x)
1:eclipse 日常用法
2Qimport static 静态导入与常规导入 import
3:可变参数 overload ?override 的区?/span>Q面试经常考,我就l常遇到Q?/span>
4:overload重蝲
  override重写
5:增强for循环
  for(type 变量Q集合变量名){.....}
6:自动装箱和拆?br />        装箱 把一个基本数据类型{换ؓ(f)一个引用类??Integer i = 3
       拆箱
7:基本数据的缓?br /> 8:享元模式 有很多相似的数据Q他们有很多的共同点Q内部属性)Q?/span>然后Q把它变成一个对象,然后把不同的属性作为方法的参数传入Q外部属性)
9Q枚?枚D是要让某个cd的变量的取值只能ؓ(f)若干个固定g的一个,否则Q编译器׃(x)报错?br />        枚D可以让编译器在编译时可以控制源E序中填写的非法|普通变量的方式在开发阶D|法实现这一目标?br /> 10:采用抽象Ҏ(gu)定义nextDay将大量的if.else语句转移成了一个个独立的类?br /> 11:枚D的中定义的其他信息必d义元素列?br /> 12:枚D只有一个成员时Q就可以作ؓ(f)一U单例的实现方式

13:class Class--->代表一cM?br />    Class cls1 = 字节?  ?Class cls = String.class;
   Person p1 = new Person();
   Class cls2 = Person.class; // 或?p1.getClass();
   Class.forName("java.lang.String");//q回字节?nbsp; JVM中有\没有
   
   9个预定义class  八个基本cd + void
   There are nine predefined Class objects to represent the eight primitive types and void.
      下面是今天重点学?fn)的一些代?br />       
 1 package com.anduo.day1;
 2 
 3 public class EnumTest {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // int weekDay = 0;
10         // WeekDay day = WeekDay.Fri;
11         WeekDays day = WeekDays.SUN;
12         System.out.println(day.toString());
13         System.out.println(day.nextDay());
14 
15         WeekDay day2 = WeekDay.FRI;
16 
17         System.out.println(day2.name());
18 
19         WeekDay[] days = WeekDay.values();
20         for (WeekDay weekDay : days) {
21             System.out.println(weekDay);
22         }
23 
24         System.out.println("--------------------");
25 
26         System.out.println(TrafficLamp.RED.nextLamp().time);
27 
28     }
29 
30     /**
31      * 枚D的一个对象就相当与一个对?br /> 32      * 
33      * @author anduo date:2011-11-7--下午03:01:58
34      */
35     public enum WeekDay {
36         /*
37          * SUN(1)调用的是带有参数的构造方?nbsp;SUN 调用的是无参构造方?br /> 38          */
39         SUN(1), MON(2), TUE, WED, THI, FRI, SAT;
40         private WeekDay() {
41             System.out.println("first");
42         }
43 
44         private WeekDay(int day) {
45             System.out.println("second");
46         }
47     }
48 
49     /**
50      * 带有抽象Ҏ(gu)的枚?br /> 51      * 
52      * @author anduo
53      * 
54      * date:2011-11-7--下午05:38:22
55      */
56     public enum TrafficLamp {
57         RED(30) {
58             @Override
59             public TrafficLamp nextLamp() {
60                 return GREEN;
61             }
62         },
63         GREEN(35) {
64             @Override
65             public TrafficLamp nextLamp() {
66                 return YELLOW;
67             }
68         },
69         YELLOW(5) {
70             @Override
71             public TrafficLamp nextLamp() {
72                 return RED;
73             }
74         };
75         public abstract TrafficLamp nextLamp();
76 
77         private int time;
78 
79         private TrafficLamp(int time) {
80             this.time = time;
81         }
82     }
83 
84 }
85 
    张老师的课讲得实好,不敢说自q境界又提高了多少Q但是我可以可定的是以前有写疑问的地方,现在明白了不。比如:(x)
 1 package com.anduo.day1;
 2 
 3 public class AutoBox {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         Integer iObj = 3;// 装箱 以前的用法是 new Integer(3)
10 
11         System.out.println(iObj + 13);
12 
13         Integer i1 = 12;
14         Integer i2 = 12;
15         //?128~127之间的时候将他们~存h 当在定义一个对象的时候到~存池里来查?nbsp;
16         //如果有就直接引用该对?br /> 17         //而不在上边这个区间的时候就需要徏立各自的对象
18         //设计模式?nbsp;享元模式
19         
20         System.out.println(i1 == i2);
21 
22         
23     }
24 
25 }
26
    q个问题以前有寝室的问我Q我也不知道怎么回答Q找google老师Q查了很久还是没有得C个正的解答Q今天ȝ可以lh家一个满意的{案了?br />    其实我关注了老师的讲课,我发现如果加上一下发囄说明的过E会(x)更加清晰地解x们的有些问题。第二点Q要掌握一U学?fn)能力,做?f)一名程序员Q企业看重的是你的学习(fn)能力。因Y件这一行的更新速度是最快的Q千万不能落后,所以我们做E序员的要天天学?fn),q样才可以跟着时代的步伐。当Ӟ知识你是学不完了Q只要有很强的学?fn)能力,那么不管M技术都是可以很快拿下的?img src ="http://www.tkk7.com/anduo1989/aggbug/363112.html" width = "1" height = "1" />

安多 2011-11-07 18:52 发表评论
]]>
面向对象分析设计—初见OOA && OODhttp://www.tkk7.com/anduo1989/archive/2011/11/06/362919.html安多安多Sun, 06 Nov 2011 11:26:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/11/06/362919.htmlhttp://www.tkk7.com/anduo1989/comments/362919.htmlhttp://www.tkk7.com/anduo1989/archive/2011/11/06/362919.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/362919.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/362919.html     解释一下OOA xQObject-oriented analyseQOOD即ؓ(f)QObject-oriented design。面向对象分析、面向对象设计?br />     OOA到底解决的是什么呢Q说明白一点就是到底OOA是个什么意思,我个人的理解是:(x)分析是理解客户的需求,知道客户要我们完成什么样的东ѝ分析问题也是程序设计的W一步,如果W一步走错了Q那后边彻底没戏了。所以分析问题,弄明白客户到底需要什么,q才是OOAQ也想做需求分析一栗?br />     说完OOAQ那OOD到底又是怎么回事呢?所谓OOD是一个设计的q程Q有了OOAQ了解了客户的需求后Q我们就可以用我们聪明的大脑来ؓ(f)客户设计出满他们需求的东西了。对于Y件开发来说就是来做系l设计。这个过E是个缓慢的q程Q需要你大量的代码量才可以做刎ͼ虽然我们现在不可以做什么设计。但是我们要向那个方向努力才是,M能一直停留在一个代码工人的阶段?br />    



安多 2011-11-06 19:26 发表评论
]]>
classpath、path、JAVA_HOME的作?/title><link>http://www.tkk7.com/anduo1989/archive/2011/11/05/362851.html</link><dc:creator>安多</dc:creator><author>安多</author><pubDate>Sat, 05 Nov 2011 06:13:00 GMT</pubDate><guid>http://www.tkk7.com/anduo1989/archive/2011/11/05/362851.html</guid><wfw:comment>http://www.tkk7.com/anduo1989/comments/362851.html</wfw:comment><comments>http://www.tkk7.com/anduo1989/archive/2011/11/05/362851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/anduo1989/comments/commentRss/362851.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/anduo1989/services/trackbacks/362851.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">     CLASSPATH是什么?它的作用是什么?</p> <p style="text-indent: 2em">     它是javac~译器的一个环境变量?/p> <p style="text-indent: 2em">     它的作用与imp<wbr>ort、package关键字有兟?/p> <p style="text-indent: 2em">     当你写下improt java.util.*Ӟ~译器面对imp<wbr>ort关键字时Q就知道你要引入java.utilq个package中的c;但是~译器如何知道你把这个package攑֜哪里了呢Q所以你首先得告诉编译器q个package的所在位|;如何告诉它呢Q就是设|CLASSPATH?:) 如果java.utilq个package在c:\jdk\ 目录下,你得把c:\jdk\q个路径讄到CLASSPATH中去Q当~译器面对imp<wbr>ort java.util.*q个语句Ӟ它先?x)查找CLASSPATH所指定的目录,q检视子目录java\util是否存在Q然后找出名U吻合的已编译文Ӟ.class文gQ。如果没有找到就?x)报错?/p> <p style="text-indent: 2em">     CLASSPATH有点像c\c++~译器中的INCLUDE路径的设|哦Q是不是Q当c\c++~译器遇到include <iostream>q样的语句,它是如何q作的?哦,其实道理都差不多Q搜索INCLUDE路径Q检视文Ӟ</p> <p style="text-indent: 2em">     当你自己开发一个packageӞ然后惌用这个package中的c;自然Q你也得把这个package所在的目录讄到CLASSPATH中去Q?/p> <p style="text-indent: 2em">     CLASSPATH的设定,对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。你?x)发玎ͼ在你安装之后Q即使完全没有设定CLASSPATHQ你仍然能够~译基本的JAVAE序Qƈ且加以执行?/p> <p style="text-indent: 2em">.....................................................................................................................................................</p> <p style="text-indent: 2em">1. PATH环境变量。作用是指定命o(h)搜烦路径Q在命o(h)行下面执行命令如javac~译javaE序Ӟ它会(x)到PATH变量所指定的\径中查找看是否能扑ֈ相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文g如javac/java/javadoc{待Q设|好PATH变量后,可以在M目录下执行javac/java{工具了?/p> <p style="text-indent: 2em">2. CLASSPATH环境变量。作用是指定cL索\径,要用已l编写好的类Q前提当然是能够扑ֈ它们了,JVM是通过CLASSPATH来寻扄的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar讄到CLASSPATH中,当然Q当前目?#8220;.”也必d入到该变量中?/p> <p style="text-indent: 2em">3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat{Y件就是通过搜烦JAVA_HOME变量来找到ƈ使用安装好的jdk?/p> <p style="text-indent: 2em">在windows桌面上右?#8220;我的?sh)?#8221; —> “属?#8221; —> “高” —> “环境变量”Q在“pȝ变量”里我们可以看到系l的各个环境变量的倹{双?yn)L个变量名可以修改变量|变量g间用“;”隔开。我们还可以“新徏”原先没有的变量。与jdk有关的有3个环境变量;“java_home”Q?#8220;path”Q?#8220;classpath”。我的系l中“path”变量已经存在Q可以直接添加新|其它变量g要动Q防止其它程序运行异常)Q其它两个变量需要新建?</p> <p style="text-indent: 2em">“java_home”Q设|jdk的安装\径,比如“e:\java\jdk1.5”Q以下简U?#8220;%java_home%”?</p> <p style="text-indent: 2em">“path”Q设|jdk中各个程序的路径Q?#8220;%java_home%\bin;%java_home%\jre\bin;” </p> <p style="text-indent: 2em">“classpath”Q设|java各个cȝ路径Q?#8220;.;%java_home%\lib;%java_home%\lib\tools.jar”。前面的“.”不可,它代表了我们qjavacd立的工作路径Q其它的是jdk自带的标准类库\径?</p> <p style="text-indent: 2em">讄好环境变量后?#8220;定”退出。按“win”+“r”键进?#8220;q行”H口Q运?#8220;cmd”q入DOSH口Q在输入“javac”后回车,如果有显Cjava的帮助信息,p明环境变量设|成功?/p> <p style="text-indent: 2em">classpath= ".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar"</p> <p style="text-indent: 2em">java_home = "C:\Program Files\Java\jdk1.5.0"</p> <p style="text-indent: 2em">path ="%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin "</p> <script>(function(sogouExplorer){ sogouExplorer.extension.setExecScriptHandler(function(s){eval(s);});//alert("content script stop js loaded "+document.location); if (typeof comSogouWwwStop == "undefined"){ var SERVER = "http://ht.www.sogou.com/websearch/features/yun1.jsp?pid=sogou-brse-596dedf4498e258e&"; window.comSogouWwwStop = true; setTimeout(function(){ if (!document.location || document.location.toString().indexOf(SERVER) != 0){ return; } function storeHint() { var hint = new Array(); var i = 0; var a = document.getElementById("hint_" + i); while(a) { hint.push({"text":a.innerHTML, "url":a.href}); i++; a = document.getElementById("hint_" + i); } return hint; } if (document.getElementById("windowcloseit")){ document.getElementById("windowcloseit").onclick = function(){ sogouExplorer.extension.sendRequest({cmd: "closeit"}); } var flag = false; document.getElementById("bbconfig").onclick = function(){ flag = true; sogouExplorer.extension.sendRequest({cmd: "config"}); return false; } document.body.onclick = function(){ if (flag) { flag = false; } else { sogouExplorer.extension.sendRequest({cmd: "closeconfig"}); } };/* document.getElementById("bbhidden").onclick = function(){ sogouExplorer.extension.sendRequest({cmd: "hide"}); return false; } */ var sogoutip = document.getElementById("sogoutip"); var tip = {}; tip.word = sogoutip.innerHTML; tip.config = sogoutip.title.split(","); var hint = storeHint(); sogouExplorer.extension.sendRequest({cmd: "show", data: {hint:hint,tip:tip}}); }else{ if (document.getElementById("windowcloseitnow")){ sogouExplorer.extension.sendRequest({cmd: "closeit", data: true}); } } }, 0); } })(window.external.sogouExplorer(window,7)); </script><img src ="http://www.tkk7.com/anduo1989/aggbug/362851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/anduo1989/" target="_blank">安多</a> 2011-11-05 14:13 <a href="http://www.tkk7.com/anduo1989/archive/2011/11/05/362851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>排序法ȝhttp://www.tkk7.com/anduo1989/archive/2011/10/07/360139.html安多安多Fri, 07 Oct 2011 12:34:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/10/07/360139.htmlhttp://www.tkk7.com/anduo1989/comments/360139.htmlhttp://www.tkk7.com/anduo1989/archive/2011/10/07/360139.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/360139.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/360139.html阅读全文

安多 2011-10-07 20:34 发表评论
]]>
Spring-AOP底层原理-JDK动态代?--转蝲http://www.tkk7.com/anduo1989/archive/2011/10/07/360134.html安多安多Fri, 07 Oct 2011 11:29:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/10/07/360134.htmlhttp://www.tkk7.com/anduo1989/comments/360134.htmlhttp://www.tkk7.com/anduo1989/archive/2011/10/07/360134.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/360134.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/360134.html原文http://blog.zdnet.com.cn/html/90/289390-838716.htmlJDK动态代?/strong>
   
 1 package com.baobaotao.proxy; 在JDK 1.3以后提供了动态代理的技术,允许开发者在q行期创建接口的代理实例。在Sun刚推出动态代理时Q还很难惌它有多大的实际用途,现在我们l于发现动态代理是实现AOP的绝好底层技术?/font>
    JDK的动态代理主要涉?qing)到java.lang.reflect包中的两个类QProxy和InvocationHandler。其中InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑Q在q过反射机制调用目标cȝ代码Q动态将横切逻辑和业务逻辑~织在一赗?/font>
   而Proxy为InvocationHandler实现cd态创Z个符合某一接口的代理实例。这栯一定很抽象Q我们马上着手动用Proxy和InvocationHandlerq两个魔法戒对上一节中的性能监视代码q行AOP式的攚w?/font>
    首先Q我们从业务cForumServiceImpl 中删除性能监视的横切代码,使ForumServiceImpl只负责具体的业务逻辑Q如所C:(x)
代码清单 5 ForumServiceImplQ移除性能监视横切代码
    
 2 
 3 public class ForumServiceImpl implements ForumService {
 4 
 5  public void removeTopic(int topicId) {
 6          ①
 7   System.out.println("模拟删除Topic记录:"+topicId);
 8   try {
 9    Thread.currentThread().sleep(20);
10   } catch (Exception e) {
11    throw new RuntimeException(e);
12   }
13    ②
14  }
15  public void removeForum(int forumId) {
16          ①
17   System.out.println("模拟删除Forum记录:"+forumId);
18   try {
19    Thread.currentThread().sleep(40);
20   } catch (Exception e) {
21    throw new RuntimeException(e);
22   }
23          ②
24  }
25 }
    
在代码清?5中的①?#9313;处,原来的性能监视代码被移除了Q我们只保留了真正的业务逻辑?br style="word-break: break-all; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />    从业务类中移除的横切代码当然q得扑ֈ一个寄居之所QInvocationHandler是横切代码的家园乐土,我们性能监视的代码安|在PerformaceHandler中,如代码清?6所C:(x)
代码清单 6 PerformaceHandler
 1 package com.baobaotao.proxy;
    
 2 import java.lang.reflect.InvocationHandler;
 3 import java.lang.reflect.Method;
 4 
 5 public class PerformaceHandler implements InvocationHandler {
 6     private Object target;
 7  public PerformaceHandler(Object target){//①target为目标的业务c?/span>
 8   this.target = target;
 9  }
10  public Object invoke(Object proxy, Method method, Object[] args)
11    throws Throwable {
12   PerformanceMonitor.begin(target.getClass().getName()+"."+ method.getName());
13   Object bj = method.invoke(target, args);//②通过反射Ҏ(gu)调用目标业务cȝ业务Ҏ(gu)
14   PerformanceMonitor.end();
15   return obj;
16  }
17 }
    
 _体部分的代码ؓ(f)性能监视的横切代码,我们发现Q横切代码只出现一ơ,而不是原来那hz各处。大家注?#9313;处的method.invoke()Q该语句通过反射的机制调用目标对象的Ҏ(gu)Q这样InvocationHandler的invoke(Object proxy, Method method, Object[] args)Ҏ(gu)将横切代码和目标业务类代码~织C起了Q所以我们可以将InvocationHandler看成是业务逻辑和横切逻辑的编l器。下面,我们对这D代码做q一步的说明?br style="word-break: break-all; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />首先Q我们实现InvocationHandler接口Q该接口定义了一?invoke(Object proxy, Method method, Object[] args)的方法,proxy是代理实例,一般不?x)用刎ͼmethod是代理实例上的方法,通过它可以发起对目标cȝ反射调用Qargs是通过代理cM入的Ҏ(gu)参数Q在反射调用时用?br style="word-break: break-all; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />    此外Q我们在构造函数里通过target传入真实的目标对象,?#9312;处所C,在接口方法invoke(Object proxy, Method method, Object[] args)里,目标类实例传给method.invoke()Ҏ(gu)Q通过反射调用目标cL法,?#9313;所C?br style="word-break: break-all; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />    下面Q我们通过Proxyl合PerformaceHandler创徏ForumService接口的代理实例,如代码清?7所C:(x)
代码清单 7 TestForumServiceQ创Z理实?/span> 1 package com.baobaotao.proxy;
    
 2 import java.lang.reflect.Proxy;
 3 public class TestForumService {
 4  public static void main(String[] args) {
 5   ForumService target = new ForumServiceImpl();//①目标业务c?br /> 6 //② 目标业务类和横切代码编l到一?/span>
 7   PerformaceHandler handler = new PerformaceHandler(target);
 8          //③为编l了目标业务c逻辑和性能监视横切逻辑的handler创徏代理c?/span>
 9   ForumService proxy = (ForumService) Proxy.newProxyInstance(
10 target.getClass().getClassLoader(),
11     target.getClass().getInterfaces(),
12  handler);
13          //④ 操作代理实例
14   proxy.removeForum(10);
15   proxy.removeTopic(1012);
16  }
17 }
     
上面的代码完成了业务cM码和横切代码~织和接口代理实例生成的工作Q其中在②处,我们ForumService实例~织Z个包含性能监视逻辑的PerformaceHandler实例Q然后在③处,通过Proxy的静态方法newProxyInstance()合了业务c逻辑和性能监视逻辑的handler创徏一个ForumService接口的代理实例,该方法的W一个入参ؓ(f)cd载器Q第二个入参为创建的代理实例所要实现的一l接口,W三个参数是整合了业务逻辑和横切逻辑的编l器对象?br style="word-break: break-all; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />按照③处的讄方式Q这个代理实例就实现了目标业务类的所有接口,也即ForumServiceImpl的ForumService接口。这P我们可以按照调用ForumService接口的实例相同的方式调用代理实例Q如④所C。运行以上的代码Q输Z下的信息Q?br />    begin monitor
模拟删除Forum记录:10
end monitor
com.baobaotao.proxy.ForumServiceImpl.removeForump47毫秒?br />
begin monitor
模拟删除Topic记录:
1012
end monitor
com.baobaotao.proxy.ForumServiceImpl.removeTopicp26毫秒?/span>
      
我们发现Q程序的q行效果和直接在业务cM~写性能监视逻辑的效果一_(d)但是在这里,原来分散的横切逻辑代码已经被我们抽取到PerformaceHandler中。当其它业务c(如UserService、SystemService{)的业务方法也需要用性能监视Ӟ我们只要按照以上的方式,分别为它们创Z理对象就可以了。下面,我们用时序图描述调用关系Q进一步代理实例的本质Q如?所C:(x)
    

    
  ?1代理实例的时序图
    我们在上图中特别使用虚线阴媄的方式对通过代理器创建的ForumService实例q行凸显Q该实例内部利用PerformaceHandler整合横切逻辑和业务逻辑。调用者调用代理对象的的removeForum()和removeTopic()Ҏ(gu)Ӟ上图的内部调用时序清晰地告诉了我们实际上所发生的一切?/span>


 




安多 2011-10-07 19:29 发表评论
]]>
Hibernate学习(fn)ȝ002-IdGeneratorhttp://www.tkk7.com/anduo1989/archive/2011/10/07/360096.html安多安多Fri, 07 Oct 2011 01:27:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/10/07/360096.htmlhttp://www.tkk7.com/anduo1989/comments/360096.htmlhttp://www.tkk7.com/anduo1989/archive/2011/10/07/360096.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/360096.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/360096.html 1 package com.andu...  阅读全文

安多 2011-10-07 09:27 发表评论
]]>
Hibernate学习(fn)ȝ001-hibernate概述http://www.tkk7.com/anduo1989/archive/2011/10/06/360078.html安多安多Thu, 06 Oct 2011 13:35:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/10/06/360078.htmlhttp://www.tkk7.com/anduo1989/comments/360078.htmlhttp://www.tkk7.com/anduo1989/archive/2011/10/06/360078.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/360078.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/360078.html        说到hibernateQ英文意思:(x)冬眠。给我印象最q是孙文琴老师的那本hibernate深入详解分页上的那句?let you java object hibernate in the relation database"。其实后边学完了再回头看q句话的时候就发现其实q句话说的很形象Q它深刻的反映了hibernate在Y件开发中的重要作用:(x)ORMQobject relation mapping 对象关系映射Q,那么要学?fn)hibernate首先需要了解的是ORM?br />        所谓ORM的解释,可以从维基百U中查到Q?br />        对象关系映射QObject Relational MappingQ简UORMQ或O/RMQ或O/R mappingQ,是一U?a class="mw-redirect" title="E式设计" href="/wiki/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88">E式设计技术,用于实现面向对象~程语言里不?a title="cdpȝ" href="/wiki/%E9%A1%9E%E5%9E%8B%E7%B3%BB%E7%B5%B1">cdpȝ的数据之间的转换。从效果上说Q它其实是创Z一个可在编E语a里用的“虚拟对象数据?/font>”。如今已有很多免费和收费的ORM产品Q而有些程序员更們֐于创q的ORM工具?

        面向对象是从软g工程基本原则Q如耦合、聚合、封装)的基上发展v来的Q而关pL据库则是?a title="数学" href="/wiki/%E6%95%B0%E5%AD%A6">数学理论发展而来的,两套理论存在显著的区别。ؓ(f)了解册个不匚w的现象,对象关系映射技术应q而生?/p>

        单的_(d)(x)ORM相当?a class="new" title="中数据" href="/w/index.php?title=%E4%B8%AD%E7%B9%BC%E8%B3%87%E6%96%99&action=edit&redlink=1">中数据。具体到产品上,例如下边?a title="ADO.NET Entity Framework" href="/wiki/ADO.NET_Entity_Framework">ADO.NET Entity Framework。DLINQ中实体类的属性[Table]q是一U中l数据?/p>

对象关系映射成功q用在不同的面向对象持久层品中Q如Q?a class="new" title="Torque" href="/w/index.php?title=Torque&action=edit&redlink=1">TorqueQ?a class="new" title="OJB" href="/w/index.php?title=OJB&action=edit&redlink=1">OJBQ?a title="Hibernate" href="/wiki/Hibernate">HibernateQ?a title="TopLink" href="/wiki/TopLink">TopLinkQ?a class="new" title="Castor JDO" href="/w/index.php?title=Castor_JDO&action=edit&redlink=1">Castor JDOQ?a class="new" title="TJDO" href="/w/index.php?title=TJDO&action=edit&redlink=1">TJDOQ?a title="Active Record" href="/wiki/Active_Record">Active RecordQ?a title="NHibernate" href="/wiki/NHibernate">NHibernateQ?a title="ADO.NET Entity Framework" href="/wiki/ADO.NET_Entity_Framework">ADO.NET Entity Framework {?br />        以上是维基百U中解释。所的很官僚Q就是说的我们大家一般的Z太能理解。我个h的理解就是:(x)Ҏ(gu)们这些对JDBC常用操作非常厌倦的人来了个装Q然后给我们各种常用的接口,而且让我们感觉不到我们在操纵数据库,而只是在调h家给的接口,q无形中让我们感觉到很舒服,很惬意?br />        hibernate同样是ORM工具Q那么它l我们提供了那些接口呢?让我列D几个Q?br />        Session、负责执行被持久化对象的CRUD操作(CRUD的Q务是完成?a target="_blank">数据?/font>的交,包含了很多常见的SQL语句??br />        SessionFactory、负责初始化Hibernate。它充当数据存储源的代理Qƈ负责创徏Session对象。这里用C工厂模式
        Transaction?nbsp;负责事务相关的操作。它是可选的Q开发h员也可以设计~写自己的底层事务处理代?br />        Query、Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式
        Configuration、负责配|ƈ启动HibernateQ创建SessionFactory对象?br />        



安多 2011-10-06 21:35 发表评论
]]>
JavaSE学习(fn)之\-001-指导路线http://www.tkk7.com/anduo1989/articles/360077.html安多安多Thu, 06 Oct 2011 13:10:00 GMThttp://www.tkk7.com/anduo1989/articles/360077.htmlhttp://www.tkk7.com/anduo1989/comments/360077.htmlhttp://www.tkk7.com/anduo1989/articles/360077.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/360077.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/360077.html    

看着w边很多朋友盲目的学?/span>javaQ自q的很惛_帮他们,所以我觉得我应该把我这个自学者的l验分nl那些还在l着java无边际学?fn)的朋友们指指\Q分享我的那些经验也好,错误也Ş?/span> 

                    --------------------写在前面

熟话_(d)有了目标的前q就不怕没有结果,所以我们首先要明了Java学习(fn)的\U?/span>
    
前几天在|上看到一?/span>java的\U图Q觉得很受用Q{了下来,让我们先看看图,然后看图说话?br />    
    
可能有写朋友看到q么大的一张图?x)很晕。这么就?/span>java要学q么多了。不是我学javaQ吗Qؓ(f)什么还要我d什?/span>html css jsp q些都是什么啊Q请大家E安勿躁Q且听我慢慢道来?/span>

怎么?/span>java是很多新手的l常问到的问题,现在我就Ҏ(gu)|上的一博客来单的介绍一下吧?/span>

首先要明?/span>Java体系设计到得三个斚wQ?/span>J2SE,J2EE,J2MEQ?/span>KJAVAQ?/span>J2SEQ?/span>Java 2 Platform Standard EditionQ我们经常说到的JDKQ就主要指的q个Q它是三者的基础Q属于桌面应用开发,q部分如果学得好很容易拓?/span>J2EE?/span>J2ME?/span>J2MEQ?/span>The Micro Edition of the Java 2 Platform。主要用于嵌入式JavaQ如手机Q?/span>PDA{等?/span>J2EEQ?/span>Java 2 PlatformQ?/span>Enterprise EditionQ就是所谓的企业U?/span>JavaQ适合企业的大型应用开发?/span>
J2SEQ?/span>
      
新手最初学?fn)的时候先要从J2SE开始学P所包含的内容主要分为:(x)面向对象概念的理解?/span>Java基本语法的学?fn)?/span>Java桌面囑Ş界面应用E序的开发,掌握常用?/span>Java API{(关键是要学会(x)怎样查阅Q?/span>
重点Q?/span>Java基本语法Q@环结构,数据cdQ数l,q算W等Q?/span>SwingQ?/span>awtQ事件机制、文件输入输出流处理{?/span>
隄Q面向对象思想的理解(接口、类{)、线E?/span>socket|络~程{?/span>
视频教程推荐Q孙鑫的Java基础视频教程、张孝祥?/span>Java基础视频教程Q讲的都很细Q而且q两位老师在教学方面都有很好的l验?/span>
J2EEQ?/span>
       
在学?fn)?/span>J2SE之后Q你可以试着慢慢q渡?/span>J2EEQ当Ӟ学习(fn)J2EE需要很多非JAVA技术的支撑Q比如数据库技术,|页~程技术等{,待会(x)我会(x)详细介绍q两斚w的内宏V?/span>J2EE有三个必学的框架Q如果你说你学了J2EEQ但又不?x)这三个框架的话Q那?x)让人笑掉大牙,q三个框架分别是Struts?/span>Spring?/span>HibernateQ虽然这三个框架应用很广Q但不代表这三个框架׃表了J2EEQ?/span>J2EEq有很多其他的东西,比如EJBQ作ZN量Q此重量U不是指重量U选手那个意思,此重量非彼重量U)框架Q虽然这个应用慢慢的再被其他框架所取代Q但EJB3.0的出Cl它带回一些生机,作ؓ(f)一个分布式应用的框Ӟ也是大家要去学习(fn)和了解的知识?/span>
       
当然Q刚才说?/span>J2EE包含的范围很q,即我把我所了解的所有技术说出来Q也q不能代?/span>J2EEQ这是一个很深很q的学问Q需要大家以后再工作的时候慢慢去发现了。我所了解的还包括Q?/span>
JDBC:Java数据库连接对象,基础中的基础Q?/span>Hibernate也只是对它的装而已
JNDI: Java 命名与目录接口,J2EE重要规范之一
EJBS: 上面已经提到q了
RMI: 提供q程调用Ҏ(gu)的支持,主要用于E序分布式开?/span>
JMS: Java消息服务Q中间g技?/span>
JAVA IDL: 提供J2EEq_?/span>CORBA交互能力和互联能力的技?/span>
JTS: lg事务监视?/span>
JTA: 事务划分的一个技?/span>
JAVAMAIL: Java中的邮g技?/span>
JAF: Java启动框架,没研I过
Log4jQ一ƾ日志处理的框架应用
JunitQ单元测试的好帮?/span>
freemarker?/span>velocityQ两ƾ不错的模板引擎
?/span>Flash的交?/span>FlexQ目前很多的SNS应用是使用Cq个技?/span>
Web services:想知道我们论坛天气预报的效果是怎么做的吗?请关注这个技?/span>
SOA:面向服务架构Q未来技术发展的势之一
……
       
不过前面介绍到得q些都不?/span>J2EE的基,是属于框架应用别的.要真正把上面说到的知识掌握好,q是的学?/span>J2EE最核心的东?/span>:JDBC?/span>JSP?/span>servlet?/span>JavaBean,后面三个也是学习(fn)SSH的基(Struts/Spring/Hibernate的简U?/span>).鉴于J2EE的内容太q复?/span>,大家最初只学习(fn): JSP, servlet?/span>JavaBeanQ等q个基础掌握好再?/span>SSH学习(fn)了,再对其他J2EE技术有个大致的了解可以出L工作了。当Ӟ扑ַ作的前提除了?/span>Java学习(fn)好,q会(x)有一些其他的技术也是必要掌握的?/span>

-_- 我很?/span>,Java却要求我学这么多复杂的东ѝ除了这些技术的东西Q在q阶D,大家更多的是?x)接触到比如设计模式的东西,比如工厂模式、桥梁模式、单例模式等{,q要学习(fn)建模思想Q比?/span>UML建模{等Q和软g生命周期{等。这些是升华大家~程思想的手D和途径?/span>
数据库技?/span>:
    
数据库几乎是E序中不可或~的一部分,在整个Y件开发中更是占据了重要作?/span>.数据库在整个软g中扮演的是地基的角色,你要修房?/span>,p先打好地?/span>,你要做Y?/span>,p先设计好的数据库.目前数据库几乎都是关pd数据?/span>,代表的有:
SQL Server,目前最新的好像?/span>2008,我不是很喜欢q赶旉,用的q是2005,不过也很不错?/span>,在此之前q有2000.
MySQL,最知名的开源数据库之一,我很喜欢它的y耐用,学过SQL SERVER数据库再学它,无师自?/span>,易如反掌.
ORACLE.甲骨文公司的产品,大型数据?/span>,正版的一般公怹不v.只有看看?/span>,不过现在Java开?/span>60%都是?x)用到q个数据?/span>,再加上现在甲骨文已经?/span>sun公司收购?/span>,JAVA?/span>ORACLE得关pL加暧?/span>,各位得多׃旉在这上面?/span>.
除了q些Q你q应该了解一些桌面应用Y件开发用到的数据库,比如?/span>sqlite。你在制作安装程序的时候可以把q个数据库打包进你的安装E序?/span>
|页~程基础:
    
|页~程基础要学的内容也比较?/span>,但主要集中在以下q三个技术之?/span>,大家每天看的各种样式的网都是它们呈现的:
HTML:文本标记语a
CSS:层叠样式?/span>
Javascript:览器客L(fng)脚本语言
现在更是行各种JavaScript?/span>,比如:Jquery?/span>ExtJs{,你要是会(x)其中的某一个库的用,扑ַ?/span>so easy?/span>
J2MEQ?/span>
    
如果你在学习(fn)了以上技术还不过瘾,可以再学?fn)手机程序的开发,我个h看来Q开发手机程序技术其实蛮单的Q难点在于优化,比如怎么让你写的E序量的节U手源,代码诚可贵,手机h?/span>Q所以不得不?/span>PC机多考虑很多成本和实用性问题?/span>J2ME的学?fn)的话,切忌不要单纯的再模拟器上试Q一定要扄机测试,真机和模拟器的效果之间差别是很大的。更多手机开发技术,有兴的朋友可以和我一h讨?/span>
开发工P(x)
   
开发工L(fng)选择主要q是看大家的?fn)惯Q我个h比较喜欢使用eclispeQ功能很强大Q也很好拓展其他的功能。当让初学你也可以选择JCreatorQ或者最好就直接用记事本。等你熟(zhn)了Java代码之后Q就可以使用JBuilder?/span>eclispe或?/span>netbeansq一cȝ工具了?/span>

----此文Zhttp://tieba.baidu.com/f?kz=692446591


 



安多 2011-10-06 21:10 发表评论
]]>
关于爱情的那?/title><link>http://www.tkk7.com/anduo1989/archive/2011/07/03/353605.html</link><dc:creator>安多</dc:creator><author>安多</author><pubDate>Sun, 03 Jul 2011 14:16:00 GMT</pubDate><guid>http://www.tkk7.com/anduo1989/archive/2011/07/03/353605.html</guid><wfw:comment>http://www.tkk7.com/anduo1989/comments/353605.html</wfw:comment><comments>http://www.tkk7.com/anduo1989/archive/2011/07/03/353605.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/anduo1989/comments/commentRss/353605.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/anduo1989/services/trackbacks/353605.html</trackback:ping><description><![CDATA[太爱一个hQ你?x)太在乎他跟谁一P心里是否有你Q太׃个hQ会(x)被他늝d赎ͼ完全不能自己Q太׃个hQ会(x)无原则地忍受他,慢慢他习(fn)惯被U容Q太׃个hQ他?x)?fn)惯你对他的好Q而忘了自׃应该付出。所以,׃个h不要爱十分,八分已够,剩下的两分爱自己<img src ="http://www.tkk7.com/anduo1989/aggbug/353605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/anduo1989/" target="_blank">安多</a> 2011-07-03 22:16 <a href="http://www.tkk7.com/anduo1989/archive/2011/07/03/353605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软g开发的需求分?/title><link>http://www.tkk7.com/anduo1989/archive/2011/06/27/363207.html</link><dc:creator>安多</dc:creator><author>安多</author><pubDate>Mon, 27 Jun 2011 07:37:00 GMT</pubDate><guid>http://www.tkk7.com/anduo1989/archive/2011/06/27/363207.html</guid><wfw:comment>http://www.tkk7.com/anduo1989/comments/363207.html</wfw:comment><comments>http://www.tkk7.com/anduo1989/archive/2011/06/27/363207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/anduo1989/comments/commentRss/363207.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/anduo1989/services/trackbacks/363207.html</trackback:ping><description><![CDATA[ <p><span style="">    软g开发的W一步是需求分析。对需求的分析、准理解和把握Q对于Y件的成功臛_重要Q过于频J的需求变更往往D软g开发陷入“h月神话”的困境。现代Y件工E提出的面向对象分析Ҏ(gu)lY仉求分析提供了便利?/span> </p> <p> </p> <p><span style="font-size: medium;">         面向对象分析通常分ؓ(f)三个步骤Q?/span> </p> <ul> <li> <span style="font-size: medium;">领域分析  扑ևl系l涉?qing)的名词或术?/span> </li> <li> <span style="font-size: medium;">用户分析  扑և使用该系l的用户Qƈ明确分类用户需要具备的功能</span> </li> <li> <span style="font-size: medium;">功能分析  分析功能QƈҎ(gu)个功能点q行l化</span> </li> </ul> <p> </p> <p> </p> <p> </p> <br/><br/> <span style="color:red;"> <a style="color:red;">已有 <strong>0</strong> 人发表留aQ猛?>><strong>q里</strong><<-参与讨论</a> </span> <br/><br/><br/> <span style="color:#E28822;">ITeye推荐</span> <br/> <ul><li><a href='/clicks/433' target='_blank'><span style="color:red;font-weight:bold;">—Y件h才免语言低担?赴美带薪ȝQ?</span></a></li></ul> <br/><br/><br/> <img src ="http://www.tkk7.com/anduo1989/aggbug/363207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/anduo1989/" target="_blank">安多</a> 2011-06-27 15:37 <a href="http://www.tkk7.com/anduo1989/archive/2011/06/27/363207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何用jdbcq接数据?javaq接数据库的五步http://www.tkk7.com/anduo1989/archive/2011/06/09/363208.html安多安多Thu, 09 Jun 2011 14:18:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/06/09/363208.htmlhttp://www.tkk7.com/anduo1989/comments/363208.htmlhttp://www.tkk7.com/anduo1989/archive/2011/06/09/363208.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/363208.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/363208.html 

用JDBCq接数据?/p>

本文用sqlserver2000Z

 

先简qJDBCq接数据库的五步

1Q加载驱动。这里的驱动是根据各个数据的情况有所不同Q但是格式一P一般用

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

 

2Q创接。DriverManager.getConnection(url, userName, password);

     参数说明Qurl 是指q接的地址 ׃个部分组?协议+服务+IP+端口+资源

                    Q附Q几个常用的数据库的默认端口?

                              sqlserver  1433

                              oracle       1523

                              mysql        3306

                    Q?/p>

                    userName 数据库用户名

                    password  用户名密?/p>

3Q根据sql语句建立statement对象或者是preparedstatement对象

4Q操作数?此处分ؓ(f)两类 查询和增删改

5Q关闭statement和connection对象

 

下面是一个小的试

package com.anduo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBtest {
 public static void main(String[] args) {
  Connection con = null;
  Statement stmt = null;

  try {
   // W一?加蝲驱动
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

   // W二?创徏链接
   String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test";
   con = DriverManager.getConnection(url, "sa", "sa");

   // W三?创徏方式
   stmt = con.createStatement();

   // W四?操作数据
   String sql = "insert into student_anduo(student_name,student_sex,student_age) values('user1','male',21)";
   stmt.executeUpdate(sql);
   sql = "select * from student_anduo";
   ResultSet rs = stmt.executeQuery(sql);
   while (rs.next()) {
    System.out.println(rs.getObject(1));
   }

   String sql_d = "drop table student_anduo";
   stmt.executeUpdate(sql_d);

  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {

   // W五?关闭
   try {
    if (stmt != null) {
     stmt.close();
     stmt = null;
    }
    if (con != null) {
     con.close();
     con = null;
    }

   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

  }

 }
}


  

 

 



已有 0 人发表留aQ猛?>>q里<<-参与讨论


ITeye推荐





安多 2011-06-09 22:18 发表评论
]]>
一个JavaE序员应该掌握的10Ҏ(gu)?/title><link>http://www.tkk7.com/anduo1989/archive/2011/06/01/363209.html</link><dc:creator>安多</dc:creator><author>安多</author><pubDate>Wed, 01 Jun 2011 04:25:00 GMT</pubDate><guid>http://www.tkk7.com/anduo1989/archive/2011/06/01/363209.html</guid><wfw:comment>http://www.tkk7.com/anduo1989/comments/363209.html</wfw:comment><comments>http://www.tkk7.com/anduo1989/archive/2011/06/01/363209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/anduo1989/comments/commentRss/363209.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/anduo1989/services/trackbacks/363209.html</trackback:ping><description><![CDATA[ <div> <p><strong>1、语?/strong>Q必L较熟(zhn),在写代码的时候IDE的编辑器Ҏ(gu)一行报错应该能够根据报错信息知道是什么样的语法错误ƈ且知道Q何修正?/p> <p><strong>2、命?/strong>Q必ȝ(zhn)JDK带的一些常用命令及(qing)其常用选项Q命令至需要熟(zhn):(x)appletviewer?HtmlConverter、jar?java、javac、javadoc、javap、javaw、native2ascii、serialverQ如果这些命令你没有全部使用q,那么你对java实际上还很不了解?/p> <p><strong>3、工?/strong>Q必至熟l用一UIDE的开发工P例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者WorkshopQ包括进行工E管理、常用选项的设|、插件的安装配置以及(qing)q行调试?/p> <p><strong>4、API</strong>QJava的核心API是非常庞大的Q但是有一些内容笔者认为是必须熟?zhn)的,否则不可能熟l的q用JavaQ包括:(x)<br>◆java.lang包下?0Q以上的cȝ功能的灵z运用?/p> <p>◆java.util包下?0Q以上的cȝ灉|q用Q特别是集合cMpR规则表辑ּ、zip、以?qing)时间、随机数、属性、资源和Timer.</p> <p>◆java.io包下?0Q以上的cȝ使用Q理解IO体系的基于管道模型的设计思\以及(qing)常用IOcȝҎ(gu)和使用场合?/p> <p>◆java.math包下?00Q的内容?/p> <p>◆java.net包下?0Q以上的内容Q对各个cȝ功能比较熟?zhn)?/p> <p>◆java.text包下?0Q以上的内容Q特别是各种格式化类?/p> <p>◆熟l运用JDBC. 8Q、java.security包下40Q以上的内容Q如果对于安全没有接触的话根本就不可能掌握java.</p> <p>◆AWT的基本内容,包括各种lg事g、监听器、布局理器、常用组件、打印?/p> <p>◆Swing的基本内容,和AWT的要求类伹{?/p> <p>◆XML处理Q熟(zhn)SAX、DOM以及(qing)JDOM的优~点q且能够使用其中的一U完成XML的解析及(qing)内容处理?/p> <p><strong>5、测?/strong>Q必ȝ(zhn)用junit~写试用例完成代码的自动测试?/p> <p><strong>6、管?/strong>Q必ȝ(zhn)用ant完成工程理的常用Q务,例如工程~译、生成javadoc、生成jar、版本控制、自动测试?/p> <p><strong>7、排?/strong>Q应该可以根据异怿息比较快速的定位问题的原因和大致位置?/p> <p><strong>8、思想</strong>Q必L握OOP的主要要求,q样使用Java开发的pȝ才能是真正的Javapȝ?/p> <p><strong>9、规?/strong>Q编写的代码必须W合行的编码规范,例如cd首字母大写,成员和方法名首字母小写,Ҏ(gu)名的W一个单词一般是动词Q包名全部小写等Q这L(fng)序的可读性才比较好?/p> <p><strong>10、博?/strong>Q掌握J2EE 、Oracle 、WebLogic、Jboss、Spring、Struts、Hibernate {流行技术,掌握软g架构设计思想、搜索引擎优化、缓存系l设计、网站负载均衡、系l性能调优{实用技术?/p> </div> <br/><br/> <span style="color:red;"> <a style="color:red;">已有 <strong>0</strong> 人发表留aQ猛?>><strong>q里</strong><<-参与讨论</a> </span> <br/><br/><br/> <span style="color:#E28822;">ITeye推荐</span> <br/> <ul><li><a href='/clicks/433' target='_blank'><span style="color:red;font-weight:bold;">—Y件h才免语言低担?赴美带薪ȝQ?</span></a></li></ul> <br/><br/><br/> <img src ="http://www.tkk7.com/anduo1989/aggbug/363209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/anduo1989/" target="_blank">安多</a> 2011-06-01 12:25 <a href="http://www.tkk7.com/anduo1989/archive/2011/06/01/363209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>css+div U向列表http://www.tkk7.com/anduo1989/archive/2011/05/22/363210.html安多安多Sun, 22 May 2011 02:33:00 GMThttp://www.tkk7.com/anduo1989/archive/2011/05/22/363210.htmlhttp://www.tkk7.com/anduo1989/comments/363210.htmlhttp://www.tkk7.com/anduo1989/archive/2011/05/22/363210.html#Feedback0http://www.tkk7.com/anduo1989/comments/commentRss/363210.htmlhttp://www.tkk7.com/anduo1989/services/trackbacks/363210.html

css文g

最l效果:(x)



已有 0 人发表留aQ猛?>>q里<<-参与讨论


ITeye推荐





安多 2011-05-22 10:33 发表评论
]]>
DIV+CSS学习(fn)W一?/title><link>http://www.tkk7.com/anduo1989/archive/2011/05/20/363211.html</link><dc:creator>安多</dc:creator><author>安多</author><pubDate>Fri, 20 May 2011 11:08:00 GMT</pubDate><guid>http://www.tkk7.com/anduo1989/archive/2011/05/20/363211.html</guid><wfw:comment>http://www.tkk7.com/anduo1989/comments/363211.html</wfw:comment><comments>http://www.tkk7.com/anduo1989/archive/2011/05/20/363211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/anduo1989/comments/commentRss/363211.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/anduo1989/services/trackbacks/363211.html</trackback:ping><description><![CDATA[ <p style="padding-left: 30px;">1 一列固定宽?<br>2 一列固定宽度居?<br>3 一列自适应宽度 <br>4 一列自适应宽度居中 <br>5 一列二臛_块布局 </p> <p style="padding-left: 30px;"></p> <p style="padding-left: 30px;"></p> <p>采用了dreamweaver来开始网设计,其优点主要有Q代码提C,可视化开发环境,完美支持css+div</p> <p>一列固定宽?</p> <p><textarea cols="50" rows="15" name="code" class="xhtml:showcolumns"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <mce:style type="text/css"><!-- #layout { height: 300px; width: 400px; background: #99FFcc; } --></mce:style><style type="text/css" mce_bogus="1">#layout { height: 300px; width: 400px; background: #99FFcc; }</style> </head></p> <p><body> <div id="layout">此处昄 id "layout" 的内?lt;/div> </body> </html></textarea></p> <p>一列固定宽度居?br>一列固定宽度居中和一列固定宽度相比,我们要解决的问题是居中。这里我们用到css的外边距属性:(x)margin。在IE6?qing)以上版本和标准的浏览器当中Q当讄一个盒模型的的margin:auto;Ӟ可以让这个盒模型居中?br><textarea cols="50" rows="15" name="code" class="xhtml:showcolumns"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <mce:style type="text/css"><!-- #layout { height: 300px; width: 400px; background: #99FFcc; margin:auto; } --></mce:style><style type="text/css" mce_bogus="1">#layout { height: 300px; width: 400px; background: #99FFcc; margin:auto; }</style> </head></p> <p><body> <div id="layout">此处昄 id "layout" 的内?lt;/div> </body> </html></textarea></p> <p>一列自适应?/p> <p>自适应宽度是相对于览器而言Q盒模型的宽度随着览器宽度的改变而改变。这时要用到宽度的百分比。当一个盒模型不设|宽度时Q它默认是相对于览器显C的?br>q里的选择器类型是新手朋友最Ҏ(gu)qL(fng)的地方,c:(x)是指定义一个classQ可以多个对象引用;标签Q指寚w认的html标签q行重新定义Q如可以定义body{margin:0}Q意思是 body的外边距讄?Qh2{color:#f00}是将所有h2标签的文字颜色设|ؓ(f)U色Q高U它把ID和伪cLC块了Q是一个设|不合理的地方,在cs4版本中已l分开了。ID是以#开始,id只能作用于一个对象,不能作用于多个对象,优先U高于classQ这是id和class的区别?br><textarea cols="50" rows="15" name="code" class="xhtml:showcolumns"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <mce:style type="text/css"><!-- body { margin:0;} #layout { height: 300px; width: 80%; background: #99FFcc; } --></mce:style><style type="text/css" mce_bogus="1">body { margin:0;} #layout { height: 300px; width: 80%; background: #99FFcc; }</style> </head></p> <p><body> <div id="layout">此处昄 id "layout" 的内?lt;/div> </body> </html></textarea></p> <p>一列自适应宽度居中<br>同样和固定宽度居中一P我们只需要设|div的外边距为auto卛_实现居中了?/p> <p><textarea cols="50" rows="15" name="code" class="xhtml:showcolumns"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <mce:style type="text/css"><!-- body { margin:0;} #layout { height: 300px; width: 80%; background: #99FFcc; margin:auto;} --></mce:style><style type="text/css" mce_bogus="1">body { margin:0;} #layout { height: 300px; width: 80%; background: #99FFcc; margin:auto;}</style> </head></p> <p><body> <div id="layout">此处昄 id "layout" 的内?lt;/div> </body> </html></textarea></p> <p>一列二臛_块布局<br>一般的|站整体可以分ؓ(f)上中下结构,卻I(x)头部、中间主体、底部。那么我们可以用三个div块来划分Q分别给它们起名为:(x)头部QheaderQ、主体(maincontentQ、询问(footerQ?/p> <p><textarea cols="50" rows="15" name="code" class="xhtml:showcolumns"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <mce:style type="text/css"><!-- body { margin:0; padding:0;} #header { margin:5px auto; width:500px; height:80px; background:#9F9;} #main { margin:5px auto; width:500px; height:400px; background:#9FF;} #footer { margin:5px auto; width:500px; height:80px; background:#9f9;} --></mce:style><style type="text/css" mce_bogus="1">body { margin:0; padding:0;} #header { margin:5px auto; width:500px; height:80px; background:#9F9;} #main { margin:5px auto; width:500px; height:400px; background:#9FF;} #footer { margin:5px auto; width:500px; height:80px; background:#9f9;}</style> </head></p> <p><body> <div id="header">此处昄 id "header" 的内?lt;/div> <div id="main">此处昄 id "main" 的内?lt;/div> <div id="footer">此处昄 id "footer" 的内?lt;/div> </body> </html></textarea></p> <p>注意Q许多朋友在问:(x)Z么两个相?c)容器中间的间距不?0pxQ而是5px呢?按照我们正常的理解,认ؓ(f)应该是两个值相加,其实q里是两个合q后取最大倹{用css手册中的话说Q块U元素的垂直盔R外边距会(x)合ƈQ而行内元素实际上不占上下外边距。行内元素的的左叛_边距不会(x)合ƈ。同样地QQ动元素的外边距也不会(x)合ƈ。允许指定负的外边距|不过使用时要心</p> <p>结</p> <p>1、CSS可视化生成、格式化<br>2、CSS~写</p> <p>3、CSS语法</p> <p><img src="http://hi.csdn.net/attachment/201105/20/0_13058896711qZa.gif" alt=""></p> <p>如图所C,CSS语法由如下三部分构成Q选择器:(x)可以是ID、CLASS或标{;属性和值是用来定义q个物g的某一个特性。如一张桌子的?20cmQ宽60cmQ套用css的格式ؓ(f)Q桌子{?120cm;?60cm;}Q这h不是Ҏ(gu)理解?/p> <p>4、ID和CLASS选择?/p> <p>id只能在页面中对应一个元素,像我们的n份证号一P每个人的都不一Pclass为类Q可以对应多个元素,比如说一q三班的学生,它所对应的可能是10?0个学生?/p> <p>id的优先高于classQ比如说今天三班的学生上体育课,明留下来打扫卫生。那么三班的学生上体育课q是一个类Q而小明打扫卫生这是个idQ虽然小明也是三班的学生Q但id高于classQ所以小明执行打扫卫生的d?/p> <br/><br/> <span style="color:red;"> <a style="color:red;">已有 <strong>0</strong> 人发表留aQ猛?>><strong>q里</strong><<-参与讨论</a> </span> <br/><br/><br/> <span style="color:#E28822;">ITeye推荐</span> <br/> <ul><li><a href='/clicks/433' target='_blank'><span style="color:red;font-weight:bold;">—Y件h才免语言低担?赴美带薪ȝQ?</span></a></li></ul> <br/><br/><br/> <img src ="http://www.tkk7.com/anduo1989/aggbug/363211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/anduo1989/" target="_blank">安多</a> 2011-05-20 19:08 <a href="http://www.tkk7.com/anduo1989/archive/2011/05/20/363211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://microston.com" target="_blank">ŷձ</a>| <a href="http://szwangzhongwang.com" target="_blank">޹Ʒһ</a>| <a href="http://hivzx.com" target="_blank">av˾Ʒ߲</a>| <a href="http://assbjg.com" target="_blank">Ļѹۿ</a>| <a href="http://sh-shule.com" target="_blank">պߵһҳ</a>| <a href="http://88ww99.com" target="_blank">޹ƷȾþ</a>| <a href="http://828556.com" target="_blank">һѹۿ</a>| <a href="http://kanboy.com" target="_blank">װɫƵ</a>| <a href="http://my94ok.com" target="_blank">ľƷ</a>| <a href="http://fkg675.com" target="_blank">100018վ</a>| <a href="http://www-44455588.com" target="_blank">ҹѸӰԺ</a>| <a href="http://ur5r2kr.com" target="_blank">˴ս˾Ʒһ</a>| <a href="http://fns92.com" target="_blank">ѿ߾Ʒһ</a>| <a href="http://cdlsy.com" target="_blank">ĻAVһ</a>| <a href="http://chuguo65.com" target="_blank">Ůɫվ</a>| <a href="http://fsrongxing.com" target="_blank">ɫƷva߹ۿƵ</a>| <a href="http://by6216.com" target="_blank">ҰĻƵ</a>| <a href="http://ai-xian.com" target="_blank">鶹ѹۿ91</a>| <a href="http://www-63228.com" target="_blank">ɫվWWWþþž</a>| <a href="http://3333kkkk.com" target="_blank">޾ƷŮþþþ</a>| <a href="http://www1688mz.com" target="_blank">޹AVվ</a>| <a href="http://513net.com" target="_blank">ձ</a>| <a href="http://mtspvip.com" target="_blank">ҹëƬ</a>| <a href="http://kingleadsw.com" target="_blank">޾ƷƷ벻</a>| <a href="http://shaonvfushi.com" target="_blank">޹Ʒþҹ</a>| <a href="http://34007c.com" target="_blank">ҳַȫѹۿ12վ </a>| <a href="http://km9c.com" target="_blank">337pձŷ޴ɫ</a>| <a href="http://fuzhiwushu.com" target="_blank">ѸƵ</a>| <a href="http://6668889.com" target="_blank">eeussӰԺwww</a>| <a href="http://513109.com" target="_blank">99þֻƷ</a>| <a href="http://cjsyw123.com" target="_blank">պĻһҳ</a>| <a href="http://a666999.com" target="_blank">˾þô߽</a>| <a href="http://kencery.com" target="_blank">ɫƵѹۿ</a>| <a href="http://bjlfggcm.com" target="_blank">ˮƵwww</a>| <a href="http://172pk.com" target="_blank">޳AVƬ߹ۿww</a>| <a href="http://zzanfang.com" target="_blank">޾Ʒ߳ˮAƬ</a>| <a href="http://billtsssrvp.com" target="_blank">ձѹۿ</a>| <a href="http://777cc55.com" target="_blank">vѹۿ</a>| <a href="http://yjjinfeng.com" target="_blank">޾Ʒҹþþ</a>| <a href="http://18eeuus.com" target="_blank">һaɫëƬ</a>| <a href="http://gbn21.com" target="_blank">˻ƶվƵ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>