小编spr*_*121的帖子

SSH -X"警告:不受信任的X11转发设置失败:未生成xauth密钥数据"

嘿,我有一个问题让ssh X转发工作.设置是我在sshOSX Yosemite主机上进入我的ubuntu VM.

我已经在OSX上安装了xQuartz,在ubuntu上安装了xauth,我相信我已经在ssh_config文件中设置了所有正确的选项.

我明白了

Warning: untrusted X11 forwarding setup failed: xauth key data not generated
X11 forwarding request failed on channel 0
Run Code Online (Sandbox Code Playgroud)

打开连接时的消息ssh -X,当我尝试运行X应用程序时:

xterm: Xt error: Can't open display:
xterm: DISPLAY is not set
Run Code Online (Sandbox Code Playgroud)

我在我的另一台机器上有相同的设置,除了运行Mavericks并且它工作正常,是否有特定于Yosemite特定的东西我需要担心?

ssh xserver xorg

55
推荐指数
5
解决办法
6万
查看次数

如何在构造函数中调用结构体方法?

我对 Rust 比较陌生,并且遇到了如何用另一种语言编写构造函数的特殊情况。我有一个结构体S3Logger,它在磁盘上创建一个临时文件,当将一定量的数据写入该文件时,该文件将上传到 S3 并旋转到另一个文件。

我希望我的new函数使用类 上的方法gen_new_file,它将在写入位置打开一个具有正确名称的新文件。但是,为了使其成为一种方法,我必须已经有一个S3Logger要传入的参数,而在函数期间我还没有传入该new参数。在下面的示例中,我展示了如何用另一种语言执行此操作,在使用对象方法完成构造之前部分构造对象;但这显然在 Rust 中不起作用。

我可以使用 anOption来表示current_log_file,但这感觉有点恶心。我想强制执行以下不变量:如果我有一个S3Logger,我就知道它有一个打开的文件。

对于此类问题,Rust 的最佳实践是什么?

pub struct S3Logger {
    local_folder: PathBuf,
    destination_path: String,
    max_log_size: usize,

    current_log_file: File,
    current_logged_data: usize
}

impl S3Logger {
    pub fn new<P: AsRef<Path>>(
        local_folder: P,
        destination_path: &str,
        max_log_size: usize
    ) -> Self {
        std::fs::create_dir_all(&local_folder).unwrap();

        let mut ret = Self {
            local_folder: local_folder.as_ref().to_path_buf(),
            destination_path: destination_path.to_string(),
            max_log_size: max_log_size,
            current_logged_data: 0
        }; 
        // fails ^^^^ …
Run Code Online (Sandbox Code Playgroud)

rust

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

mmap与malloc:奇怪的表现

我正在编写一些解析日志文件的代码,但需要注意的是这些文件是压缩的,必须在运行时解压缩.这段代码是一段性能敏感的代码,所以我正在尝试各种方法来找到合适的代码.无论我使用多少个线程,我的内存基本上与程序所需的内存一样多.

我发现了一种似乎表现相当不错的方法,我试图理解为什么它提供更好的性能.

这两种方法都有一个读取器线程,一个从管道gzip进程读取并写入大缓冲区.然后在请求下一个日志行时对该缓冲区进行延迟解析,返回基本上是指向缓冲区中不同字段所在位置的指针结构.

代码在D中,但它与C或C++非常相似.

共享变量:

shared(bool) _stream_empty = false;;
shared(ulong) upper_bound = 0;
shared(ulong) curr_index = 0;
Run Code Online (Sandbox Code Playgroud)

解析代码:

//Lazily parse the buffer
void construct_next_elem() {

    while(1) {
        // Spin to stop us from getting ahead of the reader thread
        buffer_empty = curr_index >= upper_bound -1 &&
                       _stream_empty;
        if(curr_index >= upper_bound && !_stream_empty) {
            continue;
        }
        // Parsing logic .....
    }
}
Run Code Online (Sandbox Code Playgroud)

方法1:使用足够大的缓冲区来预先保存解压缩文件.

char[] buffer;                   // Same as vector<char> in C++
buffer.length = buffer_length;   // Same as vector reserve in C++ …
Run Code Online (Sandbox Code Playgroud)

linux memory performance multithreading d

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

标签 统计

d ×1

linux ×1

memory ×1

multithreading ×1

performance ×1

rust ×1

ssh ×1

xorg ×1

xserver ×1