|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。排序“中值排序基数法完成树状布局”的增补
因为一时忽略,形成了此法“关于int范例的基数字段,对原始贴的复兴只能有31个;numeric范例的基数字段,对原始贴的复兴也不克不及凌驾120个”(实践上是关于int型字段,原始贴的复兴第32个以上的树状布局显现入手下手杂乱,关于numeric型的基数字段,原始贴的复兴从121个以上树状布局显现入手下手杂乱――复兴其实不会出成绩),这是因为盘算机存储精度引发的。
我们能够将加贴的存储历程修正一下(加进后面加上**号的行)以限定到了必定深度(在特定命据范例下,基数没法分辩)的时分不再以树状布局显现(而接纳平显――平行显现,如许做固然有点象折中的做法,但在实践上因为扫瞄器等的限定――即便在深度100的时分能以树状布局显现,但从你的扫瞄器看来的树状布局的了局仍旧不是明晰的――屏幕宽度不敷,会折行呗)。
加贴存储历程:
CREATEPROCEDURE[add]@keyidint,@messagevarchar(50)OUTPUT―――keyid为复兴的贴子id号,假如是新贴则为0,@message为堕落信息
AS
IF(@keyid=0)
INSERTINTOforum(rootid,deep,ordernum,……)values(0,0,0,……)
ELSE
BEGIN
DECLARE@rootidint,@idint,@deepint,@begnumfloat,@endnumfloat,@ordernumfloat
SELECT@rootid=0,@id=0,@deep=0,@begnum=0,@endnum=0,@ordernum=0
SELECT@rootid=rootid,@id=id,@begnum=ordernum,@deep=deepfromforumwhereid=@keyid
IF(@id=0)
BEGIN
SELECT@message=要复兴的贴子已被删除!
return
END
ELSE
BEGIN
IF(@rootid=0)SELECT@rootid=@id――复兴的是根贴,取其id为新加贴的rootid
SELECT@endnum=ordernumwhererootid=@rootidandordernum>@begnumorderbyordernum
IF(@endnum=0)
SELECT@ordernum=@begnum+65536――复兴的是最初一贴,能够在此限定@ordernum的局限以防溢出
ELSE
**BEGIN
**IF@endnum-@begnum>1――精度仍能分辩。此处的1为精度标志,合适于基数字段为int,假如基数字段为numeric字段,请酌情选娶(呸呸呸,错别字来了),目标是使基数精渡过小时限定深度增添,制止显现时的杂乱
**SELECT@ordernum=(@begnum+@endnum)/2,@deep=@deep+1――关头,取排序基数中值
**ELSE
**SELECT@ordernum=@begnum――限定深度不克不及再增添,此贴与复兴贴平行显现,假如存在parentid字段,则要取parentid和复兴贴的parentid一样
**END
**INSERTintoforum(rootid,deep,ordernum,……)values(@rootid,@deep,@ordernum,……)
END
END
Select@message=乐成
return
剪枝存储历程改成:
CREATEPROCEDURE[del]@keyidint,@messagevarchar(50)OUTPUT―――keyid为要删除的贴子id号,假如是新贴则为0,@message为堕落信息
AS
DECLARE@rootidint,@idint,@deepint,@begnumfloat,@endnumfloat
SELECT@rootid=0,@deep=0,@begnum=0,@endnum=0,@id=0
SELECT@id=id,@begnum=ordernum,@rootid=rootid,@deep=deepfromforumwhereid=@keyid
IF(@id=0)
BEGIN
SELECT@message=该贴子不存在!"
return
END
ELSE
BEGIN
SELECT@endnum=ordernumfromforumwhererootid=@rootidanddeep<=@deepandordernum>@begnumorderbyordernum
IF(@endnum=0)――要删除的是最初一个子枝或是根贴
DELETEFROMforumwhereordernum>=@begnumand(rootid=@rootidorid=@rootid)
ELSE
**BEGIN
**IF@begnum=@endnum
**DELETEFROMforumwhereid=@idand(rootid=@rootidorid=@rootid)――已受精度限定的枝,只删以后贴
**ELSE
**DELETEFROMforumwhereordernum>=@begnumandordernum<@endnumand(rootid=@rootidorid=@rootid)
**END
END
固然是限定,但此限定应当是必需的,由于实践上的复兴深是不克不及太年夜的(就象我在这里灌到八九层的时分,乞食猫就大呼“打住打住”了,呵呵)
接待会见我的团体主页http://swuse.yeah.net(本来bigeagle是说我这一句话“目标分明啊”)
</p>强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。 |
|