小编rai*_*syn的帖子

OrientDB,如何检索以前的记录版本

我目前正在进入OrientDB进行研究,以评估图数据库的版本控制功能.

OrientDB中的每条记录都有一个@version属性,每次更新记录时都会增加.这为版本控制支持提供了指示.我已经设置了一个简单的例子(使用OrientDB SQL)来测试它:

create class Product
create property Product.name string
create property Product.price integer
insert into Product (name, price) values ('Fridge', 449)
update Product set price = 479 where name = 'Fridge'
select from Product
Run Code Online (Sandbox Code Playgroud)

执行上面的语句后,我得到以下查询结果:

{
    "result": [
        {
            "@type": "d",
            "@rid": "#14:0",
            "@version": 2,
            "@class": "Product",
            "name": "Fridge",
            "price": 479
        }
    ],
    "notification": "Query executed in 0.031 sec. Returned 1 record(s)"
}
Run Code Online (Sandbox Code Playgroud)

在此数据库状态中 - 如何检索记录的先前版本(在这个简单的情况下为版本1)?这是通过OrientDB SQL语句和/或通过OrientDB Java API实现的吗?如果不是 - 那么@version属性的目的是什么?

感谢您的帮助!

versioning version-control graph-databases orientdb

7
推荐指数
1
解决办法
2868
查看次数

LALR分析器生成器实现问题

我正在尝试实现LALR解析器生成器,如"编译器原理技术和工具"(也称为"龙书")中所述.

很多已经有效.解析器生成器当前能够生成完整的转到图.

Example Grammar:
                   S' --> S
                   S  --> C C
                   C  --> c C
                   C  --> d

Nonterminals: S', S, C
Terminals: c, d
Start: S'
Run Code Online (Sandbox Code Playgroud)

转到图:

I[0]---------------+      I[1]-------------+
| S' --> . S   , $ |--S-->| S' --> S . , $ |
| S  --> . C C , $ |      +----------------+
| C  --> . c C , c |
| C  --> . c C , d |      I[2]--------------+
| C  --> . d   , …
Run Code Online (Sandbox Code Playgroud)

parsing lalr parser-generator context-free-grammar

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

C#反射,改变方法的主体

是否可以在运行时更改方法体?

class Person
{
    public void DoSth()
    { Console.WriteLine("Hello!"); }
}
Run Code Online (Sandbox Code Playgroud)

我想有一个简单的输入字段(如文本框),我可以在运行时编写方法体源代码.

文本框可能包含以下数据:

for (int i = 0; i < 5; i++)
     Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)

应该在什么时候进行

new Person().DoSth()
Run Code Online (Sandbox Code Playgroud)

叫做.

在C#(使用Reflection)中是否可以(或如何)?
感谢您的帮助.

编辑:
如果上述情况不可能,是否可以在运行时创建一个新方法并调用它?

c# code-generation

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

最快的安全排序算法实现

我花了一些时间在C#中实现快速排序算法.完成后我比较了我的实现速度和C#的Array.Sort-Method.

我只是比较了随机int数组的速度.

这是我的实现:

static void QuickSort(int[] data, int left, int right)
{
    int i = left - 1,
        j = right;

    while (true)
    {
        int d = data[left];
        do i++; while (data[i] < d);
        do j--; while (data[j] > d);

        if (i < j) 
        {
            int tmp = data[i];
            data[i] = data[j];
            data[j] = tmp;
        }
        else
        {
            if (left < j)    QuickSort(data, left, j);
            if (++j < right) QuickSort(data, j, right);
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

性能(当排序长度为100000000的随机int []时):
   - 我的算法:14.21秒 …

c# sorting algorithm

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

如何通过网络发送原始数据?

我有一些数据存储在字节数组中。该数据包含一个 IPv4 数据包(其中包含一个 UDP 数据包)。

我想使用 C#(首选)或 C++ 通过网络原始发送这个数组。例如,我不想使用 C# 的 udp-client。

有谁知道如何执行此操作?

c# networking network-programming network-protocols

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

有效枚举子集

我目前正在研究数学优化问题的算法,并且必须处理以下情况.

在很多情况下,算法需要确定在这种情况下哪个子集S⊂N最好.
N = {0,1,2,...,126,127}
| S | ∈{0,1,2,3,4,5}(子集的大小在0到5之间)

这给出了可能的子集总数265.982.833.(binom(128,5)+ binom(128,4)+ ... + binom(128,0))

如果我预先计算所有可能的子集并将它们存储在一个数组中,那么这个数组将具有265.982.833个条目和大约1,27 GB的内存占用,而没有任何优化和子集作为字节数组的幼稚存储.

在这种情况下,当算法需要知道哪些元素在索引i的特定子集中时,只需要查表.然而,巨大的内存要求是不可接受的.

所以我的问题基本上是,如果有人能够想到一个算法来有效地计算基于索引i的子集中的元素,而不是需要预先计算的数组.


EDIT包含样本:
lookupTable [0] = {}
lookupTable [1] = {0}
...
lookupTable [127] = {126}
lookupTable [128] = {127}
lookupTable [129] = {0,1}
lookupTable [ 130] = {0,2}
...
lookupTable [265982832] = {123,124,125,126,127}

algorithm optimization set

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

如何只读一个字节数组?

考虑以下代码:

static int Main() {
     byte[] data = File.ReadAllBytes("anyfile");
     SomeMethod(data);
     ...
}
static void SomeMethod(byte[] data) {
     data[0] = anybytevalue; // this line should not be possible!!!
     byte b = data[0];       // only reading should be allowed
     ...
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在C#中只读传递byte []?复制不是解决方案.我不想浪费内存(因为文件可能会变得非常大).请记住表现!

c# bytearray readonly readonly-collection

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

如何从任何IP和任何端口接收UDP数据包?

我想用C#的UdpClient来监听任何收到的UDP数据包.我想从任何IP和任何端口接收数据包.

我尝试了以下方法:

UdpClient udpClient = new UdpClient(0);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.Receive(ref ep);
Run Code Online (Sandbox Code Playgroud)

但没有成功.

有谁知道什么是错的?提前致谢!

c# networking udp network-programming udpclient

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