??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99久久99精品免视看婷婷,ga∨成人网,av亚洲精华国产精华http://www.aygfsteel.com/cyantide/category/36409.htmlzh-cnFri, 13 Aug 2010 16:33:22 GMTFri, 13 Aug 2010 16:33:22 GMT60linux php ~译安装 configure参数http://www.aygfsteel.com/cyantide/archive/2010/03/11/315189.htmlcyantidecyantideThu, 11 Mar 2010 08:45:00 GMThttp://www.aygfsteel.com/cyantide/archive/2010/03/11/315189.htmlhttp://www.aygfsteel.com/cyantide/comments/315189.htmlhttp://www.aygfsteel.com/cyantide/archive/2010/03/11/315189.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/315189.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/315189.html
./configure --prefix=/opt/php -with-apxs2=/usr/sbin/apxs -with-mysql=/usr/include/mysql --with-gd=/usr/ --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-freetype-dir=/usr/lib


cyantide 2010-03-11 16:45 发表评论
]]>
软g 开?万般变化http://www.aygfsteel.com/cyantide/archive/2010/02/20/313457.htmlcyantidecyantideSat, 20 Feb 2010 06:46:00 GMThttp://www.aygfsteel.com/cyantide/archive/2010/02/20/313457.htmlhttp://www.aygfsteel.com/cyantide/comments/313457.htmlhttp://www.aygfsteel.com/cyantide/archive/2010/02/20/313457.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/313457.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/313457.html



cyantide 2010-02-20 14:46 发表评论
]]>
apache2 php5 配置http://www.aygfsteel.com/cyantide/archive/2009/12/10/305463.htmlcyantidecyantideThu, 10 Dec 2009 10:08:00 GMThttp://www.aygfsteel.com/cyantide/archive/2009/12/10/305463.htmlhttp://www.aygfsteel.com/cyantide/comments/305463.htmlhttp://www.aygfsteel.com/cyantide/archive/2009/12/10/305463.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/305463.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/305463.html 末尾?br /> LoadModule php5_module "d:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm
# ScriptAlias /php/ "d:/php/"
# AddType application/x-httpd-php .php
# Action application/x-httpd-php "/php/php-cgi.exe"

 DirectoryIndex index.html 后添?index.php

php inf
1、将php.ini-recommended文g重命名ؓphp.iniq将其剪到系l所在目录下(XP?span lang="EN-US">Windows目录?span lang="EN-US">),
2、将extension_dir 改ؓphp/ext所在目录,?span lang="EN-US"> "d:\php\ext"Q?span lang="EN-US">
3、将doc_root 改ؓW一步中的同L录,?span lang="EN-US"> "E:\Program Files\Apache Software Foundation\Apache2.2\htdocs"Q?span lang="EN-US">
4、找?span lang="EN-US"> ;session.save_path = "/tmp" ,?span lang="EN-US">';'L,讄你保?span lang="EN-US">session的目录,?span lang="EN-US">session.save_path = "D:/php/session_temp"Q?span lang="EN-US">
5、然后把下面几句前面的分号去?span lang="EN-US">,以更好支?span lang="EN-US">Mysql and PHPmyadmin
      extension=php_mbstring.dll
      extension=php_gd2.dll
      extension=php_mysql.dll
6、将相应的dll拯至window目录?br />




cyantide 2009-12-10 18:08 发表评论
]]>
java面试?/title><link>http://www.aygfsteel.com/cyantide/archive/2009/01/13/251063.html</link><dc:creator>cyantide</dc:creator><author>cyantide</author><pubDate>Tue, 13 Jan 2009 01:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/cyantide/archive/2009/01/13/251063.html</guid><wfw:comment>http://www.aygfsteel.com/cyantide/comments/251063.html</wfw:comment><comments>http://www.aygfsteel.com/cyantide/archive/2009/01/13/251063.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cyantide/comments/commentRss/251063.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cyantide/services/trackbacks/251063.html</trackback:ping><description><![CDATA[<p><font style="background-color: #cce8cf">W一Q谈谈final, finally, finalize的区别?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> final 用于声明属性,Ҏ和类Q分别表C属性不可变Q方法不可覆盖,cM可ѝfinally是异常处理语句结构的一部分Q表CL执行。finalize?Objectcȝ一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回Ӟ例如关闭文g{?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二QAnonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 可以l承其他cL完成其他接口Q在swing~程中常用此方式。  </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W三QStatic Nested Class ?Inner Class的不同,说得多好(面试题有的很W统)?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> Static Nested Class是被声明为静态(staticQ的内部c,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部cd例化后才能实例化。   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W四Q?amp;?amp;&的区别?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> &是位q算W,表示按位与运,&&是逻辑q算W,表示逻辑与(andQ?   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W五QHashMap和Hashtable的区别?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> HashMap是Hashtable的轻量实现Q非U程安全的实玎ͼQ他们都完成了Map接口Q主要区别在于HashMap允许I(nullQ键|keyQ?׃非线E安全,效率上可能高于Hashtable.   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W六QCollection ?Collections的区别?</font></p> <p><font style="background-color: #cce8cf">   </font></p> <p><font style="background-color: #cce8cf"> Collection是集合类的上U接口,l承与他的接口主要有Set 和List.Collections是针寚w合类的一个帮助类Q他提供一pd静态方法实现对各种集合的搜索、排序、线E安全化{操作。   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W七Q什么时候用assert?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 1.4新增关键字(语法Q,用于试boolean表达式状态,可用于调试程序。用方?assert Q表C如果表辑ּ为真QtrueQ?则下面的语句执行Q否则抛出AssertionError。另外的使用方式assert < boolean表达?gt;:Q表C如果表辑ּ为真Q后面的表达式忽略,否则后面表达式的值用于AssertionError的构建参数。注意编译时要增?source 1.4 参数Q否则报错。]q行时要增加 –ea参数Q否则assert行被忽略   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W八QGC是什? Z么要有GC? </font></p> <p><font style="background-color: #cce8cf">   </font></p> <p><font style="background-color: #cce8cf"> GC是垃圾收集的意思(Gabage CollectionQ?内存处理是编Eh员容易出现问题的地方Q忘记或者错误的内存回收会导致程序或pȝ的不E_甚至崩溃QJava提供的GC功能可以自动监测对象是否过作用域从而达到自动回收内存的目的QJava语言没有提供释放已分配内存的昄操作Ҏ?   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W九QString s = new String("xyz");创徏了几个String Object? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 两个   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十QMath.round(11.5){於多少? Math.round(-11.5){於多少? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> Math.round(11.5)==12Math.round(-11.5)==-11roundҎq回与参数最接近的长整数Q参数加1/2后求其floor.   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十一Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> short s1 = 1; s1 = s1 + 1; Qs1+1q算l果是int型,需要强制{换类型)short s1 = 1; s1 += 1;Q可以正编译)   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十二,sleep() ?wait() 有什么区? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> sleep是线E类QThreadQ的ҎQ导致此U程暂停执行指定旉Q给执行Zl其他线E,但是监控状态依然保持,到时后会自动恢复。调?sleep不会释放对象锁。wait是ObjectcȝҎQ对此对象调用waitҎD本线E放弃对象锁Q进入等待此对象的等待锁定池Q只有针Ҏ对象发出notifyҎQ或notifyAllQ后本线E才q入对象锁定池准备获得对象锁q入q行状态。   </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十三,Java有没有goto? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 没有  很十三的问题Q如果哪个面试的问到q个问题Q我劝你q是别进q家公司?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十四,数组有没有length()q个Ҏ? String有没有length()q个ҎQ?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 数组没有length()q个ҎQ有length的属性?</font></p> <p><font style="background-color: #cce8cf"> String有有length()q个Ҏ?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的cd? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ 重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ与其父类有相同的名称和参敎ͼ我们说该Ҏ被重?(Overriding)。子cȝ对象使用q个ҎӞ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓҎ的重?Overloading)。Overloaded的方法是可以改变q回值的cd?</font></p> <p><font style="background-color: #cce8cf">W十六,Set里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> Set里的元素是不能重复的Q那么用iterator()Ҏ来区分重复与否。equals()是判M个Set是否相等?</font></p> <p><font style="background-color: #cce8cf">equals()?=Ҏ军_引用值是否指向同一对象equals()在类中被覆盖Qؓ的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十七,l我一个你最常见到的runtime exception?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">参考如下: </font></p> <p><font style="background-color: #cce8cf">ArithmeticException, </font></p> <p><font style="background-color: #cce8cf">ArrayStoreException, </font></p> <p><font style="background-color: #cce8cf">BufferOverflowException, </font></p> <p><font style="background-color: #cce8cf">BufferUnderflowException, </font></p> <p><font style="background-color: #cce8cf">CannotRedoException, </font></p> <p><font style="background-color: #cce8cf">CannotUndoException, </font></p> <p><font style="background-color: #cce8cf">ClassCastException, </font></p> <p><font style="background-color: #cce8cf">CMMException, </font></p> <p><font style="background-color: #cce8cf">ConcurrentModificationException, </font></p> <p><font style="background-color: #cce8cf">DOMException, </font></p> <p><font style="background-color: #cce8cf">EmptyStackException, </font></p> <p><font style="background-color: #cce8cf">IllegalArgumentException, </font></p> <p><font style="background-color: #cce8cf">IllegalMonitorStateException, </font></p> <p><font style="background-color: #cce8cf">IllegalPathStateException, </font></p> <p><font style="background-color: #cce8cf">IllegalStateException, </font></p> <p><font style="background-color: #cce8cf">ImagingOpException, </font></p> <p><font style="background-color: #cce8cf">IndexOutOfBoundsException, </font></p> <p><font style="background-color: #cce8cf">MissingResourceException, </font></p> <p><font style="background-color: #cce8cf">NegativeArraySizeException, </font></p> <p><font style="background-color: #cce8cf">NoSuchElementException, </font></p> <p><font style="background-color: #cce8cf">NullPointerException, </font></p> <p><font style="background-color: #cce8cf">ProfileDataException, </font></p> <p><font style="background-color: #cce8cf">ProviderException, </font></p> <p><font style="background-color: #cce8cf">RasterFormatException, </font></p> <p><font style="background-color: #cce8cf">SecurityException, </font></p> <p><font style="background-color: #cce8cf">SystemException, </font></p> <p><font style="background-color: #cce8cf">UndeclaredThrowableException, </font></p> <p><font style="background-color: #cce8cf">UnmodifiableSetException, </font></p> <p><font style="background-color: #cce8cf">UnsupportedOperationException </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十八,error和exception有什么区? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> error 表示恢复不是不可能但很困隄情况下的一U严重问题。比如说内存溢出。不可能指望E序能处理这L情况?</font></p> <p><font style="background-color: #cce8cf"> exception 表示一U设计或实现问题。也是_它表C如果程序运行正常,从不会发生的情况?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W十九,List, Set, Map是否l承自Collection接口? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">ListQSet?</font></p> <p><font style="background-color: #cce8cf">Map不是 </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十,abstract class和interface有什么区? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 声明Ҏ的存在而不d现它的类被叫做抽象类Qabstract classQ,它用于要创徏一个体现某些基本行为的c,qؓ该类声明ҎQ但不能在该cM实现该类的情c不能创建abstract cȝ实例。然而可以创Z个变量,其类型是一个抽象类Qƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract cȝ子类为它们父cM的所有抽象方法提供实玎ͼ否则它们也是抽象cMؓ。取而代之,在子cM实现该方法。知道其行ؓ的其它类可以在类中实现这些方法?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 接口QinterfaceQ是抽象cȝ变体。在接口中,所有方法都是抽象的。多l承性可通过实现q样的接口而获得。接口中的所有方法都是抽象的Q没有一?有程序体。接口只可以定义static final成员变量。接口的实现与子cȝ|除了该实现类不能从接口定义中l承行ؓ。当cd现特D接口时Q它定义Q即程序体l予Q所有这U接口的Ҏ。然后,它可以在实现了该接口的类的Q何对象上调用接口的方法。由于有抽象c,它允怋用接口名作ؓ引用变量的类型。通常的动态联~将生效。引用可以{换到接口cd或从接口cd转换Qinstanceof q算W可以用来决定某对象的类是否实现了接口?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十一Qabstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">都不?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十二Q接口是否可l承接口? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 接口可以l承接口。抽象类可以实现(implements)接口Q抽象类是否可承实体类Q但前提是实体类必须有明的构造函数?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十三Q启动一个线E是用run()q是start()? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 启动一个线E是调用start()ҎQɾU程所代表的虚拟处理机处于可运行状态,q意味着它可以由JVM调度q执行。这q不意味着U程׃立即q行。run()Ҏ可以产生必须退出的标志来停止一个线E?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十四Q构造器Constructor是否可被override? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十五Q是否可以承Stringc? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> StringcLfinalcL不可以ѝ?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十六Q当一个线E进入一个对象的一个synchronizedҎ后,其它U程是否可进入此对象的其它方? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 不能Q一个对象的一个synchronizedҎ只能׃个线E访问?</font></p> <p><font style="background-color: #cce8cf">W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code会不会被执行Q什么时候被执行Q在return前还是后? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">会执行,在return前执行?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十八Q编E题: 用最有效率的Ҏ出2乘以8{於? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">有C背景的程序员特别喜欢问这U问题?</font></p> <p><font style="background-color: #cce8cf">2 < < 3 </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二十九Q两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">不对Q有相同的hash code?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W三十,当一个对象被当作参数传递到一个方法后Q此Ҏ可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> 是g递。Java ~程语言只由g递参数。当一个对象实例作Z个参数被传递到Ҏ中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会改变的?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W三十一Qswtich是否能作用在byte上,是否能作用在long上,是否能作用在String? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> switchQexpr1Q中Qexpr1是一个整数表辑ּ。因此传递给 switch ?case 语句的参数应该是 int?short?char 或?byte。long,string 都不能作用于swtich?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W三十二Q编E题: 写一个Singleton出来?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">    Singleton模式主要作用是保证在Java应用E序中,一个类Class只有一个实例存在?</font></p> <p><font style="background-color: #cce8cf">一般Singleton模式通常有几U种形式: </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"> W一UŞ? 定义一个类Q它的构造函Cؓprivate的,它有一个static的private的该cd量,在类初始化时实例话,通过一个public的getInstanceҎ获取对它的引?l而调用其中的Ҏ?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">public class Singleton { </font></p> <p><font style="background-color: #cce8cf">  private Singleton(){} </font></p> <p><font style="background-color: #cce8cf">  //在自己内部定义自׃个实例,是不是很奇怪? </font></p> <p><font style="background-color: #cce8cf">  //注意q是private 只供内部调用 </font></p> <p><font style="background-color: #cce8cf">  private static Singleton instance = new Singleton(); </font></p> <p><font style="background-color: #cce8cf">  //q里提供了一个供外部讉K本class的静态方法,可以直接讉K   </font></p> <p><font style="background-color: #cce8cf">  public static Singleton getInstance() { </font></p> <p><font style="background-color: #cce8cf">    return instance;    </font></p> <p><font style="background-color: #cce8cf">   } </font></p> <p><font style="background-color: #cce8cf">}  </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">W二UŞ? </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">public class Singleton { </font></p> <p><font style="background-color: #cce8cf">  private static Singleton instance = null; </font></p> <p><font style="background-color: #cce8cf">  public static synchronized Singleton getInstance() { </font></p> <p><font style="background-color: #cce8cf">  //q个Ҏ比上面有所改进Q不用每ơ都q行生成对象Q只是第一ơ      </font></p> <p><font style="background-color: #cce8cf">  //使用时生成实例,提高了效率! </font></p> <p><font style="background-color: #cce8cf">  if (instance==null) </font></p> <p><font style="background-color: #cce8cf">    instanceQnew Singleton(); </font></p> <p><font style="background-color: #cce8cf">return instance;   } </font></p> <p><font style="background-color: #cce8cf">}  </font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf">其他形式: </font></p> <p><font style="background-color: #cce8cf">定义一个类Q它的构造函Cؓprivate的,所有方法ؓstatic的?</font></p> <p><font style="background-color: #cce8cf">一般认为第一UŞ式要更加安全?</font></p> <p><font style="background-color: #cce8cf"></font> </p> <p><font style="background-color: #cce8cf"></font> </p> <font style="background-color: #cce8cf"> <p><br /> 其中也存在一些问题,下面补充一下.希望大家l箋补充 </p> <p> </p> <p> </p> <p> </p> <p>  </p> <p>1.最好介l一下final修饰变量的情形(分开说明基本cd变量和引用类型变量)?</p> <p>2.不知道如何描q比较好Q匿名内部类本n是一个实C特定接口或承了其他cȝcR?</p> <p>3.非静态类不能有static的方法。参考一下java collections framework的代码,q能说出很多东西来?</p> <p>4.&既是位运符Q也是逻辑操作W?</p> <p>&?amp;&都是逻辑q算W,它们的区别是Q?amp;&q行短\计算?</p> <p>6.可以补充一下,参考文档?</p> <p>11.说一下具体的原因可能更好?</p> <p>13.java有gotoq个keywordQ不q还没有使用?</p> <p>15.overload和多态没有Q何关pR多态是面向对象的基本特征,是和l承、overriding相关的。原来以为把overload当作多态的一U是从C++来的Q后来翻了基本c++的经典的?也强调多态只是和l承,虚函?overriding相关,所以不知道q个错误思想从哪来的? </p> <p>16.public interface Set <E>extends Collection <E>一个不包含重复元素?collection。更切地讲Qset 不包含满?e1.equals(e2) 的元素对 e1 ?e2Qƈ且最多包含一?null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象?</p> <p>看文档就是了. </p> <p>22."抽象cL否可l承实体c,但前提是实体cdL明确的构造函数?什么意?谁规定的? </p> <p>27.q个比较复杂,例如 </p> <p> </p> <p>public class Main { </p> <p> </p> <p>    public static void main(String[] args) { </p> <p>        System.out.println(test()); </p> <p>    } </p> <p> </p> <p>    public static boolean test() { </p> <p>        boolean b = false; </p> <p>        try { </p> <p> </p> <p>            return b = 4 > 3; </p> <p>        } finally { </p> <p>            System.out.println(b); </p> <p>          //return false; </p> <p>        } </p> <p>    }  </p> <p>} </p> <p>q个例子中可以看?return后面的表辑ּ已经计算?感觉return语句q里被挂起了,如果finally中没有return,q个returnp? </p> <p>如果finally也有return,那么是finally中的returnq回? </p> <p>29.C不守规矩的程序员谁也没办? </p> <p> </p> <p>31.q有枚D?</p> <p>32.注释有问?</font></p> <img src ="http://www.aygfsteel.com/cyantide/aggbug/251063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cyantide/" target="_blank">cyantide</a> 2009-01-13 09:41 <a href="http://www.aygfsteel.com/cyantide/archive/2009/01/13/251063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>q程镜像与备份SVN服务?转蝲)http://www.aygfsteel.com/cyantide/archive/2008/12/14/246198.htmlcyantidecyantideSun, 14 Dec 2008 01:31:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/12/14/246198.htmlhttp://www.aygfsteel.com/cyantide/comments/246198.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/12/14/246198.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/246198.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/246198.htmlq程镜像与备份SVN服务?/h2>

如需转蝲Q请注明出处Q?/font>http://bbs.iusesvn.com/thread-3068-1-1.html
此文讲述SVN如何镜像服务?/span>Q注意是单向镜像。众所周知Q?/font>SVN有自已的镜像命osvnsync(svn1.4以及以上版本Ҏ?/font>),但是部v与维护确是繁琐至极,令h望而却步。我们来看一个简单的svnsync例子Q?/font>
?/font>SVN服务器: http://mastersvn/project1
svnsync
镜像SVN服务器上的部|Ԍhttp://backupsvn/project1

W一步:建立仓库
cd /home/svn
svnadmin create –fs-type fsfs /home/svn/project1
chmod 777 –R project1
W二步:镜像初始?/font>
svnsync init http://backupsvn/project1
http://mastersvn/project1
W三步:更改配置文g
cd /home/svn/project1/hooks
cp pre-revprop-change.tmpl pre-revprop-change

vi pre-revprop-change
注销所有语句,在语句前加入#卛_Q退Z?/font>
W四步:同步
svnsync sync http://backupsvn/project1 --username username --password password
已提交版?/font> 9?/font>
复制版本 9 ?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E5%B1%9E%E6%80%A7">属?/span>?/font>
已提交版?/font> 10?/font>
复制版本 10 的属?/font>
……………
但是在实际运用中Q经怼发生SVN库被lock的情?/font>
svnsync: Couldn't get lock on destination repos after 10 attempts
q不得不让我们感觉头痛地手动使用改命令解?/font>
svn propdel svn:sync-lock --revprop -r0 http://backupsvn/project1
写到q里Q大家不由对svnsync有了个初步的认识了吧Q就一个字Q烦Q!Q而且同步速度很慢Q!Q?/font>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
接下来是此文的重炚w分:
SVN
新的镜像备䆾ҎQ?/font>ssh + rsync + crontab(d计划))
什么是SSH?
SSH
是更灉|、更安全?/font> telnet ?/font> rlogin 替代品。它?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E5%BC%80%E5%8F%91">开?/span>中得到广泛用,以提?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E8%AE%BF%E9%97%AE">讉K控制和安全的数据传输?/font>
什么是rysnc?
rsync
是类unix下的数据镜像备䆾工具Q从软g的命名上可以看出来?/font>——remote sync。它的特性如下:
可以镜像保存整个目录树和文gpȝ?/font>
可以很容易做C持原来文件的权限、时间、Y链接等{?/font>
无须Ҏ权限卛_安装?/font>
优化的流E,文g传输效率高?/font>
可以使用rcp?/font>ssh{方式来传输文gQ当然也可以通过直接?/font>socketq接?/font>
支持匿名传输Q以方便q行|站镜象?/font>
什么是crontab?
Crontab
?/font>Linux操作pȝ下的一个命令,可以用来Ҏ旉、日期、月份、星期的l合来调度对重复d的执行的守护q程?/font>(cMwindows下的d计划)
Ҏ拓扑图:Q请看附Ӟ
?/font>SVN服务?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E7%8E%AF%E5%A2%83">环境Q?/font>
SVN
仓库根目录: /home/svn (project1,project2,project3三个仓库)
SVN
服务?/font>IPQ?/font> 192.168.100.80
镜像SVN服务器环境:
SVN
仓库根目录:/home/svn Q无仓库Q无需建立Q镜像时会直接复制过来ƈ保持文g属性)
SVN
服务?/font>IPQ?/font> 192.168.100.81

#
?/font>SVN服务器安装部分:
Q?/font>1Q?/font>
SVN安装部分Q略Q?/font>
Q?/font>2Q?/font>
安装rsync部分
rpm -qa | grep rsync (
所有系l是否有安装q?/font>rsync)
rpm -e rsyncxxx (
删除以前安装q的rsync)
wget
http://samba.anu.edu.au/ftp/rsync/rsync-3.0.4.tar.gz (下蝲rsync源码安装?/font>)
tar zxvf rsync-3.0.4.tar.gz (
解压)
cd rsync-3.0.4
./install.sh (
安装)
接下来我们就可以输入rsync --version命o来测试下是否安装成功了?/font>
rsync
version 3.0.3
protocol version 30

Copyright (C) 1996-2008 by Andrew Tridgell, Wayne Davison, and others.
Web site:
http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, no symtimes

rsync comes with ABSOLUTELY NO WARRANTY.
This is free software, and you

are welcome to redistribute it under certain conditions.
See the GNU

General Public Licence for details.
(3)
开?/font>rsync服务器端
/usr/local/bin/rsync --daemon (
开?/font>rsync服务)
vi /etc/rc.d/rc.local
在末֊?/font>/usr/local/bin/rsync --daemon (目的是让服务器每ơ重启后都能自动q行此进E?/font>)

#
镜像SVN服务器安装部分:
Q?/font>1Q?/font>SVN安装部分Q略Q?/font>
Q?/font>2Q?/font>安装rsync部分
rpm -qa | grep rsync (
所有系l是否有安装q?/font>rsync)
rpm -e rsyncxxx (
删除以前安装q的rsync)
wget
http://samba.anu.edu.au/ftp/rsync/rsync-3.0.4.tar.gz (下蝲rsync源码安装?/font>)
tar zxvf rsync-3.0.4.tar.gz (
解压)
cd rsync-3.0.4
./install.sh (
安装)
接下来我们就可以输入rsync --version命o来测试下是否安装成功了?/font>
接下来我们的配置完成了Q让我们用命里那个测试下?/font>
同步命oQ?/font>
rsync -vzrtopgu --progress --delete
root@192.168.100.80:/home/svn /home/
输入用户?/font>root
输入root?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E5%AF%86%E7%A0%81">密码?/font>

65309 100%
224.57kB/s
0:00:00 (xfer#507, to-check=2187/23106)

svn/project1/db/revs/202

29655 100%
99.86kB/s
0:00:00 (xfer#508, to-check=2186/23106)

svn/project1/db/revs/203

7242 100%
23.19kB/s
0:00:00 (xfer#509, to-check=2185/23106)

sent 15928 bytes
received 521860019 bytes
4404016.43 bytes/sec

total size is 12240235825
speedup is 23.45

传输完成Q这ơ镜像过E就l束了?/font>
让我们看看所使用的参敎ͼ
v
复杂的输Z?/font>
z
压羃模式, 当资料在传送到目的端进行档案压~?/font>.
r
复制所有下面的资料(透过)
t
保留旉?/font>
o
保留档案所有?/font>(root only)
p
保留档案权限
g
保留档案组
u
更新修改q的文g
--progress
昄传送的q度
--delete
删除传送断已经不存?/font>,而目的端存在的档?/font>

root@192.168.100.80:/home/svn /home/
?/font>root用户讉K192.168.100.80?/font>/home/svn目录Q然后同步到本机?/font>/home/目录下,注意格式Q那么镜?/font>SVN服务器就会把?/font>SVN服务器上?/font>/home目录?/font>svn文gҎ个复制到镜像SVN服务器上?/font>/home下,q保存原属性不变?/font>

###
注意:Z么?/font>root的用户呢Q因为可以确保保证同步过来的文g可以保证档案的具体属性,q是我们比较兛_的问题,但是root的用h有的权限太大了,每次都需要输?/font>root的密码,一斚wq是非常危险的,一斚w比较J琐?/font>
那么我们首先惛_的不需要输?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E7%94%A8%E6%88%B7%E5%90%8D">用户?/span>和密码就可以镜像和传输文Ӟ那么必须让两?/font>SVN服务器互怿?/font>,那么我们需要采?/font>sshU钥和公钥加密技术?/font>
?/font>SVN服务器:
ssh-keygen –d
Enter file in which to save the key (/home/root/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/root/.ssh/id_dsa.Your public key has been saved in /home/root/.ssh/id_dsa.pub.The key fingerprint is:32:21:e1:3b:7d:6e:de:4b:39:da:af:38:fe:90:40:61
root@svnserver.com

cd .ssh
id_dsa ------------
U钥文g

id_dsa.pub ------------ 公钥文g

cp id_dsa.pub authorized_keys2 (
复制一个可以被root识别和读取的公钥文g)
chmod 600 authorized_keys2 (
因安全因为给?/font>600权限)
cp id_dsa.pub svnserver.pub (
再做一份公钥的副本)
惛_法把q个公钥的副本移动到镜像SVN服务器上面?/font>
cat mirrorsvnserver.pub >> authorized_keys2 (
把复制过来的镜像SVN服务器上的公钥导入到?/font>SVN服务器的公钥文g?/font>)
镜像SVN服务器:
ssh-keygen –d
Enter file in which to save the key (/home/root/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/root/.ssh/id_dsa.Your public key has been saved in /home/root/.ssh/id_dsa.pub.The key fingerprint is:32:21:e1:3b:7d:6e:de:4b:39:da:af:38:fe:90:40:61
root@mirrorsvnserver.com

cd .ssh
id_dsa ------------
U钥文g

id_dsa.pub ------------ 公钥文g

cp id_dsa.pub authorized_keys2 (
复制一个可以被root识别和读取的公钥文g)
chmod 600 authorized_keys2 (
因安全因为给?/font>600权限)
cp id_dsa.pub mirrorsvnserver.pub (
再做一份公钥的副本)
惛_法把q个公钥的副本移动到?/font>SVN服务器上面?/font>
cat svnserver.pub >> authorized_keys2 (
把复制过来的?/font>SVN服务器上的公钥导入到镜像SVN服务器的公钥文g?/font>)
让我们里验证公钥文g中的内容Q?/font>
cat /root/.ssh/authorized_keys2
ssh-dss AAAAB3NzaC1kc3MAAACBAL9iAG+VZkXunZ5KzTivat1deDAQFKdrGY5P2rxRI+QeKClNgfukUNwQmU+a5FqfNsLKlWhGbIfFI1k00Zkc7nwMdG2dtcnWw7oUqPCGizMcoPLXXQhfOPaFoOkB5UPWNkgJobBPZBjJ7nhKZxzzMiujhOVYLvGNDEWI8x3NAAAAFQCqqtJaMgVyMgDexUKbHIBXsSghYIB5U82gTyGb2c4z4AsmQ5M0ds3YHHVLPHRUEn7DspzlNZ7fYWhKzQYWlhPJftuYTrYIEzuXx8Hl8kg7hCEl4hArAgMMcEtmuQ+3x5SkEht3077qUPdC/YzSk7cFNwQlt6nOeYELCIwhs1CXWQXi9E/XSlqepd+gSlAAhVzWc0MgAAAIAy4qWyaB6DT+XWtq23jrFrYeejJyFBVkNVUbEd3GNTHvwKTYuBa7nlh562g5r0riIrHW+a7WGd6U32RVLnqqIwddcHml4kXnondo0qjW4XijYI7jkHN9oAK5mNWnSCYAnot1nra3QXlh9472/l7kTmznumjsDDjAIa7OFY9w==
root@svnserver.com
ssh-dss AAAAB3NzaC1kc3MAAACBAPI3YFCQNBof9xA/Fi1S0U4jmliAg/TaWHnx9suaYb5Xc31jW3+axbNURIBnK7cA53q+qBME1DdddSBOq+I0oUpfjAXkOUl/ACRbSRqA1VOaKdI2AOH9tw4jSK0xSqYjj+ReuUnuVMSTOJTQzt1n6YsLj/kjAAAAFQCHE5NqPCIlr5xVFYOZmGysI+CtKQAAAIAb/gjP0f3Ifx0H2A3XzH9fG4YENLd+gz0l07Mq356+IBuPSYxi4JldxZ7j1OkH9j+7+t8AOSyqNqiOzKXpimo0NLjVsEkpn9RXFmzfHHwRholmauDKIbGLvJlTL0ZkjqH3w0plGmVC6YyxOpM4w7XklIvtq3rDZQE4O247yxgAAAIEA2rd2htKfO9I7F+rBxVgszeGrwCfP5gf8sdz32LDd+E4JxzI/b79Tn1ylILb0vGZhRCbFhoLnDIUMR3Lrr5FqGlTf8O2gsvproA5pLqUpgrkhR/7siycplOddftt553yBJNCBkq+E906AwQ72PNs2uLrbKHyVyD1akrD2/hfA=
root@svnmirrorserver.com
q样我们的两?/font>SVN服务器就得到信Q了?/font>
让我们再ơ执行同步命令:
rsync -vzrtopgu --progress --delete
root@192.168.100.80:/home/svn /home/
发现了什么?
已经不需要输入用户名和密码了?/font>
最后我们需要设定h物计划了?/font>
crontab –e
*/10 * * * * /usr/local/bin/rsync -vzrtopgu --progress --delete
root@192.168.100.80:/home/svn /home/ &
退Z存?/font>
q个例子是每10分钟同步一?/font>,当然我们也可?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E8%AE%BE%E7%BD%AE">讄我们惌的时间?/font>
另外一个例子:每小时同步一?/font>
* */1 * * * /usr/local/bin/rsync -vzrtopgu --progress --delete
[email=root@192.168.100.80:/home/svn]root@192.168.100.80:/home/svn /home/ &
备注Q?/font>
(1)
所有同步都为增量备份,W者不大家都采用增量备份对SVNq行备䆾Q这有可能导?/font>SVN库日后不可用Q但W者这里将有不下50?/font>SVN库,同步几月都没发生M问题Q都能正常被使用。但是ؓ了}慎v见,希望大家再做一个定期全备䆾Q徏议每周一ơ。如有用户因此丢失,W者将不负M责Q?/font>
(2)
此方法适应Windows上用,rsyncE序名称?/font>cwRsync


(3) rsync有二U配|方式:一U是ssh,scp,stock{协议直接传输,无需修改配置文gQ笔者用法)Q第二种是修?/font>rsync配置文gQ映\径和指定密码Q支持匿名)


(4) ssh + rsync + crontab只是复制文g而已Q无需依赖apache?/font>subversionE序




附gQ?/font>
rsync 所以试用参数列?
-h , --help 昄rsync求助资讯
--version 示rsync版本
-v , --verbose 复杂的输Z?br /> -q , --quiet 安静模式Q几乎没有讯息生,
常用在以cron执行rsync
-I, --ignore-times 通常rsyncZ加快速度会忽略同h案大且同样,同样存取旉点的档案
可以通过此参数开x快速检?
--size-only rsync
只检查档案大是否改?不管旉存取Ҏ否改?br /> 通常用在mirror, 且对Ҏ间不太正时
-c, --checksum 在传送之前透过128bit的md4查码来检查所有要传送的档案(会托满速度);
-a, --archive archive mode 权限保存模式,相当?-rlptgoD 参数.
很快速的保存几乎所有的权限讑֮,除了式q接(透过-H讑֮).
-r, --recursive 复制所有下面的资料(透过)
-R, --relative 使用相对路径
? rsync foo/bar/foo.c remote:/tmp/ 在远端?tmp/foo.c档案
rsync -R foo/bar/foo.c remote:/tmp/ 在远端?tmp/foo/bar/foo.c 档案
-R, --relative 不用相对\?br /> -b, --backup 目的地端先前已经存在的档案在传输或删除前会被备䆾
--backup-dir=DIR 讑֮备䆾的资料夹
--suffix=SUFFIX 指定备䆾的档案名U字Ş?预设为~)
-K, --keep-dirlinks 接收方将q接到资料夹的档案视料夹处理
-l, --links 复制所有的q接
-H, --hard-links 保留式q结
-p, --perms 保留档案权限
-o, --owner 保留档案所有?root only)
-g, --group 保留档案组
-u –update 更新修改q的文g
-D, --devices 保留device资讯(root only)
-t, --times 保留旉?br /> -n, --dry-run 不实际执行传? 只显C将会有的传输动?br /> -S, --sparse 试d理稀疏的档案, 让这些档案在目的端占去较的碟I间
-W, --whole-file 复制所有的档案, 不额外作?br /> --no-whole-file 关闭 --whole-file 参数
-x, --one-file-system 不要跨越档案pȝ分界(只在一个档案系l处?
-B, --block-size=SIZE 强制透过rsyncE式L对修复block-sizeforce
-e --rsh=COMMAND 定义所试用的remote shell
--rsync-path=PATH 定义rsync在远?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E6%9C%BA%E5%99%A8">机器存放资料的\?br /> --existing 只对比更新目的端已经存在的档?br /> --ignore-existing 忽略目的断已l存在的档案(也就是不更新)
--delete 删除传送断已经不存?而目的端存在的档?br /> --delete-excluded 除了把传送端已经不存? 而目的端存在的档案删除之? 也删?--exclude 参数所包含的档?br /> --delete-after rsync预设会在档案传送前q行相关删除动作保接收端有_的档案空?
单可以透过 --delete-after 让删除动作在档案传送后在进行删?br /> --ignore-errors 忽略M错误即是I/O error 也进?--delete 删除动作
--max-delete=NUM 定义rsync不要删除过NUM个档?br /> --partial rsync若遇C输过E中断时, 会把那些已经传输的档案删?
在某U状况下保留那些部分传送的档案是o人高兴的;
你可以透过 --partial 参数辑ֈq个目的.
--partial-dir=DIR ?--partial 参数启动? 你还是可以定义rsync把那些部分传送的档案
写入定义的资料夹, 而非直接写入目的?需要注意的?
此资料夹不应该被其他试用者可以写?(?/tmp)
--force 当目的端资料夹被传送端非资料夹名称覆盖? 强制rsync删除资料? 即该资料夹不是I的.
--numeric-ids 不将传送端档案的uid及gid? 与目的端的用?组q行配对,
若传送端q没有uid及gid的对应名U??原帐Ll被删除的遗留档?,
或目的端没有相对应的帐号/组, 保留数字型式的uid/gid
--timeout=TIMEOUT 讑֮I/O 时的时?U?. 过q个U数而没有资料传? rsync会l束. 预设?,也就是没有定义超时时?br /> -T, --temp-dir=DIR 定义rsync在接收端产生暂时性的复制档案时用资料夹暂存Q?br /> 预设时直接在接收端资料夹直接产生暂存档案
--compare-dest=DIR 定义rsync在目的端建立资料Ҏ比对传送过来的档案.
--link-dest=DIR ?--compare-dest 相同,但同时会针对无法改变的档案徏立硬式连l?
-z, --compress 压羃模式, 当资料在传送到目的端进行档案压~?
-P -P参数?--partial --progress 相同.只是Z把参数简单化.
-C, --cvs-exclude 排除那些通常不希望传送的档案, 定义的方式与CVS传送相?
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state
.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej
.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/
W合以上条g的都会被忽略不传?
--exclude=PATTER W合PATTERN(规则表示?样式的档案不仅行传?br /> --exclude-from=FILE ?--exclude 参数相同, 不过是把不进行传送的档案事先写入某一档案.
执行? 透过此参数让rsyncd.
(; #开头的行列或者空白会被rsync忽略)
--include=PATTERN 定义rsync不要排除W合pattern样式的档?br /> --include-from=FILE ?-include参数相同,只不q把要包含的档案写到某一档案.
--files-from=FILE 把要传送的档案名称都精的写入某一档案, 让rsyncd.
? rsync -a --files-from=/tmp/foo /usr remote:/backup
-0 --from0 定义档案所要读取的档案时null字元l尾.
--version 现四版本信息.
--daemon 定义rsync以daemon型态执?br /> --no-detach 当以daemon形态执行时,不要q行分裂且变成背景程?
--address=ADDRESS 定义所要连?bind)的ip位置或者是host名称(daemon限定)
--config=FILE 定义所要读取的讑֮档rsyncd.conf位置(daemon限定)
预设gؓ /usr/local/etc/rsyncd.conf
--port=PORT 定义rsyncd(daemon)要旨行的port(预设为tcp 873)
--blocking-io 使用blocking I/Oq结q端的shell, 如rsh, remsh
--no-blocking-io 使用non-blockingq结q端的shell, 如ssh(预设?
--stats 昄档案传送时的资讯状?br /> --progress 昄传送的q度.(l档案传送时,怕无聊的人用?.)
--log-format=FORMAT 定义log的格?在rsyncd.conf讑֮)
--password-file=FILE 从档案读取与q端rsync伺服务连l的密码
--bwlimit=KBPS 定义传输频宽的大?KBytes/U?
--write-batch=FILE 把记录资料写入一个档?l其他相同环境且相同需求的机器试用)
--read-batch=FILE 透过d记录档案来进行传?(档案?--write-batch 参数产生)
--checksum-seed=NUM 定义档案 checksum-seed 的大?byte)
-4 --ipv4 使用IPv4协定
-6 --ipv6 使用IPv6协定
svnmirror.jpg

cyantide 2008-12-14 09:31 发表评论
]]>
log4j 配置(转帖)http://www.aygfsteel.com/cyantide/archive/2008/08/15/222184.htmlcyantidecyantideFri, 15 Aug 2008 03:00:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/08/15/222184.htmlhttp://www.aygfsteel.com/cyantide/comments/222184.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/08/15/222184.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/222184.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/222184.html背景
对于有经验的开发者来_日志记录的重要性显而易见。例如程序中的异常处理和?全性都依赖于Logging的功能来帮助履行它们的指责。应用程序中的日志记录主要基于三个目的:监视代码中变量的变化情况Q周期性的记录到文件中供其?应用q行l计分析工作Q跟t代码运行时轨迹Q作为日后审计的依据Q担当集成开发环境中的调试器的作用,向文件或控制台打C码的调试信息。经验表明日志记 录是开发周期中的重要组成部分?/font>

最单的做法是在代码中嵌入许多的打印语句,但是q样打印语句会充斥代码的MQ显然不是一个好Ҏ。因此,使用成熟的框架例如Log4jQ则会更LzL?

Log4j?br /> Log4j 框架是用 Java 语言~写的标准日志记录框架。作?Jakarta 目的一部分Q它?Apache 软g许可证(Apache Software LicenseQ下分发Q以速度和灵zLؓ中心概念QLog4j 环境是完全可配置的,通过使用Log4jQ我们可以控制日志信息输送的目的地是控制台、文件、GUIlg、甚x套接口服务器、NT的事件记录器?UNIX Syslog守护q程{;我们也可以控制每一条日志的输出格式Q通过定义每一条日志信息的U别Q我们能够更加细致地控制日志的生成过E?

Log4j׃个重要的部g构成Q记录器QLoggersQ、输出源QAppendersQ和布局QLayoutsQ?/font>

记录器按照布局中指定的格式把日志信息写入一个或多个输出源。输出源可以是控制台、文本文件、XML文g或SocketQ甚臌可以把信息写入到Windows事g日志或通过电子邮g发送。我们可以通过配置文g来部|这些组件?/font>

其实您也可以完全不用配|文Ӟ而是在代码中配置Log4j环境。但是,使用配置文g您的应用E序更加灉|。本文从描述 log4j 体系l构的主要组件着手。然后是描述基本用法和配|的单示例?/font>

定义配置文g
Log4j支持两种配置文g格式Q一U是XML格式的文Ӟ一U是JavaҎ文Ӟ?|。下面我们介l用JavaҎ文件做为配|文件的ҎQ?

一?配置记录器?/font>

Log4j允许E序员定义多个记录器Q每个记录器有自q名字。但有一个记录器叫根记录器,它永q存在,且不能通过名字索或引用Q在配置文g中,可以如下定义根记录器Q?/font>

  log4j.rootLogger = [ level ] , appenderName, appenderName, … 

Level是记录器的别,它是日志记录的优先Q分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的别。Log4j只用四个别:ERROR、WARN、INFO、DEBUGQ?/font>

  DEBUG  <  INFO  <  WARN  <  ERROR  <  FATAL

双的别比左边的高。如果一条log信息的别,大于{于记录器的U别|那么记录器就会记录它。例如level被设|ؓINFOU别Q那么应用程序中所有的DEBUG的日志信息将不被打印出来。通过在这里定义的U别Q您可以控制到应用程序中相应U别的日志信息的开兟?/font>

appenderName是输出源的名字,它指定日志信息输出到哪个地方。您可以Z个记录器指定多个输出源?/font>

在一些配|文件中Q你可能会看C面的语句Q?/font>

  log4j.rootCategory = [ level ] , appenderName, appenderName, … 

在早期的Log4j版本中,org.apache.Category实现了记录器的功能,Z提高向后兼容 性,Logger扩展了CategoryQ因此rootCategory和rootLogger是可以互换的Q但最后Category从cd中删除,?此请使用LoggercR?/font>

除了根记录器之外Qlog4j允许E序员定义多个记录器Q每个记录器有自q名字Q?/font>

  log4j.logger.loggerName = [ level ] , appenderName, appenderName, … 

在Log4J中Logger是具有层ơ关pȝQLog4j支持配置的记录器之间?#8220;父子关系”Q记录器之间 通过名字来表明隶属关p(或家族关p)Q它们有一个共同的根,位于最上层Q其它Logger遵@cM包的层次Q记录器a.b,与记录器a.b.c之间是父 子关p,而记录器a与a.b.c之间是祖先与后代的关pR例如:

    static Logger root = Logger.getRootLogger();
static Logger log1 = Logger.getLogger("cc");
static Logger log2 = Logger.getLogger("cc.ejb");
static Logger log3 = Logger.getLogger("cc.ejb.my.TestApp");
上面代码中,log1是log2的父Ԍ是log3的祖先,而root是所有log1、log2?log3的祖先,它们都从root中ѝ所以,一般情况下Q仅需要配|好rootLoggerQ其它子记录器都会从中承rootLogger的配|?如果修改了rootLogger的配|,其它所有的子记录器也会l承q种变化。这样就大大地方便了配置?/font>
如果一个应用中包含了上千个c都需要日志,那么我们是否需要配|上千个Logger呢?我们通过一个简 单的办法来解册个问题: 用每一个javacL件名Q包含该cȝ包名Q定义一个记录器Q这是一U有用ƈ且直观的记录器实例名的定义方式。例如在配置文g 中定义了一个com.foo的记录器Q?/font>
  log4j.logger.com.foo=WARN
在com.foo中的一个javacbarQ我们通过其本cȝ名字获得一个记录器“com.foo.Bar”Q?/font>

package com.foo;
class Bar{
static Logger log=Logger.getLogger(bar.Class.getName());
.....
}

׃记录器com.foo.Bar 没有指定的别,它从com.fooQ在配置文g中其U别讄成WARNQ?l承U别。ƈ且这h们就能方便的从大量log信息中判断出它们各自的来源。当然了Q这不是性规定的Q实际上Log4j没有对设|记录器的实例名做什?限制Q程序员可以Ҏ自己的喜好随意定义?/font>

二、日志信息输出源Appender
log4j q允许日志记录请求打印到多个输出目的圎ͼ?log4j 的叫法是输出源。一个记录器可以有多个输出源。一条log信息如果可被q个记录器处理,则该记录器会把这条信息送往每个它所拥有的输出源Q以及层ơ结构中 更高U的输出源。例如,根记录器以控制台作ؓ输出源,则所有可被纪录的日志都将臛_打印到控制台?/font>

配置日志信息输出源,其语法ؓQ?/font>

  log4j.appender.appenderName = fully.qualified.name.of.appender.class


  log4j.appender.appenderName.option1 = value1
  …
  log4j.appender.appenderName.option = valueN

Log4j提供的appender有以下几U:

  • org.apache.log4j.ConsoleAppenderQ控制台Q?
  • org.apache.log4j.FileAppenderQ文Ӟ
  • org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文Ӟ
  • org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文Ӟ
  • org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)
  • org.apache.log4j.SocketAppender (Socket)
  • org.apache.log4j.NtEventLogAppender    (NT的Event Log)
  • org.apache.log4j.JMSAppender   (电子邮gQ?/font>

h意,可以通过覆盖~省行ؓQ这样就不再附加累积的输出源Q?/font>

  log4j.additivity.loggerName=false

注意Q不要把一个输出源附加到多个记录器上,否则会得?#8220;Attempted to append to closed appender named xxx”的信息?/font>


三、配|日志信息的格式Q布局Q,其语法ؓQ?/font>

  log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class 
  log4j.appender.appenderName.layout.option1 = value1
  …
  log4j.appender.appenderName.layout.option = valueN

其中QLog4j提供的layout有以下几U:

  • org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q?
  • org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q?
  • org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q?
  • org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)

如果采用了PatternLayout, 则Log4J采用cMC语言中的printf函数的打印格式格式化日志信息Q打印参数如下:

  • %m 输出代码中指定的消息
  • %p 输出优先U,即DEBUGQINFOQWARNQERRORQFATAL
  • %r 输出自应用启动到输出该log信息耗费的毫U数
  • %c 输出所属的cȝQ通常是所在类的全?
  • %t 输出产生该日志事件的U程?
  • %n 输出一个回车换行符QWindowsq_?#8220;\r\n”QUnixq_?#8220;\n”
  • %d 输出日志旉点的日期或时_默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyy MMM dd HH:mm:ss,SSS}Q输出类|2002q?0?8?22Q?0Q?8Q?21
  • %l 输出日志事g的发生位|,包括cȝ名、发生的U程Q以及在代码中的行数。D例:Testlog4.main(TestLog4.java:10)

四、例?br /> 下面是一个完整的Log4j配置文gQ这个配|文件指定了两个输出源stdout和R。前 者把日志信息输出到控制台Q后者是一个轮转日志文件。最大的文g?00KBQ当一个日志文件达到最大尺寸时QLog4J会自动把example.log 重命名ؓexample.log.1Q然后重Z个新的example.log文gQ依ơ轮转?/font>

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.FileAppender
log4j.appender.stdout.File=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

log4j.logger.cc.ejb.my=error,out

log4j.appender.out=org.apache.log4j.ConsoleAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%p %t %c - %m%n

log4j.logger.cc.ejb.my.son=debug
log4j.additivity.cc.ejb.my.son=false

在代码中使用Log4j

一、得到记录器
使用Log4jQ第一步就是获取日志记录器Q这个记录器负责控制日志信息。其语法为:

  public static Logger getLogger( String name) 

通过指定的名字获得记录器Q如果必要的话,则ؓq个名字创徏一个新的记录器。Name一般取本类的名字,比如Q?

  static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )

二、读取配|文?
当获得了日志记录器之后,W二步将配置Log4j环境Q其语法为:

  //自动快速地使用~省Log4j环境?br />
BasicConfigurator.configure ();
//d使用Java的特性文件编写的配置文g

  PropertyConfigurator.configure ( String configFilename);
//dXML形式的配|文?br />   DOMConfigurator.configure ( String filename );

三、插入记录信息(格式化日志信息)
当上两个必要步骤执行完毕Q您可以轻村֜使用不同优先U别的日志记录语句插入到您想记录日志的Q何地方,其语法如下:

  Logger.debug ( Object message ) ;
  Logger.info ( Object message ) ;
  Logger.warn ( Object message ) ;
  Logger.error ( Object message ) ;

四、例?/font>

我们通过下面q个单的例子Q来演示在程序如何用Log4jQ您可以修改配置文g以得C同日志信息?/font>

package cc.ejb.my;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import my.son.Foo;
public class TestApp {

    static Logger logger=Logger.getLogger(TestApp.class.getName());

    public static void main(String[] args) {
       
        PropertyConfigurator.configure("log4j.properties");
        logger.info("Applcaiton Starts");
        logger.warn("Bar Starts");
        Bar bar=new Bar();
        logger.error("Bar Errors");
        bar.doIt();
        logger.warn("Bar Exits");
        logger.info("Foo Starts");
        Foo foo=new Foo();
        logger.error("Foo Errors");
        foo.doit();
        logger.warn("Foo exits ");
        logger.info("Applcaition Exits");
       
    }

}

class Bar
{
    static Logger logger = Logger.getLogger(Bar.class.getName());
    public void doIt() {
      logger.debug("Did it again!");
    }
}

package cc.ejb.my.son;

import org.apache.log4j.Logger;

public class Foo {
    private Logger log=Logger.getLogger(Foo.class.getName());
    public Foo() {
        log.info("Foo Initialzie");
    }
    public void doit()
    {
        log.debug("Do it in Foo");
    }

}



cyantide 2008-08-15 11:00 发表评论
]]>
jgraph 开? 转帖)http://www.aygfsteel.com/cyantide/archive/2008/06/27/211003.htmlcyantidecyantideFri, 27 Jun 2008 01:22:00 GMThttp://www.aygfsteel.com/cyantide/archive/2008/06/27/211003.htmlhttp://www.aygfsteel.com/cyantide/comments/211003.htmlhttp://www.aygfsteel.com/cyantide/archive/2008/06/27/211003.html#Feedback0http://www.aygfsteel.com/cyantide/comments/commentRss/211003.htmlhttp://www.aygfsteel.com/cyantide/services/trackbacks/211003.html 1Q?完全Swing兼容Q?
2Q?单、高效的设计Q?
3Q?旉效率高;
4Q?100 %UJavaQ?
jGraph?

jGraphh相当高的交互性和自动化,是一套ؓ囑֮做的lg。其主要用途是在一些需要表C图l构的应用中Q比如流E图、UML、交通线路、网l等{?
jGraph在本文撰写时版本?.8.0.0Q可以在链接出找到jGraph的主c?
jGraph主要包括以下一些品:

JGraph - The Java Open Source Graph Drawing Component ( 有Open Source )
JGraph Layout Pro - The Java Graph Layout Solution
JGraphpad Pro Diagram Editor Framework
MxGraph Thin Client - JGraph in a browser!

׃只是学习嘛,当然只用jGraph咯。jGraph Layout Pro是一个对图进行布局的YӞ但是目前要收费的QjGraph对图的操作包括:图显C、图交互、图布局、图分析{?

JGraph 的基本SWING lg如下:

org.jgraph Basic JGraph c?
org.jgraph.event Graph 事g模型
org.jgraph.graph Graph l构及结?
org.jgraph.plaf Graph UI 委托lg
org.jgraph.util 常用的工L

补充一下,与jGraphcM的可用于l图的还有eclipse的GEF?

jGraph模型

一张图——JGraph c?的主要结构:
JGraph extends JComponent {
org.jgraph.graph.GraphModel model; (DefaultGraphModel)
org.jgraph.plaf.GraphUI ui; (BasicGraphUI)
org.jgraph.graph.GraphLayoutCache cache;
}

JGraph 除了SWING的MVCl构Q即引用了MODEL和UI外,他还保持着一个奇怪的应用GraphLayoutCache?GraphLayoutCache 可以被看作是MODEL的一个扩展,它的作用是保证图中各l点的状态以及一些外观等。因为图的复杂性,使用一个GraphLayoutCache 可以用来处理q些复杂问题?
配置JGraph可以使用一pd的setҎQ有许多很有用的功能可以开兟?


囄逻辑l构——GraphModel c:
满MVC的要求,GraphModel保存着所有的图中的对象,它的默认实现DefaultGraphModel能够满一般的需求?
GraphModel包含三个基本操作Qinsert() , edit() , remove() 。这些操作会起到与GraphLayoutCache相同的效果,但与GraphLayoutCache略微不同的是它的参数比较多,乍看下去比较ȝ?其实GraphModel所要求的只是结点的逻辑l构Q对于结点的l节它ƈ不关心。所以可以在初始化图时用GraphModelQ不要常常用它的Ҏ?对细节做修改Q这既不方便Q也没必要?
另外Q就是GraphModel提供了许多getҎQ可以很方便索相应的l点?

Cells

JGraph 的单位(CellsQ?有三U:Vertex?Edge?Port?
Vertex 可以携带对象Q由于JGraph是只负责表示的,q不真正负责数据的操作。那么在囑Ş和数据间需要一个者,q就是Vertex QVertex 可以是文字、图形等对象?
Port 是一般比较陌生的单位Q在囄法中ƈ不设计PortQ但在图形表CZ它十分有用。如同它的名字,他是Vertex上的一个端口,可以通过端口q接其他VertexQ而在JGraph中Portq可以用于改变Edge的Ş状等{?
Edge 与图法中的边也有一点不同,Edge 是只能连接Port而不是Vertex的。这P因ؓ多了Port单元Q得Edge更加灉|、更加丰富了?

默认单元——DefaultCellQ?
它是DefaultEdge和DefaultPort的父c,又是DefaultMutableTreeNode的子c,其地位可以相当于Vertex?一个DefaultCell可以携带一个UserObject。每个DefaultCellq有一个AttributeMapQ负责它的属性(颜色、大?{等Q。用一套setҎ可以修改AttributeMap?

边和端口单元——Edge、PortQ?
除了l承DefaultCellQEdge、Portq有一些独有的Ҏ?
Edge有getSource() ?getTarget() ҎQ用以获得边的两端的对象Q一般ؓPortQ。还一个\qQ定义了一些\由方法?
Port 主要d是承载EdgeQ所以有一些关于获得Edge的方法。另外,Portq定义了获得锚(比如一个Vertex中包含一个PortQ的Ҏ?

Cell的处理:
每个Cell包括Cell Object、Cell Renderer、Cell Editor、Cell Handle。其中Renderer负责Cell的表C,包括形状{等。Editor 做Cell的修改用Q当双击Cell后则调用Editor来编辑Cell。以上都是类gJTable ?JTree的?
Handle 是SWING的组件中没有的,它的d是处理Cell的大与Ud。可以重写paint()Ҏ来指定经q鼠标拖动所D的Cell大小和位|变化?

对于q些单元的属性的控制Q可以仔l看看GraphConstantsq个cȝsetҎQ基本上所有的属性都是用q个cȝset修改的?
二、JGraph设计
1Q?MVC
Swing是JavaQSunQ提供的UI标准实现之一QSwingZAWTQAbstract Windowing ToolkitQ。JGraph完全兼容SwingQ它的实C然基于MVC体系l构?
JGraph MVC
ViewQ?
JGraph不包含实际的数据Q它提供了数据的视;JGraph对象d的机制是Q?
图元定义ؓ一个一个的 cellQ每个cell可以是一个顶点(vertexQ、边QedgeQ或者节点(portQ中的一U。顶点可以有L的顶点,他们通过边相联系Q边联接 的两个端点称为目标和源,每个目标或者源是一个节炏V节Ҏ点的孩子。每个cell都可以有自己的孩子?
每个cell的外观由相应的属性定义,属性序列是指一pd的键Q值对Q他们以Map形式l织Q例如:
Map cellAttrib = new Hashtable();
// Set bounds
Rectangle2D helloBounds = new Rectangle2D.Double(20, 20, 40, 20);
GraphConstants.setBounds(cellAttrib, helloBounds);
// Set black border
GraphConstants.setBorderColor(cellAttrib, Color.black);
一个cell有类D样一个cellAttrib的MapQ来定义其外观?
外观可以指定诸如一条边的箭头样式等属性?
ModelQ?
数据对象可以看成是JGraph中两个独立结?的链接点Qgrahpl构和groupl构。Graphl构Z图论中的点、边定义。Groupl构是cell的compositionl构?Graphl构中getSourceQ)和getTargetQ)ҎQ获得源和目标节炏V而在group中通过getChildQ)Q?getParentQ)来获得cell的组成结构?
2Q?低层Z图论逻辑
卻I一个图G包含一个非I的?素集V(G)和一个EQGQ,其中QEQGQ是VQGQ中两个无序元素l成的二元组。VQGQ称为图G点的集合,如果L集合VQGQ中的顶点x/yQ?QxQyQ在EQGQ中Q边QxQyQ可能以q接点x和y的边Q弧Q所代表QX与ypUCؓL的,否则x与y不邻接?
三、JGraph的应?
以下是一个基于JGraph的Helloworld的分析:

  • import省略   
  • public class HelloWorld {   
  • public static void main(String[] args) {   
  • // Construct Model and Graph   
  • GraphModel model = new DefaultGraphModel();   
  • JGraph graph = new JGraph(model);   
  • graph.setSelectNewCells(true);   
  • // Create Nested Map (from Cells to Attributes)   
  • // 此Map中记录所有属性,其中的键Q值对是cell-cellAttribute   
  • // 每个cellAttribute又是一个MapQ其键-值对是具体一个cell的属??  
  • Map attributes = new Hashtable();   
  • // 以下建立两个点(cell)Hello和WorldQƈ分别讄他们的属性Map   
  • // Create Hello Vertex   
  • DefaultGraphCell hello = new DefaultGraphCell("Hello");   
  • // Create Hello Vertex Attributes   
  • Map helloAttrib = new Hashtable();   
  • attributes.put(hello, helloAttrib);   
  • // Set bounds   
  • Rectangle2D helloBounds = new Rectangle2D.Double(20204020);   
  • GraphConstants.setBounds(helloAttrib, helloBounds);   
  • // Set black border   
  • GraphConstants.setBorderColor(helloAttrib, Color.black);   
  • // Add a Port   
  • // 每个点Z与其他顶点相LQ必L加节点(cellQ?  
  • DefaultPort hp = new DefaultPort();   
  • hello.add(hp);   
  • // Create World Vertex   
  • DefaultGraphCell world = new DefaultGraphCell("World");   
  • // Create World Vertex Attributes   
  • Map worldAttrib = new Hashtable();   
  • attributes.put(world, worldAttrib);   
  • // Set bounds   
  • Rectangle2D worldBounds = new Rectangle2D.Double(1401404020);   
  • GraphConstants.setBounds(worldAttrib , worldBounds);   
  • // Set fill color   
  • GraphConstants.setBackground(worldAttrib, Color.orange);   
  • GraphConstants.setOpaque(worldAttrib, true);   
  • // Set raised border   
  • GraphConstants.setBorder(worldAttrib,    
  • BorderFactory.createRaisedBevelBorder());   
  • // Add a Port   
  • DefaultPort wp = new DefaultPort();   
  • world.add(wp);   
  • // 建立联接两个点的边   
  • // Create Edge   
  • DefaultEdge edge = new DefaultEdge();   
  • // Create Edge Attributes   
  • Map edgeAttrib = new Hashtable();   
  • attributes.put(edge, edgeAttrib);   
  • // Set Arrow   
  • int arrow = GraphConstants.ARROW_CLASSIC;   
  • GraphConstants.setLineEnd(edgeAttrib , arrow);   
  • GraphConstants.setEndFill(edgeAttrib, true);   
  • // Connect Edge   
  • // 边的两个端点是两个点的child节点QportQ?  
  • ConnectionSet cs = new ConnectionSet(edge, hp, wp);   
  • Object[] cells = new Object[]{edge, hello, world};   
  • // Insert into Model   
  • // model构g完成   
  • model.insert(cells, attributes, cs, nullnull);   
  • // Show in Frame   
  • JFrame frame = new JFrame();   
  • frame.getContentPane().add(new JScrollPane(graph));   
  • //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  • frame.pack();   
  • frame.setVisible(true);   
  • }   
  • }  



  • cyantide 2008-06-27 09:22 发表评论
    ]]>
    Java面试?/title><link>http://www.aygfsteel.com/cyantide/archive/2008/05/24/202584.html</link><dc:creator>cyantide</dc:creator><author>cyantide</author><pubDate>Sat, 24 May 2008 05:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/cyantide/archive/2008/05/24/202584.html</guid><wfw:comment>http://www.aygfsteel.com/cyantide/comments/202584.html</wfw:comment><comments>http://www.aygfsteel.com/cyantide/archive/2008/05/24/202584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cyantide/comments/commentRss/202584.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cyantide/services/trackbacks/202584.html</trackback:ping><description><![CDATA[     摘要: 扑ַ作中遇到的Java面试?nbsp; <a href='http://www.aygfsteel.com/cyantide/archive/2008/05/24/202584.html'>阅读全文</a><img src ="http://www.aygfsteel.com/cyantide/aggbug/202584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cyantide/" target="_blank">cyantide</a> 2008-05-24 13:46 <a href="http://www.aygfsteel.com/cyantide/archive/2008/05/24/202584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">԰</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ҵ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ļ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">߷</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ൺ</a>| <a href="http://" target="_blank">޼</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">־</a>| <a href="http://" target="_blank">̶</a>| <a href="http://" target="_blank">ij</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ƽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ֶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">봨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" 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>