小编ᔕIᑎ*_*ᑎᗪI的帖子

比较Cassandra结构与关系数据库

几天前,我读到了有关宽列存储类型的NoSql和Apache-Cassandra的全部内容.我的理解是Cassandra包括:

密钥空间(如关系数据库中的数据库)并支持许多列族或表(与关系数据库中的表相同)和无限行.

来自Stackoverflow标签:

宽列存储是一种键值数据库.它使用表,行和列,但与关系数据库不同,列的名称和格式可能因同一个表中的行而异.

在Cassandra中,所有行(在表中)都应该有一个行键,然后每个行键可以有多个列.我读到了关系数据库和NoSql(Cassandra)的实现和存储数据的差异.

但我不明白结构之间的区别:

想象一下我有一张表(或Cassandra中的列族)的场景:

当我执行这样的查询(Cql)时:

Select * from users;
Run Code Online (Sandbox Code Playgroud)

它给你我的结果,你可以看到:

lastname | age  | city          | email               
----------+------+---------------+----------------------
      Doe |   36 | Beverly Hills |   janedoe@email.com       
    Jones |   35 |        Austin |     bob@example.com        
    Byrne |   24 |     San Diego |  robbyrne@email.com         
    Smith |   46 |    Sacramento |   null                      
  Jones2  | null |        Austin |     bob@example.com       
Run Code Online (Sandbox Code Playgroud)

所以我使用打击查询在关系数据库(MsSql)中执行上述场景:

select * from [users] 
Run Code Online (Sandbox Code Playgroud)

结果是:

lastname    age      city              email                    
    Doe     36       Beverly Hills     janedoe@email.com          
    Jones   35       Austin            bob@example.com             
    Byrne   24       San …
Run Code Online (Sandbox Code Playgroud)

cassandra wide-column-store

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

获取文件SHA256哈希码和校验和

以前我问了一个关于组合SHA1 + MD5 的问题,但之后我理解计算SHA1然后延迟文件的MD5并不比SHA256快.在我的情况下,4.6 GB文件大约需要10分钟,在Linux系统中使用默认实现SHA256和(C#MONO).

public static string GetChecksum(string file)
{
    using (FileStream stream = File.OpenRead(file))
    {
        var sha = new SHA256Managed();
        byte[] checksum = sha.ComputeHash(stream);
        return BitConverter.ToString(checksum).Replace("-", String.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我读了这个主题,并以某种方式根据他们所说的改变我的代码:

public static string GetChecksumBuffered(Stream stream)
{
    using (var bufferedStream = new BufferedStream(stream, 1024 * 32))
    {
        var sha = new SHA256Managed();
        byte[] checksum = sha.ComputeHash(bufferedStream);
        return BitConverter.ToString(checksum).Replace("-", String.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它没有这样的感情,需要大约9分钟.

然后我尝试通过sha256sumLinux中的命令测试我的文件中的相同文件,它需要大约28秒,上面的代码和Linux命令都给出相同的结果!

有人建议我阅读Hash Code和Checksum之间的区别,然后我会谈到这个解释差异的主题.

我的问题是:

  1. 是什么导致上述代码和Linux之间的这种不同sha256sum? …

c# mono checksum hashcode sha256

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

将十六进制文件从文件添加到List <byte>

我正在尝试List<byte>从包含字符串(十六进制)的文件中创建一个.定义是:

List<byte> myArray = new List<byte>();
Run Code Online (Sandbox Code Playgroud)

如果我想直接添加我的信息,我会使用以下内容:

  myArray.Add(0xb8);
Run Code Online (Sandbox Code Playgroud)

注意:没有任何报价或双引号.

问题是我想从文件中做同样的事情!现在我想知道什么0xb8是类型,所以我使用以下代码:

0xc3.GetType().ToString()
Run Code Online (Sandbox Code Playgroud)

结果是:System.Int32 !!!!

但是当我从文件中读取字符串并使用这样的代码时,它会给我以下错误.

代码:

 Line = "0xb8";
myArray.Add(Convert.ToInt32(Line));
Run Code Online (Sandbox Code Playgroud)

错误:

Argument 1: cannot convert from 'int' to 'byte'
Run Code Online (Sandbox Code Playgroud)

而且很清楚.因为唯一的重载myArray只能byte作为一个参数.是什么让这么复杂,我是为什么,当我加不给我任何错误Int32,以myArraymyArray.Add(0xb8);.

我认为它应该是一种字节形式!也许 !

为什么不给出任何错误以及如何实现这种情况(我的意思是从字符串添加字节到myArray)?

c# arrays hex byte

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

等待另一个方法调用,然后继续结果

我正在尝试从另一个 .dll 文件调用方法。它通过 VPN 发送消息,然后从另一台计算机返回 RecievedMessage。

正如您现在发送和接收消息需要时间,VpnObject只是发送消息,我应该等待侦听器调用 RecievedMessage。

这个方法是这样的!

    public string RecievedMessage()
    {
        string Recieved ;
        // Some VPN Code  and then return the result;
        return Recieved;
    }

    public string SendAndRecieveMessage(string MessageToSend)
    {
        string RecievedAnswer = string.Empty;

        // Now Sending Message through the VPN
        VpnObject.SendMessage(MessageToSend);

        //Then want to Recieve the answer and return the answer here .

        return RecievedAnswer;
    }
Run Code Online (Sandbox Code Playgroud)

我只是在想如何等待RecievedMessage调用然后返回结果。

您知道使用变量并为其赋值和检查很简单,while但它会显着降低性能。

有没有办法从调用SendAndRecieveMessage时继续RecievedMessage?(我认为这是 async 和 await 但不知道如何!)

编辑:VpnObject 只是通过 …

c# invoke

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

使用 SHA1+MD5 的组合

我正在尝试使用一种安全的方式为文件创建校验和(大于 10GB !)。

SHA256 对我来说已经足够安全了,但是这种算法的处理成本太高,而且不适合。好吧,我知道 SHA1 和 MD5 校验和在冲突中都是不安全的。

所以我只是认为最快和最安全的方法是将 MD5 与 SHA1 结合,例如:SHA1+MD5,我认为没有办法同时获取具有相同 MD5 和 SHA1 的文件(碰撞)。

那么结合 SHA1+MD5 对文件校验和是否足够安全?或者是否有任何类似碰撞的攻击?

我以两种方式使用 c# mono(Bufferstream 和不使用 Bufferedstream)

    public static string GetChecksum(string file)
    {
        using (FileStream stream = File.OpenRead(file))
        {
            var sha = new SHA256Managed();
            byte[] checksum = sha.ComputeHash(stream);
            return BitConverter.ToString(checksum).Replace("-", String.Empty);
        }
    }

    public static string GetChecksumBuffered(Stream stream)
    {
        using (var bufferedStream = new BufferedStream(stream, 1024 * 32))
        {
            var sha = new SHA256Managed();
            byte[] checksum = sha.ComputeHash(bufferedStream);
            return BitConverter.ToString(checksum).Replace("-", String.Empty); …
Run Code Online (Sandbox Code Playgroud)

checksum md5 sha1

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

加载后删除装配

我正在尝试使用以下代码加载MSIL程序集:

        string PathOfDll = "PathOfMsILFile (Dll)";
            Assembly SampleAssembly;
            SampleAssembly = Assembly.LoadFrom(PathOfDll);
Run Code Online (Sandbox Code Playgroud)

在该程序的结尾,我应该删除该文件:

            File.Delete(PathOfDll);
Run Code Online (Sandbox Code Playgroud)

它导致错误:'System.UnauthorizedAccessException'

Additional information: Access to the path 'Path' is denied .
Run Code Online (Sandbox Code Playgroud)

它与UAC无关,只是因为我在程序开始时加载程序集,而当我想手动删除它时,它表示该文件正在vshost.exe中使用。所以我说这只是为了表明它是用于组装的!

那么有什么方法可以摆脱它(类似于卸载此程序集)?

注意:我正在编写代码来运行垃圾收集器,但此问题仍未解决。

谢谢。

c# .net-assembly

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

在多个变量上使用RANK的快速帮助

我需要一些帮助在SQL Server 2008中为以下内容编写SELECT语句:(示例表)

  Date                       ProductID                       Year                       Price   
  01-01-10                   01                              2009                       1.00   
  02-01-10                   01                              2009                       2.00   
  03-01-10                   01                              2010                       3.00   
  04-01-10                   01                              2010                       4.00   
  05-01-10                   01                              2011                       5.00   
  06-01-10                   01                              2011                       6.00   
  01-01-10                   02                              2009                       1.00   
  02-01-10                   02                              2009                       2.00   
  03-01-10                   02                              2010                       3.00   
  04-01-10                   02                              2010                       4.00   
  05-01-10                   02                              2011                       5.00   
  06-01-10                   02                              2011                       6.00   
  01-01-10                   03                              2009                       1.00   
  02-01-10                   03                              2009                       2.00   
  03-01-10                   03                              2010                       3.00   
  04-01-10                   03                              2010                       4.00   
  05-01-10                   03                              2011                       5.00   
  06-01-10                   03                              2011                       6.00   
  01-01-10 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005 sql-server-2008

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

获得循环的最佳性能

我试图计算一个BigInteger变量,然后将结果添加到数据库.

发生的事情是这样的:

            for (BigInteger i = 0; i < ABigIntegerVariable; i++)
        {
            // add to db and calculate on a BigInteger
        }
Run Code Online (Sandbox Code Playgroud)

所以问题是当我看到任务管理器上的CPU使用率只有8%左右!这个循环需要大约1小时或更长时间!

因此,在尝试计算和添加到数据库时,我没有必要使用计算机.

您是否会告诉我如何使用高计算百分比的CPU并改进此过程以获得更快的计算?

谢谢

c# cpu

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

组装远调用或远跳转(j* 指令)

我正在尝试创建一个调度表,该表更改由AllocateMemoryOnRemoteProcess.

其中的一个问题,我遇到的是几乎所有的Calls都挺Jumpsnearrelative和,只要我加载新的位置的组件,然后这些指令将无法正常工作。

据我所知,我应该将这些说明转换为far jumpfar call我在谷歌搜索期间看到的解决方案之一正在使用pushret喜欢:

push 0xdeadbeef
ret
Run Code Online (Sandbox Code Playgroud)

或者有人建议使用寄存器进行绝对寻址,例如:

mov %eax,0xdeadbeef
jmp %eax
Run Code Online (Sandbox Code Playgroud)

这些解决方案在我的情况下不起作用,因为只要我在函数例程中,更改堆栈状态或在第二种情况下更改寄存器%eax就会导致失败。

有人在这个问题中写道:

  • call far(使用操作码 9A)跳转到一个绝对段和偏移量。即,这就像一次设置 CS 和 ?IP。

所以看来我应该将操作码与9Afor一起使用far calls,但这仅适用于调用,我不知道使用此方法转换各种跳转!

我经常objdump用来反汇编二进制文件,然后使用clang以下命令用作汇编程序:

clang -c MyAsm.asm -m32
Run Code Online (Sandbox Code Playgroud)

但是当我用上面的命令组装时,结果是相对的。

例如什么时候MyAsm.asm是:

call   0x402af2
Run Code Online (Sandbox Code Playgroud)

结果objdump是:

    MyAsm.o:    file format Mach-O 32-bit i386

Disassembly of section __TEXT,__text:
__text:
       0:   e8 …
Run Code Online (Sandbox Code Playgroud)

x86 assembly x86-64 clang objdump

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

从另一个程序集中调用方法

我有包含 MyMethod() 的 Tools.dll 文件,如下所示:

    public void MyMethod()
    {
        global::System.Windows.Forms.MessageBox.Show("Sth");
    }
Run Code Online (Sandbox Code Playgroud)

现在,我尝试从另一个文件运行此汇编方法:

        System.Reflection.Assembly myDllAssembly = System.Reflection.Assembly.LoadFile(@"PATH\Tools.dll");
 myDllAssembly.GetType().GetMethod("MyMethod").Invoke(myDllAssembly, null); //here we invoke MyMethod.
Run Code Online (Sandbox Code Playgroud)

运行后发生“System.NullReferenceException”。它说“对象引用未设置到对象的实例。”

那么我该如何解决它?

我确信这个 .dll 构建事实没有问题。

注意:汇编代码来自:http://www.codeproject.com/Articles/32828/Using-Reflection-to-load-unreferenced-assemblies-a

c# reflection .net-assembly

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

查看内存中的双变量

我正在研究程序如何在内存中保存数据.所以我创建了一个包含全局双变量的简单程序:

#include <iostream>
#include <conio.h>

using namespace std;

double b = 512;

int main(){
    getch();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我想从任何读取内存的程序(在我的案例中为CheatEngine)中搜索内存中的这个双变量时,我看到一些不清楚的东西.

CheatEngine在内存中找到512:

第一张图片

当我将其转换为十六进制时,它显示:

第二张图片

当我在内存中浏览此变量的位置时,它就像:

第3张图片

所以我将512从十进制转换为十六进制,它是200,但在第二张图片中没有类似的200.

第二张图片中的4080000000000000是多少,它是如何等于512的?

c++ memory double cheat-engine

-6
推荐指数
1
解决办法
1444
查看次数