小编Joe*_*Joe的帖子

分段违规后恢复生机

在Segmentation Fault错误之后,是否可以恢复C程序的正常执行流程?

struct A {
    int x;
};
A* a = 0;

a->x = 123; // this is where segmentation violation occurs

// after handling the error I want to get back here:
printf("normal execution");
// the rest of my source code....
Run Code Online (Sandbox Code Playgroud)

我想要一个类似于NullPointerException的机制,它存在于Java,C#等中.

注意:请不要告诉我C++中有一个异常处理机制,因为我知道,不要告诉我在分配之前我应该​​检查每个指针.

我真正想要实现的是恢复正常的执行流程,如上例所示.我知道可以使用POSIX信号进行一些操作.应该怎么样?其他想法?

c signals exception-handling segmentation-fault

14
推荐指数
2
解决办法
7863
查看次数

在64位进程中,我的mmap/malloc请求是否会被拒绝?

64位寻址的地址空间绝对是巨大的.我有一个程序,将有mmap几个内存块,每个大小为100 - 500 MB.我将不可避免地重新映射几次,这可能会导致可用的连续空间出现碎片.

无论空间出现什么碎片,对于可用的地址空间来说肯定会很小.

我的问题是:鉴于这些限制,在正常情况下,我可以期望所有mmap请求成功(即由于碎片而不会失败)吗?他们失败的原因是什么?

我知道堆本身没有整个空间,但我认为它占绝大多数.

Mac OS/Linux.

c malloc operating-system memory-management mmap

13
推荐指数
2
解决办法
4139
查看次数

"网站套餐"中的"网站"实际上是什么意思?

我一直对命名的基本原理有点好奇site-packages.site在这种情况下意味着什么?我怀疑这意味着'网站',我从来没有听说过与安装位置或机器环境有关的"网站".

有任何想法吗?

python naming nomenclature

12
推荐指数
3
解决办法
409
查看次数

我可以使用Siege设置多个标头吗?

我想使用围攻来定位我的应用程序上的多个URL,每个URL都有不同的标题.我可以为一个请求设置标头

siege -u http://localhost/xyz -d1 -r1000 -c25 --header="Token: f2840fc1"
Run Code Online (Sandbox Code Playgroud)

(这似乎没有记录)

我可以在URL文件中指定URL列表,并为每个URL指定自定义标头.但我无法在文档中看到一种方式.

load-testing http-headers siege

12
推荐指数
2
解决办法
8790
查看次数

如何在Bash脚本中找到数字的阶乘?

在shell脚本中如何找到一个数字的阶乘?

bash

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

Git神秘地删除东西(编辑:实际上是django-storages)

问题:有时,但不是每次,Git都会删除static回购目录.我们不确定是什么触发它,但它似乎发生在分支之间合并或有时甚至只是检查分支.它没有询问就这样做,并且吃掉跟踪的文件.

的背景:

  • 我有一个(私人)项目,有一些分支,'发布','开发',多个功能线.
  • 我们有两个人(我和@stevejalim)正在处理回购.这个问题发生在我们俩身上.
  • 我纯粹使用git命令的命令行; 史蒂夫正在使用命令行和Git Tower的混合物.
  • 这是一个带有static目录的Django项目.我们可能在过去的某个时刻git rm编辑了static目录,或者将其放入.gitignore,但不是最近.而我们的开发分支的负责人并没有static.gitignore和具有文件static跟踪.
  • 这种情况很少发生,以至于我们不确定这是我们正在做的事情,还是间歇性问题,Git的错误或损坏的树
  • 可能只在将另一个分支合并回来时才会发生develop.但是分支总是从分支develop到分支develop.但我们不确定.
  • 我们正在使用git-flow,但是在使用非git-flow命令时也会出现问题.

  • 作为何时可以攻击的例子:

    1)史蒂夫有一个干净的开发分支(没有改变提交或阶段)和稳定.他git flow release start|finish在流程中切换了一个新版本(可能是从master到back的合并),整个/ static/tree被删除了.

    2)Steve通过丢弃更改来修复删除(基本上取消删除文件).然后,史蒂夫只是从主人回到开发,而/ static/dir再次被摧毁(这与Git Tower有关)

    3)有时只是从功能分支合并到开发作为临时合并可以触发它.但是,在切割新版本时,它似乎确实发生了

它可能与我们如何修复/ static/dir的切换有关吗?批量取消删除已删除的内容的最佳方法是什么?抛弃局部变化或硬重置HEAD似乎都无法治愈.一个rebase可能帮助我们?

更新我们刚刚再次体验过这一点git add .- 没有变化的分支,没有合并.这有助于诊断吗?

以下是Steve的.git/config的内容:

[core]
   repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
[remote "origin"]
    fetch = …
Run Code Online (Sandbox Code Playgroud)

git django amazon-s3 django-storage git-branch

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

使用Git(或任何VCS)的Go项目的正确组织是什么?

我的GOPATH是/Users/joe/go.我正在开发一个名为的项目myproj,这是一个名为的包myproj.

如果我想能够写,import "myproj"那么我需要的目录结构是:

$GOPATH/src/myproj/myproj.go
$GOPATH/src/myproj/myproj_test.go
...
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法使用Git.如果我查看Google示例包,我会看到以下格式:

go.example/hello/hello.go
go.example/LICENSE
Run Code Online (Sandbox Code Playgroud)

go.example回购的名称在哪里.

因此,实际的包目录可以存储库中找到.如果我把这个存储库的内容放在我的$ GOPATH的目录中,例如

$GOPATH/src/go.example/hello/hello.go
$GOPATH/src/go.example/LICENSE
Run Code Online (Sandbox Code Playgroud)

然后我将不得不键入import "go.example/hello"而不是import "hello".

回到我的项目,我需要在Git存储库中打包它,然后我需要一个容器目录.所以我目前的文件结构是:

$GOPATH/src/myproj                        # The dir for the git repo
$GOPATH/src/myproj/.git
$GOPATH/src/myproj/LICENSE                # Files in the base of the repo
$GOPATH/src/myproj/myproj/myproj.go       # Package files in package dir
$GOPATH/src/myproj/myproj/myproj_test.go  
Run Code Online (Sandbox Code Playgroud)

我需要外部myproj目录来绑定git存储库,我需要内部目录作为包目录.结果是我需要输入import "myproj/myproj"而不是import "myproj".

我该如何解决?我是否必须为我正在开发的每个项目添加多个$ GOPATHS?

提前致谢.

git go

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

SQLite中并发读/写和读取的策略

我有一个SQLite数据库,我保持打开并在进程A中写入.我希望能够以只读方式从进程B使用它.

根据该文件,

  • 如果数据库是UNLOCKED,则可能无法读取(或写入)数据库 - 不合适
  • 如果数据库是SHARED,那么两个进程可以读取它但第一个不能写 - 不合适
  • 如果进程想要写它需要一个EXCLUSIVE锁,这意味着没有其他进程可以写 - 不合适

进程A将进行大量的小写操作,因此我不认为在每个事务提交上复制是有效的.

我能看到它的唯一方法是让读者等到数据库进入UNLOCKED状态,在读取期间获得SHARED锁定然后释放它.同时,进程A将要写入并将被阻塞,直到锁变为可用 - 如果有的话(如果进程B崩溃了怎么办?).这意味着进程A和进程B将争用锁 - B需要SHARED而A需要EXCLUSIVE,这会减慢速度甚至导致并发问题.

有没有办法实现我的并发写作和阅读目标?

sqlite concurrency

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

icmp port unreachable错误消息

我正在从一台PC向另一台PC发送UDP数据包.我正在使用Wire Shark观看整个活动.我注意到一段时间内,数据包从一个系统平滑传输到另一个系统.然后突然出现ICMP有错误的数据包'port unreachable'.然后它们会消失一段时间,并且UDP数据包再次平滑传输.然后这些ICMP数据包再次出现相同的"端口无法访问"错误.然后这些ICMP数据包再次消失,依此类推.这将以周期性方式继续.

任何人都可以了解可能是什么原因.

icmp

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

如何将结果聚合并合并到集合中?

我想聚合并将结果插入到现有集合中,而不删除该集合.文档似乎表明这不是直接可能的.我觉得很难相信.

map-reduce功能具有'输出模式',包括'merge',它可以满足我的需求.我正在寻找聚合的等价物.

$out聚合阶段支持插入集合,但它会替换集合而不是更新集合.如果我这样做,我会(我认为)必须运行另一个map-reduce将其合并到另一个集合中,这似乎效率低下.

我是否遗漏了某些内容,或者是聚合功能中缺少的功能?

mongodb

11
推荐指数
2
解决办法
4400
查看次数