小编Ube*_*rto的帖子

从maven切换到gradle来管理osgi大项目(> 200捆)

我们有一个很大的(约215个捆绑和计数)osgi(felix + springdm)项目,使用maven和maven-osgi插件构建.

我们用maven方式遇到了几个问题:

1.子模块pom必须继承父pom才能利用公共变量和依赖关系(没关系)但是父pom必须包含所有的包,以便能够一起构建所有内容.这种循环引用很难保持同步.

2.子捆绑的单独版本是如此复杂,以至于(在我加入项目之前)决定对所有捆绑使用相同的版本.这意味着我们现在更新每个版本的所有捆绑包的版本,如果只是实际更改了它们中的一堆.这使得osgi的整个概念有点无意义恕我直言.请注意,我并不是说我们继续只触及少数捆绑包,我们会处理所有这些捆绑包,但每个版本通常都包含1或2个功能,这些功能只会影响一些捆绑包.

3.为了完成包和最终工件的部署,我们还需要另一个子模块来导入部署所需的所有包(除了少数用于测试和模拟).[编辑]请注意,这个聚合与主pom中的聚合不同,因为它不编译bundle而只是从maven存储库中选择它们.

4. maven依赖系统和osgi插件导入有时难以保持一致.忘记导入或放置错误的依赖关系太容易了.

[编辑]在每个捆绑pom中有一个这样的部分:`

         <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Export-Package>
                    </Export-Package>
                    <Import-Package>
                        com.google.gson,
                        org.apache.log4j,
                        org.apache.log4j.spi,
                        org.dom4j,
                        com.myinterfaces
                    </Import-Package>
                </instructions>
            </configuration>
        </plugin>`
Run Code Online (Sandbox Code Playgroud)

出于所有这些原因,我们还可以,但对maven并不十分满意.最近有人提议Gradle不是灵丹妙药,而是对当前形势的明确改进.

你会建议搬到gradle吗?如果哪种方式最好?

有其他人遇到过同样的情况吗?我认为所有与Osgi的大项目都应该是共同的.

免责声明:我寻找类似的问题:

Buildr,Gradle还是等待Maven 3?

寻找OSGi包的良好开发环境

Maven:OSGI,捆绑和多模块项目

但要么在哪里不关于osgi submodules或不关于gradle.

java osgi maven apache-felix cradle

14
推荐指数
1
解决办法
3103
查看次数

用TDD学习Scala

我现在正在学习Scala.我看到有两个测试框架,ScalaTest和Specs.我唯一的问题是我还不能用语言来决定哪个更好.此外,我习惯在代码之前编写测试,目前我还不知道如何在函数式编程中进行测试.理想情况下,我想以TDD方式学习Scala,有没有关于它的资源?

tdd specs scala scalatest

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

getMilliseconds()超出Java Date

我需要像long getMillis(Date aDate)这样的函数;

返回Date秒的毫秒数.我不能使用Yoda,SimpleDateFormat或其他库,因为它是gwt代码.

我目前的解决方案正在做 date.getTime() % 1000

有没有更好的办法?

java date milliseconds

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

是否应该在内存和CQRS中使用具有大型模型的Disruptor(LMAX)?

出于性能原因,我们的系统具有完全保留在内存中的结构化模型(大约30个具有多种关系的不同实体)(大约10 Gb).在这个模型上我们必须做3种操作:

  1. 更新一个或几个实体
  2. 查询特定数据(这通常需要读取数千个实体)
  3. 获取统计数据(使用了多少内存,有多少查询类型等)

目前,该体系结构是一个相当标准的体系结构,具有使用共享模型的servlet的线程池.在模型内部有很多并发集合,但仍然有很多等待,因为一些实体"更热",并且大多数线程想要读/写它们.另请注意,通常查询比写入更耗费cpu和时间.

我正在研究切换到Disruptor架构的可能性,将模型保持在一个线程中,在一个单独的消费者中将所有可能的(有效性检查,审计等)移出模型.

第一个问题当然是:它有意义吗?

第二个问题是:理想情况下,写入请求应优先于读取请求.在disruptor中优先考虑哪种方式?我正在考虑2个环形缓冲区,然后尝试从高优先级读取,而不是从低优先级读取.

澄清这个问题比LMAX Disruptor的实际代码更具架构性.

更新更多细节

数据是一个复杂的域,许多不同类型(~20)的许多实体(> 100k)在具有许多不同集合的树结构中链接在它们之间.

查询通常涉及遍历数千个实体以查找正确的数据.更新频繁但非常有限,就像10个实体一样,所以在整个数据中并没有太大变化(如小时为20%).

我做了一些初步测试,看起来并行查询模型的速度优势超过了偶尔的写锁定延迟.

java concurrency disruptor-pattern

7
推荐指数
1
解决办法
2208
查看次数

为什么有这么多Java框架?

显然每个Java程序员和他的狗都写了几个开源框架.我可以理解,有时框架是有用的,但在Java社区中却恰恰相反:没有使用尽可能多的框架,它被视为"非专业态度".

我的团队成员中有一半害怕编写任何代码来解决技术问题,只要他们必须添加功能,他们就可以使用google来获取框架.

当然,没有人可以成为一切的专家,但为什么你需要(例如)在大约20个框架(我上次计算)中选择服务一个简单的休息api?

它是否与Java相关并且缺少标准库(xml解析为一个)?或者它与"面向CV的编程"有关?

java frameworks

6
推荐指数
2
解决办法
2955
查看次数

在 Java 中调整索引图像的大小而不丢失透明度

这是我调整图像大小的功能。质量虽然不是photoshop的,但也可以接受。

不可接受的是索引 png 上的行为。
我们预计,如果我们缩小具有透明索引的 256 色调色板的图像,我们将得到具有相同透明度的调整大小的图像,但事实并非如此。

因此,我们对新的 ARGB 图像进行了调整大小,然后将其减少到 256 种颜色。问题是如何“重新引入”透明像素索引。

private static BufferedImage internalResize(BufferedImage source, int destWidth, int destHeight) {
    int sourceWidth = source.getWidth();
    int sourceHeight = source.getHeight();
    double xScale = ((double) destWidth) / (double) sourceWidth;
    double yScale = ((double) destHeight) / (double) sourceHeight;
    Graphics2D g2d = null;

    BufferedImage resizedImage = new BufferedImage(destWidth, destHeight, BufferedImage.TRANSLUCENT);

    log.debug("resizing image to  w:" + destWidth + " h:" + destHeight);
    try {

        g2d = resizedImage.createGraphics();

        g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
        g2d.setRenderingHint(RenderingHints.KEY_DITHERING, …
Run Code Online (Sandbox Code Playgroud)

java png image java-2d

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