看了很多线程的问题,也做了很多,可就是搞不懂它。
http://lishuaishuai.iteye.com/blog/1157896
本文介绍在XMPP通信中最核心的三个XML节点.这些节点有自己的作用和目标,通过组织不同的节点,就能达到我们各种各样的通信目的。
首先我们来看一段XMPP流。
<stream:stream>
<iq type='get'><query xmlns='jabber:iq:roster'/></iq>
<presence/>
<message to='william_duan@jabber.org' from='test_account@jabber.org' type='chat'><body>Hello</body></message>
<presence type='unavailable'/>
</stream:stream>
在上面的例子中,我们可以看到一些XMPP节点,包括<iq>,<message>以及<presence>。接下来就对这些节点做一个大致的了解。
节点的共通属性
1.1 from
表示一个发送节点,在送出去的节点中一般来说不推荐设定,服务器会自动设定正确的值,如果你设定了不正确的值,服务器将会拒收你的节点信息。
如果在客户端到服务器端的通信中接收的节点中没有本属性,会被默认解释为信息是由服务器发出的。
如果在服务器到服务器的通信中接收的节点中没有本属性,则会被解释为一个error.
1.2 to
表示一个接收节点。
如果在客户端到服务器端的通信中没有设置本属性,服务器会默认解释为信息是发给自己的。
1.3 type
指定节点的类型(<presence>,<message>,<iq>).每种节点都会有几种可能的设定值,这些在以后会慢慢的涉及到。
所有的节点都会有一个error设定值,,表明这个节点是一个error回应,对这样的节点信息不需要进行回应。
1.4 id
表示一个特定的请求。在<iq>节中,这个属性是必须要指定的,但是在其他两个节点中是一个可选属性。
String类在我们的面试中是一个经常被考到的考点,尤其是其中的方法也会经常被问到,不过之前一直都没有对其产生重视,现在就总结下我在写程序中用到的几个函数:
String mm="abcdefr"; mm=mm.replaceFirst("bc", "hello");
上面输出的mm的值为ahellodefr
其中replaceFirst()方法说明如下,第一个字符串是正则表达式,
replaceFirst(String regex, String replacement) 方法
使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
String test1="my i speak to you. you are the person that i want to speak"; test1=test1.replaceAll("you", "nancy");
上面输出的test1 的值为my i speak to nancy. nancy are the person that i want to speak
其中replaceAll方法说明如下,第一个字符串是正则表达式,
replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String test1="my i speak to you. you are the person that i want to speak"; test1=test1.replace("you", "nancy");
上面输出的test1的值和replaceAll方法的结果一样,不同的是其参数类型和replaceAll不一样。
其中replace方法说明如下:
replace(CharSequence target, CharSequence replacement)
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
其中CharSequence 类型是用一个接口类型,它在String类中实现
String abc="Did you know that %NOUN% is %ADJECTIVE%?"; String[] words = abc.split("[^\\w]"); for(int i=0;i<words.length;i++) System.out.println(words[i]);
上面的输出结果为:
Did
you
know
that
NOUN
is
ADJECTIVE
具体解释如下:
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 \W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
split(String regex)
根据给定正则表达式的匹配拆分此字符串。