小编dus*_*aer的帖子

链接OpenMP与-fopenmp和-lgomp之间的区别

过去几天我一直在努力解决一个奇怪的问题.我们使用GCC 4.8创建了一些库,它们静态地链接了一些依赖项 - 例如.log4cplus或者提升.对于这些库,我们使用boost-python创建了Python绑定.

每次这样的库使用TLS(就像log4cplus在它的静态初始化中做的那样,或stdlibc ++在抛出异常时也会这样 - 不仅在初始化阶段)整个事件在段错误中崩溃 - 并且每次线程局部变量的地址都为0 .

我尝试了重新编译等所有内容,确保使用-fPIC,确保使用-tls-model = global-dynamic等.没有成功.然后今天我发现这些崩溃的原因是我们链接OpenMP的方式.我们使用"-lgomp"而不是仅仅使用"-fopenmp"来完成此操作.因为我改变了这一切一切正常 - 没有崩溃,没有什么.精细!

但我真的想知道问题的原因是什么.那么在OpenMP中链接这两种可能性有什么区别?

我们在这里安装了一台CentOS 5机器,我们在/ opt/local/gcc48中安装了GCC-4.8,我们也确信来自/ opt/local/gcc48的libgomp和libstdc ++一起使用(DL_DEBUG)用过的).

有任何想法吗?在谷歌上没有找到任何东西 - 或者我使用了错误的关键字:)

c++ openmp dlopen static-linking

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

根据请求创建Hibernate-Session

我刚刚开始了一个简单的Java测试项目,它使用Hibernate管理一些实体,并提供一个REST接口来操作这些对象并提供一些额外的业务逻辑.REST接口是使用RESTEasy和Jetty创建的.

到目前为止一切正常,但我觉得我实际上写的太多样板代码.由于我在这些Java框架中没有太多经验,我只是想知道是否有人可以给我一个如何改善情况的提示.

  1. 根据请求创建Hibernate会话

好吧,据我所知,我必须为每个请求创建一个Hibernate会话,最后我必须关闭它.所以目前我的所有服务方法都是这样的:

Session session = HibernateUtil.getInstance().getSessionFactory().openSession();
...
...
...
session.close();
Run Code Online (Sandbox Code Playgroud)

有没有办法删除这两行,以某种方式自动执行此操作?目前我的服务已注册为RestEASY单身人士.是否会更改为RESTeasy ressource并在构造函数中创建会话来解决问题?我认为它将解决创建会话的问题.但是关闭呢?

在C++中,这可以很容易地创建一个范围对象,最后关闭会话.但在Java?

  1. 每当发出这样的REST请求时,我都必须检查有效的会话(用户必须先登录).ServletFilter是正确的方法吗?

一般:我应该考虑使用其他任何模式或框架吗?我的意思是我想保持尽可能简单,特别是因为我没有那么多经验我不想最终使用Spring或任何重量级框架.似乎我已经习惯了Python和Django的简单性,但对于这个小项目,我必须使用Java.

谢谢到目前为止!

java design-patterns hibernate jetty resteasy

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

在D中表示可选值

我即将编写一个解析器来逐行读取文本文件到不同类型的结构中,并将这些结构赋予回调(观察者或访问者 - 尚不确定).

该文本文件包含MT-940数据 - SWIFT银行对帐单.

这些行包含一个指定类型的标记和一些字段 - 例如日期 - 应该被解析为我的消息的类型安全成员.其中一些字段是可选的 - 所以我的问题是:我如何在D中表示可选值.

C++提供了你可能知道的boost :: optional之类的东西.

我目前正在通过自己实现一个Optional(T)来解决这个问题(参见本文末尾的代码).它是一个包含ValueHolder实例的结构,该实例可能为null - 这标记了没有赋值的情况.我覆盖了copy-c'tor和赋值运算符,以便在必要时创建ValueHolder的深层副本.

这是要走的路吗?还有其他 - 更简单 - 我看不到的选项吗?

这是我的代码 - 不一定完成功能:

struct Optional(T)
{
  class ValueHolder
  {
    T value;

    this(T v)
    {
      value = v;
    }
  }

  private ValueHolder m_value;

  /* Construction without value / with value */

  this(T value)
  {
    m_value = new ValueHolder(value);
  }

  /* Copy construction / assignment */

  ref Optional!(T) opAssign(Optional!(T) rhs)
  out
  {
    if (rhs.m_value !is null)
    {
      assert(rhs.m_value …
Run Code Online (Sandbox Code Playgroud)

d phobos

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

不使用域事件更新读取模型重复业务逻辑?

我目前正在考虑域事件的粒度.据我所知,这是一个很好的模式,从命令到域事件的1:1关系开始,以便域事件表达用户所做的事情.

在我的例子中,有一段(火车或公共汽车)的旅程,包括一系列停靠点.这些停靠点中的每一个都会在发生时分配时间戳.现在,用户可以取消此旅程,从而导致所有时间戳从旅程的停靠点中移除(简化).

我要做的是发出一个"JourneyCancelled"事件.

现在,如果有一个读取模型提供了旅程的停靠列表 - 读取模型将如何处理此事件?它可能还会重置旅程中每个停靠点的时间戳,这意味着它会复制那里的逻辑(以及处理此事件的每个其他读取模型).

我感兴趣的是旅程被取消但我也对发生的细节感兴趣.

关于域名事件,我做错了什么?

罗尼

architecture domain-driven-design cqrs event-sourcing

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