我只是好奇,知道为什么这个小块的代码在Visual Studio中编译正确(没有警告)。 也许GCC和Clang的结果是一样的,但不幸的是我现在无法testing它们。 struct T { int t; T() : t(0) {} }; int main() { T(i_do_not_exist); return 0; }
我对Java的座右铭是“仅仅因为Java有静态块,并不意味着你应该使用它们”。 除了笑话之外,Java中有很多技巧使得testing成为一场噩梦。 我最讨厌的两个是匿名类和静态块。 我们有很多使用静态块的遗留代码,这些都是我们在编写unit testing时的烦人之处。 我们的目标是能够编写unit testing的类,依赖于这个静态初始化与最小的代码更改。 到目前为止,我的同事的build议是将静态块的主体移动到一个私有的静态方法,并将其staticInit 。 这个方法可以在静态块中被调用。 对于unit testing,依赖于这个类的另一个类可以很容易地使用JMockit来嘲弄staticInit而不做任何事情。 我们来看看这个例子。 public class ClassWithStaticInit { static { System.out.println("static initializer."); } } 将被改为 public class ClassWithStaticInit { static { staticInit(); } private static void staticInit() { System.out.println("static initialized."); } } 所以我们可以在JUnit中进行以下操作。 public class DependentClassTest { public static class MockClassWithStaticInit { public static void staticInit() […]
CPU架构的格局已经改变,多核心是一个趋势,将改变我们如何开发软件。 我在C,C ++和Java中完成了multithreading开发,我使用各种IPC机制完成了多进程开发。 使用线程的传统方法似乎并不使开发人员容易使用支持高度并发性的硬件。 您意识到哪些语言,库和开发技术有助于缓解创build并发应用程序的传统挑战? 我显然正在考虑像僵局和竞赛状况这样的问题。 devise技术,库,工具等也是有趣的,有助于实际利用并确保可用资源得到利用 – 只要编写一个安全,可靠的线程化应用程序并不能确保它使用所有可用的内核。 我目前看到的是: Erlang :基于进程的消息传递IPC,即“演员的并发模型” Dramatis :Ruby和Python的演员模型库 Scala :用于JVM的函数式编程语言,增加了一些并发支持 Clojure :具有演员库的JVM的函数式编程语言 白蚁 :Erlang的过程方法和消息传递给Scheme的一个端口 你还知道什么,为你工作了什么,你觉得有什么好看的?
有谁知道如何修改Microsoft Access 2007或2010中现有的导入规范? 在旧版本中,曾经是导入向导期间显示的高级button,允许您select和编辑现有规范。 我不再看到这个function,但希望它仍然存在,并刚刚在其他地方移动。
我正在寻找一个好的轻量级Java对接框架。 我知道Netbeans和Eclipse可以用作RCP,但我正在寻找一些更轻量级的东西。
我想创build一个数组,将使用重复的数据,如下所示: int[] list1 = new int[4] { 1, 2, 3, 4}; int[] list2 = new int[4] { 5, 6, 7, 8}; int[] list3 = new int[4] { 1, 3, 2, 1 }; int[] list4 = new int[4] { 5, 4, 3, 2 }; int[,] lists = new int[4, 4] { list1 , list2 , list3 […]
使用大小为2的幂与另一个数的varchar字段效率更高吗? 我想不,因为对于SQL Server,默认值是50。 然而,我听说(但从来没有证实),大小字段作为2的幂是更有效的,因为它们等于偶数字节,计算机处理位和字节。 那么,声明为varchar(32)或varchar(64)的字段是否比varchar(50)有任何真正的好处?
例如,我有一个已知sizeof(A)和sizeof(B)的std :: map,而map里面有N个条目。 你如何估计它的内存使用量? 我会说这是类似的 (sizeof(A) + sizeof(B)) * N * factor 但是,这个因素是什么? 不同的公式可能? 也许要求上限更容易?
几天前我开始使用emacs作为我的主编辑器,而且我正在收集所需的所有自定义内容。 我给它的主要用途是在远程Linux机器(RHEL 5)上开发C项目。 到目前为止,我使用纯vim(仅作为文本编辑器)和一堆shell脚本,有一天我决定尝试emacs。 到目前为止,我喜欢它。 但作为一个缺点,我发现设置运行emacs的环境还有很长的路要走,而不是直接在开发机器上使用它(并在每台机器上设置环境),我会尽量使用它从我的笔记本电脑,并远程开发。 我知道关于TRAMP,但据我所知只能编辑远程文件。 最大的障碍是在一个按键上运行远程机器上的shell命令(我绑定F5在远程机器的emacs上运行自定义编译命令)。 如何用一个emacs击键在远程机器上运行shell命令? 你知道任何其他的提示和技巧,以完成远程开发?
一旦我有关于devise的讨论,相对于命令模式。 我的同事说,在调用.execute()方法之后,命令对象不应返回状态(成功,失败,为什么)。 原因是你不应该担心命令是否被执行,因为命令不能包含任何状态。 但是,如果命令具有预期的效果,则必须在调用之后进行检查。 他提出的另一个观点是,在四人帮上,指挥模式并没有出现这种情况(返回状态)。 我声明了相反的观点。 GoF没有提供这种情况,但是一个模式可以模拟您的需求。 如果命令不成功,调用客户端必须接收状态certificate,并最终部署适当的响应。 通过强制客户检查行动取得成功是否容易出错,并产生重复的代码。 此外,在某些情况下,命令会产生一个结果(例如,一个命令添加一条线到一个情节,将以某种方式将行ID返回到客户端),假装没有状态的命令意味着你必须从数据模型中“捞出”新的对象标识符。 最后,我们通过不返回状态而达成了一个妥协,但将新创build的对象的id保存在命令对象中,而且应用程序工作得很好,但是我现在好奇地知道你的意见。