小编Mou*_*inX的帖子

GSON 2.0+ 从两个不同的序列化字段名称之一反序列化字段

在我的 Java 类中,我有一个声明如下的字段:

protected double a = 0.0;
Run Code Online (Sandbox Code Playgroud)

在反序列化以重构此类的 JSON 中,该字段可以以两个不同名称之一出现(遗留问题)。例如,JSON 字段可能如下所示:

"a": 9.57,
Run Code Online (Sandbox Code Playgroud)

或者像这样:

"d": 9.57,
Run Code Online (Sandbox Code Playgroud)

(幸运的是,旧名称“d”不会导致与任何其他变量的命名冲突。)

我的问题是我需要用 JSON 键“a”或“d”填充类字段“a”——以存在的为准。(我相信它们总是相互排斥的,但我实际上并没有毫无疑问地证明这一点。)

我在 Netbeans 中使用 Gson 2.2.1 和 Java 7。

java serialization gson deserialization json-deserialization

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

如何根据每个队列的内容值看两个Java队列是否相等?

我想实现一个equals的覆盖,它根据它们比较两个Java Queue对象,每个对象的内容都相等(按值).

我可能会破解一些代码,但肯定有人已经优雅地解决了这个问题.谷歌搜索没有出现任何结果,所以我接下来来到这里.

我很感激任何建议.我也需要对ArrayList和HashMap集合做同样的事情.

BTW,对于equals(),我使用它作为我的向导:http://www.javapractices.com/topic/TopicAction.do?Id = 17

它提供了一些提示,但显然我需要更多的帮助来收集.集合中包含的类型根据该链接的建议覆盖equals().

java collections equals

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

如何使用 setStyleSheet 更改 QLabel 小部件的字体大小(以百分比为单位)?

我正在寻找一种简单的方法来为我的 PySide2 应用程序中的标题标签制作更大的文本大小。这是一个学习项目。我更喜欢使用样式表来更改标签字体。我也不希望使用硬编码点大小,因为这可能无法在不同的显示尺寸上正常工作。

这另一个问题看起来很有趣,但目前对我来说太复杂了。有没有一种简单的方法可以制作更大的字体,例如font-size: 200%?我确实尝试过,但到目前为止它还不起作用。

当我使用%时,字体大小根本没有改变。当我设置特定的大小时,font-size: 20px它会产生预期的结果。

我没有发现 Qt 文档有多大帮助(可能是因为我还不知道如何解决它们。)这是我的代码:

from PySide2 import QtWidgets
from PySide2.QtCore import Qt

class MyWidget(QtWidgets.QWidget):

    def __init__(self, parent=None):

        super(MyWidget, self).__init__(parent)
        mainLayout = QtWidgets.QVBoxLayout(self)
        self.label = QtWidgets.QLabel("My Title")
        self.label.setAlignment(Qt.AlignCenter | Qt.AlignHCenter)
        self.label.setStyleSheet("font-weight: bold; font-size: 200%")
        mainLayout.addWidget(self.label)
Run Code Online (Sandbox Code Playgroud)

css python pyqt5 pyside2

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

有时不绘制Java GUI按钮(随机).Compiz问题

*编辑2:我刚刚发现这是一个compiz + java GUI问题.它显然发生在这两个元素相交的地方.我正在运行最新的Ubuntu 11.04(经典桌面,而非Unity)以及所有更新.Sun java和OpenJDK都会出现问题.它与使用Window-Rules Compiz插件有关 - 我需要使用它.

如下面的评论中所述,我之前已经验证我的控件已添加到正确的线程中.现在我发现禁用Compiz Window-Rules插件可以解决我的问题.由于我需要使用该插件,我正在寻找解决方案.*

原帖:我正在研究Java swing应用程序.它是使用NetBeans 6.9构建的.它使用GridBagLayout管理器.外观和感觉目前是Nimbus(但这似乎对我将要描述的问题没有任何影响).大多数用户在Linux上运行该应用程序.少数人使用Windows.大多数时候应用程序运行正常.但是在随机时间,没有一些GUI按钮就会打开一个视图.例如,可能缺少"保存"和"取消"按钮.其他GUI元素通常会出现(虽然我听说视图完全是空的,没有GUI元素 - 只是一个空的灰色窗口).

如果用户在上角用"X"关闭该视图并简单地重新打开它,它将被正确绘制.丢失的按钮问题发生的时间不到1%.关闭/重新打开序列几乎100%的时间修复它.(如果我没记错的话,可能需要第二次关闭/重新打开一次.)

通常,如果缺少某些按钮,则仍会正确绘制其他元素.这不会影响整个视图(表单).它似乎影响最下面的面板,但我不确定这是否实际上是一个可重复的模式.重现这一点非常困难.我每天都使用这个软件,而且我每个月看不到这个.一些用户更频繁地看到它,但它仍然很少见.

没有错误消息.我不知道下一步该尝试什么.这种行为持续存在于不同的计算机,不同的Linux发行版(虽然都基于Debian),以及许多不同的代码更改,包括更改布局管理器.(我们之前使用过NetBeans GUI设计器.)任何想法?

编辑:2011.07.05这是代码的一般情况:

public void show_some_view() {
    setTitle(...)
    setLayout(new GridBagLayout());
    JPanel butnPanel = new JPanel();
    butnPanel.setLayout(new GridBagLayout());
    try {
        //add stuff to panels (butnPanel, etc.)
    } catch (Exception e) {
        Logger.log(e);
    }
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    int[] wh = ApplicationContext.get().getDisplayWidthxHeight();
    setSize(wh[0], wh[1]);
    setFocusable(true);
    setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

java user-interface swing

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

通过bash脚本修复Kate文本编辑器行限制

Kate文本编辑器的默认行长度为1024个字符.我需要改变这个.我需要通过bash脚本更改它(它用于自动安装).

这是一些背景知识:https://stackoverflow.com/a/13496876/463994

我希望更改的bash脚本将默认行长度设置为0个字符.

bash shell editor kate

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

将参数传递给Python subprocess.Popen

我正在将此 bash 脚本转换为 Python。我现在有一个可以运行的 Python 版本。然而,为了让它工作,我必须修改传递给 subprocess.Popen() 的命令,将其变成一个长字符串。 我不想使用一长串命令。我希望将其分解为适当的单独参数。在这个具体的例子中我该如何做到这一点?

我的具体问题是如何更改这一行:

process = subprocess.Popen(cmd, shell=True, ...
Run Code Online (Sandbox Code Playgroud)

变成这样的形式:

process = subprocess.Popen([prog, inf, arate, outf], shell=False, ...
Run Code Online (Sandbox Code Playgroud)

这是我的完整代码,以便上面的片段有意义:

#!/usr/bin/env python

import sys
import subprocess
import os.path
import argparse #requires Python 2.7 or above

parser = argparse.ArgumentParser(description='Converts (.M4V) videos into (.MP3) audio files using ffmpeg.')
parser.add_argument('-d','--directory', help='Source directory name',required=True)
parser.add_argument('-o','--output',help='Output directory name', required=False)
parser.add_argument('-a','--arate',help='ffmpeg\'s arate option', default="64K", required=False)
parser.add_argument('-s','--source',help='Input type; e.g., file ext (default .m4v)', default=".m4v", required=False)
parser.add_argument('-e','--ext',help='Output …
Run Code Online (Sandbox Code Playgroud)

python linux bash shell popen

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

在Shopify Liquid中将字符串解析为令牌

我在Shopify元字段中具有以下字符串(“ my_str”):

a:3,b:1,c:2,d:2,e:2,f:2
Run Code Online (Sandbox Code Playgroud)

键是产品型号ID(缩写为a,b,c ...),数字是数量。

我需要将其解析为key:value对,以便可以执行以下操作:

{% assign my_str = collection.metafields.local.my_metafield %}
{% assign my_map = my_str | parse ???? %}

{% for product in collection.products %}
    {% assign temp_qty = 1 %}
    {% for pair in my_map %}
        {% if pair[0] == product.variants.first.id %}
          {% assign temp_qty = pair[1] %}
        {% endif %}
    {% endfor %}
    <input type="hidden"  id="abc-{{ forloop.index0 }}" value=temp_qty />
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我绝对不知道如何解析my_str。我也乐意接受有关最佳总体方法的建议。

parsing tokenize liquid shopify

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

现在在 indent2tree 禁止对标量进行实验性推送

我意识到有人问过类似的问题。但是,在这种情况下,我希望使用这个开源 perl 脚本:

https://github.com/bAndie91/tools/blob/master/usr/bin/indent2tree

这一行正在产生错误 Experimental push on scalar is now forbidden at /usr/local/bin/indent2tree line 43, near "};"

push $ForkPoint->{subtree}, {data=>$data, parent=>$ForkPoint, subtree=>[]};
Run Code Online (Sandbox Code Playgroud)

我对 Perl 不是很熟悉。我确实检查了有关此主题的几个问题,并尝试以几种不同的方式解决该问题,但没有成功。

例如:

push @ForkPoint->{subtree}, {data=>$data, parent=>$ForkPoint, subtree=>[]};
Run Code Online (Sandbox Code Playgroud)

那仍然会产生错误。

由于我在这里的目标只是使用该工具,也许熟悉 Perl 的人可以分享解决方案。我在项目问题页面打开了一个错误

perl

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

使用pathlib.Path,如何有效地检查一个目录是否位于另一个目录下的任何位置?

我更喜欢主要与 s 一起工作pathlib.Path。然而,在下面的示例代码中,我最终比较了这样的字符串:

if str(dir2).startswith(str(dir1))
Run Code Online (Sandbox Code Playgroud)

dir1dir2Paths。有没有更好的方法来找出 是否dir2是任意嵌套的子目录dir1

from pathlib import Path

mydirs = [Path('/a/a/a/a'), Path('/a/a/'), Path('/a/b/'), Path('/a/a/b'), Path('/b/a/a/'), Path('/a/a/a/a/a/a/'), Path('/a/b/a/a/a/')]

mydirs.sort(key = lambda x: len(x.parts))
roots = mydirs.copy()

for dir1 in mydirs:
    for dir2 in mydirs:
        if dir1 == dir2 or len(dir2.parts) <= len(dir1.parts):
            continue
        if str(dir2).startswith(str(dir1)):
            roots.remove(dir2)
            print(f'pruned subdir {str(dir2)} of {str(dir1)}')

print(roots)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

警告:Ansible 评估裸变量。我该如何正确实施?

我的 Ansible 条件语句没有正确评估。

- name: A
  shell:
    cmd: /usr/local/bin/is_A_OK #returns bash true or false (not strings)
  register: is_A_OK

- name: B
  shell:
    cmd: /usr/local/bin/is_B_OK 
  register: is_B_OK

- name: reboot if both are OK
  reboot:
  when:
    - is_A_OK
    - is_B_OK
Run Code Online (Sandbox Code Playgroud)

[弃用警告]:将 'is_A_ok' 评估为一个裸变量,此行为将消失,将来您可能需要将 |bool 添加到表达式中。另请参阅 CONDITIONAL_BARE_VARS 配置切换。此功能将在 2.12 版中删除。

但是,逻辑工作正常,并且在两个变量都为真时执行重新启动。但我不能保持原样,因为此功能将在 2.12 版中删除。

仅供参考,bash 脚本的结论如下:

if [[ "$my_var" == true ]]; then
    true
else
    false
fi
Run Code Online (Sandbox Code Playgroud)

我正在运行 Arch Linux,所以 bash 是新的。

警告加上 ansible文档让我认为这是正确的:

- name: reboot if OK
  reboot:
  when: …
Run Code Online (Sandbox Code Playgroud)

conditional-statements ansible

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