小编bit*_*its的帖子

如何使用GDB修改内存内容?

我知道我们可以使用几个命令来访问和读取内存:例如,print,p,x ......

但是如何在任何特定位置更改内存的内容(在GDB中调试时)?

c linux memory gdb

77
推荐指数
4
解决办法
12万
查看次数

N路合并算法

作为Mergesort算法的一部分,广泛研究了双向合并.但我有兴趣找出一个可以执行N路合并的最佳方式吗?

可以说,我有一些N文件,每个文件已经排序了100万个整数.我必须将它们合并为1个单独的文件,这将有1亿个排序整数.

请记住,此问题的用例实际上是基于磁盘的外部排序.因此,在实际场景中也会存在内存限制.因此,一次合并2个文件(99次)的天真方法将无效.假设我们每个阵列只有一个小的可用内存滑动窗口.

我不确定是否已经存在这种N路合并的标准化解决方案.(谷歌搜索并没有告诉我太多).

但是如果你知道一个好的n路合并算法,请发布algo/link.

时间复杂度:如果我们大大增加N要合并的文件()的数量,那将如何影响算法的时间复杂度?

谢谢你的回答.

我没有被问过这个问题,但我觉得这可能是一个有趣的面试问题.因此标记.

algorithm merge

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

实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作

我遇到了这个问题: 实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作.

我最初想过使用一个最小堆数据结构,它对于get_min()具有O(1)复杂度.但是push_rear()和pop_front()将是O(log(n)).

有谁知道实现这样一个有O(1)push(),pop()和min()的队列的最佳方法是什么?

我搜索了这个,并想指出这个算法极客线程.但似乎没有一个解决方案遵循所有3种方法的恒定时间规则:push(),pop()和min().

感谢所有的建议.

algorithm queue big-o data-structures

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

如何根据cygwin中的起始和结束行号裁剪(剪切)文本文件?

我有几个约100MB的日志文件.我个人认为处理这些大文件很麻烦.我知道我感兴趣的日志行只有200到400行左右.

从这些文件中提取相关日志行的好方法是什么,即我只想将行号范围传递给另一个文件.

例如,输入是:

filename: MyHugeLogFile.log
Starting line number: 38438
Ending line number:   39276
Run Code Online (Sandbox Code Playgroud)

是否有一个命令,我可以在cygwin中运行cat只能在该文件中的那个范围?我知道如果我能以某种方式在stdout中显示该范围,那么我也可以管道输出文件.

注意:添加Linux标记以提高可见性,但我需要一个可能在cygwin中运行的解决方案.(通常linux命令在cygwin中有效).

linux command-line cygwin

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

枚举类似于PowerShell中的switch参数

我以这种方式在PowerShell脚本中使用switch参数.

param(
    [switch] $Word,
    [switch] $Excel,
    [switch] $powerpoint,
    [switch] $v2007,
    [switch] $v2010,
    [switch] $x86,
    [switch] $x64,
)
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚任何整洁的方式让它更多的枚举风格.正如任何人可能猜到的那样,我希望用户在word,excel和powerpoint之间进行选择.在x2007和v2010之间.

有没有一个简洁的方法来获得输入参数枚举风格?

我是PowerShell的新手.所以,如果这听起来像我不知道一些明显的东西,那么请指出我可以阅读的一些链接.

powershell

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

shovel(<<)运算符如何在Ruby Hashes中工作?

当我遇到这个时,我正在阅读Ruby Koans教程系列about_hashes.rb:

def test_default_value_is_the_same_object
  hash = Hash.new([])

  hash[:one] << "uno"
  hash[:two] << "dos"

  assert_equal ["uno", "dos"], hash[:one]
  assert_equal ["uno", "dos"], hash[:two]
  assert_equal ["uno", "dos"], hash[:three]

  assert_equal true, hash[:one].object_id == hash[:two].object_id
end
Run Code Online (Sandbox Code Playgroud)

其中的值assert_equals实际上是教程所期望的.但我无法理解使用<<运算符和=运算符之间有何区别?

我的期望是:

  • hash[:one] 将会 ["uno"]
  • hash[:two] 将会 ["dos"]
  • hash[:three] 将会 []

有人可以解释为什么我的期望是错的吗?

ruby hash

49
推荐指数
2
解决办法
9161
查看次数

PThread库的源代码?

我试图找到pthread库的源代码.(我猜它应该是Linux源代码的一部分)

但不知何故找不到任何有它的好网站.

我喜欢这个网站:http://lxr.linux.no/#linux+v2.6.34.1/我经常找到我需要的东西.某种程度上pthread源是不可搜索的.无论如何,我想提一下,我需要一个链接到可浏览(和可搜索)的网站.

浏览linux源代码的网站可能是个人品味的问题.因此欢迎所有指向pthread源的链接.

最有可能的是,我最终会将所有这些书签加入书签,通过它们查看,然后接受最佳答案.

linux open-source pthreads

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

如何以点语言显示文本(graphviz)

我试图找出我怎么能走通过一些文字在我的节点基于点graphviz的图表?

我查看了这个页面,但无法弄清楚:http: //www.graphviz.org/doc/info/attrs.html

谷歌搜索也没有帮助.

考虑这个图,这些基本上是来自bugzilla的bug号.红色节点表示已关闭的错误,但我不想像这样对它们进行颜色编码.显然,穿过511272比红色节点511272更直观.

在此输入图像描述

如果有人知道如何在节点内点击文本,请分享.谢谢,

Shobhit

dot graphviz

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

在互联网上,我们可以在c/c ++中学习安全编程

我开始学习有关安全性和安全编程的所有知识.

我一直听说过缓冲区溢出漏洞等问题.

但我还不知道这些漏洞是如何被利用的.我们如何安全地编程以确保我们的代码是健壮的.

当我说这一切时,我感兴趣的编程语言是c和c ++.

  1. 我正在寻找免费的教程和互联网资源,我可以学习安全编程的每一个内容.

  2. 我们也欢迎平台特定提示.例如,我知道在Windows编程中我们可以使用像"memmove_s"这样的函数来获得安全代码.但Linux/Unix中的等价物是什么?或者它是一样的吗?

  3. ac/c ++程序员是否应该担心特制的格式化蜇(比如非常流行的旧PHP格式的字符串外观)?

这里有很多问题,但一般的想法是我的意思是学习安全编程.

感谢您的帮助.

c c++ security

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

在非阻塞套接字连接中,select()始终返回1

我有这个代码段,旨在使用套接字连接连接到服务器.但是,如果它无法在一定时间内连接到服务器,我希望它停止尝试.我尝试使用这个非阻塞套接字和select命令执行此操作,但select总是返回1,表示当我提供的地址不存在时服务器存在.有任何想法吗?

SOCKET tcp_client( char *hname, char *sname )  {    
    fd_set fdset;
    struct sockaddr_in peer;
    SOCKET s;
    FD_ZERO(&fdset);
    // FD_SET(STDIN, &fdset);
    FD_SET(s, &fdset);
    errno=1;
    struct timeval tv;
    tv.tv_sec = 15;
    set_address( hname, sname, &peer, "tcp" );
    s = socket( AF_INET, SOCK_STREAM, 0 );

    int n = 1;
    fcntl(s, F_SETFL, O_NONBLOCK);

    if ( !isvalidsock( s ) )
    {
        printf("Socket Call Failed: %s\n", strerror(errno));
        return(0);
    }

    int x = 0;

    int status = connect( s, ( struct sockaddr * )&peer, sizeof( peer ) …
Run Code Online (Sandbox Code Playgroud)

c sockets select nonblocking connect

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