NO Sql 入门到精通
《NoSQL数据库入门》详细地介绍了nosql数据库 非关系型数据库 的种类 用途以及使用方法 并对memcached tokyotyrant redis mongodb这4种代表性的nosql数据库的特征 适用范围 实现代码进行了深入探讨 并比较了它们的性能
第1章 nosql数据库的基础知识 1
1 1 关系型数据库和nosql数据库 2
1 1 1 什么是nosql 2
1 1 2 关系型数据库简史 2
1 1 3 数据库的分类 3
1 1 4 关系型数据库的优势 5
1 1 5 关系型数据库的不足 5
1 1 6 nosql数据库 9
1 2 nosql数据库是什么 12
1 2 1 键值存储 13
1 2 2 面向文档的数据库 14
1 2 3 面向列的数据库 14
1 3 如何导入nosql数据库 16
1 3 1 始终只是其中一种选择 16
1 3 2 在何种程度上信赖它 18
第2章 数据库的种类和特征 19
2 1 memcached 临时性键值存储 20
2 1 1 什么是memcached 20
2 1 2 为什么要使用memcached 20
2 1 3 特征和用例 21
2 1 4 安装步骤 27
2 1 5 动作确认 29
2 1 6 各种开发语言需要用到的程序库 36
2 1 7 相关工具 37
2 2 tokyo tyrant 永久性键值存储 44
2 2 1 什么是tokyo tyrant 44
2 2 2 为什么要使用tokyo tyrant 44
2 2 3 特征和用例 44
2 2 4 安装步骤 48">《NoSQL数据库入门》详细地介绍了nosql数据库 非关系型数据库 的种类 用途以及使用方法 并对memcached tokyotyrant redis mongodb这4种代表性的nosql数据库的特征 适用范围 实现代码进行了深入探讨 并比较了它们的性能
第 [更多]
javascript操作cookie33
javascript操作cookie
/**
* Read the JavaScript cookies tutorial at:
* [url]http://www.netspade.com/articles/javascript/cookies.xml[/url]
*/
/**
* Sets a Cookie with the given name and value.
*
* name Name of the cookie
* value Value of the cookie
* [expires] Expiration date of the cookie (default: end of current session)
* [path] Path where the cookie is valid (default: path of calling document)
* [domain] Domain where the cookie is valid
* (default: domain of calling document)
* [secure] Boolean value indicating if the cookie transmission requires a
* secure transmission
*/
function setCookie(name, value, expires, path, domain, secure)
{
[removed]= name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
/**
* Gets the value of the specified cookie.
*
* name Name of the desired cookie.
*
* Returns a string containing value of specified cookie,
* or null if cookie does not exist.
*/
function getCookie(name)
{
var dc = [removed];
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
}
var end = [removed].indexOf(";", begin);
if (end == -1)
{
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
/**
* Deletes the specified cookie.
*
* name name of the cookie
* [path] path of the cookie (must be same as path used to create cookie)
* [domain] domain of the cookie (must be same as domain used to create cookie)
*/
function deleteCookie(name, path, domain)
{
if (getCookie(name))
{
[removed] = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}
--------------------------------------------------------------------------------
function setCookies(name,value)
{
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days*24*60*60*1000);
[removed] = name + "="+ escape(value) +";expires="+ exp.toGMTString();
}
function getCookies(name)
{
var arr = [removed].match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}
function delCookies(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) [removed]=name +"="+cval+";expires="+exp.toGMTString();
}
--------------------------------------------------------------------------------
function getCookie(name)
{
var dc = [removed];
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
}
var end = [removed].indexOf(";", begin);
if (end == -1)
{
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
这个应该不行吧.
=======================================
//另一个读取COOKIE的方法
function GetCookieData(sL)
{
var sRet="";
var sC=""+[removed];
if(sC.length>0)
{
var aC=sC.split(";",100);
var iC=aC.length;
for(var i=0;i<iC;i++)
{
if(aC[i].indexOf(sL+"=")!=-1)
{
var aRet=aC[i].split("=");
sRet=unescape(aRet[1]);
break;
}
}
}
return sRet;
}
javascript操作cookie222
javascript操作cookie
/**
* Read the JavaScript cookies tutorial at:
* [url]http://www.netspade.com/articles/javascript/cookies.xml[/url]
*/
/**
* Sets a Cookie with the given name and value.
*
* name Name of the cookie
* value Value of the cookie
* [expires] Expiration date of the cookie (default: end of current session)
* [path] Path where the cookie is valid (default: path of calling document)
* [domain] Domain where the cookie is valid
* (default: domain of calling document)
* [secure] Boolean value indicating if the cookie transmission requires a
* secure transmission
*/
function setCookie(name, value, expires, path, domain, secure)
{
[removed]= name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
/**
* Gets the value of the specified cookie.
*
* name Name of the desired cookie.
*
* Returns a string containing value of specified cookie,
* or null if cookie does not exist.
*/
function getCookie(name)
{
var dc = [removed];
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
}
var end = [removed].indexOf(";", begin);
if (end == -1)
{
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
/**
* Deletes the specified cookie.
*
* name name of the cookie
* [path] path of the cookie (must be same as path used to create cookie)
* [domain] domain of the cookie (must be same as domain used to create cookie)
*/
function deleteCookie(name, path, domain)
{
if (getCookie(name))
{
[removed] = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}
--------------------------------------------------------------------------------
function setCookies(name,value)
{
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days*24*60*60*1000);
[removed] = name + "="+ escape(value) +";expires="+ exp.toGMTString();
}
function getCookies(name)
{
var arr = [removed].match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}
function delCookies(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) [removed]=name +"="+cval+";expires="+exp.toGMTString();
}
--------------------------------------------------------------------------------
function getCookie(name)
{
var dc = [removed];
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
}
var end = [removed].indexOf(";", begin);
if (end == -1)
{
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
这个应该不行吧.
=======================================
//另一个读取COOKIE的方法
function GetCookieData(sL)
{
var sRet="";
var sC=""+[removed];
if(sC.length>0)
{
var aC=sC.split(";",100);
var iC=aC.length;
for(var i=0;i<iC;i++)
{
if(aC[i].indexOf(sL+"=")!=-1)
{
var aRet=aC[i].split("=");
sRet=unescape(aRet[1]);
break;
}
}
}
return sRet;
}
javascript操作cookie
javascript操作cookie
/**
* Read the JavaScript cookies tutorial at:
* [url]http://www.netspade.com/articles/javascript/cookies.xml[/url]
*/
/**
* Sets a Cookie with the given name and value.
*
* name Name of the cookie
* value Value of the cookie
* [expires] Expiration date of the cookie (default: end of current session)
* [path] Path where the cookie is valid (default: path of calling document)
* [domain] Domain where the cookie is valid
* (default: domain of calling document)
* [secure] Boolean value indicating if the cookie transmission requires a
* secure transmission
*/
function setCookie(name, value, expires, path, domain, secure)
{
[removed]= name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
/**
* Gets the value of the specified cookie.
*
* name Name of the desired cookie.
*
* Returns a string containing value of specified cookie,
* or null if cookie does not exist.
*/
function getCookie(name)
{
var dc = [removed];
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
}
var end = [removed].indexOf(";", begin);
if (end == -1)
{
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
/**
* Deletes the specified cookie.
*
* name name of the cookie
* [path] path of the cookie (must be same as path used to create cookie)
* [domain] domain of the cookie (must be same as domain used to create cookie)
*/
function deleteCookie(name, path, domain)
{
if (getCookie(name))
{
[removed] = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}
--------------------------------------------------------------------------------
function setCookies(name,value)
{
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days*24*60*60*1000);
[removed] = name + "="+ escape(value) +";expires="+ exp.toGMTString();
}
function getCookies(name)
{
var arr = [removed].match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}
function delCookies(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) [removed]=name +"="+cval+";expires="+exp.toGMTString();
}
--------------------------------------------------------------------------------
function getCookie(name)
{
var dc = [removed];
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
}
var end = [removed].indexOf(";", begin);
if (end == -1)
{
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
这个应该不行吧.
=======================================
//另一个读取COOKIE的方法
function GetCookieData(sL)
{
var sRet="";
var sC=""+[removed];
if(sC.length>0)
{
var aC=sC.split(";",100);
var iC=aC.length;
for(var i=0;i<iC;i++)
{
if(aC[i].indexOf(sL+"=")!=-1)
{
var aRet=aC[i].split("=");
sRet=unescape(aRet[1]);
break;
}
}
}
return sRet;
}
asp 读取文件和保存文件函数代码
'*************************************
'读取文件
'*************************************
Function LoadFromFile(ByVal File)
Dim objStream
Dim RText
RText = Array(0, "")
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Type = 2
.Mode = 3
.Open
.Charset = "utf-8"
.Position = objStream.Size
On Error Resume Next
.LoadFromFile Server.MapPath(File)
If Err Then
RText = Array(Err.Number, Err.Description)
LoadFromFile = RText
Err.Clear
Exit Function
End If
RText = Array(0, .ReadText)
.Close
End With
LoadFromFile = RText
Set objStream = Nothing
End Function
'*************************************
'保存文件
'*************************************
Function SaveToFile(ByVal strBody, ByVal File)
Dim objStream
Dim RText
RText = Array(0, "")
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Type = 2
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText = strBody
On Error Resume Next
.SaveToFile Server.MapPath(File), 2
If Err Then
RText = Array(Err.Number, Err.Description)
SaveToFile = RText
Err.Clear
Exit Function
End If
.Close
End With
RText = Array(0, "保存文件成功!")
SaveToFile = RText
Set objStream = Nothing
End Function -
详细出处参考:http://www.jb51.net/article/17092.htm
ASP对XML文档中文本的操作
<%
'----------------------------------------------------------------
'程序简介: 完成asp语言对XML文档中指定节点文本的增加、删除、修改、查看
'入口参数: 无
'出口参数: 无
'------------------------------------------------
'函数名字:ConnectXml()
'入口参数: filename 需要连接或打开的xml文件名
'出口参数: 无
'返回值 :ConnectXml=0,XMLMorntekDocument就是一个成功装载XML文档的对象了。
' ConnectXml<>0,则打印错误信息strError
'------------------------------------------------
dim XMLMorntekDocument
function ConnectXml(filename)
dim strSourceFile
strSourceFile = Server.MapPath(filename)
Set XMLMorntekDocument = Server.CreateObject("Microsoft.XMLDOM")
XMLMorntekDocument.async = false
XMLMorntekDocument.load(strSourceFile)
ConnectXml=XMLMorntekDocument.parseerror.errorcode
if XMLMorntekDocument.parseerror.errorcode<>0 then
strError="<h2>error"&XMLMorntekDocument;.parseerror.errorcode&"</h2>"
strError=strError&XMLMorntekDocument;.parseerror.reason&"<br>"
strError=strError&XMLMorntekDocument;.parseerror.url&"<br>"
strError=strError&XMLMorntekDocument;.parseerror.line&"<br>"
strError=strError&XMLMorntekDocument;.parseerror.filepos&"<br>"
strError=strError&XMLMorntekDocument;.parseerror.srcText&"<br>"
response.write strError
end if
end function
'------------------------------------------------
'函数名字:CloseXml()
'入口参数: 无
'出口参数: 无
'------------------------------------------------
function CloseXml(XMLMorntekDocument)
if IsObject(XMLMorntekDocument) then
set XMLMorntekDocument=nothing
end if
end function
'------------------------------------------------
'函数名字:SelectXmlNodeText(elementname)
'入口参数: elementname 元素的名字
'出口参数: 无 网页教学网
'------------------------------------------------
function SelectXmlNodeText(elementname)
elementname="//"&elementname;
temp=XMLMorntekDocument.selectSingleNode(elementname).text
selectXmlNodeText= server.htmlencode(temp)
end function
'------------------------------------------------
'函数名字:InsertXmlNodeText(befelementname,elementname,elementtext)
'入口参数: elementname 插入的元素的名字
' befelementname在此元素的名字前面插入元素
' elementtext 插入的元素的文本
'出口参数: 无
'------------------------------------------------
function InsertXmlNodeText(befelementname,elementname,elementtext)
dim befelement,element
set befelement=XMLMorntekDocument.selectSingleNode("//"&befelementname;)
set element= XMLMorntekDocument.createelement(elementname)
befelement.insertBefore element,befelement.firstchild
element.text=elementtext
end function
'------------------------------------------------
'函数名字:UpdateXmlNodeText(elementname,newelementtext)
'入口参数: elementname 元素的名字
' newelementtext元素的新文本
'出口参数: 无
'------------------------------------------------
function UpdateXmlNodeText(elementname,newelementtext)
dim element
set element=XMLMorntekDocument.selectSingleNode("//"&elementname;)
element.text=newelementtext
end function
'------------------------------------------------
'函数名字:DeleteXmlNodeText(elementname)
'入口参数: elementname 元素的名字
'出口参数: 无
'------------------------------------------------
function DeleteXmlNodeText(elementname)
XMLMorntekDocument.selectSingleNode("//"&elementname;).text =""
end function
%>
设置cooke和获取cooke的JS函数
[removed]
function setCookie(name, value, expires, path, domain, secure)
{
var today = new Date();
var expiry = new Date(today.getTime() + 7 * 24 * 60 * 60 * 1000);
if(expires==''||expires==null)
{
expires=expiry;
}
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
[removed] = curCookie;
}
function getCookie(name)
{
var dc = [removed];
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
} else
begin += 2;
var end = [removed].indexOf(";", begin);
if (end == -1)
end = dc.length;
return unescape(dc.substring(begin + prefix.length, end));
}
[removed]
asp+ 操作Cookie 方法大全
/*
豆腐制作 都是精品
www.asp888.net 豆腐技术站
如果转载 请添加这个 版权信息
*/
[removed]
Const COOKIE_NAME As String = "豆腐站点"
Const COOKIE_VALUE As String = "http://www.asp888.net"
' 声明 Cookie 对象
Dim objCookieObject As HttpCookie
Sub btnSetCookie_OnClick(Sender As Object, E As EventArgs)
' Create a cookie object - I'm passing name and value,
' but you can also pass in a name and set the value later.
objCookieObject = New HttpCookie(COOKIE_NAME, COOKIE_VALUE)
' 另外的一种操作Cookie 的 方法
'objCookieObject = New HttpCookie(COOKIE_NAME)
'objCookieObject.Name = COOKIE_NAME
'objCookieObject.Value = "sdsd"
' 设置Cookie 的 过期时间 2001/12/31 23:59:59
objCookieObject.Expires = New DateTime(2001, 12, 11, 23, 59, 59)
' 下面的这些可以不使用
objCookieObject.Domain = "www.asp888.net"
objCookieObject.Path = "/path/"
objCookieObject.Secure = True
Response.AppendCookie(objCookieObject)
End Sub
Sub btnRemoveCookie_OnClick(Sender As Object, E As EventArgs)
objCookieObject = New HttpCookie(COOKIE_NAME)
' 删除Cookie
objCookieObject.Expires = New DateTime(1974, 11, 12)
Response.AppendCookie(objCookieObject)
End Sub
Sub btnGetCookie_OnClick(Sender As Object, E As EventArgs)
objCookieObject = Request.Cookies(COOKIE_NAME)
If Not(objCookieObject = null) Then
lblCookieDetails.Text = objCookieObject.Name
lblCookieDetailsName.Text = objCookieObject.Name
lblCookieDetailsValue.Text = objCookieObject.Value
lblCookieDetailsExpires.Text = objCookieObject.Expires.ToString
lblCookieDetailsDomain.Text = objCookieObject.Domain
lblCookieDetailsPath.Text = objCookieObject.Path
lblCookieDetailsSecure.Text = objCookieObject.Secure.ToString
lblCookieDetailsHasKeys.Text = objCookieObject.HasKeys.ToString
Else
lblCookieDetails.Text = "Cookie Not Set!"
lblCookieDetailsName.Text = ""
lblCookieDetailsValue.Text = ""
lblCookieDetailsExpires.Text = ""
lblCookieDetailsDomain.Text = ""
lblCookieDetailsPath.Text = ""
lblCookieDetailsSecure.Text = ""
lblCookieDetailsHasKeys.Text = ""
End If
End Sub
[removed]
<html>
<head>
RoseHA配置过程
RoseHA配置过程
注意:安装完第一台数据库后,关闭机器,再在第二台上安装,安装前需要将盘柜中第一台数据库的数据文件删除或者盘柜格式化,之后再安装数据库,并且数据文件也是和第一台一样安装在盘柜中。(保证两台机器的数据库mssqlserver和sqlserveragent服务为手动启动)
原创 T_SQL 动态SQL 结合 游标 多表查询
OPEN H_BM_Cursor
FETCH NEXT FROM H_BM_Cursor
into @bmid,@bmmc
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
declare @strtemp varchar(50)
-- Concatenate and display the current values in the variables.
--PRINT ' when ' + cast(@bmid as varchar(20)) + ' then ' + @bmmc
select @strtemp=' when ' + cast(@bmid as varchar(20)) + ' then ''' + @bmmc+''''
--select @strtemp
select @strSql=@strSql+@strtemp
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM H_BM_Cursor
into @bmid,@bmmc
END
CLOSE H_BM_Cursor
select @strSql= @strSql+' end as ''原来部门'',case xbmid '
--select @strSql as 'goSql'
DEALLOCATE H_BM_Cursor
CS2005中winfrm解决textbox 内容验证
/// <summary>
/// 验证输入框的输入内容
/// </summary>
/// <param name="textbox">输入框控件</param>
/// <param name="length">最大输入长度</param>
/// <param name="controlName">输入框的名称</param>
/// <returns>true验证通过,false验证不通过</returns>
private bool validaing(TextBox textbox, int length, string controlName)
{
bool result = false;
if (textbox.TextLength == 0)
{
errorProvider1.SetError(textbox, "请输入" + controlName + "内容!");
textbox.SelectAll();
textbox.Focus();
}
else if (textbox.TextLength > length)
{
errorProvider1.SetError(textbox, "请输入小于" + length.ToString() + "个字符的" + controlName + "!");
textbox.SelectAll();
textbox.Focus();
}
else
{
errorProvider1.SetError(textbox, "");
result = true;
}
CS2005中winfrm解决输入法自动全角到半角转换 回车光标到下一个控件
CS2005中winfrm解决输入法自动全角到半角转换 回车光标到下一个控件
MSN机器人源代码(C#)
namespace DotMSN
{
using System;
public class Connection
{
// Methods
public Connection(string pHost, int pPort)
{
this.host = pHost;
this.port = pPort;
}
// Properties
public string Host
{
get
{
return this.host;
}
set
{
this.host = value;
}
}
public int Port
{
get
{
return this.port;
}
set
{
this.port = value;
}
}
// Fields
private string host;
private int port;
}}
飞信客户端接口规范和2008源码.rar
飞信客户端接口规范
8. 登陆状态改变 26
8.1. 模式 26
8.2. 请求注册 27
8.2.1. 注册请求消息 - [REG-1] 27
8.2.1.1. 消息格式 27
8.2.1.2. 示例 27
8.2.2. 注册应答消息 - [REG-RSP-1] 28
8.2.2.1. 消息格式 28
8.2.2.2. 错误处理 28
8.2.2.3. 示例 28
8.3. 请求认证 29
8.3.1. 认证请求消息 - [REG-2] 29
8.3.1.1. 消息格式 29
8.3.1.2. 凭据生成算法 29
8.3.1.3. 示例 30
8.3.2. 认证应答消息 - [REG-RSP-2] 30
8.3.2.1. 消息格式 30
8.3.2.2. 错误处理 30
8.3.2.3. 示例 31
8.4. 协商流压缩 31
8.4.1. 协商请求 - [NEG-COMPRESS] 31
8.4.1.1. 消息格式 31
8.4.1.2. 压缩算法 31
8.4.1.3. 示例 32
8.4.2. 协商应答消息 - [NEG-COMPRESS-RSP-2] 32
8.4.2.1. 消息格式 32
8.4.2.2. 错误处理 32
8.4.2.3. 示例 33
8.5. 保持注册 33
8.5.1. 保持注册请求消息 - [REG-3] 33
8.5.1.1. 消息格式 33
8.5.1.2. 示例 33
8.5.2. 保持注册应答消息 - [REG-RSP-3] 34
8.5.2.1. 消息格式 34
8.5.2.2. 示例 34