小编Jim*_*hel的帖子

Windows API中提供了哪些定期计时器对象?

在研究用于获取比.NET定时器对象提供的15毫秒的分辨率更好(见选项/sf/ask/262082271/)我正在查看Windows提供的不同计时器对象.我发现了以下内容:

Windows API中是否还有其他计时器类型?

winapi timer

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

如何在数据流中找到循环/重复?

我在采访中遇到了一个有趣的问题.但是我无法回答它,也没有在Google上找到它.

问题如下:

您将获得一个数据流.在变量声明的帮助下,您可以如何查找数据中是否存在重复或循环.

数据流的示例是:

100100100100
0001000100010001
100100010001
10...0010....010....01(where 0....0 is 0^10^10^10)
Run Code Online (Sandbox Code Playgroud)

怎样才能解决这个问题?是否存在针对此类问题的算法?

algorithm data-structures

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

托管原型中的 bool 与 BOOLEAN

我正在尝试在 C# 中为[CreateSymbolicLink][1]API 函数创建一个托管原型。WinBase.h 中的原型是:

BOOLEAN APIENTRY CreateSymbolicLink (
    __in LPCWSTR lpSymlinkFileName,
    __in LPCWSTR lpTargetFileName,
    __in DWORD dwFlags
    );
Run Code Online (Sandbox Code Playgroud)

而 BOOLEANBYTE在 WinNT.h 中被定义为 a 。美好的。所以我的托管原型应该是:

[DllImport("kernel32.dll", SetLastError = true)]
static extern bool CreateSymbolicLink(string SymlinkFileName, string TargetFileName, UInt32 Flags);
Run Code Online (Sandbox Code Playgroud)

至少,我会这么认为。 bool只是一个别名System.Boolean,一个一字节的值。但它似乎不起作用。

我执行此代码:

bool retval = CreateSymbolicLink(LinkFilename, TargetFilename, 0);
Run Code Online (Sandbox Code Playgroud)

它返回true。但是没有创建符号链接。它没有被创建的原因是我没有以提升的权限运行。 GetLastError返回 1314,根据 WinError.h 这意味着我没有所需的权限。正如预期的那样。但为什么我的返回值是true

奇怪的是,如果我将托管原型更改为:

static extern byte CreateSymbolicLink(string SymlinkFileName, string TargetFileName, UInt32 Flags);
Run Code Online (Sandbox Code Playgroud)

和我的代码:

byte retval = CreateSymbolicLink(LinkFilename, TargetFilename, …
Run Code Online (Sandbox Code Playgroud)

.net c# interop

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

8086 TASM:非法索引模式

我正在编写一个需要通过TASM v3.1编译的8086汇编程序.我遇到了一个我似乎无法解决的错误.

我的数据段具有以下用于键盘输入的设置:

paraO Label Byte
  maxO DB 5
  actO DB ?
  dataO DB 5 dup('$')
Run Code Online (Sandbox Code Playgroud)

我想要做的是输入第一个字符,所以dataO的第一个字节:

lea dx, dataO
mov bl, [dx]
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译时,我收到此错误:

**Error** h5.asm(152) Illegal indexing mode
Run Code Online (Sandbox Code Playgroud)

第152行是"mov bl,[dx]"

任何帮助将不胜感激.如果重要,我通过DOSBox运行TASM(我的笔记本电脑运行64位Win7)谷歌没有提出任何有用的答案.如有必要,我可以发布我的全部代码.

x86 assembly tasm x86-16

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

C#、线程优先级和锁

在 C# 中,如果一个高优先级任务已准备好执行,而另一个(低优先级)线程已在监视器内,则在以下两种情况下,低优先级任务是否会被抢占:

  1. 较高优先级任务想要获取由低优先级任务获取的一个(或多个)锁。
  2. 高优先级任务不需要低优先级任务获取的任何锁。

编译器/操作系统在任务抢占方面是否做了任何聪明的事情,或者总是出现较高优先级任务总是抢占较低优先级任务的情况?

c# multithreading locking preemption

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

Perl 变量赋值副作用

我会第一个承认 Perl 不是我的强项。但是今天我遇到了这段代码:

my $scaledWidth = int($width1x * $scalingFactor);
my $scaledHeight = int($height1x * $scalingFactor);
my $scaledSrc = $Media->prependStyleCodes($src, 'SX' . $scaledWidth);

# String concatenation makes this variable into a
# string, so we need to make it an integer again.
$scaledWidth = 0 + $scaledWidth;
Run Code Online (Sandbox Code Playgroud)

我可能在这里遗漏了一些明显的东西,但我在该代码中没有看到任何可以$scaledWidth变成字符串的内容。除非以某种方式第三行中的连接导致 Perl 永久更改$scaledWidth. 那看起来……很奇怪。

我搜索了一些“perl 赋值副作用”和类似的术语,但没有找到任何东西。

你们中的任何 Perl 大师能告诉我注释的代码行是否真的有用吗?在串联表达式中使用整数变量真的会改变该变量的类型吗?

perl

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

algorithm:根据约束对数组中的对象进行排序

我有一千个类型的对象 MyClass

class MyClass{
    array<MyClass> objectsBehind;
    Boolean large;
}
Run Code Online (Sandbox Code Playgroud)

对象objectsBehind数组在哪里MyClass,此数组中的任何对象都是1000个原始对象的一部分.

我将它们放在一个数组中并对它们进行排序,使得一个对象出现在数组中比其objectsBehind数组中的对象更高的索引处.例如,索引546处的对象不能在其objectsBehind数组中具有排序数组中索引大于546的任何对象.

我的问题是这个.1000件物品中约有20件拥有该物业large = true.如果objectsBehind不违反属性,则在排序数组中按顺序对这些"大"对象进行分组是有益的.例如,最好是这样:

array[45].large = false; array[46].large = true, array[47].large = true, array[48].large = true, array[49].large = false;
Run Code Online (Sandbox Code Playgroud)

array[45].large = true; array[46].large = false, array[47].large = true, array[48].large = false, array[49].large = true; 
Run Code Online (Sandbox Code Playgroud)

在第一个序列中,我将三个大对象组合在一起,而不是在第二个示例中将它们展开.

我想不出这样做的好方法.有任何想法吗?

arrays sorting algorithm

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

C#:make派生对象有条件地共享相同的基础对象

我有一个基类,由多个派生类继承.我正在构造函数初始化基类的一些属性.有什么办法可以让我的派生对象共享基类属性,而不是为每个派生类对象创建相同的属性值.这非常重要,因为一些基类属性值是由服务生成的,共享这可以提高性能.以下是我想说的简单蓝图:

public class ClassA
{
    //i dont want to use static here as it will be shared for multiple codes
    protected string country { get; set; }
    public ClassA(string code)
    {
        country = CallsomeService(code);
    }
}

public class ClassB : ClassA
{
    public ClassB(string code) : base(code)
    {
        //blah blah
    }

    public void DomeSomethingWithCountry()
    {
        Console.WriteLine($"doing this with {country} in classB");
    }
}

public class ClassC : ClassA
{
    public ClassC(string code) : base(code)
    {
        //blah blah
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

c# oop multiple-inheritance

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

哪个更快?使用自定义Comparator类或lambda函数

我试图在java中创建一个有序映射(按键的降序排序).我试过了

Map<Integer,Integer> map = new TreeMap<>((a,b)->(b-a));
Run Code Online (Sandbox Code Playgroud)

如果我为同一个任务编写Comparator类,会不会产生任何性能影响?

heap lambda treemap comparator java-8

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

循环遍历字符串以查找子字符串

我有这个字符串:

text = "book//title//page/section/para";
Run Code Online (Sandbox Code Playgroud)

我想通过它来查找所有//和/和它们的索引.

我尝试这样做:

if (text.Contains("//"))
{
    Console.WriteLine(" // index:  {0}  ", text.IndexOf("//"));   
}
if (text.Contains("/"))
{
    Console.WriteLine("/ index:  {0}  :", text.IndexOf("/"));    
}
Run Code Online (Sandbox Code Playgroud)

我也在考虑使用:

Foreach(char c in text)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为//不是一个单一的char.

我怎样才能实现我的目标?

我也尝试了这个,但没有显示结果

string input = "book//title//page/section/para"; 
string pattern = @"\/\//";


Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(input);
 if (matches.Count > 0)
  {
      Console.WriteLine("{0} ({1} matches):", input, matches.Count);
      foreach (Match match in matches)
         Console.WriteLine("   " + input.IndexOf(match.Value));
 }
Run Code Online (Sandbox Code Playgroud)

先感谢您.

c# string

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