首页 文章 精选 留言 我的

精选列表

搜索[Unicode通信],共10003篇文章
优秀的个人博客,低调大师

基于jabber(XMPP)架设即时通信服务

Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。 XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的技术来自于Jabber,其实它是 Jabber的核心协定,所以XMPP有时被误称为Jabber协议。Jabber是一个基于XMPP协议的IM应用,除Jabber之外,XMPP还支持很多应用。 下面就是如何架设内部即时通讯服务的步骤: 第一步:安装Jabber服务器软件 Jabber服务软件有很多,具体可以参考jabber官方网站的列表:其中最为方便安装搭建的无疑是Openfire(Wildfire),一款基于GPL协议开源软件,Openfire有linux、windows和MAC的不同版本,软件需要java环境支持,不过软件本身自带了环境包,你可以根据你的需要下载不同的版本。 下载地址: 最新版本:Openfire 3.3.2 1、Windows版本安装方法: 下载:openfire_3_3_2.exe带java环境版本 安装:直接运行安装文件,程序默认安装至c:"Program Files"Openfire 运行:"bin"openfire.exe 第二步:配置jabber服务器 Openfire(Wildfire)支持完全的web安装,如果你在本地按安装只需要在浏览器中输入(远程服务器为http://你的服务器地址:9090)即可开始即时通讯服务器配置。 (1)语言选择:中文简体 (2)服务期设置:选择域及端口,建议默认 (3)数据库设置:根据需要,这里选“标准数据库” (4)标准数据库设置:选择MySQL,数据库URL填入你的数据库地址,端口和数据库名称(请自行创建),用户名密码填入你的mysql的帐号密码,其他更具需要选择填写。继续之后会在你的mysql中创建表并初始化。 (5)特性设置:如果你不打算用LDAP,保留默认 (6)管理员帐户设置:填入系统管理员信息 7)安装完成 至此,Openfire安装完毕。你可以继续登录到管理控制台,进行更为详细的设置。 第三步:Jabber客户端安装配置 支 建议使用Spark,因为Spark和Openfire能够很好的相互支持,可说黄金组合。 (1)下载for windows的版本,安装比较简单。 (2)选择高级选项:服务器填入你的服务器地址,端口为5222 (3)注册一个新帐号:服务器参照前文填写 4)注册成功后,开始登录。 现在你就可以和局域网内其拥有jabber帐号的用户通讯了 第四步:Jabber连接与MSN、ICQ等IM通讯 Jabber最有优势的就是其通 信协议,可以和多种即时通讯对接。比如有第三方插件,能让jabber用户和MSN 、Yahoo Messager、ICQ等IM用户相互通讯。因为Google遵从jabber协议,并且Google已经将Gtalk的服务器开放给了其它的 Jabber服务器。所以PSI、Giam等Jabber客户端软件支持GTalk用户登陆。 使用Openfire+Spark的组合也可以实现这个功能,下面具体介绍 (1)下载Openfire网关插件IM Gateway,下载地址: 下载一个名为gateway.jar的文件,该文件为Openfire的插件,Openfire通过这个插件实现与其他IM的通讯。 (2)安装gateway Gateway的安装非常简单,你只需要把gateway.ja拷贝到openfire/plugins目录下,重启Openfire服务,即可安装成功。 (3)配置gatway 安装成功后,打开Openfire的后台管理(例如:),即可看到gateway的安装选项(目前没有中文版),如图: 在你需要激活的服务上打勾即可。 (4)重新用Spark登录Openfire,你会发现你的Spark多了一些选项。填入你的msn帐号和密码,就可登录MSN了。 本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/07/15/1243510.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

关于交换机网络通信故障排除

思科的catalyst交换机一般不容易产生故障,一但产生故障,对于CCNA认证标准的学员通常都不太好检测和排除,在本小节将总结在交换机使用过程中常出现的一些小故障,以帮助学员通过认证并适应简单的工作环境。 关于物理层线路连接的故障: 物理层线路连接是网络正常使用的提前,不得不指出,很多时候所谓的网络故障是因为物理层线路接连所导致,比如:连接相应桌面计算机的双绞线连接了错误的交换机接口、RJ45连接头松脱、没有连接物理线缆等。在这里需要特别提出的是思科的交换机连接交换机使用交叉双绞线、交换机与路由器或者计算机相连使用直通双绞线。如果您需要交换机在某个接口上进行自适应介质接口,就必须在相关的接口模式下启动auto-MDIX指令,auto-MDIX的全称叫做automatic medium-dependent interface crossover自动介质接口交叉,当启动这个功能后,无论接口连接的是哪种类型的线缆,交换机都能自动调节该接口使其保持正常的工作。启动auto-MDIX有一个要求:该接口必须能自动协商速率与双工模式。 关于双工模式的故障: 双式模式不匹配可能会产生相关的故障。以本书出版的时间为界线,现今网络市场上几乎所有的设备都支持全双工模式,当然除了传统的集线器(HUB)设备外,应该让所有的网络设备处于全双式的模式下。默认情况下,思科建议将交换机的接口配置成自动协商速度与双工模式,这样做的理由是:如果发生一个半双工的设备去连接思科的交换机,那么,思科的交换机将把自己的全双工降级成半双工模式以适应该设备的运行,如果管理员强制要求交换机接口工作在全双工模式下,将产生接口错误。排除的依据是使用show interfaces fastEthernet 0/1 counters errors查看接口上的错误。如图14.27所示。 关于接口出错的故障: 交换机的接口出错通常会导致大量的数据帧,比如:当用户发现基于TCP的应用变得非常缓慢时,从表面看上去TCP的应用变慢是乎与交换机接口故障无关,但是进一步思考,TCP变慢的更多原因是由于TCP慢启动所致,在TCP慢启动的状态下TCP的滑动窗口尺寸将变小,而这种现象往往是交换机丢包所致,在这种状况下,基于UDP的应用就更可怕,因为UDP根本不会重传,所以网络质量将严重下降。所以在排除这种故障时,我们需要知道,交换机为什么丢包,这往往与交换机的接口错误有关,必须查看交换机接口的错误统计消息,关于交换机接口的错误统计消息,可以通过show interface x/y counters errors来得到如上图14.27所示,现在来理解每个错误统计器的意义: nAlign-Err(对齐错误):如果数据帧不是以偶数个八位组结束就会出现对齐错误,指示是物理层差错,一般是由于布线、交换机接口故障所引发。 nFCS-Err(帧校验错误):帧校验错误,通常也发生在物理层,并伴随Align-Err现象。 nXmit-Err(发送错误):指示交换机的接口发送缓存溢出,这通常是入站和出站速率不匹配所造成的。 nRcv-Err(接收错误):指示交换机的接口接收缓存溢出,这通常是交换机的背板发生拥塞,导致接收缓存被堆满。在很多时候接收错误也暗示了双工模式不匹配。 nUnderSize(超短帧):指示校验和有效,但是帧尺寸小于64字节,这表示连接到该接口的主机正在发送无效的数据帧尺寸。 nSingle-Col(单一冲突):指示在该接口成功发送数据帧之前,产生了一次冲突时会发生单一冲突错误,产生这种错误的原因是链路的使用率过高或者双工不匹配。 nMulti-Col(多次冲突):指示在该接口成功发送数据帧之前,产生了多次冲突时会发生多次冲突错误,产生这种错误的原因是链路的使用率过高或者双工不匹配。 nLate-Col(后期冲突):指示转发数据帧以后,才检测到的冲突,产生这种错误的原因是物理介质(比如:线缆)过长、或者双工不匹配。 nExcess-Col(过载冲突):当数据帧连续遇到16次冲突后会被丢弃,此时就会出现过载冲突错误,产生这种错误的主要原因是链路的使用率过高、双工不匹配、网络中的设备特别是半双工设备太多。 nCarri-Sen(载波侦听):指示该接口工作在半双工状态,根据CSMA/CD的工作原理,在半双工状态下发送数据时,需要进行冲突检测这将增加carri-sen计数器,在全双工的模式下是不使用CSMA/CD。 nRunts(残帧):帧的尺寸小于64个字节,而且CRC错误,出现残帧的错误一般是由物理层故障或者双工模式不匹配所导致的。 nGiants(超长帧):帧的尺寸大于1518个字节,通常出现超长帧错误是主机NIC故障所导致。 关于交换机CPU的使用率过高的故障: 如图14.28所示的交换机架构,通常交换机的架构由两个层面组成:一个控制层面、一个转发层面。控制层面负责运行交换机的操作系统,STP、路由协议、维护路由表、执行ACL等,控制层面包括交换机的CPU和内存。转发层面包括交换机的转发逻辑和背板,交换机的转发逻辑是交换机用于做出转发决定的硬件,该硬件负责重写数据帧头;而交换机的背板负责物理连接到交换机的端口,它依赖于交换机的体系统架构,数据帧从交换机的入站接口进入,然后转发给交换机的背板,最后通过出站接口转发数据帧。注意在这个过程中控制平面并不直接参与数据帧的转发操作。所以在交换机正常工作的情况下,即便是流量转发的高峰期,交换机的CPU占用率也应该很低,因为它不直接参加流量转发。 图14.28交换机的架构 虽然控制层面不直接参与流量转发,但是由于转发层面中的转发逻辑却来自于控制层面,因为数据帧思转发与控制层面还是存在一定的间接关系的,这样的话,如果控制层面出现持续性的高负载,比如CPU占用率过高,这将影响交换机转发数据的速率。所以从交换机的架构来讲,控制层面不会影响交换机的性能,但是在故障排除时还必须考虑控制层面的因素。 交换机的转发逻辑以一个叫做TCAM的专用内存体现,TCAM与交换机的CEF功能相结合,数据转发的速度将非常快,但是一旦转发逻辑故障,比如:TCAM内存溢出,转发逻辑将无法转发流量,此时将由交换机的CPU来完成转发流量,这将增加交换机CPU的开销,转发能力也会被降低。或者换一句话来讲,如果交换机的CPU占用率过高,这表示交换机已经没有使用转发逻辑转发数据帧,需要及时排查故障。 本文转自 kingsir827 51CTO博客,原文链接:http://blog.51cto.com/7658423/1371766,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android各组件/控件间通信利器之EventBus

实际项目开发过程中,经常遇到如下场景:不同的应用程序组件的控件间具有一定的相互关联性,其中用户对后者进行的某种操作会引起前者的相应改变。举一个具体的场景:以糗事百科为例,在糗事列表页和详情页页,对于每个糗事而言,布局基本一致,在详情页点击了个赞,赞的数量增加,同时赞的图标发生了变化,此时返回到列表页,此糗事上的赞图标以及数量与刚刚详情页的需要保持一致。在举一个例子,对于多个底部导航tab下的资讯类阅读app,在咨询详情页点击了收藏,然后收藏成功,此时回到底部tab中的个人中心,假如个人中心中有我的收藏,同时后面显示的是收藏数量,此时此收藏数量需要同于于刚刚用户所进行的收藏/取消收藏而即时更改数字。凡此种种,类似需求场景非常常见。 有时候,当此类需求相对简单时,通过接口以实现回调等方式可以完成,但是当不同组件/控件之间的关系纷繁复杂时,基于接口的方案不仅使得代码非常繁琐,同时是的程序逻辑很混乱,基于此,EventBus,为此类需求的实现提供了非常方便的方案。 网上已经有不少EventBus的使用介绍,在此简单介绍下完整的使用流程。 1. 首先定义事件基类(其实不定义也可以,定义后的好处在于在同一个回调函数中直接依据不同的子类事件类型可以直接继续逻辑上的处理,代码和逻辑更加简洁清晰) 1 public class BaseEvent { 2 3 4 } 2. 定义具体的事件类型(以上述收藏事件为例) 1 public class FavorEvent extends BaseEvent { 2 3 private int did; 4 5 public FavorEvent() { 6 7 } 8 9 public FavorEvent(int did) { 10 this.did = did; 11 } 12 13 public int getDid() { 14 return did; 15 } 16 17 public void setDid(int did) { 18 this.did = did; 19 } 20 21 } 3. 在需要监听此收藏事件的地方向EventBus注册事件监听器 1 EventBus.getDefault().register(this); 4. 当需要取消注册事件监听器时 EventBus.getDefault().unregister(this); 注:Android中,当遇到如EventBus中的register时,一般的,相应都会有unregister逻辑。且经常register与unregister逻辑相互对应,处在如Activity等组件的不同生命周期中。这是因为EventBus(其他也类似)在注册时由于是采用硬引用,存在潜在的内存泄露问题,而在相应生命周期中(如onDestroy)取消注册,即可消除可能潜在的内存泄露问题。 5. 当事件发生时,需要通知相应事件监听器进行相应逻辑处理 1 // 告知EventBus进行了收藏操作,让其通知相关感兴趣方(主要的是通知个人中心页面改变我的收藏数量) 2 EventBus.getDefault().post(new FavorEvent()); 6. 其他组件/监听器具体事件逻辑 1 public void onEvent(BaseEvent event) { 2 // 接收收藏事件通知,同步处理收藏数字 3 if (event instanceof FavorEvent) { 4 // 即时更新收藏的数量(从sqlite中取得收藏数量) 5 updateFavorNum(); 6 } else if(..){ 7 ... 8 } 9 } 整个的使用流程主要也就这么多了,其中,关于子线程和UI线程之间等亦可进行类似事件通知,网上此类资料很多,不再赘述了。 --------------------------------------------------------------------------------- 笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢! 分类: Android 本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/p/4041455.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Unicode与UTF-8深度解析:字符集、编码方案、GB18030标准与模板填充规则的工程全景

在人类文明的数字化进程中,没有任何一项技术比“文字编码”更为基础,也更为隐秘。当用户在键盘上敲击按键、在浏览器中浏览网页、在即时通讯软件中发送消息时,其背后是一场跨越半个多世纪的宏大工程——将人类数千年来创造的万千符号,精确地映射为计算机能够理解、存储与传输的0和1序列。这不仅仅是一个计算机科学问题,更是一个涉及语言学、文化传承、国际标准博弈乃至哲学认识论的复杂系统性工程。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册