Как я могу реализовать это более эффективно

Сначала убедитесь, что вы сгенерировали банку с файлом свойств, в котором указан номер версии, как в , этот ответ .

Затем, следуя « Используйте MDC (Mapping Diagnostic Context) в вашем журнале » из Мулен Рафаэль , определите макет шаблона в вашем src/main/resources/log4j2.xml [ 1111]

 

Эта карта отображается в журналах, если маска %X используется в определении формата сообщения Log4j.
Это имеет место здесь в нашем файле src/main/resources/log4j2.xml.

blockquote>

Напишите CommandLineRunner, который поместит правильное значение в ваш логлоггер.

package com.yourapp.mdc;

...
import org.slf4j.MDC;

@Component
public class Execute implements CommandLineRunner {
    ... 

    public void run(String... args) {
        MDC.put("Version", "Version as read from properties file");
        log.info("Test Log4j with MDC");
    }
}

Вы можете использовать этот регистратор в другом месте с:

private static final Logger log = LoggerFactory.getLogger(Example.class);

8
задан sanity 6 March 2009 в 23:32
поделиться

4 ответа

Мы можем устранить ряд из Вашей формулы полностью.

Нам дают:

x_(n+1) = x_n + lr(1-x_n)

Это может быть сделано более простым путем перезаписи следующим образом:

x_(n+1) = (1-lr)x_n + lr

Эффективно, мы преобразовали это в хвостовую рекурсию. (Если Вы хотите перспективу информатики.)

Это означает что:

x_n = (1-lr)^n * x_0    +   ((1-lr)^(n-1) + (1-lr)^(n-2) + ... + 1)*lr 

Большой срок справа является геометрическим рядом, так, чтобы мог быть свернут также:

x_n = (1-lr)^n * x_0   +   lr *  (1 - (1-lr)^n) / (1- (1 -lr))
x_n = (1-lr)^n * x_0   +   1 - (1 - lr)^n

Отредактированный из-за небольшой ошибки в заключительных выражениях. +1 к comingstorm.

2
ответ дан 5 December 2019 в 20:20
поделиться
x + lr*(1-x) 
= x + lr - lr*x 
= x*(1-lr)+lr

применение его дважды дает

(x*(1-lr)+lr)*(1-lr)+lr 
= x*(1-lr)^2 + lr*(1-lr) + lr

и три раза

(x*(1-lr)+lr)*(1-lr)^2 + lr*(1-lr) + lr 
= x*(1-lr)^3 + lr*(1-lr)^2 + lr*(1-lr) + lr

или в целом, n времена дает

x*(1-lr)^n + lr * ( (1-lr)^n + (1-lr)^(n-1)...+(1-lr) +1)

Это помогает?

5
ответ дан 5 December 2019 в 20:20
поделиться

На самом деле сообщение MarkusQ имеет ошибку. Корректная формула:

x * (1-lr)^n + lr * ( (1-lr)^(n-1) + (1-lr)^n-2 + ... + (1-lr) + 1 )
= x * (1-lr)^n + lr * ( 1 - (1-lr)^n )/(1 - (1-lr))
= x * (1-lr)^n + (lr/lr) * (1 - (1-lr)^n)
= (x-1) * (1-lr)^n + 1

Кроме того, обратите внимание, что "n" является количеством раз, Вы применяете функцию. В Вашем функциональном псевдокоде выше, "n=0" случай применяет функцию однажды, не нулевые времена; для соответствия вышеупомянутой формуле это должно было бы пойти:

dampenN (0, lr, x) = x
dampenN (n, lr, x) = dampenN(n-1, lr, dampen(x))
1
ответ дан 5 December 2019 в 20:20
поделиться

Мой навык алгебры сосет также, но я решил осуществить рефакторинг уравнение немного и начал исследовать некоторые случаи, d0, и d1:

d0 = x + lr(1-x) => x + lr - lr*x => (1 - lr)x + lr
d1 = (1 - lr)[(1 - lr)x + lr] + lr => (1 - lr)^2 x + lr(1 - lr) + lr

В основном, если Вы начинаете видеть квадратичное, можно начать видеть кубическую форму и так далее.

В которой точке x только используется однажды, и просто необходимо иметь дело с возведением в степень всех sub условий формы (1 - lr) ^n.

0
ответ дан 5 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

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