小编ryy*_*yst的帖子

Java - 多线程代码在更多内核上运行速度更快

我只是在4核机器上运行一些多线程代码,希望它比单核机器更快.这是一个想法:我有一个固定数量的线程(在我的情况下,每个核心一个线程).每个线程都执行Runnable以下形式:

private static int[] data; // data shared across all threads


public void run() {

    int i = 0;

    while (i++ < 5000) {

        // do some work
        for (int j = 0; j < 10000 / numberOfThreads) {
            // each thread performs calculations and reads from and
            // writes to a different part of the data array
        }

        // wait for the other threads
        barrier.await();
    }
}
Run Code Online (Sandbox Code Playgroud)

在四核计算机上,此代码使用4个线程比使用1个线程执行更差.即使有了CyclicBarrier开销,我也会认为代码应该至少快2倍.为什么它运行得慢?

编辑:这是我尝试过的忙等待实现.不幸的是,它使程序运行更核心(在一个单独的问题也正在讨论较慢这里): …

java multithreading

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

Java - 构造函数是静态的吗?

我刚写了一个像这样的构造函数:

public ArchivesManager(String identifier) {
    String[] components = String.split("\nNEW");
}
Run Code Online (Sandbox Code Playgroud)

但是有一条错误信息:non-static method split(java.lang.String) cannot be referenced from a static context.我知道错误信息,但为什么构造函数是静态的?!

java static constructor

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

Java正则表达式 - 只有一个空格的表达式

我希望将所有表达式与一个空格匹配.目前,我正在使用[^\\s]*\\s[^\\s]*.但这似乎不是一个非常好的方式.

java regex

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

C - 动态数组

我不太明白指针如何与C数组一起使用.这是我得到的一些代码:

int arrayOne[] = {1, 2, 3};
int arrayTwo[] = {4, 5, 6, 7};

int **arrayThree = (int **)malloc(2 * sizeof(int));
arrayThree[0] = arrayOne;
arrayThree[1] = arrayTwo;

for (int i = 0; i < 2; i++) {
    int *array = arrayThree[i];
    int length = sizeof(array) / sizeof(int);
    for (int j = 0; j < length; j++)
        printf("arrayThree[%d][%d] = %d\n", i, j, array[j]);
}
Run Code Online (Sandbox Code Playgroud)

我原以为这会输出以下内容:

arrayThree[0][0] = 1
arrayThree[0][1] = 2
arrayThree[0][2] = 3
arrayThree[1][0] = 4
arrayThree[1][1] = 5
arrayThree[1][2] …
Run Code Online (Sandbox Code Playgroud)

c dynamic-arrays

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

CALayer - backgroundColor翻了吗?

我正在创建一个CALayer这样的:

UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"MyPattern.png"]];
backgroundLayer = [[CALayer alloc] init];
[backgroundLayer setBackgroundColor:[color CGColor]];
[[self layer] addSublayer:backgroundLayer];
Run Code Online (Sandbox Code Playgroud)

出于某种原因,模式是颠倒的.我已经尝试过设置geometryFlipped和应用子图层转换,但它不起作用.

iphone core-animation objective-c calayer

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

UIResponder - didBecomeFirstResponder?

有没有办法在例如UITextView成为第一响应者时收到通知?我目前正在进行子类化和覆盖,- (BOOL)becomeFirstResponder但问题是,当视图成为第一响应者而不是之后,会发生这种情况.

我也试过KVC,但它不起作用:

[self addObserver:self
       forKeyPath:@"isFirstResponder"
          options:NSKeyValueObservingOptionNew
          context:NULL];
Run Code Online (Sandbox Code Playgroud)

我应该使用什么技术?

iphone uiresponder

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

这是一个C变量吗?

我被要求解释这个C变量是什么:int *x();.对我来说,这看起来不像变量,而是函数原型.我对吗?

编辑:有人发布了一个答案,提到cdecl.org作为一个工具来验证一个人的假设有疑问,但现在答案已被删除,所以我再次提到它.

c

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

Objective-C - 使用GDB打印方法参数

我正在努力用GDB调试我的Objective-C程序.我有一个- (NSString *)reverse:(NSString *)someString我想调试的功能.

这是我设置断点的方法:

(gdb) break -[MyClass reverse:]
Run Code Online (Sandbox Code Playgroud)

现在,当代码到达断点时,如何打印地址甚至更好的值self和方法参数?我已经做了一些谷歌搜索,并找到了一些建议,po $rdx但我找不到任何建议.

我怎么解决这个问题?

gdb objective-c

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

这个装配线做什么?

我有这个装配线:

cmpb   $0x0,(%rax,%rcx,1)
Run Code Online (Sandbox Code Playgroud)

现在,根据那里的引用,cmpb立即比较两个字节.所以它将0与0进行比较(%rax,%rcx,1).有人可以解释第二个论点是什么/做什么?

谢谢!

assembly x86-64

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

两个div并排:第一个固定宽度,第二个拉伸到适合

我想创建一个我有两个div并排的布局.第一个div应该与其内容要求一样宽.第二个div应伸展以填补剩余空间.标记看起来像这样:

<div id="d1">
    <div id="d2">fixed width</div>
    <div id="d3">stretching</div>
</div>
Run Code Online (Sandbox Code Playgroud)

问题是不是都是divs为一样宽的内容和伸不填充整个水平空间,或者(例如使用时display: table上d1和display: table-cell上d2和d3)都divš伸展.

如何固定宽度d2和拉伸d3以填充剩余空间?请注意,宽度d2不知道,所以我不能以像素为单位指定它.

html css

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