小编dev*_*obf的帖子

使用CMake强制进行32位编译的正确方法

很抱歉,有许多类似的问题,但我确实发现谷歌搜索CMake查询总是产生类似但不相同的场景,冲突的CMake命令等等!

我需要强制我的项目构建32位二进制文​​件,因为我必须链接一个只能作为32位的库.我根据错误消息诊断出这个错误,例如:

/usr/bin/ld: i386 architecture of input file `*external-32bit-lib*' is incompatible with i386:x86-64 output
Run Code Online (Sandbox Code Playgroud)

因此,我应该使用:

set (CMAKE_CXX_FLAGS "-m32")
Run Code Online (Sandbox Code Playgroud)

这确实改变了一些事情 - 我现在得到了几个错误:

/usr/bin/ld: i386 architecture of input file `*project-output-lib*' is incompatible with i386:x86-64 output
Run Code Online (Sandbox Code Playgroud)

并且仍然会获得外部库的相同错误.我认为这是因为-m32制作的gcc生成32位二进制文​​件,但ld仍在尝试64位输出?进一步谷歌搜索这个问题没有取得任何成功,所以如果有人能够证实我是对的,并给出正确的方法,我将非常感激!

非常感谢!

c++ gcc cmake ld 32bit-64bit

49
推荐指数
4
解决办法
6万
查看次数

有效地寻找独特的排列

我有以下问题.我需要计算一组的排列; 但是,该集合可能包含两个相同的元素,因此会导致重复的排列.例如:

给定集合[ 0 0 1 2 ],排列包括这些可能性:

 1     2     0     0
 1     2     0     0
Run Code Online (Sandbox Code Playgroud)

但是,我想避免像这些相同的排列.在MATLAB中,我可以简单地这样做:

unique(perms([ 0 0 1 2 ]), 'rows')
Run Code Online (Sandbox Code Playgroud)

但这里的问题是效率 - 我在一个巨大的for循环中反复这样做,并且所需的排序unique太慢了.所以我的问题是:我可以直接计算这种性质的独特排列,而不必在事后循环结果吗?我在MATLAB工作,但只是一个通用的解决方案可能会有所帮助,虽然可以在MATLAB中矢量化的东西可能是理想的!

据我所知,现有的问题并不能完全解决这个问题,但如果以前已经回答了这个问题,我会道歉.

math matlab permutation combinatorics

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

在 Jest 和 Typescript 中使用 node-fetch 时出现错误“SyntaxError: Cannot use import statements Outside a module”

我正在尝试使用 Jest 在 Typescript 中编写集成测试node-fetch,如下所示:

import fetch from 'node-fetch';

test('Hello', async () => {
    await fetch("http://www.google.com");
});
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

    Jest encountered an unexpected token

    [...]
    
    Details:

    /home/xxx/node_modules/node-fetch/src/index.js:9
    import http from 'node:http';
    ^^^^^^

    SyntaxError: Cannot use import statement outside a module

    > 1 | import fetch from 'node-fetch';
        | ^
      2 |
      3 | test('Hello', async () => {
      4 |     await fetch("http://www.google.com");

      at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1796:14)
      at Object.<anonymous> (temp.test.ts:1:1)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过其他问题中给出的一些解决方案,但它们不起作用;我认为我的问题略有不同,因为一般来说并不妨碍我使用 ES6 风格的 important,但它特别不适用于node-fetch. 例如,我可以import …

typescript jestjs node-fetch

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

如何在未经授权的情况下重定向到我的登录屏幕,同时还在MVC中返回401状态代码?

在我们的MVC网站上,我们使用该Authorize属性保护我们的端点,但是当我发生这种情况时,我想将用户重定向到登录屏幕.我的第一个解决方案是对重定向Application_EndRequestGlobal.asax.cs:

    protected void Application_EndRequest(object sender, EventArgs e)
    {
        if (Response.StatusCode == (int) HttpStatusCode.Unauthorized)
        {
            Response.ClearContent();
            Response.Redirect("/Account/Login");
        }
    }
Run Code Online (Sandbox Code Playgroud)

这个问题是我们的一些视图是由AJAX加载的,在这种情况下我们不希望在动态加载的div中显示登录屏幕(这例如在注销后按下后退按钮时会发生).如果请求仍返回登录屏幕,但使用401 Unauthorized状态代码以便我们可以检测到此事件,那会更好.显然这不适用于这种方法,因为重定向依赖于302状态代码.

相反,我宁愿Application_EndRequest用401状态代码"插入"登录屏幕内容.所以,而不是Response.Redirect,我试过这个:

            ...
            Response.ClearContent();
            Server.TransferRequest("~/Account/Login");
            Response.StatusCode = (int) HttpStatusCode.Unauthorized;
            ...
Run Code Online (Sandbox Code Playgroud)

重定向工作得很好,但因为这会执行一个新请求,我无法以这种方式设置状态代码,我得到200.仍然没有检测到未经授权的请求.

我也尝试过:

            ...
            Response.ClearContent();
            Server.Transfer("~/Account/Login");
            Response.StatusCode = (int) HttpStatusCode.Unauthorized;
            ...
Run Code Online (Sandbox Code Playgroud)

但我得到一个异常"执行/帐户/登录的子请求时出错".

我也尝试过:

            ...
            Response.ClearContent();
            HttpContext.Current.RewritePath("~/Account/Login");
            Response.StatusCode = (int) HttpStatusCode.Unauthorized;
            Response.End();
            ...
Run Code Online (Sandbox Code Playgroud)

但这引发了异常"线程被中止".我不确定Response.End()是否必要,但没有它,我只是得到一个标准的IIS 401错误.

如何返回登录屏幕的内容,但是有401状态代码?

asp.net-mvc

8
推荐指数
3
解决办法
1620
查看次数

错误:'无法为keyPath新闻添加映射,已存在一个......'

我正在使用RestKit从Restful Web Service获取数据.使用平面文件,它可以很好地工作.如果我想获得嵌套JSON的响应,我的问题就开始了.

我的JSON看起来像:

[{"homename":"Alien","created_at":"2011-09-15T12:46:37Z", "updated_at":"2011-09-15T12:46:37Z","gametype":"Final match", "id":1,"date":"2016-10-10","guestname":"Predator", "news":[{"minute":null,"created_at":"2011-09-15T13:19:51Z","player":null,"title":"Title", "updated_at":"2011-09-15T13:19:51Z","id":1,"bodytext":"News","game_id":1},{"minute":null,"created_at":"2011-09-15T13:22:06Z","player":null,"title":"New news","updated_at":"2011-09-15T13:22:06Z","id":2,"bodytext":"Old socks","game_id":1},{"minute":null,"created_at":"2011-09-15T13:26:32Z","player":null,"title":"another title","updated_at":"2011-09-15T13:26:32Z","id":3,"bodytext":"Bodytext 2","game_id":1},{"minute":null,"created_at":"2011-09-22T12:35:19Z","player":null,"title":"comment","updated_at":"2011-09-22T12:35:19Z","id":4,"bodytext":"body of the comment","game_id":1}]}]
Run Code Online (Sandbox Code Playgroud)

使用以下代码,我想获取映射的数据.

RKLogConfigureByName("RestKit/Network*", RKLogLevelTrace);
// Initialize RestKit
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:@"http://X.X.X.X:3000"];

// Enable automatic network activity indicator management
//objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;


RKObjectMapping* newsMapping = [RKObjectMapping mappingForClass:[News class]];
[newsMapping mapKeyPath:@"id" toAttribute:@"id"];
[newsMapping mapKeyPath:@"minute" toAttribute:@"minute"];
[newsMapping mapKeyPath:@"title" toAttribute:@"title"];
[newsMapping mapKeyPath:@"bodytext" toAttribute:@"bodytext"];

// Setup our object mappings
RKObjectMapping* gameMapping = [RKObjectMapping mappingForClass:[Game class]];
//  [gameMapping mapKeyPath:@"id" toAttribute:@"id"];

[gameMapping mapKeyPath:@"guestname" toAttribute:@"guestname"];
[gameMapping mapKeyPath:@"homename" toAttribute:@"homename"];
[gameMapping mapKeyPath:@"date" toAttribute:@"date"]; …
Run Code Online (Sandbox Code Playgroud)

ios restkit

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

在什么条件下,非易失性变量的写入是否会被其他线程看不到?我可以强制这些条件用于实验目的吗?

我最近在SO和其他地方读过很多关于线程内存管理的内容,特别是volatile关键字的使用.然而,我开始对这个概念有相当的自信,为了充分理解它所具有的效果,我想尝试并运行一些实验来说明它.

这是我的设置:我有一个生产者线程(它从麦克风读取音频数据,与我之前的问题相关,但实际数据无关紧要),它将数据传递byte[]给单独的消费者线程.线程之间共享数据的方式是我实验中的主要变量:我尝试了一个ArrayBlockingQueue; 我尝试过共享volatile byte[]引用(本博客文章中array = array推荐的自引用); 我也尝试了一个没有自我参考的普通非易失性.两个线程也会在数据写入时将数据写入磁盘.byte[]

我希望发现,在运行一段时间之后,非易失性byte[]版本在生产者试图共享的数据与消费者读取数据之间的差异会因为某些内存写入时间不可见而导致数据不一致由于为确保发布内存写入所采取的预防措施,其他两个版本将由每个线程记录完全相同的数据.然而,无论我使用何种方法,我都会发现100%的准确率.

我已经可以想到为什么会发生这种情况的几种可能性,但我的主要问题是: 在什么条件下写入非易失性变量看不见另一个线程,据我所知,这是完整的观点volatile?我可以强制这些条件用于实验目的吗?

到目前为止我的想法是:

  • 也许这两个线程在同一个内核上运行并共享相同的缓存,因此内存写入立即可见?
  • 也许CPU负载是一个因素?在看到任何问题之前,我可能需要很多线程都做不同的事情?
  • 也许我需要等待更长时间:也许这些问题非常罕见?

任何人都可以建议我如何设计这样的实验或解释为什么我的想法有缺陷?

非常感谢.

java multithreading volatile non-volatile

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

为什么这个时间复杂度为O(n)?

为什么以下函数的时间复杂度为O(n)?我无法理解我的生活.

void setUpperTriangular (
    int intMatrix[0,…,n-1][0,…,n-1]) {
        for (int i=1; i<n; i++) {
            for (int j=0; j<i; j++) {
                    intMatrix[i][j] = 0;
            } 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不断将最终时间复杂度定为O(n ^ 2),因为:

i: execute n times{//Time complexity=n*(n*1)
    j: execute n times{ //Time complexity=n*1
        intMatrix[i][j] = 0; //Time complexity=1
    }
}
Run Code Online (Sandbox Code Playgroud)

complexity-theory

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

将一个字符串数组与多个字符串数组进行比较的算法

在我正在进行的当前项目中,我有点卡在这个问题上:

我想拿一个ArrayList<String>(称之为A)并将其与许多 进行比较ArrayList<String>,记下这些数组比较中有多少个字符串匹配.然后,我想按照从最相似到最不相似的A的顺序排序多个字符串数组.

有谁知道这样做的快速算法?不像算法那样寻找代码,但我在Java工作.

谢谢!

java arrays string algorithm

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

我可以使用 Order By 和 ToLower 对 DocumentDB 执行不区分大小写的字符串排序吗?

我想按标题的字母顺序对 DocumentDB 集合中的记录进行排序。起初我认为这是有效的:

SELECT c.Title  FROM c ORDER BY c.Title
Run Code Online (Sandbox Code Playgroud)

但正如预期的那样,这会将小写字母排在大写字母之后。我希望我的搜索不区分大小写,所以我尝试了以下方法:

SELECT c.Title  FROM c order by LOWER(c.Title)
Run Code Online (Sandbox Code Playgroud)

和这个:

SELECT LOWER(c.Title) AS title FROM c ORDER BY title
Run Code Online (Sandbox Code Playgroud)

但这都会产生错误。如何执行不区分大小写的字符串排序?

azure-cosmosdb

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

如何强制 Karma 在每次测试之间重新启动浏览器?

我有一组在构建服务器上运行的 Jasmine 单元测试。我设法让 Karma 很好地工作,这样每次我推送到我的开发分支时,我的测试都会自动在 Chrome、Edge 和 Firefox 上运行。

然而,我担心我的测试不是独立的,因为大部分浏览器状态(例如全局 JS、DOM 和本地存储)在测试之间仍然存在。在某些情况下,我发现这允许由于先前测试的操作而使测试通过,对我来说这感觉是不好的做法。我想做的是强制浏览器在每次测试之间重新启动,从而创建一个新的、独立的测试环境。这可能吗?

javascript unit-testing karma-runner karma-jasmine

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

Reflection API,Class.forName()vs .class

interface A {
}

public class B {
    public static void main(String a[]) {
        Class c = Class.forName("A");
        System.out.println(c.isInterface());//false
        Class c1 = A.class;
        System.out.println(c1.isInterface());//true
    }
}
Run Code Online (Sandbox Code Playgroud)

o/p:false true

期待o/p:真实

我不想知道这两者的区别:Class.forName("A")和A.class非常感谢.

java

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