Hirdetés
- Lassan állítjuk a fát, és a hardverek is be vannak csomagolva
- Klasszikus kínai festmények ihlették a Colorful legfrissebb memóriáinak külsejét
- Ultrakompakt Key E SSD-vel jelentkezett a Silicon Power
- Mesterséges intelligenciára kihegyezett mini PC jött az ASUS műhelyéből
- ASUS blog: ExpertBook P5 notebook, a munkagép
Új hozzászólás Aktív témák
-
Lacces
őstag
válasz WonderCSabo #3299 üzenetére
Tényleg, ugyanarra mutat a 2 referencia változó... ezt hogy nem vettem észre...
-
WonderCSabo
félisten
A Java mindenhol referenciákat használ (kivéve a primitív típusokat, de itt most nincs olyan). Feltételezem a car.getTires() fv. car.tires listát adja vissza. Mivel referenciákról van szó, ekkor a main lokális változója, a carTires illetve a car.tires mező ugyanarra az objektumra fog mutatni. Ezután átadod a car.setTires(carTires) - el a carTirest, ami törli a belső saját listát. De a carTires is a belső listára mutat, tehát ugyanazt a listát törlöd ki! Ezután hozzáadod a belső listához ugyannak a már üres listának az elemeit, nyilván továbbra is üres marad.
Ez egy ismert jelenség, és direkt kitaláltak rá olyan mintákat, amivel ezt el lehet kerülni. Az egyik ilyen megoldás a defensive copy.
[ Szerkesztve ]
-
Lacces
őstag
Hi, nem értem a következő kódrészletben, hogy a this.tires.clear() hogy-hogy törli a metódus paraméterében lévő t paramétert is?
public class Car {
private List<Tyre> tires = new ArrayList<Tyre>();
public void setTires(List<Tyre> t) {
this.tires.clear();
this.tires.addAll(t);
}
// Egyéb lekérdező metódusok
}
public class CarTest {
public static void main(String[] args) {
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
car.setTires(carTires);
System.out.println("After (1): " + car.getTires().size());
System.out.println("After (2): " + carTires.size());
}Kimenet:
Before: 2
After (1): 0
After (2): 0Aminek nem örülök, azt tudom, hogy a this.tires.clear() csinálja ezt a mókát, ha ezt kikomenntezem, akkor az After-ek értéke 4 lesz... olyan, mintha a t paraméter tartalmát is törli...
Mintha az addAll(t)-nél üres lenne a t paraméter.[ Szerkesztve ]
-
modder
aktív tag
http://docs.oracle.com/javaee/6/firstcup/doc/gcrlo.html
És hát itt a biblia:
http://docs.oracle.com/javaee/6/tutorial/doc/Az, hogy Glassfishben kell fejlesztened gondolom azt jelenti, hogy Java EE alkalmazásokat kell fejlesztened. Itt még felmerül kérdésként, hogy milyen technológiákat használ az általad átvett projekt. Réginek számít a JSP, Servlet, közvetlen JDBC, esetleg Hibernate. Újnak számít (persze már ezek is 3-4+ éves technológiák, de mára váltak igazán kiforrottá) a JSF, EJB, CDI, JPA.
Én azt javaslom, hogy először szedd össze, hogy melyik technológiákat használja a projekt. (Remélhetőleg a kolléga nem egyedül dolgozott rajta, így valaki tud segíteni), szerezz ezekről valami fogalmat, hogy mi mire jó, párosítsd össze a technológiákat a projekt kódjával, hogy lásd élőben is, mikor és hogyan volt használva.
A fönti linkelt bibliában le van írva részletesen, hogy melyik technológiát mikor használjuk.Ez tényleg hosszú folyamat, mert nagyon összetett a Java EE felépítése. Elmélet-gyakorlat oda-vissza, míg az ember teljesen megvilágosodik.
A forráskódot vissza lehet fejteni minden gond nélkül java decompilerrel, ha minden kötél szakad, de az eredeti formázást és kommenteket el fogja veszíteni. Bár nem tudom elképzelni, hogy "a kolléga elment, nekem kell átvenni a helyét, de nincs meg a forráskód", annak valahol meg kell lennie, a kolléga sem bytekódot írt séróból.
Ha már leírtam, pár hozzászólással korábban van egy hosszú kommentem néhány Java EE technológiából, mert valaki kérdezte, ennek most te is veheted kis hasznát
-
TBG
senior tag
Igazából én ebben nem tudok segíteni..már könyv. Amit én a webes fejlesztésről tudok ( és minden szerénytelenség nélkül nagyon sokat már ) azt kb. az elmúlt 6-8 évben folyamatosan szedtem össze.
Szóval, egyetértek az előttem szólóval...a főnökeid szerintem ezt nem gondolták végig. Mert mindent meg lehet tanulni, de nem mind1, hogy mennyi idő alatt.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
-
TBG
senior tag
az a gondom, hogy eddig javaban csak ablakban / konsolon futó programokat írtam (azt is kb 3-4 éve) és most kell gyorsan átnyargalnom grassfish-es webes mókára
Kemény lesz...teljesen más világ.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
veterán
válasz lakisoft #3274 üzenetére
az a gondom, hogy eddig javaban csak ablakban / konsolon futó programokat írtam (azt is kb 3-4 éve) és most kell gyorsan átnyargalnom grassfish-es webes mókára
a dokumentációs linket köszönöm ... bár ezen lesz idő mire átrágom magam , de neki látok
plusz abszolút hülye (talán a hét hülye kérdése) kérdés még. nagyon leegyszerűsítve ugye a javanal fordított kódot futtatunk (.jar és .class fájlok) na most ha van egy glashfises projektem amihez nincsennek meg a java források akkor ha jól gondolom szívtam mert ahhoz hogy a kódba bele nyúljak ahhoz nekem a forráshoz is szükségem van. amiből majd én új (jar,class) fájlokat fordítok és a glassfish-be ezeket a fordított kódokat pakolom ki (majd gondolom glassfish újraindítással már az új kód fog futni)...
tehát ahhoz, hogy a meglévő kódon módosítani tudjak ahhoz nekem szükségem van a forrásfájlokra is ha jól gondolom ... Mert akkor azzal nem rendelkezek
[ Szerkesztve ]
-
veterán
Glassfish alatt leszek kénytelen fejleszteni. Valaki tudna valami jó leírást hozzá, hogy mit hol találok benne illetve, hogy el tudjak indulni? Javat, mint programozási nyelvet ismerem (bár pár éve nem használtam), de most az új munkám miatt gyorsan bele kéne rázódnom a javaba újra, meg meg kéne ismernem a Glassfish működését
-
modder
aktív tag
Kíváncsiságból megnéztem, és igazad van
http://www.docjar.com/html/api/java/lang/String.java.html 2312. sorától látszik, hogy indexOf()-val splittel, ha(1)one-char String and this character is not one of the
RegEx's meta characters ".$|()[{^?*+\\", or
(2)two-char String and the first char is the backslash and
the second is not the ascii digit or ascii letter.[ Szerkesztve ]
-
whatnot
őstag
-
modder
aktív tag
Ilyen egyszerű esetekben, illetve ha fontos a sebesség, érdemes inkább megkeresni a ";" helyét String.indexOf vagy String.lastIndexOf függvénnyel, aztán a két adatot a String.substring függvénnyel kiszedni az eredetiből.
Fapadosabb megoldás, de gyorsabb.
10 sornál nem lesz érezhető különbség, de több száz sornál már igen. -
modder
aktív tag
válasz whatnot #3260 üzenetére
Servlet
Egy HttpServlet-ből származtatott osztály, amit te készítesz az alkalmazásodban, ebből akármennyi lehet.
Egy alkalmazásszervernek specifikáció szerint tartalmaznia kell servlet containert. Az alkalmazásod web.xml fájljában kell megadnod a <servlet> és <servlet-mapping> direktívákkal. Ezekkel mondod meg a servlet containernek, hogy melyik osztályaid a szervletek, és melyik szervlet hívódjon meg adott url request esetén. pl.<servlet>
<servlet-name>proba</servlet-name>
<servlet-class>hu.whatnot.ProbaSzervlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proba</servlet-name>
<url-pattern>/proba/*</url-pattern>
</servlet-mapping>A fenti linken látod, hogyan működik a servlet. Például a doGet metódusa HTTP GET kérésnél hívódik meg.
JSP
JavaServer Pages. Ez XML-szerűen, deklaratívan megírt fájl. Ez azt jelenti, hogy a JSP olyan kódot tartalmaz leginkább, ami HTML kódot állít elő. Tudsz benne HTML tageket használni, de van egy csomó, akár mások által feljesztett tag library ami megkönnyítni a HTML kód generálását: például végigiterálás listán, minden egyes elemnél kiírni valamilyen html kódot.
Ezen kívül lehet bennük írni szkriptleteket, amik <% %> közé tett java kód. Ez arra jó, hogy például a megjelenítéshez szükséges formára szabd a megjelenítendő adatot.
példa: http://140.109.18.7/examples/jsp/num/numguess.txt
A JSP Servletté fordul első meghívásnál, itt látod, hogyan http://www.informit.com/articles/article.aspx?p=130980&seqNum=5JSF
Ez már bonyolultabb dolog. JavaServer Faces egy MVCszerű keretrendszer, aminek az volt a célja, hogy úgy tudjunk szerver oldali GUI-t programozni, mint vastagkliens alkalmazást. A JSP kiváltására szolgál. A JSF-nek egyetlen szervlete van, ami az alkalmazásod base url-jére mappel, azon belül ő intézi a dolgokat, hogy mikor mit hívjon meg.
http://courses.coreservlets.com/Course-Materials/pdf/jsf/jsf2/JSF2-Programming-Basics.pdfEJB
Ez szintén bonyolult dolog
Enterprise Java Beanekbe üzleti logikát szoktak tenni. Általában az EJB osztályok azok, amik összekötik a megjelenítési réteget az adatbázissal/ perzisztencia réteggel. Ezek egyszerű Java osztályok (POJO-k). Az esetek 90%-ában állapotmentesek, tehát nincsen belső változóhoz kötött állapotuk, csak metódusaik. Belső változók általában más állapotmentes erőforrásokra hivatkoznak, mint pl. másik EJB.
egy EJB metódus például azt csinálhatja, hogy létrehoz egy új felhasználót, és elmenti az adatbázisban. (nyilván, ezt az alkalmazásfejlesztőnek kell megírnia).
Hogy mitől különb egy EJB egy POJO-nál?
Az osztályra tett @EJB annotációval az osztály az alkalmazásszerver által menedzseltté válik:
Te nem példányosítasz EJB-t, csakis az alkalmazásszerver teszi.
Minden egyes EJB-n kívülről érkező EJB metódushívás új adatbázis tranzakciót indít. (persze ez széjjelkonfigurálható)Itt látható, hogyan kapcsolódnak a technológiák egymáshoz:
http://www.cs.utsa.edu/~cs4413/lectures/topic7.html Főleg az első kép a lényeges. Ott a JSP mellé még tedd be a JSF-et gondolatban. -
n00n
őstag
Sziasztok!
Kellene egy kis segítség.
Adott az alábbi kód:
private void fajlbolBeolvas(InputStream fajl) {
Scanner fajlScanner = new Scanner(fajl, "UTF-8");
String sor;
while (fajlScanner.hasNextLine()) {
sor = fajlScanner.nextLine();
}
}Egy fájlból kiolvasok adatokat, és azokat soronként belerakom a sor változóba. Viszont egy sor így néz ki:
Személy neve;1987
Magyarán ott még ketté kellene választanom a ";" jel mentén. Erre van valami ötlet?
-
-
-
Dave-11
tag
Ha egy osztályt készítünk, akkor abban miért szokás felülírni az örökölt toString() metódust? Nézegettem forráskódokat a neten, és elég sok helyen vettem ezt észre.
:D Semmi :D
-
whatnot
őstag
Valaki el tudná magyarázni egyszerű, emberi nyelven, hogyan is működnek, kapcsolódnak egymáshoz az alábbiak? Vagy link is megfelel:
servlet, JSP, JSF, EJB
Olvasok a témában és kissé zavaros, hogy mi mit is csinál pontosan. -
TBG
senior tag
Meglepi nem volt. A kód volt egy kicsit egy laikus műkedvelő munkája...persze az vesse az első követ...mi sem voltunk annak idején jobbak. Bár annyit azért elmondanék a kollégának, hogy egy pár olyan megoldás van benne, ami elkerülhető lett volna, ha legalább 1 Java tutoriált elolvas kicsit figyelmesebben....
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
whatnot
őstag
Hali!
WebSphere adminisztrációhoz szeretném összeszedni a szükséges Java EE ismeretet.
Tudtok valamilyen oldalt, ahol totál kezdőnek van leírás? Nincs Java-s ismeretem.
Ennél jobb van-e?
Java EE 5 tutorial -
P3tson
csendes tag
Üdv!
Egy kis segítség kéne. Csináltam egy programot amiben pár dolgot nem tudok megcsinálni. Van egy menü az elején de a visszalépést nem tudtam megoldani benne ami elég idegesítő. A másik dolog pedig a szálkezelés.. néha így beakad az egész 1-2 mp-re és megy tovább. Egyébként egy ilyen kis játék lenne ez... suliba kéne majd vizsgafeladatnak. Ha valaki tudna segíteni azért nagyon hálás lennék. Feltöltöttem a programot ide:
http://www.filedropper.com/csirke2
[ Szerkesztve ]
-
Soak
veterán
válasz Peter Kiss #3252 üzenetére
Miert, en azt irtam?
-
-
Dave-11
tag
Köszönöm a gyors válaszokat. Még nem teljesen értem, de már kezdem kapizsgálni. Ha elérek a könyvbe ehhez a fejezetben biztos miden tiszta lesz.
Még egyszer köszönöm:D Semmi :D
-
TBG
senior tag
És akkor még ott lesz az abstract class is, amit gyanútlan Java fejlesztők nem mindig tudnak megkülönböztetni az interfésztől
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
modder
aktív tag
válasz Dave-11 #3239 üzenetére
Ha már a könyvben szó esett arról, hogy "az osztály implementálja az x interfészt", akkor gyanítom, hogy egy valós példa is szerepel az interfész alkalmazására.
Többek között azért jó egy interfész, mert elrejti az osztály konkrét implementációját (fordítási időben).
Egy egyszerű példa a Swing ActionListener interfész amit arra használhatsz, hogy gui eseményekre (pl. gomb megnyomása) valamit reagáljon a programod.
A GUI komponens .addActionListener( ActionListener listener ) metódusának egy olyan objektumra van szüksége, aminek van actionPerformed( ActionEvent e ) metódusa. Tehát létrehoztak neki egy interfészt, amiben deklarálták ezt a metódust, ez lett az ActionListener interfész. Ezzel kényszerítik ki, hogy csak olyan objektumot adjál át ennek a metódusnak, aminek megvan a megfelelő actionPerformed( ActionEvent e ) metódusa.Vissza a fordítási időhöz: Látható, hogy a Swing készítőket nem érdekli, hogy miután lefordították a Swing library-t milyen ActionListener objektumokat fog létrehozni a fejlesztő, lehet azoknak az objektumoknak hatszáz másik metódusa is, és mindegy, hogy mit csinál. Ami a fontos, hogy a fejlesztő által létrehozott listener objektumoknak meglesz az elvárható tulajdonsága: lesz neki actionPerformed( ActionEvent e ) metódusa.
[ Szerkesztve ]
-
Davs
tag
válasz Dave-11 #3239 üzenetére
Egy intefesz csak definialja a metodusok neveit. Ha az osztalyod implementalja az interfesz, akkor az osztalynak definialnia kell MINDEN metodust, ami az interfeszben volt. Ahogy az elottel szolo peldajaban is latod, a MyService interfeszben csak a metodusok neve van definialva. A MyServiceImpl osztaly implementalja a MyService interfeszt, ezert implementalnia kell a get/setSomething metodusokat.
Ez ez egesz iterfeszes dolog pl arra jo, hogy ellenorizni tudod, hogy egy osztaly implementalja-e az adott interfeszt, es ha igen, akkor biztosan tudod, hogy az osztaly tartalmazza az interfeszben definialt metodusokat stb.
-
TBG
senior tag
válasz Dave-11 #3239 üzenetére
Pár szó akkor.
Interfész:
public interface MyService {
public void setSomething();
public String getSomething();
}
public class MyServiceImpl implements MyService {
@Override
public void setSomething(String something) {
// Do something...
}
@Override
public String getSomething() {
return "Some String";
}
public void setFoo(String foo) {
// Do anything else...
}
}
public class Something {
public static void main(String[] args) {
// Ebben az esetben csak azokat a metódusokat látod, amiket a MyService interfész deklarál....
MyService myService = new MyServiceImpl();
myService.setSomething("Hehe");
String something = myService.getSomething();
// Ebben az esetben látod az interfész által deklarált metódusokat és az egyebeket is.
MyServiceImpl myServiceImpl = new MyServiceImpl();
myServiceImpl.setSomething("Hehe");
String something = myServiceImpl.getSomething();
myServiceImpl.setFoo("Foo");
// Röviden...
}
}[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
MrSealRD
veterán
válasz Dave-11 #3239 üzenetére
Türelem...Olvass tovább és akkor tiszta lesz. Nem véletlen nem tart még ott a könyv, hogy ezt tárgyalja.
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
Dave-11
tag
Még csak nemrég kezdtem el tanulgatni a Java nyelvet, de a tankönyv, amit olvasok már többször említette az "interfész" szót, és ezt is: "az osztály által implementált interfészek".
Később persze ezt is tárgyalja majd a könyv, de már nagyon kíváncsi vagyok rá, beleolvasni meg inkább nem akarok előre.
Csak egy rövid összefoglalóként mégis, mik ezek az interfészek, mire jók, és mit jelent az hogy egy osztály implementál egy interfészt?:D Semmi :D
-
modder
aktív tag
Hali,
Mivel még nem vagyok világhírű a blog postjaimmal, ezért teszek egy önző kísérletet a saját népszerűsítésemre
Ha valakit érdekel a JSF, csináltam egy postot arról, hogyan szenvedtem végig egy problémát rossz megközelítéssel, és mi lett volna a helyes.
http://palkonyves.blogspot.hu/2012/12/ive-been-using-postconstruct-wrong-way.html
A feedbackek welcomeok!
-
tvamos
nagyúr
Sziasztok!
Nagyon uj vagyok Java programozasban, (Hello word szinten tarto,) es nem is akarok bonyolult appokat irni, kormonfont strukturakkal, meg rendezesekkel. Ellenben a soros portot (USB Virtual) kene hasznalnom. Segitenetek nekem, hogy kell?
Koszi! Udv, Tomi"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János
-
tknof1871
őstag
válasz Superhun #3231 üzenetére
Azt reméltem valahol csak rögzítette legalább azt az állapotot, ami a program indulásakor volt. Tehát azt elfogadom, hogy elfelejti azokat a fájlokat, amiket a program indítása és a Feladatkezelőből történő leállítása között adtam a letöltési listához. De illene emlékeznie azokra, amiket korábban adtam a letöltési listához.
Szerintem ez a Java-s letöltőprogram lassította le a gépem. Mikor az utolsó nagyobb fájlcsomagot hozzáadtam a listához nem bírta és szinte lefagyott a program. Pedig mindenki dicsérte.Windows 10 Home 64 bites operációs rendszer; LG G4 6.0 Android verzió
-
tknof1871
őstag
Üdv! Van egy letöltéskezelő program, a JDownloader, amit Java nyelven írtak. Nagyon lelassult a Windows, ezért a Windows Feladatkezelőben az Alkalmazásoknál leállítottam a JDownloadert. De mikor később megint elindítottam, akkor a letöltési lista üres volt. Vissza lehet hozni a letöltési listát vagy elvesztettem?
Bocs, hogy itt teszem fel a kérdést, de már máshol megtettem, eltelt 24 óra és nem volt válasz. Hátha itt valaki tudja.Windows 10 Home 64 bites operációs rendszer; LG G4 6.0 Android verzió
-
modder
aktív tag
válasz Taoharcos #3228 üzenetére
Akkor gondolom a hiba az egy fordítási hiba annál a kódrésznél egy szép hibaüzenettel. Nem árt, ha legközelebb azt is beírod, nem csak hiba. A vízvezeték szerelőnek sem mondod, hogy rossz a zuhanyzó, mert kicserléi az egész zuhanyfülkét, közben pedig csak a csap csöpög benne..
Na de a lényeg, hogy az ott egyáltalán nem jó. azt a for ciklust tedd a konstruktorba olyan helyre, hogy a benne használt változók már inicializálva legyenek.
mert az ott nem egy függvényhívás, hanem tömb definíció, és tömböt többek között úgy tudunk definiálni, hogy: tipus[] tomb = new tipus[]{ elem1, elem2, elem3 }
Plusz nem árt, ha az alapokkal tisztában vagy, mert lehet kérdezni, de senki nem fogja helyetted megtanulni
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html[ Szerkesztve ]
-
Taoharcos
aktív tag
Nem is a JSF a lényeges. Arraylist-ből datatable dolog lenne lényeges.
Ebből a példából indultam ki.
Csak itt az adatok bele vannak "égetve" a kódba ezen a helyen:
private static final Order[] orderList = new Order[] {
new Order("A0001", "Intel CPU",
new BigDecimal("700.00"), 1),
new Order("A0002", "Harddisk 10TB",
new BigDecimal("500.00"), 2),
new Order("A0003", "Dell Laptop",
new BigDecimal("11600.00"), 8),
new Order("A0004", "Samsung LCD",
new BigDecimal("5200.00"), 3),
new Order("A0005", "A4Tech Mouse",
new BigDecimal("100.00"), 10)
};Ezt szeretem volna egy for ciklussal megvalósítani. De még nagyon-nagyon kezdő vagyok.
[ Szerkesztve ]
-
MrSealRD
veterán
Hűű...hát akkor passz. Csak tippeltem hátha segít valamit. Ant-al nincs tapasztalatom...csak Maven-el, az is kevés. De nem kedveltem meg túlságosan eddig...
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
addikt
válasz MrSealRD #3224 üzenetére
Itt nem látok ilyesmit sajnos.
Arról lenne jó valahogy infót szerezni, hogy module projectnél pontosan milyen targetek futnak le és mikor, de egyszerűen nem találok infót róla.
Mert egy sima java project build-impl.xml fájlba látom ezeket a pre/post targeteket, de a module projectébe semmi ilyesmi nincs, mondjuk clean meg release se, mégis lefutnak, szóval nem igazán értem. -
MrSealRD
veterán
Nálam Maven-be a parent projekt-en van olyan, hogy 'Build with dependencies'...
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
addikt
Sziasztok,
Netbeans+ant csodával kapcsolatban lenne kérdésem.
Adott egy module project netbeansben, amihez van x darab wrapped jar megadva a library-ben.
Azt szerettem volna elérni, hogy amikor a module-ra nyomok egy clean/build-et, akkor a kapcsolódó projekteket is clean/build-elje s másolja be a jar-okat a module megfelelő könyvtárába.
Ezen leírás method 2-es ágán indultam el, de ezzel az a gond, hogy a clean kitörli ugye a jar-okat, utána akar egy compile-t csinálni a modulon, de mivel a release csak ez után futna le, így nincsenek meg a jar fájlok amikből beimportálná a függőségeket, így elhal a compile.
Próbáltam úgy átírni, hogy release helyett -pre-compile vagy -post-init targetet használok, a lényeg ugye, hogy még compile előtt megcsinálja, de ezek egyszerűen nem futnak le, echo-val próbáltam szöveget kiíratgatni, de nem jelennek meg, olyan mintha module projectnél nem lehetne használni ezen targeteket.
Gugli nagyon nem akar a barátom lenni, sehol semmi értelmes nincs ezzel kapcsolatban.
Van ötletetek hogy a fenébe kellene működésre bírni? -
Taoharcos
aktív tag
Sziasztok!
Arraylist tartalmát szeretném datable segítségével megjeleníteni JSF-ben. De nem tudom mi lenne a jó megoldás. Én ezzel próbálkoztam eredménytelenül:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans;
import database.Database;
import java.util.ArrayList;
/**
*
* @author Zoli
*/
public class AllWordBean {
//private int index;
ArrayList <Integer> idList;
ArrayList <String> hunList;
ArrayList <String> engList;
database.Database database = new Database();
int index;
public AllWordBean(){
database.setQuery("", true, false);
database.execQuery();
this.idList = database.getIdList();
this.hunList = database.getHunList();
this.engList = database.getEngList();
this.index = idList.size();
}
private allWordTable[] wordTable = new allWordTable[]{
for(int i = 0; i<index; i++){
new allWordTable(idList.get(index), hunList.get(index), engList.get(index));
}
};
public allWordTable[] getallWordTable(){
return wordTable;
}
public class allWordTable{
int id;
String hunw;
String engw;
public allWordTable(int id, String hunw, String engw){
this.id = id;
this.hunw = hunw;
this.engw = engw;
}
public String getEngw() {
return engw;
}
public String getHunw() {
return hunw;
}
public int getId() {
return id;
}
public int getIndex(){
return index;
}
}
}Lényegében ezzel e résszel van a bibi:
private allWordTable[] wordTable = new allWordTable[]{
for(int i = 0; i<index; i++){
new allWordTable(idList.get(index), hunList.get(index), engList.get(index));
}
};de nem tudom hogyan lehetne az arraylistet megjeleníteni jól.
[ Szerkesztve ]
-
modder
aktív tag
Nem tudom pontosan hogy akarod megoldani a megjelenítést. Régen volt JSP. ebből ugye servlet generálódott, ahol a JSP statikus részei final stringek voltak, tehát szépen benne maradt a memóriában, nem hozta őket létre újból minden requestnél. Én JSF-et használok, de egyszerű weboldalakra kiváló és nagyon kiforrott a String template.
Én arra gondoltam, hogy ha magát a template-et, mint Stringet egy Singleton osztályba beolvasod egyszer pl. fájlból, amikor szükség van rá, és utána onnan éred el, akkor a Singletonod alkalmazáson belül de, requestek között megmarad, így a beolvasott string template is megmarad a memóriában. Sőt, requestenként ugyanazt a singleton-t fogod elérni. Persze fontos, hogy ezt az osztályt tényleg csak stringek tárolására használd, és ne legyen benne semmi állapot a template stringeken kívül. Plusz a fájlból beolvasás metódusát és a getInstance metódusát nem árt egy mutex-szel védeni, elkerülendő, hogy két thread (két szimultán request) egyszerre inicializálja.
Ez amúgy csak most jutott eszembe a kérdéseddel kapcsolatban, lehet hogy valahol hibádzik a gondolatmenetem, de tekintve, hogy egy JVM-en és egy classloader hierachián belül ugyanazt az osztálypéldányt használja az alkalmazásod requestektől függetlenül, gondolom működik.
[ Szerkesztve ]
-
Lacces
őstag
Plusz, arra van valami example a neten / tudnál javasolni vagy kereső szót, hogy amit ajánlottál a statikus html oldalak, vagy amit generálok, hogy azt hogyan lehet megvalósítani a singleton-nal? Fúú, ez nagyon érdekel.
Köszi a részletes választ . .
Mert majd webszervert akarok bérelni, és hogy ha jön napi szinten a requestek, akkor hogyan hat rá a terhelésre, és ennek utána olvasva ellentétes infókat kaptam... (bár néha a net tele van szútyokkal).
És elbizonytalanodtam...[ Szerkesztve ]
-
modder
aktív tag
-
modder
aktív tag
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Ezt hol olvastad meglepődnék ha így lenne. Totál elveszítené a webszerver az értelmét, és gyakorlatilag CGI-ként futtatnád így az alkalmazásodat.Tessék, itt van egy összehasonlítás arról, hogy melyik webszerver mennyi memóriát használ idle állapotban http://www.jvmhost.com/articles/memory-usage-comparison-of-java-application-servers-and-applications -- 1 jetty instance átlag 50 megabyte.
Erre jön még az alkalmazásod memóriaigénye, ami nagyban függ az alkalmazásod felépítésétől, az output nagyságától. Pl. ha csak az outputot nézzük (a belső struktúrát nem), akkor átlagosan 16 bites karakter hosszal számolva 20 megabyte memóriába 1 250 000 karakter fér bele. ami átlagos karakter per oldal alapján ~ 43 wikipedia oldalnak felel meg.
Erre jöjjön rá még az alkalmazásod belső struktúrája. Azért látni, hogy ez egy eléggé elnagyolt példa, egy kis weboldal nem fog 20 megabyteot elhasználni oldallekéréseknél, max pár megabyte. Nem beszélve arról, hogy statikus adatokat (pl. html template-eket amibe csak beszúrod a generált tartalmat) megosztasz a lekérdezések között, mert bent marad a memóriában. Pl. ha egy singletonban tárolod ezeket, és nem próbálod meg beolvasni a fájlból minden egyes oldallekéérésnél.
Szóval egy relative kis weboldal max pár megabyte memóriát fog lefoglalni requestenként.Plusz korlátozhatod a memóriát JVM beállításokkal (pl. max heap size) meg hasonlók, így ha kezd kifogyi a memóriából a webszerver, a GC majd elintézi a régi objektumokat. Szerintem elég neki kb 500 megabyte memóriát adni.
Szerintem ami a legfontosabb, ha kevés memóriát szeretnél használni, hogy ahol dinamikus string összefűzés van, ott használj StringBuildert vagy StringBuffert (nem emlékszem melyik a nem threadsafe de azt). Pl. A stringet több objektum, függvény állítja elő, vagy cikluson belül generálod. Különben a String + operátor új stringet hoz létre mindig. Kiemeltem, hogy dinamikusan, mert ha csak kényelmi szempontból egy ilyen változót deklarálsz, hogy
String fejlec = "Üdvözöllek \n" + "a\n" + "weboldalamon!"; akkor a fordító automatikusan egybefűzi ezeket a stringeket, úgyhogy no para.Szó ami szó, napi 200 lekérdezésre simán elég a 2GB, de ha spórolni akarsz adj rá 500 megabyte-ot, az is bőven elég lesz.
[ Szerkesztve ]
-
Lacces
őstag
Hali,
Fontos kérdés, ha van valakinek tapasztalata kérem szóljon .
Magamnak akarok elsőkörben egy java webszervert, szeretnék pár webprojektet futatni rajta.
Jetty lenne a webszerver + PostgreSQL (esetleg mongodb is). Szerintetek egy ilyen webszervernek mennyi memória kell?
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Mert én úgy tudtam, hogy nagyon terhelt webalkalmazásoknál a Java jobb választás, mert gyorsabban kitudja szolgálni mint a többi azonos hardveren (stackoverflow-on olvastam talán). De így picit el vagyok bizonytalanodva.
Eleinte tényleg tanulás céljából és hobbi projekteket üzemeltetnék (4-6 db).A kisebb projekteknél, amik max olyan "közepes" lesznek, azokra a Grails-t használnám (Groovy in Rails régebbi nevén) 2db-ra pedig talán a Spring MVC (1-kre biztosan)
Nektek mi a tapasztalatotok, javaslatok? 2GB elég lehet? (talán napi max 200 lekérés).
[ Szerkesztve ]
-
kltz
tag
Sziasztok!
Győri székhelyű cég android és iOS fejlesztőket keres. Akit érdekel privátban érdeklődjön.
Üdv KLtz
-
Karma
félisten
válasz tragiQss #3210 üzenetére
Erre van az általános Programozás topik.
De az ilyen általános "embert keresek" helyett a konkrét kérdéseket ott is jobban toleráljuk.“All nothings are not equal.”
-
tragiQss
tag
válasz Peter Kiss #3209 üzenetére
Van egy szomorú hírem: max. hasznom annyi származna belőle, hogy ezt is tudnám.
Most szemeteljek ide a python+Qt duóval kapcsolatos töketlenkedéseimmel?
Azért itt próbáltam keresni valakit, mert java-s körökben már merem feltételezni, hogy OOP témában jártas emberre is bukkanok, a .net annyira távol áll tőlem, hogy oda be sem nézek, egyéb nyelveknél meg... szóval vannak rossz tapasztalataim.Egyébként ilyen alapon senki ne segítsen senkinek, mert esetleg még anyagi haszna származna a másiknak az "ingyenes" segítségből...
No, ennyit a kioktatósdiról... Ha valaki esetleg úgy érzi, hogy pár elméleti kérdésben ki tudna segíteni...
----------------------------
Egyébként az egész csak annyi, hogy szeretném megtudni, hogyan lehet szétosztani a feladatokat egy MVC alapokra építkező desktop GUI egyes elemei között? Viszont ehhez tartozna egy féloldalnyi leírás, aminek semmi köze a java-hoz.[ Szerkesztve ]
-
Peter Kiss
őstag
válasz tragiQss #3208 üzenetére
Tudom, egy rohadék vagyok, nem tehetek mást, mint megpróbálok napról napra ezzel a tudattal élni.
Amennyiben szimpla megértési/tervezési gondjaid vannak, akkor kérdezz a fórumon, itt vagy máshol egy valós helyzetből kiragadott példán keresztül (több ember egyébként is több mindent látott). Emellett, ha az általad épített alkalmazásból neked profitod származik bármilyen módon, ne várd el, hogy valaki ingyen szakít csak rád az idejéből.
-
tragiQss
tag
válasz Peter Kiss #3207 üzenetére
Nem (ki)oktatást kértem...
Pláne nem, hogy az általam kitalált programot más írja meg...
És hát... tőled eltérően vannak segítőkész emberek is a neten, csak momentán egyikük sem foglalkozik desktoppal... -
tragiQss
tag
Keresek valakit, aki...
Tudja, mi az az MVC és képes használni desktop programban is.
Ismeri a S.O.L.I.D. elveket.
Hajlandó lenne pár mondatban (leginkább privát v. mail) kisegíteni, egy töketlenkedő, félművelt kezdő amatőrt...Nyelvfüggetlen (most épp pythonnal játszom), elsősorban elmléleti gondjaim adódtak. Képtelen vagyok szétválasztani az egyes rétegeket, nem tudom a témában olvasottakat a magam gyakorlatára átültetni, ehhez szeretnék segítséget kérni. (viszont a topikot nem akarom terhelni a hülyeségeimmel, ezért kellene privátban)
-
Karma
félisten
-
sztanozs
veterán
válasz pvt.peter #3202 üzenetére
google: java decompiler
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
pvt.peter
őstag
Sziasztok!
Azt szeretném kérdezni, hogy van-e hatékony program arra, hogy *.class fájlokat részlegesen vagy teljesen visszafejtsünk *.java forráskóddá? (Ha igen, ki melyiket használta, melyiket javasolja?)
Választ előre is köszönöm.
Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
Lacces
őstag
Sziasztok!
A Jetty szervernek elég 1GB memória ram a zökkenőmentes működéshez? Max 6 oldal lenne kiszolgálva és nem hinném, hogy fél évig nagyon terhelve lenne . Látogató számot is olyan max napi 500-ra becsülném.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Path of Exile 2
- Szólánc.
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Futás, futópályák
- Windows 11 - HP Pavilion – 15 cc516nh (2LE41EA) laptopon Intel I3-7100U TPM2.0
- Apple asztali gépek
- De mennyi az annyi?
- Kémia topic
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- AKCIÓ!!! GAMER PC: RYZEN 9 5900X + RTX 3060 12GB GDDR6! GARANCIA/SZÁMLA!!!
- BONTATLAN Új Iphone 16 PRO 128Gb - 1TB Független 1év Apple GARANCIA Deák Térnél Azonnal Átvehető.
- BONTATLAN Új iPhone 16 PRO MAX 256-512GGB Független 1év Apple GARANCIA Deák Térnél Azonnal Átvehető.
- Tamron SP 70-200mm f/2.8 Di VC USD G2 objektív ( Nikon )
- Azta! Yoga Slim 7 Prémium Ultrabook 14,5" -40% AMD Ryzen 5 7640S 16/512 RADEON 760M 2GB 2,9K OLED
Állásajánlatok
Cég: Axon Labs Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest