В прошлой моем примере на тему экспертных систем, я рассказывал о созданной “ЭС поиска неисправностей ПК”. ЭС была выполнена с использованиям языка Prolog и C++. В данном примере я расскажу, как этаже ЭС с тем же набором правил в базе знаний, была реализована на языке Java.
Читать далее...
Если в команде разработчиков, все будут придерживаться общепринятых правил – использование шаблонов проектирования, одинаковое оформление кода, то им будет легче взаимодействовать, понимать друг другом написанный код, затраченное время на понимание – “эээ, а что ж тут блин написано?…” будет затрачено гораздо меньше.
Есть такой документ Code Conventions for the JavaTM Programming Language (HTML) в котором описано как должен оформляться код. Думаю каждый Java программист должен знать свод этих правил. Сам я очень долго привыкал и перестраивался, но за то результатами я доволен.
В 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(); на несколько десятков секунд. Рассмотрим следующий пример:
Читать далее...