几天前,我读到了有关宽列存储类型的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) 以前我问了一个关于组合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之间的区别,然后我会谈到这个解释差异的主题.
我的问题是:
是什么导致上述代码和Linux之间的这种不同sha256sum? …
我正在尝试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,以myArray在myArray.Add(0xb8);.
我认为它应该是一种字节形式!也许 !
为什么不给出任何错误以及如何实现这种情况(我的意思是从字符串添加字节到myArray)?
我正在尝试从另一个 .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 只是通过 …
我正在尝试使用一种安全的方式为文件创建校验和(大于 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) 我正在尝试使用以下代码加载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中使用。所以我说这只是为了表明它是用于组装的!
那么有什么方法可以摆脱它(类似于卸载此程序集)?
注意:我正在编写代码来运行垃圾收集器,但此问题仍未解决。
谢谢。
我需要一些帮助在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) 我试图计算一个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并改进此过程以获得更快的计算?
谢谢
我正在尝试创建一个调度表,该表更改由AllocateMemoryOnRemoteProcess.
其中的一个问题,我遇到的是几乎所有的Calls都挺Jumps都near和relative和,只要我加载新的位置的组件,然后这些指令将无法正常工作。
据我所知,我应该将这些说明转换为far jump或far call我在谷歌搜索期间看到的解决方案之一正在使用push并ret喜欢:
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) 我有包含 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
我正在研究程序如何在内存中保存数据.所以我创建了一个包含全局双变量的简单程序:
#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:
当我将其转换为十六进制时,它显示:
当我在内存中浏览此变量的位置时,它就像:
所以我将512从十进制转换为十六进制,它是200,但在第二张图片中没有类似的200.
第二张图片中的4080000000000000是多少,它是如何等于512的?