小编Mr.*_*oor的帖子

Mono.Cecil如何定义输出参数

我想通过Mono.Cecil添加一个具有输出参数的新方法,例如:

private static bool XXXXX(out Int32 a)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码来添加此参数

TypeReference typeInt32 = targetAssembly.MainModule.TypeSystem.Int32.Resolve();
typeInt32 = targetAssembly.MainModule.Import(typeInt32);
method.Parameters.Add(new ParameterDefinition(typeInt32) { Name = "a", IsOut = true });
Run Code Online (Sandbox Code Playgroud)

然后,我在添加的IL和编译器生成的IL代码之间进行比较。它们不一样。

Cecil添加的矿井:

.method private hidebysig static bool XXXXX([out] int32 a) cil managed
Run Code Online (Sandbox Code Playgroud)

编译器生成:

.method private hidebysig static bool XXXXX([out] int32& a) cil managed
Run Code Online (Sandbox Code Playgroud)

请谁知道如何使我的Cecil添加方法与编译器生成的方法相同?

.net il mono.cecil

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

共享内存上的 spsc_queue

我尝试了几个小时,这个问题几乎让我发疯。

我想创建一个spsc_queue过度共享的内存,队列中的每个元素都是mq_item_t下面的一个结构体。

typedef struct _mq_item_t{
    mq_item_type type;

    union
    {
        struct{
            log_level_t level;
            char *      text;
        } log;
        struct{
            char *      control;
            size_t      control_size;
            char *      payload;
            size_t      payload_size;
        } error;
        struct{
            char *      channel;
            char *      control;
            size_t      control_size;
            char *      payload;
            size_t      payload_size;
        } data;
    };
} mq_item_t;
Run Code Online (Sandbox Code Playgroud)

然后我有以下代码来创建spsc_queue.

typedef boost::interprocess::managed_windows_shared_memory native_managed_shared_memory;
typedef boost::interprocess::allocator<mq_item_t, native_managed_shared_memory::segment_manager> shmem_allocator;
typedef boost::lockfree::spsc_queue< mq_item_t, boost::lockfree::allocator<shmem_allocator>> lockfree_queue;

m_segment = new native_managed_shared_memory(create_only, mem_name, SHARED_MEMORY_BYTES, NULL, perm);
shmem_allocator alloc(m_segment->get_segment_manager());
m_segment->find_or_construct<lockfree_queue>("name of …
Run Code Online (Sandbox Code Playgroud)

boost boost-interprocess

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

奥尔良提醒执行是否交错?

如果同一个grain激活有两个不同的提醒在同一点被触发,假设grain执行上下文是单线程的,那么两个提醒是否会同时执行和交错?

另外,提醒执行是否受到默认 30 秒超时的限制?

orleans

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

始终无法在ASP.Net中连接mySQL数据库

环境:Windows 2008 R2和ASP.Net 4.0

Connector/Net 6.6.4从这里开始

注意:我选择了".Net/Mono"平台并下载了与架构无关的版本. 启用-32位应用程序在IIS中不是我的选择.

我尝试通过以下连接字符串连接mySQL数据库.

Server=192.168.1.200;Port=3306;Database=gm_log;Uid=cf2;Pwd=123456;Charset=utf8;AllowUserVariables=True;Allow Zero Datetime=false;PersistSecurityInfo=false;Pooling=true;ConnectionLifeTime=0;Max Pool Size=100;Min Pool Size=1;
Run Code Online (Sandbox Code Playgroud)

并且MySqlConnection.Open抛出一个OverflowException.算术运算导致溢出

这是堆栈跟踪.

at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.HandleAuthChange(MySqlPacket packet)
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.Authenticate(Boolean reset)
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool..ctor(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPoolManager.GetPool(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlConnection.Open()
Run Code Online (Sandbox Code Playgroud)

其他人遇到同样的问题?

mysql ado.net mysql-connector

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

GOMAXPROCS为1时是否需要锁定

GOMAXPROCS变量限制了可以同时执行用户级Go代码的操作系统线程的数量。

因此,如果GOMAXPROCS为1,则无论我有多少个goroutine,都可以安全地map从不同goroutine中访问变量(如),而无需进行任何锁定。正确?

go

3
推荐指数
2
解决办法
703
查看次数

openssl RSA_public_encrypt()返回的大小总是= RSA_size(rsa)?

RSA_size(rsa)返回模数,在我的应用程序中等于256.我用RSA_PKCS1_OAEP_PADDING选项加密数据,所以发送的输入缓冲区的最大长度RSA_public_encrypt()是256 - 41 = 215

在某些情况下,我的输入缓冲区的长度可能会超过215的限制,我需要调用RSA_public_encrypt()multitimes.

我的问题是关于的回报价值RSA_public_encrypt().

从我的测试中返回值是256(等于RSA_size(rsa)),文档还说:

RSA_public_encrypt()返回加密数据的大小(即RSA_size(rsa)).

我只是想确保返回值只有两种可能性 RSA_public_encrypt().

-1(错误)模数(成功),没有其他可能性,是吗?我很好奇,因为我需要划分加密缓冲区并调用RSA_private_decrypt()每个块.如果每个加密缓冲区RSA_public_encrypt相同,那么我不需要为每个缓冲区存储大小.

encryption openssl cryptography rsa

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

将字典<long,VALUE>序列化为BSON文档

我想Dictionary<long, VALUE>在MongoDB中序列化以下JSON.

{
   "213" : {},
   "63624" : {},
   ...
}
Run Code Online (Sandbox Code Playgroud)

我不想要其他的DictionaryRepresentation除外DictionaryRepresentation.Document.Document

我正在使用MongoDB C#驱动程序(v2.0.1.27),将long类型密钥转换为智能并不聪明string,这会导致异常.

谢谢

mongodb-.net-driver

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

与现有绑定匹配的Rust模式?

我从昨天开始学习Rust。以下代码很简单-

use encoding_rs::Encoding;
use std::fs;
use std::fs::File;
use std::io::BufReader;
use std::io::Read;
use std::option::Option;
use std::path::Path;

extern crate encoding_rs;
extern crate encoding_rs_io;

fn main() {
    let mut reader = BufReader::new(file);
    let mut bom: [u8; 3] = [0; 3];

    // read BOM
    if let Ok(_) = reader.read_exact(&mut bom) {
        // sniff BOM

        // Because Rust disallows NULLs, hence I declare `Option<&Encoding>` to store the result of encoding.
        let mut enc: Option<&Encoding> = None;
        match Encoding::for_bom(&bom) {
            Some((encoding, _)) => {
                // <-- …
Run Code Online (Sandbox Code Playgroud)

rust

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

C#Dictionary <T,K>单作者多读取器的线程安全

只要未修改集合,Dictionary就可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.

这就是MSDN所说的.

如果没有必要,我不想使用ConcurrentDictionary

我假设,如果只有一个线程执行写入操作Dictionary<T,K>,则其他线程可以安全地同时执行简单的读取操作(如TryGetValue不枚举)而不获取锁定,我是否正确?

.net c# dictionary base-class-library

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

使用MDB调查NodeJS内存泄漏,umem未加载到地址空间中

我有一个在CentOS上运行的nodejs进程.我正在关注这个以及来自Joyent的这个 turotials,以利用MDB来调查潜在的内存泄漏.

我生成了核心文件并上传到曼塔.因此我开始使用mlogin和MDB.

在MDB中,我执行::findleaks并产生此错误

> ::dmods
libumem.so
mdb
mdb_kb
mdb_kproc
mdb_kvm
mdb_proc
mdb_raw
v8
> ::findleaks
mdb: findleaks: umem is not loaded in the address space
Run Code Online (Sandbox Code Playgroud)

除了CentOS之外,在其他操作系统上运行我的nodejs进程是不可能的.

错误是否意味着核心转储中缺少某些信息?如何解决?

node.js joyent

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