小编Shm*_*opy的帖子

MVC - 循环依赖

我需要视图来保存对控制器的引用,因为它需要将控制器注册为事件监听器.我需要控制器来保存对视图的引用,因为在按钮单击时,我需要能够在列表中获取所选文件.(我有一个文件列表和一个"添加群集"按钮,所以当点击按钮时我需要获取所选文件)

所以总之我有:

Controller controller(view);
View view(controller);
Run Code Online (Sandbox Code Playgroud)

我确定这里有一些不好的设计,我只是想不通如何避免它..

java model-view-controller circular-dependency

8
推荐指数
2
解决办法
1672
查看次数

为什么OAuth区分Web服务器应用程序和基于浏览器的应用程序?

我一直在这里阅读OAuth2:http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified,在授权部分,它说OAuth根据用例有不同的模式.

提到的两个用例是基于浏览器的应用程序和Web服务器应用程序.我的第一个问题是Web服务器应用程序和基于浏览器的应用程序之间的区别是什么?我认为Web服务器应用程序是在运行某种HTTP服务器并处理GET/POST请求的服务器上运行的应用程序.这与基于浏览器的应用程序有何不同?我的第二个问题是OAuth为什么要区分他们两个?

oauth-2.0

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

尝试从RefCell中包含的结构中借用2个字段时出错

我有一个结构,其中包含数据和最终将用于写入数据的编写器.结构包裹在一个RefCell.这是一个小的复制品:

use std::cell::RefCell;
use std::io::Write;

struct Data {
    string: String,
}

struct S {
    data: Data,
    writer: Vec<u8>,
}

fn write(s: RefCell<S>) {
    let mut mut_s = s.borrow_mut();
    let str = &mut_s.data.string;
    mut_s.writer.write(str.as_bytes());
}
Run Code Online (Sandbox Code Playgroud)

编译器很生气:

error[E0502]: cannot borrow `mut_s` as mutable because it is also borrowed as immutable
  --> src\main.rs:16:5
   |
15 |     let str = &mut_s.data.string;
   |                ----- immutable borrow occurs here
16 |     mut_s.writer.write(str.as_bytes());
   |     ^^^^^ mutable borrow occurs here
17 | }
   | - immutable …
Run Code Online (Sandbox Code Playgroud)

rust

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

ELF 文件 - 什么是节以及我们为什么需要它?

我一直在这里阅读 ELF 标准。据我了解,每个 ELF 都包含 ELF 头、程序头(为什么不止一个?)和节头。谁能解释一下:

  1. ELF 文件是如何生成的?是编译器的责任吗?
  2. 什么是部分,为什么我们需要它们?
  3. 什么是程序头,为什么我们需要它们?
  4. 在程序头中,字段 p_vaddr 和 p_paddr 的含义是什么?
  5. 每个部分都有自己的部分标题吗?

或者,有人有更友好的 ELF 文档的链接吗?

elf

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

如何初始化复杂对象的数组?

我有:

class SomeObject {
public:
    SomeObject() { ... }
    // Other fields and methods
};

class anOtherObject {
private:
    SomeObject array[SOME_FIXED_SIZE];
public:
    anOtherObject() : ... { ... }

};
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 在调用构造函数时和之后数组包含什么?我应该使用for循环自己初始化它还是编译器为每个数组调用默认构造函数[i] 0<=i<SOME_FIXED_SIZE,?

c++

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

为什么我得到堆outOfMemory异常?

我正在尝试分配一个大矩阵(大约10GB).我正在使用64位JVM的64位机器.然后我的进程应该有2^64可用的字节,并且我将JVM堆大小设置为128G(如果重要的话,我的机器中有16GB的RAM).我的理解是我应该从操作系统获取内存,操作系统会将不需要的矩阵单元换出.但是我得到了上述异常.

编辑:

这就是我定义矩阵的方式:

Jama.Matrix A = new Matrix(num_words, num_documents);
Run Code Online (Sandbox Code Playgroud)

哪里num_words是大约100k并且num_documents是大约35k.另外值得一提的是这种类型double

EDIT2:

相关标志:

-Xms40m
-Xmx128g
-d64
Run Code Online (Sandbox Code Playgroud)

java heap jvm

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

非模板类里面的模板函数的内存模型?

假设我有:

template <typename T>
class A
{
    //Do something with T
};
Run Code Online (Sandbox Code Playgroud)

我知道编译器会class A<T>T代码中定义的每个不同生成一个.

如果我有:

class B
{
    template <typename T>
    void f() { /* Do something with T */ }
};
Run Code Online (Sandbox Code Playgroud)

对于每个被调用的不同,是否只有一个定义class B但是多个重载?f()T

c++ templates instantiation member-functions

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

为什么这个堆栈跟踪意味着什么?(Ldr初始化Thunk)

我们怀疑应用程序中存在死锁,并使用 Windbg 捕获了所有堆栈跟踪。

我看到大约 500 个线程具有以下精确的堆栈跟踪:

ntdll!ZwWaitForSingleObject+0x14
ntdll!LdrpDrainWorkQueue+0xe5
ntdll!LdrpInitializeThread+0xa3
ntdll!_LdrpInitialize+0x89
ntdll!LdrInitializeThunk+0xe
Run Code Online (Sandbox Code Playgroud)

有没有办法(通过 Windbg 或其他一些工具)找出我们正在做的事情导致了此类线程的创建?

windows winapi

6
推荐指数
0
解决办法
6603
查看次数

获取当前线程ID和进程ID为整数?

有没有办法将Rust中的当前进程ID和线程ID作为整数获取?

我得到的最接近的是::std::thread::current().id()返回一个不透明的ThreadId对象.当我试图访问它的u64领域时,我得到:

error[E0611]: field `0` of tuple-struct `std::thread::ThreadId` is private
 --> src\main.rs:4:13
  |
4 |     let x: u64 = ::std::thread::current().id().0;
  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

我在标准库中找不到与进程ID相关的任何内容.

rust

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

为什么将字段从'&'a [u8]`更改为`&'a mut [u8]`会导致生命周期错误?

此代码编译:

struct BufRef<'a> {
    buf: &'a [u8],
}

struct Foo<'a> {
    buf_ref: BufRef<'a>,
}

impl<'a> Iterator for Foo<'a> {
    type Item = &'a [u8];

    fn next(&mut self) -> Option<Self::Item> {
        let result = &self.buf_ref.buf;
        Some(result)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我更改BufRef为:

struct BufRef<'a> {
    buf: &'a mut [u8],
}
Run Code Online (Sandbox Code Playgroud)

编译器说:

error[E0495]: cannot infer an appropriate lifetime for borrow expression due to conflicting requirements
  --> src\main.rs:13:16
   |
13 |         let result = &self.buf_ref.buf;
   |                      ^^^^^^^^^^^^^^^^^
   |
note: first, the lifetime cannot outlive …
Run Code Online (Sandbox Code Playgroud)

rust

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