过去几天我一直在努力解决一个奇怪的问题.我们使用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)用过的).
有任何想法吗?在谷歌上没有找到任何东西 - 或者我使用了错误的关键字:)
我刚刚开始了一个简单的Java测试项目,它使用Hibernate管理一些实体,并提供一个REST接口来操作这些对象并提供一些额外的业务逻辑.REST接口是使用RESTEasy和Jetty创建的.
到目前为止一切正常,但我觉得我实际上写的太多样板代码.由于我在这些Java框架中没有太多经验,我只是想知道是否有人可以给我一个如何改善情况的提示.
好吧,据我所知,我必须为每个请求创建一个Hibernate会话,最后我必须关闭它.所以目前我的所有服务方法都是这样的:
Session session = HibernateUtil.getInstance().getSessionFactory().openSession();
...
...
...
session.close();
Run Code Online (Sandbox Code Playgroud)
有没有办法删除这两行,以某种方式自动执行此操作?目前我的服务已注册为RestEASY单身人士.是否会更改为RESTeasy ressource并在构造函数中创建会话来解决问题?我认为它将解决创建会话的问题.但是关闭呢?
在C++中,这可以很容易地创建一个范围对象,最后关闭会话.但在Java?
一般:我应该考虑使用其他任何模式或框架吗?我的意思是我想保持尽可能简单,特别是因为我没有那么多经验我不想最终使用Spring或任何重量级框架.似乎我已经习惯了Python和Django的简单性,但对于这个小项目,我必须使用Java.
谢谢到目前为止!
我即将编写一个解析器来逐行读取文本文件到不同类型的结构中,并将这些结构赋予回调(观察者或访问者 - 尚不确定).
该文本文件包含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) 我目前正在考虑域事件的粒度.据我所知,这是一个很好的模式,从命令到域事件的1:1关系开始,以便域事件表达用户所做的事情.
在我的例子中,有一段(火车或公共汽车)的旅程,包括一系列停靠点.这些停靠点中的每一个都会在发生时分配时间戳.现在,用户可以取消此旅程,从而导致所有时间戳从旅程的停靠点中移除(简化).
我要做的是发出一个"JourneyCancelled"事件.
现在,如果有一个读取模型提供了旅程的停靠列表 - 读取模型将如何处理此事件?它可能还会重置旅程中每个停靠点的时间戳,这意味着它会复制那里的逻辑(以及处理此事件的每个其他读取模型).
我感兴趣的是旅程被取消但我也对发生的细节感兴趣.
关于域名事件,我做错了什么?
罗尼