我想有一个参数可以是Int32或的方法Single:
void myMethod( ref object x )
{
//...CodeHere
}
Run Code Online (Sandbox Code Playgroud)
由于C#不允许我在使用时传递对象的特化,out或者ref我发现的解决方案声称将变量赋值给类型的变量object就足够了:
Single s = 1.0F;
object o = s;
myMethod( ref o );
Run Code Online (Sandbox Code Playgroud)
那没用.根据我查看的Microsoft文档,o应该是指针s.我看到的来源表明,分配非基本类型会生成引用而不是new实例.
是否有可能有一种方法,我可以通过Single或Int32或任何其他类型,它是一个专业化object?
我正在寻找一种以最方便的方式序列化一堆C++结构的方法,以便序列化可以跨C++和Java(至少)以及32位/ 64位,大/小端平台移植.要序列化的结构只包含数据,即它们是没有状态或行为的纯数据对象.
我们的想法是将结构序列化为一个八位字节blob,我们可以"存储"在数据库中,并在以后读出.因此,每当结构发生变化时都要避免更改数据库,并且还要避免将每个数据成员分配给字段 - 即我们只希望一个表"一般"将所有内容保存为二进制blob.这应该减少开发人员的工作量,并在结构发生变化时减少更改.
我看过boost.serialize,但不认为有办法实现与Java的兼容性.同样用于继承Java中的Serializable.
如果有一种方法可以通过最好的IDL文件来实现,因为我们已经有了描述结构的IDL文件.
提前干杯!
我正在使用py2app/setuptools构建一个应用程序,所以一旦它创建了应用程序包,我想对dist文件夹采取一些操作,例如创建一个安装程序/上传它.
有办法吗?我找到了一些安装后的解决方案但没有后期构建
或者我可以从我自己的脚本中调用'python setup.py py2app'并执行此操作,但如果可以在setup.py中完成它会更好
我正在寻找人们可能采取哪些方法来检测作为其聚合一部分的实体的变化。我有一些有用的东西,但我并不为之疯狂。基本上,我的存储库负责确定聚合根的状态是否已更改。让我们假设我有一个被调用的聚合根Book和一个Page在聚合内被调用的实体。ABook包含一个或多个Page实体,存储在一个Pages集合中。
首先,插入与更新场景是通过检查聚合根及其实体以确定键的存在来完成的。如果该键存在,则假定该对象曾一度保存到基础数据源中。这使它成为更新的候选者;但对于实体而言,它并不是确定的。对于聚合根,答案是显而易见的,因为只有一个并且它是入口的奇异点,所以可以假设键的存在将决定操作。在我的情况下,再次保存聚合根本身是一个可以接受的场景,以便我可以捕获修改日期。
为了帮助实体本身实现这种行为,我的EntityBase类包含两个简单的属性:IsUpdated(), IsDeleted()。这两个都默认为false。我不需要知道它是否是新的,因为我可以根据密钥的存在来做出决定,如前所述。实现上的方法(在本例中为 Page)将具有将支持数据集更改IsUpdated()为 true 的每个方法。
因此,例如,Page 有一个方法被调用UpdateSectionName(),该方法更改SectionName属性的后备值,该方法是只读的。这种方法被一致使用,因为它允许在执行该数据设置的方法中使用验证器的逻辑连接点(防止实体进入无效状态)。最终结果是我必须this.IsUpdated() = true;在方法的末尾放置一个。
当聚合根被发送到存储库中Save()(逻辑切换到 anInsert()或Update()操作)时,它可以遍历 中的Pages集合Book,查找具有以下三种情况之一的任何页面:
Page将插入没有键的A。IsDeleted = true;删除胜过更新,删除将被提交 - 忽略Page.IsUpdated = true; 将为页面提交更新。这样做可以防止我盲目地更新 Pages 集合中的所有内容,例如,如果 Book 中有数百个 Page 实体,这可能会令人生畏。我一直在考虑检索这本书的副本,并进行比较并仅提交检测到的更改(根据存在和/或比较进行插入、更新和删除),但这似乎是一种非常健谈的方法.
主要缺点是开发人员必须记住在实体中的每个方法中设置 IsUpdated。忘记一个,它将无法检测到该值的变化。我曾考虑过某种自定义后备存储的想法,它可以透明地时间戳更改,这反过来可以使IsUpdated存储库可以用来聚合更新的只读属性。
存储库正在使用一个工作单元模式实现,它的操作基于将聚合根添加到它时生成的时间戳。由于可能有多个实体排队等待操作,因此在执行实体所属的聚合根操作后立即汇总并执行实体操作。我可以看到更进一步并创建另一个工作单元来处理实体操作并将它们基于实体中使用的某种事件跟踪(这就是我假设市场上的某些 ORM 产品完成类似级别的功能)。
不过,在我继续朝着这个方向前进之前,我很想听听有关这方面的想法/建议/经验。
编辑:一些可能有助于了解的其他信息:
我们为一个客户编写的Web应用程序将被产品化并出售给数十家公司,我们将进行托管.
我可以使用一些关于为每个客户推出单独实例与使用单个(或非常少数)多租户实例的优缺点的指导.
首先,随着我们的提升,我将不得不为每个新客户推出一个单独的应用程序实例(它们将一次上线一个),因为它是唯一的直接选项.我认为,就维护而言,这不会很好地扩展 - 一旦有超过4或5个实例,推出更改将变得非常繁琐并且可能容易出错.除非我们以某种方式自动化.
此外,如果人们需要自定义,单实例哲学似乎可能导致一堆分叉.避免这种情况会很好.
那你有什么经验呢?
奖金问题#1: 10个记录每个记录2m的SQL Server与20m记录的巨大记录之间的性能差异是什么?假设它们都在一个表中,我们主要在单个记录上进行插入和选择.有时,选择位于索引的varchar(12)或日期字段上.
奖金问题#2:我想,为避免分叉,我们必须使自定义可配置,或构建插件架构.但是,这可能会增加进行自定义的成本,而且我不想成为需要一周时间来调整文本框大小的商店之一,而且我不想过度投资基础架构.有什么想法吗?
比例细节
每个客户将拥有相当数量的数据 - 高达数百万条记录.
将会有非常少量的并发用户,每个客户只有少数用户,以及我们最终的少数内部代表.
目前还不清楚每个客户是否需要定制,但我想其中一些可能会定制,也许其中一些变化将是其他客户不希望看到的东西.
我没有使用C的经验,我需要使用PCRE来获得匹配.
这是我的源代码示例:
int test2()
{
const char *error;
int erroffset;
pcre *re;
int rc;
int i;
int ovector[OVECCOUNT];
char *regex = "From:([^@]+)@([^\r]+)";
char str[] = "From:regular.expressions@example.com\r\n"\
"From:exddd@43434.com\r\n"\
"From:7853456@exgem.com\r\n";
re = pcre_compile (
regex, /* the pattern */
0, /* default options */
&error, /* for error message */
&erroffset, /* for error offset */
0); /* use default character tables */
if (!re) {
printf("pcre_compile failed (offset: %d), %s\n", erroffset, error);
return -1;
}
rc = pcre_exec (
re, /* …Run Code Online (Sandbox Code Playgroud) 它看起来确实无害.在我的App Delegate中,我检查NSUserDefaults是否有标志以显示启动时的提示.如果它已设置,那么,在最后applicationDidFinishLaunching:,我这样做:
TipsViewController *vc = [[TipsViewController alloc]
initWithNibName:@“TipsView" bundle:nil];
[window addSubview:vc.view];
[vc release];
Run Code Online (Sandbox Code Playgroud)
这个想法是暂时显示这个观点.(请注意,它不是模态VC.此时没有导航控制器,而且此视图中没有导航栏.)
一旦这个视图被解除,我们将把我们先占的UITabBarController视图添加到窗口并转换到它,然后从主窗口中删除提示视图.我还没有达到解雇观点,因为,好吧,继续阅读.
我的TipsView的VC或多或少都是这样的:
UIView -> view -> File’s Owner (TipsViewController)
UIImageView -> background image
UIView -> tipView -> File’s Owner
UIImageView -> background image
UIScrollView
UILabel (tip text)
UIButton -> touch-up-inside -> -(IBAction)button1:
UIButton -> touch-up-inside -> -(IBAction)button2:
UIButton -> touch-up-inside -> -(IBAction)button3:
Run Code Online (Sandbox Code Playgroud)
源包含所有三个IBAction调用的声明和定义.现在他们两个什么都不做.第三个更改提示text,调整大小以适应,并调整滚动视图contentSize以匹配.
当我运行应用程序时,TipsViewController视图显示就好了.我甚至可以滚动提示文字.然而,当我在任何UIButton上触发内部触摸时,Xcode开始在源头(我在每个IBAction上放置一个断点)中植入我...然后用a EXC_BAD_ACCESS或者拯救 …
我想使用IntelliJ的查找和替换功能来执行以下转换:
// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
要查找的文字:model.put\((.*),(.*)\)
替换为:model\[\\1\] = \\2
但Intellij似乎并不承认\\1并\\2作为反向引用.我也尝试了一个斜杠,但这也不起作用.
我从0-9生成100个随机数,我应该计算每个数字出现的次数.将它存储在10个整数的数组中并计算它.
这是我到目前为止所做的,我无法弄清楚计数部分.
Random r = new Random();
int[] integers = new int[100];
for (int i=0; i<integers.length; i++)
{
integers[i] = (r.nextInt(10)+0);
}
Run Code Online (Sandbox Code Playgroud) c# ×2
java ×2
regex ×2
architecture ×1
asp.net ×1
c ×1
distutils ×1
flash ×1
iphone ×1
multi-tenant ×1
pcre ×1
persistence ×1
py2app ×1
python ×1
scaling ×1
setuptools ×1
uibutton ×1
uiwindow ×1