考虑以下类层次结构:
如何确定在C++中对类X的对象调用foo()时将执行哪个方法?
(我正在寻找算法,而不是任何特定情况.)
c++ multiple-inheritance virtual-inheritance method-resolution-order
当Git在合并期间检测到冲突时,默认行为是使用<<<
>>>
===
标记填充文件.
这在大多数情况下都可以,但有时候我想以不同的方式解决冲突,我只想让Git创建不同的文件:
怎么实现呢?
如果没有简单的命令一次性创建这些文件(这有点令人惊讶),也许有一种方法来扩展Git以便它可以做到这一点?习俗mergetool
还是什么?只是一个想法.
我已经找到了@Karl Bielefeldt的答案:
savefiles.sh
#!bash
BASE=$1
LOCAL=$2
REMOTE=$3
MERGED=$4
cp "$BASE" "$MERGED.git_BASE"
cp "$LOCAL" "$MERGED.git_LOCAL"
cp "$REMOTE" "$MERGED.git_REMOTE"
# never mark the conflict as merged
exit 1
Run Code Online (Sandbox Code Playgroud)
配置
mergetool.savefiles.cmd=/path/to/savefiles.sh $BASE $LOCAL $REMOTE $MERGED
mergetool.savefiles.trustexitcode=true
Run Code Online (Sandbox Code Playgroud) 考虑一个C#GUI应用程序,它使用a FileStream
来读取用户通过"打开文件"对话框选择的文件.
如果读取因其中一个例外而失败,那么以用户友好的方式向用户报告失败的正确方法是什么?
我应该为每个例外发明我自己的消息,还是有办法获得一个我可以逐字呈现给用户的本地化,用户友好的消息?
我问的是.NET本身是否能够为我提供一个我可以呈现的描述性字符串(这与其他.NET程序一致).我知道我可以卷起自己的,但如果有标准的选择,我想避免这种情况.
我有一个模型注释,创建时可能会也可能不会创建新用户.因此,我的API在创建新评论时需要密码字段.这是我的评论模型:
class Comment(models.Model):
commenter = models.ManyToManyField(Commenter)
email = models.EmailField(max_length=100)
author = models.CharField(max_length=100)
url = models.URLField(max_length=200)
content = models.TextField(blank=True, null=True)
ip = models.IPAddressField(max_length=45)
date = models.DateTimeField(default=datetime.now)
post_title = models.CharField(max_length=200)
post_url = models.URLField(max_length=200)
rating = models.IntegerField(max_length=10, default=0)
Run Code Online (Sandbox Code Playgroud)
这是我的API视图:
class CommentNewView(CreateAPIView):
model = Comment
serializer_class = CommentCreateSerializer
Run Code Online (Sandbox Code Playgroud)
这是我的序列化器:
class CommentCreateSerializer(serializers.ModelSerializer):
commenter_pw = serializers.CharField(max_length=32, required=False)
class Meta:
model = Comment
fields = ('email', 'author', 'url', 'content', 'ip', 'post_title', 'post_url', 'commenter_pw')
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/api/comment/create/
Django Version: 1.5.2
Python Version: 2.7.2 …
Run Code Online (Sandbox Code Playgroud) 让我们考虑一下这个简单的测试代码.
(注意:assertSomething
这里非常简单,但通常我会为手头的任务编写一个更专业的帮助程序,它会查看多个内容并报告多种类型的错误.)
package hello
import "testing"
func TestFoo(t *testing.T) {
assertSomething(t, 2+2 == 4) // line 6
assertSomething(t, 2+3 == 6) // line 7
}
func assertSomething(t *testing.T, expected bool) {
if !expected {
t.Error("Something's not right") // line 12
}
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时go test
,我得到以下内容:
--- FAIL: TestFoo (0.00s)
hello.go:12: Something's not right
FAIL
exit status 1
FAIL kos/hello 0.008s
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1)错误指向第12行 - 为什么?如何t.Error
找出它的调用方式?
2)在帮助程序中,我想指定t.Error
应该查看堆栈级别更高以确定要打印的行号,以便我得到这样的消息:
--- FAIL: TestFoo (0.00s)
hello.go:7: Something's not right …
Run Code Online (Sandbox Code Playgroud) 正如我们最终都知道的那样,规范是一回事,而实现则是另一回事.我们自己造成的大多数错误,但有时并非如此.
我相信制作一个小清单是有用的:
请记得始终发布相关的显卡和驱动程序版本.
让我先从一些背景知识开始:
通过"tribool"我理解一个可以包含以下值之一的变量:true
,false
或null
.
问题是复制int的数组与指向 bool的指针,OP希望有一个尽可能小的tribools数组(或多或少).
使用"一点点"最基本的bit-fu,我提出了一个解决方案,每个tribool使用2位,并允许以16个字节存储OP的64个tribool数组,这是可以的.
我使用的tribool机制非常简单,如:
但后来我想......"比特"的算法定义是:
阿位是指定其中两个同样可能的事件应发生的信息量.
显然,真/假值是1位大.两个真假值整体上是2位大.
那么我们的概念摩擦呢呢?
我的观点是:就所包含信息的大小而言,tribool大于1位但小于2位.
(以上都不是正式的证据,但我相信我们可以同意关于tribool的"大小"严格大于1位且严格小于2.)
我的问题是:
如何以编程方式利用tribool信息少于2位的事实,并在软件(c,c ++?)中实现一个N tribool数组,其内存占用量小于N/4
某些N的字节数?
是的,我确实理解这样的实现并不是真正的硬件友好,并且执行速度比任何具有冗余的常见解决方案都要慢(如OP的问题所示).让我们优化空间,而不是效率.
显然,这种实现需要一种摩博尔的不同表示而不是一对bool(这本身就是多余的,如前所述).该理论认为可以实现这一目标,我希望看到实际的实施.有任何想法吗?
我有一些关于调试符号的问题以及可以用它们做什么,以及调试.我最感兴趣的是有关GCC的答案,但我也很高兴知道它在其他编译器(包括MSVC)下的样子.
首先:
还有一些更实际的问题...... 我怎么能:
我要强调一点,我说的是运行时检查.所有这些都可以通过GDB读取和漂亮打印,但我不知道调试符号本身有多少信息以及GDB也可以访问的源代码中有多少信息.
也许有一个库能够解析调试符号并产生这样的信息?
调试符号的标准化是否足够好以至于我可以期待这种解决方案的某种程度的可移植性?
我有一个字符串列表.
好吧,从概念上讲.它们存储在其他地方,但我想提供一个对象,它就像一个列表(并提供任何必要的事件),具有我可以绑定的属性.
我想在这个数据上建立一个双向绑定,将其显示为一个可修改的列DataGrid
.我有以下问题:
{Binding}
或{Binding Path=.}
在列中,{Binding Path=someField"}
如果我做对了,必须要修改,这听起来很合理).IEnumerable
+ INotifyCollectionChanged
足够吗?)是否有任何解决方案不涉及为集合中的每个String创建一个代理对象?你能建议一个有效的设计吗?
为了让讨论保持在轨道上,让我们假设我想绑定到这样的东西:
class Source {
public String getRow(int n);
public void setRow(int n, String s);
public int getCount();
public void addRow(int position, String s);
public void removeRow(int position);
}
Run Code Online (Sandbox Code Playgroud)
这不完全是我的情况,但当我知道如何绑定到这个时,我想我将能够处理这样的任何情况.
我可以在该Source之上提供一个适配器对象,包含任何必要的接口和事件,但我不希望每行数据都有一个适配器对象.
一个简单的问题:
我想使用虚拟Equals()方法比较两个对象(不是==
).两者都可以为空.
我应该重复一下这句话:
if ((left == null && right == null) || (left != null && left.Equals(right)) {
}
Run Code Online (Sandbox Code Playgroud)
或者这种情况有更优雅的习语吗?