В прошлой моем примере на тему экспертных систем, я рассказывал о созданной “ЭС поиска неисправностей ПК”. ЭС была выполнена с использованиям языка Prolog и C++. В данном примере я расскажу, как этаже ЭС с тем же набором правил в базе знаний, была реализована на языке Java.
Читать далее...
eUML 2 - Удобный плагин, который может кроме построения различных типов UML моделей, строить уже по имеющимся классам модель, и наоборот по построенной модели сгенерировать классы – т.е. уже готовый каркас, а программисту необходимо будет написать реализацию методов, и протестировать все.
Для обновления Eclipse 3.5 Galileo используйте update site:
http://www.soyatec.com/update/galileo/
Доступна бесплатная версия плагина, для некоммерческого использования, построенные диаграммы, можно включать в проект, и также размещать в системе версий, например SVN.
Официальный сайт проекта, доступен по адресу: http://www.soyatec.com/euml2/
В java.net входит набор классов и интерфейсов для работы с сетью по средством различных протоколов и технологий: TCP (серверные и клиентские) и UDP сокеты (sockets), Proxy, Cookies, HTTP – полный набор средств, чтобы создавать сетевые приложения любой сложности.
Не для кого не секрет, что взаимодействие браузера с HTTP сервером осуществляется по одноименному протоколу HTTP, и в основном используются PUT и GET запросы.
Задача: создать приложение, которое может отправлять запросы на сервер методом GET и POST.
Приступим к реализации.
Читать далее...
Часто бывает необходимость использовать конкатенацию строк например при формировании отчетов или генерации других строковых наборов. У меня была однажды практика формирования больших отчетов, приходилось обрабатывать большие наборы данных, и при этом для уровня представления данные подготавливались в виде двумерного массива объекта java.lang.String, не очень хороший вариант, но это было обусловлено особенностями уровня представления. Формирование массива само собой происходило в двух вложенных циклах, а внутри второго происходила конкатенация с использования оператора “+”.
Работа алгоритма формирования отчета происходило очень долго, оптимизируя цикл, вынося создание объектов вне тела цикла, другие виды оптимизации, но прирост скорости выполнения был очень мал. Я долго не мог понять в чем проблема, пока не дошел до конкатенации.
Как оказалось виртуальная Java машина на каждую операцию “simple string” + создает новый объект типа java.lang.String, а теперь представим, что у нас эти операции производиться в теле цикла, а количество итерации большое – это равносильно вызову Thread.sleep(); на несколько десятков секунд. Рассмотрим следующий пример:
Читать далее...
Маленький пример по сжатию файла средствами jdk, используя GZIPOutputStream. Также в данном примере будет затронута тема потоков.
Будем использовать два метода, первый чтение файла в массив байт readFile. Второй метод (gzipArray) производит сжатие массива байт с выводом в файл.
Читать далее...