- 浏览: 572661 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (253)
- java (84)
- python (22)
- 设计模式 (12)
- 数据结构和算法 (7)
- ibatis (1)
- 数据挖掘 (2)
- 集体智慧读书笔记 (1)
- ubuntu (4)
- lucene (11)
- 算法 第4版 (11)
- apache mina (16)
- memcached (1)
- android (9)
- netty (6)
- mongodb (2)
- maven (2)
- openfire (2)
- 服务端 (21)
- 产品 (0)
- apache (1)
- 选择 (2)
- 构架WEB高性能站点 (7)
- redis (8)
- 诗词歌赋 (3)
- 源代码阅读 (5)
- 前端 (1)
- javascript (3)
- guice (1)
- 分布式 (5)
- 总结-2014 (4)
- jvm (1)
最新评论
-
liu_jiaqiang:
写的挺好
maven多项目管理 -
H972900846:
我想知道哪里整的,如果是自己写的,那有点牛呀如果是抄的请说明出 ...
SSL身份认证原理 -
春天好:
博主写的很好,赞一个,多谢分享 *(^-^*)分享一个免费好用 ...
定向网站爬虫---初级例子 -
fenglingabc:
经过测试,parameterType="java.u ...
mybatis获取主键和存储过程返回值 -
jyghqpkl:
[u][/u] ...
Cookie的secure 属性
1:接触多了RMI,以前感觉分布式很神奇,其实现在看看感觉就是 把一个大的系统分开很多独立的子系统,主要是解决子系统间相互通信的问题。
在java中 : 实现的方法有: RMI, SPEING RMI等
这个是基于 远程服务
2:基于消息的实现。 java io 或者 java nio 或 apache mina服务器 管理socket等。
最近接触到XMPP协议 ,实现推送的 , 在研究 androidpn代码, 看到 有大神 直接打包在tomcat下部署了的,忘了在那个地方了。
下面说说,xmpp的JID的。
public class JID implements Comparable<JID>, Serializable { private static final long serialVersionUID = 8135170608402192877L; private static final ConcurrentMap<String, ValueWrapper<String>> NODEPREP_CACHE = ConcurrentLinkedHashMap.create(ConcurrentLinkedHashMap.EvictionPolicy.SECOND_CHANCE, 10000); private static final ConcurrentMap<String, ValueWrapper<String>> DOMAINPREP_CACHE = ConcurrentLinkedHashMap.create(ConcurrentLinkedHashMap.EvictionPolicy.SECOND_CHANCE, 500); private static final ConcurrentMap<String, ValueWrapper<String>> RESOURCEPREP_CACHE = ConcurrentLinkedHashMap.create(ConcurrentLinkedHashMap.EvictionPolicy.SECOND_CHANCE, 10000); private final String node; private final String domain; private final String resource; private final String cachedFullJID; private final String cachedBareJID; public JID(String node, String domain, String resource, boolean skipStringprep) { if (domain == null) { throw new NullPointerException("Domain cannot be null"); } if (skipStringprep) { this.node = node; this.domain = domain; this.resource = resource; } else { if ((node != null) && (node.equals(""))) { node = null; } if ((resource != null) && (resource.equals(""))) { resource = null; } try { this.node = nodeprep(node); this.domain = domainprep(domain); this.resource = resourceprep(resource); } catch (Exception e) { StringBuilder buf = new StringBuilder(); if (node != null) { buf.append(node).append("@"); } buf.append(domain); if (resource != null) { buf.append("/").append(resource); } throw new IllegalArgumentException("Illegal JID: " + buf.toString(), e); } } StringBuilder buf = new StringBuilder(40); if (this.node != null) { buf.append(this.node).append("@"); } buf.append(this.domain); this.cachedBareJID = buf.toString(); if (this.resource != null) { buf.append("/").append(this.resource); this.cachedFullJID = buf.toString(); } else { this.cachedFullJID = this.cachedBareJID; } } static String[] getParts(String jid) { String[] parts = new String[3]; String node = null; if (jid == null) { return parts; } int atIndex = jid.indexOf("@"); int slashIndex = jid.indexOf("/"); if (atIndex > 0) { node = jid.substring(0, atIndex); } if (atIndex + 1 > jid.length()) throw new IllegalArgumentException("JID with empty domain not valid"); String domain; String domain; if (atIndex < 0) { String domain; if (slashIndex > 0) { domain = jid.substring(0, slashIndex); } else domain = jid; } else { String domain; if (slashIndex > 0) { domain = jid.substring(atIndex + 1, slashIndex); } else domain = jid.substring(atIndex + 1); } String resource; String resource; if ((slashIndex + 1 > jid.length()) || (slashIndex < 0)) { resource = null; } else { resource = jid.substring(slashIndex + 1); } parts[0] = node; parts[1] = domain; parts[2] = resource; return parts; }
这个是tinder-1.2.1.jar包中的JID实现。
下面看 xmpp中JID的定义:
每个JID 由三部分组成:节点、域和资源。域部分总是必需的,但其他两部分是可选的, 具体取决于它们所处的具体环境。 域是实体(服务器、组件或插件)的可解析DNS 名称。仅由域组成的JID 是有效地址,它表 示服务器地址。指向域的节将由服务器自身处理,并可能被路由到某个组件或插件。 本地部分通常会识别域中的一个特定用户。它出现在JID 的开头并位于域之前,它与JID 剩余部分之间通过@字符隔开,就像是电子邮件地址的节点部分。本地部分还可以用来识别
androidpn中:
sessionManage类中:
public ClientSession getSession(String username) { // return getSession(new JID(username, serverName, null, true)); return getSession(new JID(username, serverName, RESOURCE_NAME, true)); }
private static final String RESOURCE_NAME = "AndroidpnClient";
发表评论
-
protobuf-dt插件
2015-03-24 13:16 1378protobuf-dt: 安装前先安装xtext 可 ... -
java循环标签
2015-03-20 16:13 566今天看 源码的时候 看到 一个小语法 参考: ... -
java程序性能优化 --阅读
2014-10-14 17:56 678闲着,真实无聊; 发现一本好书《java程序性能优 ... -
jetty invalid entry CRC问题
2014-08-04 11:42 15451: http://stackoverflow.com/qu ... -
guice注入
2014-05-24 12:13 9407Google Guice3.0: http://code. ... -
eclipse快捷键
2014-05-21 16:01 5371: clrl+alt+r : 最常用,快速定位到文件 2 ... -
java clone
2014-05-16 17:04 492转:http://www.blogjava.net/ora ... -
ThreadLocal
2014-05-13 18:39 735简单介绍一下ThreadLocal的原理:1.Thread ... -
hession
2014-04-30 12:33 662一、首先先说Hessian是什么? Hessian:he ... -
冒泡和快速排序java
2014-04-19 18:01 7171: 冒泡最简单一种: /** * 算法效率o ... -
java生产者和消费者模型三种实现
2014-04-19 17:51 13381: 生产者和消费者的问题,生产者生产产品到缓冲区,消费者 ... -
单例模式
2014-03-14 16:06 716今天看到群里,关于单例模式的多线程下的安全问题: 1:最 ... -
freemarker的使用
2014-02-28 16:42 8021:freemarker eclipse插件安装方法:ht ... -
java 引用类型和内存泄露
2013-11-21 17:48 555http://blog.csdn.net/luoshenfu ... -
java泛型
2013-11-07 13:52 403Class<T>在实例化的时候,T要替换成具体 ... -
filter执行顺序
2013-10-12 11:16 1099多个筛选器的运行顺序取决于下列规则: 将 filt ... -
spring rmi远程调用
2013-09-09 11:48 11471:以前用jmi发布服务,实现分布式的一种方式,远程调用, ... -
spring mvc返回204状态码
2013-07-24 09:27 38851:204是没内容 不跳转的 代表请求成功的意思 ... -
editplus去掉多余空行
2013-07-19 21:05 6981: ^[ \t]*\n 用正则表达式替换 -
spring3 aop 使用详细
2013-06-06 11:10 01:目标:拦截所有的@Controller中的方法 ...
相关推荐
erlang分布式 XMPP Seerlang分布式 XMPP Serverrvererlang分布式 XMPP Servererlang分布式 XMPP Server
xmpp协议和xmpp扩展协议,chm格式
XMPP协议中文参考指南
不可多的XMPP协议中文帮助文档,大家可要下来保存哦!
一个很好的基于XMPP协议通信的源码例子,之前在网上下载了很多基于XMpp协议的例子都不好使,经自己改动后能正常通信,VS2010
xmpp协议 XMPP协议工具openfire_3_10_3。
基于xmpp协议的一个demo
xmpp协议可以用于聊天,内附中文文档,学习完就可以自己搭建服务器做android客户端的聊天程序了
XMPP协议的核心部分,中文名称可扩展消息出席协议
xmpp协议介绍PPT,详细介绍了XMPP核心协议方方面面
这是一个基于Java的Android即时通讯XMPP设计,使用Java语言开发,包含827个文件。主要文件类型包括397个PNG图片文件、...该项目是一个Android即时通讯应用,基于XMPP协议实现。适合用于个人学习和实践Java的开发技术。
XMPP_协议介绍,手机客户端需要实现即时通信功能,在通信协议上采用开放的Jabber(XMPP)协议,整个XMPP协议最为核心也是最为复杂的部分是Subscription的运行机制,抓取了一下相关的通信协议报文,供开发时候参考。
类似QQ的xmpp协议聊天 基本功能都有了
XMPP server:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。 功能: 1.会话管理器:负责客户端会话认证,在线状态,用户联系表等 2.数据存储器(XDB):连接数据库系统,保持用户信息、通信日志等 3....
一个比较全面面标准的XMPP协议文档,里面有具体的协议的说明及使用
xmpp客户端协议实现源代码
XMPP协议分析,xmpp是即时通讯IM中比较普遍的应用
xmpp协议介绍,不错的文档,值得学习
通过绑定你的gmail邮箱 既可以通过xmpp协议即时传输数据