小编pau*_*doo的帖子

如何修改Git中的几个提交来改变作者

我在Git中做了一系列提交,现在我意识到我忘记了正确设置我的用户名和用户邮件属性(新机器).我还没有将这些提交推送到我的存储库,所以在我这样做之前如何更正这些提交(只有主分支上的3个最新提交)?

我一直在看git resetgit commit -C <id> --reset-author,但我不认为我是在正确的轨道上.

git git-commit git-rewrite-history

153
推荐指数
5
解决办法
4万
查看次数

如何在线程之间传播异常?

我们有一个单个线程调用的函数(我们将其命名为主线程).在函数体内,我们生成多个工作线程来进行CPU密集型工作,等待所有线程完成,然后在主线程上返回结果.

结果是调用者可以天真地使用该函数,并且在内部它将使用多个核心.

到目前为止都很好..

我们遇到的问题是处理异常.我们不希望工作线程上的异常使应用程序崩溃.我们希望函数的调用者能够在主线程上捕获它们.我们必须捕获工作线程上的异常,并将它们传播到主线程,让它们继续从那里展开.

我们应该怎么做?

我能想到的最好的是:

  1. 在我们的工作线程上捕获各种异常(std :: exception和我们自己的一些).
  2. 记录异常的类型和消息.
  3. 在主线程上有一个相应的switch语句,它重新抛出工作线程上记录的任何类型的异常.

这有一个明显的缺点,即只支持一组有限的异常类型,并且每当添加新的异常类型时都需要修改.

c++ multithreading exception

103
推荐指数
5
解决办法
4万
查看次数

Java Swing GUI的自动化测试

有哪些选项可用于构建使用Java Swing编写的GUI的自动化测试?

我想测试一些使用NetBeans Swing GUI Builder编写的GUI,因此可以在不需要对被测代码进行特殊篡改的情况下工作.

java testing swing automated-tests

69
推荐指数
7
解决办法
5万
查看次数

有什么区别; 和;; 在Clojure代码评论?

在Clojure中发表评论;和之间的区别是什么;;?我看到我的文本编辑器对它们进行了不同的着色,所以我假设在理论上存在一些差异.

我也看到Marginalia以不同的方式对待他们:

; Stripped entirely
;; Appears in text section of marginalia
(defn foobar []
   ; Appears in code section of marginalia output
   ;; Again, appears in code section of marginalia output
   6)
Run Code Online (Sandbox Code Playgroud)

comments clojure marginalia

65
推荐指数
6
解决办法
1万
查看次数

如何在.gitignore中添加一些东西,以便匹配不是递归的?

如何添加内容以.gitignore使匹配不递归?

例如,我希望忽略当前目录中的目录foo和文件bar.txt,但不要忽略子目录中存在的任何目录和文件.

我试过这个.gitignore文件:

foo/
bar.txt
Run Code Online (Sandbox Code Playgroud)

但不幸的是混帐适用这个递归,以便otherdir/bar.txtotherdir/foo/也被忽略,这不是我想要的.

(在git中是否有一个命令向我显示所有被忽略的文件,并引用.gitignore负责该文件的文件被忽略?这对调试很有用.)

git ignore gitignore

59
推荐指数
2
解决办法
2万
查看次数

C++中单例的线程安全延迟构造

有没有办法在C++中实现单例对象:

  1. 懒惰地以线程安全的方式构造(两个线程可能同时是单例的第一个用户 - 它应该仍然只构造一次).
  2. 不依赖于事先构造的静态变量(因此单例对象在构造静态变量期间本身是安全的).

(我不太了解我的C++,但是在执行任何代码之前初始化积分和常量静态变量的情况(即,甚至在执行静态构造函数之前 - 它们的值可能已在程序中"初始化")如果是这样的话 - 也许这可以被利用来实现单例互斥体 - 这反过来可以用来保护真正的单例的创建......)


很好,现在我似乎有几个好的答案(羞耻我不能标记2或3作为答案).似乎有两个广泛的解决方案:

  1. 使用POD静态变量的静态初始化(而不是动态初始化),并使用内置原子指令实现我自己的互斥锁.这是我在问题中暗示的那种解决方案,我相信我已经知道了.
  2. 使用其他库函数,如pthread_onceboost :: call_once.这些我当然不知道 - 并且非常感谢所发布的答案.

c++ singleton construction multithreading lazy-initialization

36
推荐指数
5
解决办法
2万
查看次数

如何获取当前正在执行的代码的HMODULE?

我有一个静态库,可以链接到a .exe或a .dll.在运行时,我希望我的库函数可以获取HMODULE静态库代码链接到的任何内容.

我目前使用以下技巧(灵感来自此论坛):

const HMODULE GetCurrentModule()
{
    MEMORY_BASIC_INFORMATION mbi = {0};
    ::VirtualQuery( GetCurrentModule, &mbi, sizeof(mbi) );

    return reinterpret_cast<HMODULE>(mbi.AllocationBase);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做这个看起来不那么hacky?

(注意:这样做的目的是加载一些我知道我的用户将与我的静态库同时链接的Win32资源.)

c c++ winapi

36
推荐指数
3
解决办法
3万
查看次数

如何在Makefile中使用自动变量获取第二个依赖项文件?

我需要从规则中获取第n个依赖文件,类似于bash中的$ n.我需要这个,因为我想将各个依赖项文件作为构建程序的选项提供.

这是一个例子:

dep.o: dep.src config1.cfg config2.cfg
    parse -cfg1 $2 -cfg2 $3 -o $@ $<
Run Code Online (Sandbox Code Playgroud)

可能吗?

makefile gnu-make

36
推荐指数
1
解决办法
5533
查看次数

如何在Win32中递归创建文件夹?

我正在尝试创建一个带有目录(C:\foo\bar,或..\foo\bar\..\baz,或\\someserver\foo\bar)名称的函数,并根据需要创建目录,以便创建整个路径.

我自己尝试了一个非常天真的实现,它似乎是一个字符串处理的噩梦.有/vs \,有网络共享的特殊情况开始\\(也不能尝试mkdir()路径的前两个级别,即机器名和共享名),并且存在\.\可以存在的类型废话在一条路上.

在C++中是否存在一种简单的方法?

c++ directory winapi

35
推荐指数
5
解决办法
5万
查看次数

使用.NET在Windows上获取实际文件名(使用适当的大小写)

我想和这个问题完全一样:

Windows文件系统不区分大小写.如果给定一个文件/文件夹名称(例如"somefile"),我得到该文件/文件夹的实际名称(例如,如果Explorer显示它,它应该返回"SomeFile")?

但我需要在.NET中完成它,我想要完整的路径(D:/Temp/Foobar.xml而不仅仅是Foobar.xml).

我看到FullNameFileInfo课堂上没有做到这一点.

.net windows

33
推荐指数
3
解决办法
5592
查看次数