假设您的git历史记录如下所示:
1 2 3 4 5
1-5是单独的修订.你需要删除3,同时仍然保持1,2,4和5.如何做到这一点?
在删除之后有数百个修订版时,是否有一种有效的方法?
虽然C#规范确实包含预处理器和基本指令(#define,#if等),但该语言没有与C/C++等语言相同的灵活预处理器.我认为缺乏这种灵活的预处理器是由Anders Hejlsberg做出的设计决定(尽管不幸的是,我现在找不到这个参考).根据经验,这肯定是一个很好的决定,因为当我做很多C/C++时,会创建一些非常糟糕的不可维护的宏.
也就是说,有很多场景我可以找到一个稍微灵活一点的预处理器.一些简单的预处理器指令可以改进以下代码:
public string MyProperty
{
get { return _myProperty; }
set
{
if (value != _myProperty)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
// This line above could be improved by replacing the literal string with
// a pre-processor directive like "#Property", which could be translated
// to the string value "MyProperty" This new notify call would be as follows:
// NotifyPropertyChanged(#Property);
}
}
}
Run Code Online (Sandbox Code Playgroud)
编写预处理器来处理这样极其简单的情况会不是一个好主意?Steve McConnell在Code Complete中写道(p208):
编写自己的预处理器 如果一种语言不包含预处理器,那么编写一个很容易...
我被撕裂了.将这样一个灵活的预处理器从C#中取出是一个设计决定.但是,我非常尊重的作者提到它在某些情况下可能没问题.
我应该构建一个C#预处理器吗?有没有可以做我想做的简单事情?
最近我与老板就"项目失败"进行了一次小小的争论.三年后,我们将代码库迁移到一个新平台的项目(我已经工作了一年的项目已有1.5年,但我的团队领导工作只持续了几个月)才开始实施.他,以及我公司和客户的高级管理人员(我是你听到很多关于那些可怕的顾问之一.我的订婚是"应用外包")宣称该项目是成功的.我不同意,指出我发现的旧陈述表明,与原始计划相比,部署的延迟最好用几个月来衡量,并且可能用数年来衡量.我解释了我所知道的项目失败,以及失败率背后的研究和统计数据.他回答说这是所有的学术界,他所领导的项目都没有失败,
也许这样的咨询与其他项目有所不同,但似乎这只是一个更漂亮的名字的失败,以避免无法按时,按预算或完整功能交付的耻辱.事实上,他解释说我的公司免费提供了数小时的工作,以便在最大限度的预算内完成项目说了很多.
所以我问你这个:
我的桌面应用程序中有一个庞大的Java对象树,我正在尝试确定将它们作为文件保存到文件系统的最佳方法.
我的一些想法是:
使用DataOutputStream滚动我自己的序列化程序:这将使我能够最大程度地控制文件中的内容,但代价是对其进行微观管理.
使用ObjectOutputStream及其各种相关类的直接旧序列化:虽然因为我发现数据很脆弱,但我没有卖掉它.更改任何对象的结构会破坏它的序列化实例.所以我被锁定在似乎是一个可怕的版本化噩梦.
XML序列化:它并不那么脆弱,但直接序列化的速度要慢得多.它可以在我的程序之外进行转换.
JavaDB:我考虑过这个,因为我很乐意编写JDBC应用程序.这里的区别在于数据库实例仅在打开或保存文件时保持不变.它并不漂亮但是......如果以后需要,它确实可以迁移到中央服务器架构,它引入了以更简单的方式查询数据模型的可能性.
我很想知道其他人的想法.而且我希望我错过了一些比上面更明显,更简单的方法.
以下是从以下答案中剔除的更多选项:
选择所有MSSQL Server登录的SQL查询是什么?
谢谢.不止一个人有我想要的答案:
SELECT * FROM syslogins
Run Code Online (Sandbox Code Playgroud) 如果有人拥有可以查询的点对点系统,则希望
鉴于这些要求:
@cdv:我现在已经看过视频了,它非常棒,尽管我觉得它并没有完全适用于可插拔的发行策略,但肯定是90%的实现。但是,这些问题突出了这种方法的有用差异,这些差异解决了我的一些进一步担忧,并为我提供了后续的参考。因此,尽管我认为这个问题尚待解决,但我暂时接受您的回答。
language-agnostic distributed p2p fault-tolerance machine-learning
什么是导致Xcode难以破解的指令?例如,在Visual Studio下,我可以执行'_asm int 3'或'DebugBreak()'.在一些GCC实现下,它是asm("break 0")或asm("trap").
我在Xcode下尝试了各种组合而没有任何运气.(内联汇编程序工作正常,因此它不是语法问题).
作为参考,这是针对断言宏.我不想在assert.h中使用定义既可移植性,也因为它们似乎在XCode提供的版本中执行了abort().
约翰 - 超级,欢呼.作为参考,int 3语法是Intel Macs和iPhone所需的语法.
Chris - 感谢您的评论,但有很多理由要避免将标准的assert()函数移植到移植到不同平台的代码库.如果您已经解决了滚动自己断言的麻烦,通常是因为您希望保留其他功能(日志记录,堆栈展开,用户交互).
你试图通过'__sert'或类似的实现替换hander的建议不是可移植的.标准'assert'通常是一个宏,虽然它可能映射到Mac上的__assert,但它不在其他平台上.
我开发了一些具有类似行为的类,它们都实现了相同的接口.我实现了一个工厂,它创建适当的对象并返回接口.我正在为工厂写一个单元测试.你得到的只是对象的接口.测试工厂工作正常的最佳方法是什么?
我想知道Java中的答案,但如果有一个跨越语言的解决方案,我想知道它.
答案中的第2号将像其他答案一样完成吗?如果是这样,我将标记另一个接受的答案并重新提出我的问题,以解决返回界面的工厂以及您不知道哪种类型的具体类实现了界面,以及您知道具体类是什么的情况用过的.
我正在使用Windows窗体应用程序(C#),用户在表单中输入数据.在编辑表单中的数据时,用户可以单击表单上的其中一个按钮来执行某些操作.默认情况下,焦点转到单击的按钮,因此用户必须单击返回要编辑的控件才能继续修改表单上的数据.我需要做的是在处理完按钮点击事件后将焦点返回到最后编辑的控件.这是一个示例截图,说明了我在说什么:
用户可以在textbox1,textbox2,textbox3等中输入数据,然后单击按钮.我需要按钮将焦点返回到最近在单击按钮之前具有焦点的控件.
我想知道是否有人有更好的方式来实现这个功能,而不是我想出的.这就是我现在正在做的事情:
public partial class Form1 : Form
{
Control _lastEnteredControl;
private void textBox_Enter(object sender, EventArgs e)
{
_lastEnteredControl = (Control)sender;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Do something here");
_lastEnteredControl.Focus();
}
}
Run Code Online (Sandbox Code Playgroud)
所以我们这里基本上是一个指向最后输入控件的类变量.设置表单上的每个文本框,以便在控件获得焦点时触发textBox_Enter方法.然后,当单击按钮时,焦点将返回到单击按钮之前具有焦点的控件.有人有更优雅的解决方案吗?
java ×3
c# ×2
.net ×1
debugbreak ×1
desktop ×1
distributed ×1
git ×1
macos ×1
oop ×1
p2p ×1
persistence ×1
sql ×1
sql-server ×1
tdd ×1
unit-testing ×1
winforms ×1
xcode ×1