在大型的社区系统中,有很多的用户高级功能需要实现.例如查询用户所在的版面,给特定的用户发送短消息,
查询用户的信息,用户等级管理等等.这些高级功能的实现有很多的方法,比如
1,用数据库实现.这也是最简单且最常用的方案.它的实现原理如下:
将用户的信息存如规划好的数据库中,若用户的状态改变则修改数据库.若有对该用户的查询请求则申请对数
据库的调用.看下面的一个表的示例
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)的同时
对该表某些表项做一些初始化,当用户状态改变时对该表的相应表项做必要的修改,然后在应用中调用该表的相
关的表项.例如查看用户的位置select use_position from user_info where user_name="user_name".这种方案
的最大的缺点在于系统的开销.想象一下当大量的用户在查询时要打开多少个数据库的连接进程.而且每一次的用
户状态改变,比如从一个版面到另一个版面的时候都需要对数据库进行修改.这对于大型的系统是不实用的.
2,将一个功能模块封装,调入内存.这是最佳的解决方案,比如用isAPI来实现,或者用Java来实现.它的速度非常
的快,且只需要在系统的初始化时对它进行初始化,当用户登陆(login)和改变状态时调用相关的方法(method)来
修改表项就行了.我将在本文的实现篇中给出相关的介绍.但这种方案在实现的时候相对较难
3,就是本文提到的用二维数组来实现了.它的第一维用来定义用户的信息,然后将所有的用户组合为一个二维的
数组.再将该数组保存到一个application的二维数组中,由于application变量的特性.它将常驻于服务器端内存中
在大型社区系统中用二维数组实现用户高级功能(1)
时间: 2025-01-02 09:54:17
在大型社区系统中用二维数组实现用户高级功能(1)的相关文章
C#中用二维数组的方式实现螺旋渐开矩阵,请问怎么做?有没有高效的方式呢?
问题描述 C#中用二维数组的方式实现螺旋渐开矩阵,请问怎么做?有没有高效的方式呢? C#中用二维数组的方式实现螺旋渐开矩阵,请问怎么做?有没有高效的方式呢? 解决方案 http://blog.csdn.net/mrliming/article/details/5165496http://www.docin.com/p-551336358.html
在Flash中用二维数组建地图的迷宫游戏
数组 效果如下: 点击这里下载源文件 //----------右键菜单------------------------------------ function f1() { //右键菜单函数 getURL("http://game.tmxk.net/flasher"); } function f2() { gotoAndPlay(8); } var m1 = new ContextMenu(); //建新菜单 m1.hideBuiltInItems(); m1.customItems
c++-怎么用二维数组储存字符串
问题描述 怎么用二维数组储存字符串 类似于杨辉三角或者是ABCDEF环绕成正方形打印我想看能不能用二维数组控制他们循环打印数字我用二维数组能控制循环,但不知怎么在二维数组里储存字符串,是用数组指针吗?大神们能给个杨辉三角但是数学换成字符串的例子吗?类似图中用二维数组做怎么表示 解决方案 字符串转成二维数组C#二维数组及字符串操作C++ 字符串和二维数组索引 解决方案二: http://blog.csdn.net/qq_27183003/article/details/49699463http:/
在myeclipse中,求java按最短距离的系统聚类法,将一个二维数组按行分成3类的代码,急用!
问题描述 将二维数组的每一行作为一个样本,想将这些样本分为3类.在matlab中可以很方便的用pdist.linkage.cluster函数实现,但是用java小弟编了很长时间一直没有实现,恳请哪位高手告知一下小弟,邮箱xiaoxiaobadi@163.com,急用!万分感谢!
c语言-C语言二维数组下标越界--却能给越界的下标赋值 和输出
问题描述 C语言二维数组下标越界--却能给越界的下标赋值 和输出 编译器:dev-c++ int iArray[3][4]; iArray[3][4]=1000; printf("%d",iArray[3][4]); 改变 iArray[3][4]的值为1000 输出的结果仍然为1000 请问这个是什么原因呢? 我是直接给越界的下标进行了赋值 以前以为只要是下标越界了 输出的都是无意义的数字 其实那是因为没有给越界的下标赋值 对吗 越界的下标为什么还能正常使用呀 解决方案 使用越界的数
C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点
问题描述 C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点 Description 给定一个海拔平面图,相当于一个二维数组,数组的每个元素表示一个点的海拔高度.请判断该图中是否存在鞍点,如果存在,则输出该鞍点的位置,即行.列坐标. 本题规定鞍点的定义为:该点的值在它所在的那行中是唯一最大的,且该点的值在它所在的那列中是唯一最小的. Input 输入有多个测试用例,如果把每个测试用例看作一个"块",那么,在一个"块"中: 第一行
c++程序-我用vector里resize函数创建了一个二维数组,怎么给它排序?代码如下,哪里错了呢?
问题描述 我用vector里resize函数创建了一个二维数组,怎么给它排序?代码如下,哪里错了呢? #include #include #include #include #include using namespace std; int main() { int n, m; cout << "input the row:n and the column:m" << endl; cin >> n >> m; vector< vec
2013级C++第15周项目——二维数组
课程主页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1-折腾二维数组]创建一个长度为5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后通过键盘输入,使后两列的10个元素获得值,将所有元素值乘以3后保存在数组中.输出数组时,按行序优先输出,再按列序优先输出(输出的第一行是数组中的第一列--,其实输出的就是"转置"),再将数组"倒"着输出(即最后一行最后一列的最先输
[总结]C语言二维数组作为函数的参数
前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: 1 #include <cstdio> 2 void print(int *a[3]) 3 { 4 printf("%d\n",a[0][0]); 5 } 6 7 int main() 8 { 9 int a[2][3] = {1,2,3,4,5,6}; 10 print(a); 11 return 0