小编Ale*_*ing的帖子

Maven - 聚合的"全部"或"父母"项目?

出于教育目的,我已经建立了一个像这样的项目布局(为了更好地适应日食):

-product
 |
 |-parent
 |-core
 |-opt
 |-all
Run Code Online (Sandbox Code Playgroud)

Parent包含一个包含core,opt和all的聚合项目.Core实现了应用程序的强制部分.Opt是可选部分.所有这些都应该将core与opt结合起来,并将这两个模块列为依赖项.

我现在正在尝试制作以下工件:

  1. 产品core.jar添加
  2. 产品核心src.jar
  3. 产品的核心与 - dependencies.jar
  4. 产品opt.jar
  5. 产品-OPT-src.jar
  6. 产品选择与 - dependencies.jar
  7. 产品all.jar在
  8. 产品全src.jar
  9. 产品全有,dependencies.jar

他们中的大多数生产相当简单.虽然我对聚合工件有一些问题.我已经设法在'all'模块中使用自定义程序集描述符生成product-all-src.jar,该模块下载所有非传递deps的源代码,这样可以正常工作.这种技术还允许我使用all-with-dependencies.jar.

然而,我最近发现您可以使用source插件中的source:aggregate目标来聚合整个聚合项目的源.对于javadoc插件也是如此,它也通过父项目的使用进行聚合.

所以我在'all'模块方法和放弃'all'模块之间徘徊,只使用'parent'模块进行所有聚合.在"父"中产生一些聚合工件并且在"所有"中产生其他工件感觉不洁净.有没有办法在父项目中创建'product-all'jar,或者在'all'项目中聚合javadoc?或者我应该保留两者?

谢谢

java maven-2 aggregate maven maven-assembly-plugin

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

C++序列化Clean XML与XSTREAM类似

我需要编写一个linux c ++应用程序,它以XML格式保存设置(便于手动编辑),并通过套接字和HTTP上的XML消息与现有应用程序通信.问题是我找不到任何智能库来帮助我,我并不特别喜欢编写DOM或SAX代码来编写和阅读一些非常简单的消息.

Boost Serialization几乎是匹配,但它为它生成的xml添加了许多特定于boost的数据.这显然不适用于交换格式.我想知道是否有可能使Boost Serialization或其他一些c ++序列化库生成干净的xml.我不介意是否有一些必需的额外属性 - 比如版本属性,但我真的希望能够控制他们的命名并摆脱我不使用的'功能' - tracking_level和class_id for实例.

理想情况下,我只想在Java中使用类似于xstream的东西.我知道c ++缺乏内省,因此有必要进行一些手动编码 - 但是如果有一个干净的解决方案来读取和编写简单的XML而没有kludges会很好!

如果无法做到这一点,我也对XML模式是规范资源(合同优先)的工具感兴趣 - 一个很好的JAXB替代C++.到目前为止,我只找到了像CodeSynthesis XSD这样的商业解决方案.我更喜欢开源解决方案.我尝试过gSoap - 但是它生成了非常丑陋的代码,并且它也是特定于SOAP的.

无奈之下,我也开始研究protobuffers的替代序列化格式.这存在 - 但仅限Java!令我惊讶的是,协议缓冲区似乎是比XML更好的支持数据交换格式.

我很生气只为这个应用程序找到libs,我真的需要一些新的想法.任何人?

c++ xstream xml-serialization codesynthesis boost-serialization

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

xargs:重定向后的变量替换

我正在尝试查找所有具有编码iso-8859-1的文本文件,并将它们转换为UTF-8.我到目前为止的尝试是:

find . -name '*.txt' | xargs grep 'iso-8859-1' | cut -d ':' -f1 | 
xargs iconv -f ISO-8859-1 -t UTF-8 {} > {}.converted
Run Code Online (Sandbox Code Playgroud)

(显而易见的)问题是最后一个变量替换不起作用,因为{}在重定向之后发生,并且不属于xargs.因为我只得到一个文件{}.converted,而不是 a.txt.converted,b.txt.converted等等.我怎样才能使这个工作?

注意:我在Cygwin上这样做,其中iconv似乎不支持-o.

bash find xargs

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

在字节码中设置断点

正如标题所说:是否可以在没有可用源的类中设置断点?有没有调试器支持这个?能够查看堆栈和局部变量的加分点.

编辑:很抱歉从一开始就不清楚,但我对方法断点不感兴趣.我想在方法中设置一个断点.

java

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

谷歌模拟测试:: internal :: ReturnAction <R>数组负大小

我有测试代码,它做了类似的事情

EXPECT_CALL(mock, getSomeString()).WillOnce(Return(&testString));
Run Code Online (Sandbox Code Playgroud)

在哪里getSomeString()通过引用返回:

std:string& getSomeString();
Run Code Online (Sandbox Code Playgroud)

得到

../../../../src/test/unit/gmock/gmock-actions.h: In member function ‘testing::internal::ReturnAction<R>::operator testing::Action<Func>() const [with F = const std::string&(), R = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]’:
../../../../src/test/unit/MyTests.cc:148:   instantiated from here
../../../../src/test/unit/gmock/gmock-actions.h:467: error: creating array with negative size (‘-0x00000000000000001’)
Run Code Online (Sandbox Code Playgroud)

原因是什么?

c++ googlemock

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

REST:创建相同资源的多种方式

如果您正在建模可以通过多种方式创建的资源,您如何最好地处理它?

我可以想象对同一个资源做 POST 使用一个查询参数来区分不同的方式,比如

POST /logins?type=pwd with body { email, pwd } -> CREATED /logins/1
POST /logins?type=token with body { token } -> CREATED /logins/2
Run Code Online (Sandbox Code Playgroud)

rest

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

从匿名内部类调用重写的默认方法

考虑以下代码:

interface A {
    default void doA() {
        System.out.println("a");
    } 
}

interface B {
    void doB(); 
}

class Test implements A {

    @Override
    public void doA() {        
        // Works
        B b = () -> A.super.doA();
        b.doB();

        // Does not compile
        /*
        new B() {      
            public void doB() {  
                A.super.doA();
            }       
        }.doB();
        */
    }

    public static void main(String[] args) {
        new Test().doA();
    }

}
Run Code Online (Sandbox Code Playgroud)

这是做作,但基本上Test::doA()试图来包装thisB,并且具有B::doB()调用它的超强功能A.super.doA().

我可以打电话给A.super.doA()一个类型的lambda B就好了.但我无法弄清楚A.super.doA() …

java super anonymous-class java-8 default-method

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

插入后列表开始迭代器的有效性

考虑以下程序:

#include <list>
#include <cstdio>

int main() {
    std::list<int> l;
    std::list<int>::iterator it = l.begin();
    l.push_back(0);
    l.insert(it, 1);
    for(const int &i: l) {
        printf("%d", i);
    }
}
Run Code Online (Sandbox Code Playgroud)

http://cpp.sh/66giy

这打印01. 非常令人惊讶。如果我将列表更改为双端队列,它会打印预期的10.

这是一个错误吗?

编辑:双端队列行为是不相关的,双端队列的迭代器被push_back无效。

c++ iterator stdlist

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

Autotools在'make check'后自动调用lcov

我已经成功建立了一个autotools项目,其中测试用仪器编译,这样我就可以获得测试覆盖率报告.

在成功进行'make check'后,我可以通过在源目录中运行lcov来获取报告.

我现在面临的问题是我想自动完成这一步骤.我想将此添加到'make check'或将其作为单独的目标'make check-coverage'.理想情况下,我想解析结果,如果覆盖率低于某个百分比则会失败.问题是我根本无法弄清楚如何添加自定义目标.

我得到的最接近的是找到这个示例autotools配置,但我无法看到该项目中的目标'make lcov'被添加.我只能在m4/auxdevel.m4中看到一些配置标志.

有小费吗?

autotools gcov lcov

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

在原子上调用`into_inner()`是否考虑了所有轻松的写入?

是否into_inner()返回此示例程序中的所有轻松写入?如果是这样,哪个概念保证了这个?

extern crate crossbeam;

use std::sync::atomic::{AtomicUsize, Ordering};

fn main() {
    let thread_count = 10;
    let increments_per_thread = 100000;
    let i = AtomicUsize::new(0);

    crossbeam::scope(|scope| {
        for _ in 0..thread_count {
            scope.spawn(|| {
                for _ in 0..increments_per_thread {
                    i.fetch_add(1, Ordering::Relaxed);
                }
            });
        }
    });

    println!(
        "Result of {}*{} increments: {}",
        thread_count,
        increments_per_thread,
        i.into_inner()
    );
}
Run Code Online (Sandbox Code Playgroud)

(https://play.rust-lang.org/?gist=96f49f8eb31a6788b970cf20ec94f800&version=stable)

我知道crossbeam保证所有线程都已完成,并且由于所有权返回到主线程,我也明白没有未完成的借用,但是我看到它的方式,如果没有,仍然可能有未完成的待处理写入CPU,然后在缓存中.

哪个概念保证所有写入都完成,并且所有缓存在into_inner()被调用时都会同步回主线程?是否有可能丢失写入?

multithreading rust relaxed-atomics

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

错误:预期类型参数,发现闭包

我有以下代码

struct Helper<F1: Fn()> {
    f: F1,
}

struct User<F2: Fn()> {
    h: Helper<F2>,
}

fn new_user<F3: Fn()>() -> User<F3> {
    User {
        // error: expected type parameter, found closure
        h: Helper { f: || {} },
    }
}

fn main(){}
Run Code Online (Sandbox Code Playgroud)

所以User需要一个Helper<F1>由 指定的 F1 类型User,在这种情况下是由中的闭包new_user

此代码编译失败与错误expected type parameter, found closurenew_user。至于我已经明白(例如见这个链接),这是因为约束类型参数F3new_user被调用者指定(或签名也许?),因此,虽然关闭实现Fn()特质,它不能限制类型参数 F3 以匹配闭包的类型。相反,它new_user应该适用于任何给定的F3,而这显然不会。

所以我的问题是:我该如何解决这个问题?有没有表达,我想的任何方式new_user …

generics traits rust

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

Java 中的无符号模

我正在移植一些在 uint32_t 上进行取模的 C 代码。uint32_t 按位适合 Java int,但我无法弄清楚如何在不转换为 long 的情况下对其执行模运算。这是我现在的代码:

int i = 0xffffffff;
long asUnsigned = Integer.toUnsignedLong(i);
int mod = (int) (asUnsigned % 42L);
Run Code Online (Sandbox Code Playgroud)

我可以在不转换为长整型的情况下执行此模计算吗?

java bit-manipulation modulo unsigned-integer signed-integer

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