小编Tyl*_*rry的帖子

转换 Java 对象的最佳实践/模式

假设我有一个应用程序负责获取供应商消息并将其转换为规范消息。例如:

public class MessageA extends VendorMessage { ... }
public class MessageB extends VendorMessage { ... }

public class MessageX extends CanonicalMessage { ... }
public class MessageY extends CanonicalMessage { ... }
Run Code Online (Sandbox Code Playgroud)

其中 MessageA 映射到 MessageX,MessageB 映射到 MessageY。

我的方法是,每种消息类型都有一个转换器类来处理此转换。在这个例子中,我将有以下变压器:

public class MessageXTransfomer()
{
    public MessageX transform(MessageA message) {...}
}

public class MessageYTransfomer()
{
    public MessageY transform(MessageB message) {...}
}
Run Code Online (Sandbox Code Playgroud)

我的问题实际上是我最终调用变压器的方式。

由于我的流程需要一些 VendorMessage 作为输入,因此我需要询问类型,以便知道将其定向到哪个特定的转换器。例如,一种方法可能如下所示:

public class TransfomerService
{
    MessageXTransformer messageXTransformer = new MessageXTransformer();
    MessageYTransformer messageYTransformer = new MessageYTransformer();

    public CanonicalMessage …
Run Code Online (Sandbox Code Playgroud)

java

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

"收集被修改......"问题

我有一个函数来检查对象列表,看看它们是否被点击并相应地触发OnClick事件.我相信功能正常,但是我遇到了问题:

当我挂钩其中一个OnClick事件并删除并将该元素插入列表中的不同位置(此程序的典型功能)时,我收到"Collection was modified ..."错误.

我相信我明白发生了什么:

  • 该函数循环访问每个对象,在必要时触发OnClick事件
  • 触发一个事件,对象根据钩子函数更改列表中的位置
  • 在迭代它时修改集合会抛出异常

我的问题是,如何让我允许函数遍历所有对象,在适当的时间触发必要的事件,并仍然让用户可以选择操作对象在列表中的位置?

c# collections exception

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

@Transactional方法在try-catch包围时不回滚

我有一个迭代事件列表并将它们保存到表中的进程.如果某个特定事件抛出异常,我需要能够使用数据库回滚该事件的事务,而不会影响其他事件的流程.

为此,我有以下设置:

public class EventService
{
    public void processEvents()
    {
        List<Event> events = getEvents();

        foreach(Event event : events)
        {
            try
            {
                processEvent(event);
            }
            catch(Exception e)
            {
                // log the exception and continue processing additional events
            }
        }
    }

    @Transactional
    public void processEvent(Event event)
    {
        // Process event and insert rows into database
        // Some event will throw a runtime exception
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果抛出异常,则不会回滚事件.

有没有办法实现我在这里要做的事情?

java spring transactional

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

基本 Helm 依赖关系澄清

为了简化本地开发/测试,我有一个部署所有子图表的伞图。这些应用程序使用资源(例如 MongoDB、Kafka 等),我想确保如果您将伞图安装到集群,它也会安装这些资源。

为此,我有以下几点:

apiVersion: v2
name: my-cool-project
type: application
version: 0.1.0
appVersion: 0.1.0
dependencies:
  - name: my-cool-app-1
    repository: "file://my-cool-app-1"
  - name: my-cool-app-2
    repository: "file://my-cool-app-2"
  - name: bitnami/kafka
    version: 2.5.0
    repository: "https://charts.bitnami.com/bitnami"
Run Code Online (Sandbox Code Playgroud)

不幸的是,安装此图表会引发以下错误:

Error: found in Chart.yaml, but missing in charts/ directory: bitnami/kafka
Run Code Online (Sandbox Code Playgroud)

这对于 Helm 的概念来说似乎非常重要,以至于它不起作用的事实意味着我显然错过了一些基本的东西。即使官方文档也很清楚这是正确的方法。

大多数文档/指南都会指导您直接helm install连接到集群。虽然这可能会解决我在集群上需要 Kafka 或 MongoDB 的直接问题,但我的愿望是对该资源的需求进行代码化,以便我可以实现“单个图表将所有内容安装到空集群中并且它可以正常工作”状态。

我缺少什么?

kubernetes kubernetes-helm

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

两个字符串的独特价值

这似乎是一个相当简单的问题,但解决方案是让我不知所措:

如果我有以下两个字符串:

string str1 = "Ping";
string str2 = "Pong";
Run Code Online (Sandbox Code Playgroud)

我需要一个算法来为两个字符串创建一个唯一值,无论它们处于什么顺序.例如:

UniqueValue(str1,str2)和UniqueValue(str2,str1)应返回完全相同的值.

编辑:UniqueValue返回一个字符串.我知道它不会"真正"独特,但类似哈希的值将起作用.

谢谢,泰勒

c#

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