小编Mic*_*ker的帖子

如何从seq创建不可变的地图/集?

我尝试从Seq构造不可变集/映射.我目前正在做以下事情:

val input: Seq[(String, Object)] = //.....
Map[String, Object]() ++ input
Run Code Online (Sandbox Code Playgroud)

和集合

val input: Seq[String] = //.....
Set[String]() ++ input
Run Code Online (Sandbox Code Playgroud)

这似乎有点复杂,有更好的方法吗?

scala immutability

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

是否有针对Java的基于推送/非阻塞的XML解析器?

我正在寻找一种XML解析器,而不是从InputStream或InputSource解析,而是允许将文本块推送到解析器中.例如,我希望得到以下内容:

public class DataReceiver {
    private SAXParser parser = //...
    private DefaultHandler handler = //...

    /**
     * Called each time some data is received.
     */
    public void onDataReceived(byte[] data) {
        parser.push(data, handler);
    }
}
Run Code Online (Sandbox Code Playgroud)

原因是我想要一些能够与NIO网络库一起使用的东西,而不是必须恢复到支持阻塞InputStream所需的每个连接模型的线程.

java xml nonblocking

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

如何使用Scala和JUnit 4设置预期的异常

我想使用Scala为JUnit 4测试设置一个预期的异常.我目前正在做类似以下的事情:

@Test(expected=classOf[NullPointerException])
def someTest() = {
    // Some test code
}
Run Code Online (Sandbox Code Playgroud)

但是我得到以下编译器错误:

error: wrong number of arguments for constructor Test: ()org.junit.Test
Run Code Online (Sandbox Code Playgroud)

annotations scala junit4

15
推荐指数
3
解决办法
7545
查看次数

C#泛型如何影响具有基元的集合

据我了解,C#/ .Net泛型支持某种程度的具体化.所以,如果我有以下代码:

List<int> list = new List<int>();
list.Add(1);
Run Code Online (Sandbox Code Playgroud)

值1是自动装箱还是'list'对象会有效地处理原始int?

.net c# generics reification

10
推荐指数
3
解决办法
1734
查看次数

如何在MySQL中解释带参数的查询

我有一个问题

SELECT foo FROM bar WHERE some_column = ?
Run Code Online (Sandbox Code Playgroud)

我可以从MySQL获得解释计划而不填写参数值吗?

mysql sql-execution-plan

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

使用JavaScript控制Flash Player

我希望能够在与闪存组件相同的页面中使用JavaScript控制Flash电影流,包括:

  • 播放和暂停流
  • 改变流

我已经可以加载播放器并设置flash args,但是我不知道如何在流启动后与播放器进行交互.这是否可以在不修改当前用于播放电影的SWF的情况下实现?

麦克风.

javascript flash

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

调用Thread.isInterrupted()的性能成本是多少?

从java源代码看,它看起来像是本机代码.成本大致相当于易失性读取还是需要获取某种类型的锁定?

java performance multithreading

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

在Java中,我可以整合两个使用JspWriter和其他PrintWriter的类似函数吗?

我有以下类,您将看到它有一个相当冗余的formatNameAndAddress方法:

package hu.flux.helper;
import java.io.PrintWriter;

import javax.servlet.jsp.JspWriter;

// A holder for formatting data 
public class NameAndAddress 
{
 public String firstName;
 public String middleName;
 public String lastName;
 public String address1;
 public String address2;
 public String city;
 public String state;
 public String zip;

 // Print out the name and address.
 public void formatNameAndAddress(JspWriter out)
  throws java.io.IOException
  {
   out.println("<PRE>");
    out.print(firstName);

    // Print the middle name only if it contains data.
    if ((middleName != null) && (middleName.length() > 0)) 
     {out.print(" " + middleName);}

    out.println(" …
Run Code Online (Sandbox Code Playgroud)

java polymorphism jsp casting printwriter

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

如何获取 Ant 中可用处理器的数量

我想从我的 Ant 构建脚本中获取可用处理器的数量(即从 Runtime.getRuntime().availableProcessors() 返回的值。是否存在包含此值的现有属性,或者我是否必须编写自定义 ant任务?

java ant

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

AVX将64位整数转换为64位浮点数

我想使用AVX将4个打包的64位整数转换为4个打包的64位浮点数.我尝试过类似的东西:

int_64t *ls = (int64_t *) _mm_malloc(256, 32);
ls[0] = a;
//...
ls[3] = d;

__mm256i packed = _mm256_load_si256((__m256i const *)ls);
Run Code Online (Sandbox Code Playgroud)

哪个将显示在调试器中:

(gdb) print packed
$4 = {1234, 5678, 9012, 3456}
Run Code Online (Sandbox Code Playgroud)

好的,到目前为止,但我能找到的唯一的演员/转换操作是_mm256i_castsi256_pd,这不能得到我想要的东西:

__m256d pd = _mm256_castsi256_pd(packed);

(gdb) print pd
$5 = {6.0967700696809824e-321, 2.8053047370865979e-320, 4.4525196003213139e-320, 1.7074908720273481e-320}
Run Code Online (Sandbox Code Playgroud)

我真正想看到的是:

(gdb) print pd
$5 = {1234.0, 5678.0, 9012.0, 3456.0}
Run Code Online (Sandbox Code Playgroud)

c c++ casting avx

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

内部__lzcnt64使用不同的编译选项返回不同的值

我有以下代码:

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

long long lzcnt(long long l)
{
    return __lzcnt64(l);
}

int main(int argc, char** argv)
{
    printf("%lld\n", lzcnt(atoll(argv[1])));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用不同的编译器和选项运行(显示程序集):

$ clang -Wall src/test.c -D__LZCNT__ && ./a.out 2047
53

0000000000400560 <lzcnt>:
400560:   55                      push   %rbp
400561:   48 89 e5                mov    %rsp,%rbp
400564:   48 89 7d f0             mov    %rdi,-0x10(%rbp)
400568:   48 8b 7d f0             mov    -0x10(%rbp),%rdi
40056c:   48 89 7d f8             mov    %rdi,-0x8(%rbp)
400570:   48 8b 7d f8             mov    -0x8(%rbp),%rdi
400574:   48 …
Run Code Online (Sandbox Code Playgroud)

c gcc clang built-in

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

在Mac OS X Lion上获取C中的堆栈指针

尝试在C中获取当前堆栈指针时(使用内联ASM),我遇到了一些奇怪的行为.代码如下:

#include <stdio.h>
class os {
  public:
    static void* current_stack_pointer();
};

void* os::current_stack_pointer() {
  register void *esp __asm__ ("rsp");
  return esp;
}

int main() {
  printf("%p\n", os::current_stack_pointer());
}
Run Code Online (Sandbox Code Playgroud)

如果我使用标准gcc选项编译代码:

$ g++ test.cc -o test
Run Code Online (Sandbox Code Playgroud)

它生成以下程序集:

__ZN2os21current_stack_pointerEv:
0000000000000000        pushq   %rbp
0000000000000001        movq    %rsp,%rbp
0000000000000004        movq    %rdi,0xf8(%rbp)
0000000000000008        movq    0xe0(%rbp),%rax
000000000000000c        movq    %rax,%rsp
000000000000000f        movq    %rsp,%rax
0000000000000012        movq    %rax,0xe8(%rbp)
0000000000000016        movq    0xe8(%rbp),%rax
000000000000001a        movq    %rax,0xf0(%rbp)
000000000000001e        movq    0xf0(%rbp),%rax
0000000000000022        popq    %rbp
Run Code Online (Sandbox Code Playgroud)

如果我运行生成的二进制文件,它将使用SIGILL(非法指令)崩溃.但是,如果我在编译中添加一些优化:

$ g++ -O1 test.cc -o test
Run Code Online (Sandbox Code Playgroud)

生成的程序集更简单:

0000000000000000        pushq   %rbp …
Run Code Online (Sandbox Code Playgroud)

c macos assembly x86-64

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

为什么auto不适用于一些lambdas

鉴于功能:

void foo(std::function<void(int, std::uint32_t, unsigned int)>& f)
{
    f(1, 2, 4);
}
Run Code Online (Sandbox Code Playgroud)

为什么编译:

std::function<void(int a, std::uint32_t b, unsigned int c)> f =
    [] (int a, std::uint32_t b, unsigned int c) -> void
{
    std::cout << a << b << c << '\n';
    return;
};
Run Code Online (Sandbox Code Playgroud)

这无法编译:

auto f =
    [] (int a, std::uint32_t b, unsigned int c) -> void
{
    std::cout << a << b << c << '\n';
    return;
};
Run Code Online (Sandbox Code Playgroud)

有错误:

5: error: no matching function for call to 'foo' …
Run Code Online (Sandbox Code Playgroud)

c++ lambda auto c++11

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