小编ell*_*iel的帖子

为特定大小创建零向量

我想初始化一个零的向量,其具有在运行时确定的特定大小.

在C中,它会像:

int main(void)
{
    uint size = get_uchar();
    int A[size][size];
    memset(A, 0, size*size*sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

这是我在Rust中尝试编写的辅助函数,但我认为切片语法0..size冒犯了编译器.此外,它看起来比C版更冗长.有没有比较惯用的方法呢?

fn zeros(size: u32) -> Vec<i32> {
    let mut zero_vec: Vec<i32> = Vec::with_capacity(size);
    for i in 0..size {
        zero_vec.push(0);
    }
    return zero_vec;
}
Run Code Online (Sandbox Code Playgroud)

我发誓,旧的文档用于解释这里from_elem()方法,并且[0 ; size] 符号的排列似乎都不起作用

我想最终将其粘贴到子串搜索算法中:

pub fn kmp(text: &str, pattern: &str) -> i64 {
    let mut shifts = zeros(pattern.len()+1);
}
Run Code Online (Sandbox Code Playgroud)

rust

53
推荐指数
4
解决办法
3万
查看次数

pandas:删除另一系列时间索引的时间间隔内的所有行(即时间范围排除)

假设我有两个数据帧:

#df1
time
2016-09-12 13:00:00.017    1.0
2016-09-12 13:00:03.233    1.0
2016-09-12 13:00:10.256    1.0
2016-09-12 13:00:19.605    1.0

#df2
time
2016-09-12 13:00:00.017    1.0
2016-09-12 13:00:00.233    0.0
2016-09-12 13:00:01.016    1.0
2016-09-12 13:00:01.505    0.0
2016-09-12 13:00:06.017    1.0
2016-09-12 13:00:07.233    0.0
2016-09-12 13:00:08.256    1.0
2016-09-12 13:00:19.705    0.0
Run Code Online (Sandbox Code Playgroud)

我想删除其中所有df2时间索引中最多+1秒的行df1,因此产生:

#result
time
2016-09-12 13:00:01.505    0.0
2016-09-12 13:00:06.017    1.0
2016-09-12 13:00:07.233    0.0
2016-09-12 13:00:08.256    1.0
Run Code Online (Sandbox Code Playgroud)

最有效的方法是什么?我认为API中的时间范围排除没有任何用处.

python pandas

5
推荐指数
2
解决办法
552
查看次数

在 Ubuntu 上通过物理网络向自身发送流量

我有一个双端口以太网 NIC,假设我已连接了 2 个环路端口,并将以下 IP 分配给 2 个以太网接口:

  • eth2 -> 192.168.2.1
  • eth3 -> 192.168.3.1

我想通过物理网络将流量从一个端口发送到另一个端口,例如192.168.3.1从ping 192.168.2.1。但是,Linux 内核中的 TCP/IP 堆栈会识别这两个地址是本地地址,并将流量发送到环回适配器,因此流量永远不会到达物理网络。

我最接近的解决方案是 Anastasov 的send-to-self patch,不幸的是,该补丁自内核 3.6 以来已停止使用,因此它不适用于我的 Ubuntu 13.10(内核 3.11)。我尝试寻找重写 3.11 的补丁,但我似乎无法在 Ubuntu 发行版中找到这些补丁:

  • 包含/linux/inetdevice.h
  • 网/ipv4/devinet.c
  • 净/ipv4/fib_frontend.c
  • 网/ipv4/route.c
  • 文档/网络/ip-sysctl.txt

有没有办法让“发送给自己”补丁发挥作用,或者有其他选择吗?

linux networking nic linux-kernel

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

连接整数变量最惯用的方法是什么?

编译器似乎没有推断整数变量作为字符串文字传递到concat!宏中,所以我找到了stringify!将这些整数变量转换为字符串文字的宏,但这看起来很难看:

fn date(year: u8, month: u8, day: u8) -> String
{
    concat!(stringify!(month), "/",
            stringify!(day), "/",
            stringify!(year)).to_string()
}
Run Code Online (Sandbox Code Playgroud)

string concatenation rust

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

Python/PostgreSQL - 检查服务器是否正在运行

我刚刚开始使用 psycopg2 模块访问本地 PostgreSQL 服务器,我想要一种以编程方式检查服务器是否已启动的方法,以便我的程序可以在我尝试启动服务器时处理错误:

psqldir = 'C:/Program Files/PostgreSQL/9.2/bin'    # Windows
username = os.environ.get('USERNAME')
dbname = 'mydb'
os.chdir(psqldir)
os.system('pg_ctl start -D C:/mydatadir')   # Error here if server already started
conn = psycopg2.connect('dbname=' + dbname + ' user=' + username)
cur = conn.cursor()
Run Code Online (Sandbox Code Playgroud)

我做了一些实验,似乎这返回了“0”或“3”,这可以解决我的问题,但我没有在 PostgreSQL/psycopg2 手册上找到任何信息来确认这是否是记录在案的行为:

server_state = os.system('pg_ctl status -D C:/mydatadir')
Run Code Online (Sandbox Code Playgroud)

最好的办法是什么?谢谢!

python postgresql psycopg2

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

将所有数据帧列强制转换为float的最快方法 - pandas astype slow

有没有更快的方法将pandas数据帧的所有列转换为单一类型?这似乎特别慢:

df = df.apply(lambda x: x.astype(np.float64), axis=1)
Run Code Online (Sandbox Code Playgroud)

我怀疑由于内存分配开销,我无能为力numpy.ndarray.astype.

我也试过了,pd.to_numeric但它任意选择将我的一些列转换为int类型.

python performance numpy dataframe pandas

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

在Mac OS X的vimrc中将键映射到<Esc>

我照常做到了:

inoremap ;; <Esc>
Run Code Online (Sandbox Code Playgroud)

在我的.gvimrc/.vimrc文件中,但进入;;插入模式只需键入字符<Esc>.我该怎么做?是否有Mac键盘的不同键名或我不知道的东西?谢谢!

macos vim

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

i386 C进程 - 剩下的1 GB可寻址空间会发生什么?

据记载,在堆上分配的变量存储在低地址区域中并向堆栈增长,反之亦然.我决定测试一下:

#include <stdio.h>
#include <stdlib.h>

const char my_const_global_var = '0';
char my_global_var = '0';

int main(void) {
    char my_stack_var = '0';
    char* my_heap_var = (char*) malloc(1);
    *my_heap_var = '0';
}
Run Code Online (Sandbox Code Playgroud)

看起来my_const_global_var并且my_global_var在低地址区域(000XXXXX在堆之前和之后不久)解决了,但令我惊讶的是,my_stack_var正好在75%左右(大约是bffbdaXX).我猜我的全局/我会得到一个段错误)堆/堆栈变量超过3 GB的内存,所以我做了一个搜索,发现提到了一个3 GB的屏障,但没有提到剩下的1 GB可寻址空间会发生什么.

剩下的25%的内存地址空间会发生什么?

c memory heap stack

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