我在代码审查期间遇到了以下代码.
我的直觉告诉我,这不遵循适当的OOP.
我认为相反,LoadObject方法应返回一个新的SomeObject对象,而不是修改传递给它的那个对象.虽然我无法真正找到解释为何更好的原因.
我的解决方案更好吗?如果是这样,为什么?特别是在给定的代码示例(如果有的话)中打破了OOP原则或标准?
public void someMethod()
{
...
var someObject = new SomeObject();
LoadSomeObject(reader,someObject);
}
private void LoadSomeObject(SqlDataReader reader, SomeObject someObject)
{
someObject.Id = reader.GetGuid(0);
}
Run Code Online (Sandbox Code Playgroud) 根据MySQL手册:
对于大型表,表锁定通常比行锁定更好,
Why is this? I would presume that row-level locking is better because when you lock on a larger table, you're locking more data.
I'm using the jQuery autocomplete plugin, NOT the UI autocomplete. I would like to make an unclickable No Results message appear whenever they enter something that has no results from the autocomplete. How can I do that?
有没有办法导出记录到谷歌浏览器的javascript控制台的消息?
如果没有,有人能建议一个很好的方法来诊断客户端机器上的JavaScript问题吗?尽管建立了相同的环境,但我无法在本地复制问题.
可能重复:
Big O的简单英文解释
我找不到足够的帮助来学习或理解O符号,以及如何了解时间或空间的复杂性.所以请建议我,我在哪里可以开始这个.它真的需要我,现在这些时间.所以请快速给我解决方案.非常感谢提前.
我一直在寻找懒惰初始化的方法,并找到Lazy<T>了.NET 4中包含的内容.
我正在考虑推出自己的Lazy<T>.NET 3.5实现(使用更简单的多线程策略),我遇到了以下问题:
Lazy基本上有两种类型的构造函数:
class Lazy<T> {
public Lazy(){...} // ctor #1
Run Code Online (Sandbox Code Playgroud)
它使用T的默认构造函数来创建T的实例,和
public Lazy(Func<T> func){...} // ctor #2
Run Code Online (Sandbox Code Playgroud)
这让调用者决定如何创建T的实例.
现在问题在于:
如果我想要第一个ctor的编译时检查,我将添加一个限制
class Lazy<T> where T: new() {...}
Run Code Online (Sandbox Code Playgroud)
在班级.这将允许我new T()用来创建一个实例; 但是这个限制对于第二个ctor来说不是必需的,更糟糕的是,它也限制了我可以使用的类型(对于那些有默认ctor的人)
如果我想能够使用任何类型与第二个ctor,我将不会设置任何限制,并在第一个ctor将使用反射,以确保T有默认的ctor.但是,这种方法缺少编译时检查,如果第一个ctor使用了错误的类型,则只会抛出运行时异常.
我的问题是:我可以充分利用这两个世界吗?
理想情况下,我想对ctor#1的每次使用进行编译时检查,但同时能够将ctor#2用于没有默认ctor的类型.
Microsoft实现如何做到这一点?(我不能轻易访问.NET 4源代码或dll).
编辑:(在"反射器"之后的MS组件)
我检查了参考实现,它没有进行编译时检查.
它使用反射作为'默认ctor'的情况,当然如果事情变坏则伴随着运行时异常.
我正在尝试使用Motorola Droid上的NDK调试应用程序构建.我按照这里的说明进行操作,过去我在模拟器上取得了成功(显然我有root访问权限)但是当我尝试启动时
gdbserver :5039 --attach 1082
Run Code Online (Sandbox Code Playgroud)
通过adb shell,我得到了一个gdbserver:permission denied.显然,因为这是一个股票Droid,我没有root访问权限.这有必要吗?我只是错过了一些东西吗?
提前致谢!
Edit I have confirmed that this command works on the emulator. Can this be done on a nonrooted device?
Edit 2 I have also confirmed the same Permission Denied errors on an EVO 4G.
Edit 3 I have also discovered that a production device (eg. EVO 4G or Droid) will not give me a "not found" error. For instance, when I typed something random like ljs …
我有一个客户端使用twisted连接到服务器.客户端有一个可能在后台执行操作的线程.当反应堆关闭时,我必须:
1) check if the thread is doing things
2) stop it if it is
Run Code Online (Sandbox Code Playgroud)
这是一种优雅的方式吗?我能做的最好的事情是:
def cleanup(self):
isWorkingDF = defer.Deferred()
doneDF = defer.Deferred()
def checkIsWorking():
res = self.stuff.isWorking() #blocking call
reactor.callFromThread(isWorkingDF.callback, res)
def shutdownOrNot(isWorking):
if isWorking:
#shutdown necessary, shutdown is also a blocking call
def shutdown():
self.stuff.shutdown()
reactor.callFromThread(doneDF, None)
reactor.callInThread(shutdown)
else:
doneDF.callback(None) #no shutdown needed
isWorkingDF.addCallback(shutdownOrNot)
reactor.callInThread(checkIsWorking)
return doneDF
Run Code Online (Sandbox Code Playgroud)
首先,我们检查它是否正常工作.该回调的结果rescallback是关闭或不关闭,然后触发doneDF,扭曲等待直到关闭.
相当混乱呃!有没有更好的办法?
也许一个相关的问题是,是否有更优雅的方式将回调链接到彼此?在完成后我可以看到自己需要做更多的清理代码,所以我必须做出一个不同的done延迟,并且当前doneDF激活一个回调,然后执行调用done延迟的调用.
我:: [((a, b), (a, b), (a, b))]在Haskell中有一个类型元组的元组列表.
对于某些上下文,3个点(a, b)表示具有第一个点的U形曲线上的(时间,值)对,在初始时间t1在曲线x1上具有最大值,第三个点具有更大的时间t3 = t1 + dt和值x3
我想[((t1, x1), (t2, x2), (t3, x3))]通过获取最大值的元组找到列表中最宽U的范围t3 - t1,然后返回值x2 - x1.
我能想到的唯一方法是先将列表中的每个元组映射到t3 - t1,找到它的索引,然后在原始列表中计算该索引的x2 - x1.有没有更优雅的方式来做到这一点?
findMaxTime :: [((a, b), (a, b), (a, b))] -> Int
findMaxTime list = elemIndex (==min) $ map (\(x, y, z) -> fst z - fst x)
where min = minimum $ map (\(x, y, z) -> fst z - fst …Run Code Online (Sandbox Code Playgroud) 嘿所有,我收到了一个错误
OperationalError:(1054,"where子句'中的未知列'XX'")
其中XX是以下代码中CLASS的值
conn = MySQLdb.connect(host = "localhost",user = "user", passwd = "pass",db = "dbase")
cursor = conn.cursor()
cursor.execute("""SELECT * FROM %s WHERE course =%s AND sec = %s""" % (str(DEPT),str(CLASS),str(SEC),))
Run Code Online (Sandbox Code Playgroud)
问题是,我只用某些值得到这个错误,即当CLASS包含一个字母时.如果有帮助,我将表设置为varchar
谢谢!
c# ×2
debugging ×2
mysql ×2
python ×2
.net ×1
algorithm ×1
android-ndk ×1
autocomplete ×1
big-o ×1
gdb ×1
generics ×1
haskell ×1
java ×1
javascript ×1
jquery ×1
lazy-loading ×1
list ×1
locking ×1
oop ×1
reflection ×1
shutdown ×1
tuples ×1
twisted ×1