добавление дополнительных ресурсов в Maven Pom

Извините за беспокойство, но erat2 () имеет серьезный недостаток в алгоритме.

При поиске следующего композита нам нужно проверить только нечетные числа. q, p оба нечетны; то q + p четно и не нуждается в проверке, но q + 2 * p всегда нечетно. Это исключает проверку «если даже» в условиях цикла while и экономит около 30% времени выполнения.

Пока мы находимся в этом: вместо элегантного «D.pop (q, None)», get и delete использовать метод ', если q в D: p = D [q], del D [q]', что вдвое быстрее! По крайней мере, на моей машине (P3-1Ghz). Поэтому я предлагаю эту реализацию этого умного алгоритма:

def erat3( ):
    from itertools import islice, count

    # q is the running integer that's checked for primeness.
    # yield 2 and no other even number thereafter
    yield 2
    D = {}
    # no need to mark D[4] as we will test odd numbers only
    for q in islice(count(3),0,None,2):
        if q in D:                  #  is composite
            p = D[q]
            del D[q]
            # q is composite. p=D[q] is the first prime that
            # divides it. Since we've reached q, we no longer
            # need it in the map, but we'll mark the next
            # multiple of its witnesses to prepare for larger
            # numbers.
            x = q + p+p        # next odd(!) multiple
            while x in D:      # skip composites
                x += p+p
            D[x] = p
        else:                  # is prime
            # q is a new prime.
            # Yield it and mark its first multiple that isn't
            # already marked in previous iterations.
            D[q*q] = q
            yield q
15
задан Jeff Storey 9 July 2009 в 01:55
поделиться

2 ответа

Поведение, которое вы описали, является ожидаемым.

Помните, что ваш супер-POM наследуется от Maven POM по умолчанию и почти любого плагина, который вы определяете в своем pom эффективно переопределяет настройку в POM по умолчанию. Например, чтобы включить фильтрацию ресурса по умолчанию, вы должны указать путь в вашем POM. Вы делаете это:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Не это:

<resources>
  <resource>
    <filtering>true</filtering>
  </resource>
</resources>

Каталог по умолчанию не всплывает для вас, даже если вы указали его там. Возможно, это сделает специальный MOJO, но я не смог его найти.

15
ответ дан 1 December 2019 в 03:52
поделиться

См. Страницу использования плагина build-helper-maven-plugin.

4
ответ дан 1 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: