为了编写即时消息程序,我试图组成一个简单的服务器类,它将在自己的线程中运行.
Map<Integer, SelectionKey> keys具有ID 的连接的选择键关联,以便信使线程可以通过ID访问连接send_message(int id, String msg)我目前的方法主要基于这个例子:一个带有Java nio的简单非阻塞Echo服务器.
我还使用了使用选择器来管理非阻塞套接字和已编辑的页面,以了解非阻塞套接字和选择器.
package snserver;
/* imports */
//class SNServer (Simple non-blocking Server)
public class SNServer extends Thread {
private int port;
private Selector selector;
private ConcurrentMap<Integer, SelectionKey> keys; // ID -> associated key
private ConcurrentMap<SocketChannel,List<byte[]>> dataMap_out;
ConcurrentLinkedQueue<String> in_msg; //incoming messages to be fetched by messenger thread
public SNServer(int port) {
this.port = port;
dataMap_out = …Run Code Online (Sandbox Code Playgroud) 我正在编写自定义ViewGroup并遇到以下问题:
的ViewGroup,应能通过仅XML指定属性可用.然而,我想要做一些内部的初始化代码后ViewGroup已创建及其所有子View期从XML已被添加(即,当布局充气增加了所有孩子View的A S ViewGroup在XML中指定).
我发现与此相关的所有建议都是使用的getViewTreeObserver().addOnGlobalLayoutListener(...).然而,这至少在每个孩子View被添加之后以及在恢复应用程序等之后被调用.因此它甚至不能检测所有孩子View被添加的时刻.
在将所有子项View添加到a 后,是否有一个方法被调用ViewGroup?
我写了这段代码:
addNums key num = add [] key num
where add res a:as b:bs
| a == [] = res
| otherwise = add res:(a+b) as bs
Run Code Online (Sandbox Code Playgroud)
在第3行,口译员说:
解析错误(可能是错误的缩进)
我找不到任何错误,既没有代码也没有缩进.我为每个标签放了四个空格.
注解:
即使这不编译:
addNums key num = add [] key num
where add res a:as b:bs
| a == [] = res
| otherwise = add res:(a+b) as bs
Run Code Online (Sandbox Code Playgroud)
第2行:
模式中的解析错误:添加
在NetBeans 7.2,选择包或一个项目,打开对话框后Edit->Replace或者Edit->Replace in projects,我无法找到一个按钮或选项,以取代所有出现.我找到的唯一方法是打开一个文件,选择Edit->Replace然后"全部替换",但这显然只适用于当前文件.
如何在文件,包,项目......的自定义选择中查找和替换?
"搜索结果"窗口如下所示Edit->Replace in projects...->Find:
没有按钮或菜单来进行更换.
我的C++书给出了以下关于以下示例cout:
cout << "literals" << "to be" << "printed" ;
Run Code Online (Sandbox Code Playgroud)
然后,它继续说:
语句以输出流的名称cout开头
这似乎意味着还有其他流.除了coutC++ 之外还有其他输出流吗?这些是什么?
有没有一种方法,使同时按键成键绑定,例如用于键w,e,f,当0.05秒彼此的内按下,触发命令?
更具体:
如果w,e,f被0.05秒彼此的内压,则在按下的最后一个,XMonad应该触发所述命令.XMonad也应截获三个键,以便它们不会被多余地发送到聚焦窗口.
否则(如果在0.05秒的时间内没有按下其中一个)XMonad应像往常一样将密钥发送到聚焦窗口.
我在这个目标是用w,e,f"逃"到一个VIM般的"正常模式",一个XMonad.Actions.Submap(子图).
使用失败的方法更新,以防任何人都可以看到修复它的方法:
我尝试使用子图实现这一点,所以,例如,如果你按下了,w你最终会进入chord_mode_w,如果你e从那里按下,你最终会进入chord_mode_we,如果你f从那里按下,你最终会最终进入normal_mode,例如.实现非常混乱:我在主要的键绑定中包括:
("w", spawn "xdotool key <chord_mode_w_keybinding> ; sleep 0.05 ; xdotool key <abort_keybinding>")
(chord_mode_w_keybinding, chord_mode_w)
Run Code Online (Sandbox Code Playgroud)
用于检测w(其余部分类似),以及(不完整的)子图,例如:
chord_mode_w = submap . mkKeymap c $
[
("e", chord_mode_we )
, ("f", chord_mode_wf )
, (abort_keybinding, pasteString "w")
-- in order for the …Run Code Online (Sandbox Code Playgroud) netbeans ×2
android ×1
c++ ×1
callback ×1
cout ×1
haskell ×1
indentation ×1
java ×1
java-7 ×1
javafx ×1
key-bindings ×1
nonblocking ×1
parse-error ×1
replace ×1
ubuntu ×1
xml ×1
xmonad ×1