Új hozzászólás Aktív témák
-
skoda12
aktív tag
-
skoda12
aktív tag
válasz
Szmeby #11687 üzenetére
Nem gondolom, hogy felesleges kötekedés lett volna részemről. Volt ott minden, közösen elfogadott irányelvekkel való szembemenetel újra és újra, túlbonyolított kód (többszáz sor, ami pár tíz sorra redukálható), unorthodox megoldások pl hashmapből key alapján for looppal érték visszakeresése, funkcionális hibák, nem azt implementálták, amit a ticket kért vagy 5 requirementből csak 4-et sikerült implementálni, stb.
De most ez nyilván rosszul jön le, mert az látszik, hogy egy embernek több másikkal volt konfliktusa és a többségnek általában igaza van. Azért utólag 1 emberről megtudtam, hogy amikor lekérték arról a projektről, akkor több más ok mellett az is elhangzott fentről, hogy rendszeresen túl sok olyan dolgot találtam a PR-jeiben, amit nem nekem kellett volna megtalálni.
-
skoda12
aktív tag
válasz
floatr #11685 üzenetére
Ez szerintem minden kódra igaz. Voltam zöldmezős projekteken. 1 év után azok is úgy néztek ki, mint bármi más, amit 5 éve fejlesztenek 2 vendor céggel. Nagyon sok nagyon különböző képességű ember nyúl a kódokhoz, valószínűleg hatással van az egészre a felülről érkező nyomás is, a szűkös határidők, változó elvárások, stb. Régen én eléggé beleálltam a code reviewkba, de borzasztó sok konfliktusom volt belőle és inkább elengedtem. Funkcionális hibák esetén is inkább privátban chaten szólok az embereknek. Páran nagyon nem tudják kezelni, amikor nyílvánosan kapnak 5-6 kommentet egy PR-re.
-
skoda12
aktív tag
-
skoda12
aktív tag
Az action és event listenereidet a framework triggereli, így azok az event dispatcher threaden fognak futni, tehát lehet belőlük UI elemeket módosítani. A többi osztálynál figyelni kell, hogy ha UI elemeket módosítasz, akkor a SwingUtilities valamelyik invoke...() metódusával legyenek futtatva a megfelelő kódrészek (ezek végül így az event dispatcher threaden fognak futni). Ezzel le vannak fedve a UI-os részek, de neked kell tudni, hogy használsz-e még máshol threadeket és azok helyesen osztják-e meg egymás között az adatokat. Mondjuk valószínűleg az a rész is érdekes, ahol a vonalkódolvasótól átveszed az adatot és kipakolod a UI-ra.
Igazából látni kéne az egész kódot, hogy meg lehessen állapítani hol van probléma az adat megosztással, de egy teljes projektet nincs időm átnézni és kidebuggolni. Érdemes lenne a multithreadingnek és memory consistency erroroknak utánaolvasnod.
-
skoda12
aktív tag
válasz
Dinter #10018 üzenetére
Itt több esetet kell majd szétválogatni szerintem. Induljunk egy runnable állapotból, ekkor a lépések:
1. A foobar.wait() hívása előtt meg kell szerezni a monitor lockját. Ez vagy sikerül elsőre vagy blocked állapotba kerül a thread, ha valaki másnál van lock.
2. Valahogy túljutunk az előző ponton, runnable állapotban van a thread és meghívódik a foobar.wait(). Az új állapot waiting.
3. Valamiért (*) felébred a thread, runnable állapotba kerül. Ahhoz, hogy ki tudjon lépni a wait()-ből kell a monitor lock. Itt megint vagy sikerül elsőre vagy blocked állapot jön és ha megvan a lock akkor runnable megint.(*) A notify() hatására átmehet blocked állapotba a thread. A foobar.notify() híváshoz is kell a monitor lock. Ha a felébresztett thread már futna, de a notify()-t hívó thread még fogja a lockot, akkor a felébresztett thread megy a blocked állapotba. Ha viszont véletlen úgy kapna cpu időt, hogy a notfiy()-t hívó thread (és mindenki más) már eleresztette a lockot, akkor ki is maradhat ez a blocked állapot.
Viszont nem csak a notify() miatt mehet át ilyen állapotokon a thread. Például spurious wakeup miatt a wait()-et hívó thread még a notify() hívás előtt is felébredhet "magától". És akkor itt megint jön az, hogy vagy runnable vagy runnable + blocked + runnable állapotokon megy át. -
skoda12
aktív tag
Na, tehát a javadoc szerint: Csak olyan karakterek lehetnek a stringben, ami az adott számrendszerben használható. Ez magyarázza, hogy a "0x" prefix esetén miért nem működik. Ha csak "0" prefixet használsz, akkor működnie kell, most próbáltam egy online java compilerrel.
Ezt a 390-es dolgot nem értem. 10-es és 16-os számrendszerben értelmezve is simán beleesik a short intervallumába (a vessző nem tizedesvessző, hanem ezres határoló).
-
skoda12
aktív tag
Egyrészt stringeket nem ==-vel hasonlítunk össze, hanem equals() metódussal. Másrészt szerintem rossz stringeket próbálsz összehasonlítani, mert az első kód alapján a productString lenne az a "CM ...", de te valami AskDeviceName-t használsz helyette, ami nem látom hol kap értéket.
-
skoda12
aktív tag
válasz
Patrick76496 #9264 üzenetére
Rosszak a feltételeid. Pl első if-ben 164<=randmap és másodikban randmap>=165 átfedik egymást. Érdemes úgy szervezni a kódod, hogy a kisebb érték legyen mindig az operátor bal oldalán és nyílván csak a <= operátort használva, így elkerülhető az ilyen nehezen kiszúrható hiba. Vagy fordítva a másik operátorral, de mixelni nem szerencsés őket.
-
skoda12
aktív tag
válasz
smallmer #8796 üzenetére
Valószínűleg a kliens befejezi a futást, mire a szerver olvasná, hogy mit küldött. Tehát a szerveroldalon valami ilyesmi történhet az első futáskor
Socket s = server.accept();
// kliens csatlakozott, küldött valamit, leállt, ezért a socket lezárult
// ...
Scanner sc = new Scanner(s.getInputStream());
name = sc.nextLine();
// lezárt socketről olvasnál valamitMásodik futás azért lehet sikeres, mert a jvm addigra már "bemelegedett" (osztályok betöltődtek, cuccok a code cacheben, stb), így gyorsabb és azelőtt ér el az olvasásig, hogy a kliens lezárná a socketet.
De ezt csak így ránézésre mondom. Ki kellene íratnod a stacktracet (e.printStackTrace()) és akkor látni lehetne, hogy mi a pontos problémája. -
skoda12
aktív tag
válasz
Cathfaern #8621 üzenetére
Habár láttam az elmúlt években egy-két álláshirdetést, ahol előnyként meg volt jelölve az oracle vizsga megléte, szerintem nem érdemes foglalkozni a letételével. A hozzá szükséges tudás viszont legyen meg, mert állásinterjún tesztelni fogják a nyelvi elemek ismeretét.
Én ugyan letettem a 6-os vizsgát, de akkor még teljesen kezdő voltam és jól jött a CV-be, neked viszont már van fejlesztési tapasztalatod. Egyébként is lejár, azt hiszem 2 évente frissíteni kell.bundli: Két lehetőség van. Nem töltesz adatot a DB-be (create-table.sql gondolom csak táblát hoz létre) vagy nem commitolsz.
-
skoda12
aktív tag
válasz
Cathfaern #8616 üzenetére
A nyelv áttekintésére az oracle java vizsga könyve megfelelő. Nem foglalkozik az alapokkal, így nem kell oldalakon át rácsodálkozni a ciklusokra, meg az alapműveletek operátoraira és feltételezi, hogy már elboldogulsz valamelyik java IDE-ben. Viszont elég jó kis összefoglalót tartalmaz classokkal, lambdaval és néhány beépített alap könyvtárral kapcsolatban. Sok példakód van benne, ami kiemeli azokat a részleteket, amiken könnyű átsiklani egyébként. Van benne rengeteg "mit ír ki ez a kód" típusú trükkös kérdés megoldásokkal, amikkel állásinterjún is lehet találkozni.
Keretrendszerekkel kapcsolatban az adott technológia oldalán levő dokumentációt érdemes olvasni. Például a spring referencia tele van példákkal. Innen minimum a III. szekciót érdemes elolvasni, utána pedig azt a részt, amivel foglalkoznod kell a munkád miatt, mert amúgy nagyon nagy az anyag. A guides résznél pedig találsz futtatható githubos spring projekteket.
Hasonlóan, bármilyen más java frameworkot nézel ki magadnak (hibernate, guice, etc), a hivatalos oldalán jó eséllyel lesz olyan guide/tutorial/reference, ami alapján bele lehet tanulni. -
skoda12
aktív tag
Bambano ötlete szerintem nem elvetendő.
Ansible szerintem már kb bármilyen VCS-ből le tud szedni valamilyen tagelt vagy release branchen levő stabil configot minden hostra az alkalmazásod mellé property fájlként. Az alkalmazásaid pedig apache common configurationnel újraindítás nélkül újra tudják tölteni a fájlokat és triggerelni a listenereket, ha változás történik.Így tényleg nem kell +1 rendszert üzemeltetni, monitorozni.
-
skoda12
aktív tag
java.util.TreeMap első körben jónak tűnik szerintem, ha nincs szükség perzisztenciára. Ha kell perzisztencia, akkor valami lightweight DB-t kell keresni, van jó pár minden igénynek megfelelően. Vagy egy rendes nagy DB-t. Vagy ha kell HA is, akkor valami gridet, ami replikál a nodeok között. El lehet ezt bonyolítani.
-
skoda12
aktív tag
válasz
ToMmY_hun #8111 üzenetére
Ha klasszikus producer-consumer megvalósítás kell, tehát bedob egy thread egy üzenetet és valamelyik másik feldolgozza, akkor egy BlockingQueue / TransferQueue elég. Ha a két thread között egy üzenet cserét kell megvalósítani, akkor Exchanger. Stb.
Attól is függ, hogy ugyanazt az üzenetet minden threadnek fel kell dolgoznia vagy elég ha csak egy foglalkozik vele.
Ha mindenképp külső könyvtárat keresel, akkor disruptorra ránézhetsz, de ez csak annyit tud, hogy gyorsabban valósítja meg azt, amit a jdk beépített osztályaival amúgy is el lehet érni. -
skoda12
aktív tag
Volt több ilyen tárgyam is, ahol meg volt határozva keményen, hogy csak a tanár libjeit lehetett használni. Oop prog tárgyhoz írt prof valami horror libet millió template paraméterrel ellátva, aminek kb az volt a lényege, hogy nem lehetett ciklust írni, mert hogy akkor az nem OO. Az volt a terv, hogy a diák majd funktorokat ad át a lib osztályainak.
Bementem vizsgára, 30 sorban megoldottam a feladatot, majd megbuktattak egy for ciklus miatt. Ez ilyen, túl kell élni ezeket a tárgyakat.
-
-
skoda12
aktív tag
Egyrészt általában nincs referencia, mert amin dolgozott az vagy belső használatra készült vagy mindenféle titoktartási szerződések kötik az ember kezét vagy a kettő együtt. Ha lenne referencia, akkor sem derülne ki belőle, hogy mi az, amit a jelentkező csinált belőle, bármit hazudhat. Ugyanilyen alapon bármit írhat a CV-be is, ezért többen azt csinálják, hogy a CV-t nem olvassák el teljesen, csak annyi érdekes belőle, hogy hány év tapasztalata van az embernek. Ez alapján belövik, hogy nagyjából mit várnának el a jelentkezőtől és lemérik kérdésekkel, hogy mit tud abból, amire a cégnek szüksége van.
Majdnem teljesen mindegy mit dolgozott előtte a jelentkező, mert ha űrhajó vagy atomerőmű vezérlőt fejlesztett, akkor azt a tudást úgysem tudja kihasználni a cég, ha meg 1000. számlázót / webshopot fejlesztett, attól még lehet, hogy le tud fejleszteni komolyabb dolgokat.
Másrészt a fenti alap kérdésekkel is ki lehet dobatni a legtöbb seniort interjúról. -
skoda12
aktív tag
Ez itt kicsit off, van külön álláskeresős topic, de röviden: Szinte bármely pályakezdő/junior állásra jelentkezhetsz nyugodtan, úgy tudom csak a nokia veszi komolyan a hirdetésbe kiírt diploma követelményt. Eleve sokszor úgy írják ki a követelményekhez, hogy felsőfokú szakirányú végzettséget várnak, az OKJ fejlesztő képzés meg felsőfokúnak számít, nem?
Elég ritka, amikor a követelményeknek 100%-ban megfelelő ember jelentkezik egy állásra, kb 80%-os match már elég ahhoz, hogy felvegyenek. -
skoda12
aktív tag
válasz
norbert1998 #7428 üzenetére
Azért metódusokra szétszedheted. Nem lesz rövidebb, de így legalább kisebb-nagyobb kód blokkokat el tudsz nevezni és akkor már érthetőbb lesz a kód.
-
skoda12
aktív tag
válasz
PumpkinSeed #7352 üzenetére
Miért akarsz közös tárolóba tenni olyan elemeket, amiknek nincs használható közös őse?
Amúgy ha mindenképp erre kényszerítenek, akkor ArrayList<Object>-be pakolhatod, erre elvileg nem dob warningot sem, csak hát nem valami hasznos így, mert visszaolvasásnál castolni kell majd. -
skoda12
aktív tag
válasz
norbert1998 #7315 üzenetére
Ez picit bonyolultabb. Mint írtam, a standard kimenetre írandó szöveg elvileg bufferelt, azaz akkor kerül ténylegesen kiírásra, ha a buffert űrítik, pl mert megtellik, vagy lezárják a streamet vagy pl újsor karakternél. Standard errornál ez nincs. Illetve a fenti példád is más, mert az új sornál űrítik a buffert, így elvileg a sorrend adott kellene legyen.
Valószínűleg az lesz a háttérben, hogy amikor futtatod az IDE-ből a programot, akkor az IDE két külön threaden olvassa a két streamre kiírt szöveget és az nem befolyásolható, hogy ezek a threadek mikor milyen sorrendben aktiválódnak. -
skoda12
aktív tag
válasz
norbert1998 #7313 üzenetére
Bocs, benéztem, új sornál űríti a buffert.
Két különböző streamre írsz, csak egy ablakban látod, de a streamek feldolgozásának sorrendje nem garantált szvsz, pl IDEA vagy eclipse termináljában. Bevallom nem tudom, hogy garantált-e a sorrend, ha cmd-ből futtatod, de nem is nagyon használom a sysout/syserr párost, mindig valammi loggerrel mentünk fájlba kimenetet. -
skoda12
aktív tag
válasz
norbert1998 #7311 üzenetére
Sysout bufferelt, syserr nem.
-
skoda12
aktív tag
válasz
Oppenheimer #7151 üzenetére
Tipikusan akkor használják ezt a kifejezést, amikor valaki olvas valami újat és minden problémát ezzel akar megoldani.
Persze értem, hogy te most csak tanulási célok miatt próbálgatod. -
skoda12
aktív tag
válasz
WonderCSabo #6871 üzenetére
Nem írta a feladat, hogy automatikusan működjön. Legyen public a static számláló és akkor lehet kézzel csökkenteni nullozás után.
-
skoda12
aktív tag
válasz
kornyiktamas #6716 üzenetére
API doc nem jó?
Szerk.: ok, megelőztek
-
skoda12
aktív tag
válasz
aronkatona92 #5778 üzenetére
-
skoda12
aktív tag
-
skoda12
aktív tag
válasz
Spam123 #4754 üzenetére
SCJP/OCJP vizsga tele van ilyenekkel, interjun is kaptam hasonlokat, szoval nem neveznem neheznek. Inkabb figyelmetlensegi hibat konnyu veteni ilyeneknel. Persze attol fugg, hogy a 4 * 90 perces eloadasaidon mit adtak le pontosan. Ha normalisan el lett mondva, hogyan mukodik a serializalas, transient, static akkor nem szabadna gondot okoznia. Bar gyanitom ez nem tortent meg, mert akkor nem raktad volna ide ki a peldat
-
skoda12
aktív tag
válasz
Oppenheimer #4400 üzenetére
Remlik, hogy apache batikban mintha lett volna erre support.
-
skoda12
aktív tag
válasz
Taoharcos #3786 üzenetére
Az elottem szolokhoz meg annyit tennek hozza, hogy ha csak a contains()-t hasznalod egyelore, akkor ArrayList helyett erdemes lenne LinkedHashSetet hasznalnod. Ez a sorrendet is tartja es hatekonyabb a contains() hivas. + a collectionoknek adj meg generic tipust is <> koze.
-
skoda12
aktív tag
Na a kovetkezo a helyzet. Elolvastam a kodot is, amit fentebb linkeltel es tobb problema is van.
Eloszor is ugyanarrol a threadrol irsz es olvasol adatbazist, amelyikrol GUI elemeket modositasz. A GUI tipikusan nem thread safe, a hozza tartozo elemeket (buttonok pl) a GUI threaden kell modositani. Ezen a threaden pedig nem kellene blokkolo muveleteket pl DB kezelest inditani, mert megakad az egesz felulet tole.
A masik, hogy a ResultSet-en azutan hivod meg a next() metodust miutan meghivtad a close() metodust (executeUpdate mar nem ad vissza uj ResultSetet igy a regi lezartat fogod hasznalni tovabb) es ezert kapsz "ResultSet not open. Operation 'next' not permitted." hibauzenetet.
A harmadik pedig, hogy konnyebb dolgod lenne, ha a string osszefuzogetes helyett PreparedStatementet hasznalnal, ha mar mindenkepp JDBC-vel kell megoldani a feladatot es nem hasznalhatsz valami ORM frameworkot.
-
-
skoda12
aktív tag
Kb mindegyik jo, amit fentebb ajanlottak. En speciel JSF-et szeretem, mert ha ranezel egy [richfaces] vagy [primefaces] showcase-re, akkor latod, hogy nagyon bonyolult ajaxos komponenseket is berakhatsz az oldaladba 5-10 sor koddal. Hatranya viszont, hogy altalaban oriasi DOM fakat general, igy lassu lehet.
-
skoda12
aktív tag
1. Gyors probalgatasra jo a run-app, de vigyazni kell vele, mert attol meg, hogy o tudja futtatni a projektet, egy webcontainerben meg nem biztos, hogy futni fog. mvn grails:war-ral lehet war fajlt kesziteni es azt deployolni egy tomcatre pl. Ekkor jot elo nalunk is a gubanc, hogy csomo felesleges dolgot bepakolt a war fajlba alapbol. Pl servlet apit is, ami teljesen felesleges, mert minden webcontainer classpathjan ott van es emiatt be sem toltodik a program.
Amugy fejlesztokornyezetnek eclipse java ee verzioja pl jo, csak market placerol meg fel kell tenni a grails es groovy plugineket.2. Ezt nem tudom. A view layert megirtuk gwt-ben, igy olyan sorrendben dobaltunk ra controlokat, amilyenben akartunk.
-
skoda12
aktív tag
1. Elegge bugos szegeny. Pl rendszeresen elofordul, hogy ugyanazt a projektet valtoztatas nelkul ketszer egymas utan nem lehet leforditani / futtatni. Ilyenkor ivy cache es a project alatti plugins mappa torlese utan ujra fordul a project.
2. Ivyt hasznal dependency managementhez. Ez nagyon jo, csak ha nalunk mavenes a projekt, akkor feleslegesnek erzem magamra eroltetni ivyt is. Allando kavarodas van, hogy mi kerul BuildConfig.groovy-ba es mi a pom.xml-be.
3. Groovy nagy projektre nem alkalmas. Kis scriptekhez tok jo, pl hogy automatizalt modon hivogassunk jmx vagy rmi metodusokat. Egy csomo mindent elfed a grails es a groovy. Sok helyen osztalyszintu valtozok def kulcsszoval vannak definialva es a grails a hatterben odavarazsol valami objektumot a helyukre. Ami azert baj, mert itt nem latod a tipusat es ezek mar nem String vagy integer valtozok, hanem service objektumok, ahol fontos lenne latni, hogy mi mitol fugg legalabb interface szinten.
4. A kodgeneralasi funkciojanak nem latom ertelmet. Gyakorlatilag annyit general le, mintha eclipseben kivalasztanam a new class funkciot.
5. Nem a programozo hasznalja a frameworkot, hanem a framework hasznalja a programozo kodjat. Nekem ez sosem tetszett.
6. Osszessegeben belassitotta a fejlesztesi folyamatot. -
skoda12
aktív tag
"Error: could not find or load main class D:\.......jar"
Nem minden jar futtathato. Sot, tipikusan a legtobb jar nem futtathato es valoszinuleg te is ilyet kaptal. A masik lehetoseg, hogy az alkalmazas keszitoje rosszul csomagolta be a programot es nincs beallitva main class a manifestben. Ilyenkor ugyan meg elindithatod a programot, de tudnod kell a main class pontos nevet hozza.
-
skoda12
aktív tag
válasz
bucsupeti #3176 üzenetére
"A kérdésem az hogy a felvázolt architektúra szerintetek rendben van? Illetve jó megoldás-e az egyetlen session használata?"
Mint mondtam, a Session inkonzisztens allapotba kerulhet, igy nem erdemes csak egyet hasznalni. Ez a javadocban is le van irva.
A masik, hogy a Session nem thread safe, igy leginkabb a session-per-request megoldast szoktak kovetni. De ez nem azt jelenti, hogy ha egy muvelethez tobb select / insert /akarmi kell, akkor mindegyikhez letre kellene hozni egy sessiont.
A statikus dolgokat felejtsd el, unit tesztelhetetlen. Ritkan van ertelme (konstants, logger, ...), de alapvetoen csak thread safety problemakhoz vezetnek. Jelenleg is tobb kulonbozo metodusod dolgozik egy statikus nem thread safe peldanyon, tehat neked kell gondoskognod rola lockolassal vagy valami mas modon, hogy egyszerre csak egy valaki hasznalja. -
skoda12
aktív tag
válasz
bucsupeti #3170 üzenetére
Kod nelkul nehez megmondani, hogy mi a baj, de nem nyelsz el egy catch agban egy exceptiont, ami nincs kiloggolva?
"Új session-t indítok minden egyes lekérdezésre"
Ez anti-pattern. Mivel desktop approl van szo, gondolom csak egy user hasznalja egyszerre. Boven eleg akkor nyitni uj sessiont, ha az elozo inkonzisztens allapotba kerul.
-
skoda12
aktív tag
válasz
Superhun #3139 üzenetére
"
"a String az egy olyan állandó, amelynek értéke futás közben megváltozhatatlan"Valójában csak a mérete, a karaktereket módosíthatjuk benne a charAt metódussal, O(1) időben."
A String immutable, nem modosithatod, a charAt pedig pont visszaad egy karaktert es nem modositja azt.
"Valójában úgy áll a dolog, hogy a kódban definiált Stringek (String str = "abc") az úgynevezett literal pool-ban lévő elemekre fognak hivatkozni, ami a heap-től független, így a GC-től is."
Java 7-tol az interned stringek is atkerultek a permanent generationbol a young es old generationbe tehat nem igaz, hogy a heaptol fuggetlenek.
-
skoda12
aktív tag
válasz
pakriksz #2814 üzenetére
Hibernate oldalan az osszes guide jo. Nem is ertem, hogy az adott lib hivatalos oldalan kivul miert kellene mashonnan osszevadaszni tutorialokat. Most nem tudom, mi a problemad, osszesen 1 xml fajt kell irni es semmi olyan nem kerul bele, ami miatt a lenyeg elveszne. Sima pebkac.
-
skoda12
aktív tag
válasz
pakriksz #2406 üzenetére
Pengen kell mukodnie annak a Collections.synchronizedList()-tel is. Ennek ellenere megsem ajanlanam ezt a megoldast, a szarmaztatas mindig csak vegso menedek legyen. Neked az kell, hogy a szalak egy Set-et allitsanak ossze, igy nem lesz duplikacio. Ezutan pedig keszithetsz egy listat a Set elemeibol.
-
skoda12
aktív tag
1.
A ListaElem osztaly tartalmaz egy referenciat egy masik ListaElem tipusu objektumra, annak meg van elem nevu valtozoja, amit el tud erni a fenti hivatkozassal.
2.
A Hasonlithato kodjat nem talalom, de gondolom ugy mukodik, mint a Comparable. Olvasd el a Comparable interface dokumentaciojat, abban leirjak szepen, hogy mikor mit kell vizsgalni.
3.
Azert kell az a sor, mert nelkule mindig ugyanazt az elemet adna vissza a metodus.
-
skoda12
aktív tag
Character.digit(ch, 10) -t hasznald konverziohoz, ahol ch char tipusu.
Elozore pedig: A Scannernek van nextDouble metodusa is. Nyilvan a streamet valahogy le kell zarni, erre az enter nem eleg. Ha nem akarod tulbonyolitani, akkor beolvashatsz egy sort egy String-be es ebbol olvasod ki Scanner-rel a double ertekeket.
-
skoda12
aktív tag
1.
double pi = 3.14;
System.out.printf("%.0f\n", pi);2.
A 9.0 literal double tipusu, ami a legnagyobb tipus a (9.0 / 5) * celsius + 32 kifejezesben, ha celsius float. Emiatt az eredmeny is double, amit castolas nelkul nem tudsz float-ba belerakni.
9.0f viszont float tipusu.3.
A Scanner osztalyt hasznald.
-
skoda12
aktív tag
1.
Nyilvan rengeteg kulonbseg van long es Long kozt.
Long egy referencia tipus, long egy primitiv tipus. Ha ranezel a Long dokumentaciojara, akkor latod, hogy tele van konverzios metodusokkal, amik jol jonnek, ha nem akarsz castolni pl.
Masreszt Long immutable, mig long nem.
Templatek megadasanal csak referencia tipust hasznalhatsz, tehat nem irhatsz olyat, hogy List<long>.
Ettol fuggetlenul elelmiszerpult.get(vonalKod), akkor is mukodik ha vonalKod long tipusu, ekkor ugyanis egy Long-ba lesz becsomagolva autoboxingnak koszonhetoen.2.
Az is teljes erteku megoldas lehet, ha csak egy this() hivodik meg a konstruktorodban. Mondjuk Hashtable tipikusan nem az a tipus, ami neked kell. -
skoda12
aktív tag
// AFrame.java
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class AFrame extends JFrame {
public AFrame() {
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JLabel label = new JLabel("AFrame");
add(label);
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
BFrame bFrame = new BFrame();
bFrame.setVisible(true);
}
});
}
public static void main(String[] args) {
AFrame aFrame = new AFrame();
aFrame.setVisible(true);
}
}
// BFrame.java
import javax.swing.JFrame;
import javax.swing.JLabel;
public class BFrame extends JFrame {
public BFrame() {
setSize(800, 600);
JLabel label = new JLabel("BFrame");
add(label);
}
}Tudom, hogy gány a kód, de példának jó lesz.
-
skoda12
aktív tag
válasz
klayton#1 #2042 üzenetére
Feltételezem, hogy csak elírtad a fájlnevet, amikor a postot írtad (mert sikeresen fordult a gépeden). A probléma az, hogy a PropertyFileReader nincs rajta a classpathon. Próbáld így windowson (linuxon ";" helyett ":"):
java -classpath xom-1.2.6.jar;. PropertyFileReader
-
skoda12
aktív tag
válasz
eziskamu #2014 üzenetére
Magyar anyagokat felejtsd el, évekkel le vannak maradva. Rákeresel googleben, hogy java ee 5 tutorial és java ee 6 tutorial. Az oracle honlapját fogja elsőnek kidobni. Ott vannak példakódok meg magyarázat is. Ha ezeket végignézed, akkor már tudsz majd magadtól készíteni egyszerűbb projekteket. Ant vagy maven munkahelyen is lesz, nem árt egyikkel megismerkedni, egyébként is megkönnyítik az ember életét.
-
skoda12
aktív tag
válasz
eziskamu #2011 üzenetére
Hibernate honlapján van 2 vagy 3 pdf, azt szedd le és olvasd át.
EE-n belül mit szeretnél tanulni? Viszonylag gyorsan fel lehet szedni annyi tudást, hogy bármelyik részéhez hozzá tudj nyúlni, de érdemes specializálódni, pl Webservices + XML APIs vagy EJB, stb. JSF-be már ne ölj sok energiát, vannak jobb alternativák. JPA mindenképp kelleni fog, mondjuk Hibernate a legelterjedtebb, de Eclipselinkkel is használhatod. -
skoda12
aktív tag
válasz
x123456 #1937 üzenetére
Bár nem kifejezetten javas fórum, de van rajta pár javahoz értő: hup
Ez meg nem igazán forgalmas: javaforum
Egyébként swinges kérdésekre ezeken a helyeken sem kapsz túl sok érdemi választ. Swing, AWT mind halott, amire ezeket az apikat használták, abban már a .NET vonal erősebb. Ami java vonalon pörög az a spring, hibernate, seam, richfaces, jsp, jsf. A többibe szerintem ne ölj túl sok energiát. -
skoda12
aktív tag
válasz
x123456 #1883 üzenetére
"Ezt a metódust úgy kell értelmezni, hogy van egy U paramétere, valamint egy olyan, ami a List generikusból, azon belül kizárólag a Box generikus valamely fajtájából származik és megkötés, hogy a Box "altípusa" (nem tudom, erre mi lenne a helyes kifejezés) meg kell egyezzen az első paraméter típusával/osztályával?"
Igen, valamilyen Box-okat tartalmazó listát vár. Egyébként java.util.List-ként találod meg a listát, ami egy interface. Az implementációi pedig szintén a java.util csomagban találhatók.
-
skoda12
aktív tag
válasz
x123456 #1881 üzenetére
Ahogy a linkelt oldalon is látható, a Box egy generikus osztály és tartalmaz t névvel egy változót:
...
private T t;
...
Az add függvény ennek a t-nek adna értéket. A fillBoxes pedig átvesz egy listát, amiben Boxok vannak és minden Boxhoz hozzáadja u-t. De nyilván tudnia kel, hogy mi a típus. Ez lesz az a típus, amit U helyére írsz be. -
skoda12
aktív tag
válasz
x123456 #1874 üzenetére
Viszonylag gyakran előkerülnek. Gondolj pl a tárolókra, mint a Vector, HashMap, LinkedList, ... vagy pl TypedQuery JPA-ban. De saját generikus class-t vagy interface-t is sokszor kell írni. Ezekkel a generikusokkal megspórolható egy csomó castolás, így gyorsabb a program.
-
skoda12
aktív tag
válasz
x123456 #1868 üzenetére
Javat szerintem ne erőltesd telefonokon. Ha ilyen irányba akarsz elmozdulni, akkor döntened kell, hogy Iphone vagy Android. Iphone-nal nincs tapasztalatom, androidra viszont elég gázos a fejlesztés. Verziónként külön sdk, gagyi programnyelv és api, nincs fix programbelépési pont csak repkednek az események, xml descriptorok, bugos emulátor (de csak hogy könnyebb legyen a fejlesztés) ... Szóval elég hulladék. Lehet, hogy mint end user, nagyon látványos tapogatni az ikonokat a telefonon, de fejleszteni rá ...
-
skoda12
aktív tag
válasz
x123456 #1858 üzenetére
Nézd meg, hogy tudnál külső osztályból létrehozni egy másik osztályba ágyazott osztályból egy példányt.
package javaapplication1;
class A{
class B{
}
static class C{
}
}
public class Main {
public static void main(String[] args) {
A a = new A();
A.B b = a.new B();
A.C c = new A.C();
}
}Mint láthatod, ha nem static nested classról van szó, akkor kell egy példány először a beágyazó osztályból. Ezért b által hivatkozott objektum kapcsolódik a által hivatkozotthoz.
--------------------------------------------------
Az interface-szes problémára: Egy interface minden függvénye impliciten public elérésű. Felülírási szabály szerint pedig nem szűkítheted egy függvény elérését (ezesetben publicról defaultra). -
skoda12
aktív tag
Attól függ. Ha OOP szemléletet akar valaki felszedni, akkor sok kódot kell olvasni. Ezután ha már megvan a megfelelő absztrakciós készség, akkor jöhetnek a design patternek. Ha viszont algoritmizáló készségre vonatkozik a kérdés, akkor sokat kell gyakorolni acm stílusú versenyfeladatok kódolásával.
-
skoda12
aktív tag
válasz
x123456 #1842 üzenetére
Ha a sun-os tutort olvasod, akkor gondolom nincs gond az angol szakirodalommal sem. Ebben az esetben pedig a SCJP study guide az alapmű. Ha pedig valami spéci API érdekel, akkor arra külön kell keresni.
-
skoda12
aktív tag
válasz
x123456 #1828 üzenetére
Írok egy példát és abból le fog tisztulni:
package javaapplication1;
class A{
public static void staticF(){
System.out.println("staticF() A");
}
public void f(){
System.out.println("f() A");
}
}
class B extends A{
public static void staticF(){
System.out.println("staticF() B");
}
public void f(){
System.out.println("f() B");
}
}
public class Main {
public static void main(String[] args) {
A a = new B();
B b = new B();
a.f();
a.staticF();
b.f();
b.staticF();
}
}Kimenet:
f() B
staticF() A
f() B
staticF() B -
skoda12
aktív tag
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Xiaomi Redmi 9A 32GB Kártyafüggetlen 1Év Garanciával
- Apple iPhone 12 Pro Max 128GB Kártyafüggetlen 1Év Garanciával
- Samsung Galaxy S23PLUS 256GB Kártyafüggetlen 1Év Garanciával
- Dell G3 Gamer laptop (2TB SSD, 32GB Ram, 4GB Videókártya, FullHD kijelző, szép állapotban)
- Thinkpad T14 Gen5 14" FHD+ IPS Ultra 5 135H 16GB 512GB NVMe ujjlolv IR kam gar
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! ASUS TUF Z390-PRO GAMING alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! MSI B450 TomaHawk R5 3600 16GB DDR4 512GB SSD RX5500 XT 8GB Rampage SHIVA TT 530W
- Azonnali készpénzes AMD Radeon RX 5000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged