C, PHP, VB, .NET

Дневникът на Филип Петров


Категория ‘ПИК3 Java’

* Монитори и семафори в Java

Публикувано на 04 юли 2023 в раздел ПИК3 Java.

Вече съм показвал няколко примери с употребата на монитори. Зад кадър в тях стои т.нар. мютекс (mutex) – представете си го като ключалка (променлива със стойности „отключено“ и „заключено“). Идеята е, че когато някоя нишка заключи мютекса, други могат да видят това и съответно да спрат и да изчакат, докато тя си свърши работата. Мониторите автоматизират този процес, като организират централизирано управлявана опашка за изчакване на ресурсите. Това се прави чрез синхронизирани блокове или синхронизирани методи. Тук просто ще припомня с елементарен пример. Прочети още…

.

 


* Ограничено наследими (sealed) класове

Публикувано на 29 май 2023 в раздел ПИК3 Java.

Преди Java 17 в езика се следваше подход за наследяване, в който или всеки интерфейс/клас може да бъде разширяван (наследяван) от всеки с extends, или това е забранено чрез ключова дума final. С включването на новата ключова дума sealed се въвеждат ограничено наследими класове. Те дават разрешителен списък, с който се изреждат ограничено количество интерфейси/класове от същия пакет, които могат да имплементират/наследяват текущия. Прочети още…

.

 


* Record в Java

Публикувано на 11 май 2023 в раздел ПИК3 Java.

В практиката често се работи с непроменими (immutable) обекти. Те се описват чрез класове, в които всички член променливи са private и final, и има само и единствено get методи. Така след като е създаден, обектът не може да се променя. Въпреки, че в зависимост от употребата може да се спестят някои елементи от шаблона, който ще покажа по-долу, едно цялостно решение би включило освен get методи до променливите, също метод hashCode(), метод equals() и метод toString(): Прочети още…

.

 


* Switch изрази

Публикувано на 19 декември 2019 в раздел ПИК3 Java.

В Java 12, а по-късно подобрено в Java 13, се появиха тестови „Switch изрази“, които се очаква да станат официална част от версия 14. Досега Switch беше само оператор. Вече може да бъде използван и като израз, който връща стойност. Например ако имаме следното решение за превръщане на число в текстовият низ за ден от седмицата: Прочети още…

.

 


* Текстови блокове

Публикувано на 19 декември 2019 в раздел ПИК3 Java.

Един чест и досаден проблем за разработчиците на Java винаги е бил четимостта на кода. Един от няколкото основни фактора за лошо визуализиран код винаги са били многоредовите низове. Например ако искаме да подобрим четимостта на следната SQL заявка: Прочети още…

.

 


* Автоматично определяне на тип в Java

Публикувано на 18 октомври 2018 в раздел ПИК3 Java.

С идването на Java 10 се въведе едно вероятно дълго чакано нововъведение. Става въпрос за „local type inference“, което аз си позволявам да преведа като „автоматично определяне на тип за локални променливи“. Надявам се да намеря по-къс термин за това определение.

Една тенденция при развитието на повечето езици за програмиране винаги е била да се опростява синтаксиса така, че програмистите да пишат по-изчистен и лесночетим код. Java от самото си начало и до ден днешен не е била сред водещите езици по този критерий – едно от честите оплаквания на програмистите са сложните езикови конструкции.

Преди години с Java 7 се направи първата крачка към съкращаване на кода чрез автоматично типизиране при генерични типове. Нека погледнем следния код, с който дефинираме речник, в който на всяка дума отговаря списък от други думи: Прочети още…

.

 


* Форматиране на низове – примерна задача

Публикувано на 26 януари 2017 в раздел ПИК3 Java.

В долната задача демонстрирам употребата на String.format(). Дадена е следната задача: по подадено число N, да се отпечата чрез стандартния изход матрица с размерност NxN със звезди по диагоналите и празни интервали за останалите елементи.

Обикновено хората започват да търсят решение чрез вложени цикли, например: Прочети още…

.

 


* Упражнение 15, 2015

Публикувано на 08 януари 2016 в раздел ПИК3 Java.

Това е решението на примерната задача за изпит, която е дадена на javac.bg. Имаме библиотека за документ (docslib), сървърно приложение (Upr15Server) и две клиентски приложения: Upr15Student, което изпраща документи и Upr15Secretary, което обработва документи. Прочети още…

.

 


* Задача за подготовка за изпит: конзолна игра на Пексесо

Публикувано на 07 януари 2016 в раздел ПИК3 Java.

Трябва да се създаде сървър за игра на “Пексесо” (blocks). Играта ще се играе от трима души с четен брой от двойки картинки (карти). Картинките се разполагат на масата закрити с лицето надолу, а играчите един след друг се редуват да ги обръщат две по две. Ако даден играч с един ход обърне две еднакви картинки, той ги прибира и печели точка. В противен случай (ако картинките са различни), той ги връща обратно с лицето надолу където са били. Печели играчът, който събере най-много точки в края на играта. Във варианта, който се изисква вие да реализирате, няма да се показват картинки, а ще се използва матрица с числа. Например: Прочети още…

.

 


* Упражнение 13, 2015

Публикувано на 18 декември 2015 в раздел ПИК3 Java.

Задачата беше да се направи клиент-сървър приложение за обмен на файлове. Когато клиент се свърже, той първо си подава потребителското име. След това подава една от следните две команди:

  • send <име на файл>
  • get <име на файл>

При команда send клиента изпраща файла на сървъра и затваря връзката. Сървърът трябва да запише файла с име <username>-<име на файл>. При команда get сървъра намира файл с име <username>-<име на файл>, изпраща го на клиента и затваря връзката. Прочети още…

.