小编rao*_*son的帖子

何时使用不同的日志级别

按死亡顺序记录消息有不同的方法:

  1. FATAL

  2. ERROR

  3. WARN

  4. INFO

  5. DEBUG

  6. TRACE

我如何决定何时使用哪个?

什么是一个很好的启发式使用?

logging

470
推荐指数
15
解决办法
27万
查看次数

Hibernate Criteria使用FetchType.EAGER多次返回子项

我有Order一个列表的类,OrderTransactions我用一对多的Hibernate映射映射它,如下所示:

@OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
    return orderTransactions;
}
Run Code Online (Sandbox Code Playgroud)

这些Order还有一个字段orderStatus,用于使用以下条件进行过滤:

public List<Order> getOrderForProduct(OrderFilter orderFilter) {
    Criteria criteria = getHibernateSession()
            .createCriteria(Order.class)
            .add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow()));
    return criteria.list();
}
Run Code Online (Sandbox Code Playgroud)

这有效,结果如预期.

现在这里是我的问题:为什么,当我明确地设置fetch类型时EAGER,Orders会在结果列表中多次出现?

@OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
    return orderTransactions;
}
Run Code Online (Sandbox Code Playgroud)

如何更改我的Criteria代码以使用新设置达到相同的结果?

java hibernate

113
推荐指数
4
解决办法
7万
查看次数

MongoDB和CouchDB是完美替代品吗?

我还没有弄脏CouchDBMongoDB,但我想尽快这样做...我也读过两个系统,它看起来就像他们覆盖相同的情况......或者我我错过了一个关键的区别特征?

我想在我的下一个项目中使用基于文档的存储而不是传统的RDBMS.我还需要数据存储区

  • 处理大型二进制对象(图像和视频)
  • 自动将自身复制到物理上分离的节点
  • 需要额外的RDBMS是多余的

两者都同样适合这些要求吗?

谢谢!

database couchdb mongodb

56
推荐指数
3
解决办法
7204
查看次数

OSGi可以帮助降低复杂性吗?

我看到很多关于OSGi的演讲,我认为这对于实施更好的模块化听起来很有希望.显然,"热部署"和"并行运行不同版本的x"也是市长的卖点.

我想知道OSGi承诺解决的问题是否是一个问题......?它让我想起OO的早期时代,类似的声称是女仆:

当OO是新的时,最重要的论点是可重用性.人们普遍声称,当使用面向对象时,人们只需要"一次写入",然后就可以"随处使用".

在实践中,我只看到这个适用于一些非常低级的例子.我认为这样做的原因是编写可重用的代码很难.从技术上讲,但从界面设计的角度来看.您必须预测未来的客户将如何使用您的课程并提前做出正确的选择.根据定义,这很困难,因此潜在的可重用性益处通常无法实现.

有了OSGi,我怀疑在这里我们可能会再次陷入承诺,我们没有真正拥有的问题的潜在解决方案.或者如果我们拥有它们,我们没有足够大的数量和严重程度,以便购买OSGi以获得帮助."Hotdeployment",例如模块的子集的绝对是一个好主意,但多久它真正的工作?多久没有,因为事实证明你对特定问题的模块化是错误的?如何在多个模块之间共享模型实体?这些模块都必须同时更换吗?或者,您是否将对象展平为基元并仅使用模块间通信中的对象,以便能够保持接口契约?

应用OSGi时最困难的问题是,我认为,使模块化"正确".类似于在OO中使用OSGi获取类的接口,问题保持不变,这次是更大规模,包甚至服务级别.

正如您可能已经猜到的那样,我目前正在尝试评估OSGi以用于项目.我们遇到的主要问题是随着代码库的增长而增加复杂性,并且我希望在具有越来越多定义的交互的较小模块中打破系统.

  • 由于没有框架都不能帮助决定什么模块化,已经OSGi的不断祈祷,关闭吗?
  • 在团队合作中,它是否让您的生活更轻松?
  • 它有助于减少错误数量吗?
  • 你有没有成功地"热部署"主要组件?
  • OSGi是否有助于降低复杂性?
  • OSGi是否遵守承诺?
  • 它符合你的期望吗?

谢谢!

java complexity-theory osgi modularity

27
推荐指数
3
解决办法
1691
查看次数

可以在流上计算SHA-1算法吗?内存占用少?

我正在寻找一种方法来计算非常大的文件的SHA-1校验和,而无需立即将它们完全加载到内存中.

我不知道SHA-1实现的细节,因此想知道是否有可能这样做.

如果你知道SAX XML解析器,那么我所寻找的东西就是类似的东西:通过一次只将一小部分加载到内存来计算SHA-1校验和.

我发现的所有示例,至少在Java中,总是依赖于将文件/字节数组/字符串完全加载到内存中.

如果你甚至知道实现(任何语言),那么请告诉我!

java memory algorithm sha1 stream

16
推荐指数
3
解决办法
4454
查看次数

使用Groovy MetaClass覆盖方法

我有一个POJO使用服务来做某事:

public class PlainOldJavaObject {

    private IService service;

    public String publicMethod(String x) {
        return doCallService(x);
    }

    public String doCallService(String x) {
        if(service == null) {
            throw new RuntimeException("Service must not be null");
        }
        return service.callX(x);
    }

    public interface IService {
        String callX(Object o);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个Groovy测试用例:

class GTest extends GroovyTestCase {

    def testInjectedMockIFace() {
        def pojo = new PlainOldJavaObject( service: { callX: "very groovy" } as IService )
        assert "very groovy" == pojo.publicMethod("arg")
    }

    def testMetaClass() {
        def pojo = …
Run Code Online (Sandbox Code Playgroud)

groovy unit-testing programming-languages dynamic-languages mocking

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

如何在IDE中使用Grails依赖项

所以我终于让我的依赖项与Grails一起工作了.现在,我的IDE(例如IntelliJ或Eclipse)如何利用它?或者我真的必须手动管理我的IDE在"开发时"知道哪些类?

如果BuildConfig.groovy脚本设置正确(参见此处),您将能够使用vi或您喜欢的编辑器编写代码,没有任何麻烦,然后运行grails compile将解析并将依赖项下载到常春藤缓存中,然后关闭 ...

但是,如果您使用的是Eclipse或IntelliJ等IDE,则在编码时需要手头的依赖项.显然 - 因为这些动物需要它们进行"实时"错误检测/编译过程.

现在,虽然您可以编写所有在您的IDE都不知道的地方闪烁着鲜红色的类,但它肯定不是很有趣 ......

Maven支持或正式调用的任何东西都与pom文件一起生活,不需要额外的"jar目录"指针,至少在IntelliJ中.我希望能够对Grails依赖项做同样的事情.

目前我在其中定义它们,BuildConfig.groovy另外我在当地磁盘上复制/粘贴当前的jar并让IDE指向它.

不太令人满意,因为我在代码更改方面的高度不稳定的项目模块环境中工作.这种情况将我直接导入"jar地狱",因为我的"开发和构建依赖"很容易失去同步,我必须手动管理,也就是说,我的脑子......

我的大脑应该忙于其他的事情 ......

谢谢!拉乌尔

PS:我目前正在使用Grails 1.2M4和IntelliJ 92.105.但是随意添加Grails的未来版本和不同的未来IDE的答案,因为 ...

ide grails dependencies maven-2 intellij-idea

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

具有对象类型的Jackson JSON列表

我必须从对象列表中序列化JSON.生成的JSON必须如下所示:

{
    "status": "success",
    "models": [
        {
            "model": {
                "id": 23,
                "color": "red"
            }
        },
        {
            "model": {
                "id": 24,
                "color": "green"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

当我简单地序列化时,我错过了类型/键"模型":

List<Model> list = new ArrayList<Model>(); // add some new Model(...)
Response r = new Response("success", list); // Response has field "models"
Run Code Online (Sandbox Code Playgroud)

相反,我得到这个:

{
    "status": "success",
    "models": [
        {
            "id": 23,
            "color": "red"
        },
        {
            "id": 24,
            "color": "green"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如何为每个对象添加"模型"而无需编写具有属性"模型"的愚蠢包装类?

我的课程看起来像这样:

public class Response {
    private String status;
    private List<Model> models; …
Run Code Online (Sandbox Code Playgroud)

java serialization json types jackson

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

清除Grails依赖缓存

在尝试解决SNAPSHOT maven依赖项遇到的问题时遇到了一些问题(参见此处).

运行时grails dependency-report,列出了缓存的依赖项,或多或少如下:

acme-adapter-api by com.acme
108 kB (0 kB downloaded, 108 kB in cache)

正如这个答案所暗示的那样,在更新依赖关系而不增加版本号时会遇到麻烦,导致缓存未被清空,并且SNAPSHOT依赖关系不会被重新获取,正如人们所期望的那样.

我到处都看了,也在%HOME%\.grails目录和床下;-)但找不到任何看起来像缓存的东西.

它在哪里,所以我可以手动删除它?或者甚至更好,我怎样才能grails compile有力地清理它?

谢谢!
拉乌尔

PS:我正在使用Grails 1.2M4

grails dependencies maven-2

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

Aperture插件与EXC_BAD_ACCESS崩溃

我尝试运行Aperture SDK 2.1附带的SampleFTPExportPlugIn.我不得不调整基本SDK设置和手动PluginManager.Framework文件夹复制到/库/框架,描述在这里.

所有编译和Aperture 3.2.3现在提供菜单项File/Export/FTP.

选择"FTP"导出方法并因此触发插件代码时,Aperture会发生EXC_BAD_ACCESS崩溃.当尝试获取对以下内容的引用时,非法内存访问在initWithAPIManager类的方法中发生:SampleFTPExportPlugInApertureExportManager

   _exportManager = [[_apiManager apiForProtocol:@protocol(ApertureExportManager)] retain];
Run Code Online (Sandbox Code Playgroud)

这是在Aperture将控制交给插件后执行的第二行,似乎是ApertureExportManager在任何Aperture插件中获取引用的标准方法(我还没有找到任何替代方法来实现相同的功能)任何地方).

这里的堆栈跟踪:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000

VM Regions Near 0:
--> 
    __TEXT                 0000000100000000-0000000100798000 [ 7776K] r-x/rwx SM=COW  /Applications/Aperture.app/Contents/MacOS/Aperture

Application Specific Information:
objc_msgSend() selector name: class
objc[3000]: garbage collection is OFF
Performing @selector(a_exportPlugIn:) from sender NSMenuItem 0x111d2a540

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib                 0x00007fff8711c090 objc_msgSend_vtable2 + 16
1   com.apple.CoreFoundation        0x00007fff8381e25f …
Run Code Online (Sandbox Code Playgroud)

xcode plugins objective-c

6
推荐指数
1
解决办法
615
查看次数