我正在尝试追踪我们系统中的问题,以下代码让我担心.主servlet中的doPost()方法发生以下情况(名称已更改以保护有罪):
...
if(Single.getInstance().firstTime()){
doPreperations();
}
normalResponse();
...
Run Code Online (Sandbox Code Playgroud)
单身'单身'看起来像这样:
private static Single theInstance = new Single();
private Single() {
...load properties...
}
public static Single getInstance() {
return theInstance;
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式设置为使用静态初始化程序而不是在getInstance()方法中检查null theInstance,是否可以一次又一次地重建?
PS - 我们正在使用Java 1.4上的App运行WebSphere 6
通过使用单例,只能创建一个实例.我们是否需要销毁该实例?
我有一个单独的DBManager,它管理JDBC连接和查询操作.通过调用它的静态newInstance方法,我可以得到它的实例,然后我做一些查询.最后,我想关闭数据库连接,然后调用另一个静态方法来关闭JDBC连接.
现在连接已关闭,而DBManager的实例仍处于活动状态但没有用处.我需要通过例如将其分配给null来销毁它吗?否则稍后可能会被错误引用.
如果我将该实例分配为null,然后再次调用newInstance方法,我将获得另一个新的不同实例吗?
一般的问题是在为现有对象添加实例时哪个模块结构更方便?有哪些优点和缺点?
假设我想为Seq类型添加NFData实例.我可以把它放在:
Data.Sequence.Extra(在vty包中做同样的事情)Data.Sequence.Instances.NFData (更确切)Control.DeepSeq.InstancesControl.DeepSeq.Instances.Sequence当我既没有类型类也没有数据类型时就是这种情况.另一种常见的情况是,我拥有一个类型类型,并希望从Hackage的一些"重"包中添加数据类型的实例,比如OpenGL.假设我设计的类型类很轻,与OpenGL没有直接关系.我不希望我的类型类依赖于"重"包,所以我想将OpenGL实例放在一个单独的模块中(这是我的直觉,如果你有其他意见,我们来讨论它).那么,这个模块应该是什么:
MyClass.Instances.OpenGLGraphics.Rendering.OpenGL.Extra (连同其他课程的实例)Graphics.Rendering.OpenGL.Instances.MyClass什么是更灵活的解决方案?在某些时候,OpenGL可以替换为其他库,或者也可以替换MyClass.有微妙的细微差别吗?
此外,如果选择MyClass.Instances变体,哪个方案更好:
MyClass.Class类本身的模块和基本实例和MyClass模块重新导出它(也许MyClass.Instances)MyClass类和基本实例的模块,并重新MyClass.All导出所有内容MyClass 类和基本实例的模块,没有用于重新导出的模块.我有一个关于clone()Java中的方法的快速问题,用于super.clone()继承 - 我clone()从父按钮中一直调用父类中的方法.
该clone()方法应该返回该对象的副本,但是如果我在继承heirachy中有三个类并且调用super.clone()三次,为什么继承heirachy中的最高类(仅在类Object下)得到该类的副本回?
假设我们有三个类:A,B和C,其中A - > B - > C(inherit = - >)
然后super.clone()在C类中调用,调用clone()B调用super.clone(),clone()在A中调用,调用super.clone()'this this Object.clone()被调用'.为什么它不是this从A类返回的对象的副本Object.clone()?这听起来很合乎逻辑.
我对clojure instance?函数有点困惑.采取一个论点似乎很高兴.所以
(instance? String)
Run Code Online (Sandbox Code Playgroud)
工作正常,但总是返回false.
我在这里错过了什么吗?我在两天内完成了两次,两次都花了很长时间才进行调试(是的,我同意,犯错一次可能会被视为不幸,但两次看起来像粗心大意).
为什么不打破,有一个arity错误?
注释后来添加:从Clojure 1.6开始,这已得到修复!
所以我有一个Oracle实例,我知道它正在这个系统上运行,我已经拜访了oracle用户,我正在尝试使用"/ as sysdba"进行连接.但是,当我连接时,它说实例是空闲的.我知道数据库已启动并打开,因为我的应用程序正在与它通信.我的路径(ORACLE_HOME等)可能不正确:任何不正确的设置可能会导致这种情况?
% sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Dec 8 09:23:22 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to an idle instance.
09:23:22 SQL> Disconnected
% ps -ef | grep smon
oracle 6961 1 0 Nov 05 ? 1:24 ora_smon_ORA003
%
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来拦截MyWrapper下面的类中的实例方法调用:
class SomeClass1:
def a1(self):
self.internal_z()
return "a1"
def a2(self):
return "a2"
def internal_z(self):
return "z"
class SomeClass2(SomeClass1):
pass
class MyWrapper(SomeClass2):
# def INTERCEPT_ALL_FUNCTION_CALLS():
# result = Call_Original_Function()
# self.str += result
# return result
def __init__(self):
self.str = ''
def getFinalResult(self):
return self.str
x = MyWrapper()
x.a1()
x.a2()
Run Code Online (Sandbox Code Playgroud)
我想通过我的包装类拦截所有函数调用.在我的包装器类中,我想跟踪所有结果字符串.
result = x.getFinalResult()
print result == 'a1a2'
Run Code Online (Sandbox Code Playgroud) 我想构建一个具有函数的类,这些函数可能会抛出我想要在使用它时捕获的异常.我从标准异常类继承my_exception.我实现了what()函数,以便它返回一个存储在私有字符串变量中的字符串
我认为最好将异常定义为嵌套类,就像在iosream库中使用ios_base :: failure一样.
我不太确定的是,我应该在哪里以及如何定义my_excpetion的对象.我希望我能看到iostream功能的内部代码,看看他们是如何做到的.我考虑了几个选项:
对于异常的每个原因,我可以定义my_exception的静态实例,使用构造函数获取字符串并将其保存到我的私有字符串指针.
对于异常的每个原因,我可以定义另一个继承自my_exception的类,并实现作为返回常量字符串的函数(原因).我可以保存每个异常子类的实例,或抛出类型.顺便说一句,我们什么时候通常抛出类型而不是实例?
我想这是错的:每次我想抛出一个异常,用一个获取字符串的构造函数创建一个新的my_exception.这是用Java完成的,但据我所知,它在C++中会有问题,因为异常应该在某处删除.对?
我认为第一个是正确的,是吗?有更多标准选项吗?
非常感谢你!
class MyClass:
var1 = 1
def update(value):
MyClass.var1 += value
def __init__(self,value):
self.value = value
MyClass.update(value)
a = MyClass(1)
Run Code Online (Sandbox Code Playgroud)
我正在尝试更新方法(_ init _)中的类变量(var1),但我给了我:
TypeError: unbound method update() must be called with MyClass instance as first argument (got int instance instead)
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我希望通过调用print MyClass.var1轻松访问类中的所有变量
我想改变__str__()我的一个类的方法的属性.
(注意:不要与"试图改变方法__str__()" 混淆.)
我有一个类MyClass,它有一个方法'some_method'.我可以改变MyClass显示方式:
class MyClass():
def __init__(self): pass
def some_method(self): pass
def __str__(self): return "I'm an instance of MyClass!"
Run Code Online (Sandbox Code Playgroud)
当我实例化并打印MyClass时:
print(my_class)
Run Code Online (Sandbox Code Playgroud)
我明白了:
I'm an instance of MyClass!
当我
print(my_class.some_method)
Run Code Online (Sandbox Code Playgroud)
我明白了:
<bound method my_class.some_method of <gumble margle object at mumble-jumble>>
我想改为:
some_method in the instance my_class you Dope!
我已经尝试重写str方法some_method:
def some_method(self):
def __str__(self):
return "You dope!"
Run Code Online (Sandbox Code Playgroud)
但没有爱.
试图在IPython中暴力破解它并没有改善:
my_class.some_method.__str__ = lambda: "You Dope!"
Run Code Online (Sandbox Code Playgroud)
给
AttributeError: 'method' object attribute '__str__' is …