小编Rob*_* P.的帖子

LINQ声明中的N-Enumerables?

可能重复:
生成所有可能的组合

我不确定如何说出这个问题; 但我正在研究一个愚蠢的逻辑谜题,我能够使用LINQ语句解决.相关代码如下所示:

(from myA in Enumerable.Range(1, 40)
 from myB in Enumerable.Range(1, 40)
 from myC in Enumerable.Range(1, 40)
 from myD in Enumerable.Range(1, 40)
 where myA + myB + myC + myD == 40
    && myA <= myB
    && myB <= myC
    && myC <= myD
 select new[] {myA, myB, myC, myD})
Run Code Online (Sandbox Code Playgroud)

所以它基本上生成满足Where子句中标准的A,B,CD的所有组合.

我现在要做的就是概括这一点,所以我可以用N值而不是四个来做同样的事情.例如,使用3个值 - 等效代码将是:

(from myA in Enumerable.Range(1, 40)
 from myB in Enumerable.Range(1, 40)
 from myC in Enumerable.Range(1, 40)
 where myA + myB + myC == 40
    && …
Run Code Online (Sandbox Code Playgroud)

c# linq combinations

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

Keylogger如何显着改善PostMessage的性能()

我想通过在干净的状态下在我的系统上运行'基准',安装键盘记录器并重复基准测试来查看我是否能够检测到系统上是否存在键盘记录器.想法是键盘记录器需要消耗资源才能正确运行并且应该导致较低的基准分数.

在代码中,我基本上编写了两个while循环,它使用win32API调用SendMessage()和PostMessage()来模拟击键.它执行循环达到给定的时间量并记录它发送的成功消息的数量.

我期待键盘记录器要么没有任何可测量的差异(毕竟,在桌面上执行了很多'东西',所有的时间,并且我认为键盘记录器可能不会使用很多......)或者它会导致数字略低.

这主要是我在' SendMessage() '调用的情况下看到的.

我不明白的是,我的基准显示对PostMessage()的调用数量急剧增加

平均许多执行,在安装键盘记录器之前,我每秒看到大约10k PostMessage().安装了一个键盘记录器后,我现在每秒看到几乎25k次调用PostMessage().

这对我没有任何意义.

如果我对PostMessage的理解是正确的,它会向进程的消息队列添加一条Windows消息并继续执行(而SendMessage会一直等待,直到进程在返回之前处理该消息).我希望PostMessage比SendMessage执行得更快,并且一旦消息队列已满,一些消息可能会丢失......但是我的有限理解中的任何内容都无法帮助我理解键盘记录器如何提高性能 - 如此显着的余量.

我觉得代码非常简单.我可以确认它确实注册为击键(我将它们发送到记事本)并且他们的键盘记录器正在记录它们.

有人可以向我解释我错过了什么吗?

键盘记录器如何提高性能?!

更新 我运行基准测试10次并平均结果.
暂停键盘记录器(以便它仍然安装但不记录)仍然产生了很高的结果.卸载键盘记录器并重新启动机器后,平均10次运行现在为每秒9.9k; 非常符合我原来的结果.

我必须重启我的机器才能完成卸载.

.net c# winapi winforms

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

如何将"GUI"层保留在"业务逻辑"层之外?

我目前有一个项目是"业务对象"项目,我们的目标是在GUI和Business Objects之间实现明确的分离.但是,我的项目引用了System.Windows.Forms,这对我的项目设计不佳的每个人来说都是一个大红旗.

我的问题是我正在使用名为"Active Query Builder"的第三方控件.它实际上是GUI中的'Control',System.Windows.Forms.Control; 但它永远不会显示在任何地方,添加到任何Form的Controls集合中.它提供了业务对象的许多核心功能.

无论如何,没有对System.Windows.Forms的引用 - 我不能使用第三方控件而且BO被可怕地打破了.但我被告知我不能引用System.Windows.Forms,因为它编码不好.

我完全不知道该做什么.

具有更多设计模式类型经验的人能提供解决方案吗?

.net design-patterns business-objects

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

如何衡量开发人员的构建时间

我想编写一个小应用程序,它可以放在我的任务栏中,监控Visual Studio一整天都在做什么.具体来说,我真正想知道的是我每天花多长时间等待Visual Studio来构建我的解决方案.

有人能指出我正确的方向.Visual Studio SDK中有什么东西可以帮助吗?

profiling build visual-studio

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

页面错误和.Net编程

我正在读一本关于操作系统的书,它给出了一些我最常理解的C语言示例.我现在看的例子显示了两个几乎相同的代码片段,它们将运行在一个虚构的系统上......

int i, j;
int [128] [128] data;

for (j = 0; j < 128; j++)
    for (i = 0; i < 128; i++)
        data [i] [j] = 0;
Run Code Online (Sandbox Code Playgroud)

第二段代码

int i, j;
int [128] [128] data;

for (i = 0; i < 128; i++)
    for (j = 0; j < 128; j++)
        data [i] [j] = 0;
Run Code Online (Sandbox Code Playgroud)

在这个特定的系统中,第一部分代码将导致16k页面错误,而第二部分将导致仅128.

如果这是一个愚蠢的问题,我表示道歉,但根据我对.NET的经验,我总是在很大程度上没有意识到记忆.我只是创建一个变量,它是'某处',但我不知道在哪里,我不在乎.

我的问题是,.NET如何与这个虚构系统中的这些C示例进行比较(页面大小为128个字,数组的每一行占用一整页.在第一个示例中,我们在第1页设置一个int,然后一个int在第2页,等等....第二个例子设置第1页的所有整数,然后第2页的所有整数,等等...)

此外,虽然我认为我理解为什么代码会产生不同级别的分页,但是我能用它做些什么呢?页面的大小是否取决于操作系统?作为一般的经验法则,尽可能连续地访问数组中的内存是否会被带走?

.net c paging

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

除了在现代POSIX环境中使用外,我还可以使用什么?

我是C的新手,但写了一个小的多线程应用程序.我想对线程引入延迟.我一直在使用'usleep'并且行为是我想要的 - 但它会在C99中产生警告.

函数'usleep'的隐式声明

这只是一个警告,但它困扰我.我用谷歌搜索了一个答案,但我能找到的只是一个while循环/计时器方法,看起来像CPU密集型.

编辑:

我的包括:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <time.h>
Run Code Online (Sandbox Code Playgroud)

我正在调用编译器:

c99 program.c -Wall -pedantic -W -lpthread
Run Code Online (Sandbox Code Playgroud)

编辑#2:

我创建了一个包含以下内容的新文件:

#include <unistd.h>

int main(void) {
    usleep(10);
}
Run Code Online (Sandbox Code Playgroud)

我仍然得到警告.

编辑#3:正如所建议的,我已经更新了问题的文本.

c posix c99

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

在Oracle(PL/SQL)中执行动态SQL并确保安全性

如果我有一个有效的SQL字符串; 无论如何我可以在我的PL/SQL中执行它 - 但保证它只是一个SELECT语句...没有进行复杂的解析以确保它没有任何转义字符/嵌套命令或任何爵士乐?

编辑:

我真正想要实现的是一个通用的,内置于​​我的应用程序,查询工具.它具有友好的,特定于域的GUI,并允许非技术用户创建相当复杂的查询.该工具处理搜索的版本控制,在需要的地方添加内部连接,以及一些其他特定于应用程序的东西,您将找不到典型的SQL DEV类型工具.

应用程序成功创建SQL查询.问题是我还允许用户直接输入自己的SQL.我担心潜在的SQL注入类型问题.

我不确定这是不是合适的地方; 但是,除了这个问题之外 - 如果有人能推荐一本能让我加快这种性质的甲骨文的好书 - 我会非常感激.

sql database security oracle

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

为任何查询实施Oracle分页?

我在Oracle中发现了许多分页示例.我现在使用的特定内容看起来像这样:

SELECT * FROM (
  SELECT a.*, ROWNUM RNUM FROM (
    **Select * From SomeTable**) a 
  WHERE ROWNUM <= 500) b 
WHERE b.RNUM >= 1
Run Code Online (Sandbox Code Playgroud)

粗体的行代表"原始"查询.SQL的其余部分是实现分页.我遇到的问题是一个完全有效的查询; 当我把它放在我的分页代码中时会失败.

作为示例 - 此查询将失败:

SELECT TABLE1.*, TABLE1.SomeValue FROM TABLE1
Run Code Online (Sandbox Code Playgroud)

带有不明确的列错误.但是,没有我的额外代码; 它运行得很好.我有大量"已保存"的查询,但我必须确保我的分页解决方案不会使它们失效.

我已经使用SQL Developer作为我的Oracle查询工具,它设法实现分页,即使上面的查询在我将其包装在分页代码中时失败也能正常工作.任何人都可以告诉我他们是如何实现这一目标的吗?

database oracle paging pagination

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

生产代码中的SqlDataSource示例

我是ASP.net的新手,我现在正在阅读有关SqlDataSource的内容,并通过一些示例进行操作.我正在和一位同事交谈,他说这对于快速和脏的应用程序来说很好,但没有人会在生产/部署环境中使用它.

我真的不知道在哪里寻找或征求意见.它与我习惯的(数据访问层/业务对象/ UI)非常不同.

也许这不是一个合适的StackOverflow问题,但我不知道还能去哪里.有人对此有意见吗?有人可以提供一个或两个使用这种方法的生产/大/真棒网站吗?

在最佳实践方面 - 您建议采用什么方法从数据库中获取数据以在您的网站中使用?

.net asp.net

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

在 .NET Core 3.1 中使用 ImageSource?

我正在尝试在面向netcoreapp3.1的控制台应用程序中使用System.Windows.Media.ImageSource。在此处查看Microsoft 的文档,它似乎可用于 .NET Core 3.0 和 3.1

适用于 NET Core 3.1 3.0

我的示例代码在它的时候会运行得很好,net472但是一旦我改回netcoreapp3.1它就会无法构建。

演示应用

using System;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace ImageSourceTesting
{
    internal static class Program
    {
        private static void Main()
        {
            ImageSource myImage = new BitmapImage();
            Console.Write(myImage);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试构建时,我看到以下内容:

[CS0234] 命名空间“System.Windows”中不存在类型或命名空间名称“Media”(您是否缺少程序集引用?)

c# wpf .net-core

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