小编Rob*_*uch的帖子

解析XML的最佳实践

我的应用程序将解析通过HTTP接收的XML.据我所知,解析XML有三种主要方式:

  • SAX
  • DOM
  • XmlPullParser

据说SAX是其中速度最快的,而DOM不适合大型XML文档.但就解析而言,什么是大型XML文档?对于以下内容,推荐的解析器是什么?

  • XML文档大小在1-5 kB之间
  • 轻松遍历文档,即我不仅需要知道当前元素,还需要知道父元素.

xml parsing android

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

使用字符串函数时,应用程序在64位DllImport上崩溃

我有一个在.NET 4.0下运行的Windows窗体应用程序.此应用程序导入DLL,该DLL可用于:

  • 32位
  • 64位

这是我的代码片段:

[DllImport("my64Bit.dll"), EntryPoint="GetLastErrorText"]
private static extern string GetLastErrorText();

// Do some stuff...

string message = GetLastErrorText();
Run Code Online (Sandbox Code Playgroud)

调用此函数(为x64编译)时,应用程序崩溃.我甚至无法在Visual Studio 2012中看到任何调试消息.与32位DLL(为x86编译)相同的代码工作正常.原型是:

LPCSTR APIENTRY GetLastErrorText()

不幸的是,我没有关于DLL的任何进一步信息,因为它是第三方产品.

c# string dllimport

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

从 Groovy 中的字符串中删除第一行

使用 Groovy,我需要读取一个 XML 文件并删除包含 XML 声明的第一行。

来源内容

<?xml version="1.0" encoding="UTF-8"?>
<myxmldoc>
  content
</myxmldoc>
Run Code Online (Sandbox Code Playgroud)

目标内容

<myxmldoc>
  content
</myxmldoc>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的代码... 将文件中除第一行以外的所有行读取到列表中。然后,通过将每一行添加到下一行来构建一个新字符串。

def soapBodyList = new File(inputFilename).readLines()
soapBodyList = soapBodyList[1..soapBodyList.size-1]

def soapBody = ""
soapBodyList.each {
    soapBody += it
}

return soapBody
Run Code Online (Sandbox Code Playgroud)

但是我觉得必须有一种更简单的方法来删除第一行 abnd 将结果作为字符串。

xml string groovy

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

颜色未应用于语义UI中的菜单

我正在使用语义UI创建菜单.此菜单应具有彩色背景和文本项.出于测试目的,我添加了这个green类:

<body>
  <div class="ui stackable green text menu">
    <div class="header item">Site Title</div>
    <div class="ui right text menu">
      <a class="item">Item 1</a>
      <a class="item">Item 2</a>
      <a class="item">Item 3</a>
    </div>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

显示菜单及其项目,但没有应用绿色.

这是codepen.io上的一个演示.

semantic-ui

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

Vaadin Grid 中的可点击图标在每次调用 setItems() 后多次执行代码

在我的 Vaadin 应用程序中,我显示了Grid带有自定义类的项目Transaction。该网格的行为应如下所示:

  1. 它应包含一个“操作”列,该列又应包含一个或多个图标。为了简单起见,我们只考虑一个图标。
  2. 这些图标中的每一个都应该是可点击的。
  3. 单击图标,将使用Transaction当前行的项目执行一些代码。在这里,一个简单的Notification.show().

我设法用以下代码来实现这一点:

private final Grid<Transaction> transactionGrid = new Grid<>(Transaction.class, false);
transactionGrid.setItems(transactionService.getItems());

transactionGrid.addColumn(getActionsRenderer()).setHeader("Actions").setAutoWidth(true);

private ComponentRenderer<Icon, Transaction> getActionsRenderer() {
    final Icon replyIcon = new Icon(VaadinIcon.ENVELOPE);
    return new ComponentRenderer<>(transaction -> {
        replyIcon.addClickListener(event -> Notification.show(transaction.getOrderNumber()));
        return replyIcon;
    });
}
Run Code Online (Sandbox Code Playgroud)

单击该图标会显示一条带有交易的通知orderNumber。问题如下:

该应用程序还提供了一个“重新加载”按钮,它的作用与此类似:

refreshIcon.addClickListener(event -> {
    final List<Transaction> transactions = transactionService.getItems();
    transactionGrid.setItems(transactions);
});
Run Code Online (Sandbox Code Playgroud)

单击刷新图标后,单击该行replyIcon会显示相同数据的三个通知。下次刷新后,它会显示五个,然后是七个,依此类推。

因此,看起来好像每次刷新都会添加两个任何“组件”,它们都注册相同的点击侦听器。调试时,我可以看到有多个ClickEventeventBus但我不知道它们来自哪里。

在此输入图像描述

vaadin vaadin-grid vaadin-flow vaadin14

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

RegEx为16个字符,后跟冒号

匹配字符串的正确正则表达式是什么?

  • 新行开头的任意16个字符.
  • 其次是冒号 :

我想出了这个,但不知道它是否足够: .{16}:

regex

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

我需要多少视图,视图模型和模型?

我正在尝试使用MVVM模式开发一个WPF应用程序 - 实际上它更像是一个工具.我已经阅读了几篇文章,观看了视频,发布了一些问题,但不知怎的,我觉得我对这个MVVM事物的理解或理解不是"正确的".

我将从UI开始.在第一阶段,UI将显示以下内容:

  • 组合框
    • 用户名的文本框
    • 密码的文本框(让我们忽略PasswordBox开始)
  • 组合框
    • 用于此用户可用的项目名称列表的组合框(将从Web服务检索)
    • 用于登录所选项目的"登录"按钮
    • 用于从当前项目注销的"注销"按钮

所以我会确定需要处理的以下数据:

  • 用户名的字符串
  • 密码的字符串
  • 一个ObservableCollection<Project>项目列表
  • 一个Project代表活动项目对象
  • boolean,如果登录到一个项目或不

我担心,我不知道我应该如何在MVVM之后构建或设计这个.我应该在这里使用多少视图,视图模型和模型?当然,应用程序会增长,但不会那么多.让我们坚持以上.

c# wpf mvvm

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

如何正确使用try-catch语句

自从我上一次编程练习以来已经有一段时间了,所以这是一个相当基本的问题.但是我找不到任何具体的答案.

假设我已经定义了一个可能导致异常的方法.该方法看起来像这样(在相当伪代码中):

public int Calculate(int x, int y) 
{
  try 
  {
    doSomeCalc();
  }
  catch (SomeException ex) 
  {
    doExceptionHandling();
  }

  return result;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果应用程序的另一部分想要使用此方法,它应该使用另一个try-catch块吗?

public MyMainApp() {
  try 
  {
    Calculate(1, 2);
  } 
  catch (SomeException ex) 
  {
    doExceptionHandling();
  }
}
Run Code Online (Sandbox Code Playgroud)

所以这里的问题是我应该在哪里使用try-catch,它在哪里是多余的?

c# exception-handling exception try-catch

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

将 JMX Exporter 与 Wildfly 15 一起使用时出现 NoClassDefFoundError

我们将 Wildfly 15 与 JMX Exporter 结合使用。当启动 WildFly 服务器时,我遇到以下异常,并且我已经没有想法了。该包存在于modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.4.0.Final.jar.

=========================================================================
  JBoss Bootstrap Environment
  JBOSS_HOME: /opt/jboss/wildfly-15.0.1.Final
  JAVA: /opt/java/jdk1.8.0_201/bin/java
  JAVA_OPTS:  -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/p:/opt/jboss/wildfly-15.0.1.Final/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.5.Final.jar -Xbootclasspath/p:/opt/jboss/wildfly-15.0.1.Final/modules/system/layers/base/org/jboss/log4j/logmanager/main/log4j-jboss-logmanager-1.1.6.Final.jar -Xbootclasspath/p:/opt/jboss/wildfly-15.0.1.Final/modules/system/layers/base/org/slf4j/impl/main/slf4j-jboss-logmanager-1.0.3.GA.jar -javaagent:/opt/jboss/wildfly-15.0.1.Final/prometheus/jmx-prometheus.jar=9404:/opt/jboss/wildfly-15.0.1.Final/prometheus/config.yaml -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager -server -Xmx3G -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n 
=========================================================================
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Listening for transport dt_socket at address: 8787
java.lang.NoClassDefFoundError: org/wildfly/common/net/HostName
    at org.jboss.logmanager.ExtLogRecord.<init>(ExtLogRecord.java:87)
    at org.jboss.logmanager.Logger.log(Logger.java:796)
    at org.jboss.logging.JBossLogManagerLogger.doLogf(JBossLogManagerLogger.java:53)
    at org.jboss.logging.Logger.logf(Logger.java:2398)
    at org.jboss.msc.service.ServiceLogger_$logger.greeting(ServiceLogger_$logger.java:40)
    at org.jboss.msc.service.ServiceContainerImpl.<clinit>(ServiceContainerImpl.java:91)
    at org.jboss.msc.service.ServiceContainer$Factory.create(ServiceContainer.java:250)
    at org.jboss.as.server.BootstrapImpl$ShutdownHook.register(BootstrapImpl.java:231)
    at org.jboss.as.server.BootstrapImpl$ShutdownHook.access$100(BootstrapImpl.java:221)
    at org.jboss.as.server.BootstrapImpl.<init>(BootstrapImpl.java:72)
    at org.jboss.as.server.Bootstrap$Factory.newInstance(Bootstrap.java:278)
    at org.jboss.as.server.Main.main(Main.java:106)
    at org.jboss.modules.Module.run(Module.java:352)
    at org.jboss.modules.Module.run(Module.java:320)
    at org.jboss.modules.Main.main(Main.java:593)
Run Code Online (Sandbox Code Playgroud)

jboss wildfly jmx-exporter wildfly-15

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

在 Java Map 中为每个键分配多个值

Map在 Java 中创建标准很容易。

Map<Integer, String> map = new HashMap<>();
map.put(1, "Name 1");
map.put(2, "Name 2");
Run Code Online (Sandbox Code Playgroud)

现在我需要“扩展”这种标准映射方法,以便每个键可以表示多个值,例如:

Map<Integer, String, String, String> map = new HashMap<>();
map.put(1, "Name 1", "Address 1", "ZIP Code 1");
map.put(2, "Name 2", "Address 2", "ZIP Code 2");
Run Code Online (Sandbox Code Playgroud)

是否有任何“标准”实现或库提供这样的功能?我知道例如 Apache Commons MultiValuedMap( https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/MultiValuedMap.html ) 但这似乎不适合上述用途案件。

java java-8

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