см. этот пример:
демонстрация состояний потока.
/*NEW- thread object created, but not started.
RUNNABLE- thread is executing.
BLOCKED- waiting for monitor after calling wait() method.
WAITING- when wait() if called & waiting for notify() to be called.
Also when join() is called.
TIMED_WAITING- when below methods are called:
Thread.sleep
Object.wait with timeout
Thread.join with timeout
TERMINATED- thread returned from run() method.*/
public class ThreadBlockingState{
public static void main(String[] args) throws InterruptedException {
Object obj= new Object();
Object obj2 = new Object();
Thread3 t3 = new Thread3(obj,obj2);
Thread.sleep(1000);
System.out.println("nm:"+t3.getName()+",state:"+t3.getState().toString()+
",when Wait() is called & waiting for notify() to be called.");
Thread4 t4 = new Thread4(obj,obj2);
Thread.sleep(3000);
System.out.println("nm:"+t3.getName()+",state:"+t3.getState().toString()+",After calling Wait() & waiting for monitor of obj2.");
System.out.println("nm:"+t4.getName()+",state:"+t4.getState().toString()+",when sleep() is called.");
}
}
class Thread3 extends Thread{
Object obj,obj2;
int cnt;
Thread3(Object obj,Object obj2){
this.obj = obj;
this.obj2 = obj2;
this.start();
}
@Override
public void run() {
super.run();
synchronized (obj) {
try {
System.out.println("nm:"+this.getName()+",state:"+this.getState().toString()+",Before Wait().");
obj.wait();
System.out.println("nm:"+this.getName()+",state:"+this.getState().toString()+",After Wait().");
synchronized (obj2) {
cnt++;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Thread4 extends Thread{
Object obj,obj2;
Thread4(Object obj,Object obj2){
this.obj = obj;
this.obj2 = obj2;
this.start();
}
@Override
public void run() {
super.run();
synchronized (obj) {
System.out.println("nm:"+this.getName()+",state:"+this.getState().toString()+",Before notify().");
obj.notify();
System.out.println("nm:"+this.getName()+",state:"+this.getState().toString()+",After notify().");
}
synchronized (obj2) {
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Для вывода из строя справедливо "выполнение фрезы" отчеты, SQL Reporting Services является действительно довольно впечатляющей.
Для сложного анализа, загружая данные (возможно, предварительно агрегированный) в Сводную таблицу Excel обычно достаточен для большинства пользователей.
я нашел, что можно провести много времени (и деньги) создание всестороннего "специального" комплекта создания отчетов и после первого месяца или двух из, "ничего себе, фактора", 99% сгенерированных отчетов будут тем же отчетом с незначительными различиями в фиксированном наборе параметров.
не принимают, когда пользователь говорит, что они хотят "специальные" отчеты, не указывая, какие цели и предназначается для их поиска. Они просто ловят рыбу, и они должны на самом деле провести столько времени на РАЗМЫШЛЕНИИ об ИХ требованиях к отчетности, сколько необходимо было бы потратить СОЗДАНИЕ их решения.
я провел слишком много времени, создавая "систему, которая может сообщить обо всем" и чтобы это стало устаревшим или в немилости прежде чем это было закончено. Намного лучше избавиться от быстрых побед, максимально быстрых и затем провести время, "систематизируя" самые важные отчеты.
Мы используем Cognos, это - довольно сложная система, но очень мощный.
Для простых отчетов я использую стандартный ReportViewer, включенный в Visual Studio.
Для более сложных отчетов и, которые требуют большего количества производительности, я использовал и Отчет Стрелок Sharp и devExpress XtraReports. Удивительно, в обоих продуктах составляющие таблицы не так легки, как это должно, но оба быть быстрее, чем ReportViewer и обработать чрезвычайно хорошо многостолбцовые отчеты, штрихкоды и агрегированные данные.
Crystal Reports, потому что легко взять тот же точный файл отчета и
1 - Сообщение это на интранет
2 - Встраивает его в приложение
3 - Расписание он для пользования электронной почтой как вывод Excel время от времени тому, кому бы ни нужен он
Также (как я уже предположил), это экспортирует легко в Excel, PDF и другие форматы.
Я должен был бы согласиться, мне действительно нравится SQL Server Reporting Services. Это просто наполняет и делает это легко.
У меня действительно нет большой работы SSAS, чтобы сделать, но я был вполне взят с этим:
Это предлагает многую из поддержки сводной таблицы Excel в веб-приложении, (думал, что я - недостаточно эксперта по Excel для реального знания поддержки всей сводной таблицы - это, по крайней мере, выглядит сопоставимым с браузером кубов Visual Studio).
, К сожалению, демонстрации, кажется, больше не онлайн :(
Мы используем i-сеть Четкие Отчеты для нашего создания отчетов (видящий как, как мы "едим наш собственный корм для собак"). ;)
Если у Вас есть все деньги в мире, пойдите с Cognos. Они обеспечивают куб данных, который по существу делает сообщающего "разработчика свободным", и конечный пользователь может создать отчеты, панели инструментов, что-либо, что они любят.
Для "обыкновенного человека", я стал довольно любящим отчеты ComponentOne для библиотеки/инструментов.NET. Это имеет подобное чувство к Crystal Reports, но имеет очень дружественный формат XML, что Вы и редактирование под капотом и ни одной из головных болей с управлением версиями, ключами и другими объектами, что я должен был иметь дело с при создании простых обновлений или отчета или базовой версии.
Cognos является устойчивым комплектом инструментов (мы используем его в качестве фронтенда для бэкенда Oracle), но существует явное отсутствие документации относительно того, как выполнить задачи создания отчетов комплекса - главным образом, Вы заканчиваете тем, что барабанили в него, пока Вы не заставляете что-то работать.
я не обесценил бы полноценность использования Microsoft Access как фронтенд создания отчетов. Это не имеет той полезной функциональности веб-доступа, но для внутренних отчетов это очень универсально и удивительно мощно.
Для большого количества проектов мы используем ActiveReports.
Я - разработчик на проекте BIRT, таким образом, я смещаюсь. BIRT обеспечивает, очень хорошо продумал модель объекта отчета (ROM) и соответствующий API для различного дизайна, и разверните функцию, которая необходима. Кроме того, BIRT обеспечивает лучшую многоязыковую поддержку и способность разделить разработку от дизайна с помощью CSS.
BIRT может быть встроен в Ваше приложение ни для какой стоимости лицензии через REAPI, или это может быть куплено посредством нескольких коммерческих предложений.
Я использовал Reporting Services и Crystal справедливо экстенсивно, и я пишу нескольким использованиям отчетов Excel (ick) в данный момент.
Reporting Services довольно хороша для простых отчетов, но как только Вам нужен полный контроль по форматированию, сложным формулам и диаграммам и т.д. Crystal является длинным путем вперед. Я также нахожу, что Crystal намного более применим; способность изменить вещи в предварительном просмотре отчета неоценима (это может быть возможно в более поздних версиях RS?).
RS также должен быть развернут на веб-сервере, который ограничивает, это - полноценность, если Вы пишете приложения, которые должны быть развернуты внешне.
Более старые версии Crystal были очень ошибочны, но последние намного лучше, это является намного более сформировавшимся, чем Reporting Services.
Мы использовали BIRT, который имел крутую кривую обучения для меня, пока я не понял, сколько функций WYSIWIG он имел (я начал редактировать прямой исходный код XML, который я не рекомендую.) Существует некоторый вывод определенные приемы (как использование 0 левых полей для не получения пробела столбец при выводе к формату XLS), но по большей части это быстро и просто в использовании, редактирование и предварительный просмотр.
мне также внушили, как легкий это должно смешать различные наборы данных в единственном отчете. В то время как не серебряная пуля, это - лучшее все вокруг инструмента, чем 99,999% людей собирается создать самостоятельно.
i have a small reporting set, made in 2 months:
at least 10 times faster than crystal reports;
easy editing;
.net formula;
easy usage;
small code usage;
serialization and deserialization(fast and small);
extreme security;
multi threaded;
no errors;
Мы использовали MS Reporting Services, но нас это совершенно не устраивало. Причины:
Теперь мы используем Stimulsoft Reports. У него нет таких ограничений, как у MS Reporting Services, и мы и ваши пользователи довольны им.
"Дайте им данные, и они будут любить вас за это"
Из методов и инструментов, которые я использовал в прошлом, я бы ранжировал их в следующем порядке, исходя из возможностей/сверхречивости/работоспособности/скорости развертывания. Я упускаю из виду стоимость, потому что, хотя это всегда фактор, для каждого он свой.
1 - это Cognos (версия 8)
2 - это SQL Server Reporting
3 - это Crystal Reports
4 - это пользовательский написанный код
Я не использовал ни один из других упомянутых инструментов. Cognos 8 - это не что иное, как удивительное. Хотя это и дорого, но вы ограничены только воображением. Оно может делать все, что угодно.
1) Мне кажется, что служба Reporting Services очень хорошо подходит для большинства нужд, когда дело доходит до разработки табличных отчетов, а также матричных отчетов (drilldown - pivot like functionality).учитывая цену Cognos и т.п. Малый и средний бизнес не может даже мечтать о том, чтобы получить Congns AFAIK
2) Функция планирования отчетов / подписки может быть вызвана для отправки отчетов набору пользователей (управляемых данными) для доставки отчетов. Подписки могут быть доставлены в пользовательские места, такие как SFTP, путем написания .Net кода.
3) Используя модели отчетов, конечный пользователь может перетаскивать колонки и разрабатывать настраиваемые отчеты
To Note:
1) Это может стать более сложным после того, как вы разработаете действительно сложные графические/инструментальные отчеты - которые включают несколько диаграмм и маленьких таблиц для отображения в A4. Дизайнер отчетов (инструмент, который мы используем для создания отчетов) и Web-дисплей используют различные движки рендеринга. Поэтому лучше, если вы будете часто разворачивать отчеты и видеть, как они выглядят, если вы разрабатываете сложные графические отчеты
2) Если вы пишете пользовательскую функциональность, вам, возможно, придется изменить XML-файлы конфигурации (RSReportServer.Config и т.д.). Если в редактировании возникнут какие-либо проблемы, служба ReportServer может остановиться. Поэтому будьте осторожны с резервным копированием, прежде чем делать что-либо пользовательское
.Это не столько положительное предложение, сколько предостережение против отчетов о кристаллах ... Как и в случае с другими людьми, получение правильной версии среды выполнения кристалла важно, но после этого у меня все еще была проблема:
Провел две недели, рыскал по форумам и искал совета, в конце концов получил ответ от кристального тела на их форумах. Предположил, что он видел аналогичную проблему, связанную с установкой MS Paint в качестве приложения по умолчанию для определенного расширения файла.
На этом этапе мы отказались от попыток (после того, как я убедил своего босса, что это не был ответ на мочу, а на самом деле формальный ответ Кристал). Примерно через месяц мы с легкостью перешли на новые серверы (где отчеты работали), но, честно говоря, больше не трогаем их ...
О, и мы использовали SSRS и обнаружили, что это довольно хорошо для большинства вещей ( особенно последняя версия).