小编mer*_*011的帖子

"\ b"在gdb字符串打印输出中的含义是什么?

当我p bufbuf包含不可打印字符的缓冲区上发出命令时,当gdb尝试打印不可打印的字符时,我通常会得到八进制输出.

但是,这次我得到了这样的字符串.

foobar\341\204\004\b\357\373\377\277
Run Code Online (Sandbox Code Playgroud)

\b意味着什么?

c gdb

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

通过删除分支进行优化的现实示例

根据英特尔的说法,删除分支是优化C代码以在紧密循环中使用的最有效方法之一。但是,链接页面中的示例仅涵盖循环展开和将不变分支移至循环外部。

是否有其他且不同的(之前和之后)分支移除示例进行优化?

c optimization intel branch-prediction

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

如何判断Linux二进制文件在没有源代码的情况下创建了多少个线程?

假设我有一个没有源的通用二进制文件,我想确定它是串行运行还是生成多个线程.

有没有办法可以从linux命令行执行此操作?

c linux multithreading

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

如何在gnuplot中增加ylabel的字体大小?

我试图set yabel={/*2.0 MyLabel}根据这个问题的答案来做,但这只是在ylabel上打印了这些文字。

gnuplot

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

如何让R中的原生Vi模式持久化?

我看过R中vi输入模式的答案R上的vi模式到emacs模式.通过后一个问题,我了解到可以 在R中meta-ctrl-j切换vi-mode,但我无法坚持下去,所以每次启动时R,默认情况下启用vi-mode.

我试过放入set editing-mode vi我的.inputrc,但是没有达到预期的效果.

如何让vi-modefrom meta-ctrl-j在各个R会话中保持持久性?

vim r readline

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

可以使用Python切片来按索引跳过一个特定元素吗?

假设我正在编写一个递归函数,希望将a传递list给缺少单个元素的函数,作为循环的一部分。这是一种可能的解决方案:

def Foo(input):
    if len(input) == 0: return
    for j in input:
       t = input[:]
       t.remove(j)
       Foo(t)
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以滥用slice运算符来传递列表减去元素,j而无需显式复制列表并从中删除项目?

python

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

为什么segfault而不是特权指令错误?

我试图rdmsr在用户模式下执行特权指令,我希望得到某种特权错误,但我得到一个段错误.我检查了asm,我装0x186ecx,这被认为是PERFEVTSEL0,基于上手动,1171页.

segfault的原因是什么,如何修改下面的代码来修复它?

我想在破解内核模块之前解决这个问题,因为我不希望这个段错误炸毁我的内核.

更新:我正在运行Intel(R) Xeon(R) CPU X3470.

#define _GNU_SOURCE

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

#include <sched.h>
#include <assert.h>

uint64_t
read_msr(int ecx)
{
    unsigned int a, d;
    __asm __volatile("rdmsr" : "=a"(a), "=d"(d) : "c"(ecx));
    return ((uint64_t)a) | (((uint64_t)d) << 32);
}

int main(int ac, char **av)
{
    uint64_t start, end;
    cpu_set_t cpuset;
    unsigned int c = 0x186;
    int i = 0;

    CPU_ZERO(&cpuset);
        CPU_SET(i, &cpuset);
        assert(sched_setaffinity(0, sizeof(cpuset), …
Run Code Online (Sandbox Code Playgroud)

linux performance x86 assembly

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

Rails 4在哪里存储用于CSRF保护的身份验证令牌?

在我的一个控制器中,我编写以下内容以保护CSRF中的某些页面.

  protect_from_forgery :only => [:foo, :bar]
Run Code Online (Sandbox Code Playgroud)

当我加载URL的对应于foobar,和我查看HTML,我没有看到任何隐藏的输入域或包含任何安全令牌的meta标签,描述在这里.

但是,在测试期间,我确实发现这CSRF对这些页面无效,尽管它对同一应用程序中未受保护的其他页面有效.

那么在哪里Rails 4存储用于验证请求来自原始页面的安全令牌?

请注意,我已经通过阅读Ruby on Rails的安全指南,并从部分上protect_from_forgery,它说

这将自动包含所有表单中的安全令牌和Rails生成的Ajax请求.如果安全令牌与预期的不匹配,则会重置会话.

问题是,启用CSRF保护的页面上的表单中似乎缺少此安全令牌,即使CSRF确实对它们无效.


请注意,此代码来自一个类项目,其中一个目标是执行clickjacking攻击以绕过CSRF项目.我在这里提出的问题与作业的目的正交的.

我只是好奇Rails如何做CSRF.

rails server直接做之后,我找不到安全令牌的相关URL是http://localhost:3000/protected_transfer.

security ruby-on-rails csrf csrf-protection

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

是否可以将两个以上的标准流连接到 Linux 中的终端?

考虑下面的简单程序,假设它在一个名为Test.c.

#include <stdio.h>

int main(){
    fprintf(stdout, "Hello stdout\n");
    fprintf(stderr, "Hello stderr\n");
}
Run Code Online (Sandbox Code Playgroud)

假设我将这个程序编译成一个名为的可执行文件Test并按如下方式运行它。

./Test > Out 2> Err
Run Code Online (Sandbox Code Playgroud)

在这次运行之后,我将有两个文件OutErr,它们将分别包含两条消息。

这很棒,因为我通常可以将两种不同类型的消息打印到控制台,然后使用 bash 重定向来过滤一种或两种类型的消息。但是,我只能使用两个文件描述符进行这种过滤这一事实似乎非常有限。

有没有办法打开指向终端输出的第三个或第 n 个文件描述符,以便我可以单独过滤它?

语法可能是这样的。

./Test > Out 2> Err 3> Err2
Run Code Online (Sandbox Code Playgroud)

bash由于以下测试,我推测可能对此有一些基本的支持,这似乎意味着bash将 a 之后的数字&视为文件描述符。

$ ./Test >&2
Hello stdout
Hello stderr
$ ./Test >&3
bash: 3: Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

c linux bash shell command-line

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

什么是分阶段推进库?

在尝试构建thriftc ++库时,我在指定--with-boost选项后遇到了以下错误.

如果你有一个分阶段的升级库(仍然没有安装),请在你的环境中指定$ BOOST_ROOT,不要给--with-boost选项提供PATH.

我查看了boost文档(我不太熟悉),但是我没有找到一个很好的术语定义staged boost library.我看到括号(still not installed),但有许多状态是图书馆可以在那个秋天的类别下not installed.

当我第一次下载时boost,我运行./bootstrap./b2编译它.

staged在这一点吗?或者我是否必须做其他事情来制作它staged

c++ boost

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