Я лично использую PORO почти во всем, что пишу, что не является полным скриптом броска.
Я часто создаю тип владельца данных класса, который будет управлять и содержать несколько объектов моего конкретного типа и включать некоторые вспомогательные методы. Я нахожу это удобным для, когда кто-то другой также должен работать с моим кодом.
Я думаю, что этот вопрос очень субъективен в том смысле, что нет ответа, который всегда правильный. Иногда просто передать назад массив хорошо, и нет необходимости создавать дополнительный класс. Иногда дополнительный уровень абстракции делает что-то гораздо более понятным для пользователя.
-121--3357733-Наш сценарий msbuild запускается из командной строки Visual Studio x86. При использовании этого синтаксиса он не считывает 64-разрядный реестр. Существует другой синтаксис, который позволит x86 считывать 64-битный реестр?
-121--4632010-Я использовал Perf4J и в конечном итоге бросил его, потому что уже использовал Spring AOP. Я бы хотел просто интегрировать два, но имел проблемы с этим (из-за Perf4J аппендеров).
Я пытался использовать Perf4j через аннотации и AOP без JMX. Производственный cfg можно обрабатывать с помощью файлов конфигурации.
В целом, мне понравился Perf4j подход, но поскольку я уже использовал Spring для мониторинга производительности, мне не требовалось perf4j. Одна вещь, которую Perf4j дает бесплатно, это min/max/standard dev; с другими губами вы должны будете делать математику самостоятельно.
Я вещь perf4j хороша, если у вас нет никакого другого lib, который может, обеспечиваю перехват (aspectJ или AOP), но так как у меня уже была весна, было легче осуществить исполнительное измерение. Свойства компонента можно легко раскрыть с помощью JMX с помощью Spring.
Я использую Perf4J в клиент-серверном приложении для синхронизации вызовов RPC. Это было довольно просто реализовать: Мне нужно было включить всего несколько строк кода вокруг сервлета диспетчера RPC для измерения каждого вызова метода RPC. Измерения времени записываются в отдельный файл журнала, агрегированные данные хранятся в памяти для использования сервлетом построения графиков. Настройка заняла несколько минут.
Это выдержка из метода preHandle():
request.setAttribute("stopWatch", new CommonsLogStopWatch());
Это код из метода postHandle():
LoggingStopWatch stopWatch = (LoggingStopWatch)request.getAttribute("stopWatch");
stopWatch.stop(methodName);
Вот соответствующие разделы моего log4j.cfg:
<logger name="org.perf4j.TimingLogger" additivity="false">
<level value="info"/>
<appender-ref ref="CoalescingStatistics"/>
<appender-ref ref="statsAppender"/>
</logger>
<appender name="CoalescingStatistics"
class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
<param name="TimeSlice" value="60000"/>
<appender-ref ref="graphPatientChart"/>
</appender>
<appender name="graphPatientChart"
class="org.perf4j.log4j.GraphingStatisticsAppender">
<param name="GraphType" value="Mean"/>
<param name="TagNamesToGraph" value="getPatientChart,idleNotification"/>
</appender>
<appender name="statsAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd"/>
<param name="file" value="WEB-INF/log/meona-performance.log"/>
<param name="append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
Я бы хотел, чтобы сервлет для построения графиков был более интерактивным: Было бы неплохо, если бы я мог выбирать теги, которые будут включены в график. Встречалось ли вам приложение с пользовательским интерфейсом, которое можно использовать для анализа журналов измерения времени?