小编sal*_*lva的帖子

从gitweb克隆存储库

我想克隆git://服务器已关闭的git存储库.

幸运的是,它的gitweb接口仍在工作,并且可以从那里获得重建git存储库所需的所有数据.

那么,是否有任何git命令或其他工具能够从gitweb克隆git存储库?

(我可以自己写一个机器人,但如果有另一种方法,不想浪费我的时间去做)

git clone gitweb

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

为什么Perl中的函数调用循环如此缓慢?

我在Perl中编写了一个文件解析器,因此不得不循环遍历文件.文件由固定长度的记录,我想作出这样的分析给定记录一个单独的函数,并调用该函数在一个循环.但是,对于大文件,最终结果变得缓慢,我的猜测是我不应该使用外部函数.所以我在循环中使用和不使用函数调用进行了一些虚拟测试:

[一个]

foreach (1 .. 10000000) {
$a = &get_string();
}

sub get_string {
return sprintf("%s\n", 'abc');
}
Run Code Online (Sandbox Code Playgroud)

[B]

foreach (1 .. 10000000) {
$a = sprintf "%s\n", 'abc';
}
Run Code Online (Sandbox Code Playgroud)

测量表明,代码运行比我事先知道代码中的本来运行速度变慢代码B.慢约3-4次,但我还是很惊讶,差别那么大.还试图用Python和Java运行类似的测试.在Python代码中的当量为除B慢约20%和Java代码被以相同的速度乳宁或多或少(如预期).将函数从sprintf更改为其他内容并未显示任何显着差异.

有没有办法帮助Perl更快地运行这样的循环?我在这里做了一些完全错误的事情,还是Perl的功能是函数调用是这样的开销?

perl performance

16
推荐指数
3
解决办法
4537
查看次数

检测uint64_t整数溢出与C的乘法

是否有任何有效且可移植的方法来检查C中的int64_t或uint64_t操作数的乘法运算何时溢出?

例如,为了添加uint64_t,我可以这样做:

if (UINT64_MAX - a < b) overflow_detected();
else sum = a + b;
Run Code Online (Sandbox Code Playgroud)

但我无法得到一个类似的简单表达式来进行乘法运算.

所有发生在我身上的是将操作数分解为高和低uint32_t部分,并在检查溢出时执行这些部分的乘法,这些东西真的很难看,也可能效率低下.

更新1:添加了一些实现多种方法的基准代码

更新2:添加了Jens Gustedt方法

基准程序:

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

#define N 100000000

int d = 2;

#define POW_2_64 ((double)(1 << 31) * (double)(1 << 31) * 4)

#define calc_b (a + c)
// #define calc_b (a + d)

int main(int argc, char *argv[]) {
    uint64_t a;
    uint64_t c = 0;
    int o = 0;
    int opt;

    if (argc != 2) …
Run Code Online (Sandbox Code Playgroud)

c integer-overflow multiplication

16
推荐指数
2
解决办法
6995
查看次数

在Java REST Web服务中访问multipart/form-data post请求的各个部分

我有一个多部分表单,它应该上传一个文件以及一些参数.它看起来像这样:

<form id="upload" action="http://localhost:9998/test" method="post" enctype="multipart/form-data">
    <input name="inputfile" type="file" size="50" accept="application/octet-stream">
    <input name="someparameter" type="text" size="10">
    <input type="submit" value="Go!">
</form>
Run Code Online (Sandbox Code Playgroud)

Web服务看起来像这样:

@Path("/test")
public class ServiceInterface {
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void execute(@FormParam(value="someparameter") String param) {
        System.out.println(param);
    }
}
Run Code Online (Sandbox Code Playgroud)

提交表单时,"someparameter"的值始终报告为null,尽管在我输入的值的形式中.

我的问题是:

  1. 上面的代码有什么问题?
  2. 我如何访问与表单一起传输的文件?

我正在使用Jersey 1.10.

java rest file-upload jersey

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

使用向量扩展时让GCC生成PTEST指令

当使用C的GCC向量扩展时,如何检查向量上的所有值是否为零?

例如:

#include <stdint.h>

typedef uint32_t v8ui __attribute__ ((vector_size (32)));

v8ui*
foo(v8ui *mem) {
    v8ui v;
    for ( v = (v8ui){ 1, 1, 1, 1, 1, 1, 1, 1 };
          v[0] || v[1] || v[2] || v[3] || v[4] || v[5] || v[6] || v[7];
          mem++)
        v &= *(mem);

    return mem;
}
Run Code Online (Sandbox Code Playgroud)

SSE4.2具有PTEST允许运行像用作for条件的测试的指令,但是GCC生成的代码只是解包向量并逐个检查单个元素:

.L2:
        vandps  (%rax), %ymm1, %ymm1
        vmovdqa %xmm1, %xmm0
        addq    $32, %rax
        vmovd   %xmm0, %edx
        testl   %edx, %edx
        jne     .L2
        vpextrd $1, %xmm0, %edx …
Run Code Online (Sandbox Code Playgroud)

c gcc sse vectorization avx2

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

Perl foreach循环只打印一行

我有这个Perl代码只打印第一行而不是所有行.

use Net::SSH::Perl;
my $user = "user"; 
my $cmd = "df -m | grep data";
my $host = "host1.example.com"; 

my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user);
my ($dflines,$errors,$exit) = $ssh->cmd($cmd);
foreach $line ($dflines) {
  print "$line";
  my @values = split(' ',$line);
  my ($MBsize, $MBused, $MBavail, $dir) =
      ($values[1], $values[2], $values[3], $values[5]);
  print "MBsize=$MBsize MBused=$MBused MBavail=$MBavail dir=$dir\n";
}
Run Code Online (Sandbox Code Playgroud)

它打印:

/dev/sdb1              1407118    931813    403828  70% /data1
/dev/sdc1              1407118    921739    413902  70% /data2
/dev/sdd1              1407118    909408    426233  69% /data3
/dev/sde1              1407118    918828    416813  69% /data4 …
Run Code Online (Sandbox Code Playgroud)

perl foreach

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

感人的细分

任何人都可以建议我这个算法.

您将获得x轴上N段的起点和终点.即使在它们的边缘上,也可以通过垂直于它们的两条线来触摸这些段中的多少个?

样本输入:

3
5
2 3
1 3
1 5
3 4
4 5
5
1 2
1 3
2 3
1 4
1 5
3
1 2
3 4
5 6
Run Code Online (Sandbox Code Playgroud)

样本输出:

Case 1: 5
Case 2: 5
Case 3: 2
Run Code Online (Sandbox Code Playgroud)

说明:

  • 情况1:我们将绘制两条线(平行于Y轴)在点2和4处穿过X轴.这两条线将触及所有五个线段.
  • 情况2:我们可以触摸所有点,即使一条线穿过X轴在2.
  • 案例3:在这种情况下,不可能触摸两个以上的点.

约束:

1 ? N ? 10^5
0 ? a < b ? 10^9
Run Code Online (Sandbox Code Playgroud)

sorting algorithm graph-theory overlapping data-structures

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

放弃Windows上的权利

我有一个以管理员身份运行的C++应用程序(它使用requestedExecutionLevel设置为的清单进行编译requireAdministrator.

在某些时候,一旦完成了需要管理权限的所有任务,我想放弃这些权限并以启动应用程序的用户身份执行剩余的任务.

Windows提供了ImpersonateLoggedOnUser函数,但我找不到任何方法来为调用该应用程序的用户获取令牌.

有没有其他方法可以做我在这里描述的内容?

c++ windows permissions

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

CPAN在ubuntu上给出了各种错误

我只是尝试运行一个简单的perl程序从xml导入数据并将其导出到数据库.

使用Mysql; 没有工作,所以我使用DBD :: mysql后,无法从cpan获取Mysql.pm.

但是,我无法安装任何东西.我正在尝试安装xml解析器模块,但无论您尝试安装什么模块,cpan都会提供这些错误.

install xml::parser
CPAN: Storable loaded ok (v2.20)
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz'
CPAN: Compress::Zlib loaded ok (v2.02)
............................................................................DONE
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz'
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
CPAN: Time::HiRes loaded ok (v1.9719)
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header.
Please check the validity of …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu perl cpan

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

在远程机器上查找文件

您好,我正在尝试在远程计算机上执行以下命令,我该怎么做

ssh login.com find /nfs/repo/ -name ".user_repo.log" | \
  xargs cat | awk '{$NF=""; print $0}' |               \
  sed "1i Owner RepoName CreatedDate" | column -t
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息

 cat: /nfs/repo/new1/info/.user_repo.log: No such file or directory
 cat: /nfs/repo/new2/info/.user_repo.log: No such file or directory
Run Code Online (Sandbox Code Playgroud)

cat 命令试图在本地系统上查找文件,而这些文件存在于远程计算机上。我该如何处理这个问题

linux awk command sed find

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