小编Mik*_*kov的帖子

在Linux中将物理地址转换为虚拟地址并读取其内容

我有Linux,我有一个物理地址:(即0x60000000).
我想从用户空间Linux程序中读取此地址.

该地址可能位于内核空间中.

c unix linux security operating-system

24
推荐指数
2
解决办法
4147
查看次数

C如何在不使用图形库或任何其他库函数的情况下绘制点/设置像素

我试图理解如何在不使用库函数的情况下绘制一组形成圆的点(/设置像素).

现在,获得给定半径的点的(x,y)坐标是直截了当的.

    for (x=-r; x <r; x=x+0.1) {
         y = sqrt(r*r - x*x);
         draw(x,y, 0, 0);
     }
Run Code Online (Sandbox Code Playgroud)

但是,一旦我得到了积分,你如何真正画圆圈就是令我困惑的事情.我可以使用图形库,但我想了解如何在不使用图形库的情况下完成它

    void draw(float x, float y, float center_x, float center_y) {
          //logic to set pixel given x, y and circle's center_x and center_y
          // basically print x and y on the screen say print as a dot .
          // u 'd need some sort of a 2d char array but how do you translate x and y
          // to pixel positions
    }
Run Code Online (Sandbox Code Playgroud)

有人可以分享任何链接/参考或解释这是如何工作的?

c

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

无法通过代理隧道.代理通过https返回"HTTP/1.1 407"

我尝试通过需要身份验证的https连接到服务器.此外,我在中间有一个http代理,也需要身份验证.我使用ProxyAuthSecurityHandler对代理进行身份验证,使用BasicAuthSecurityHandler对服务器进行身份验证.

接收java.io.IOException:无法通过代理隧道.

Proxy returns "HTTP/1.1 407 Proxy Auth Required"

at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:1525)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect (AbstractDelegateHttpsURLConnection.java:164)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
at org.apache.wink.client.internal.handlers.HttpURLConnectionHandler.processRequest(HttpURLConnectionHandler.java:97)
Run Code Online (Sandbox Code Playgroud)

我注意到ProxyAuthSecurityHandler的实现期待响应代码407但是,在调试期间,由于抛出了IOException,我们永远不会到达第二部分.

代码快照:

ClientConfig configuration = new ClientConfig();
configuration.connectTimeout(timeout);

MyBasicAuthenticationSecurityHandler basicAuthProps = new MyBasicAuthenticationSecurityHandler();
basicAuthProps.setUserName(user);
basicAuthProps.setPassword(password);
configuration.handlers(basicAuthProps);

if ("true".equals(System.getProperty("setProxy"))) {
    configuration.proxyHost(proxyHost);
    if ((proxyPort != null) && !proxyPort.equals("")) {
        configuration.proxyPort(Integer.parseInt(proxyPort));
    }

    MyProxyAuthSecurityHandler proxyAuthSecHandler =
            new MyProxyAuthSecurityHandler();
    proxyAuthSecHandler.setUserName(proxyUser);
    proxyAuthSecHandler.setPassword(proxyPass);
    configuration.handlers(proxyAuthSecHandler);
}

restClient = new RestClient(configuration);
// create the createResourceWithSessionCookies instance to interact with

Resource resource = getResource(loginUrl);

// Request body is empty
ClientResponse response = …
Run Code Online (Sandbox Code Playgroud)

authentication https proxy http-tunneling apache-wink

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

是否可以在不使用malloc的情况下进行内存泄漏?

这个问题如标题所示:是否有可能在不使用任何内核特定方法(如malloc,new等)的情况下产生内存泄漏?

如果我在一个包含很多元素的函数内部创建一个链表怎么办,之后我会退出这个函数而不清理列表.该列表将在不使用任何malloc调用的情况下创建,即

struct list_head {
     struct list_head *next, *prev;
}
Run Code Online (Sandbox Code Playgroud)

可以保证在退出此功能后将释放所有资源吗?所以我可以自由地执行它一百万次,什么都不会被泄露?

主题:如果您不使用任何特定的malloc或新调用,则不会出现堆内存泄漏.决不.是对的吗?

c c++ memory memory-leaks memory-management

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

用于大整数的GCD算法

我在寻找有关快速GCD计算算法的信息.特别是,我想看看它的实现.

对我来说最有趣的是: - Lehmer GCD算法, - 加速GCD算法, - k-ary算法, - 带有FFT的Knuth-Schonhage.我完全没有关于加速GCD算法的信息,我刚看到一些文章,其中提到它是中等输入(~1000位)上最有效和最快速的gcd计算方法

从理论上看,我们很难理解它们.任何人都可以分享代码(最好是在c ++上)与列表中任何算法\部分的实现或分享任何经验.我将非常感谢任何信息,评论,建议,地方.我有一个使用大整数的类,但我没有方法可以使用它.当然,除了欧几里德和二进制gcd算法,我现在看起来很清楚; 这没有问题.我想在最后得到的主要内容:实现lehmer gcd的代码.(从列表中更容易)

algorithm complexity-theory computation double-precision greatest-common-divisor

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

AWK行尾用正则表达式签名

我有一个名为"script.awk"的简单awk脚本,其中包含:

/\/some_simple_string/ { print $0;}
Run Code Online (Sandbox Code Playgroud)

我用它来解析一些包含以下内容的文件:(使用:cat file | awk -f script.awk)

14 catcat one_two/some_thing
15 catcat one_three/one_more_some_simple_string
16 dogdog one_two/some_simple_string_again
17 dogdog one_four/some_simple_string
18 qweqwe firefire/ppp
Run Code Online (Sandbox Code Playgroud)

我希望脚本只打印完全反映"/ some_simple_string [END_OF_LINE]"而不是2或3的笔划.有没有简单的方法可以做到这一点?

我认为,最合适的方法是在正则表达式中添加行尾叹息.所以它只解析以"/ some .."开头的笔画,并在"..string [END_OF_LINE]"的末尾添加一个新行

期望的输出:

17 dogdog one_four/some_simple_string
Run Code Online (Sandbox Code Playgroud)

抱歉混淆,我要求END OF LINE签到正则表达式.正确答案是:

/\/some_simple_string$/ { print $0;}
Run Code Online (Sandbox Code Playgroud)

regex bash awk sed

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

如何找出为什么gcc和g ++产生不同的代码

是否有可能看到gcc和g ++编译过程背后发生了什么?
我有以下程序:

#include <stdio.h>
#include <unistd.h>

size_t sym1 = 100;
size_t *addr = &sym1;

size_t *arr = (size_t*)((size_t)&arr + (size_t)&addr);

int main (int argc, char **argv)
{
    (void) argc;
    (void) argv;

    printf("libtest: addr of main(): %p\n", &main);
    printf("libtest: addr of arr: %p\n", &arr);

    while(1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用gcc时出错时,为什么用g ++生成二进制文件而不出错?
我正在寻找一种方法来追踪使它们表现不同的方法.

# gcc test.c -o test_app
test.c:7:1: error: initializer element is not constant
# g++ test.c -o test_app
Run Code Online (Sandbox Code Playgroud)

我认为原因可能是gcc使用cc1作为编译器而g ++使用cc1plus.
有没有办法更准确地输出实际做的?
我试过使用-v标志,但输出非常相似.是否有不同的标志传递给链接器?
比较两个编译过程并发现其中的差异的最简单方法是什么?

c c++ compiler-construction gcc

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

GNU MP库的GCD计算问题

我有一个关于GNU MP的问题,请你帮我解决一下这个问题.我在Windows上使用"GNU Multiple Precision Arithmetic Library"Edition 5.1.1.(MinGW\gcc + MSYS)

存在一个mpz_gcd函数来计算两个整数的"gcd".

void mpz_gcd (mpz_t rop, mpz_t op1, mpz_t op2);
Run Code Online (Sandbox Code Playgroud)

据我所知,在GNU MP中实现了几种算法来计算最大公约数.其中:

  • 二进制GCD
  • 莱默的算法
  • 次级GCD

使用的算法似乎是根据整数的输入大小自动选择的.

目前,二进制算法仅在N <3时用于GCD.

对于大于GCD_DC_THRESHOLD的输入,GCD通过HGCD(半GCD)函数计算,作为Lehmer算法的推广.

所以,我想至少有三种不同的方法来获得gcd(a,b).对我来说主要问题是:我想指定自己使用哪种算法.我会在随机大输入(即10 ^ 5位)上比较这些算法的时间执行情况,以找出一些常见趋势:使用"二进制GCD"变得比"Lehmer方法"更差的那一点是"HGCD-Lehmer"概括"真的比直截了当的莱默等更好.

有没有简单的方法来指定您想要使用的算法?任何方法从库中提取此算法,任何方式来修改一些"#define"变量.是否可以在没有库重新编译的情况下执行我想要的操作?我只是初学者,我觉得无法弄清楚图书馆里面的各种事情.

PS可能有人会对此产生什么感兴趣.我在github上有一些代码:https://github.com/int000h/gcd_gcc

c algorithm gmp greatest-common-divisor

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

GCC和Clang优化选项之间的区别

前提条件:我使用-O2优化标志调用gcc并使用-O2优化标志调用.
这是否意味着传递给编译器的选项列表将是相同的?
clang是否了解-funroll-loops等标准GCC选项?

我在手册中没有找到任何有用的问题:
http://llvm.org/releases/3.3/tools/clang/docs/UsersManual.html
我甚至找不到可以与之配合使用的GCC兼容选项列表铛.

clang甚至对GCC选项做了什么(或者只是忽略它们?)
我只需要澄清它是如何工作的.

c compiler-construction gcc llvm clang

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