我尝试从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)
这似乎有点复杂,有更好的方法吗?
我正在寻找一种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所需的每个连接模型的线程.
我想使用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) 据我了解,C#/ .Net泛型支持某种程度的具体化.所以,如果我有以下代码:
List<int> list = new List<int>();
list.Add(1);
Run Code Online (Sandbox Code Playgroud)
值1是自动装箱还是'list'对象会有效地处理原始int?
我有一个问题
SELECT foo FROM bar WHERE some_column = ?
Run Code Online (Sandbox Code Playgroud)
我可以从MySQL获得解释计划而不填写参数值吗?
我希望能够在与闪存组件相同的页面中使用JavaScript控制Flash电影流,包括:
我已经可以加载播放器并设置flash args,但是我不知道如何在流启动后与播放器进行交互.这是否可以在不修改当前用于播放电影的SWF的情况下实现?
麦克风.
从java源代码看,它看起来像是本机代码.成本大致相当于易失性读取还是需要获取某种类型的锁定?
我有以下类,您将看到它有一个相当冗余的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) 我想从我的 Ant 构建脚本中获取可用处理器的数量(即从 Runtime.getRuntime().availableProcessors() 返回的值。是否存在包含此值的现有属性,或者我是否必须编写自定义 ant任务?
我想使用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) 我有以下代码:
#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中获取当前堆栈指针时(使用内联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) 鉴于功能:
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) java ×4
c ×3
c++ ×2
casting ×2
scala ×2
.net ×1
annotations ×1
ant ×1
assembly ×1
auto ×1
avx ×1
built-in ×1
c# ×1
c++11 ×1
clang ×1
flash ×1
gcc ×1
generics ×1
immutability ×1
javascript ×1
jsp ×1
junit4 ×1
lambda ×1
macos ×1
mysql ×1
nonblocking ×1
performance ×1
polymorphism ×1
printwriter ×1
reification ×1
x86-64 ×1
xml ×1