malyj_gorgan: (Default)
malyj_gorgan ([personal profile] malyj_gorgan) wrote2021-12-24 01:04 pm
Entry tags:

log4j ?

Слухайте, а хтось може в парі абзаців пояснити, що то таке сабж і з чим його їдят? Дідько з нею, з його vulterability'ею, я хочу зрозуміти, чим був такий хороший чи зручний чи потрібний сам log4j, що та вульнерабіліті виявилася такою проблємною? Тільки пояснити так, на хлопский розум, без відсилань в непотрібні абревіатури.
Дякую!

[personal profile] mprotsenko 2021-12-31 12:14 am (UTC)(link)
Відрізняється тим, що в випадку context switch доводиться перезаповняти L1/L2 кеш.

В випадку малої кількості threads, кожна з яких оперує незначною кількістю даних - цього може і не відбуватися. Як тільки кількість threads/даних зростає - упс. (Якщо код виконується в віртуалізованому середовищі - дабл-упс. Але для випадку 3 це зазвичай не актуально, там bare metal.)

[personal profile] sassa_nf 2021-12-31 09:56 am (UTC)(link)
а чим це відрізняється від реактивного стилю? ми ж кеш перезаповнюємо лише тому, що інший код та інші дані чіпаємо.

[personal profile] mprotsenko 2021-12-31 05:37 pm (UTC)(link)
Тут я вже не справжній зварювальник - я маску на будмайданчику знайшов...

Але мені здається, що в випадку реактивного стилю ми не так часто чіпаємо інший код - особливо інший boilerplate code, якого при виконанні `new Thread(...)` повним повен кошик.

І boilerplate data ми не чіпаємо, а в реальному `new Thread(new Runnable{...})`, який робить щось реальне, типу HTTP request, його може бути декілька мегабайт, Java - це ще той memory hog.