小编Qix*_*Qix的帖子

在对Java Collection进行排序时忽略单词"the"

目前我有一些代码采用文件名并以不同的方式对它们进行排序(区域设置敏感的自然排序,不区分大小写的ASCII排序,修改日期等),例如,对于区域设置敏感的自然排序,它使用以下方法:

Collections.sort(files, new Comparator<File>() {
    @Override
    public int compare(File f1, File f2) {
        return NaturalComparator.compareNatural(collator, f1.getName(), f2.getName());
    }
});
Run Code Online (Sandbox Code Playgroud)

我想知道如何让它忽略文件名开头的"the"这个词,所以不要像这样排序文件:

苹果
胡萝卜
香蕉

它命令他们这样:

苹果
香蕉
胡萝卜

java sorting collections

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

在 java.library.path 中找不到库

我是 JNI 的新手,所以我之前尝试过 JNI 入门教程,该教程仅调用本机来打印 Hello World!一切都很顺利,直到我想运行java文件时,我不断收到错误:线程“main”中的异常:java.lang.UnsatisfiedLinkError:在java.library.path中找不到hello库。我用谷歌搜索了这个错误并查看了很多人的建议,但不幸的是没有一个对我有用!我已经尝试过以下方法:

  • 使用命令运行: java -Djava.library.path = "库路径" HelloWorld
  • 将 LD_LIBRARY_PATH 设置为我的 .so 路径

其他人在执行上述两项操作之一后都解决了问题,但我没有!

这是Java代码:

public class HelloWorld {

    static {
        System.loadLibrary("hello");
    }

    private native void printHelloWorld();

    public static void main(String[] args) {
        new HelloWorld().printHelloWorld();
    }
} 
Run Code Online (Sandbox Code Playgroud)

Native 的代码如下:

void JNICALL Java_printHelloWorld(JNIEnv *env, jobject obj) {
    printf("HelloWorld!");
}
Run Code Online (Sandbox Code Playgroud)

编辑:我什至尝试将库复制到 java.library.path 的实际目录,但它仍然给我同样的错误!

java java-native-interface

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

在java中需要克隆对象的原因是什么?

我正在阅读Joshua Bloch的Effective Java.在那里,他谈到不使用Clonable界面.我有点像菜鸟,所以我的问题是,什么是代码中需要克隆的用例?有人能给出一个粘性的例子,以便我能掌握这个概念吗?

java cloneable

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

朋友功能的可访问性

class C2;   //Forward Declaration

class C1
{
    int status;

    public:
    void set_status(int state);
    void get_status(C2 y);
};

class C2
{
    int status;

    public:
    void set_status(int state);
    friend void C1::get_status(C2 y);
};

//Function Definitions

void C1::set_status(int state)
{
    status = state;
}

void C2::set_status(int state)
{
    status = state;
}

void C1::get_status(C2 y)   //Member function of C1
{
    if (y.status | status)
    cout<<" PRINT " <<endl;
}
Run Code Online (Sandbox Code Playgroud)

y.status 在倒数第二行显示错误:

C2 ::状态无法访问

代码执行正常,但下面有一个红线(错误)y.status.

为什么是这样?

c++ oop friend

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

在背景中加载新场景

我正在创建一个针对Samsung Gear VR的Unity应用程序.我目前有两个场景:

  1. 最初的一幕
  2. 第二个场景,数据量很大(加载场景需要太多时间).

从第一个场景开始,我想在后台加载第二个场景,并在加载后切换到它.当新场景在后台加载时,用户应该保持移动头部以查看VR环境的任何部分的能力.

我正在使用SceneManager.LoadSceneAsync但它不起作用:

// ...

StartCoroutiune(loadScene());

// ...

IEnumerator loadScene(){
        AsyncOperation async = SceneManager.LoadAsyncScene("Scene", LoadSceneMode.Single);
        async.allowSceneActivation = false;
        while(async.progress < 0.9f){
              progressText.text = async.progress+"";
        }
       while(!async.isDone){
              yield return null;
        }
        async.allowSceneActivation = true;
}
Run Code Online (Sandbox Code Playgroud)

使用该代码,场景永远不会改变.

我试过这个典型SceneManager.LoadScene("name")的情况,在这种情况下,场景在30秒后正确变化.

c# unity-game-engine unity5

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

找不到传递给execve函数的环境

我想看看我在execve()函数中传递的环境变量是否真的被传递了,所以我编写了以下代码(Main.c):

int main(){

    char PATH[4];
    strcpy(PATH, "bin");
    char * newargv[] = {"./get","", (char*)0};
    char * newenviron[] = {PATH};
    execve("./get", newargv, newenviron);
    perror("execve");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(get.c):

int main()
{
    const char* s = getenv("PATH");
    printf("PATH :%s\n",s);

}
Run Code Online (Sandbox Code Playgroud)

但是,当我执行Main.c发行的二进制文件时,得到以下输出:

路径:(空)

而我想看看

路径:bin

你有什么解释吗?

c execve

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

您如何退出PDB /和/终止程序?

您如何杀死PDB及其正在运行的程序,类似于LLDB proc kill; exitexit (y)命令?

Ctrl+ D不起作用,我在这里看到的所有问题都是如何在保持程序运行的情况下退出。但是,我正坐在PDB会话中,我发现了一个导致无限循环的错误,尽管确实有其他方法可以杀死该程序,但我发现我想问一下PDB命令是做什么的。

python pdb

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

如何在 Express 中设置 IP 白名单?

我需要阻止除我自己提供的一两个 IP 之外的所有 IP 地址访问我的网站。我尝试了很多模块,但似乎没有任何效果。

var express = require('express')
var AccessControl = require('express-ip-access-control');
var app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})

var middleware = AccessControl(options);
 app.use(AccessControl(options));

var options = {
    mode: 'deny',
    denys: [],
    allows: ['**8.1**.1.**'],
    forceConnectionAddress: false,
    log: function(clientIp, access) {
        console.log(clientIp + (access ? ' accessed.' : ' denied.'));
    },

    statusCode: 401,
    redirectTo: '',
    message: 'Unauthorized'
};

app.listen(3000, function () {
  console.log(' app listening on port 3000!')
})
Run Code Online (Sandbox Code Playgroud)

从上面的代码运行和访问我的网站时,我收到的控制台消息为

::ffff:127.0.0.1 accessed.
::ffff:127.0.0.1 accessed.
::ffff:127.0.0.1 …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express

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

_mm512_load_epi32和_mm512_load_si512有什么区别?

英特尔内在指南简单地指出_mm512_load_epi32:

从存储器加载[s] 512位(由16个打包的32位整数组成)到dst

_mm512_load_si512:

将[s] 512位整数数据从内存加载到dst中

这两者有什么区别?文件不清楚.

x86 sse simd intrinsics avx512

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

放大/缩小鼠标点?

如图所示。 替代文字

替代文字

我在 QScrollArea 中有 QWidget。QWidget 充​​当细胞图像和一些基于矢量的轮廓数据的渲染小部件。用户可以执行放大/缩小,简单地发生的是,它会相应地更改 QPainters 的比例并更改 QWidget 的大小。

现在我想在鼠标下的点上执行放大/缩小。(如 GIMP 中的缩放操作)。如何根据缩放级别计算滚动条的新位置?使用转换而不使用滚动区域来实现这个更好吗?

qt qt4

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