- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- gerner1
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- djculture: Az elvileg már senkinek nem kellő HDD-k ára is egekbe emelkedett 4 hónap alatt
- eBay-es kütyük kis pénzért
- Gurulunk, WAZE?!
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
skoda12
aktív tag
java.awt.Color.ORANGE
public static final Color ORANGE
The color orange. In the default sRGB space.MS Paint-ban milyen pixel-t kell ehhez csinálnom, hogy egyezzen?
ARGB 255,255,200,0 pixel egyezik
de miért? ezt sehol nem találom specifikálva?
vagy ki kell debuggolni minden egyes színt?vagy más környezetben más az értéke?
bizonyos környezetben a narancs gyümölccsel egyenlő a default zöldséges standján a piacon?
Megnézed a jdk forrásában, hogyan van definiálva és látszani fog, hogy (r, g, b, a) = (255, 200, 0, 255) értékeket használnak.
-
skoda12
aktív tag
A new ArrayList nélkül olyan listát kapnál, aminek nem módosítható a mérete.
-
skoda12
aktív tag
Részvétem. Mindig nehéz azokkal, akik csak a pénzért csinálják.
Azt mondjuk nem értem, hogy ki másnak kellett volna megtalálni a PR-ben elrejtett dolgokat. Aki hozzáfér a PR-hez, az megtalálhatja. Mondjuk ha csak 1 ember rivjúzik a csapatban, akkor kézenfekvő, hogy ki fogja megtalálni a hibákat.
Az volt a problémájuk, hogy a PR-be már eleve nem kellett volna kimennie a problémák egy részének, hanem a devnek kellett volna valamilyen szinten átnéznie a saját kódját mielőtt kiküldi reviewra. Senior devtől kevesebb ilyen jellegű problémát vártak.
-
skoda12
aktív tag
Ezek szerint akkor olyan dolgokba kötöttél bele, amibe felesleges lett volna?
Ha nem, akkor most hagyod elrothadni a kódot?
Mindezt azért, mert a csapatod tagjai nem alkalmazzák a közösen elfogadott kódolási irányelveket. (Gondolom, közösen fogadtátok el. Sőt gondolom, időnként felül is vizsgáljátok azokat.)
És azért is, mert páran nem elég érettek a felnőtt viselkedésre? Akik a tévedésekre való rámutatást nem fejlődési lehetőségnek, hanem személyes sértésnek veszik.Mindezekből következően saját magad és voltaképp még a crybaby csapattársaidat is megszívatod az egyre jobban degradálódó kóminőséggel. Megéri? Azon csapattársaid, akik jó minőséget állíta(ná)nak elő, őket is a gányolás keserédes mezejére száműzöd ezzel. Nem?
Amúgy abszolút egytértek a mondandód első felével, én sem vagyok büszke az 5 éve írt kódomra, hát még az 1997-ben írtakra.
Viszont ez azt is jelenti, hogy ma már sokkal jobbat tudok alkotni, és holnap mégjobbat fogok tudni. A sun is biztosan jobbat írna ma, mint, amit most látunk belőle.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
Még sosem néztem konkrétan ezt a kódot, de "gyönyörű". Néha van olyan érzésem, amikor a runtime forrását túrom, hogy a nagy részét juniorok vagy biorobotok írják. Van egy partnerünk, aki szokott kódot auditálni, és az elemzéseik szerint botrányos minőségű a nagyobb frameworkök forrása (is)
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
Sziasztok! CSV akarok JSON - ba alakitani.
CSV:1;Reka
2;Zita
3;Nora
4;Simon
5;Elek
6;Geza
7;Ella
8;Kolos
9;Antal
10;ViolaA ket metodus amit hasznalok:
public static List<Map<?, ?>> readObjectsFromCsv(File file) throws IOException {CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();CsvMapper csvMapper = new CsvMapper();MappingIterator<Map<?, ?>> mappingIterator = csvMapper.reader(Map.class).with(bootstrap).readValues(file);return mappingIterator.readAll();}public static void writeAsJson(List<Map<?, ?>> data, File file) throws IOException {ObjectMapper mapper = new ObjectMapper();//mapper.enable(SerializationFeature.INDENT_OUTPUT);mapper.writeValue(file, data);}
Igy hivom meg oket:List<Map<?, ?>> data = readObjectsFromCsv(studentFile);writeAsJson(data, studentJson);A gond az hogy ezt a json-t gereralja:
[
{
"1;Reka": "2;Zita"
},
{
"1;Reka": "3;Nora"
},
{
"1;Reka": "4;Simon"
},
{
"1;Reka": "5;Elek "
},
{
"1;Reka": "6;Geza"
},
{
"1;Reka": "7;Ella "
},
{
"1;Reka": "8;Kolos "
},
{
"1;Reka": "9;Antal"
},
{
"1;Reka": "10;Viola"
}
]Vagyis veszi az elso sort es beteszi kulcsnak az osszes tobbi sorhoz

Mi lehet a gond?
Koszi!Rosszul használod a CsvSchemat. Pl nincs header a fájlodban, de withHeader() metódust hívsz. Aztán honnan tudná szegény, hogy te melyik oszlopot milyen kulcshoz akarod mappelni a jsonban? Itt le van írva szépen, hogy milyen lehetőségeid vannak a javításra.
-
skoda12
aktív tag
tökéletesen leírtad, hogy mi a baj egyes java architektekkel.
elk meg logstash meg elastic meg kibana meg a franc se tudja hány cuccot felrakni azért, hogy bekerüljön egy mért érték egy adatbázisba, az durva tévedés. mindegyik szoftver bugos. ha telerakod szoftverrel a rendszert, akkor teleraktad hibával is.amit két sorban meg lehet írni shellben, ahhoz nem rakunk fel akkora architektúrát, hogy csak a0-s lapra lehet kinyomtatni. és ha még valaki a dockert is elkezdi emlegetni, sikítani fogok.
#10802-ben már volt szó dockerről
-
skoda12
aktív tag
Nem fogalmaztam egyértelműen, mert nekem elégséges a beágyazott derby is. Közben kiszenvedtem, hogy a maven projectben már függőségként kell a megfelelő .jar -t hozzáadni. (régebbi videókban lib)
A connection teszt továbbra is kivétel ad.
Connection conn = DriverManager.getConnection("jdbc:derby:c:\\Users\\User1\\JavaDerbyDB\\test;create=true");Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/derby/shared/common/security/SystemPermissionMi a baja ennek a hívásnak?
A derbyshared libet is add hozzá a maven projekthez.
-
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
Ismét ezzel táblázatos gyakorló projektemmel van gond, 2 napja próbálkozok mindennel IS, többször újraírtam a kérdéses részt, de nem akarja az igazat
Van 1 textfield, ahova vonalkód olvasóval lehet bevinni az adatokat, a vonalkód olvasó az olvasás után ENTER-t "üt".
A kód szépen megtalálja, végrehajtja a megfelelő utasításokat a saját gépemen amin írom (i7 3.7Ghz + 12GB ram). A probléma akkor következik, mikor egy lassú pentiumos laptopon futtatom, hibajelenség:
- 5x olvastam le ugyanazt a kódot egymás után, és össze vissza dobál ✔-t és ✖-et ovlasás után.
- sokszor elkezd ugrálni a táblázatban még azelőtt mielőtt érkezne az Enter... (nincs más key event hozzárendelve)Mivel teljesen random viselkedik ugyanazon vonalkód esetében is már csak arra tudtam gondolni, hogy "túl" gyors neki az olvasás, vagy nem elég hatékony a kódom, más logikus magyarázatot nem találtam..
De hátha ti jobban átlátjátok
Az Enter után keresem ki, hogy melyik áruról van szó:
private void text_searchKeyReleased(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
indextalalat = -2;
zText.setLength(0); //Stringbuildert használok, hogy megmaradjon az utolsó érték a field ürítése után is.
zText.append(text_search.getText());
for (int i = 0; i <= tabla.getRowCount()-1; i++) {
if (tabla.getValueAt(i, 2).toString().replaceAll("\\s+","").equals(text_search.getText())) {
indextalalat = i;
break;
}
}
if (indextalalat != -2) {
text_search.setText(null);
talalatLabel0.setText("✔");
tabla.setRowSelectionInterval(indextalalat, indextalalat);
tabla.scrollRectToVisible(new Rectangle(tabla2.getCellRect(indextalalat, 0, true)));
setTexts();
} else {
text_search.setText(null);
talalatLabel0.setText("✖");
tabla.removeColumnSelectionInterval(0, tabla.getColumnCount()-1);
}
}
}Ha nem konzisztensen jó / rossz eredményt kapsz, akkor valószínűleg valami threading issue lesz. Ezeket a swinges / awt-s elemeket csak az event dispatcher threadről szokták frissíteni, mert a többségük nem thread safe.
-
skoda12
aktív tag
-
skoda12
aktív tag
Sziasztok.
Adott a következő kérdés: Egy szál egy objektum wait() metódusát készül végrehajtani hiba és exception nélkül. A metódus rendben visszatér. Sorrendben milyen állapotokat vesz fel a szál wait meghívásától kezdve a metódus visszatéréséig?
Most ez ugye: Runnable, Waiting, Blocked, Runnable. Kérdés, hogy ugye a notify hatására megy át a blocked-ba, ekkor még nem tért vissza a wait? Illetve a második runnable-t oda kell írni a végé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
Rossz az output, ezért kapsz csak 57%-ot. Már az első sor végén van egy felesleges szóköz. Utána amikor kiíratod az eredményt, a formátum locale függő. Nálam például a tizedesjegyek nem vesszővel vannak elválasztva, hanem ponttal.
-
skoda12
aktív tag
Sajnos már nem volt idő szerkeszteni az előző hsz-t...
Arra rájöttem, hogy a 0x kezdés nélkül képes konvertálni, de egy másik hex alapú (068E) számot már nem.
Aztán néztem, és az eszközk ID-jai elé a függvény generátora betolhat töltő nullákat (ezért az első nulla sem kell, elég 3 karakter, csak 4 digitet akar megjeleníteni (nem tudom mért)).Ha simán a 68E-t konvertálom, akkor megint jó.
Már csak azt nem értem, hogy hogy fér el egy 16 bit-es short-ban (min -32,768 max 32,767 (inclusive)) a 390-es érték.System.out.println(info.getProductId());
Mert erre a console a 390-et adja. (ez már más érték, mint az előbb hozott string/short dolog)A println függvény játszik valamit a kiírási értékkel?
.45! Igen az elgépelés, a valódi kódban jól vannak elnevezve!

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
A parseShort()-nak meg tudod mondani, hogy 16-os számrendszerben van megadva a szám.
-
skoda12
aktív tag
Sziasztok!
Szeretnék egy kis segítséget kérni egy dologban. Netes HID eszköz include-jából szeretnék adatot nyerni.
https://github.com/nyholku/purejavahidapiVan egy ilyen kódom:
import purejavahidapi.*;
List<HidDeviceInfo> devList = PureJavaHidApi.enumerateDevices();
for (HidDeviceInfo info : devList);
System.out.printf("VID = 0x%04X PID = 0x%04X Manufacturer = %s Product = %s\n",
info.getVendorId(),
info.getProductId(),
info.getManufacturerString(),
info.getProductString(),Erre ezt az output-ot kapom:
VID = 0x046A PID = 0x0023 Manufacturer = null Product = null
VID = 0x12CF PID = 0x0186 Manufacturer = COOLER MASTER Product = CM STORM INFERNO GAMING MOUSEAzt szeretném elérni, hogy megkeressen egy eszközt (példának okáért a CM STORM INFERNO GAMING MOUSE nevűt, majd a VID és PID értékeket adjuk tovább egy változónak (hogy tudjam majd feldolgozni a bejövő adatokat)).
Ezzel próbálom szűrni a cikluson belüli végigfutást (mikor mit csináljon), de sikertelenül.
if (info.getProductString() instanceof String /*mert néha null értékű, és hibát dob*/ && AskDeviceName=="CM STORM INFERNO GAMING MOUSE") {
System.out.println("mach");
VendorID = info.getProductId();
ProductID = info.getProductId();
} else {
System.out.println("nem jó az if");
}Azt már tudom, hogy tuti String az adat, és a mérete is konstans, de mégsem talál egyezést a beírt adatommal.
Mit rontok el?
Szándékosan nem az ID-kkal azonosítom, mert a user interface grafikus felületen a neve alapján választjuk majd ki, hogy melyik eszközt akarom használni, amit majd a gép az ID-k alapján azonosít.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
Üdv!
Egy kis segítséget szeretnék kérni. Egy játékot szeretnék írni java nyelven, viszont a pálya legenerálásával gondjaim akadtak. Azt szeretném, hogy a pálya legalább fele üres terület legyen, a többi részén pedig 5 különböző dolog megfelelő előfordulási valószínűséggel.
A pálya egy 100x100-as 2D-s tömb lenne. A gond az, hogy mindenhova csak üres területet ('_' karakter) és fákat ('T' betű) generál, és utóbbiból is úgy néz ki, hogy túl sok van.Így néz ki a kódrészlet, ami a pálya generálását csinálja:
for(int i=0; i<100; i++){
for(int j=0; j<100; j++){
Random randm=new Random();
randmap=randm.nextInt(265)+0;
if(randmap>=133 && 164<=randmap){
map[j][i]='T';
}else if(randmap>=165 && 174<=randmap){
map[j][i]='Q';
}else if(randmap>=175 && 216<=randmap){
map[j][i]='w';
}else if(randmap>=217 && 258<=randmap){
map[j][i]='y';
}else if(randmap>=259 && 265<=randmap){
map[j][i]='*';
}else{
map[j][i]='_';
}
}
}Tudna valaki segíteni, hogy hogy lehetne ezt megoldani? Előre is köszönöm a segítséget!

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
Üdv!
Egy aprócska problémám akadt JFrame/JPanel-el kapcsolatban.

Adott egy JFrame, egy JPanellel. A program futása során ha szükséges hozzá ad képet tartalmazó JLabeleket a panelhez.
A probléma csak az, hogy ezek a labelek csak akkor jelennek meg ténylegesen, ha az ablakot akár egy pixellel is nagyítom vagy kicsinyítem.

Frame: Null layout
Panel: az összeset kipróbáltam, egyikkel se jó, de igazából csak a flow layout jo nekem, ami szépen egymás után pakolja a képeket (labeleket)Valami tipp?

Swing UI anomáliák akkor fordulnak elő többnyire, ha nem a UI threaden piszkálod a komponenseket.
-
skoda12
aktív tag
-
skoda12
aktív tag
Szerk: Semmi, benéztem, megzavart a max elnevezés használata nem maximális kezdőelemre ...
Mindenesetre a hibákat bedobhatnád egy hozzászólásban, függettlenól attól, hogy fordítási vagy futtatási háról van szó.
-
skoda12
aktív tag
Nem. Hiba esetén egy exception dobódik általában, amit vagy lekezelsz vagy nem és akkor leáll az alkalmazásod jó eséllyel. Pl ha a függvényed egy adott x-re 0-val osztana, az biztos exceptionnel végződik.
-
skoda12
aktív tag
Sziasztok,
sajnos elakadtam egy feladatnál. Server-Client kommunikációban van valami hiba.
Server.java:
package nagybead;
import java.net.*;
import java.util.*;
import java.io.*;
public class Server {
public static final int PORT = 12345;
private static final int timeout = 30000;
private static List<String> names = new ArrayList<>();
private static List<Socket> sockets = new ArrayList<>();
public static void main(String[] args) throws IOException {
String filename1 = args[0];
String filename2 = args[1];
ServerSocket server = new ServerSocket(PORT);
while(true){
System.out.println("\nWaiting for player...");
Socket s = server.accept();
String name;
try {
Scanner sc = new Scanner(s.getInputStream());
name = sc.nextLine();
System.out.println("Joined to the server: " + name);
names.add(name);
sockets.add(s);
} catch (Exception e) {
System.out.println("Exception while communicating with a client.");
continue;
}
}
}
}Client.java:
package nagybead;
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class Client{
public static void main(String[] args) throws IOException,InterruptedException {
String name = args[0];
Socket s = new Socket("localhost", Server.PORT);
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
pw.println(name);
}}lefuttatom a servert, utána a kliens-t elsőre ezt kapom:
Waiting for player...
Exception while communicating with a client.tehát a try-catch-ben a catch ágra kerül.
Viszont ha mégegyszer indítok egy klinenst akkorWaiting for player...
Joined to the server: macskamár csatlakozik a serverhez. Látjátok benne a hibát? sehol nem találom. Köszönöm
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
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
Előzmény kérdéshez: 5 éves gyakorlattal rendelkezek programozóként. Kezdetben PHP, utána egy ideig frontend vonal (nagyrészt JS, vége felé CSS+JS, mindenféle keretrendszerekben / librarykkel, közben minimális PHP), jelenleg meg JS + Groovy (egyedi keretrendszer).
Kérdés: szeretnék jobban belemélyedni javába, egyrészt mert régen (7-8 éve) foglalkoztam vele, és szimpatikus volt, másrészt a jelenlegi keretrendszer alapjai is java-s, tehát már mostani helyemen is tudnám kamatoztatni a tudást (a mostani helyemen nem tudok elmélyülni benne, mert egyedi keretrendszer de külsős csapat fejleszti, mi csak használjuk), harmadrészt másrészt szeretnék hosszú távon munka téren is ebbe az irányba elmozdulni (akár úgy, hogy a nálunk használt keretrendszert lehetne belsőleg fejleszteni, nem mindig külsősökre kéne várni). A problémám az, hogy nagyjából kétféle tutorialt találok:
1) Írjuk meg életünk első hello world programját, mi az a for ciklus meg változók meg tömb, stb...
2) Túl magas szintről indít (mert már valami konkrét keretrendszer tutorial java-t ismerőknek) és úgy vagyok vele, mint az egyszeri agglegény a szakácskönyvvel, hogy elakad a "végy egy tiszta edényt" mondatnál
Szóval tud valaki olyan tutorialt / tanfolyamot (bár tutorial jobb lenne, jobban szeretek saját tempómban haladni, ha kérdezni kell meg ott a google) ami nem kezdő programozó tanfolyam, hanem haladóbb programozóknak java átképző guide?
Esetleg a #8609-ban linkelt tanfolyam jó lenne erre? (tudom már megy egy hete, de még mindig enged jelentkezni). Vagy random válasszak ki egy keretrendszert, pl. Spring, keressek hozzá egy tutorialt, pl. ez, és essek neki? Nyilván utóbbival elboldogulnék, eddig minden általam ismert programnyelvvel így indultam el, csak pontosan ezért tudom, hogy mennyi szívástól megkíméli magát az ember, ha van valami irányvonal, hogy na ezt így kéne csinálni... és ezért attól félek, hogy megfelelő alapok nélkül hülyeségek rögződnének be, illetve részben a keretrendszer hülyeségeit tanulnám meg (a 7-8 évvel ezelőtti ismerkedés kimerült notepad++-ban megírt konzolos applikációknál, szóval az nem ad megfelelő alapot). Vagy hogy lenne érdemes elindulni? 
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
Egy kicsit komplexebb kérdésem lenne:
Valamiféle adatszerkezetet keresek, amely alkalmas lenne az alábbira:
REST-en keresztül érkeznének üzenetek egy szolgáltatásnak. Az üzenetek formája/típusa az egyelőre tetszőleges, a választott adatszerkezetnek megfelelően választanám azt.
Ezeket az üzenetek egy Spring keretrendszert futtató szintén REST szolgáltatás fogadná, amelynek valahogy fel kéne dolgozni és eltárolni azt.
Valahogy úgy kéne elképzelni, hogy jönne egy String üzenet A-tól: "A üzenet" (Tehát az üzenetben stringek jönnének, mint egy log service)
Ezt az üzenetet be kéne tenni valamibe ahol csak az A-tól jövő üzeneteket tárolom. Mindezt úgy, hogy historikusan vissza lehessen követni valamilyen szinten. Tehát mondjuk egy asszociatív tömbbe, ahol kulcs az a dátum lenne, az érték pedig maga az üzenet.Ezekután ebből az A tömbből pedig ki ki tudnám szedni az adatokat úgy, hogy megadnám, hogy "ettől-eddig" az intervallumig kérném az értékeket a tömbből.
Bármilyen segítséget megköszönök!

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
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
-
skoda12
aktív tag
Azt értem, hogy nem szabad, de azt nem, hogy miért nem?
Mi az oka annak, hogy a fejlesztő nem struktúrálhatja a kódját úgy, ahogy az szerinte használható és átlátható?
Remélem nem az, hogy a prof könnyebben kinyomtathassa az 1 db fájl tartalmát.Egy normális világban / OO nyelvben egy kicsit is komplexebb megoldást nem egy osztály valósít meg. És akkor csodálkozunk, hogy az egyetemről érkezők olyan minőségű kódot produkálnak, amilyet. (Én is ilyet produkáltam, és utólag visszanézve nem vagyok rá büszke.)
Szerencsétlenek nem hogy nem látnak mást, még a kreatívabb kisebbséget is megkötik az idióta szabályaikkal.Lortech: A nested class is egy újabb osztály. Bár nem erről szólt a feladat, de ha úgy tartja kedvem, 826 osztályt is tehetek egy fájlba, csak éppen rettentő gusztustalan lesz.
Persze ebben az esetben én is inner classra szavazok, nagyon ide kívánkozik. Inkább, mint az egymásba ágyazott konténerek végeláthatatlan sora. Vagy akkor szívassuk meg a tanárt, és az olvashatatlanságig bonyolítsuk túl, legyen neki is pár kellemes órája, amíg kitalálja, mit csinál.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
Igen, arra gondoltam. Idézet a javadocból: all mutative operations (add, set, and so on) are implemented by making a fresh copy of the underlying array.
Ha többnyire iterálás/olvasás történik, akkor nem lehet gond vele. -
skoda12
aktív tag
Ugyanez volt nálam is, iterálást nem viselte el a Collections.SynchronizedList, hiába tettem a műveleteket synchronized blokkba. Mióta ki kell cserélve a CopyOnWrite-ra, azóta nem volt Exception, igaz én csak az elem berakás/kivételt és az iterálást használom, semmi mást.
Köszi a választ!

Ha túl sok író műveletet használsz rajta, akkor nem biztos, hogy jó megoldás. Érdemes kimérni, hogy neked megfelel-e.
-
skoda12
aktív tag
Napi fura kérdés.
Ha van egy objektumom...és én azt szerializálom. Majd ezt letárolom DB-ben. Később onnan beolvasom, deszerializálom, akkor ennek a két műveletnek a sebességét, hogy tudom megítélni gyorsaság szempontjából.
Ha másképp akarom megfogalmazni, akkor: Honnan tudom, hogy gyorsítható-e a folyamat?Bónusz kérdés: Nagyjából milyen futási idők jellemzőek a fenti folyamatokra? (Aki tud mondani példát adott méretre mi jött ki, annak nagyon örülnék)
Nem azért kérdezem, mert van kódom, vagy működő alkalmazás. Tervezési fázisban van egy projekt és éppen a felhasználható módszerek eszközök összgyűjtése folyik.
A lényeg, hogy van egy fájl inputon, aminek a feldolgozása után keletkezik egy objektum ami tartalmazza a fájlból szükséges dolgokat. De ezt a folyamatot nem akarom mindig futtatni, mert a fájl nem változik csak ritkán. Ezen kívül a performanciát is rontaná. Ezért arra gondoltam, hogy a szerializált formáját letárolom és amikor kell akkor beolvasom, deszerializálom és már a rendelkezésemre is áll az objektum, amit felhasználva mehet tovább a folyamat.
Ötletek észrevételek?
Miért akarod DB-be menteni? Perzisztensen megvan az adat a fájlban, beolvasás után meg a memóriában tárolhatnád és használhatnád a feldolgozott adatokat. Jó, mondjuk ez nem működik, ha a fájl tartalma nem fér el a gépben levő memóriában ...
-
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
Igen, köszönöm és a többieknek is. A Package maradt ki. Ezek szerint elfogadhatták volna a válaszaimat.
Bár nincs még tapasztalatom, de ha írok valami programot, akkor én sem jegyzek meg fejből minden nyelvi jellemzőt, hanem utánanézek weben. Ezek szerint állásinterjúra fejből be kell vágni dolgokat.Egy másik kérdésem volt, hogy :
Javaban van-e többszörös öröklődés ?
Azt válaszoltam rá, hogy nincs többszörös. C++ ban volt és van többszörös öröklődés, de ott is nehézségeket jelent a használata, mert ha van egy 'A' osztályod és abból származik 'B' és 'C' osztály, akkor B és C lemásolja magának a memóriába az A tulajdonságait. Majd ezután, ha 'B'ből és 'C' ből akarod örököltetni a 'D'-t, akkor vigyázni kell arra, hogy D-be ne másolódjon le kétszer A-nak a tulajdonságai, mert B-ben és C-ben is megvan.Tehát ezt írtam rá, hogy például ilyen nehézségek miatt a Java-ban nem valósították meg a többszörös öröklődést.
Erre a válaszomra meg szintén azt mondták, hogy nem tudják teljesen elfogadni.
Szerintetek, a ti tapasztalatotokkal mi lehetett volna a helyes válasz ?
köszi
Többszörös öröklődés alatt azt értik, amikor egy osztálynak több őse van. Te ennek pont a fordítottját magyaráztad el. Javaban egy osztály max egy osztályból származhat, de implementálhat több interfészt.
-
skoda12
aktív tag
Üdvözletem a tagoknak.
Segítséget szeretnék kérni tőletek. OKJ-s szofverfejlesztői végzettségem van , Java nyelvet nagyon tanultuk, mellette ismerem a C / C++ nyelvet , illetve weblap fejlesztői nyelvekkel is tisztába vagyok , mint pl. HTML,CSS,PHP,JAVASCRIPT és az SQL adatbázis kezelő nyelv se áll annyira távol tőlem és persze jól kijövök az angol nyelvel (némettel úgyszintén) . Olyanba kérném a segítségeteket, hogy tudnátok-e olyan munkalehetőségeket ahova lenne esélyem bekerülni, mint pályakezdő ,mivel 99%ban , mindenhova diplomát kérnek. Illetve android porgramozói munkát is szívesen vállalnék.
A segítségeteket előre köszönöm.
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
Értettem. Ha minden igaz, itt van:
[link]És mégis hogyan bontsak szét egy majd 1000 sort is hamarosan elérő switch case-t? Mondtam már. Osztályok nincsenek, nem tanultuk őket.
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
Adott egy absztrakt osztály(Ital), adott egy interfész(Alkoholos). Van három osztály: Bor (extends Ital, implements Alkoholos), Gyumolcsle (extends Ital), FalraHanytBorso (implements Alkoholos).
A feladat az, hogy ezeket egy közös tárolóban (ArrayList)-ben kellene tárolni, aminek generikusként Ital-t adnék meg, de ha FalraHanytBorsot példányosítanak az gondolom nem fér bele. Hogyan kellene ezt megoldani? Azt gondolom úgy elfogadja ha nem adok meg neki generikust, és akkor elfogadja azt is, de nincs valami szebb megoldás?
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
Mi még csak konzolra írunk ki.
De a program nem sorban hajtja végre az utasításokat? Mert ha a syserr előrébb van, akkor azt kellene előbb csinálnia, nem?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
Lehet tenni a fenti hiba ellen valamit?
Valahogy nekem magas, hogy friss futtatáskor mi köze a buffernek a kiíráshoz.
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
Az miért van, hogy néha gondol egyet a System.err.println(); és a System.out.println(); és felcserélik saját magukat a kiiratáskor?
Szóval hogy ez van beírva:
System.err.println("TÖRLÉS MENÜ");
System.out.println("1-Egy állat törlése");
De az esetek kb. 30%-ában ez íródik ki:
1-Egy állat törlése
TÖRLÉS MENÜ
Ez helyett:
TÖRLÉS MENÜ
1-Egy állat törléseSysout bufferelt, syserr nem.
-
skoda12
aktív tag
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
Így ezt nem lehet megoldani, ha null-al teszel egyelővé referenciát, annak egyéb eseménye nincs.
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
-
skoda12
aktív tag
A bitbucket ingyenes privat repok eseten is. Nyilvan regisztralni kell, de amugy tok jo. Van git es mercurial tamogatas, wiki, bug tracking is.
-
skoda12
aktív tag
Pont most kezdtem olvasni a clean code magyar verzióját és a felület szónál azonnal eszembe jutott a forum. Amíg nem írt konkrét példát addig fogalmam nem lett volna mire gondol a költő

Általában neten szoktam angolul olvasni, de ez most kivétel.
Van még pár gyöngyszem amit tudnál mondani?
-
skoda12
aktív tag
Nem teljesen vilagos, hogy mit szeretnel pontosan.
Most az a kerdes, hogyan tudod a kliens felol erkezo uzeneteket tobb szalon feldolgozni? Ha igen, akkor BlockingQueue vagy ExecutorService (es Executors) hasznalatara keress peldat. Ez a legegyszerubb modja szvsz. -
skoda12
aktív tag
Egy kis érdekességként beteszed ide egy "fejtörőt". A lényeg az lenne, hogy mindenki fordító és netes keresgélés nélkül oldja meg a saját tudásából és írja be, hogy mit írna ki a program. Mindenkinek a saját lelkiismeretére bízom, hogy betartja e a játékszabályokat. Pár nap után beírom a helyes eredményt, de ha nagyon triviális és mindenki tudni fogja, akkor elnézést.
(Kattintásra nagyobb lesz)
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
Hali,
Valaki találkozott az alábbi hibával?
Eclipseben Help -> Install new software, kiválasztom az elérhetők közül az "All ...", de hiába keresek ott a pluginokra, semmi. Semmilyen találatot nem kapok...
Market Place-t néztem, de ott meg hiába töltöm le a cuccot, ha a plugin-t nem tartalmazza.Ha valamilyen plugint fel akarsz rakni, akkor eloszor az update siteot add hozza eclipseben.
-
skoda12
aktív tag
-
skoda12
aktív tag
Effective java es java concurrency in practice anyaga alap. Nem junior poziciora mechanical sympathy, jsr-133, oracle gc-vel foglalkozo oldalai es nehany cikk a vanilla javan.
-
skoda12
aktív tag
Ja valami kód is:
package com.corejsf;
public class User {
private String name;
private String password;
public User(String name, String password){
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}package com.corejsf;
import java.io.Serializable;
import java.util.*;
import javax.faces.bean.*;
@ManagedBean(name="userbean")
@SessionScoped
public class UserBean implements Serializable{
private String name;
private String password;
private String userListToString;
private static List userList = new ArrayList();
private User user;
public String addUser(){
user = new User(name, password);
userList.add(user);
userListToString = userList.toString();
if (userList.contains(user)){
return "thankYou";
}
else {
return "loginFail";
}
}
public String loginUser(){
user = new User(name, password);
userListToString = userList.toString();
if(userList.contains(user)){
return "thankYou";
}
else{
return "loginFail";
}
}
public String getUserListToString() {
return userListToString;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}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
Koszonom a valaszokat

most lefut

De viszont ezt irja amikor elakarom menteni az uj rekordot(elemet az adatbazisban):
Syntax error: Encountered ";"probaltam igy,hogy a kod vegen kihanyom a ..st+"','"+job+"');"; ) utáni ; jelet,erre ezt irta:
ResultSet not open. Operation 'next' not permitted.Melyikel lehet tovabb halladni,ha a st+"','"+job+"');"; a zarojel utan a ; kell oda vagy az nelkul es megkeresni hol blokkolodik a next ?
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
-
skoda12
aktív tag
helo.
ilyen hibat ir ki, az adatbazis szerkezete lathato a kepen es a hiba is amit kiir a netbeans,pirossal jelez a kodreszre....
http://i.imgur.com/XfOyBv2.png
megj.: az adatbazist ez alapjan lett: http://www.homeandlearn.co.uk/java/java_and_databases.html
Elegge egyertelmuen leirja, hogy nyitottal egy karakter literalt es nem zartad le. A karakter literal helyett csak fuzd a vesszo utan a first string erteket es egy bezaro zarojelet. Talan a ; is kelleni fog az sql stringbe, nem emlekszem mar.
-
skoda12
aktív tag
-
skoda12
aktív tag
Oks, köszi.

Egy másik kérdés, mindenkinek:
Melyik webes frameworkot ajánlanátok kisebb weboldalak létrehozására? Eredetileg ezért választottam a Grails-t, és esetleg gyors tanulási lehetőséggel bír, vagy sokan használják
.
Spring-et ide túlnagynak érzem. (Pl.: egyszerű blog oldal) Vagy inkább sima JavaEE-t használjon az ember?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. Mivel fejleszem? Fejlesztő környezet belövéséhez van valami leírásod?
(Én ugye Ubuntu terminálból mvn grails:run-app paranccsal nyomom, na de az nem semmi, hogy 700megát megeszik...)2. Én ettől az ízéttől tudok, de nagyon falra mászni, hogy a View-okat: Create, Update, hogyan lehet befolyásolni, esetleg felül írni? Ugyanis szeretném a beviteli mezők és labelek sorrendjét ÉN meghatározni, és ne pedig a groovy határozza meg! Ettől falra tudok mászni.
Soak, amikor tutorialt csináltam akkor tetszett, na de amikor magamtól kell, akkor ajaj, már nem hiába hagyták ki a sok részt a tutorialból.
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
Nem tudom, biztos van ahol szeretik. Igy utolag visszaolvasva tenyleg elegge altalanositottam. Nyilvan lehet benne nagy kodbazist osszehozni, de nekem nem tunik trivialisnak egy ilyet Groovyban fenntartani.
-
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
Mostanaban kell vele foglalkoznom. 3 csapat fejleszt grails plugineket egy nagyobb webalkalmazasba. Eleg lesujto tapasztalataink vannak vele. A tobbi projekten mar nem fogjak hasznalni.
De azert kerdezz, hatha tudok valaszolni. -
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
Köszönöm az eddigi válaszokat. Közben megoldódott a dolog egy session.clear() oldotta meg a problémát a tranzakció lezárása után.
"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."
Az igaz hogy desktop app, de ez miért is vonja maga után hogy "csak egy user használja egyszerre"?
Desktop app, de központi adatbázissal dolgozik. Az alkalmazás pedig a felhasználók gépein található meg.Egyébként nagy baj az ha egyetlen session-t használok a futás alatt?
Az architektúra úgynéz ki, hogy vannak a perzisztens osztályok, ez mellett van egy üzleti logikát megvalósító osztály (UzletiLogika) és van a kliens, ami bármi lehet, jelenleg egy desktop swing GUI.
Az UzletiLogika osztálynak egyetlen statikus adattagja van, ami nem más mint egy Session. Ezen dolgozik az összes metódus. A metódusok a kliens(ek)nek szolgáltatnak adatokat, amik különféle egyszerű és összetett adatszerkezeteket adnak át. A perzisztens osztályok adattagjait alakítják át listákká, vektorokká stb...
Paraméterül azonosítókat kapnak és soha nem adnak vissza perzisztált objektumot.
Így az UzletiLogika osztályban dolgozik csak a Hibernate. A GUI csak meghívja az ottani metódusokat és valamilyen nem perzisztens adatot kap, amit megjelenít.Most már működik a program.
A kérdésem az hogy a felvázolt architektúra szerintetek rendben van? Illetve jó megoldás-e az egyetlen session használata?
"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
Sziasztok!
Adott egy Hibernate-et és MySQL-t használó NetBeans alatt készített alkalmazás GUI-val.
Két táblázat van benne, amiket feltöltök a perzisztens objektumokkal. A második táblázat az első detail táblája, azaz az egyik adattagja (ami Set típusú) tételeit tartalmazza.
A lényeg az hogy ha törlök valamit a detail táblából akkor látom az SQL parancsot (delete) az output ablakban. Az SQL adatbázist megnézve látszik hogy törlődött a rekord, viszont a vizuális komponensben (jTable) nem látszik a frissítés. Természetesen újra feltöltöm a táblát, de nem frissül. Olyan mintha valahol (cache?) ott maradna az adat. Új session-t indítok minden egyes lekérdezésre, flush() és evicat() meg minden van a törlő művelet után, de nem frissül. Az output ablakban látszik hogy a select nem fut le újra, pedig ott van a lekérdezés és debugolva is ellenőriztem végrehajtja a sort, de nincs adatbázis kérés mögötte.
Ha kilépek és újraindítom a progit akkor már minden rendben látszik.Hogy lehet rábírni hogy frissüljön rendben minden? Mi a francért nem frissül?
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
"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 Szemétgyűjtő a Stringeket nem kezeli, nem dobja ki őket"
Ezt nem gondolhatod komolyan. Elég sok alkalmazás kapna így out of memory-t
. 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. A futás időben keletkezett String objektumok viszont mindig a heap-re kerülnek, amiket pedig a GC eltakarít, ha már nincs rájuk hivatkozás.Példa:
String str1 = "abc";
String str2 = "abc";
System.out.println(str1 == str2);Eredmény: true
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);Eredmény: false
"
"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
ismer valaki egy normális modern hibernate tutorialt, ahol nem használnak fos soha sem működő mindenféle hibát dobáló eclipse kiegészítéseket generálgatásra, és nem ősrégi?
Tehát annotációkat használ, magában a rekord class a tábla leírása is, nincs retkes 49 db mapping xml mellé amivel gyak a lényege veszik el a dolognak. Régebben használtam hasonlót de teljesen elfelejtettem az egész beüzemelést.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
Csináltam egy ilyet public class NoDuplicateList<E> extends ArrayList<E>
Azért nem set-et használok új osztály helyett mert kell a get metódus is és az is hogy a listában minden csak egyszer szerepel. Na de most A Collections.synchronizedList() ezen nem működik, már pedig több szál fog hozzáférni ehhez a listához.
Mit lehet tenni?
Ja a másik csavar benne, hogy ez azért kell, mert egy több szálú program állítja össze a listát (igazából bármi lehet csak 1 adat(ez az adat egy 6 stringből álló objektum csak 1x szerepeljen benne), majd ezt egy Jtable-ben kéne megjeleníteni(amihez szintén kell 3 metódust implementálni).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
Sziasztok!
Algoritmus értelmezéshez kellene segítség:
1. Az elozo.kov.elem - et nem értem, ez hogy hogy lehetséges, mit akar jelenteni? Én azthittem, hogy csak elozo.kov vagy elozo.elem lehetséges
public void beszur(Hasonlithato h)
..
for (elozo = fej; elozo.kov != null && h.hasonlit(elozo.kov.elem) >= 0; elozo = elozo.kov);
...2. A h.hasonlithato(e.elem)==0 -nál miért az egyenlő-e 0-t vizsgálom? (gondolom azt jelenti, hogy megtalálta, de... nekem nem esik le
public int keres(Hasonlithato h)
if(e!=null && h.hasonlit(e.elem)==0)
return poz;3. Itt mi értelme van a kovetkezo=kovetkezo.kov utasításnak, ha úgy is csak az rv-vel térek vissza?
public Hasonlithato kovetkezo(){
Hasonlithato rv=kovetkezo.elem;
kovetkezo=kovetkezo.kov;
return rv;
}Kód:
package HallgatoLista;
public class LancoltLIsta {
/* Embedded Class */
private static class ListaElem {
Hasonlithato elem;
ListaElem kov;
public ListaElem(Hasonlithato elem, ListaElem kov) {
this.elem = elem;
this.kov = kov;
}
}
private ListaElem fej = null;
public void beszur(Hasonlithato h) throws DuplikaltElemException {
if (h == null)
throw new NullPointerException();
if (fej == null || h.hasonlit(fej.elem) < 0)
/* Lista elejére kell beszúrni */
fej = new ListaElem(h, fej);
else {
ListaElem elozo;
for (elozo = fej; elozo.kov != null && h.hasonlit(elozo.kov.elem) >= 0; elozo = elozo.kov);
if (h.hasonlit(elozo.elem) == 0) {
throw new DuplikaltElemException();
}
elozo.kov = new ListaElem(h, elozo.kov);
}
}
public int keres(Hasonlithato h) throws NincsIlyenElemException{
int poz=0;
ListaElem e;
for (poz = 0, e=fej; e!=null && h.hasonlit(e.elem)>0; e=e.kov, poz++);
if(e!=null && h.hasonlit(e.elem)==0)
return poz;
else
throw new NincsIlyenElemException();
}
/* Embedded Class */
private class ListaFelsorolas implements Felsorolas{
ListaElem kovetkezo=fej;
public Hasonlithato kovetkezo(){
Hasonlithato rv=kovetkezo.elem;
kovetkezo=kovetkezo.kov;
return rv;
}
public boolean vanMeg(){
return kovetkezo!=null;
}
}
public Felsorolas felsorolas(){
return new ListaFelsorolas();
}
}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
-
skoda12
aktív tag
Illetve még egy utolsó lenne mára:
Ez egy ISBN könyvkódot készít el.
Bemenet a könyvkód első 9 száma: 032115493
d1d2d3d4d5d6d7d8d9d10[/I]. Az utolsó, d10-es számjegy egy ellenőrző összeg, amelyet a másik kilenc számjegyből a következő formula segítségével számítanak ki:
(d1x1+d2x2+...+d9x9) % 11(I)Az X-es részt még nem valósítottam meg, hogyha az ellenörző kód 0 lenne(/I)
Hiba amit észrevettem: Akárhogy igyekeztem, mindig az adott karakter ascii kódjával tért vissza System.out.print("sum: "+ sum); ezzel néztem meg.
Mi a hiba benne?

Scanner sc=new Scanner(System.in);
String in= sc.next();
sc.close();
int sum=0;
for(int i=0; i<9;i++)
{
sum+=(int)in.charAt(i)*(i+1);
System.out.print("sum: "+ sum);
}
int r=sum%11;
System.out.println("ISBN: "+in+r);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
Sziasztok!
Most ez a fórum lesz az ahol aktívan kérdezgetek :-D
Java gyakorlas van magamtól + Egyetemen.A lenti példában A kiíratás a lényeges! Azt akarom elérni, hogyha a bemeneti valós szám, egész típus (maradékosztással 0 az eredmény), akkor ne írja ki az egész rész után a 0 (pl.: 43.0, hanem csak 43) Úgy érzem ez sikerült is, kétféleképpen oldottam meg.
1. Println()-en belül van egy elágaztatás.
2. If-Else ágakkal.
1. Kérdés: Van-e ennél szebb megoldás?
Két fajta megoldást hoztam létre
Kódrészlet:
public static void main(String[] args) {
System.out.println("Enter a degree in Celsius: ");
Scanner sc = new Scanner(System.in);
double celsius = sc.nextDouble();
double fahrenheit = (9.0 / 5) * celsius + 32;
System.out.println((celsius%1==0)?(int)celsius + " Celsius is " + fahrenheit +" Fahrenheit" : celsius + " Celsius is " + fahrenheit +" Fahrenheit");
if (celsius%1==0)
System.out.println((int)celsius + " Celsius is " + fahrenheit +" Fahrenheit");
else
System.out.println(celsius + " Celsius is " + fahrenheit +" Fahrenheit");
}
2. Kérdés: ha double helyett float-ot használok, akkor a (9.0 / 5) * celsius + 32 formulában lévő valós szám miatt lesz helytelen a float típus a fahrenheit változónak?3. Kérdés: Hogyan lehetséges egy inputsorban 2 változót beolvasni?
Pl: Enter the radius and length of a cylinder: 5.5 12 <Enter>
radius =5.5 és length=12;
Erre egy példa, vagy egy link, vagy legalább azt, hogy angolul hogyan keresek rá :-D1.
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
Erre tudtok valami megoldást?
[2011-09-14 20:42:08 - com.android.ide.eclipse.adt.internal.project.AndroidManifestHelper] Unable to read C:\Users\pck\workspace\LunchList\AndroidManifest.xml: org.eclipse.core.internal.resources.ResourceException: Resource is out of sync with the file system: '/LunchList/AndroidManifest.xml'.
[2011-09-14 20:42:08 - LunchList] AndroidManifest.xml does not declare a Java package: Build aborted.<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="apt.tutorial"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<supports-screens
android:xlargeScreens="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="false"
/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".LunchListActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest> -
skoda12
aktív tag
Hello!
Ismételten lenne kérdésem:
1. Long: Long defje, hogy egy long típust objektumba csomagol. Most találkoztam vele még csak használatban a példában.protected Long vonalKod és a long vonalKod közötti gyakorlati különbsége érdekel.
Vagyis az, hogy mikor melyiket érdemes használni?Én a lenti példában csak azt látom, hogy azért érdemes használni, hogy a get()-el így el lehet érni. Egyelőre más előnyét nem látom.
Az elelmiszerpult az egy Hashtable És én ez alapján úgy gondoltam, hogy csak a Hashtable miatt használom...Példában ahol használva van:
public void feltoltElelmiszer(Long vonalKod, long mennyiseg) throws BoltKivetel {
BoltBejegyzes b = (BoltBejegyzes)elelmiszerpult.get(vonalKod);
if (b==null)
throw new NemLetezoAruKivetel("Ilyen aru nincsen: "+vonalKod);
b.adMennyiseg(mennyiseg);
}2. Constructor:
public Bolt(String nev, String cim, String tulajdonos)
{
this(nev, cim, tulajdonos, new Hashtable());
}
és ez is teljes értékű constructor? (mármint úgy értem, hogy amit a fejlesztői társadalom elfogad? Még sosem találkoztam az előbbi megoldással, eddig)
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
Itt az osztály diagram ami leírja, és a feladat is.
link az OsztályDiagramhozMegprobáltam megvalósítani de nem jó, syntax hiba van. Nem értem, hogy a digaramnál a metódusok végén a Tej, ott mit jelent, hogy most mit vár el tőlem, mit valósítsak meg pontosan!
Ráadásul a Tej osztálynak nincsenek beállítómetódusai sem.
Nem tudom, hogy pontosan mit kéne begépelnem a Konstruktorba
Ezt valósítottam meg:
package bolt;
import java.util.Date;
public abstract class TejFactory {
/*Példányosítás egy szolgáltatás*/
public static TejFactory(long vonalKod, int urtartalom, String gyarto, Date szavatossagiIdo, double zsirtartalom, long ar)
{
}
public static TejFactory(long vonalKod, int urtartalom, String gyarto, Date szavatossagiIdo, double zsirtartalom, long ar)
{
}
}Tej osztály
package bolt;
import java.util.Date;
public abstract class Tej {
public static final int LITER=1000;
public static final int FELLITER=500;
public static final int POHAR=200;
public static final double ZSIROS=2.8;
public static final double FELZSIROS=1.5;
private long vonalKod;
private int urtartalom=0; //ml-ben megadva
private String gyarto;
private Date szavatossagiIdo ;
private double zsirtartalom;
private long ar;
public Tej(long vonalKod, int urtartalom, String gyarto, Date szavatossagiIdo, double zsirtartalom, long ar)
{
this.vonalKod=vonalKod;
this.urtartalom=urtartalom;
this.gyarto=gyarto;
this.szavatossagiIdo=szavatossagiIdo;
this.zsirtartalom=zsirtartalom;
this.ar=ar;
}
/*Lekerdezo metodusok*/
public boolean joMeg(){
return szavatossagiIdo.before(new Date());
}
public long getVonalKod(){
return vonalKod;
}
public int getUrtartalom() {
return urtartalom;
}
public String getGyarto(){
return gyarto;
}
public Date getSzavatossagiIdo(){
return szavatossagiIdo;
}
public double getZsirtartalom(){
return zsirtartalom;
}
public long getAr(){
return ar;
}
public String toString(){
return "Gyártja: " + gyarto+ " Szavatossági idő:"
+szavatossagiIdo+"Zsirtartalom:"+zsirtartalom;
}
}A Tej a metodus vegen a visszateresi erteket jelenti.
Nezz utanna, hogy mi a kulonbseg a konstruktor meg a statikus metodusok kozott, mert ez a problema forrasa. -
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
-
skoda12
aktív tag
ja, még egy kis adalék, amit lehet rosszul csinálok, de nem volt egyértelmű, hogy kell alkalmazni:
fordításkor:
javac -classpath xom-1.2.6.jar PropertiFileReader.java (sikeresen lefordul)
futtatáskor:
java -classpath xom-1.2.6.jar PropertiFileReader (ekkor jönnek a hibák)a xom, a java és a class fileok egy mappában vannak.
bocsi a dupláért.
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
Igen inkább, és főleg magyar nyelvűre, bár az gondolom csak álom

gygabor88: Most mégy csak bele szeretnék látni (egy két kisebb önálló program), mert vagy csak tulmisztifikálva körbeírják, vagy a mélyébe ugranak az EE témának.
A Hibernate meg fontos lenne olyan szempontból, hogy adatbázisokkal kell néha szórakoznom, bár nincs nagy változatosság szerencsére, úgyhogy SQL utasításokat passzolgattam át, és eddig még jól megvoltam vele

De ha jól sejtem Hibernate-val megírva könnyen át lehetne állítani a programjaimat másik gyártó adatbázisához is. Annak idején mutatták is, de ANT-al még jól megkavarták a dolgot, és sok minden nem "jött át"
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
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
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
eclipse-hez használ valaki GUI tervező plugint? Van olyan, ami ingyenes, viszonylag egyszerűen használható és átlátható(bb) kódot generál (, mint a NetBeans) ?
Bár lehet, hogy a NetBeans kódja csak azért tűnik zűrösnek, mert maga a swing olyan, amilyen.
Ettől függetlenül, nekem szimpatikusabb egyelőre az eclipse, jobb lenne azzal folytatni a kísérletezgetést.Jigloo néven található egy swt/swing gui builder plugin.
-
skoda12
aktív tag
Van itt valaki, aki érti a hivatkozott hozzászólásomban vázolt "súlyos" problémámat?
Ha igen: nem lehet, hogy marhaságot akartam ráerőszakolni a java-ra?
Amikor írtam még úgy éreztem, hogy értem mit akarok. Azóta kissé elbizonytalanodtam: jelenleg értelmetlennek tűnik az elképzelés, hogy osztálydefinícióba wildcardot tegyek...Az a baj, hogy már nem tudom eldönteni: akkor voltam belekavarodva az info áradatba, vagy most (hogy már értelmetlennek tűnik) kutyultam össze valamit.

Amit te akarsz, azt így lehet megoldani:
class A<T extends Valami>{...}
?-t nem használhatsz osztály és metódus megadásakor (csak metódus paraméterlistáján belül). -
skoda12
aktív tag
Ez részben tiszta.
Nekem a List és az egymásbaágyazott generikus definíciók zavarnak be egy kicsit. Főleg, hogy a List-ről csak annyit tudok, hogy van, de nem láttam sehol az ő definícióját.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?
"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
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
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
Ne gondolj semmi komoly dologra! Csak unatkozom és kellene valami olyan játék, amivel kicsit az agyműködésemet fenntartom. Sakkozni, go-t tanulni már nincs kedvem.

Java mobilra azért lenne jó, mert az _elméletileg_ platform független és legalább írhatnék egy olyan reversit, ami úgy működik, ahogy én szeretném.
Ha unatkozol, tanulj Java EE-t. Mostanában jól meg lehet belőle élni, előzetes tapasztalat nélkül is.

-
skoda12
aktív tag
Majd még keresgélek, hátha kiderül valami érdemleges. Igazából előbb kérdeztem itt, utána kezdtem a gúgliban turkálni. A turkálás eredménye, hogy valószínűleg még most is kell SDK, csak azt nem tudom, hogy mindenhez vagy csak ahhoz, hogy az adott mobil spec. képességeit is használni lehessen. (mondjuk egy java szoftver esetében nem értem, miért kellene bármi platformfüggő dolog akár a fejlesztéshez, akár a teszeléshez)
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
Megint elakadtam egy kicsit: beágyazott osztályok. Ahány helyen nézem, annyiféle leírást találok. A mellékelt példák többnyire hasonlóak, de a magyarázatok...
Azt kb. felfogtam, hogy a segítségükkel olyan objektumot tudok visszaadni egy metódusból, ami hozzáférhet az adott osztály/példány privát tagjaihoz. (hmmm... mire megfogalmazom, mit akarok kérdezni, még meg is értem?
) Ezért, erre találták ki a beágyazott osztályokat?Viszont gondot okoz a könyvem egy mondata: "... az így létrejövő objektum dinamikusan kapcsolódik a metódusban éppen érvényes aktuális példányhoz, és ez a kapcsolat a metódus elhagyása után is fennmarad."
Ezt itt nem értem. Az OK, hogy ha az adott metódus visszatérési értékként vagy egy osztály/példányváltozóban visszaad egy ilyen objektumot, az megmarad. De ez (számomra) teljesen logikus. Miért van mégis hangsúlyozva ez a kapcsolat? Valamit félreértek és egyéb jelentősége van?-------
Ha van egy ilyen interface-em:interface A { void x(); }
Akkor az őt implementáló osztály x metódusánál miért reklamálja az Eclipse a "public" jelzőt?
Egy belső osztályt akartam így leírni, de a
class O implements A { void x(){ ... } }
nem tetszett neki. Csak így fogadta el:
class O implements A { void public x(){ ... } }Eztakkormostmért?

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
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
Egy régi Java2 könyvben találtam olyat, hogy (idézet nem teljesen szószerinti) "példánymetódusokat felüldefiniálni, osztálymetódusokat elfedni lehet".
Össze tudná foglalni valaki pár szóban, hogy mi a különbség az elfedés és a felüldefiniálás között? A könyv alapján nem egészen világos. (osztálymetódus=statikus metódus, ha valakinek így ismerős
)Í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
Gondolom konzolos alkalmazást akarsz készíteni. Nem használok eclipset, de valószínűleg a project ... menüpont után valami ablakban kell kiválasztanod a console applicationt. Amúgy a többi menüpont is javahoz kapcsolódik csak az majd később kell neked.
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- 24 magos AMD Threadripper alapú munkára kiváló félgép, 128GB RAM-mal
- HP ZBook Fury 15 G7 i7-10850H 32GB 512GB SSD Quadro T2000 4GB FHD HUN bill, szép állapotban eladó
- Eladó MacBook Pro 16,1 2019 CTO
- új 0 km es garanciás lenovo loq rtx 5050 8gb
- Eladó teljesen újszerű karcmentes Samsung Galaxy Watch Ultra
- Apple iPhone 11 Pro / 64GB / Kártyafüggetlen / 12Hó garancia / Akku:100%
- Honor 600 256GB 8GB RAM Orange Újszerű állapotban 100% akkumulátor (2 ciklus)
- Xiaomi 15T Pro 5G 512GB, Kártyafüggetlen, 1 Év Garanciával
- Gamer PC-Számítógép! Csere-Beszámítás! Ryzen 5 5600XT / RTX 5060 / 16GB DDR4 / 1TB SSD!
- Lenovo ThinkPad L14 Gen 4 - 14" - Ryzen 5 pro 7530U, 16-32GB RAM, SSD, jó akku, számla, 6 hó gar
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest









