Авторски архив
* Синхронизация на нишки
Публикувано на 17 октомври 2009 в раздел ПИК3 Java.
Когато имаме многонишково приложение, ние много често работим и със споделени ресурси. Нека демонстрираме с един пример - имаме масив с наредени числа. Имаме две нишки - такава, която променя числата с произволни и такава, която сортира числата по големина: Прочети още...
* Ревю – 200
Публикувано на 17 октомври 2009 в раздел Музика.
Днес бях много приятно изненадан от една нова песен на Васил Гюров (формално на Ревю). По принцип откакто Милена Славова започна все по-малко да присъства в Ревю групата започна да наподобява като стил на Нова Генерация (приемете го като мое лично мнение). В това няма нищо нелогично естествено, тъй като все пак и Ревю и Нова Генерация имаха едни и същи корени. Все пак радващото е, че Васко продължава да прави нови и все по-качествени парчета. Личи си когато някой си върши работата със сърце, а не от комерсиални подбуди.
В песента "200" Гюров е събрал доста впечатляващ състав - Кирил Маричков (Щурците), Денис Ризов (една от най-любимите ми групи - Ахат) и Иван Лечев (ФСБ)! Прекрасното акустично звучене (типично за Ревю) е запазено, което няма как да не ме зарадва. Интересното е, че песента освен всичко е и доста тежка. Може би се дължи отчасти на доста многото бас от инструментите, но според мен най-главна е цялостната атмосфера на песента. Ако някой от вас обича такъв стил леко меланхолична музика, то съм сигурен, че ще оцени много високо тази песен: Прочети още...
* Нишки
Публикувано на 16 октомври 2009 в раздел ПИК3 Java.
Понятието "нишки" можете да разгледате като "разклонение на една програма на подпрограми, които работят едновременно". Представете си например един HTTP сървър. Работата, която извършва е да прехвърля данните поискани от даден клиент. Когато обаче има повече от един клиент едновременно, то ако нямаме "многонишковост" те трябва да се изчакват един друг на "опашка". Ако имаме един клиент, който изтегля огромно количество информация, то всички останали би трябвало да го изчакват, а това определено не е уместно. Пускането на нишка за всеки един клиент означава, че ние ще обслужваме всички с равно количество процесорно време, независимо кой се е свързал с HTTP сървъра първи, кой втори и кой последен. Прочети още...
* Константи в Java
Публикувано на 15 октомври 2009 в раздел ПИК3 Java.
Константите в Java се създават чрез ключова дума "final". Както е по дефиниция - константите задължително се инициализират и след това не могат да бъдат променяни:
final int x = 5; // x = 6; <<< Не е възможно
В Java обаче е възможно константата само да се декларира и да бъде инициализирана по-късно: Прочети още...
* Garbage Collection
Публикувано на 15 октомври 2009 в раздел ПИК3 Java.
В програмният език C++ съществува понятието "деструктор" - метод който "почиства" преди даден обект да бъде унищожен. Такъв метод е често използван там, защото в C++ програмистът сам контролира кога един обект да бъде изтрит (чрез "обратния" на new оператор delete). В Java програмистът няма контрол над унищожението на обектите. Цялата тежест над това е прехвърлена върху т.нар. Garbage Collector.
Добавено през 2023 г.: В по-стари версии на Java (преди JDK 18) имаше аналогия на "почистващ метод" (деструктор) - това е метод "finalize()". Именно той се извикваше в момента, в който даден обект е изтрит от Garbage Collector. Долният код вече не е актуален, но ще го оставя за историческа справка.
Програмистите, които преминават от C++ към Java ще забележат бързо, че Garbage Collector не се извиква често. При по-малките програми даже е възможно да не бъде извикан въобще. Ето ви един пример: Прочети още...
* Статични вложени член класове
Публикувано на 15 октомври 2009 в раздел ПИК3 Java.
Вече се запознахме с не-статични вложени член класове. За дефинирането на понятието "статичен вложен член клас" е много подходяща аналогията с вече познатите статични методи. Нека си припомним главните характеристики на статичните методи:
- Те са общовалидни за всички инстанции на класа;
- Могат да бъдат извиквани без инстанция;
- Могат да променят и достъпват всички статични полета на класа;
- Не могат да променят или достъпват не-статични полета и методи на класа.
Абсолютно същите принципи са валидни и за статичните класове. Когато един вложен клас е статичен то той:
- Е общовалиден за всички инстанции на външния клас;
- Има достъп само до статичните полета и методи на своя външен клас;
- Може да бъде инициализиран без да е нужна инстанция на външния клас;
- Няма достъп до не-статичните полета и методи на своя външен клас.
Нека дадем един пример за клас, който има два вложени класа - статичен и не-статичен: Прочети още...
* Бране на ябълки
Публикувано на 15 октомври 2009 в раздел Семейни.
Миналата събота отидохме на вилата на бабата и дядото на Милена (приятелката ми), за да берем ябълки. Намира се във вилна зона близо до Перник и се стига по черен път. За щастие беше сухо и топло и нямаше проблеми с придвижването. Предлагам кратка фотогалерия... Прочети още...
* Анонимни класове в Java
Публикувано на 15 октомври 2009 в раздел ПИК3 Java.
"Анонимните" класове са специален вид локални класове. Специалното при тях е, че те нямат специални имена и на тях винаги правим само една инстанция.
Нека вземем за пример изчисляването на дължината на хипутенизата на правоъгълен триъгълник. "Не-анонимно" би било извикването на програмата:
double a = 3; double b = 4; double c = Math.sqrt(a*a + b*b); System.out.println(c);
Защо обаче трябва да пазим променливата "c" ако не я използваме повече в програмата след това? Ако тя не ни е нужна, то ние по-често изписваме: Прочети още...
* Локални класове в Java
Публикувано на 14 октомври 2009 в раздел ПИК3 Java.
"Локални" класове са тези класове, които са дефинирани вътре в програмен блок. Досега знаем как да влагаме класове като членове на даден клас. Когато говорим за локални класове се има предвид клас, който е създаден в тялото на метод.
Първото и може би най-важно нещо, което трябва да знаем за локалните класове е, че те са валидни само и единствено в програмния блок, в който са дефинирани. Можете веднага да си направите аналогия с "локални променливи". Прочети още...
* Под-пакети и не-статични вложени член класове
Публикувано на 14 октомври 2009 в раздел ПИК3 Java.
В статията класове и пакети на Java показахме примери за създаване на един пакет и няколко класа вътре в него. Също така по-късно показахме как е възможно едни класове да наследяват други. Що се отнася до пакетите - беше споменато, но не докрай обяснено, че те следват йерархичната структура на директории и под-директории. Сега ще обясним всичко по-подробно, но първо ще се спрем върху няколко основни неща свързани с организацията при изпълнението на програми.
Всяка виртуална машина на Java идва с определен набор (всъщност доста голям) от готови пакети с класове. Такива пакети са java.io (съдържат класове работещи с входно-изходни устройства), java.net (класове свързани с мрежови потоци) и т.н. Забелязвате веднага, че "системните" за Java класове започват винаги с думата "java" последвана от точка и конкретизиране на името на друг пакет (io, net, ...). Тук вече имаме наличие на йерархия - системния пакет java има свой под-пакет io, който пък притежава клас FileInputStream. За да достигнем до този клас ние указваме пълният път до него - java.io.FileInputStream. Прочети още...