标签: composite

如何为一个事件设置多个侦听器?

我想为一个事件设置多个侦听器,并且发现使用复合侦听器是关键.

谁能举个例子?

android composite

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

检查Postgres复合字段是否为空/空

使用postgres复合类型,您基本上可以构建一个字段,其结构被定义为另一个表.我有一个名为"person"类型的"收件人"的复合字段.在我的特定方案中,此收件人字段通常为空.检查复合字段是否为空的正确方法是什么.我试过了:

select * from bla where recipient is not null
select * from bla where recipient is null
select * from bla where recipient = null
select * from bla where recipient != null
Run Code Online (Sandbox Code Playgroud)

在所有这些情况下,它都不会返回任何内容.那么如何正确检查复合值是否为空?

UPDATE

经过一些阅读后,看起来这是我的问题:

人们可能认为!(x IS NULL) = x IS NOT NULL在所有情况下都是如此.但是有一个例外 - 复合类型.当复合值的NULL一个字段是另一个字段时NOT NULL,则两个运算符的结果都为假.IS NULL是真的,只有当所有的领域都是NULL.IS NOT NULL是真的,只有当所有的领域都是NOT NULL.对于介于两者之间的任何情况,两个运算符都返回false.

我确实有一些空字段,有些字段不是.我希望如果复合字段中的任何项不为null,则该字段将被视为非NULL,而不是当所有项都不为空时.除了检查每个字段之外还有什么方法吗?

sql postgresql null composite

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

如何在 github 复合操作步骤中动态设置环境变量?

我确实需要它作为一个环境变量,这是专门针对复合操作的。

在复合操作中,我尝试了许多不同的设置环境变量的方法。我发现做到这一点的唯一方法是在env步骤本身内部使用:

runs:
  using: "composite"
  steps:
    - name: "A step"
      env:
        BRANCH_REF: "${{ github.ref }}"
      run: echo "The branch is $BRANCH_REF"
      shell: bash
Run Code Online (Sandbox Code Playgroud)

不幸的是,我需要动态设置这个变量。在常规操作中,我会做类似的事情:

    env:
      FOO: "${{ secrets.FOO }}"
    #...
    - run: echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
      if: ${{ github.event.inputs.foo != '' }}
Run Code Online (Sandbox Code Playgroud)

因为我做不到,所以我尝试了很多其他方法,但都不起作用。这是我最近的尝试,但也不起作用:

    - name: "A step"
      run: |
        if ${{ github.event.inputs.foo != '' }}
        then
          echo "Set from manual input: ${{ github.event.inputs.foo }}"
          echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
        else
          echo "Use FOO …
Run Code Online (Sandbox Code Playgroud)

github composite environment-variables github-actions

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

MySQL:如何索引"OR"子句

我正在执行以下查询

SELECT COUNT(*)
FROM table
WHERE field1='value' AND (field2 >= 1000 OR field3 >= 2000)
Run Code Online (Sandbox Code Playgroud)

field1上有一个索引,field2和field3上有另一个索引.

我看到MySQL总是选择field1索引然后使用其他两个字段进行连接,这非常糟糕,因为它需要加入146.000行.

关于如何改进这个的建议?谢谢

(在提出试验解决方案后编辑)

基于提出的解决方案,我在使用它时在Mysql上看到过这个.

SELECT COUNT(*) FROM (SELECT * FROM table WHERE columnA = value1
UNION SELECT * FROM table WHERE columnB = value2) AS unionTable;
Run Code Online (Sandbox Code Playgroud)

比执行要慢很多:

SELECT COUNT(*)
FROM table
WHERE (columnA = value1 AND columnB = value2)
      OR (columnA = value1 AND columnC = value3)
Run Code Online (Sandbox Code Playgroud)

有两个合成索引:

index1 (columnA,columnB)
index2 (columnA,columnC)
Run Code Online (Sandbox Code Playgroud)

有趣的是,要求Mysql"解释"它在两种情况下总是使用index1并且不使用index2的查询.

如果我将索引更改为:

index1 (columnB,columnA)
index2 (columnC,columnA)
Run Code Online (Sandbox Code Playgroud)

并查询:

SELECT COUNT(*)
FROM table
WHERE …
Run Code Online (Sandbox Code Playgroud)

mysql indexing composite where

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

复合主键

我正在设计一个数据库,用于存储源自许多不同来源的数据.我存储的实例由原始源分配唯一ID.我存储的每个实例都应包含有关其来源的信息,以及该源关联的ID.

例如,请考虑下表说明问题:

----------------------------------------------------------------
| source_id | id_on_source | data                              |
----------------------------------------------------------------
| 1         | 17600        | ...                               |
| 1         | 17601        | ...                               |
| 2         | 1            | ...                               |
| 3         | 1            | ...                               |
----------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

请注意,虽然id_on_source每个源都是唯一的,但可以id_on_source为不同的源找到相同的源.

我对关系数据库有一个很好的理解,但远非专家甚至是有经验的用户.我在设计中遇到的问题是我应该用作主键的问题.数据似乎决定使用复合主键(source_id, id_on_source).经过一番谷歌搜索后,我发现了一些关于复合主键优缺点的激烈争论,让我有点困惑.

该表与其他表具有一对多的关系,因此将在其他表的外键中引用.

我不依赖于特定的RDBMS,我不知道这是否事项的参数的缘故,但让我们说,我更喜欢的工作SQLiteMySQL.

在这种情况下使用复合外键有哪些优缺点?你更喜欢哪个?

sql database composite primary-key

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

如何为Microsoft平滑流制作复合清单

我是Microsoft Smooth Streaming的新手,对复合清单的制作有疑问.
遵循这里的指导.

我能够制作一个在Silverlight播放器中播放的单个剪辑元素的复合清单.
但是,当我尝试从其他视频添加更多剪辑时,播放器刚停止工作并且没有提供任何错误信息.

而我这一切都是手工完成的.当我尝试使用Expression Encoder 4 Pro创建这样的视频时,我得到了一个普通.ismc文件而不是.csm文件.

我的问题是:

制作包含来自不同视频的剪辑的复合清单的最佳方法是什么?编码这些视频时是否有任何规范要遵循?或复合清单的支持是否对视频格式有任何限制?

最后一个是:有一种简单的方法来调试它(比如验证我的.csm文件)吗?

编辑我自己的解决方案:

看起来没有人关心这个,但是因为我终于解决了这个问题,所以我在这里写下这个来节省别人的时间.

为了调试复合清单,我在Visual Studio中构建了一个简单的Silverlight应用程序,并添加了一个简单的函数来报告错误:

MainPage.xaml.cs中:

public MainPage()
{
    InitializeComponent();
    this.SmoothPlayer.SmoothStreamingErrorOccurred += new EventHandler<SmoothStreamingErrorEventArgs>(SmoothPlayer_SmoothStreamingErrorOccurred);
}

public void SmoothPlayer_SmoothStreamingErrorOccurred(object sender,
                         SmoothStreamingErrorEventArgs e)
{
    MessageBox.Show("Error: " + e.ErrorCode + "; " + e.ErrorMessage);
}
Run Code Online (Sandbox Code Playgroud)

我发现这个网页很有用.

你需要使用:

<c t="", d""> 
Run Code Online (Sandbox Code Playgroud)

代替

<c d="">
Run Code Online (Sandbox Code Playgroud)

你必须正确计算ClipBeginClipEnd价值.

下面是在python一个示例代码转换.ismc.csm(假设下面的ISM是清单XML内容的xml.etree.ElementTree对象表示):

def ism2csm(url, ism):
    if ism is None: return …
Run Code Online (Sandbox Code Playgroud)

iis silverlight manifest composite smooth-streaming

19
推荐指数
0
解决办法
1634
查看次数

18
推荐指数
2
解决办法
8371
查看次数

复合模式/实体系统和传统OOP

我正在开发一个用Java编写的小游戏(但这个问题与语言无关).因为我想探索各种设计模式,所以我对复合模式 /实体系统(我最初在这里这里读到)作为典型的深层次继承的替代方案.

现在,在写了几千行代码后,我有点困惑.我认为理解模式,我喜欢使用它.我认为它非常酷,而且星巴克也是如此,但它觉得它提供的好处有点短暂而且(最让我烦恼的是)在很大程度上取决于你的粒度.

这是上面第二篇文章的图片: 在此输入图像描述

我喜欢对象(游戏实体或任何你想要称之为的东西)的方式有一组最小的组件,推断的想法是你可以编写类似于下面的代码:

BaseEntity Alien = new BaseEntity();
BaseEntity Player = new BaseEntity();

Alien.addComponent(new Position(), new Movement(), new Render(), new Script(), new Target());
Player.addComponent(new Position(), new Movement(), new Render(), new Script(), new Physics());
Run Code Online (Sandbox Code Playgroud)

..这将是非常好的...但在现实中,代码最终看起来像

BaseEntity Alien = new BaseEntity();
BaseEntity Player = new BaseEntity();

Alien.addComponent(new Position(), new AlienAIMovement(), new RenderAlien(), new ScriptAlien(), new Target());
Player.addComponent(new Position(), new KeyboardInputMovement(), new RenderPlayer(), new ScriptPlayer(), new PhysicsPlayer());
Run Code Online (Sandbox Code Playgroud)

似乎我最终得到了一些由较少组件组成的非常专业的组件.通常,我必须制作一些具有其他组件依赖性的组件.毕竟,如果你没有位置,你怎么渲染?不仅如此,你最终渲染玩家与外星人和手榴弹的方式可能根本不同.除非你制作一个非常大的组件(在这种情况下......为什么你还在使用复合模式?),你不能拥有一个指示所有三个组件的组件.

给出另一个真实的例子.我的游戏中有角色可以装备各种装备.当装备一件装备时,会改变一些统计数据以及视觉上显示的内容.这是我的代码现在的样子:

billy.addControllers(new Movement(), new Position(), new CharacterAnimationRender(), new …
Run Code Online (Sandbox Code Playgroud)

java language-agnostic design-patterns composite

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

Imagick:用面具构图

我尝试重新创建一个脚本,使用ImageMagick命令"转换"来组成图像.但我想在PHP中使用Imagick(版本6.6.2-10)做同样的事情.

命令如下:

convert A1.mpc A3.mpc A4.mpc -channel rgba -alpha on -virtual-pixel background -background none -define compose:args=312x26.6776 -compose displace -composite out.mpc
Run Code Online (Sandbox Code Playgroud)

我发现参数代表以下内容:

convert  {background} {overlay} [{mask}] [-compose {method}] -composite {result}
Run Code Online (Sandbox Code Playgroud)

PHP Imagick给了我一个compose方法,但是没有mask参数:http://www.php.net/manual/en/imagick.compositeimage.php

我发现了另一个问题并尝试了这个(但不会产生相同的图像):

// load images
$a1 = new Imagick('a1.png');
$a3 = new Imagick('a3.png');
$a4 = new Imagick('a4.png');

// mask the overlay
$a1->compositeImage($a4, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);

// compose overlay to background
$a1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
$a1->setImageBackgroundColor(new ImagickPixel('none'));
$a1->setOption('compose:args', '312x26.6776');
$a1->compositeImage($a3, Imagick::COMPOSITE_DISPLACE, 0, 0);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:这是使用蒙版构图的正确方法吗?或者这里有什么问题?

为了帮助可视化我想要做的事情,这里有一些输入图像:

输入图像a1(背景):

A1

输入图像a3(叠加):

A3

输入图像a4(掩码):

A4

我想要的结果是: …

php transformation mask composite imagick

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

Java AWT自定义CompositeContext和消除锯齿:在客户区外部绘制时出现RasterFormatException

我正在尝试为AWT Graphics2D实现类似SWT GC的xor-mode绘图.使用内置的XORComposite不是一个选项,因为它不像SWT那样实现xor-mode绘图.

SWT xor-mode绘图通过二进制异或结合源和目标颜色.AWT XORComposite(可用于g2d.setXORMode(Color))使用常量xor颜色,通过二进制异或与源颜色组合,或者目标颜色不影响结果颜色.

因此,我唯一想到的选择是编写自己的CompositeCompositeContext实现,它们适当地组合了源和目标.

一些阅读后,我想出了这个简单的实现:(是的,我知道与getPixel(...),setPixel(...)开销,我希望它优化之前正常工作的.)

private static class XorComposite implements Composite {

    public static XorComposite INSTANCE = new XorComposite();

    private XorContext context = new XorContext();

    @Override
    public CompositeContext createContext(ColorModel srcColorModel,
            ColorModel dstColorModel, RenderingHints hints) {
        return context;
    }

}

private static class XorContext implements CompositeContext {

    public XorContext() {
    }

    @Override
    public void compose(Raster src, Raster dstIn, WritableRaster dstOut) {
        int w = Math.min(src.getWidth(), dstIn.getWidth());
        int …
Run Code Online (Sandbox Code Playgroud)

java awt composite xor antialiasing

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