我对类似问题的答案很感兴趣.我认为这是不正确的.所以我创建了一些测试代码.我的问题是,这个代码是否证明/反驳/不确定在拆解方法中使成员变量无效的假设?我用JUnit4.8.1测试了它.
JUnit为4个测试中的每个测试创建一个新的测试类实例.每个实例都包含一个Object obj.此obj也作为静态WeakHashMap的键插入.如果JUnit释放对测试实例的引用,则关联的obj值将被弱引用,因此符合gc条件.测试试图强制gc.WeakHashMap的大小将告诉我objs是否是gc'ed.一些测试使obj变量无效,而其他测试则没有.
import org . junit . Before ;
import org . junit . After ;
import org . junit . Test ;
import java . util . ArrayList ;
import java . util . WeakHashMap ;
import java . util . concurrent . atomic . AtomicInteger ;
import static org . junit . Assert . * ;
public class Memory
{
static AtomicInteger idx = new AtomicInteger ( 0 ) ;
static WeakHashMap < Object , …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ADM");
Run Code Online (Sandbox Code Playgroud)
注册表项存在于计算机上.key始终为null.
我不认为这是一个安全问题.我是以管理员身份运行的.(我甚至在管理员模式下明确地运行了程序集).
我正在使用在Windows 7 64位上运行的Visual Studio 2010.
基本上,我的问题非常相似,已被多次询问.现在,Telerik已经发布了他们的MVC编辑器,哪个WYSIWYG编辑器更好,购买整个套件是明智的吗?
选择:
TinyMCE的
CKEditor的
Telerik MVC编辑器
为什么string是引用类型,即使它通常是原始数据类型,如int,float或double.
我使用android.os.Handler类在后台执行任务.当单元测试这些时,我调用Looper.loop()让测试线程等待后台任务线程做它的事情.后来,我调用Looper.myLooper().quit()(也在测试线程中),允许测试线程退出loop并恢复测试逻辑.
在我想要编写多种测试方法之前,这一切都很好.
问题是Looper似乎不是为允许在同一个线程上退出和重新启动而设计的,所以我被迫在一个测试方法中完成所有测试.
我查看了Looper的源代码,但找不到解决方法.
有没有其他方法来测试我的Hander/Looper代码?或者可能还有一些测试友好的方式来编写我的后台任务类?
有什么方法可以找出实现特定接口的所有类?例如,如果我有如下界面:
public interface myIntFac{}
Run Code Online (Sandbox Code Playgroud)
我想找到当前项目中实现此接口的所有类.我怎样才能在Eclipse中找到它?
新手斯卡拉问题:
假设我想在Scala中执行此操作[Java代码]:
public static double[] abs(double[] r, double[] im) {
double t[] = new double[r.length];
for (int i = 0; i < t.length; ++i) {
t[i] = Math.sqrt(r[i] * r[i] + im[i] * im[i]);
}
return t;
}
Run Code Online (Sandbox Code Playgroud)
并且它也是通用的(因为Scala有效地完成了我读过的通用基元).仅依靠核心语言(没有库对象/类,方法等),如何做到这一点?说实话,我根本看不出怎么做,所以我猜这只是一个纯粹的奖励点问题.
我遇到了很多问题,试图做这个简单的事情,我现在放弃了Scala.希望一旦我看到斯卡拉的方式,我将有一个'啊哈'的时刻.
更新:与其他人讨论这个问题,这是我迄今为止找到的最佳答案.
def abs[T](r: Iterable[T], im: Iterable[T])(implicit n: Numeric[T]) = {
import n.mkNumericOps
r zip(im) map(t => math.sqrt((t._1 * t._1 + t._2 * t._2).toDouble))
}
Run Code Online (Sandbox Code Playgroud) 这是维基百科上有关BST的一些代码:
# 'node' refers to the parent-node in this case
def search_binary_tree(node, key):
if node is None:
return None # key not found
if key < node.key:
return search_binary_tree(node.leftChild, key)
elif key > node.key:
return search_binary_tree(node.rightChild, key)
else: # key is equal to node key
return node.value # found key
Run Code Online (Sandbox Code Playgroud)
现在这是一个二叉树:
10
5 12
3 8 9 14
4 11
Run Code Online (Sandbox Code Playgroud)
如果我正在搜索11,并且我在那里遵循算法,我从10开始,我右转到12,然后离开到9.然后我到达树的末端而没有找到11.但是我的树中存在11 ,它只是在另一边.
你能解释一下二叉树中这个算法在树上工作的限制吗?
谢谢.
当我的CATConLayer检索要在后台线程中绘制的图像时,我的应用程序在我的ViewController被取消分配时崩溃了.我收到一条消息
-[MyViewController respondsToSelector:]: message sent to deallocated instance 0x8f58e00
Run Code Online (Sandbox Code Playgroud)
并且调试器显示
0 ___forwarding___
1 __forwarding_prep_0__
2 -[CATiledLayer(CATiledLayerPrivate) canDrawRect:levelOfDetail:]
3 tiled_layer_render
4 CAImageProviderThread
5 CAImageProviderBackgroundThread
6 CA::DispatchGroup::thread
7 thread_fun
8 _pthread_start
Run Code Online (Sandbox Code Playgroud)
现在,我确实想要发布MyViewController的某个实例,因为我不再需要它了.但是当它从后台线程返回时如何阻止它崩溃?