??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲jizzjizz在线播放久,国产精品亚洲不卡一区二区三区,国产精品亚洲综合五月天http://m.tkk7.com/xuechen0721/category/12472.html<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;——?amp;nbsp;兵(f)城下&nbsp;&nbsp Q?zh-cnSat, 10 May 2008 11:29:54 GMTSat, 10 May 2008 11:29:54 GMT60oracle命o(h)Qexp、imphttp://m.tkk7.com/xuechen0721/archive/2008/05/09/199517.html兵(f)城下兵(f)城下Fri, 09 May 2008 07:26:00 GMThttp://m.tkk7.com/xuechen0721/archive/2008/05/09/199517.htmlhttp://m.tkk7.com/xuechen0721/comments/199517.htmlhttp://m.tkk7.com/xuechen0721/archive/2008/05/09/199517.html#Feedback0http://m.tkk7.com/xuechen0721/comments/commentRss/199517.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/199517.html
备䆾数据
1、获取帮助:(x)
    exp help=y
2. 导出一个完整数据库
     exp user/pwd@instance file=path full=y
    CZQexp system/system@xc file = c:/hehe fill =y
3 、导Z个或一l指定用h属的全部表、烦(ch)引和其他对象
    exp system/manager file=seapark log=seapark owner=seapark exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
    CZQexp system/system@xc file=c:/hehe owner=uep
4、导Z个或多个指定?br />     exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)
    CZQexp system/system@xc file=c:/heh tables=(ueppm.ne_table)


恢复数据

1. 获取帮助

 imp help=y

2. 导入一个完整数据库

 imp system/manager file=bible_db log=dible_db full=y ignore=y

3. 导入一个或一l指定用h属的全部表、烦(ch)引和其他对象

 imp system/manager file=seapark log=seapark fromuser=seapark 
imp
system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

4. 一个用h属的数据导入另一个用?/font>

 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
 imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)

5. 导入一个表

 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)




兵(f)城下 2008-05-09 15:26 发表评论
]]>
五一前最后一_(d)发现一个问题,搞不明白Q上来求助!http://m.tkk7.com/xuechen0721/archive/2008/04/30/197534.html兵(f)城下兵(f)城下Wed, 30 Apr 2008 07:24:00 GMThttp://m.tkk7.com/xuechen0721/archive/2008/04/30/197534.htmlhttp://m.tkk7.com/xuechen0721/comments/197534.htmlhttp://m.tkk7.com/xuechen0721/archive/2008/04/30/197534.html#Feedback2http://m.tkk7.com/xuechen0721/comments/commentRss/197534.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/197534.htmlpackage com.xcblcx.test;

import java.util.ArrayList;

public class ThreadNotifyTest {
    
private ArrayList list = new ArrayList();

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        ThreadNotifyTest test 
= new ThreadNotifyTest();
        Queue queue 
= test.new Queue();
        
try{
            Thread.sleep(
1000);
            
for(int i=0;i<5;i++{
                queue.addStr(
new Integer(i).toString());
                Thread.sleep(
1000);
            }

        }
catch(Exception e) {
            e.printStackTrace();
        }

    }

    
    
class ThreadTest extends Thread {
        Queue queue 
= new Queue();
        
        
public ThreadTest() {
            
//this.queue = queue;
        }

        
public void run() {
            
while(true{
                
try{
                    System.out.println(
"Thread start .");
                    String testStr 
= this.queue.getNext();
                    System.out.println(testStr);
                }
catch(Exception e ){
                    e.printStackTrace();
                }

            }

        }

    }

    
    
class Queue {
        
private ThreadTest threadTest = null;
        
        
public Queue(){
            
//this.threadTest = new ThreadTest(this);
            this.threadTest = new ThreadTest();
            
this.threadTest.start();
        }

        
        
public void addStr(String str) {
            
synchronized(list) {
                list.add(str);
                list.notify();
            }

        }

        
        
public String getNext() throws InterruptedException {
            
synchronized(list) {
                
while(list.size() <= 0{
                    System.out.println(
"wait start");
                    list.wait();
                    System.out.println(
"wait end");
                }

                
                
return (String)list.remove(0);
            }

        }

    }


}



q行l果为:(x)
java.lang.StackOverflowError
Exception in thread "main"
请问Z么?


兵(f)城下 2008-04-30 15:24 发表评论
]]>
oracle bughttp://m.tkk7.com/xuechen0721/archive/2008/04/23/195183.html兵(f)城下兵(f)城下Wed, 23 Apr 2008 09:34:00 GMThttp://m.tkk7.com/xuechen0721/archive/2008/04/23/195183.htmlhttp://m.tkk7.com/xuechen0721/comments/195183.htmlhttp://m.tkk7.com/xuechen0721/archive/2008/04/23/195183.html#Feedback1http://m.tkk7.com/xuechen0721/comments/commentRss/195183.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/195183.html
p么个问题Q搞?jin)我两天Q郁P发泄一下,重新开始blog生(dng)Q庆(jin)?

兵(f)城下 2008-04-23 17:34 发表评论
]]>
一个郁闷了(jin)我两天的问题http://m.tkk7.com/xuechen0721/archive/2007/07/08/128886.html兵(f)城下兵(f)城下Sun, 08 Jul 2007 08:21:00 GMThttp://m.tkk7.com/xuechen0721/archive/2007/07/08/128886.htmlhttp://m.tkk7.com/xuechen0721/comments/128886.htmlhttp://m.tkk7.com/xuechen0721/archive/2007/07/08/128886.html#Feedback1http://m.tkk7.com/xuechen0721/comments/commentRss/128886.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/128886.html     回头x真是有点冤,q么个问题,费?jin)我两天的时_(d)汗啊Q?br>
      (g)验匮乏啊Q?

兵(f)城下 2007-07-08 16:21 发表评论
]]>
java正则表达式入门文?http://m.tkk7.com/xuechen0721/archive/2007/01/01/91320.html兵(f)城下兵(f)城下Mon, 01 Jan 2007 13:31:00 GMThttp://m.tkk7.com/xuechen0721/archive/2007/01/01/91320.htmlhttp://m.tkk7.com/xuechen0721/comments/91320.htmlhttp://m.tkk7.com/xuechen0721/archive/2007/01/01/91320.html#Feedback0http://m.tkk7.com/xuechen0721/comments/commentRss/91320.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/91320.html  java正则表达式入门文?

引言

    正则表达式(regular expressionQ描qC(jin)一U字W串匚w的模式,可以用来Q(1Q检查一个串中是否含有符合某个规则的子串Qƈ且可以得到这个子ԌQ?Q根据匹配规则对字符串进行灵zȝ替换操作?br />
    正则表达式学?fn)v来其实是很简单的Q不多的几个较ؓ(f)抽象的概念也很容易理解。之所以很多h感觉正则表达式比较复杂,一斚w是因为大多数的文档没有做到由入深地讲解Q概念上没有注意先后序Q给读者的理解带来困难Q另一斚wQ各U引擎自带的文档一般都要介l它Ҏ(gu)的功能,然而这部分Ҏ(gu)的功能ƈ不是我们首先要理解的?br />
    文章中的每一个D例,都可以点击进入到试面q行试。闲话少_(d)开始?/p> 

1. 正则表达式规?/h4>

1.1 普通字W?/h5>

    字母、数字、汉字、下划线、以?qing)后边章节中没有?gu)定义的标点符P都是"普通字W?。表辑ּ中的普通字W,在匹配一个字W串的时候,匚w与之相同的一个字W?br />
    举例1Q表辑ּ "c"Q在匚w字符?"abcde" ?/font>Q匹配结果是Q成功;匚w到的内容是:(x)"c"Q匹配到的位|是Q开始于2Q结束于3。(注:(x)下标?开始还是从1开始,因当前编E语a的不同而可能不同)(j)

    举例2Q表辑ּ "bcd"Q在匚w字符?"abcde" ?/font>Q匹配结果是Q成功;匚w到的内容是:(x)"bcd"Q匹配到的位|是Q开始于1Q结束于4?/p>


1.2 单的转义字符

    一些不便书写的字符Q采用在前面?"\" 的方法。这些字W其实我们都已经熟知?jin)?/p>

表达?/p>

可匹?/p>

\r, \n

代表回R和换行符

\t

制表W?/p>

\\

代表 "\" 本n

    q有其他一些在后边章节中有Ҏ(gu)用处的标点符P在前面加 "\" 后,׃表该W号本n。比如:(x)^, $ 都有Ҏ(gu)意义Q如果要惛_配字W串?"^" ?"$" 字符Q则表达式就需要写?"\^" ?"\$"?/p>

表达?/p>

可匹?/p>

\^

匚w ^ W号本n

\$

匚w $ W号本n

\.

匚w数点(.Q本w?/p>

    q些转义字符的匹配方法与 "普通字W? 是类似的。也是匹配与之相同的一个字W?br />
    举例1Q表辑ּ "\$d"Q在匚w字符?"abc$de" ?/font>Q匹配结果是Q成功;匚w到的内容是:(x)"$d"Q匹配到的位|是Q开始于3Q结束于5?/p>


1.3 能够?'多种字符' 匚w的表辑ּ

    正则表达式中的一些表C方法,可以匚w '多种字符' 其中的Q意一个字W。比如,表达?"\d" 可以匚wL一个数字。虽然可以匹配其中Q意字W,但是只能是一个,不是多个。这好比玩扑克牌时候,大小王可以代替Q意一张牌Q但是只能代替一张牌?/p>

表达?/p>

可匹?/p>

\d

L一个数字,0~9 中的L一?/p>

\w

L一个字母或数字或下划线Q也是 A~Z,a~z,0~9,_ 中Q意一?/p>

\s

包括I格、制表符、换늬{空白字W的其中L一?/p>

.

数点可以匹配除?jin)换行符Q\nQ以外的L一个字W?/p>

    举例1Q表辑ּ "\d\d"Q在匚w "abc123" ?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu)Q?12"Q匹配到的位|是Q开始于3Q结束于5?br />
    举例2Q表辑ּ "a.\d"Q在匚w "aaa100" ?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu)Q?aa1"Q匹配到的位|是Q开始于1Q结束于4?/p>


1.4 自定义能够匹?'多种字符' 的表辑ּ

    使用Ҏ(gu)?[ ] 包含一pd字符Q能够匹配其中Q意一个字W。用 [^ ] 包含一pd字符Q则能够匚w其中字符之外的Q意一个字W。同L(fng)道理Q虽然可以匹配其中Q意一个,但是只能是一个,不是多个?/p>

表达?/p>

可匹?/p>

[ab5@]

匚w "a" ?"b" ?"5" ?"@"

[^abc]

匚w "a","b","c" 之外的Q意一个字W?/p>

[f-k]

匚w "f"~"k" 之间的Q意一个字?/p>

[^A-F0-3]

匚w "A"~"F","0"~"3" 之外的Q意一个字W?/p>

    举例1Q表辑ּ "[bcd][bcd]" 匚w "abc123" ?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu)Q?bc"Q匹配到的位|是Q开始于1Q结束于3?br />
    举例2Q表辑ּ "[^abc]" 匚w "abc123" ?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu)Q?1"Q匹配到的位|是Q开始于3Q结束于4?/p>


1.5 修饰匚wơ数的特D符?/h5>

    前面章节中讲到的表达式,无论是只能匹配一U字W的表达式,q是可以匚w多种字符其中L一个的表达式,都只能匹配一ơ。如果用表辑ּ再加上修饰匹配次数的Ҏ(gu)W号Q那么不用重复书写表辑ּ可以重复匹配?br />
    使用Ҏ(gu)是:(x)"ơ数修饰"攑֜"被修饰的表达?后边。比如:(x)"[bcd][bcd]" 可以写成 "[bcd]{2}"?/p>

表达?/p>

作用

{n}

表达式重复nơ,比如Q?a >"\w{2}" 相当?"\w\w"Q?a >"a{5}" 相当?"aaaaa"

{m,n}

表达式至重复mơ,最多重复nơ,比如Q?a >"ba{1,3}"可以匚w "ba"?baa"?baaa"

{m,}

表达式至重复mơ,比如Q?a >"\w\d{2,}"可以匚w "a12","_456","M12344"...

?

匚w表达?ơ或?ơ,相当?{0,1}Q比如:(x)"a[cd]?"可以匚w "a","ac","ad"

+

表达式至出?ơ,相当?{1,}Q比如:(x)"a+b"可以匚w "ab","aab","aaab"...

*

表达式不出现或出CQ意次Q相当于 {0,}Q比如:(x)"\^*b"可以匚w "b","^^^b"...

    举例1Q表辑ּ "\d+\.?\d*" 在匹?"It costs $12.5" ?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu)Q?12.5"Q匹配到的位|是Q开始于10Q结束于14?br />
    举例2Q表辑ּ "go{2,8}gle" 在匹?"Ads by goooooogle" ?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu)Q?goooooogle"Q匹配到的位|是Q开始于7Q结束于17?/p>


1.6 其他一些代表抽象意义的Ҏ(gu)W号

    一些符号在表达式中代表抽象的特D意义:(x)

表达?/p>

作用

^

与字W串开始的地方匚wQ不匚wM字符

$

与字W串l束的地方匹配,不匹配Q何字W?/p>

\b

匚w一个单词边界,也就是单词和I格之间的位|,不匹配Q何字W?/p>

    q一步的文字说明仍然比较抽象Q因此,举例帮助大家理解?br />
    举例1Q表辑ּ "^aaa" 在匹?"xxx aaa xxx" ?/font>Q匹配结果是Q失败。因?"^" 要求与字W串开始的地方匚wQ因此,只有?"aaa" 位于字符串的开头的时候,"^aaa" 才能匚wQ?a >比如Q?aaa xxx xxx"?br />
    举例2Q表辑ּ "aaa$" 在匹?"xxx aaa xxx" ?/font>Q匹配结果是Q失败。因?"$" 要求与字W串l束的地方匹配,因此Q只有当 "aaa" 位于字符串的l尾的时候,"aaa$" 才能匚wQ?a >比如Q?xxx xxx aaa"?br />
    举例3Q表辑ּ ".\b." 在匹?"@@@abc" ?/font>Q匹配结果是Q成功;匚w到的内容是:(x)"@a"Q匹配到的位|是Q开始于2Q结束于4?br />    q一步说明:(x)"\b" ?"^" ?"$" cMQ本w不匚wM字符Q但是它要求它在匚wl果中所处位|的左右两边Q其中一Ҏ(gu) "\w" 范围Q另一Ҏ(gu) ?\w" 的范围?br />
    举例4Q表辑ּ "\bend\b" 在匹?"weekend,endfor,end" ?/font>Q匹配结果是Q成功;匚w到的内容是:(x)"end"Q匹配到的位|是Q开始于15Q结束于18?/p>

    一些符号可以媄(jing)响表辑ּ内部的子表达式之间的关系Q?/p>

表达?/p>

作用

|

左右两边表达式之?"? 关系Q匹配左Ҏ(gu)者右?/p>

( )

(1). 在被修饰匚wơ数的时候,括号中的表达式可以作为整体被修饰
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

    举例5Q表辑ּ "Tom|Jack" 在匹配字W串 "I'm Tom, he is Jack" ?/font>Q匹配结果是Q成功;匚w到的内容是:(x)"Tom"Q匹配到的位|是Q开始于4Q结束于7。匹配下一个时Q匹配结果是Q成功;匚w到的内容是:(x)"Jack"Q匹配到的位|时Q开始于15Q结束于19?br />
    举例6Q表辑ּ "(go\s*)+" 在匹?"Let's go go go!" ?/font>Q匹配结果是Q成功;匚w到内Ҏ(gu)Q?go go go"Q匹配到的位|是Q开始于6Q结束于14?br />
    举例7Q表辑ּ "K?font color="#5050ff">(\d+\.?\d*)
" 在匹?"Q?0.9,K?0.5" ?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu)Q?K?0.5"Q匹配到的位|是Q开始于6Q结束于10。单独获取括可围匹配到的内Ҏ(gu)Q?20.5"?/p>


2. 正则表达式中的一些高U规?/h4>
2.1 匚wơ数中的贪婪与非贪婪

    在用修饰匹配次数的Ҏ(gu)W号Ӟ有几U表C方法可以同一个表辑ּ能够匚w不同的次敎ͼ比如Q?{m,n}", "{m,}", "?", "*", "+"Q具体匹配的ơ数随被匚w的字W串而定。这U重复匹配不定次数的表达式在匚wq程中,L可能多的匹配。比如,针对文本 "dxxxdxxxd"QD例如下:(x)

表达?/p>

匚wl果

(d)(\w+)

"\w+" 匹配第一?"d" 之后的所有字W?"xxxdxxxd"

(d)(\w+)(d)

"\w+" 匹配第一?"d" 和最后一?"d" 之间的所有字W?"xxxdxxx"。虽?"\w+" 也能够匹配上最后一?"d"Q但是ؓ(f)?jin)整个表达式匹配成功?\w+" 可以 "让出" 它本来能够匹配的最后一?"d"

    由此可见Q?\w+" 在匹配的时候,L可能多的匹配符合它规则的字W。虽然第二个举例中,它没有匹配最后一?"d"Q但那也是ؓ(f)?jin)让整个表达式能够匹配成功。同理,?"*" ?"{m,n}" 的表辑ּ都是可能地多匹配,?"?" 的表辑ּ在可匚w可不匚w的时候,也是可能的 "要匹?。这 U匹配原则就叫作 "贪婪" 模式 ?/p>

    非贪婪模式:(x)

    在修饰匹配次数的Ҏ(gu)W号后再加上一?"?" P则可以匚wơ数不定的表辑ּ可能少的匹配,使可匚w可不匚w的表辑ּQ尽可能?"不匹?。这U匹配原则叫?"非贪? 模式Q也叫作 "勉强" 模式。如果少匚w׃(x)D整个表达式匹配失败的时候,与贪婪模式类|非贪婪模式会(x)最限度的再匹配一些,以整个表达式匹配成功。D例如下,针对文本 "dxxxdxxxd" 举例Q?/p>

表达?/p>

匚wl果

(d)(\w+?)

"\w+?" 尽可能的匚wW一?"d" 之后的字W,l果是:(x)"\w+?" 只匹配了(jin)一?"x"

(d)(\w+?)(d)

Z(jin)让整个表辑ּ匚w成功Q?\w+?" 不得不匹?"xxx" 才可以让后边?"d" 匚wQ从而整个表达式匹配成功。因此,l果是:(x)"\w+?" 匚w "xxx"

    更多的情况,举例如下Q?br />
    举例1Q表辑ּ "<td>(.*)</td>" 与字W串 "<td><p>aa</p></td> <td><p>bb</p></td>" 匚w?/font>Q匹配的l果是:(x)成功Q匹配到的内Ҏ(gu) "<td><p>aa</p></td> <td><p>bb</p></td>" 整个字符Ԍ 表达式中?"</td>" 与字符串中最后一?"</td>" 匚w?

    举例2Q相比之下,表达?"<td>(.*?)</td>" 匚w举例1中同L(fng)字符串时Q将只得?"<td><p>aa</p></td>"Q?再次匚w下一个时Q可以得到第二个 "<td><p>bb</p></td>"?/p>


2.2 反向引用 \1, \2...

    表达式在匚wӞ表达式引擎会(x)小括号 "( )" 包含的表辑ּ所匚w到的字符串记录下来。在获取匚wl果的时候,括号包含的表达式所匚w到的字符串可以单独获取。这一点,在前面的举例中,已经多次展示?jin)。在实际应用场合中,当用某种边界来查找,而所要获取的内容又不包含边界Ӟ必须使用括h指定所要的范围。比如前面的 "<td>(.*?)</td>"?br />
    其实Q?括号包含的表达式所匚w到的字符? 不仅是在匚wl束后才可以使用Q在匚wq程中也可以使用。表辑ּ后边的部分,可以引用前面 "括号内的子匹配已l匹配到的字W串"。引用方法是 "\" 加上一个数字?\1" 引用W?Ҏ(gu)号内匚w到的字符Ԍ"\2" 引用W?Ҏ(gu)号内匚w到的字符东y(c)…以此类推,如果一Ҏ(gu)号内包含另一Ҏ(gu)P则外层的括号先排序号。换句话_(d)哪一对的左括?"(" 在前Q那q一对就先排序号?/p>

    举例如下Q?br />
    举例1Q表辑ּ "('|")(.*?)(\1)" 在匹?" 'Hello', "World" " ?/font>Q匹配结果是Q成功;匚w到的内容是:(x)" 'Hello' "。再ơ匹配下一个时Q可以匹配到 " "World" "?br />
    举例2Q表辑ּ "(\w)\1{4,}" 在匹?"aa bbbb abcdefg ccccc 111121111 999999999" ?/font>Q匹配结果是Q成功;匚w到的内容?"ccccc"。再ơ匹配下一个时Q将得到 999999999。这个表辑ּ要求 "\w" 范围的字W至重?ơ,注意?"\w{5,}" 之间的区?/font>?br />
    举例3Q表辑ּ "<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?</\1>" 在匹?"<td id='td1' style="bgcolor:white"></td>" ?/font>Q匹配结果是成功。如?"<td>" ?"</td>" 不配对,则会(x)匚wp|Q如果改成其他配对,也可以匹配成功?/p>


2.3 预搜索,不匹配;反向预搜索,不匹?/h5>

    前面的章节中Q我讲到?jin)几个代表抽象意义的?gu)W号Q?^"Q?$"Q?\b"。它们都有一个共同点Q那是Q它们本w不匚wM字符Q只是对 "字符串的两头" 或?"字符之间的缝? 附加?jin)一个条件。理解到q个概念以后Q本节将l箋介绍另外一U对 "两头" 或?"~隙" 附加条g的,更加灉|的表C方法?/p>

    正向预搜索:(x)"(?=xxxxx)"Q?(?!xxxxx)"

    格式Q?(?=xxxxx)"Q在被匹配的字符串中Q它Ҏ(gu)处的 "~隙" 或?"两头" 附加的条件是Q所在缝隙的右侧Q必能够匹配上 xxxxx q部分的表达式。因为它只是在此作ؓ(f)q个~隙上附加的条gQ所以它q不影响后边的表辑ּȝ正匹配这个缝隙之后的字符。这q?"\b"Q本w不匚wM字符?\b" 只是所在缝隙之前、之后的字符取来q行?jin)一下判断,不会(x)影响后边的表辑ּ来真正的匚w?br />
    举例1Q表辑ּ "Windows (?=NT|XP)" 在匹?"Windows 98, Windows NT, Windows 2000" ?/font>Q将只匹?"Windows NT" 中的 "Windows "Q其他的 "Windows " 字样则不被匹配?br />
    举例2Q表辑ּ "(\w)((?=\1\1\1)(\1))+" 在匹配字W串 "aaa ffffff 999999999" ?/font>Q将可以匚w6?f"的前4个,可以匚w9?9"的前7个。这个表辑ּ可以读解成:(x)重复4ơ以上的字母数字Q则匚w其剩下最?位之前的部分。当?dng)q个表达式可以不q样写,在此的目的是作ؓ(f)演示之用?/p>

    格式Q?(?!xxxxx)"Q所在缝隙的右侧Q必M能匹?xxxxx q部分表辑ּ?br />
    举例3Q表辑ּ "((?!\bstop\b).)+" 在匹?"fdjka ljfdl stop fjdsla fdj" ?/font>Q将从头一直匹配到 "stop" 之前的位|,如果字符串中没有 "stop"Q则匚w整个字符丌Ӏ?br />
    举例4Q表辑ּ "do(?!\w)" 在匹配字W串 "done, do, dog" ?/font>Q只能匹?"do"。在本条举例中,"do" 后边使用 "(?!\w)" 和?"\b" 效果是一L(fng)?/p>

    反向预搜索:(x)"(?<=xxxxx)"Q?(?<!xxxxx)"

    q两U格式的概念和正向预搜烦(ch)是类似的Q反向预搜烦(ch)要求的条件是Q所在缝隙的 "左侧"Q两U格式分别要求必能够匹配和必须不能够匹配指定表辑ּQ而不是去判断右侧。与 "正向预搜? 一L(fng)是:(x)它们都是Ҏ(gu)在缝隙的一U附加条Ӟ本n都不匚wM字符?br />
    举例5Q表辑ּ "(?<=\d{4})\d+(?=\d{4})" 在匹?"1234567890123456" Ӟ匹配除?jin)?个数字和?个数字之外的中间8个数字。由?JScript.RegExp 不支持反向预搜烦(ch)Q因此,本条举例不能够进行演C。很多其他的引擎可以支持反向预搜索,比如QJava 1.4 以上?java.util.regex 包,.NET 中System.Text.RegularExpressions 命名I间Q以?qing)本站推荐?a >最单易用的 DEELX 正则引擎?/p>


3. 其他通用规则

    q有一些在各个正则表达式引擎之间比较通用的规则,在前面的讲解q程中没有提到?/p>

3.1 表达式中Q可以?"\xXX" ?"\uXXXX" 表示一个字W("X" 表示一个十六进制数Q?/p>

形式

字符范围

\xXX

~号?0 ~ 255 范围的字W,比如Q?a >I格可以使用 "\x20" 表示

\uXXXX

M字符可以使用 "\u" 再加上其~号?位十六进制数表示Q比如:(x)"\u4E2D"

3.2 在表辑ּ "\s"Q?\d"Q?\w"Q?\b" 表示Ҏ(gu)意义的同Ӟ对应的大写字母表C相反的意义

表达?/p>

可匹?/p>

\S

匚w所有非I白字符Q?\s" 可匹配各个空白字W)(j)

\D

匚w所有的非数字字W?/font>

\W

匚w所有的字母、数字、下划线以外的字W?/font>

\B

匚w非单词边界,卛_右两辚w?"\w" 范围或者左右两辚w不是 "\w" 范围时的字符~隙

3.3 在表辑ּ中有Ҏ(gu)意义Q需要添?"\" 才能匚w该字W本w的字符汇?/p>

字符

说明

^

匚w输入字符串的开始位|。要匚w "^" 字符本nQ请使用 "\^"

$

匚w输入字符串的l尾位置。要匚w "$" 字符本nQ请使用 "\$"

( )

标记一个子表达式的开始和l束位置。要匚w括P请?"\(" ?"\)"

[ ]

用来自定义能够匹?'多种字符' 的表辑ּ。要匚w中括P请?"\[" ?"\]"

{ }

修饰匚wơ数的符受要匚w大括P请?"\{" ?"\}"

.

匚w除了(jin)换行W(\nQ以外的L一个字W。要匚w数Ҏ(gu)w,请?"\."

?

修饰匚wơ数?0 ơ或 1 ơ。要匚w "?" 字符本nQ请使用 "\?"

+

修饰匚wơ数?1 ơ。要匚w "+" 字符本nQ请使用 "\+"

*

修饰匚wơ数?0 ơ或Lơ。要匚w "*" 字符本nQ请使用 "\*"

|

左右两边表达式之?"? 关系。匹?"|" 本nQ请使用 "\|"

3.4 括号 "( )" 内的子表辑ּQ如果希望匹配结果不q行记录供以后用,可以使用 "(?:xxxxx)" 格式

    举例1Q表辑ּ "(?:(\w)\1)+" 匚w "a bbccdd efg" ?/font>Q结果是 "bbccdd"。括?"(?:)" 范围的匹配结果不q行记录Q因?"(\w)" 使用 "\1" 来引用?/p>

3.5 常用的表辑ּ属性设|简介:(x)IgnorecaseQSinglelineQMultilineQGlobal

表达式属?/p>

说明

Ignorecase

默认情况下,表达式中的字母是要区分大写的。配|ؓ(f) Ignorecase 可匚w时不区分大小写。有的表辑ּ引擎Q把 "大小? 概念延?UNICODE 范围的大写?/p>

Singleline

默认情况下,数?"." 匚w除了(jin)换行W(\nQ以外的字符。配|ؓ(f) Singleline 可ɞ数点可匚w包括换行W在内的所有字W?/p>

Multiline

默认情况下,表达?"^" ?"$" 只匹配字W串的开??和结??位置。如Q?br />
①xxxxxxxxx②\n
③xxxxxxxxx?br />
配置?Multiline 可以?"^" 匚w ?外,q可以匹配换行符之后Q下一行开始前 ?的位|,?"$" 匚w ?外,q可以匹配换行符之前Q一行结??的位|?/p>

Global

主要在将表达式用来替换时起作用,配置?Global 表示替换所有的匚w?/p>

 


 

4. 其他提示

4.1 如果惌?jin)解高的正则引擎还支持那些复杂的正则语法,可参?a >本站 DEELX 正则引擎的说明文?/font>?/p>

4.2 如果要要求表辑ּ所匚w的内Ҏ(gu)整个字符Ԍ而不是从字符串中找一部分Q那么可以在表达式的首尾使用 "^" ?"$"Q比如:(x)"^\d+$" 要求整个字符串只有数字?/p>

4.3 如果要求匚w的内Ҏ(gu)一个完整的单词Q而不?x)是单词的一部分Q那么在表达式首?"\b"Q比如:(x)使用 "\b(if|while|else|void|int…?font color="#5050ff">)\b" 来匹配程序中的关键字?/p>

4.4 表达式不要匹配空字符丌Ӏ否则会(x)一直得到匹配成功,而结果什么都没有匚w到。比如:(x)准备写一个匹?"123"?123."?123.5"?.5" q几UŞ式的表达式时Q整数、小数点、小数数字都可以省略Q但是不要将表达式写成:(x)"\d*\.?\d*"Q因为如果什么都没有Q这个表辑ּ也可以匹配成功?a >更好的写法是Q?\d+\.?\d*|\.\d+"?/p>

4.5 能匹配空字符串的子匹配不要@环无限次。如果括号内的子表达式中的每一部分都可以匹?0 ơ,而这个括h体又可以匚w无限ơ,那么情况可能比上一条所说的更严重,匚wq程中可能死循环。虽然现在有些正则表辑ּ引擎已经通过办法避免?jin)这U情况出现死循环?jin),比?.NET 的正则表辑ּQ但是我们仍然应该尽量避免出现这U情c(din)如果我们在写表辑ּ旉C(jin)d@环,也可以从q一点入手,查找一下是否是本条所说的原因?/p>

4.6 合理选择贪婪模式与非贪婪模式Q参?a >话题讨论?/p>

4.7 ?"|" 的左右两边,Ҏ(gu)个字W最好只有一边可以匹配,q样Q不?x)因?"|" 两边的表辑ּ因ؓ(f)交换位置而有所不同?/p>

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1459667



兵(f)城下 2007-01-01 21:31 发表评论
]]>
SQL W记Q定时更斎ͼ(j)http://m.tkk7.com/xuechen0721/archive/2006/12/18/88595.html兵(f)城下兵(f)城下Mon, 18 Dec 2006 09:48:00 GMThttp://m.tkk7.com/xuechen0721/archive/2006/12/18/88595.htmlhttp://m.tkk7.com/xuechen0721/comments/88595.htmlhttp://m.tkk7.com/xuechen0721/archive/2006/12/18/88595.html#Feedback0http://m.tkk7.com/xuechen0721/comments/commentRss/88595.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/88595.htmlwith 语句Q?br />WITH T1 AS(SELECT DISTINCT C_UNIT_CODE,C_CNTY_CODE,C_PRODUCT_ID,I_AUTH_LEVEL FROM TRX_USER_AUTH_LEVEL WHERE C_GRP_CODE = 'GRP1206' AND C_USER_ID = 'usr1206'),
T2 AS(SELECT DISTINCT B.C_MAIN_REF,B.C_UNIT_CODE,I_AUTH_LEVEL,B.C_CNTY_CODE,B.C_PRODUCT_ID FROM TRX_MATRIX_LIST A JOIN TRX_AUTH_LIST B ON A.C_MAIN_REF = B.C_MAIN_REF AND A.C_UNIT_CODE = B.C_UNIT_CODE AND A.C_CNTY_CODE = B.C_CNTY_CODE AND A.C_PRODUCT_ID = B.C_PRODUCT_ID AND A.I_OP_LEVEL = B.I_AUTH_LEVEL WHERE B.C_MAIN_REF NOT IN (SELECT DISTINCT C_MAIN_REF FROM TRX_AUTH_LIST WHERE C_USER_ID = 'usr1206')),
T3 AS(SELECT T2.C_MAIN_REF,T2.C_UNIT_CODE,T2.C_CNTY_CODE,T2.C_PRODUCT_ID FROM T2 JOIN T1 ON T1.C_UNIT_CODE = T2.C_UNIT_CODE AND T1.C_CNTY_CODE = T2.C_CNTY_CODE AND T1.C_PRODUCT_ID = T2.C_PRODUCT_ID AND T1.I_AUTH_LEVEL = T2.I_AUTH_LEVEL),
T4 AS(SELECT A. C_UNIT_CODE,A.C_TRX_STATUS,A.C_STATUS_NAME,A.C_PRODUCT_NAME,A.C_MAIN_REF,A.CUST_REF,A.COMP_NAME,A.SCB_REF,A.T_LOCKED_TIME,A.TXN_DATE,A.OTSTND_CCY,A.OTSTND_AMT,A.C_IS_TEMPLATE,A.C_GRP_CODE,A.C_FUNC_ID,A.C_CNTY_CODE,A.C_BK_GROUP_ID,A.C_MODULE,A.BANK_INIT,A.C_PRODUCT_ID,A.C_TRX_REF,A.I_EVENT_TIMES  FROM TRX_INBOX A JOIN T3 ON T3.C_MAIN_REF = A.C_MAIN_REF AND T3.C_UNIT_CODE = A.C_UNIT_CODE AND T3.C_CNTY_CODE = A.C_CNTY_CODE AND T3.C_PRODUCT_ID = A.C_PRODUCT_ID WHERE  (C_TRX_STATUS ='P'OR C_TRX_STATUS='T')AND (BANK_INIT <> 'T'OR BANK_INIT  IS NULL)AND (C_IS_TEMPLATE <> 'Y'OR C_IS_TEMPLATE IS NULL)  AND  C_BK_GROUP_ID  ='SCBBANK'),
T5 AS(SELECT DISTINCT A.C_UNIT_CODE,A.C_CNTY_CODE,B.C_PRODUCT_ID FROM TRX_OP_FUNC A JOIN TRX_FAP_RULE B ON A.C_FAP_ID = B.C_FAP_ID WHERE C_GRP_CODE = 'GRP1206' AND C_USER_ID = 'usr1206')
SELECT COUNT(*) AS RECCOUNT FROM T4 JOIN T5 ON T4.C_UNIT_CODE = T5.C_UNIT_CODE AND T4.C_CNTY_CODE = T5.C_CNTY_CODE AND T4.C_PRODUCT_ID = T5.C_PRODUCT_ID


UNION语句Q?br />SELECT  C_MAIN_REF,I_AUTH_LEVEL,C_TRX_STATUS ,TXN_DATE,TXN_TIME FROM  shgt_auth WHERE C_MAIN_REF='SGGHYLL10030' And C_UNIT_CODE='CINDYGP'
AND C_CNTY_CODE='CN' AND C_trx_status = 'A'
UNION
select  B.C_MAIN_REF,B.I_AUTH_LEVEL,B.C_TRX_STATUS ,B.TXN_DATE,B.TXN_TIME from TRX_AUTH_LIST A,shgt_auth B
WHERE B.C_MAIN_REF='SGGHYLL10030' And B.C_UNIT_CODE='CINDYGP'

 


Ҏ(gu)定表不写日志Qalter table *** activate not logged initially

创徏表:(x)
DELETE FROM TABLE EXIMTRX.KEYTEST;
DROP TABLE EXIMTRX.KEYTEST;
CREATE TABLE EXIMTRX.KEYTEST
(
    USER_ID    INTEGER,
    USER_NAME  VARCHAR(10) NOT NULL,
    USER_ADDR  VARCHAR(10) NOT NULL,
    USER_MAIL  VARCHAR(10) NOT NULL,
    USER_SEC   VARCHAR(10) NOT NULL,
    HASH       VARCHAR(10),
   PRIMARY KEY (USER_ID,USER_NAME,USER_ADDR,USER_MAIL,USER_SEC)
);

(g)索数据库表中的不重复记录 (按B列来查询Q去除B列中的重复数据)(j)
SELECT * FROM TEST WHERE id in (SELECT MIN(id) FROM TEST GROUP BY B)
1、查找表中多余的重复记录Q重复记录是Ҏ(gu)单个字段QpeopleIdQ来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2、删除表中多余的重复记录Q重复记录是Ҏ(gu)单个字段QpeopleIdQ来判断Q只留有rowid最的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

3、查找表中多余的重复记录Q多个字D)(j)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录Q多个字D)(j)Q只留有rowid最的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录Q多个字D)(j)Q不包含rowid最的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

 

 

复制?br />create table trx_inbox_back like trx_inbox
insert into trx_inbox_back  select * from trx_inbox

创徏视图
drop view view_sql
create view view_sql as
select * from table where ....

create view viewTest(id,name,cnty,address) as
select a.id,a.col1,a.col2,b.col1 from tablea a ,tableb b where a.id<10000 and a.id=b.id;

select * from viewTest where id<5000



建立索引
create index idx_inbox_back on TRX_INBOX_BACK(C_CNTY_CODE,C_UNIT_CODE,C_PRODUCT_ID)

选取?00条记?br />select * from trx_inbox FETCH FIRST 100 ROWS ONLY

join 语句
SELECT DISTINCT A.CUST_REF,A.SCB_REF,A.COMP_NAME,A.C_PRODUCT_NAME,A.COUNTER_PARTY_NAME,A.C_STATUS_NAME,A.C_TRX_STATUS,A.C_UNIT_CODE  FROM TRX_INBOX_back A JOIN TRX_OP_FUNC B ON A.C_CNTY_CODE = B.C_CNTY_CODE AND A.C_UNIT_CODE = B.C_UNIT_CODE AND A.C_PRODUCT_ID = B.C_PRODUCT_ID AND B.C_GRP_CODE = 'HKGROUP' AND B.C_USER_ID = 'hkuser' WHERE ( A.C_TRX_STATUS = 'P' OR A.C_TRX_STATUS = 'T') AND (A.BANK_INIT     <> 'T' OR A.BANK_INIT      IS NULL) AND (A.C_IS_TEMPLATE <> 'Y' OR A.C_IS_TEMPLATE  IS NULL) AND  A.C_BK_GROUP_ID  ='SCBBANK'  AND A.C_MAIN_REF LIKE '%xcblcx%' AND A.C_PRODUCT_ID = 'P05102100000'



count指定字段 Q去除指定字D重复行Q注Q指定字D中不能包括 INTEGER cd
select count( distinct user_id || user_sec) as counter from test



通配W的一些用法:(x)(关键字:(x)like % [] -)
  
select * from tablename where column1 like '[A-M]%'
  q样可以选择出column字段中首字母在A
-M之间的记?br />
  
select * from tablename where column1 like '[ABC]%'
  q样可以选择出column字段中首字母是A或者B或者C的记?br />
  
select * from tablename where column1 like '[A-CG]%'
  q样可以选择出column字段中首字母在A
-C之间的或者是G的记?br />
  
select * from tablename where column1 like '[^C]%'
  q样可以选择出column字段中首字母不是C的记?br />
脱字W(关键字:(x)
like _Q?br />  通过使用下滑U字W(_Q,可以匚wL单个字符
  
select * from tablename where column1 like 'M_crosoft' 

匚wҎ(gu)字符Q(
[ ] _ - %Q?br />  把他们都攑ֈ[]中就行了(jin)Q比如:(x)
  
select * from tablename where column1 like '%[%]%' 

匚w发音Q关键字Q?/span>SOUNDEX DIFFERENCEQ?br />  如果不知道一个名字确切的发音Q但是又多少知道一点,可以考虑使用SOUNDEX DIFFERENCE函数?br />  select * from tablename where DIFFERENCE(column1,'Laofei'>3)
  DIFFERENCEq回0
-4之间的数字,4是非常接q,0是差异非常大
  要深入了(jin)解DIFFERENCE函数的工作原理,使用SOUNDEX函数q回DIFFERENCE函数所使用的音标码
  
select column1 as column,SOUNDEX(column1) 'sound like' 

 注意Q?br />  DIFFERENCE函数比较两个字符串的W一个字母和所有的辅音字母Q该函数忽略M元音字母Q包括YQ?除非元音字母是该字符串的W一个字母?br />  使用q两个函数在where中执行效果ƈ不好Q所以尽量少使用?/span>



兵(f)城下 2006-12-18 17:48 发表评论
]]>
一个xml解析的疑?/title><link>http://m.tkk7.com/xuechen0721/archive/2006/11/24/83219.html</link><dc:creator>兵(f)城下</dc:creator><author>兵(f)城下</author><pubDate>Fri, 24 Nov 2006 04:41:00 GMT</pubDate><guid>http://m.tkk7.com/xuechen0721/archive/2006/11/24/83219.html</guid><wfw:comment>http://m.tkk7.com/xuechen0721/comments/83219.html</wfw:comment><comments>http://m.tkk7.com/xuechen0721/archive/2006/11/24/83219.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.tkk7.com/xuechen0721/comments/commentRss/83219.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xuechen0721/services/trackbacks/83219.html</trackback:ping><description><![CDATA[有这样一D代码:(x)<br />       public static Node findNode(Node node, String name)<br /> {<br />         NodeList list = node.getChildNodes();<br />         int size = list.getLength();<br />         for (int i = 0; i < size; i++)<br />         {<br />             Node node = list.item(i);<br /><font color="#ff1493">             if(node.getNodeType()!=Node.ELEMENT_NODE) <br />                   continue;</font> <br />             if (node.getNodeName().equals(name))<br />                  return node;  <br />        }<br /> }<br /><br />注意其中标红的这句代码,Z么要加这个判断?我在调试q程中发现这D代码确实有用,但ؓ(f)什么有时一L(fng)nodel构Qؓ(f)什么有时能(g)到?font color="#000000">ELEMENT_NODE type 的节点,有时却是直接跌呢?<br />      询问一些同事说Q在xmll构中如果存在非法的I格Qxml解析器也?x)把它解析成一个nodeQ但nodetype不是element而已Q是q样吗,是不是还有其他的原因Q?/font><img src ="http://m.tkk7.com/xuechen0721/aggbug/83219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xuechen0721/" target="_blank">兵(f)城下</a> 2006-11-24 12:41 <a href="http://m.tkk7.com/xuechen0721/archive/2006/11/24/83219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于文g的读写问题,路过看一下!http://m.tkk7.com/xuechen0721/archive/2006/07/16/58405.html兵(f)城下兵(f)城下Sun, 16 Jul 2006 04:14:00 GMThttp://m.tkk7.com/xuechen0721/archive/2006/07/16/58405.htmlhttp://m.tkk7.com/xuechen0721/comments/58405.htmlhttp://m.tkk7.com/xuechen0721/archive/2006/07/16/58405.html#Feedback4http://m.tkk7.com/xuechen0721/comments/commentRss/58405.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/58405.html      最q按要求写了(jin)一个classQ功能很单,只需在指定的|页代码<html>标签后加入一DtaglibQ就是一D字W串Q,我原惛_LQ可遇到一个问题:(x)
      在^常的java file 操作Ӟl常是打开一个file作ؓ(f)in,read出数据进行各U处理,最后或输出或返回到另外一个文件out中。可我现在要求实现的是在同一个file中读取ƈ且返回到同一个文件中。在建立in时Q容易:(x)BufferedReader buffReader = new BufferedReader(new FileReader(file));可怎么建立out呢QM能都指向同一文g吧?BufferedWriter buffWrite = new BufferedWriter(new FileWriter(file));
      后来我用?jin)一个折中的办法Q先在同一目录下徏立一个(f)时的文gQ例如:(x)temp.jsp),源文g和需要加入的taglib都写入,然后源文g删除Q再temp.jsp重命名。虽然功能是实现?jin),没有M问题Q但L觉怪怪的。难道java的file操作没有直接打开一个file,提供~辑功能Ҏ(gu)Q修改后直接保存?br />      一点疑问,大家看看Q不知道各位遇到q类问题如何解决Q希望大家不吝赐教!



兵(f)城下 2006-07-16 12:14 发表评论
]]>
求sun.net.ftp的api文档http://m.tkk7.com/xuechen0721/archive/2006/06/01/49772.html兵(f)城下兵(f)城下Thu, 01 Jun 2006 11:45:00 GMThttp://m.tkk7.com/xuechen0721/archive/2006/06/01/49772.htmlhttp://m.tkk7.com/xuechen0721/comments/49772.htmlhttp://m.tkk7.com/xuechen0721/archive/2006/06/01/49772.html#Feedback0http://m.tkk7.com/xuechen0721/comments/commentRss/49772.htmlhttp://m.tkk7.com/xuechen0721/services/trackbacks/49772.htmlxc81_2005@yahoo.com.cn) 
        先谢?jin)?img src ="http://m.tkk7.com/xuechen0721/aggbug/49772.html" width = "1" height = "1" />

兵(f)城下 2006-06-01 19:45 发表评论
]]>
一个关于Java Socket的问?大家看一?/title><link>http://m.tkk7.com/xuechen0721/archive/2006/04/29/44040.html</link><dc:creator>兵(f)城下</dc:creator><author>兵(f)城下</author><pubDate>Sat, 29 Apr 2006 09:05:00 GMT</pubDate><guid>http://m.tkk7.com/xuechen0721/archive/2006/04/29/44040.html</guid><wfw:comment>http://m.tkk7.com/xuechen0721/comments/44040.html</wfw:comment><comments>http://m.tkk7.com/xuechen0721/archive/2006/04/29/44040.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/xuechen0721/comments/commentRss/44040.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xuechen0721/services/trackbacks/44040.html</trackback:ping><description><![CDATA[ <p> <font color="#006400">一个关于Java Socket的问?大家看一下:(x)<br />我的目的是从client端发ZD字W串Qserver端接收后原样q回l客L(fng)?br />客户端:(x)ConnClient  服务器端ConnSerer(完整源代码附在最?</font> </p> <p> <font color="#006400">===client?==<br />Z(jin)一个out和in:(x)<br />BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));<br />   <br />PrintWriter Clientout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);</font> </p> <p> <font color="#006400">向server端输出:(x)clientOut.println("hello");  clientout.close();<br />{待服务器端q回代码片段Q?br />StringBuffer sbuf = new StringBuffer();<br />char[] buff = new char[10];<br />   <br />int iLen = in.read(buff);<br />   <br />while (iLen>0) {  <br />   sbuf.append(buff,0,iLen);<br />   if (sbuf.toString().trim().equals("hello")){<br />       System.out.println(sbuf.toString());<br />        break;<br />   }<br />    iLen = in.read(buff);<br />}</font> </p> <p> <font color="#006400"> </font> </p> <p> <br /> <font color="#006400">===server?==<br />同样Z(jin)一个in和out?br />BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));<br />  <br />PrintWriter Serverout = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);</font> </p> <p> <font color="#006400">接收client端信息和原样q回信息:<br />StringBuffer sbuf = new StringBuffer();<br />     <br />char[] buff = new char[10];<br />int iLen = in.read(buff);<br />          <br />while(iLen>0){  <br /> sbuf.append(buff,0,iLen);<br /> if (sbuf.toString().trim().equals("hello")){<br /> <br /> System.out.println("Echoing: " + sbuf.toString());<br /> serverout.println(sbuf.toString());       //此处为server端输出流,q回lclient?br /> break;<br />        }</font> </p> <p> <font color="#006400"> iLen = in.read(buff);<br />}</font> </p> <p> <br /> <font color="#006400">问题来了(jin):<br />1、如果按以上代码q行,server端可以收到client的信?但client端却收不到返回的信息。ؓ(f)什么?<br />2、后来我把client端的clientout.close()注释掉后Q一切正常,client端能收到server端返回的信息。这又ؓ(f)什么?<br />Nserver端和client端用的是一个out?Z么client端把out关掉后Qclientout.close())Qserver端就不能q回信息呢?</font> </p> <p> <font color="#006400">以我以前的理解,server端和client端徏的两个输出流应该是独立的。不?x)因为我把client端的out关掉后Qserver端out就不能q回?jin)?不?x)吧!呵呵Q?/font> </p> <p> <br /> <font color="#006400">q有一个问题:(x)server端怎么判断client端数据已l发送完毕?<br />一开始,我用clientout.print("hello"),q行后,server端显C已l连接成功但一直侦听,没有收到信息Q认为client端还没有发送完成?br />后来Q我改用clientout.println("hello"),q行后,一切正常,服务器端也收C息(helloQ?br />从上看出server的地判定是一个回车符Q不知道q样认识对不对?大家指点Q?br />l过我试验,如果client端print后,用clientout.close()也可以server端接收到信息。但却不能返回信息。也是我发C面说q的问题来由?/font> </p> <p> <font color="#006400">以上几个问题Q请大家和banq大哥多加指点Q?/font> </p> <p> <font color="#006400">源代码如下:(x)<br />client端:(x)<br />package com.socket;</font> </p> <p> <font color="#006400">import java.net.*;<br />import java.io.*;</font> </p> <p> <font color="#006400">public class ConnClient {<br />  public static void main(String[] args) throws IOException {</font> </p> <p> <font color="#006400"> I(yng)netAddress addr = InetAddress.getByName(null);<br /> <br /> System.out.println("addr = " + addr);<br /> <br /> Socket socket = new Socket(addr, 8080);<br /> //socket.setSoTimeout(5000);<br /> <br /> try {<br />   System.out.println("socket = " + socket);<br />   BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));<br />   <br />   PrintWriter clientout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);<br />   <br />   String strSend = "hello";<br />   <br />   <br />   clientout.println(strSend);<br />   //clientout.println("\r\n");<br />   //clientout.println();<br />   //clientout.close();<br />   StringBuffer sbuf = new StringBuffer();<br />   <br /> char[] buff = new char[10];<br />   <br /> int iLen = in.read(buff);<br />   <br /> while (iLen>0) {  <br />  sbuf.append(buff,0,iLen);<br />  if (sbuf.toString().trim().equals(strSend)){<br />   System.out.println(sbuf.toString());<br />      break;<br />     }<br />   iLen = in.read(buff);<br /> }<br />  <br /> }catch(Exception e){<br />  e.printStackTrace();<br /> } finally {<br />   System.out.println("closing...");<br />   socket.close();<br /> }<br /> <br />}<br />}</font> </p> <p> <br /> <font color="#006400">server端代码:(x)<br />package com.socket;<br />import java.io.*;<br />import java.net.*;</font> </p> <p> <font color="#006400">public class ConnServer {  <br />  <br />  public static final int PORT = 8080;<br />  public static void main(String[] args) throws IOException {</font> </p> <p> <font color="#006400"> ServerSocket s = new ServerSocket(PORT);<br /> System.out.println("Started: " + s);<br /> try {<br />   Socket socket = s.accept();<br />   try {<br /> System.out.println("Connection accepted: "+ socket);<br /> BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));</font> </p> <p> <font color="#006400"> PrintWriter serverout = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);<br />  <br />      StringBuffer sbuf = new StringBuffer();<br />        <br /> char[] buff = new char[10];<br /> iLen = in.read(buff);<br />          <br /> while(iLen>0){  <br /> sbuf.append(buff,0,iLen);<br /> if(sbuf.toString().trim().equals("hello")){<br /> <br /> System.out.println("Echoing: " + sbuf.toString());<br /> serverout.println(sbuf.toString());<br />        }<br />           iLen = in.read(buff);<br />}  <br />   }catch(Exception e) { e.printStackTrace();}<br />    finally {<br />   System.out.println("closing...");<br />   <br />   socket.close();<br />   }<br /> <br /> } finally {<br />   s.close();<br /> }<br />  } <br />}<br /></font> </p> <img src ="http://m.tkk7.com/xuechen0721/aggbug/44040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xuechen0721/" target="_blank">兵(f)城下</a> 2006-04-29 17:05 <a href="http://m.tkk7.com/xuechen0721/archive/2006/04/29/44040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://26cgw.com" target="_blank">ƷСƵapp</a>| <a href="http://codecampo.com" target="_blank">³Դվav</a>| <a href="http://jiujiujingpin.com" target="_blank">޹Ʒþҹ</a>| <a href="http://fennenll.com" target="_blank">aƵ߹ۿ</a>| <a href="http://av520av.com" target="_blank">Ʒһvr</a>| <a href="http://asdfghjklzxcv.com" target="_blank">aëƬѲȫ</a>| <a href="http://770144.com" target="_blank">Ůwwwһ</a>| <a href="http://yxjcgs.com" target="_blank">޻ɫַ߹ۿ</a>| <a href="http://400209.com" target="_blank">1134Ʒâ</a>| <a href="http://miyatb.com" target="_blank">޾ƷŮһ</a>| <a href="http://0595laser.com" target="_blank">˾ҹƷƵ</a>| <a href="http://rushiruhua.com" target="_blank">㽶һƵ߹ۿ</a>| <a href="http://gysysz.com" target="_blank">Ƶ˹Ʒվ </a>| <a href="http://cytanhuang.com" target="_blank">һ</a>| <a href="http://ebanyou.com" target="_blank">þþþŮۺ</a>| <a href="http://343dd.com" target="_blank">ɫʮʮɫ</a>| <a href="http://www-64000.com" target="_blank">˳ɵӰվ</a>| <a href="http://muguangmi.com" target="_blank">˳ɫ4444߹ۿ</a>| <a href="http://vvww-3499.com" target="_blank">ҹƵ</a>| <a href="http://2828228.com" target="_blank">99߹ۿ</a>| <a href="http://h7277.com" target="_blank">ѹۿaëƬ</a>| <a href="http://34jjjj.com" target="_blank">պƵһ</a>| <a href="http://yyfass.com" target="_blank">ۺ˾þôý</a>| <a href="http://laochedao.com" target="_blank">޼Ӱ</a>| <a href="http://079566.com" target="_blank">avɫ㽶һ </a>| <a href="http://scjcled.com" target="_blank">ѿһһƬ</a>| <a href="http://bjowj.com" target="_blank">ԭ1769þѲ</a>| <a href="http://mabaolu.com" target="_blank">ŮƬѹۿƵ</a>| <a href="http://51huanxin.com" target="_blank">޾ƷӰ</a>| <a href="http://xjdz8.com" target="_blank">߹ۿ</a>| <a href="http://zhhy68.com" target="_blank">һػ¼Ƶ</a>| <a href="http://chinacry.com" target="_blank">þƷѹۿ</a>| <a href="http://714747.com" target="_blank">ww4545Ļѵַ</a>| <a href="http://ajguild.com" target="_blank">ۺƵ</a>| <a href="http://gedebai.com" target="_blank">˳ɵӰվƷ</a>| <a href="http://2222jjjj.com" target="_blank">ϵйƷƷ˿</a>| <a href="http://bobostrong31.com" target="_blank">þþƷav18</a>| <a href="http://426366.com" target="_blank">þ99Ʒѹۿ</a>| <a href="http://www621f.com" target="_blank">߹ۿƵվ</a>| <a href="http://dgyinhezy.com" target="_blank">޾Ʒ벻</a>| <a href="http://0595laser.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>