请问:application里面的值会同步变化,这是什么原因

问题描述

srvCtx = webCtx.getServletContext();// 获得application对象// 得到application对象中的访问者列表visitors = (LinkedList<Ippv>) srvCtx.getAttribute("visitors");//visitors 是LinkedList类型的for (int i = 0; i < 100; i++) { saveList.add(visitors.poll());// 获取并移除访问者列表第一个元素,并保存在保存列表中}//再次获得web服务器起中visitors值visitors = (LinkedList<Ippv>) srvCtx.getAttribute("visitors");System.out.println("现在服务器记录数为:" + visitors.size());//竟然也会减少100个元素本来还想处理一下web服务器,application里面visitors列表变量和本程序visitors列表变量同步问题,现在竟然不用了,想不明白什么原因,难道web服务器对于这个处理有类似C++的指针。请问一下这是啥原因? 问题补充:ibadboy 写道

解决方案

visitors = (LinkedList<Ippv>) srvCtx.getAttribute("visitors");visitors变量和srvCtx中visitors对象实际上是一个对象,可以形象地理解为内存中同一个地址,所以poll后srvCtx中的visitors也减少了java中引用(如此处的变量visitors)和c中的指针实际上是一样的,只是java没有指针运算吧
解决方案二:
上面两位已经说的很明白了,两次getAttribute("visitors"); 得到的是内存中同一个对象的两个不同的引用,打个比喻:小牛有两个儿子,小狗和小猪,小狗的爸爸跟小猪的爸爸是一个对象,如果小狗的爸爸变瘦了,相应的小猪的爸爸不也是变瘦了么。
解决方案三:
呵呵,c++忘了,你google看下引用的定义吧,先把基础夯实了。
解决方案四:
visitors其实就是服务器端持久的引用,你删除引用也会影响原始的。 就像你迭代List一样的效果。
解决方案五:
for (int i = 0; i < 100; i++) { saveList.add(visitors.poll());// 获取并移除访问者列表第一个元素,并保存在保存列表中 } 你循环100次当然删除了100个元素了。

时间: 2024-09-15 18:01:24

请问:application里面的值会同步变化,这是什么原因的相关文章

ajax中的async属性值之同步和异步及同步和异步区别_AJAX相关

jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除.而异步则这个AJAX代码运行中的时候其他代码一样可以运行. ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. 一.async值为true (异步) 当

ajax中的async属性值之同步和异步及同步和异步区别

jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除.而异步则这个AJAX代码运行中的时候其他代码一样可以运行. ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. 一.async值为true (异步) 当

《iOS组件与框架——iOS SDK高级特性剖析》——第8章,第8.6节键值存储同步

8.6 键值存储同步 iOS组件与框架--iOS SDK高级特性剖析 iCloud还支持键值存储同步.这类似于在NSMutableDictionary或NSUserDefaults中存储信息,将一个与对象值相关联的键用于存储和检索:iCloud键值存储的不同之处在于,将自动在设备之间同步键和值.本书编写期间,iCloud为每个应用提供1MB的键值存储空间,最多可存储1024个键值对,因此键值存储机制只适合用于存储少量信息. 本章的示例应用利用iCloud键值存储来跟踪最后修改的备忘录.详细视图控

取不到session和application里的值

问题描述 取不到session和application里的值 项目运行成功,页面也可以跳转,但是在登录页面输入用户名和密码以后执行action取不到session和application里的值,,正确的话应该用户名存入session和application里才对 解决方案 把你多struts.xml也贴出来啊!!! 解决方案二: 看下struts的配置文件,action是怎么定向的

c++-ado 连接数据库,能从异常或者返回值里区分出 异常产生的原因吗

问题描述 ado 连接数据库,能从异常或者返回值里区分出 异常产生的原因吗 想知道哪些原因引起的数据库连接失败,如:断网,sql语句错误,数据库问题... 解决方案 断网或者数据库服务器异常一般很难确定出来到底是哪个,因为会报同意异常:连接超时,没有多余提示!其他sql错误之类的一眼就能看出吧 解决方案二: 可以,根据异常类型和异常消息.各种数据库的异常和消息各有不同.理论上应该是可以明确的

application 清空程序出现很卡的问题是什么原因

问题描述 application 清空程序出现很卡的问题是什么原因 application 清空后,程序出现很卡的问题是什么原因 ,怎么解决,里面存的是bitmap集合 clear后很卡 解决方案 必要的缓存被清理掉了吧,然后需要重新生成或下载造成运行卡顿. 解决方案二: 缓存清理掉了,当你在此运行时候这些Bitmap位图都要 重新加载,肯定会卡

请问怎样实现“Combobox下拉菜单变化后文本框的数组会跟着变化”

问题描述 请问各位高手怎样实现"Combobox下拉菜单变化后文本框的数组会跟着变化"?举例:Combobox控件菜单内容分别为"kg/s","kg/min","kg/h",当单位变化时,文本框里的数值会随着单位的改变而改变. 解决方案 解决方案二:在选项变化的事件里写代码改变文本框的值解决方案三:引用1楼xdashewan的回复: 在选项变化的事件里写代码改变文本框的值 请告诉我代码怎么写谢谢解决方案四:uphttp://c

AngularJS实现一次监听多个值发生的变化_AngularJS

一.$watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); 每个参数的说明如下: watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name} . listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参

asp.net C# int 类型在32/64位环境下取值范围无变化

最近在学习中突然想到,我在64位环境下,int取值范围是否有变化?为了检测这个结果,我做了以下这个测试: 1.环境:win7旗舰版64位+vs2010 sp1(版本号:10.0.40219.1SP1Rel)+.Net 4.0.30319 SP1Rel 2.代码:  代码如下 复制代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleAppl