- 浏览: 113216 次
最新评论
-
ribavnu:
楼主,你的clientinfo.hrl文件是什么啊?转载的别人 ...
Erlang 聊天室程序( 一) -
wenwushuangquandexia:
晕倒,谁用我号给你评论了。。。。
系统中字典表该怎么用 -
Jason_Bourne:
楼主,请问多个客户端向一个主题发送消息,服务端如何通过这个主题 ...
手机上的消息推送 -
yjl49:
wenwushuangquandexia 写道 大哥,你在讲故 ...
系统中字典表该怎么用 -
wenwushuangquandexia:
大哥,你在讲故事吗
系统中字典表该怎么用
文章列表
JCS 是JAVA 中缓存的一种实现,支持将数据缓存到内存或硬盘中,支持设置缓存对象的有效时长。使用时需要用到以下几个jar包:
commons-collections-2.1.1.jar
commons-lang.2.3.jar
commons-logging-1.0.4.jar
concurrent-1.3.2.jar
jcs-1.3.jar
slf4j-api.jar
定义实现了Serializable 接口的存储对象类:
public class UserInfo implements Serializable{
private String userna ...
之前的一篇文章中提到过OF中的同步异步问题,这里针对文章最后描述的两个缺点做些改进。
这里提供一个公共的专门用于处理S2S通信问题的IQ类S2SDataManager。
可以提供多种接口:1.阻塞等待固定时长;2.阻塞等待,并在接收到结果或超时后继续;3.发送后直接返回;4.发送后直接返回,提供回调接口。
public class S2SDataManager implements IQResultListener{
private XMPPServer server;
private RoutingTable routing;
priv ...
Event 是MySQL 5.1 以后支持的一个功能,类似于oracle 中的JOB 或 MSSQL 中的任务。就是按照指定的周期和频率运行指定语句的功能。
查看event_scheduler 是否启用:
select @@event_scheduler / show variables like '%event_scheduler%'
如果为OFF / 0 ,使用以下语句开启:
set GLOBAL event_scheduler =1
创建一个event :
create event event_myevent
on schedule every ...
/**申明一个变量保存sql语句**/
declare v_sql varchar(500);
/** 初始化v_sql **/
set v_sql ='call P_myprocedure(?)';
/** 准备要动态执行的语句 **/
set @exesql =v_sql;
/** 准备参数 **/
set @param = 100;
/** 准备执行 **/
prepare stm from @exesql;
/** 执行语句,并传入准备的参数。
execute stm using @param;
MySQL中针对不同的功能需求提供了不同的存储引擎。所谓的存储引擎也就是MySQL下特定接口的具体实现。
FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。
但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要)。
通过这个引擎可以实现类似Oracle 下DBLINK的远程数据访问功能。
使用show engines 命令查看数据库是否已支持FEDERATED引擎:
Support 的值有以下几个:
Y ...
最近在搞Openfire S2S时遇到了一个数据通信时的同步与异步问题。具体描述如下:
OF中的基本通信结构如下:
客户端与服务器的通信是同步的,服务器与服务器之间的通信却是异步的:客户端发送一个请求后就会阻塞一段时 ...
DelayQueue----一种有序队列,特点就是只有在队列中的元素到期后才能取出。
1.内存中哪些对象到了超时时间,需要从内存中清除出去。
2.服务器连接中有哪些连接很长时间未操作,需要关闭这些连接
3.任务中有哪些到了执行时间,该进行调度了。
简单的方法就是写一个线程不断去检查每一项是否到了时间,但这种方法在队列中的元素非常多的情况下会不准确或太耗费性能,用DelayQueue可完美地解决这个问题。
马上就要过年了,每次回老家都要悲催地去镇上人挤人的网吧上网。下面就拿这个做个例子:
假设镇上开了一家无限大的网吧,每人交一块钱可以上一分钟网(过年时的网吧坑爹程度差 ...
同步、异步、阻塞、非阻塞---我的理解
- 博客分类:
- 架构
同步、异步、阻塞、非阻塞,涉及到一个问题的两个层面。一个是操作operation/Thread/process 层面,另一个是kernal层面。所有的阻塞、非阻塞都在针对同步的情况下才有效。
同步与异步最大区别在于是否需要底层的响应才能执行下去。
阻塞与非阻塞的区别在于是否能立即返回响应。
一个比较形象的例子如下:
同步-阻塞:我去钓鱼,抛线之后一直站在岸上盯着鱼竿有动静后才拉杆。
同步-非阻塞:我去捕鱼,拿一个大网捞一下,有没有鱼立马可以看出来,不用等,直接再捞。
异步-阻塞:java中的异步IO,其实取这个名字与上面的例子没多大关系,实在是因为java中 ...
Openfire 开发环境搭建时容易出现Couldnotlocatehome
异常,主要由XMPPServer.java中以下代码引起:
private void initialize() FileNotFoundException{
locateOpenfire();
......
}
private void locateOpenfire() throws FileNotFoundException{
String jiveConfigName = "conf" + File.separator + &q ...
运行Openfire 后出现以下报错:
Error loading plugin: C:\Program Files\Openfire\plugins\monitoring
java.lang.NoClassDefFoundError: org/picocontainer/MutablePicoContainer
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at ja ...
发送给其它服务器的消息由@domain 部分区分,在进入到服务器路由后在RoutingTableImpl.routePacket(Packet packet) 中与发送给本地服务器的消息分离。
public void routePacket(JID jid,......){
boolean routed = false;
if(serverName.equals(jid.getDomain())){
routed = routeToLocalDomain(jid,packet,fromServer);
}
else if(jid.getDomai ...
Openfire中Server to Server 连接默认使用5269 端口,在管理员后台的Server-->Server Settings --> Server to Server 页面有相应的配置项。
首先看Service Enable 项:
在用户选择了 Enabled 填写监听端口 提交后在jsp页面里调用的是ConnectionManager相 ...
erlang socket
- 博客分类:
- Erlang
目标是验证“将客户端连接的socket绑定到一个gen_server后,发送到socket 的消息将由gen_server的handle_info/2 处理”。
接收客户端socket 连接的server:
-module("myserver").
-export([start/2],[stop/0]).
start()->
%%监听端口
{ok,List ...
用GridBagLayout可实现复杂可控的布局。
以一个输入框为例:
final JTextField username = new JTextField();
final JTextField password = new JTextField();
JPanel regist = new JPanel();
regist.setLayout(new GridBagLayout());
regist.add(new JLabel("username:"),
...
霸哥的话:小型的项目,你都搞明白了,就很猛了!
启动过程:
make run1
run1在MakeFile中的定义:
run1: compile
erl $(LOCAL_OPTS) -name $(NODE) -s janus start
janus.erl内容:
start() ->
start([]).
start([]) ->
start(8081);
start([Port])
when is_atom(Port) ->
start(list_to_intege ...