人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

在大型社區(qū)系統(tǒng)中用二維數(shù)組完成用戶高級技巧(1)

在大型社區(qū)系統(tǒng)中用二維數(shù)組完成用戶高級技巧(1)

更新時間:2019-05-25 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

在大型的社區(qū)系統(tǒng)中,有很多的用戶高級功能需要實現(xiàn).例如查詢用戶所在的版面,給特定的用戶發(fā)送短消息,
查詢用戶的信息,用戶等級管理等等.這些高級功能的實現(xiàn)有很多的方法,比如
1,用數(shù)據(jù)庫實現(xiàn).這也是最簡單且最常用的方案.它的實現(xiàn)原理如下:
將用戶的信息存如規(guī)劃好的數(shù)據(jù)庫中,若用戶的狀態(tài)改變則修改數(shù)據(jù)庫.若有對該用戶的查詢請求則申請對數(shù)
據(jù)庫的調(diào)用.看下面的一個表的示例
CREATE TEBLE user_info (user_id mediumInt not null ,
user_id Char not null ,
nick_name Chaer not null ,
user_sex char not null ,
user_level smallInt not null default 3,
login_time Time default time(),
logout_time Time default time(),
user_position Char default "大廳",
.......
.......
)
好了,上面的這個表格只是一個簡單的例子,它用來保存用戶信息的方方面面.在一個用戶登陸(login)的同時
對該表某些表項做一些初始化,當(dāng)用戶狀態(tài)改變時對該表的相應(yīng)表項做必要的修改,然后在應(yīng)用中調(diào)用該表的相
關(guān)的表項.例如查看用戶的位置select use_position from user_info where user_name="user_name".這種方案
的最大的缺點在于系統(tǒng)的開銷.想象一下當(dāng)大量的用戶在查詢時要打開多少個數(shù)據(jù)庫的連接進(jìn)程.而且每一次的用
戶狀態(tài)改變,比如從一個版面到另一個版面的時候都需要對數(shù)據(jù)庫進(jìn)行修改.這對于大型的系統(tǒng)是不實用的.
2,將一個功能模塊封裝,調(diào)入內(nèi)存.這是最佳的解決方案,比如用isAPI來實現(xiàn),或者用Java來實現(xiàn).它的速度非常
的快,且只需要在系統(tǒng)的初始化時對它進(jìn)行初始化,當(dāng)用戶登陸(login)和改變狀態(tài)時調(diào)用相關(guān)的方法(method)來
修改表項就行了.我將在本文的實現(xiàn)篇中給出相關(guān)的介紹.但這種方案在實現(xiàn)的時候相對較難
3,就是本文提到的用二維數(shù)組來實現(xiàn)了.它的第一維用來定義用戶的信息,然后將所有的用戶組合為一個二維的
數(shù)組.再將該數(shù)組保存到一個application的二維數(shù)組中,由于application變量的特性.它將常駐于服務(wù)器端內(nèi)存中
當(dāng)需要改變或者是調(diào)用時將該數(shù)組本地化后,做相應(yīng)的改變再回存到application數(shù)組變量中.它的結(jié)構(gòu)如下
1│姓名│呢稱│級別│方位│登陸時間│預(yù)留位│預(yù)留位│
2│姓名│呢稱│級別│方位│登陸時間│預(yù)留位│預(yù)留位│
3│姓名│呢稱│級別│方位│登陸時間│預(yù)留位│預(yù)留位│
4│姓名│呢稱│級別│方位│登陸時間│預(yù)留位│預(yù)留位│
5│姓名│呢稱│級別│方位│登陸時間│預(yù)留位│預(yù)留位│
......
......
當(dāng)用戶登陸時我們用我們自定義的一個init()函數(shù)來在第二維加入一個數(shù)組元素,等用戶離開時在用一個update()
函數(shù)將相應(yīng)的用戶項回存如數(shù)據(jù)庫中或者是文本文件中.其實更好的方案并非用二維數(shù)組,而是用一個結(jié)構(gòu)數(shù)組,
就是創(chuàng)建一個用戶結(jié)構(gòu)再將其組合為一個數(shù)組,例如(為了方便采用的描述語言)
object use_info
{
int user_id;
char user_name="";
char user_nickname="";
int user_leverl=3;
char user_postion="";
......
......
send_message();
......
}
end object;
每當(dāng)一個用戶登陸時將它對象化,
var user=new user_info;
user.user_id=1;
user.user_name="姓名";
user.usr_nickname="呢稱";
user.user_position="";
......
......
var application("user_counter");
application("user_info")(application("user_counter"))=user;
application("user_counter")++;
......
......
現(xiàn)在如果你要查詢一個名字為張三的用戶的位子,
for (i=0;i<application("user_counter");i++)
{
var user=new user_info;
user=application("user_info")(i);
if user.user_name=="張三"
print user.user_position;
}
但是如我們所知,vbscript并沒有創(chuàng)建對象的功能,用jscript可以定義對象,但沒有辦法將它保存到
application數(shù)組中,應(yīng)為它認(rèn)為application變量是一個特殊的變量.你不能將數(shù)組對象賦值給它,那樣
就會導(dǎo)致類型出錯.所以我們只好用vbscript的二維數(shù)組來實現(xiàn)了.其實思路是相同的.(下面是標(biāo)準(zhǔn)的vbscript
語句)
sub system_init()
dim user_info(100)
dim application("user_counter")
application("user_info")=user_info
application("user_counter")=0
end sub

sub user_init()
set rs =server.createobject("RecordSet")
strpath="user_info.mdb"
rs.open user_info,strpath,,,cmdTable
'打開數(shù)據(jù)庫進(jìn)行初始化
dim user(10)
user(0)=application("user_counter")
user(1)=rs("user_name")
user(2)=rs("user_nickname")
user(3)=rs("user_level")
user(4)=time()'登陸的時間
......
......
dim user_info(100)
user_info=application("user_info")'將application數(shù)組本地化
user_counter=application("user_counter")
user_info(user_counter)=user
user_counter=user_counter+1
application.locak
application("user_info")=user_info
application("user_counter")=user_counter
application.unlock
end sub
現(xiàn)在要查詢用戶張三的登陸時間
for i=0 to application("user_counter")-1
if application("user_info")(i)(1)="張三" then
response.write application("user_info")(i)(4)
end if
end for
下面我們再來看其它的高級功能的實現(xiàn)
1,呼叫特定的用戶
待續(xù)

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 建昌县| 措美县| 青铜峡市| 四会市| 太保市| 九台市| 张北县| 铜陵市| 根河市| 德州市| 龙海市| 泰顺县| 东港市| 长顺县| 定边县| 汶上县| 长宁区| 宜宾县| 大田县| 万全县| 靖江市| 庆城县| 乌兰浩特市| 和田市| 绥德县| 霍山县| 仁寿县| 兴海县| 台北市| 揭阳市| 武功县| 叶城县| 临夏市| 原平市| 秦皇岛市| 建湖县| 宁城县| 潮州市| 晋州市| 宕昌县| 龙海市|