|
|
用户名:jacksonyang 笔名:土豆 地区: 天津-天津 行业:硕士 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
《咬文嚼字》之请他们给大家拜年
DBMS_PIPE用法
dbms_pipe是在两个回话之间传递消息的服务程序。可以通过隐式和显示的定义管道。
工作原理
发送
每一个回话都有一个本地消息缓存(local message buffer),发送方首先通过函数PACK_MESSAGE函数将要发送的内容发送到本地消息缓存中。当调用函数SEND_MESSAGE时(调用改函数时候会指定管道名称),改函数将本地消息缓存中所有的内容全部发送出去。同时缓存中内容被清空了。打包函数会为每一个消息增加4字节的头,一个字节表示数据类型,两个字节表示消息长度,还有一个字节表示消息的结束。
接收
先调用函数RECEIVE_MESSAGE进行接收。将管道中的数据放到了本地消息缓存中,然后用UNPACK_MESSAGE函数解包。
我理解就是在管道中存放着一个个的包,每一个包都有包头,由函数PACK_MESSAGE完成,接受时候也是一个一个的接受,一个包一个包的解。
一个例子
/* Formatted on 2008/07/04 14:43 (Formatter Plus v4.8.7) */
DECLARE
i INTEGER;
j INTEGER;
BEGIN
FOR j IN 1 .. 10
LOOP
DBMS_PIPE.pack_message ('wdz' || j);
END LOOP;
DBMS_PIPE.pack_message ('end');
j:=DBMS_PIPE.send_message ('a');
i := DBMS_PIPE.send_message ('apple');
IF i = 0
THEN
DBMS_OUTPUT.put_line ('ok--send OK!');
END IF;
END;
/
/* Formatted on 2008/07/04 14:42 (Formatter Plus v4.8.7) */
DECLARE
i INTEGER;
ch VARCHAR2 (200);
flag BOOLEAN := FALSE;
BEGIN
i := DBMS_PIPE.receive_message ('apple', 100);
IF (i = 0)
THEN
DBMS_OUTPUT.put_line ('ok---prepeare recive message');
ELSE
flag := TRUE;
END IF;
WHILE (NOT flag)
LOOP
DBMS_PIPE.unpack_message (ch);
IF (UPPER (ch) = 'END')
THEN
flag := TRUE;
DBMS_OUTPUT.put_line ('recive OK');
ELSE
DBMS_OUTPUT.put_line ('message is =' || ch);
END IF;
END LOOP;
END;
/*
亲历地震
辽阳
辽阳,据说一直是东北重镇,具有2400年历史的古城。再距离沈阳南方60多公里的地方。一个小城市,08年初我因为工作来到这里一个星期。
第一次冬天到东北来,幸亏不是很冷,不过东北就是东北,来了一个星期就下了两场雪。和刚刚上一个星期的广州相比,单伦天气还是喜欢这里,外面再冷,回到屋里都很暖和,不像在广州,回到屋里还是冷的要死。辽阳这个地方还是太小,不太喜欢太小的地方,什么都没有,想弄点特产都找不到,二人转倒是有意思,无聊的时候打发时间用。
走了那么多地方,能给我留下印象的地方越来越少了,麻木了……
女足世界杯
HTTP协议
读研时候学习了TCPIP,后来毕业后就没有再从事网络方面的工作,现在想学习一下HTTP,这里记录一下心得。
使用工具 NetAnalyzer
学习资料 RFC2616
景德镇
景德镇是天下闻名的瓷都,他自己也是以此为骄傲的,这里连路灯的灯杆都是瓷做的。但是我却不喜欢这个地方,这个地方商业气息太过浓郁了,到处都是卖瓷器的地方。而且本人对这个也不是很在行,这些陶瓷做的东西究竟能怎么欣赏我是在无法分辨,对于景德镇还是让他留在脑子里面当一个专有名词吧。