小编Cas*_*par的帖子

如何查看导致编译错误的扩展宏代码?

我有一个涉及宏的编译错误:

<mdo macros>:6:19: 6:50 error: cannot move out of captured outer variable in an `FnMut` closure
<mdo macros>:6 bind ( $ e , move | $ p | mdo ! { $ ( $ t ) * } ) ) ; (
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<mdo macros>:1:1: 14:36 note: in expansion of mdo!
<mdo macros>:6:27: 6:50 note: expansion site
<mdo macros>:1:1: 14:36 note: in expansion of mdo!
<mdo macros>:6:27: 6:50 note: expansion site
<mdo macros>:1:1: 14:36 note: in expansion of mdo!
src/parser.rs:30:42: …
Run Code Online (Sandbox Code Playgroud)

rust

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

如何安全地和惯用地在数字类型之间进行转换?

从(比方说)a转换usize为a 的惯用方法是u32什么?

例如,铸造用4294967295us as u32作品和类型强制转换锈参考文档

数值可以转换为任何数字类型.原始指针值可以转换为任何整数类型或原始指针类型.任何其他强制转换都不受支持,无法编译.

但是4294967296us as u32会默默地溢出并给出0的结果.

我发现ToPrimitiveFromPrimitive提供了很好的功能ToPrimitive,但它们目前被标记为不稳定:

FromPrimitive

什么是在数字(和指针)类型之间转换的惯用(和安全)方式?

更新:to_u32() -> Option<u32>/的可变大小#[unstable(feature = "core", reason = "trait is likely to be removed")]是我问这个问题的一个原因 - 原始场景是我想转换isizeusize所以我可以代表一个树u32(例如usize,然后获得节点2的祖父将be Vec<u32>),我想知道如果let t = Vec![0u32, 0u32, 1u32]小于32位会如何失败.

casting numbers rust

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

为什么单个线程进程在多个处理器/内核上执行?

假设我运行一个简单的单线程进程,如下所示:

public class SirCountALot {
    public static void main(String[] args) {
        int count = 0;
        while (true) {
            count++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(这是Java,因为这是我所熟悉的,但我怀疑它并不重要)

我有一个i7处理器(4核,或8计数超线程),我正在运行Windows 7 64位,所以我启动了Sysinternals Process Explorer来查看CPU使用率,正如预期的那样,我看到它使用了大约20%所有可用的CPU.

图表显示所有核心的CPU使用率为20%

但是,当我切换每个CPU显示1个图形的选项时,我看到使用的是4个"核心"中的1个,CPU使用率遍布整个核心:

图表显示每个核心的CPU使用率不稳定,总使用率约为20%

相反,我期望的是1核心最大化,但这只发生在我将流程的亲和力设置为单个核心时.

图表显示最近的CPU使用量大部分仅限于第一个核心

为什么工作负载分散在不同的核心上?不会将工作负载分散到多个核心,因为缓存还是会导致其他性能损失?

这是为了防止一个核心过热的简单原因吗?还是有更深层次的原因?

编辑:我知道操作系统负责调度,但我想知道为什么它"烦恼".当然,从一个天真的角度来看,将(主要是*)单线程进程坚持到1核心是更简单,更有效的方法吗?

*我说主要是单线程,因为这里有多个theads,但只有2个在做任何事情:

显示Eclipse中线程数的屏幕截图 屏幕截图显示Process Explorer流程属性中的线程数

java multithreading operating-system multicore multiprocessing

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

JavaScript关系比较运算符如何强制类型?

当操作数是不同类型时,JavaScript关系比较运算符适用哪些规则?

例如,如何true > null评估?我可以在我的开发者控制台中键入它,它会给出结果true,但为什么呢?

我搜索了一下,但没有发现任何博客文章解释这个,虽然有很多解释类型强制==和===比较运算符.

javascript type-conversion

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

在调用非泛型函数时,如何在内联提供类型注释?

我知道的一种方法是在Rust中提供类型注释是通过声明一个中间变量,以便编译器知道返回类型:

use std::num::Int
let max_usize: usize = Int::max_value();
println!("Max usize: {}", max_usize);
Run Code Online (Sandbox Code Playgroud)

但是如何提供类型注释"内联"?

例如,我不希望以下内容未经修改地工作,因为根本没有类型注释,但这是我所追求的事情:

use std::num::Int
println!("Max usize: {}", Int::max_value());
Run Code Online (Sandbox Code Playgroud)

我试过Int::max_value::<usize>(),这给了error: too many type parameters provided: expected at most 0 parameter(s), found 1 parameter(s)- 这是有道理的,因为max_value()不是通用的.

在Scala中,我会写myFunction(someDog: Animal)而不是写作

val someAnimal: Animal = someDog
myFunction(someAnimal)
Run Code Online (Sandbox Code Playgroud)

Rust中有相同的语法吗?

rust

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

在不关闭底层套接字的情况下关闭SSL?

如何在不关闭底层套接字的情况下优雅地关闭Java SSL会话?

方案是Java客户端连接到(非Java)服务器,设置SSL并安全地将凭据(用户名和密码)发送到服务器.服务器设置在这些凭据下运行的环境,在此环境中生成一个新进程并将套接字句柄传递给它,但问题是这个新进程无法重用现有的SSL连接(并且无法使用SSL会话)恢复)...所以我们的想法是在生成新进程之前关闭SSL,然后使用新进程从头开始重新协商SSL会话.

问题是Java的SSLSocket close()方法除了关闭SSL会话之外还关闭套接字(通过发送close_notify警报).似乎没有相当于OpenSSL的SSL_shutdown()函数,它允许打开底层套接字.

我尝试了一些方法来解决这个问题:

  1. 第二次使用SSLSocket.startHandshake(),但是会自动尝试恢复现有的缓存SSL会话(由于生成的服务器进程不知道此会话而失败,并且,虽然有一种强制恢复SSL会话的方法)或者没有尝试,没有方法可以使所有缓存的会话无效或禁止使用缓存的会话.

  2. SSLSocket使用SSLSocketFactory.createSocket()创建现有套接字的顶部,并autoClose设置为false.这并不会阻止close()方法关闭底层套接字,我怀疑该autoClose参数只会阻止套接字在初始握手失败时被关闭.

  3. 创建SSLSocket现有套接字(如上所述),然后创建第二个SSLSocket用于与生成进程(来自新SSLContext)的SSL握手.这会失败,因为当服务器发送close_notify警报时(在生成子进程之前),Java会关闭套接字.

我听说过SSLEngine,但我也读过(尽管源代码目前没有我),用TCP/IP编写正确的SSL实现是一件非常痛苦的事情,当我需要的时候看起来有些过分.是有一个版本SSLSocket,其close()不叫super.Close().

但是,SSLSocket似乎甚至没有覆盖close()(根据javadoc),所以我不确定close()当它似乎没有任何支持注册关闭侦听器时它如何挂钩该方法Socket.

公司政策规定不能使用第三方加密库,因此我不能转向其他SSL实施,例如Bouncy Castle解决问题.

如果我们无法使当前的1插槽设计工作,另一种方法是重写客户端和服务器以使用2个独立的套接字(在必须反对拒绝服务和man-in-the-方面变得非常混乱)中间攻击,并不是SSL首先应该是什么?).

任何有关如何解决这个问题的意见或想法都会受到欢迎.

java sockets ssl

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

如何为IPython修复"ImportError:no module named shell"错误

我见过很多人建议我使用下面的代码片段来嵌入一个IPython shell或从django视图中删除到一个IPython shell.

from IPython.Shell import IPShellEmbed
ipython = IPShellEmbed()
ipython()
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我得到了

>>> from IPython.Shell import IPShellEmbed
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named Shell
Run Code Online (Sandbox Code Playgroud)

如何从现有的python应用程序嵌入IPython或启动IPython控制台?

python ipython

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

如何为给定类型选择不同的 std::cmp::Ord(或其他特征)实现?

我正在尝试使用std::collections::BinaryHeap自定义结构。为此,我必须让我的结构实现std::cmp::Ord特征,但我需要的是 2 个BinaryHeap相同的结构,但顺序不同。

有没有办法定义 2 个 Ord 实现并选择使用哪个Ord,或者其他一些方法来指定替代排序?

我想我可以定义 2 个不同的包装结构,它们保留对原始自定义结构的引用,并Ord为每个结构提供一个实现,但是必须构造潜在的大量此类包装结构的实例似乎很浪费。

在 Pyhton/Java 中,我会提供一个排序功能/比较器,但似乎没有这样的功能。在 Scala 中,我可以定义一个仅编译时类型来选择正确的隐式排序实现;感觉 Rust 支持类似的东西,但我一直无法解决。

rust

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

正确设置Windows上的DJANGO_SETTINGS_MODULE

这个查询有我的帖子,但大部分都是针对linux的.他们都没有明显的窗户

在我的应用程序中,我正在设置数据库(sqlite3,Django中的默认值).编辑我的应用程序的setup.py文件后(mysite)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'D:/Django_Code/sqlite.db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}
Run Code Online (Sandbox Code Playgroud)

在发现我必须设置DJANGO_SETTINGS_MODULE环境以便Django可以了解数据库设置之后.所以我把它设置得像

DJANGO_SETTINGS_MODULE = "D:\Django_Code\mysite\mysite\settings.py"
Run Code Online (Sandbox Code Playgroud)

我发出时交叉检查数据库设置

>>> from django.db import connection
>>> …
Run Code Online (Sandbox Code Playgroud)

windows django environment-variables

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