小编use*_*142的帖子

windows如何计算卷唯一ID?

据我所知,Windows驱动程序(ftdisk)为它在系统上找到的每个卷创建对象"HardDiskVolume"并为其创建注册表记录:

HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\
\??\Volume{GUID} = BINARY_DATA
Run Code Online (Sandbox Code Playgroud)

从那时起,卷被安装为 \??\Volume{GUID}

BINARY_DATA用于将此驱动器映射到\DosDevices\<DISK_NAME>同一注册表配置单元中,以便磁盘具有字母.

BINARY_DATA必须对于卷是唯一的,即使我把这个磁盘放到另一台PC上也不应该更改,对吧?

我的观点是:

  1. GUID在这里是什么?是每次Windows启动时由ftdisk生成的随机数吗?
  2. Windows如何计算BINARY_DATA?

我读过lpVolumeSerialNumber使用GetVolumeInformation.它只是长整数,看起来不像这样BINARY_DATA.

我相信 BINARY_DATA是函数来自lpVolumeSerialNumber(当卷格式化时由OS生成)和其他东西:

BINARY_DATA= F(VolumeSerialNumber, SOMETHING).
Run Code Online (Sandbox Code Playgroud)

什么是SOMETHING?

我已经阅读了MSDN和Russinovich/Solomon的书,但仍然无法得到它.


哦,我找到了.

它说"注册表存储在基本磁盘卷驱动器号和卷名的值中的数据是Windows NT 4样式磁盘签名和与卷关联的第一个分区的起始偏移量".

但什么是"Windows NT 4风格的磁盘签名"?

从这里:http: //www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/resguide/diskover.mspx?mfr = true

那就是"每个硬盘的第一个扇区中的四字节磁盘签名"

所以我使用HxD工具,从我的BINARY_DATA中找到了这四个字节,我发现它在第1B0行和第08到0B列.

看起来互联网上还有一个人知道它:http: //www.pcreview.co.uk/forums/image-copy-drive-wont-boot-properly-t3761034.html))

因此,如果我更改磁盘上的MBR,它将丢失其信件:)

windows volume

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

MySQL枚举空值

我试图了解如何在mysql中使用枚举.如果我将任何内容插入枚举类型之外的枚举字段 - mysql插入空字符串(值为0).

  • 水果ENUM('APPLE','BANANA','PEACH');
  • INSERT ...... fruit ='BANNANA'

简单的拼写错误和MySQL插入空值,打破数据库完整性并使枚举非常无用.

CHECK约束可能会有所帮助,但MySQL不支持它们(2011年"最受欢迎"数据库非常有趣)

我看到的唯一方法是编写触发器以防止空字符串,但是为这样一个简单的情况编写触发器太多了.

有没有办法为枚举禁用"空字符串"MySQL行为?

谢谢

mysql

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

为什么你不能在C中返回固定大小/ const数组?

我想知道为什么不能在C中返回数组?毕竟,数组只是一个由大小信息支持的指针(以便sizeof工作).首先我认为这是为了防止我返回我的堆栈上定义的数组,但没有什么能阻止我将指针返回到我的堆栈上的东西(gcc警告我,但代码编译).而且我也可以返回字符串文字,这是静态存储的字符数组.顺便说一句,在lunux中存储它.rodata,并且const数组也存储在那里(检查它objdump),所以我可以返回数组(将它转换为指针)并且它可以工作,但是AFAIK这只是特定于实现的(另一个操作系统) /编译器可以在堆栈上存储const).

我有2个想法如何实现数组返回:只需将其复制为值(就像它为结构所做的那样.我甚至可以将数据包装到结构中!!),并自动创建指针或允许用户返回const数组和创建这样的数组应具有静态存储持续时间的合同(就像它对字符串所做的那样).这两个想法都是微不足道的!所以,我的问题是为什么K&R没有实现类似的东西?

c arrays pointers

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

Java8中的"Autocloseable"数组或集合

Autocloseable应始终使用try-with-resources.至少Intellij检查表明了这一点.所以,如果我有一个生成Foo该实现的代码,Autocloseable我应该这样做:

try (final Foo foo = getFoo()) {
    foo.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

但是如果我有功能返回Foo[]怎么办?或接受Foo[](或Collection<Foo>)作为其参数的函数?

我怎么用它try-with-resources?查看以下功能:

Foo[] getFoos();
doAll(Foo... foo);
Run Code Online (Sandbox Code Playgroud)

我想做点什么 doAll(getFoos())

我怎样才能做到这一点?

java java-8 try-with-resources autocloseable

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

重叠 I/O 的 GetOverlappedResult(bWait=TRUE) 与 WaitForSingleObject()

当我在 Win32 api 上以重叠方式打开和读取文件时,我有几种方法来完成 IO 请求,包括等待文件句柄(或重叠结构中的事件)

  • WaitForSingleObject
  • GetOverlappedResult与 bWait=TRUE

这两个函数似乎具有相同的效果:线程停止,直到发出句柄或事件信号,这意味着数据被放置在提供给 的缓冲区中ReadFile

那么区别是什么呢?为什么我需要GetOverlappedResult

c windows winapi

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

纱线安装了2个版本的jquery.为什么,除了直接编辑yarn.lock之外我该怎么办?

yarn add foo
yarn add jquery-form
yarn add jquery@2.2.4
Run Code Online (Sandbox Code Playgroud)

foo声明依赖"jquery@>=2.2.0 <3.0.0",jquery-form声明jquery@>=1.7.2

在我看来我应该有jquery@2.2.4,但这是我的yarn.lock

jquery@2.2.4, "jquery@>=2.2.0 <3.0.0":
  version "2.2.4"
  resolved "..."

jquery@>=1.11.1, jquery@>=1.7.2:
  version "3.3.1"
  resolved ".."
Run Code Online (Sandbox Code Playgroud)

所以,在productuion jquery-form3.3.1,而foo得到2.2.4.我现在有2个不同的jqueries,这是不好的:)

我修好了

jquery@2.2.4, jquery@>=1.11.1, jquery@>=1.7.2, "jquery@>=2.2.0 <3.0.0":
  version "2.2.4"
  resolved "..."
Run Code Online (Sandbox Code Playgroud)

2.2.4现在一切都得到了重温.但我yarn.lock不是你应该手动编辑的东西.

我该怎么解决?

jquery npm package.json yarnpkg

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

ucrtbased.dll 与 ucrtbase.dll

Windows10 的 C 运行时在 ucrtbase.dll 中提供。但他们也有ucrtbased,即“调试版本”。它到底包含什么?如果我有 .pdb(公共符号),为什么还需要 dll 的调试版本?

c windows visual-c++

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

Java / Spring:使用XML“标记” Bean以按类和标记获取特定的Bean

我有几个文件组成的大型XML配置。

我需要让bean实现特定的接口。但是有几种实现方式,所以我必须选择。我想用特殊的“标签”来标记bean,以便轻松获得它:

<bean class="myInterfaceImpl1" tag="beanForMe" />
<bean class="myInterfaceImpl2" />
<bean class="myInterfaceImpl3" />

T get(Class<T> clazz) {
    return factory.getBean(clazz, "beanForMe"); //Returns first one 
}
Run Code Online (Sandbox Code Playgroud)

春天有没有类似的东西?

我发现2解决方法。首先是使用特殊标签ID:

第一

<bean class="myInterfaceImpl1" id="MyInterface-beanForMe" />
Run Code Online (Sandbox Code Playgroud)

但是,当我在IDE中重命名类时,除非我编写IDE插件来支持我的想法,否则一切都会失败。

第二种是将所有“标记”的bean添加到特定列表中,通过id获得它,然后遍历它以找到合适的bean。

但是标签将是最好的选择。你怎么看?

java spring

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

Java堆/池大小

当我启动JVM时,它至少保留{{xms}}个内存,对吗?这意味着这个内存对于JVM进程是私有的(它是malloced),是吗?当JVM需要增加堆储备(mallocs)的内存时.但是多少钱?我不相信它保留的确尽可能多,可能有一定的步骤(池?)大小.

如何配置这个"步长"?

所有这一切都会发生,直到达到{{xmx}}并抛出OOM,对吧?

当JVM启动GC时?不是说xmx,而是保留堆大小(这个池的顶部)?

如果是这样,最好将xms设置为接近xmx以防止许多无用的GC.我会有一个巨大的GC,而不是很多小的,每个GC冻结我的JVM的bug,所以最好有一个,对吗?

java garbage-collection jvm jvm-hotspot jvm-arguments

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

在Windows上使用Python Behave + non-ascii步骤

Python BDD框架Behave在其中有以下代码 runner.py

with open(filename) as f:
    # -- FIX issue #80: exec(f.read(), globals, locals)
    # try:
    filename2 = os.path.relpath(filename, os.getcwd())
    code = compile(f.read(), filename2, 'exec')
Run Code Online (Sandbox Code Playgroud)

如您所见,没有提供字符集open.根据其文档,locale.getpreferredencoding用于此类案件.

但在Windows上,此函数始终返回一个字节的字符集(所谓的"非字符串程序的字符集").适用于拉丁语的Windows-1252,适用于西里尔语的Windows-1251等.

因此,UTF-8 py文件总是被破坏.

我的问题是,如果想要超出1字节字符集,我如何在Windows上使用非脚本步骤定义?

python windows unicode python-behave

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