小编Arj*_*kar的帖子

Java:在'Runnable'类中私下调用'run'

我正在编写一个涉及多线程工作池的Java程序Process.该类的每个实例都Process需要能够生成一个额外的线程来完成一些工作.但是线程应该由实例本身和其他人产生.不幸的Runnable.run是'公开'所以如果不做一些技巧我就无法真正强制执行.

这是我计划使用的技巧:

  1. 实施RunnableProcess
  2. 将此写入实现:

码:

 class Process implements Runnable {

    private boolean threadkey = false;

    public void run() {

        synchronized(threadkey) {

            // is someone wrongly calling 'run'?
            if(!threadkey)
                return;

            /* switch off threadkey to make sure
            it cannot be called meaningfully again */
            threadkey = false;
        }
        /* continue processing
         *
         */
        return;
    }
Run Code Online (Sandbox Code Playgroud)

当然,现在我需要做的就是run合法地在打电话之前打开'threadkey'(私有).

优雅?或不?或者,还有更好的方法?或者我应该不打扰执行此并写一个简洁的小评论解释不要打电话'跑'?

人们甚至会在需要做"跑步"的班级内打电话给"跑"吗?

java multithreading

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

获取 DIMM 和 CPU 插槽信息

我想获取 Linux 中 PC 的 RAM 插槽 (DIMM) 和 CPU 插槽的数量。

在Linux中,有一个命令dmidecode,但该命令必须以sudo/root权限运行。

任何人都可以告诉我另一个无需使用 /root 权限即可获取 DIMM 和 CPU 插槽的解决方案sudo

linux

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

编译器停止使用某些C系统调用的方法

我希望人们停止使用像sprintf被认为是不安全功能的功能.如果sprintf在代码中使用了编译错误,还是有任何其他技巧?

c

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

指针操作

#include <stdio.h>

int main()
{
    char a[] = "hello";
    char *ptr = a;
    printf ("%c\n",*ptr++);//it prints character 'h'.
    printf ("%c\n",*ptr);//it prints character 'e'.
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

据我所知:在上面的代码中,在*ptr++表达,都*++具有相同的优先级和操作将需要由右至左的地方,这意味着指针将递增第一和下一个顺从会发生.所以它应该'e'在第一个printf语句中打印字符.但事实并非如此.

所以我的问题是:*ptr++如果它没有在第一个printf语句中取消引用该位置,它将在何处存储递增的值(in,)?

c pointers

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

查找添加到git存储库的最新文件,其名称与给定的通配符模式匹配

我正在查看一个相当大的项目的git存储库,其测试套件分散在各个子目录中的几个文件中.所有测试用例文件名都遵循相同的通配符模式(例如test-*).鉴于此,如何列出提交到存储库的最新测试用例?

我不太关注这些提交是创建测试用例还是最后修改测试用例.要么没事.我只是想看看项目贡献者编写/修改的一些较新的测试.

据我所知:

git log -- */test*
Run Code Online (Sandbox Code Playgroud)

仅显示在层次结构中触摸测试用例一级的提交,而不是更低.

git wildcard

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

计算可变参数的移动平均值

我有一个整数属性,每秒更新一次,信号强度值范围为0 - 100.

我希望能够在过去的10次,25次,50次测量中持续测量移动平均值.

这样做最有效的方法是什么?

我目前正在考虑使用NSMutableArray实现一组FIFO队列,并在每次在阵列具有必需条目数时在末尾添加新值时弹出前导值.但是,我不确定是否有更有效的方法来做到这一点.

average objective-c moving-average ios

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

了解C中的地址

对于某些结构splab:

int main() {

   int a;
   struct splab *s1;
   int b;

   printf("%x\n",&a);
   printf("%x\n",&b);

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

我想我应该进入第二次印刷:( bfc251e8 - 8即考虑占用的空间s1).

相反,我得到了:

bfc251e8
bfc251ec
Run Code Online (Sandbox Code Playgroud)

为什么?

c pointers

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

ATLAS的未定义引用

我试图在我的项目中使用ATLAS,但我无法将最简单的代码链接到它:

#include <stdio.h>
#include <cblas.h>

void ATL_buildinfo(void);

int main() {
    ATL_buildinfo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在编译:

gcc -I/home/caian/ATLAS/include/ \
  -I/home/caian/ATLAS/ARCH/include/ \
  -L/home/caian/ATLAS/ARCH/lib/ \
  -latlas main.c -o test
Run Code Online (Sandbox Code Playgroud)

我仔细检查了ATL_buildinfo原型和libatlas.a,nm显示ATL_buildinfo存在.

可能是什么问题呢?

linker gcc atlas

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

本地和全局变量的地址

我写了这个程序来检查局部变量和全局变量的地址.我读到堆栈段存储局部变量,数据段存储全局变量.但是当我执行这个程序时,两个变量的地址没有太大差别,这意味着它们必须在同一个段中.不明白为什么会发生这种情况..这里是代码和输出 -

    #include<stdio.h>
    int *chr;
    void main(){
        int *char1;
        printf("global- %p \n local- %p",chr,char1);
        chr=malloc(sizeof(int));
        char1=malloc(sizeof(int));
        printf("malloc_global  = %p \n malloc_local = %p",chr,char1);
   }
Run Code Online (Sandbox Code Playgroud)

输出是 -

global- (nil) 
 local- (nil) 
malloc_global  = 0x969010 
 malloc_local = 0x969030 
Run Code Online (Sandbox Code Playgroud)

c pointers

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

如何使用“ offsetof”在不同结构之间执行“ memcpy”?

我有以下两个结构。我需要从复制d, e, fsource,然后destination使用memcpyoffsetof。我怎样才能做到这一点?

struct source
{
    int a;
    int b;
    int c;
    int d;
    int e;
    int f;
};

struct destination
{
    int d;
    int e;
    int f;
};
Run Code Online (Sandbox Code Playgroud)

c offsetof memcpy

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

Java ProcessBuilder内存

我想知道是否有人确切知道ProcessBuilder/Runtime.exec()是否在JVM内存的空间内执行,或者它是否使用完全独立的系统内存并以某种方式将输出发送到Java.我找不到关于这个主题的任何文件.

我认为它是前者由于安全问题并且能够读取输出,但我想绝对肯定.

java memory processbuilder

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

在WAMP上安装GeoIP

几天前我发现了这个PHP扩展.谁能解释我如何在WAMP上安装GeoIP?

installation wamp wampserver geoip

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

如何在Perl中检查单词是否以数字开头

下面是我的代码,用于检查单词是否以数字开头:

    #!/usr/bin/perl

    my $domain_name = @ARGV;

    my $first_letter = substr(($domain_name),0,1);
    print STDERR "first letter is $first_letter \n";

    if($first_letter eq  '0' || $first_letter == 1
       || $first_letter == 2 || $first_letter == 3 || $first_letter == 4
       || $first_letter == 5 || $first_letter == 6 || $first_letter == 7
       || $first_letter == 8 || $first_letter == 9) {

            print STDERR "$first_letter start with digit\n";

    } else {

            print STDERR "$domain_name does not starts with a digit\n";
    }
Run Code Online (Sandbox Code Playgroud)

但是当我打印时$first_letter,它总是在显示1 …

perl

0
推荐指数
2
解决办法
7061
查看次数