小编Ha1*_*wed的帖子

将Java Map转换为Scala Map

我有一个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

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

为什么必须将SetWindowsHookEx与Windows消息队列一起使用

我一直在尝试使用钩子的东西,我不明白为什么钩子必须与消息队列一起使用

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);所以我不明白它在等待时做了什么,是否有一些内部处理?

有关:

C++ SetWindowsHookEx WH_KEYBOARD_LL正确设置

如何在Win32控制台窗口上设置CBT挂钩?

c++ hook message-queue

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

OpenSSL加密流

有没有人知道使用OpenSSL加密C++流的良好实现?扩展或包装std :: istreamstd :: ostream的东西

我知道这可以通过boost(过滤流)完成,但我不想仅为此包含boost.任何非强化建议?

c++ openssl iostream

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

boost thread破坏了多态性

复制:实现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)

c++ boost boost-thread

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

用于Intellij-IDEA GUI表单的Ant构建

我有一个使用表单的项目,它编译并运行得很好,但是当使用生成的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)

intellij-idea

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

Eclipse插件开发:如何向编辑器添加功能

我最近几天一直在尝试扩展默认编辑器(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)

plugins eclipse-pde eclipse-plugin

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

如何将char []转换为字符串&

我有一个方法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)

c++ string std

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

oracle检查regexp_like

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)有关?

sql oracle-xe oracle10g

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

boost条件需要volatile变量

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?

c++ boost-thread

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