假设,我有一个拥有大量servlet的Web服务器.对于在这些servlet之间传递的信息,我正在设置会话和实例变量.
现在,如果有2个或更多用户向此服务器发送请求,那么会话变量会发生什么?它们对所有用户都是通用的,或者对于每个用户而言都是不同的.如果它们不同,那么服务器如何区分不同的用户?
还有一个类似的问题,如果有n用户访问特定的servlet,那么这个servlet只在第一个用户第一次访问它时实例化,或者是否为所有用户单独实例化?换句话说,实例变量会发生什么?
java multithreading servlets session-variables instance-variables
两种方法都有任何优势吗?
例1:
class A {
B b = new B();
}
Run Code Online (Sandbox Code Playgroud)
例2:
class A {
B b;
A() {
b = new B();
}
}
Run Code Online (Sandbox Code Playgroud) 这是一些代码:
class Person
def initialize(age)
@age = age
end
def age
@age
end
def age_difference_with(other_person)
(self.age - other_person.age).abs
end
protected :age
end
Run Code Online (Sandbox Code Playgroud)
我想知道的是两者的区别@age,并self.age在age_difference_with方法.
我读过" Ruby实例变量什么时候设置? "但我在使用类实例变量时有两种想法.
类变量由类的所有对象共享,实例变量属于一个对象.如果我们有类变量,那么使用类实例变量的余地就不大了.
有人可以解释这两者之间的区别以及何时使用它们?
这是一个代码示例:
class S
@@k = 23
@s = 15
def self.s
@s
end
def self.k
@@k
end
end
p S.s #15
p S.k #23
Run Code Online (Sandbox Code Playgroud)
我现在明白了,Class Instance Variables不会传递给继承链!
ruby instance-variables class-variables class-instance-variables
什么是Ruby变量,在符号(@@)前面加上double ?我对一个带有at符号的变量的理解是它是一个实例变量,在PHP中是这样的:
PHP版本
class Person {
public $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
Run Code Online (Sandbox Code Playgroud)
Ruby相当于
class Person
def set_name(name)
@name = name
end
def get_name()
@name
end
end
Run Code Online (Sandbox Code Playgroud)
双重标志@@是什么意思,它与单个标志有什么不同?
假设我有&的Gift对象.将它转换为Ruby中的Hash的最佳方法是什么,而不是Rails(尽管也可以自由地给出Rails的答案)?@name = "book"@price = 15.95{name: "book", price: 15.95}
Python中是否有内置方法来获取所有类的实例变量的数组?例如,如果我有这个代码:
class hi:
def __init__(self):
self.ii = "foo"
self.kk = "bar"
Run Code Online (Sandbox Code Playgroud)
有没有办法让我这样做:
>>> mystery_method(hi)
["ii", "kk"]
Run Code Online (Sandbox Code Playgroud)
编辑:我原本错误地要求类变量.
Objective-C 2.0中的属性是否需要声明相应的实例变量?例如,我习惯做这样的事情:
MyObject.h
@interface MyObject : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
MyObject.m
@implementation
@synthesize name;
@end
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做了:
MyObject.h
@interface MyObject : NSObject {
}
@property (nonatomic, retain) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
这仍然有效吗?它与我之前的例子有什么不同吗?
假设我有以下哈希:
{ :foo => 'bar', :baz => 'qux' }
Run Code Online (Sandbox Code Playgroud)
如何动态设置键和值以成为对象中的实例变量...
class Example
def initialize( hash )
... magic happens here...
end
end
Run Code Online (Sandbox Code Playgroud)
...所以我最终在模型中得到以下内容......
@foo = 'bar'
@baz = 'qux'
Run Code Online (Sandbox Code Playgroud)
?
有人知道如何在CoffeeScript中创建私有的,非静态的成员吗?目前我正在这样做,它只是使用以下划线开头的公共变量来澄清它不应该在类之外使用:
class Thing extends EventEmitter
constructor: (@_name) ->
getName: -> @_name
Run Code Online (Sandbox Code Playgroud)
将变量放在类中使它成为静态成员,但是如何将其设置为非静态?甚至可能没有"花哨"?
ruby ×5
java ×2
coffeescript ×1
constructor ×1
hashmap ×1
methods ×1
object ×1
objective-c ×1
oop ×1
python ×1
self ×1
servlets ×1
syntax ×1