`
yhailj
  • 浏览: 35361 次
  • 性别: Icon_minigender_1
  • 来自: 浮云
文章分类
社区版块
存档分类
最新评论

标题都不知道要怎么改才好

 
阅读更多

之前脑子短路,不知道自己在想些什么.

 

 

分享到:
评论
15 楼 yhailj 2009-08-15  
感谢 redaready 提供解决问题的思路...

谢谢...
14 楼 xzj127 2009-08-15  
为什么。我什么都没看到?
13 楼 redaready 2009-08-15  
再多说点,问题的本质是http是个无状态的协议,就是server端不保留相应客户端在server的状态。不像ftp,telnet会保留客户端的状态,比如当前访问目录等客户端状态。rtsp也是stateful的。这里说的客户端是送reqeust请求的东东,浏览器啦,QQ啦,python urllib啦。。。不是坐在屏幕前的张三李四,小狗小猫。http连客户端的状态都搞不定,更不用说张三李四小猫小狗的状态了。所以就有了现在泛滥的各种http协议上的framework来搞定客户端的状态。然后你的活就是在framework上搞定小猫小狗的状态。你如果想把这些东东都放到内存里,也可以,就是server down的话,什么东东就都死翘翘了。所以一般都是把小猫小狗的状态经过变态的范型分析,对象关系转换搞到数据库里。每次请求过来都从数据库里翻出来,改完,再塞进去。中间换过来换过去的。不过说的字挺多,其实这一路走下来,也没多长时间。可以用firebug看看request里除了url,还有什么东东客户端扔到了server上。然后在server debug下,从call stack一路trace下来,过程基本就清楚了。哎,aix天太热,睡不觉就打字了。
12 楼 redaready 2009-08-15  
咋把代码删了?
一般的过程是这样的:
浏览器发出http请求,server接到请求是静态资源就到硬盘上找,动态的就调“平台framework”来响应。
你看一般的framework的代码,都是从httprequest搞起的。framework起来的时间,一般都来个初始化,就是这个时间,你的类被加载到了内存,类变量得到初始化(好像是iii吧?),一般的framework是在接到第一个request进行这样的动作。接到命令,framework把长长的url跟request对应到你的类当中的行为,并准备好执行这个行为需要的变量值。一般的framework在找到相应的类的时候(你的action子类?),会创建这个类的一个实例,调用这个实例相应的函数,得到结果后,返回给客户端东东,这个创建的实例的生命一般就结束鸟。等下一个request过来,又会有个亲实例蛋生。生死天命,你写的子类的实例,生死权完全控制在framework里。其实这个跟线程没什么关系。一般的framework还是把一个request放到一个thread里面执行。如果iii是实例变量,那么像你的情况每次request得到的都是一个新实例当中的iii的值,在这里是执行完你程序后的值,如果是static的,也就是类变量了,那么类变量是所有实例共享的,所以,你每次request,不管是张三还是李四的request,iii都被他们搞。所以搞出来的成果就是大家作用的结果。
至于你说的
引用
对于一个用户来讲,上传完成后,上传列表会清空,如果用户此时上传了两张图片,就没有了操作,直接关了页面,几天后用户又来发帖,上次没处理的图片还会在上传列表中,在这一块就需要 线程安全,或者是用别的什么 ? 还是其本身在数据库设计这一块就做得很好 ?


首先你说的东东涉及到2个request,在不同request之间看到相同的东东,用实例变量肯定是不行的了。那咋办ni....
一种方法是“永久化”,就是说把先头request搞出的东东放到别的地方先存起来,比如数据库啊,文本啊,先塞到硬盘先,当然别的地方也可以是memcache什么的。这个过程要什么ORM转换啦什么的,总之,等第二个request过来的时候我能把它找出来就可以了。另一种方法呢,就是把这个信息放在你自己的系统里,用static!...完全可以。只不过不好static一个简单的int,而要static一个超级强大的类的实例。这个强在类的实例能够根据实例所在的运行期环境中得到足够的信息(cookie啦,session啦等等,一般framework会做好的),对应出相应的结果。

嗯,基本就是这个样子了。
11 楼 whaosoft 2009-08-14  
lz 你怎么了
10 楼 yhailj 2009-08-14  
说教并没有多大的用处,指出错误本身这是好的.但是如果可以的话,指一条解决方案更能让人欣慰.

我在理解这个问题的时候也想到了静态变量 本身的问题, 它不管你对象的实例有多少 ,只是脑子在解决问题的思路上有些短路,贴出来也是有种当局者迷,旁观者更能看清问题的关键

或者说,我想要的只是一个解决方案,有没有好点的方法在不用设计数据库的情况下满足需求

9 楼 soft901 2009-08-14  
gordianyuan 写道
自己先搞清楚什么是静态变量


确实
8 楼 roadray 2009-08-14  
gordianyuan 写道
自己先搞清楚什么是静态变量

哎!补下基础吧
7 楼 Blithe 2009-08-14  
楼主 基础啊
6 楼 kjj 2009-08-14  
标题党,诚如楼上所言,先学学java吧,光学ssh不行地
5 楼 gordianyuan 2009-08-14  
自己先搞清楚什么是静态变量
4 楼 rentianchou 2009-08-14  
当然是1了,prototype是每请求一次,产生产生一次实例~
3 楼 hellowei 2009-08-14  
yhailj 写道
如果去掉 static ,那么不管任何时候都只是 1 ,永远也不会改变
我现在的目的就是,对于每个单独的用户都是安全的...

就像 javaeye 发帖时的文件上传一样:

对于一个用户来讲,上传完成后,上传列表会清空,如果用户此时上传了两张图片,就没有了操作,直接关了页面,几天后用户又来发帖,上次没处理的图片还会在上传列表中,在这一块就需要 线程安全,或者是用别的什么 ? 还是其本身在数据库设计这一块就做得很好 ?


我的理解:你的这种情况,是要结合数据库来做的。而且,与线程安全无关。
2 楼 yhailj 2009-08-14  
<p><span style="font-family: courier new,courier; font-size: small;">感谢楼下的各位的批评,自己反过来想想都觉得好笑,各位有没有在不对数据库做改变的情况下</span><span style="font-family: courier new,courier; font-size: small;">提供好的解决方案 ?</span></p>
1 楼 hellowei 2009-08-14  
private static int iii = 0; 
改为
private int iii = 0; 
试一下。

相关推荐

    心灵终结3.0 修改标题

    通常,修改游戏标题并不复杂,只需要对游戏的特定文件进行编辑即可。下面将详细解释如何进行这项操作。 首先,我们需要知道心灵终结3.0的游戏文件结构。它可能包含多个文件夹和文件,其中与标题相关的文件可能位于`...

    Discuz!-x3.2 快捷修改贴子标题 (批量修改)商业版1.2 dzX3.2插件下载

    你还在为贴子标题不整齐、不好看,修改起来费时费力而发愁吗?亮剑精心打造的快捷修改贴子标题瞬间让你的贴子标题分类更清楚、更整齐、更好看;要知道贴子标题对于SEO的重要性,你就会发现快捷修改贴子标题的意义不容...

    修改已运行程序的标题栏内容及图标

    首先,要修改已运行程序的标题栏,我们需要了解窗口消息和进程间通信(IPC)的概念。在Windows中,每个窗口都有一个与之关联的消息队列,程序通过发送和接收消息来处理用户交互。其中,WM_SETTEXT消息用于改变窗口的...

    C#移动鼠标获取句柄修改标题

    在不知道这些信息的情况下,可能需要先使用`EnumWindows`遍历所有打开的窗口。声明如下: ```csharp [DllImport("user32.dll")] public static extern bool EnumWindows(EnumWindowsProc enumProc, IntPtr lParam);...

    易语言取任意窗口的句柄和修改窗口标题图标

    假设我们已经获取到了窗口句柄,并且想要将窗口标题改为“新标题”,代码可以这样写: ```易语言 窗口.设置标题(.窗口句柄, "新标题") ``` 这行代码会将对应句柄的窗口标题更改为“新标题”。 至于修改窗口的图标...

    SuperMap iDesktop 7C 布局图例标题修改

    此时,我们需要知道如何修改图例的标题。 在SuperMap iDesktop中,修改图例标题可以通过编程的方式实现,这通常涉及使用.NET Framework和SuperMap的iObjects库。iObjects是SuperMap提供的面向对象的开发接口,它...

    Resource Hacker文件修改(中文版)

    "Resource Hacker文件修改(中文版)" 是...需要注意的是,修改系统文件或受保护的程序可能会导致软件不稳定甚至损坏系统,因此在操作时务必谨慎,确保你知道自己在做什么。此外,尊重软件版权,不要无授权修改商业软件。

    编程开发-编程其它-软件标题修改工具 v1.0.zip

    - 动态修改:该工具允许开发者在不重新编译和打包整个软件的情况下,动态修改软件的标题文本,节省了大量时间和资源。 - 多格式支持:可能支持多种类型的程序文件,如EXE、DLL等,适应不同的开发环境和需求。 - ...

    word 使用技巧 标题设置 排版

    Word 使用技巧标题设置排版字体设计图表插入是 Microsoft Office 中一个非常实用的功能,但很多用户不知道如何正确使用它。多级列表是 Word 的一个强大工具,可以帮助用户快速地创建和管理长文档的标题结构。下面是...

    一款临时可以修改软件标题录课不告诉别人软件名字的exe软件.rar

    标题中的“一款临时可以修改软件标题录课不告诉别人软件名字的exe软件.rar”表明,这是一个可执行文件(.exe),其主要功能是允许用户在录课时临时更改软件的标题,以避免显示真实的软件名称。这样的工具可能适用于...

    易语言-易语言取任意窗口的句柄和修改窗口标题图标

    在易语言中,我们可以轻松地实现对操作系统窗口的各种操作,如获取窗口句柄和修改窗口的标题及图标,这些都是Windows API调用的基础。 窗口句柄在Windows编程中是一个非常重要的概念,它是系统分配给每个窗口的一个...

    c#已知窗口句柄获取窗口标题的方法

    2. **窗口标题**:每个窗口都有一段文本,位于窗口的顶部或标题栏上,用来标识该窗口。这些文本可以被应用程序修改,也可以通过API获取。 ### 知识点二:C#与Win32 API 为了实现从已知的窗口句柄中获取窗口标题的...

    闪烁VB窗体标题栏

    大家都知道,当一个窗体从活动状态变为非活动状态时,有时该窗体的标题栏会闪烁,以提醒用户切换到该窗体进行操作。 那么,我们如何让自己的VB程序窗口也像Windows的其他程序一样可以闪烁自己的标题栏呢?本资源...

    dmi工具 dmi修改

    DMI(Desktop Management Interface)是计算机硬件系统中一种标准化的管理接口,它允许系统管理员获取和修改计算机硬件...只有在完全理解可能的风险和后果,并确保知道如何恢复到原始状态时,才应考虑使用这样的工具。

    VC++ List标题栏自动换行代码

    首先,我们需要知道,标准的MFC ListView控件不直接支持标题栏的自动换行。默认情况下,如果标题过长,它会被截断并显示省略号。为了解决这个问题,我们可以扩展ListView控件,创建一个自定义的Header控件。 这个...

    硬盘序列号修改工具 任意修改

    标题提到的"硬盘序列号修改工具"是一种能够改变硬盘逻辑序列号的软件工具。这种工具通常使用低级磁盘访问技术,绕过操作系统直接与硬盘控制器通信,以读取和修改固件中的序列号信息。值得注意的是,这样的操作具有...

    详细讲述discuz如何修改logo

    很多新手不知道怎么修改discuz的logo,本教程详细讲述如何修改discuz的logo

    第21章-OllyDbg反调试之检测OD进程名,窗口类名,窗口标题名1

    在本章节中,我们将继续讨论反调试技术,使用一个修改过的 CrackMe 作为实验对象,探索 OllyDbg 的进程名、窗口类名和窗口标题名的检测技术。我们将使用 HideDebugger 插件来防止 OllyDbg 进行检测,并使用 ...

    修改电脑OEM参数的软件

    因此,除非你清楚知道自己在做什么,否则不建议随意修改这些信息。此外,使用第三方软件修改系统文件时,一定要确保软件来源可靠,避免安装携带恶意软件的程序,保护好自己的电脑安全。 总结来说,"修改电脑OEM参数...

Global site tag (gtag.js) - Google Analytics