小编Gim*_*411的帖子

如何为阻塞呼叫设置超时?

我有一个与多个客户端一起工作的多线程聊天服务器(每个客户端都在一个新线程中处理)。

如果客户端断开连接,服务器上的相关线程将挂在 inputstream.readLine() 上,这是一个阻塞调用。

如何设置某种超时,以便在 2000 毫秒后关闭套接字并释放线程而没有响应?

class Handler(socket: Socket) extends Runnable {
  def run() : Unit = {
    val inputstream = new BufferedReader(new InputStreamReader(socket.getInputStream()))
    val outputstream = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))
    var break = false
    while(break != true){
      val input = inputstream.readLine() // blocking call
// how do i time out after 2000ms?
      input match {
        case "update" =>
          outputstream.write("message")
          outputstream.newLine()
          outputstream.flush()
        case _ => // any other input, break and close socket
          break = true
      }
    }
    socket.close()
  } …
Run Code Online (Sandbox Code Playgroud)

sockets scala serversocket blocking

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

如何从 Swift 中的 jsonobject 获取 key:value ?

我正在做一个 POST 请求,我有这个:

...
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
Run Code Online (Sandbox Code Playgroud)

这给出了这个输出:

{
    code = 400;
}
Run Code Online (Sandbox Code Playgroud)

如何获取代码的值(这是一个字符串,在本例中为“400”)?

我试过这个:

let code = json["code"]
Run Code Online (Sandbox Code Playgroud)

但它说类型“Any”没有下标成员

swift

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

什么使文件UTF-8?

我已经读过在文本文件的开头添加UTF-8字节顺序标记(3个字符)使其成为UTF-8文件,但我还读到unicode建议不要使用UTF-8的BOM.

我用PHP生成文件,我要求文件是UTF-8.我已经将UTF-8 BOM添加到文件的开头,但我收到了有关解析文件的公司文件开头的垃圾字符的反馈,这使得我要求将文件设为UTF- 8.

如果我在记事本中打开文件它没有显示BOM,如果我去保存,它会显示UTF-8作为默认选项.

在Textpad32中打开文件显示文件开头的3个字符.

那么什么使文件UTF-8?

php utf-8

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

scala.io.StdIn.readLine() 是阻塞调用吗?

scala.io.StdIn.readLine() 是阻塞调用吗?

从文档中,没有提到它是一个阻塞调用。

我想做这样的事情:

while(true){
    val input = scala.io.StdIn.readLine()
    input match{
        case "quit" =>
            ...
        case "stats" =>
            ...
        case _ =>
            ...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它不阻塞,它会不断循环,将输入设置为空,并每次触发case _吗?

如果它被阻止,为什么它没有显示在文档中?或者我在哪里可以看到说它是阻塞的定义?

一般来说,我怎么知道一个方法是否阻塞?

scala blocking

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

格式化为负数货币,或从Double中删除" - "符号

我有一个Double,可以是正面或负面的,我想用以下方式显示:

对于正值:

+ $ 1.10

对于负值:

- $ 0.50

空白为0值

我试过这样的:

Double surcharge = ...
if(surcharge < 0){
    cell.lblSurcharge.text = "-$" + String(format:"%.02f", surcharge)
}else if(surcharge > 0){
    cell.lblSurcharge.text = "+$" + String(format:"%.02f", surcharge)
}else{
    cell.lblSurcharge.text = nil
}
Run Code Online (Sandbox Code Playgroud)

但对于负值,它会像这样显示:

- $ - 0.50

如何正确格式化,或从Double中删除" - "?

currency number-formatting swift

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