Wpis z mikrobloga

Hej!

Niestety na wstępie zaznaczę, że dzisiejszy odcinek będzie okrojony z materiału i przeznaczony raczej dla początkujących.


1. Deadlock rozszerzenie definicji.
Dzięki użytkownikowi @63274682374 umieszczam bardziej zobrazowaną definicę deadlocka.

Dwie osoby chcą zjeść obiad. Na stole jest tylko jeden nóż i jeden widelec. Jedna osoba chwyta nóż, druga widelec. Żadna z nich nie może zacząć jeść bo nie ma drugiego sztućca, więc czeka na jego zwolnienie. To jest właśnie deadlock, gdzie dwa lub więcej wątków zablokowało między sobą zasoby potrzebne do wykonania zadania.

Aby zapobiec takiej sytuacji wystarczy się trzymać zasady, że dostęp do chronionych np. blokadą zasobów jest realizowany zawsze w tej samej kolejności. W naszym przykładzie zakładamy, że najpierw trzeba mieć nóż a dopiero potem można starać się o widelec. Jedna osoba chwyta nóż, druga próbuje ale jej się nie udaje więc czeka. Ta z nożem bierze widelec, je obiad i odkłada sztućce. Następnie druga osoba może zjeść obiad.


2. Która klasa jest nadklasą wszystkich klas?
Wszystkie klasy w javie rozszerzane są przez java.lang.Object

3. Paradygmat obiektowy
Tak naprawdę na początku nauki ciągle mówi się o obiektowości. O programowaniu obiektowy. OOP. Tylko nikt za bardzo nie tłumaczy co się tutaj z czym je. Zacznijmy od tego, że podstawowe założenia to: Hermetyzacja, Abstrakcja, Dziedziczenie i Polimorfizm.

Hermetyzacja – to ukrywanie implementacji. Z założenia zapewnienie, że zmiany w obiekcie będą oczekiwane. Tutaj znajdziemy mutatory i akcesory (gettery i settery)

Abstrakcja – z definicji nazywamy pewnego rodzaju uproszczenie rozpatrywanego problemu, polegające na ograniczeniu zakresu cech manipulowanych obiektów wyłącznie do cech kluczowych dla algorytmu, a jednocześnie niezależnych od implementacji. W tym sensie abstrakcja jest odmianą formalizmu matematycznego. Cel stosowania abstrakcji jest dwojaki: ułatwienie rozwiązania problemu i zwiększenie jego ogólności.
Najłatwiej jest sobie to wyobrazić jako mechanika samochodowego. Po świecie porusza się wiele pojazdów i nie potrzebujemy do każdego wyspecjalizowanego mechanika. Większość napraw (działań) może wykonać jeden mechanik.

Polimorfizm – każdy obiekt ma wiele form (oprócz obiektu Object) i może być zmieniany / rozszerzany.
Dziedziczenie – jest to sposób na przekazanie pewnych cech danej klasy innej klasie. Dziedziczy się głównie pola i metody.

4. Wymień motody protokołu HTTP
Pytanie, które jest banalne i praktycznie zawsze pojawia się przy rekrutacji juniorów.
GET, POST, HEAD, PUT, DELETE, TRACE, OPTIONS, PATCH

5. Proste zadanie
Jaki będzie wynik?

String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2 is:" + s1 == s2);


Pierwsze zadanie domowe polega na zapoznaniu się co dane metody HTTP wykonują.
Drugie zadanie domowe jest od @interface (dziękuje).

TAGI
#pytanianadeva #naukaprogramowania #programowanie #java #javascript #maven
  • 21
@pottymouth: wpis kierujesz do początkujących, a kurcze mam wrażenie jakbyś to robił od niechcenia. Miejscami wprowadzasz dodatkowo po prostu w błąd, po raz kolejny podajesz totalnie nietrafiony przykład, który jest w zasadzie przeciwieństwem tego o czym piszesz ( ͡° ʖ̯ ͡°)

Hermetyzacja – to ukrywanie implementacji. Z założenia zapewnienie, że zmiany w obiekcie będą oczekiwane. Tutaj znajdziemy mutatory i akcesory (gettery i settery)

Co to jest oczekiwana
@pottymouth: co do zakleszczeń, przydadzą się też warunki konieczne (metafory z widelcami nigdy do mnie nie przemawiały). Nie występuje jeden z tych warunków - nie może być zakleszczenia (jako ćwiczenie można to udowodnić xD)

1)Wzajemne wykluczanie — przynajmniej jeden zasób musi być niepodzielny, czyli używanie egzemplarza tego zasobu przez jeden proces uniemożliwia używanie go przez inny proces do czasu zwolnienia.

2) Przetrzymywanie i oczekiwanie — proces, któremu przydzielono jakieś jednostki, oczekuje
@pottymouth:
Chciałbym, żeby mi takie proste pytania zadawali na rekrutacjach. Ostatnio mi kazali rysować diagram encji z Enterprise Architecta, pytali o Angulara (chociaż w CV nie mam o nim słowa xD), a potem jeszcze kazali z pamięci wymieniać jakieś JavaScriptowe metody jQuery xD. To wszystko na juniora.
@pottymouth: Jakby ktoś mi na rekrutacji na pyt.3 odpowiedział w taki sposób to nie przyjąłbym go nawet na juniora.
Kolego, albo sam nie za dobrze to rozumiesz albo nie zastanawiasz się nad formą wypowiedzi albo kopiujesz to skądś.
Jeśli już chcesz się dzielić wiedzą to rób to porządnie. Przeanalizuj kilka różnych źródeł, zrozum, sprawdź czy nie ma błędów (albo daj komuś do przeczytania).