想要实现类似全局变量非得用静态方法吗?多用户同时提交的冲突怎么解决呢?

时间:2022-08-29 11:49:02
比如我要定义一个ArrayList类型的全局变量,要在程序里几个互不相关的方法里操作它。用静态变量或静态方法的话,当A、B两个用户同时操作时,A向ArrayList插入2个对象;B插入3个对象。那当A/B提交时ArrayList里就有5个对象了。。请问有什么办法既可以实现类似全局变量的功能,又可以避免多用户同时操作的冲突呢?

6 个解决方案

#1


是这样的吗 


我不太清楚啊

那楼主的意思是输入定义一个STATIC变量的话,如果网站有1万人访问,他们都同时操作这个变量,那会已最后一个人操作的结果是最终结果啊 


如果这样的话  网站记录当前访问人数可以这么做了


不清楚情况 随便说的啊  


如果有错,愿意的话麻烦指出,谢谢---逻辑是按楼主的推测 

 


#2


你先把你的需求理清楚哈,

#3


试过了?两个用户提交会加到一起,
IIS会为不同的用户创建不同的IIS进程的吧

#4


对于你来说最近的答案应该是 Session[.....]


不过,我不会使用这类东西。让我们退回到你说的static变量看看,可能你不知道(!),如果web应用部署在空间商虚拟主机上,应用程序进程进程经常因为服务器或者iis或者asp.net系统维护功能被回收(重启),于是static变量、Session集合、Application集合等都“丢失”了。这是你在自己的电脑上写点小程序时所想不到的,你应该已开始就花100、200块钱租一个空间一边开发一边把asp.net应用放到真正的外部服务器上去测试,才能发现这类问题。

面对这类问题,如果你要求开发一个稳定的应用程序,你就不会轻易把什么数据依赖于static、Session集合这种方式保存,而是会考虑数据持久化、Cache加速这类机制。当然,专业开发人员从客观的生产服务器的特性为编程基础,而初学者只要在自己的电脑为基础学点编程语法可能就满足了。

#5


个人认为你这样的需求最简单的就是数据库

#6


利用单例模式:可以看我的学习记录
http://blog.csdn.net/qiuming0306/archive/2009/02/27/3941932.aspx

class Singleton 
{
    public static Singleton Instance() {
        if (_instance == null) {
            lock (typeof(Singleton)) {
                if (_instance == null) {
                    _instance = new Singleton();
                }
            }
        }
        return _instance;      
    }
    protected Singleton() {}
    private static volatile Singleton _instance = null;
    private ArrayList ary;
    public void Additem()
     {
      //添加方法
      }
    public void removeitem()
      {
       //移除数据元素
       }

}


当然可以用。net的单利方式,比我的代码要简单。

#1


是这样的吗 


我不太清楚啊

那楼主的意思是输入定义一个STATIC变量的话,如果网站有1万人访问,他们都同时操作这个变量,那会已最后一个人操作的结果是最终结果啊 


如果这样的话  网站记录当前访问人数可以这么做了


不清楚情况 随便说的啊  


如果有错,愿意的话麻烦指出,谢谢---逻辑是按楼主的推测 

 


#2


你先把你的需求理清楚哈,

#3


试过了?两个用户提交会加到一起,
IIS会为不同的用户创建不同的IIS进程的吧

#4


对于你来说最近的答案应该是 Session[.....]


不过,我不会使用这类东西。让我们退回到你说的static变量看看,可能你不知道(!),如果web应用部署在空间商虚拟主机上,应用程序进程进程经常因为服务器或者iis或者asp.net系统维护功能被回收(重启),于是static变量、Session集合、Application集合等都“丢失”了。这是你在自己的电脑上写点小程序时所想不到的,你应该已开始就花100、200块钱租一个空间一边开发一边把asp.net应用放到真正的外部服务器上去测试,才能发现这类问题。

面对这类问题,如果你要求开发一个稳定的应用程序,你就不会轻易把什么数据依赖于static、Session集合这种方式保存,而是会考虑数据持久化、Cache加速这类机制。当然,专业开发人员从客观的生产服务器的特性为编程基础,而初学者只要在自己的电脑为基础学点编程语法可能就满足了。

#5


个人认为你这样的需求最简单的就是数据库

#6


利用单例模式:可以看我的学习记录
http://blog.csdn.net/qiuming0306/archive/2009/02/27/3941932.aspx

class Singleton 
{
    public static Singleton Instance() {
        if (_instance == null) {
            lock (typeof(Singleton)) {
                if (_instance == null) {
                    _instance = new Singleton();
                }
            }
        }
        return _instance;      
    }
    protected Singleton() {}
    private static volatile Singleton _instance = null;
    private ArrayList ary;
    public void Additem()
     {
      //添加方法
      }
    public void removeitem()
      {
       //移除数据元素
       }

}


当然可以用。net的单利方式,比我的代码要简单。