我的应用程序中的代码与此类似:
class A
{
public: int b;
}
class C
{
public: int d;
}
void DoThings (void *arg1, MYSTERYTYPE arg2);
A obj_a;
C obj_c;
DoThings(&obj_a, &A::b);
DoThings(&obj_c, &C::d);
Run Code Online (Sandbox Code Playgroud)
问题是 - MYSTERYTYPE应该是什么?尽管如果你通过printf输出它并且A :: b被打印得很好,那么void*和int都不会工作.
澄清:是的,&A :: b是在C++下定义的.是的,我正试图获得班级成员的抵消.是的,我很棘手.
编辑:哦,我可以使用offsetof().不管怎么说,还是要谢谢你.
在我的分析器报告中,我越来越多地看到依赖注入的基于模拟的测试结果.许多依赖项都是静态的,但是因为我们想要单独测试方法,所以它们会更改为实例成员,如下例所示:
class ShortLivedThing {
IDependency1 dep1;
IDependency1 dep2;
IDependency1 dep3;
...
int TheRealData;
// Constructor used in production
public ShortLivedThing() {
dep1 = new Dep1(); dep2 = new Dep2(); dep3 = new Dep3();
}
// DI for testing
public ShortLivedThing(IDependency1 d1, IDependency2 d2, IDependency3 d3) {
dep1 = d1(); dep2 = d2(); dep3 = d3();
}
}
Run Code Online (Sandbox Code Playgroud)
反过来,依赖关系大部分时间都有其他依赖关系,依此类推.每次在测试之外进行方法调用时,这导致(实际上是"静态")对象树的实例化.每个对象都非常小(只有几个指针),但树效果将其变为不断增加的性能.
我们对于它可以做些什么呢?
我正在寻找创建一个基本的ORM(纯粹是为了好玩),并且想知道,有没有办法返回数据库中的表列表以及每个表的字段?
使用这个,我希望能够循环遍历结果集(在C#中),然后对结果集中的每个表说,执行此操作(例如,使用反射来创建将执行或包含xyz的类).
除此之外,SQL Server的一些优秀在线博客是什么?我知道这个问题实际上是关于在Sql Server中使用系统SP和数据库,我对一般查询没问题,所以我对一些涵盖这种功能的博客感兴趣.
谢谢
我正在尝试清理sql server中的一些电子邮件地址.我可以看到有问题的电子邮件的示例,它们看起来像这样:
abc123 @xyz.com
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行查询来查找这些人时,请说:
NOT CHARINDEX(' ',LTRIM(RTRIM([Email_Address]))) = 0
Run Code Online (Sandbox Code Playgroud)
要么
Email_Address like '% %'
Run Code Online (Sandbox Code Playgroud)
我的查询没有返回结果.
知道是什么给出的吗?
谢谢你的快速解答.这是一个非破碎的空间 - Char(160).sql ASCII()函数派上用场就可以找到它.
我想拥有用户编辑的大文本字段的完整历史记录,使用Django存储.
我见过这些项目:
我有一个特殊的用例,可能超出了这些项目提供的范围.此外,我对这些项目的文档记录,测试和更新情况保持警惕.无论如何,这是我面临的问题:
我有一个模特,喜欢:
from django.db import models
class Document(models.Model):
text_field = models.TextField()
Run Code Online (Sandbox Code Playgroud)
这个文本字段可能很大 - 超过40k - 我希望有一个自动保存功能,每30秒左右保存一次字段.这可能会使数据库变得非常大,显然,如果每次40k都有很多保存(如果压缩可能仍然是10k).我能想到的最佳解决方案是保持最新保存版本和新版本之间的差异.
但是,我担心涉及并行更新的竞争条件.有两种截然不同的竞争条件(第二种情况比第一种情况严重得多):
HTTP事务竞争条件:用户A和用户B请求文档X0,并单独进行更改,生成Xa和Xb.Xa被保存,X0和Xa之间的差异是"Xa-0"("少了一点"),Xa现在被存储为数据库中的正式版本.如果Xb随后保存,则覆盖Xa,差异为Xb-a("b减去a").
虽然不理想,但我并不过分担心这种行为.文档相互重写,用户A和B可能彼此不知道(每个文档都以文档X0开头),但历史保留了完整性.
数据库读取/更新竞争条件:有问题的竞争条件是Xa和Xb同时保存在X0上.会有(伪)代码类似于:
def save_history(orig_doc, new_doc):
text_field_diff = diff(orig_doc.text_field, new_doc.text_field)
save_diff(text_field_diff)
Run Code Online (Sandbox Code Playgroud)
如果Xa和Xb都从数据库中读取X0(即orig_doc是X0),它们的差异将变为Xa-0和Xb-0(与序列化的Xa-0相反,然后是Xb-a,或等效的Xb-0然后Xa b).当您尝试将差异拼接在一起以生成历史记录时,它将在修补程序Xa-0或Xb-0(均适用于X0)上失败.历史的完整性已经受到损害(或者有吗?).
一种可能的解决方案是自动协调算法,该算法可以事后检测这些问题.如果重建历史记录失败,可能会假设已发生竞争条件,因此将失败的修补程序应用于历史记录的先前版本,直到成功为止.
我很高兴能就如何解决这个问题得到一些反馈和建议.
顺便说一句,只要它是一个有用的出路,我注意到这里讨论了Django原子性:
非常感谢你.
在尝试这些教程时(T4教程:创建可重用的代码生成模板)我注意到虽然我使用普通的c#但我没有得到任何智能感知,可能是因为文件扩展名(.tt)
反正不是说Visual Studio将那些.tt文件视为.cs文件,从而获得正确的intellisense帮助吗?
我会很简短,因为我的时间很短,所以如果这不像我希望的那么详细,我会道歉.
我有一些代码:
print("<a href='#'>Some text<sup>®</sup> some more text</a>");
Run Code Online (Sandbox Code Playgroud)
在FF中,这就像我想的那样,整个链接都有下划线.但是在IE中,链接带有下划线,除了在®下,它看起来像连字符上方的符号,看起来很荒谬.
我已经尝试了一些我在Google上找到的建议,但是没有一个建议对实现预期的效果非常有帮助.不幸的是,不能选择在底部添加边框.到目前为止,最好的解决方案是使用CSS在sup标签上完全打破下划线,这仍然使它在FF中工作正常,同时在IE中仍然看起来不那么愚蠢.
如果有人可以帮助解决这个问题,我将不胜感激,我宁愿不通过网站删除<sup>标签,因为我被告知如果我不解决这个困境,我将不得不这样做.
更新:使用sup {"text-decoration:none"}解决方案,现在就可以了.到处都有注册标记,所以整个网站都必须更新,这比我们所有人都认定的更麻烦.感谢那些回复的人.
当foreach通过一个通用的清单荷兰国际集团我经常想做些不同的事在列表中的第一个元素:
List<object> objs = new List<object>
{
new Object(),
new Object(),
new Object(),
new Object()
};
foreach (object o in objs)
{
if (o == objs.First())
{
System.Diagnostics.Debug.WriteLine("First object - do something special");
}
else
{
System.Diagnostics.Debug.WriteLine("object Do something else");
}
}
Run Code Online (Sandbox Code Playgroud)
这将输出:
First object - do something special
object Do something else
object Do something else
object Do something else
这一切都很好,花花公子.
但是,如果我的通用列表是值类型,则此方法将失败.
List<int> ints = new List<int> { 0, 0, 0, 0 };
foreach (int i in …Run Code Online (Sandbox Code Playgroud) CruiseControl.NET中的sourcecontrol块可以定位TortoiseSVN吗?
刚收到评论评论我静态导入该方法并不是一个好主意.静态导入是来自DA类的方法,该类主要使用静态方法.因此,在业务逻辑的中间,我有一个似乎属于当前类的da活动:
import static some.package.DA.*;
class BusinessObject {
void someMethod() {
....
save(this);
}
}
Run Code Online (Sandbox Code Playgroud)
审稿人并不热衷于我改变代码而我没有,但我确实同意他.给出非静态导入的一个原因是,在定义方法的地方很混乱,它不在当前类中而不在任何超类中,所以它也有一段时间来识别它的定义(基于Web的审查系统没有可点击的IDE之类的链接:-)我真的不认为这很重要,静态导入仍然很新,我们很快就会习惯定位它们.
但另一个原因,我同意的是,一个不合格的方法调用似乎属于当前对象,不应该跳转上下文.但如果确实属于它,那么扩展超级类是有意义的.
所以,当它是有意义的静态导入的方法呢?你什么时候做的?您是否喜欢不合格电话的样子?
编辑:流行的观点似乎是静态导入方法,如果没有人会把它们混淆为当前类的方法.例如,java.lang.Math和java.awt.Color中的方法.但是如果abs和getAlpha不模糊,我不明白为什么readEmployee是.在许多编程选择中,我认为这也是个人偏好的事情.
感谢您的回复,我正在结束这个问题.
.net ×1
atomic ×1
c# ×1
c++ ×1
class ×1
concurrency ×1
css ×1
django ×1
html ×1
intellisense ×1
java ×1
pointers ×1
sql ×1
superscript ×1
svn ×1
t-sql ×1
t4 ×1
tortoisesvn ×1
underline ×1