我有一个java地图:java.util.Map<SomeObject, java.util.Collection<OtherObject>>
我想将它转换为scala地图:Map[SomeObject, Set[OtherObject]]
我使用了mapAsScalaMap,但结果并不是我想要的,结果是:Map[SomeObject, java.util.Collection[OtherObject]].如何修复它以将集合转换为集合?
注意:实际上我的原始问题是将谷歌转换ArrayListMultimap<SomeObject, OtherObject>为a,MultiMap[SomeObject, OtherObject]但由于这是不可能的,我已经解决了问题.如果您有原始问题的解决方案,我也会接受它作为答案.
java scala type-conversion scala-java-interop scala-collections
我一直在尝试使用钩子的东西,我不明白为什么钩子必须与消息队列一起使用
hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hook);
Run Code Online (Sandbox Code Playgroud)
为什么这样的东西不起作用?
hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, 0);
cin >> aKey;
UnhookWindowsHookEx(hook);
Run Code Online (Sandbox Code Playgroud)
使用增强螺纹和屏障也不起作用.为什么不能以另一种方式完成钩子和钩子之间的等待?
编辑:
我在创建这个示例时犯了一个错误,我创建了一个WH_KEYBOARD_LL挂钩,而不是WH_KEYBOARD,(我认为它不会产生很大的影响)
循环永远不会只在GetMessage函数上等待.
循环仅在我发布退出消息时执行,PostThreadMessage(id, WM_QUIT, 2323, NULL);所以我不明白它在等待时做了什么,是否有一些内部处理?
有关:
有没有人知道使用OpenSSL加密C++流的良好实现?扩展或包装std :: istream和std :: ostream的东西?
我知道这可以通过boost(过滤流)完成,但我不想仅为此包含boost.任何非强化建议?
复制:实现boost :: thread包装器接口时"调用纯虚方法"
我试图使用boost线程创建一个更面向对象的线程版本.
所以我创建了一个Thread类:
class Thread {
public:
Thread() {}
virtual ~Thread() { thisThread->join(); }
void start() { thisThread = new boost::thread(&Thread::run, this); }
virtual void run() {};
private:
boost::thread *thisThread;
};
Run Code Online (Sandbox Code Playgroud)
这个类在start()中创建线程,如下所示:
thisThread = new boost::thread(&Thread::run, this);
问题是当我创建一个覆盖run()方法的类时,run()Thread 的方法是由线程调用而不是新run()方法
例如,我有一个扩展Thread的类:
class CmdWorker: public Thread {
public:
CmdWorker() : Thread() {}
virtual ~CmdWorker() {}
void run() { /* deosn't get called by the thread */ }
};
Run Code Online (Sandbox Code Playgroud)
当我做
Thread *thread = new …Run Code Online (Sandbox Code Playgroud) 我有一个使用表单的项目,它编译并运行得很好,但是当使用生成的ant编译时它不会运行
我的ant文件有java2任务,我把所需的jar添加到我的lib文件夹中
<property name="javac2.home" value="lib/idea"/>
<path id="javac2.classpath">
<pathelement location="${javac2.home}/javac2.jar"/>
<pathelement location="${javac2.home}/jdom.jar"/>
<pathelement location="${javac2.home}/asm.jar"/>
<pathelement location="${javac2.home}/asm-commons.jar"/>
<pathelement location="${javac2.home}/jgoodies-forms.jar"/>
</path>
<taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
<taskdef name="instrumentIdeaExtensions" classname="com.intellij.ant.InstrumentIdeaExtensions" classpathref="javac2.classpath"/>
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的程序时,我收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/intellij/uiDesigner/core/Spacer
Caused by: java.lang.ClassNotFoundException: com.intellij.uiDesigner.core.Spacer
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Run Code Online (Sandbox Code Playgroud)
我注意到从Idea编译的版本在输出文件夹中有一些类(缺少什么),而ant生成的版本没有这些类.
编辑:我从下面实现了解决方案,这意味着我修改了我的ant构建以将forms_rt.jar的内容提取到我的输出文件夹
<unjar src="${javac2.home}/forms_rt.jar" dest="${webserver.output.dir}">
<patternset>
<include name="**/*.class"/>
</patternset>
</unjar>
Run Code Online (Sandbox Code Playgroud) 我最近几天一直在尝试扩展默认编辑器(java,xml,所有这些)的功能,
我想要做的是在每个编辑器的侧面添加一个带有文本的大标尺.
示例:默认编辑器页面如下所示:
|-----------|
|source |
|code |
| |
|-----------|
Run Code Online (Sandbox Code Playgroud)
但我希望它像这样
|------|----|
|source| |
|code |line|
| |text|
|------|----|
Run Code Online (Sandbox Code Playgroud)
我也不能使用视图,因为我的标尺中的文本对应于某一行,并且必须与源代码一起滚动.
我试图通过实现IEditorActionDelegate来实现这一点,因为我不想要新的编辑器,但是要添加功能,但我找不到任何解决方案.
想要提一下,为了实现我的解决方案,我扩展了AbstractContributedRulerColumn
public class MyRuler extends AbstractContributedRulerColumn {
....
}
Run Code Online (Sandbox Code Playgroud) 我有一个方法setValue(string& val),我需要调用一些默认值.
我想这样称呼它:
setValue("");
setValue("random value");
Run Code Online (Sandbox Code Playgroud)
但我用g ++得到以下错误: no matching function to call setValue(const char [10])
关于如何在创建临时字符串对象旁边做到这一点的任何想法?
它有效,但我觉得不方便:
string temp("random value");
setValue(temp);
Run Code Online (Sandbox Code Playgroud) HY,
我试图在oracle中使用REGEXP_LIKE设置约束,但我一直在设置ORA-00920:无效的关系运算符
错误,这是我的代码(错误是在ck_files_name约束的末尾
CREATE TABLE files(
idFile INT PRIMARY KEY,
idParent INT REFERENCES files,
name VARCHAR2(256),
type CHAR(1),
CONSTRAINT ck_files_name CHECK REGEXP_LIKE(name, '[^\.]'), -- error ORA-00920: invalid relational operator
CONSTRAINT ck_files_type CHECK type IN ('d', 'f'),
CONSTRAINT ck_files_idFile_idParent CHECK (idFile <> idParent),
CONSTRAINT uq_files_idFile_name UNIQUE (idParent, name)
);
Run Code Online (Sandbox Code Playgroud)
我做错了什么,还是与我的oracle版本(oracle 10g xe)有关?
HY,
我已经开始使用C++中的线程(boost threads),我在以下情况下找到了自己:
boost::mutex::scoped_lock lk(monitor);
while (buffered == 0) {
buffer_not_empty.wait(lk);
}
Run Code Online (Sandbox Code Playgroud)
如果int变量buffered应该是volatile ,我就会徘徊.我会说,为了防止像这样的优化,它应该在编译时:
boost::mutex::scoped_lock lk(monitor);
while (true) {
buffer_not_empty.wait(lk);
}
Run Code Online (Sandbox Code Playgroud)
但由于这是来自boost文档的一个例子,我可能会遗漏一些东西......
是一个锁/互斥/条件足以阻止这种优化?喜欢在java?