小编Han*_*etz的帖子

跨平台,跨语言的消息传递系统?

我正在开发一组应用程序,这些应用程序一起工作以创建用于处理计量数据的系统.有几个原因我希望它们松散耦合,系统应该可以被第三方扩展,因此应用程序将通过消息传递捆绑在一起.

我正在寻找一种消息传递系统,它提供(至少)C#,Java和Python中的绑定,并支持消息传递模式,如发布 - 订阅,保证传递,选择性消费者(如Peek in .Net Messaging).

据我所知,JMS或.Net Messaging没有任何问题,只是它们仅适用于.Net/Java.

系统应该让我控制在设置通道时使用哪种传输机制(套接字,消息队列等).我希望能够扩展到远程机器并使用本地交通设施加快速度.

如果我找不到合适的东西,我将不得不自己动手.我可能会使用Google的协议缓冲区进行序列化.如果有人对技术方案有其他建议,请开火.

哦,是的 - 我想在每个频道或每个消息的基础上进行可选加密.

ETA:感谢所有快速回复.我现在正在通过文档和宣传工作.有没有人使用过以下技术,结果是什么?

messaging cross-platform ipc

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

如何在Java中使用从抽象基类型派生的Singleton?

我有一些用作单身人士的课程.它们共享一些基本功能,并从库中扩展相同的祖先,而库通常不用作单例.

如果我将公共功能放在从公共祖先继承的基类中,我会得到一个实例化没有意义的类,所以我把它变成了抽象的.此外,因为这些类都被用作单例,所以它们都应该有一个init()和一个getInstance()方法,它们都是静态的.所有的建设者当然都是非公开的.

现在,因为static是抽象方法的非法修饰符,以下方法不起作用,尽管这正是我想要的:

class Base extends LibraryClass {
    protected Base() {
        // ... constructor
    }

    // ... common methods

    // ILLEGAL!
    public static abstract void init();
    public static abstract <T extends Base>T getInstance();
}

class A extends Base {
    private static A _INSTANCE;

    private A() {
        super();
    }

    public static void init() {
        _INSTANCE = new A();
    }

    public static A getInstance() {
        return _INSTANCE;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以省略基类中的非法行并完成它.但是,我如何表达Base的每个孩子都必须拥有这些方法?

java inheritance singleton

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

在托管代码中,如何实现良好的引用局部性?

由于RAM似乎是新磁盘,并且因为该声明也意味着现在认为对内存的访问速度与磁盘访问的方式类似,我确实希望最大化内存中的引用位置以用于高性能应用程序.例如,在排序索引中,我希望相邻值接近(不像说,在哈希表中),我也希望索引指向的数据也接近.

在C中,我可以使用专门的内存管理器来创建数据结构,就像(非常复杂的)Judy数组的开发人员一样.通过直接控制指针,它们甚至可以在指针值本身中编码附加信息.在Python,Java或C#中工作时,我故意将这种类型的解决方案中的一个(或多个)抽象级别委托给JIT编译器并优化运行时,为我做低级别的巧妙技巧.

尽管如此,我猜想,即使在这种高水平的抽象中,也有一些东西可以在语义上被认为是"更接近",因此可能实际上更接近于低水平.例如,我想知道以下(我在括号中的猜测):

  • 我可以期待一个数组成为相邻的内存块(是)吗?
  • 同一个实例中的两个整数是否比同一个类的不同实例中的两个更接近(可能)?
  • 对象是否占据内存中的一个重要区域(否)?
  • 只有两个int字段的对象数组和一个有两个int[]字段的对象之间的区别是什么?(这个例子可能是Java特定的)

我开始在Java环境中对这些问题感到疑惑,但我的想法变得更加普遍,所以我建议不要将其视为Java问题.

c# python java optimization memory-management

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

版本跟踪,使用django自动化数据库架构更改

我目前正在研究Python框架Django,以用于未来基于数据库的Web应用程序,以及目前用PHP编写的一些应用程序的端口.我过去几年中最糟糕的问题之一是跟踪数据库架构的变化并将这些变化部署到生产系统.我不敢要求能够撤消它们,但当然对于测试和调试来说这将是一个很棒的功能.从这里的其他问题(例如这一个这个),我可以看出我并不孤单,这不是一个微不足道的问题.此外,我在那里找到了很多灵感.

现在,由于Django似乎非常强大,它是否有任何工具可以帮助解决上述问题?也许它甚至在他们的文档中我错过了它?

database svn django

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

如何让Windows了解我用Python编写的服务?

在我昨天发布的另一个问题中,我对如何在Windows中作为服务运行Python脚本提出了很好的建议.我想知道的是:Windows如何了解可以在本机工具中管理的服务("管理工具"中的"服务"窗口).I. e.什么是Windows在Linux下的/etc/init.d中放置启动/停止脚本?

python windows cross-platform

10
推荐指数
3
解决办法
7543
查看次数

在Java中,为什么我不能在父类中声明最终成员(没有初始化它)并在子类中设置它的值?我该如何解决?

在Java程序中,我有多个继承自父类的子类(它是抽象的).我想表达的是,每个孩子都应该有一个只设置一次的成员(我打算从构造函数中做到这一点).我的计划是编码s.th. 像这样:

public abstract class Parent {
    protected final String birthmark;
}

public class Child extends Parent {
    public Child(String s) {
        this.birthmark = s;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不能取悦Java神.在父类中,我收到birthmark"可能尚未初始化" 的消息,在子类中我得到" birthmark无法访问最终字段".

那么Java的方式是什么呢?我错过了什么?

java final

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

空抽象类是不好的做法,为什么?

我们的代码库中有几个空的抽象类.我觉得很难看.但除了这个非常愚蠢的理由(丑陋)之外,我应该重构它(例如空的界面)吗?

否则,代码是健壮的并经过充分测试.因此,如果它只是出于"审美"的原因,我将通过并让空的抽象类保持不变.

你怎么看?

编辑:

1)通过"空抽象类",我的意思是:

public abstract class EmptyAbstractClass {}
Run Code Online (Sandbox Code Playgroud)

2)"空虚"的原因:Hibernate.我根本没有掌握这个持久性框架.我只是理解一个接口不能映射到一个表,并且由于这个技术原因,一个类比接口更受欢迎.

java refactoring abstract-class

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

(如何)我可以使用ServerSocket来侦听UDP而不是TCP流量?

在我的应用程序中,有一个ServerSocket用于侦听传入TCP连接的模块.当我切换客户端使用UDP时,我希望无论如何都会收到数据,但我错了.但是,当我查看文档时,我找不到任何配置选项来设置UDP的套接字.我必须使用不同的课程吗?

java sockets

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

如果我在拓扑上对DAG进行排序,我可以减少一半的邻接矩阵吗?

我想我已经理解了如下所述的特定情况,但我缺乏进行证据的理论知识,我找不到任何提及它的来源.如果我的理解是正确的,我可以在我的邻接矩阵上节省一半的空间,如果不是,我可能会有非常奇怪的错误.所以我想确定一下,如果有更坚实背景的人能够回顾我的推理,我会很感激.

假设我在n*n邻接矩阵中表示n个顶点的DAG,使得条目i,j1从顶点i到顶点存在边缘j,0否则.因为图是有针对性的和非循环的,所以,如果i,j = 1,那么j,i = 0.如果我现在对矩阵中的节点进行排序,使得i n处的节点的拓扑级别等于或大于i n-1处的节点,那么在我看来,邻接矩阵的一半将始终仅包含0s ,就像以下示例中的情况一样:

      V 1           V 2     from V    1 2 3 4 5 6 7 8
      / \           / \ 
     /   \         /   \      to V 1  0 0 0 0 0 0 0 0
    /     \       /     \          2  0 0 0 0 0 0 0 0
 e1/     e2\   e3/     e4\         3  1 0 …

graph-theory

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

如何合并/扩展来自不同JAR的持久性单元?

我使用JPA持久性作为我的数据模型,使用Eclipselink作为持久性提供程序.我有一个模块化(OSGi)应用程序,其中一个模块包含标准数据模型和一个自动包含包中所有实体的持久性单元.持久性提供程序位于另一个模块中,该模块运行良好.

现在我想要第三个模块将一些实体添加到持久性单元.我怎么做?我找到了这个解决方案,这似乎是Spring特有的,我没有使用它.该方法的摘要是编写一个后处理器,该处理器挂钩到持久性单元处理并手动合并文件中的<class>条目persistence.xml.

是否可以合并持久性单元?任何人都可以建议一个解决方法吗?

jpa eclipselink persistence-unit

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