小编use*_*804的帖子

我的服务器应该同时使用TCP和UDP吗?

我正在编写客户端/服务器应用程序,但实际上找不到符合我需要的指南.在我开始之前,我自己做这件事会让我遇到许多设计缺陷.例如,服务器应该每秒多次更新每个客户端的状态.我假设我不能单独更新每个客户端,但UDP广播应该解决这个问题.但是我仍然需要一个TCP通道来与每个客户端可靠地通信,例如:聊天消息,用户输入等.

研究这个主题似乎服务器可以同时使用这两种协议 - 但只能是可能的(不是敏感的).没有人建议采用这种方法,事实上我从这篇文章中得知,使用这两种方法相当糟糕.


现在我对如何处理服务器中的数据非常困惑.除非我完全误解了丢包的内容,否则我想保证导致'server-request-packets'的用户输入不会丢失.关于保证使用UDP传递的所有关于SO的答案都说使用TCP.更令人沮丧的是,我能想象的每个服务器/客户端程序至少需要保证传递的一些消息(例如'disconnect'消息?).

我应该使用UDP,TCP,还是我只是在想这个问题?

java udp tcp client-server broadcast

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

Google Chrome 正在向我的输入字段添加 2 像素高度

从互联网上的一些 CSS 重置模式中汲取灵感,我想我应该使用一个规则body {line-height: 1}。目前,这导致了我的<input><button>元素计算高度不同的问题,尽管字体值相同。示例JSFiddle。我在 Chrome 中遇到了这个问题。

有人能告诉我 Chrome 中这些额外的 2 个像素是从哪里来的吗?可能还有关于使用的任何建议{line-height: 1}

body {
  line-height: 1;
  margin: 0;
}

button, input {
  font: inherit;
  padding: 5px;
  width: 50vw;
}

input {
  box-sizing: border-box;
}

#row {
  display: flex;
}
Run Code Online (Sandbox Code Playgroud)
<div id="row">
  <button>
    18px Chrome, 16px FF
  </button>
  <input type="text" value="My font is 18px">
</div>

<div id="column">
  <button>
    My font is 16px
  </button>
  <input type="text" value="18px Chrome, 16px FF">
</div> …
Run Code Online (Sandbox Code Playgroud)

html css firefox google-chrome cross-browser

7
推荐指数
0
解决办法
544
查看次数

Java HashMap使用通配符嵌套泛型

我正在尝试创建一个hashmap值的hashmap,其中包含自定义类的不同子类的hashsets,如下所示:

HashMap<String, Hashmap<String, HashSet<? extends AttackCard>>> superMap
Run Code Online (Sandbox Code Playgroud)

AttackCard有子类,如:Mage,Assassin,Fighter.superMap中的每个HashMap只会包含一个包含单个子类的HashSets AttackCard.

当我尝试放一个

HashMap<String, HashSet<Assassin>>
Run Code Online (Sandbox Code Playgroud)

进入superMap,我得到一个编译器错误: 编辑错误

下面是发生错误的代码:

public class CardPool {

private HashMap<String, HashMap<String, HashSet<? extends AttackCard>>> attackPool =
    new HashMap<>();

private ArrayList<AuxiliaryCard> auxiliaryPool;

public CardPool() {
(line 24)this.attackPool.put("assassins", new AssassinPool().get());
/*  this.attackPool.put("fighters", new Fighter().getPool());
    this.attackPool.put("mages", new Mage().getPool());
    this.attackPool.put("marksmen", new Marksman().getPool());
    this.attackPool.put("supports", new Support().getPool());
    this.attackPool.put("tanks", new Tank().getPool());
*/  
    this.auxiliaryPool = new ArrayList<>(new AuxiliaryCard().getPool()); 
}
Run Code Online (Sandbox Code Playgroud)

这里有一个AssassinPool get方法的片段:

private HashMap<String, HashSet<Assassin>> pool = new HashMap<>();

    public HashMap<String, …
Run Code Online (Sandbox Code Playgroud)

java generics hashmap

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

如何在sqlalchemy中创建子查询

SELECT *
FROM Residents
WHERE apartment_id IN (SELECT ID
                       FROM Apartments
                       WHERE postcode = 2000)
Run Code Online (Sandbox Code Playgroud)

我正在使用sqlalchemy并尝试执行上述查询.我无法使用原始SQL执行它,db.engine.execute(sql)因为它抱怨我的关系不存在...但我使用这种格式成功查询我的数据库:session.Query(Residents).filter_by(???).不过,我无法弄清楚如何用这种格式构建我想要的查询.

python sqlalchemy

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

Java初始化抽象类

有人可以为我解释这行代码吗?

SomeAbstractClass variable = new SomeAbstractClass() { };

这适当地实例化并将抽象实例存储在变量中.怎么了?可能是一个扩展抽象类的匿名类?我可以使用任何关键字查找有关此信息?(如果有任何相关性,抽象类也恰好是通用的)

java abstract-class initialization

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

我什么时候应该使用javax.swing.SwingUtilities.invokeLater()?

我有一个使用a的GUI JProgressBar.GUI具有JBUTTONs以下代码:

public void updateProgressBar(int x) {
    System.out.println(javax.swing.SwingUtilities.isEventDispatchThread());
    healthBar.setValue(x);
}
Run Code Online (Sandbox Code Playgroud)

但我也做了一个循环,定期调用相同的方法.

public class Loop implements Runnable {
    public void run() {
        while (true) { Thread.sleep(2000); updateProgressBar(0); }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,据我所知,任何改变我的GUI都需要从EDT执行.JProgressBar.setValue(x)更改我的GUI,当从Loop类调用它时,isEventDispatchThread检查失败,这是好的和明白的.然而,我无法理解的是,如果这也意味着我应该使用SwingUtilities.invokeLater()on setValue().我担心的是,因为我不知道setValue()实际上是如何工作的,所以我invokeLater()不必要地使用它,甚至在使用它时破坏了一些东西.

我不知道如何更好地问我的问题:如果我知道改变我的GUI的方法没有从EDT调用,那么我是否也知道我必须使用invokeLater()

java swing jprogressbar event-dispatch-thread

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

内存不一致与线程交错有何不同?

我正在编写一个多线程程序,正在研究是否应该使用volatile我的布尔标志.关于并发性的文档oracle跟踪并没有解释除以下内容memory consistency errors之外的任何内容:

当不同的线程具有应该是相同数据的不一致视图时,会发生内存一致性错误.

假设这些不一致的视图仅在"写入"操作之后发生是有意义的.但是多久之后呢?

例1

Thread A: Retrieve flag.
Thread B: Retrieve flag.
Thread A: Negate retrieved value; result is true.
Thread A: Store result in flag; flag is now true.
Thread B: System.out.print(flag) --> false
Run Code Online (Sandbox Code Playgroud)

由于Thread A并且Thread B同时运行,打印也可能导致true,具体取决于检索的时间flag.对于不一致而言,这是完全合理的.

但是memory consistency errors描述的方式(写入变量不一定反映在其他线程中)听起来这也是如此:

例2

Thread A: Retrieve flag.
Thread A: Change retrieved value; result is true.
Thread A: Store result in flag; flag is now true. …
Run Code Online (Sandbox Code Playgroud)

java memory multithreading volatile

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

Java NoSuchElementException

所以我有一个非常大的java应用程序,我一年前写的,我想再次理解它.我正在查看代码中的一个方法,其中存在明显的获取NoSuchElementException的风险:我在一个用任意字符串构造的扫描器变量上调用.next().声明抛出该方法的唯一方法是定制的Exception子类.危险命令也不是写在catch-block中.代码编译和工作正常,当我以这样的方式使用我的gui它应该抛出NoSuchElementException没有任何反应:O

作为测试,我在代码中编写了一个catch-block,编译它,运行gui并使它再次抛出NoSuchElementException,应用程序成功捕获异常并采取相应的行动.如何在不指定此异常的情况下编译代码可能会被抛出?如果它完全没用,这里是没有catch-block的代码:

public static Expression interpret(final Scanner scanner)
  throws
    InvalidPosition,
    NoSuchSpreadsheet,
    IllegalStartOfExpression,
    InvalidExpression,
    FalseSyntax,
    InvalidRange {

String keyword = null;

try {
  keyword = scanner.next();
} catch (NoSuchElementException e) {
  throw new IllegalStartOfExpression();
}

switch(keyword) {
  case "Get":
    Position pos = PositionInterpreter.interpret(scanner.next());
    Expression expression = Application.instance.get(pos);
    if (expression instanceof Text) {
        System.out.println("Failure");
    } else { System.out.println("Success"); }
    return new Text(expression.toString());
  case "Int":
    return new Int(
      scanner.nextInt());
Run Code Online (Sandbox Code Playgroud)

如您所见,该方法只是假设在检查是否存在至少一个单词后,扫描仪中有多个单词.我怎么逃避编译呢?

java exception-handling exception nosuchelementexception

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

如何从绝对路径创建JavaFX图像?

我有一个实例化的File对象.我知道它包含图片格式.我不知道文件放在系统的哪个位置,除了File我可用的方法getPath(), getAbsolutePath()等.

我的问题是:如何用我Image的图片实例化一个JavaFX 对象File

java javafx file path

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

继承java构造函数

我有一个超类'BuildingMaterial'和大量子类,即Stone,Wood,Clay等.所有子类的行为都相似:1个int字段,以单位形式存储建筑材料的数量.它们可以构造为无参数或带有int.我已经知道BuildingMaterial的所有子类都有这两个构造函数,我如何避免将它们编码到每个类中?这是我不想在每个课程中做的一个例子:

public final class Stone extends BuildingMaterial {

    private int amount;

    //constructors
    public Stone() {
      amount = 0;
    }

    public Stone(int i) {
      amount = i;
    }

    //methods
    public int getAmount() {
      return amount;
    }
}
Run Code Online (Sandbox Code Playgroud)

java inheritance constructor

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

JQuery如何根据子元素的上下文删除元素

在此输入图像描述

我正在尝试编写JQuery以item ui-draggable...根据突出显示的元素的值删除所有与类的分区.例如,检查值是否小于100,如果为true,则删除除法.但是,我不知道该怎么做.所有部门的结构都是一样的.相关数字将始终包含在要删除的部门的第6个子元素中.

所以在伪代码中我想写这个:

$(document).ready(function(){
    for each division of class .item ui-draggable... {
       if (value of relevant number < 100) {
          .remove(division);
       }
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript css jquery

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

如何避免使用泛型返回值进行转换?

对于getFirstFromEnum下面的方法,返回的enum类型始终是作为参数传递的类.考虑到这一点,无论如何我可以改变方法,以避免每次调用它时进行投射?

private <E extends Enum<?>> Enum<?> getFirstFromEnum(Class<E> enumClass) {
    return enumClass.getEnumConstants()[0];
}

EnumA foo = (EnumA) getFirstFromEnum(EnumA.class); //can I change method to avoid casting?
Run Code Online (Sandbox Code Playgroud)

java generics

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