小编axe*_*axe的帖子

SQLite NOT IN查询很慢

我有两张桌子 - KeysKeysTemp. KeysTemp包含应Keys使用该Hash字段合并的临时数据.这是查询:

SELECT
    r.[Id]
FROM
    [KeysTemp] AS k
WHERE
    r.[Hash] NOT IN (SELECT [Hash] FROM [Keys] WHERE [SourceId] = 10)
Run Code Online (Sandbox Code Playgroud)

我在表SourceIdHash字段上都有索引:

CREATE INDEX [IdxKeysTempSourceIdHash] ON [KeysTemp]
(
    [SourceId],
    [Hash]
);
Run Code Online (Sandbox Code Playgroud)

Keys表的索引相同,但查询仍然很慢.临时表中有5行,主表中有大约60000行.通过散列查询大约需要27毫秒,但查询这5行大约需要3秒.

我也试过分裂指数,即用于创建不同的索引SourceIdHash,但它的工作方式相同.OUTER JOIN在这里工作得更厉害.如何解决这个问题?

更新 如果我WHERE [SourceId] = 10从查询中删除它在30ms内完成,那很好,但我需要这个条件:)

谢谢

sql sqlite performance

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

.NET AnyCPU项目链接特定于平台的库

可能重复:
加载x86或x64程序集

我正在尝试编译任何CPU .NET项目,但我必须链接SQLite库,它具有x86和x64平台的不同版本.仅将DLL版本更改为x64没有帮助,应用程序无法启动,我需要使用x64引用重新编译代码.当我添加x86和x64引用时,由于冲突,它无法编译.我无法使用x86编译应用程序,因为我正在使用的系统COM库之一在WOW64下无法运行.

All 32-bit VSS applications (requesters, providers, and writers) must run as native 32-bit or 64-bit applications. Running them under WOW64 is not supported

http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/eadf5dcd-fbd1-4224-9a56-b5843efebb15/

所以我需要构建任何CPU项目,但我目前看到的唯一解决此问题的方法是为x86和x64重复项目.有更好的吗?

UPDATE

当我在项目中引用x64库,但尝试加载x86库时,我得到以下异常.

The located assembly's manifest definition does not match the assembly reference.

.net 64-bit x86 project anycpu

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

获取磁盘/集群号上的文件偏移量

我需要获取有关文件在 NTFS 磁盘上物理位置的任何信息。绝对偏移量,集群 ID .. 任何东西。我需要扫描磁盘两次,一次获取分配的文件,另一次我需要直接在 RAW 模式下打开分区并尝试找到其余数据(来自已删除的文件)。我需要一种方法来理解我找到的数据与我之前作为文件处理的数据相同。当我以原始模式扫描磁盘时,我发现的数据的偏移量可以以某种方式转换为文件的偏移量(包含有关磁盘几何结构的信息)。有没有办法做到这一点?其他解决方案也被接受。现在我正在玩 FSCTL_GET_NTFS_FILE_RECORD,但目前无法使其工作,我不确定它会有所帮助。

更新

我发现以下函数 http://msdn.microsoft.com/en-us/library/windows/desktop/aa364952(v=vs.85).aspx 它返回包含 nFileIndexHigh 和 nFileIndexLow 变量的结构。文档说

The identifier that is stored in the nFileIndexHigh and nFileIndexLow members is called the file ID. Support for file IDs is file system-specific. File IDs are not guaranteed to be unique over time, because file systems are free to reuse them. In some cases, the file ID for a file can change over time.

我真的不明白这是什么。我无法将它连接到文件的物理位置。以后是否可以从 MFT 中提取此文件 ID?

更新

发现这个: This identifier and …

windows file-io winapi ntfs

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

Handle不支持与CreateFile的同步操作

我需要以原始模式打开读取磁盘,因此我使用 CreateFile API 函数来实现此目的。

private static FileStream OpenDisk(string drive)
{
    // Try to open hard disk drive in raw mode for reading
    SafeFileHandle safeHandle = Native.CreateFile(
        string.Format(@"\\.\{0}", drive),
        FileAccess.Read,
        FileShare.Read,
        IntPtr.Zero,
        FileMode.Open,
        FileAttributes.ReadOnly | FileAttributes.Device,
        IntPtr.Zero);

    // Check if the drive was successfully opened
    if (safeHandle.IsInvalid)
    {
        Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
    }

    // Create file stream on the file for reading
    return new FileStream(safeHandle, FileAccess.Read);
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从流中读取时出现以下错误

Handle does not support synchronous operations. The parameters to the FileStream constructor may need to be …

.net c# winapi createfile

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

global std :: string和一个定义规则

我有一个包含以下定义的头文件

const std::string error[] = {"a", "b"};
Run Code Online (Sandbox Code Playgroud)

现在我将这个文件包含在两个不同的翻译单元中并编译源代码.一切正常,但为什么呢?预计这会打破one definition rule.

现在更有趣的是,我正在改变类型

const char* error[] = {"a", "b"};
Run Code Online (Sandbox Code Playgroud)

这是预期的错误

multiple definition of `error'
Run Code Online (Sandbox Code Playgroud)

它的工作原理相同的方法进行的std :: string为int,char,short和其他整型.这是什么?

c++ one-definition-rule

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

无法发现使用PyBluez创建的服务

我正在尝试使用PyBluez在Python上创建一个简单的蓝牙服务,看起来它的工作原理,但我找不到我的手机和PyBluez本身的服务.当我使用PyBluez进行搜索时,我能够发现我的手机蓝牙,而不是使用PyBluez创建的服务器.下面的代码有什么问题?

import bluetooth

server_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )

port = 0 # automatically choose port
server_sock.bind(("",port))
server_sock.listen(1)

uuid = "1e0ca4ea-299d-4335-93eb-27fcfe7fa848"
bluetooth.advertise_service( server_sock, "FooBar Service", uuid )

client_sock,address = server_sock.accept()
print "Accepted connection from ",address

data = client_sock.recv(1024)
print "received [%s]" % data

client_sock.close()
server_sock.close()
Run Code Online (Sandbox Code Playgroud)

我正在启用服务可见性hciconfig hci0 piscan,因此我的手机能够找到一个名为我的PC的蓝牙设备,但不是我创建的服务(我的意思FooBar Service).我也无法使用sdptool browse命令找到我的服务.

我误解了什么吗?如何连接到我创建的服务?

更新

以下是在带有D-Link蓝牙适配器的Windows 7 PC上执行的下面提到的代码结果.

在此输入图像描述

更新

最后,当我从另一台计算机运行客户端时它工作.它在本地不起作用,但为什么我无法从任何设备发现此服务?我应该做些什么来使它像普通的蓝牙服务一样?

python visibility bluetooth

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

Windows注册表配置单元文件

我需要一个描述microsoft windows注册表配置文件格式的文档.我唯一能找到的是这一个

http://www.sentinelchicken.com/data/TheWindowsNTRegistryFileFormat.pdf

但它与真正的注册表文件格式没有任何共同之处.这里描述的大部分内容根本不起作用.例如,在我的大多数本地文件中,"下一个配置单元的相对偏移量"为0.指向文件中最后一个hbin的指针指向hbin的中间.我知道微软没有记录这个,但我知道人们正在为注册表文件编写解析器,所以我认为应该有一个?有人知道更好的文件吗?

提前致谢.

windows format registry hive

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

C#get string用换行符替换NULL

我有一个包含unicode字符串列表的字节数组.每个字符串都以0x00 0x00.Encoding.Unicode.GetString工作,但它返回一个连接字符串.我希望有换行符.

一种可能的解决方案是0x00 0x00用换行符替换序列,然后用上面提到的函数将字节数组转换为字符串,但我不知道如何做到这一点.有任何想法吗?

c# string unicode bytearray

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

不使用系统时钟的时间测量

有没有办法在不使用系统时钟的情况下测量linux/unix中的经过时间?问题是通过测量在某些情况下,该系统时钟的变化和经过时间timegettimeofday或其他任何东西一样,让不正确的结果.

我正在考虑创建单独的线程,它在sleep(100)内部执行循环并计算重复次数.

更好的解决方案?

c++ linux time measure elapsedtime

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