问题列表 - 第29786页

C++的脚本语言

我在脚本语言方面有点生疏,只要它们最近像蘑菇一样突然出现:)

今天我认为有一种脚本语言与C++无缝对话会很好,也就是说,可以使用C++类,对我来说最重要的是,可以编译成C++或者一些DLL/.SO(加上它. h)这样我就可以将它链接到我的C++程序中并使用脚本定义或实现的类.

我知道我可以嵌入任何流行的脚本语言,如lua,ruby,python ......但是接口通常包含某种"eval"函数,用于评估提供的脚本代码.根据用于耦合C++和脚本语言的工具,脚本回调到C++的集成可能或多或少易于编写,但我没有看到任何实际上允许我编写独立模块的脚本语言作为.h和.so/dll暴露给我的程序(可能是生成C++代码的脚本语言).

你知道这样的工具/脚本语言吗?

提前致谢.

PD.我一直在思考Vala或Haskell的GHC.他们生成C,但不生成C++ ......

c++ scripting scripting-language

39
推荐指数
6
解决办法
4万
查看次数

与ZooKeeper的Cassandra交易 - 这有用吗?

我试图在ZooKeeper的帮助下为Cassandra实现一个事务系统.由于我认为我没有足够的数据库实施经验,我想知道我的想法是否原则上有效,或者是否有任何重大缺陷.

以下是步骤的高级描述:

  1. 识别要编辑的所有行(键)和列.让键为[K0..Kn]
  2. 对所涉及的所有行应用写锁定(锁是内存中的Zookeeper实现)
  3. 将旧值复制到Cassandra中由键唯一标识的不同位置:[K'0..K'n]
  4. 使用持久模式存储[K'0..K'n]并将它们映射到ZooKeeper中的[K0..Kn]
  5. 继续将更新应用于数据
  6. 删除ZooKeeper中的条目
  7. 解锁行
  8. 在维护线程上懒惰地删除[K'0..K'n]的条目(cassandra删除使用时间戳,因此K'0..K'n可以重新用于具有较新时间戳的另一个事务)

理由:

  1. 如果在步骤1-4中事务失败,则不应用任何更改,我可以中止事务并删除存储在zookeeper中的任何内容并在cassandra中备份,如果有的话.
  2. 如果在步骤5中事务失败,则使用步骤3中保存的信息来回滚任何更改.
  3. 如果服务器碰巧被清理人员发生故障/崩溃/被盗,在重新启动服务任何请求之前,我会检查来自步骤4的zookeeper中是否有任何密钥,如果是,我会使用这些密钥来获取备份数据由步骤3存储,并将这些数据放到它们所在的位置,从而回滚任何失败的事务.

我担心的一个问题是,如果某些服务器是从群集中分区的,会发生什么.我没有这方面的经验,我的计划是否有效?如果分区发生,它会起作用吗?

database database-design transactions cassandra nosql

4
推荐指数
1
解决办法
3440
查看次数

请确认.NET 4.0中路径长度相关行为的更改

有人可以确认微软改变了.NET 4.0中System.IO的某些classe的路径长度相关行为吗?例如,下面的代码在.NET 3.5上运行正常但在4.0上为我抛出了PathTooLongException.

const string prefix = "C:\\";
const string suffix = ".txt";

var sb = new StringBuilder();
sb.Append(prefix);
for (var i = 0; i < 260 - prefix.Length - suffix.Length - 1; i++)
{
    sb.Append("a");
}
sb.Append(suffix);

var info = new FileInfo(sb.ToString());
Run Code Online (Sandbox Code Playgroud)

此外,调用File.Create(sb.ToString())在.NET 3.5上抛出IOException但在.NET 4.0上抛出PathTooLongException.可能会有更多差异.

这些变化是否记录在某处?

谢谢!

[编辑]

我按照Hans Passant的建议,并在connect.microsoft.com上提交了一份报告.你可以在这里找到它.

.net c# .net-4.0

4
推荐指数
1
解决办法
560
查看次数

JMeter - 在Linux上启动jmeter-server时出现环回地址错误

我正在尝试使用JMeter建立分布式负载测试环境.我需要使用像Linux Live CD这样的便携式设置远程客户端,但每当我尝试在Linux中启动jmeter-server时,我都会收到以下错误...

Created remote object: UnicastServerRef [liveRef: [endpoint:[127.0.0.1:49018](local),objID:[3b0d3d42:12985b7a49b:-7fff, -8459389540436649718]]]
    Server failed to start: java.rmi.RemoteException: Cannot start. testbox01.qa.nwr.lan is a loopback address.
Run Code Online (Sandbox Code Playgroud)

经过大量的谷歌搜索后,我能找到的唯一补救措施是编辑/ etc/hosts文件,使主机名映射到127.0.0.1环回地址以外的其他内容.我已经尝试过使用Ubuntu,Fedora和CentOS,显然他们都默认将主机名设置为127.0.0.l.

我看到它的方式,我有四个选择......

1)为我设置的每个远程测试盒自定义/ etc/hosts文件,其中包含超过20-50个动态DHCP分配的IP地址.

2)找出一种强制Linux本身默认将主机名分配给其DHCP IP地址的方法.这当然是更优雅的解决方案,但我不知道如何做到这一点.谁知道?

3)查找并使用可用作Live CD的Linux发行版,默认情况下不将其主机名映射到127.0.0.1.谁知道一个?

4)深入了解JMeter的代码并开始使用电线,但如果涉及到这一点,我会尽快使用另一个开源工具,具有更细的功能集,但其分布式架构不会遇到此问题.

如果有人有任何建议,我将不胜感激.谢谢!

linux distributed loopback jmeter

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

如何在VC++中使用set_intersection和std :: set?

我正在尝试用VC10编译VC6项目...我用set_intersection获取了一个错误C2678:我写了一些例子来理解.任何人都可以解释如何编译这个片段?

#include <vector>
#include <algorithm>
#include <iostream>
#include <set>
#include <string>

int main( )
{
    using namespace std;

    typedef set<string> MyType;

    MyType in1, in2, out;
    MyType::iterator out_iter(out.begin()); 

    set_intersection(in1.begin(),in1.end(), in2.begin(), in2.end(), out_iter);
}
Run Code Online (Sandbox Code Playgroud)

输出 :

c:\ program files\microsoft visual\studio 10.0\vc\include\algorithm(4494):错误C2678:'='binary:没有运算符定义,它采用类型为'const std :: basic_string <_Elem的左手操作数, _Traits,_Ax>'(或没有可接受的转换)

如果我用一个std::vector而不是std::set编译成功.可)

stl visual-c++ visual-c++-2010

5
推荐指数
1
解决办法
3103
查看次数

聚合lambda表达式

int sum0 = 0;
for (int i = 0; i < 10; i++)
{
    sum0 += i;
}

int sum1 = Enumerable.Range(0, 10).Sum();
int sum2 = Enumerable.Range(0, 10).Aggregate((x, y) => x + y);
int sum3 = Enumerable.Range(0, 10).Aggregate(0, (x, y) => x + y);
Run Code Online (Sandbox Code Playgroud)

所有上述4个表达式都在做同样的事情:求0到10之和.我理解sum0和sum1的计算.但是sum2和sum3是什么?为什么lambda在这里使用两个参数(x,y)?

c# lambda

3
推荐指数
1
解决办法
5649
查看次数

C++和C#互操作性:P/Invoke与C++/CLI

在找到C#和C++之间的互操作方法的过程中,我发现这篇文章解释了P/Invoke.

我读了很多文章声称C++/CLI不是精确的C++,需要一些努力来修改原始的C++代码.

我想问一下,当我想要从C#对象中使用一些C++对象(代码/数据)时,最佳方法是什么.

  • 看起来为了使用P/Invoke,我应该提供C风格的API.这是真的吗?我的意思是,有没有办法将C++对象导出到C#,如带有P/Invoke的SWIG?或者,我是否必须为此目的使用SWIG?
  • 将C++更改为C++/CLI有多难?与将C++重写为C#相比,是否值得尝试?C++设计得很好,所以将它实现到C#并不是很重要.
  • (关于主题问题)是否有相反的方式?我的意思是,如果我想使用C++中的C#代码,有没有办法这样做?

c# c++ pinvoke interop c++-cli

12
推荐指数
2
解决办法
5515
查看次数

java中继承的缺点

任何人都可以解释java中继承的缺点

java inheritance

6
推荐指数
2
解决办法
9526
查看次数

如何在ASP.NET MVC中使用Html.Action()将参数传递给Action?

我一直在使用Html.Action("ActionName", "ControllerName")跨控制器调用子操作,而不需要在Views\Shared中拥有视图.这对于显示会话或cookie信息等内容非常有用.

我想传递额外的参数,而不仅仅是访问cookie,Html.Action("ActionName", "ControllerName")因此动作可以根据传递给原始视图的数据执行不同的代码.

我应该使用不同的方法将参数传递给不同控制器中的子操作吗?如何实现这一目标?

asp.net asp.net-mvc asp.net-mvc-2

47
推荐指数
1
解决办法
8万
查看次数

Objective-C Dot语法和Init

我已经阅读了一些片段,提到你不应该在init或dealloc方法中使用dot-notation.但是,我似乎永远无法找出原因.一篇文章顺便提到它与KVO有关,但没有更多.

@interface MyClass : NSObject {
    SomeObject *object_;
}
@property (nonatomic, retain) SomeObject *object;
@end
Run Code Online (Sandbox Code Playgroud)

这个实现不好?

@implementation MyClass 

@synthesize object = object_;

- (id)initWithObject:(SomeObject *)object {
    if (self = [super init]) {
        self.object = object;
    }

    return self;
}
@end
Run Code Online (Sandbox Code Playgroud)

但这很好吗?

@implementation MyClass 

@synthesize object = object_;

- (id)initWithObject:(SomeObject *)object {
    if (self = [super init]) {
        object_ = [object retain];
    }

    return self;
}
@end
Run Code Online (Sandbox Code Playgroud)

在init中使用点符号有哪些缺陷?

syntax objective-c

9
推荐指数
1
解决办法
1517
查看次数