- Továbbfejlesztette az SP szériás, kompakt tápegységeit a Lian Li
- Itt van az ASUS legfrissebb, AMD platformra épülő mini PC-je
- Jegeli pénznyelő projektjét az Apple, az okosszemüvegben látják a jövőt
- Olcsónak ígérkező, madzagos egér jelent meg az ASUS ROG-os portfóliójában
- Kriptobányászatra használta az AI-ra vásárolt hardvereket a Northern Data?
Új hozzászólás Aktív témák
-
modder
aktív tag
Hali!
talán ez http://www.javapractices.com/topic/TopicAction.do?Id=42itt pedig fönt van egy jó kis ábra, hogy melyik osztályt mire tudod használni:
http://docs.oracle.com/javase/tutorial/essential/io/file.htmlÉn a helyedben azt csinálnám, hogy beolvasnám a fájlt sorról sorra. Megváltoztatnám soronként ami kell, és egyből írnám ki egy másik fájlba (BufferedReader, BufferedWriter). A procedúra végén pedig ezt a tmp fájlt átnevezném az eredeti fájlra.
A kicserélés könnyen megy String függvényeivel. Reguláris kifejezéseket ne használj, mert Javaban nagyon lassú.
Ha nem akarod megkeseríteni az életed, akkor arról tegyél le, hogy egy fájlt szimultán olvasol és írsz
nem is hatékony
-
modder
aktív tag
http://bytes.com/topic/asp-net/answers/764307-bll-dal-how-they-different
Ezt magamnak is bukmárkoltam
-
modder
aktív tag
válasz
MrSealRD #2633 üzenetére
Ez úgy hangzott, mintha cinikusan idéztél volna egy 4 évvel ezelőtti cikket
-- de amúgy igazad van részben. még annyival egészíteném ki, hogy ez természetesen nem jelenti azt, hogy bármilyen esetben lecserélhető egy relációs adatbázissal. És még jó darabig sok helyen nem is fogják lecserélni.
-
modder
aktív tag
Ezek alapján az információk alapján nehéz eldönteni, hogyneked milyen tervezési mintákra van szükséged, az meg a másik, hogy olyan sok tapasztalatom nekem sincsen, hogy séróból vágjak 10-20 mintát
Ahogy látom, szeretnéd jól átgondoltan elkezdeni a projektedet, ami mindenképpen jó. Ehhez tudok adni pár tanácsot, ezek elcsépeltnek tűnhetnek, de érdemes betartani őket, hogy ne idő közben jöjj rá, hogy valami szar vagy nem elég rugalmas
Specifikáció: Mindenképpen próbáld meg jól specifikálni azt, amit szeretnél az oldalon: Milyen adatokat akarsz megjeleníteni, hogy akarod megjeleníteni, a felhasználók milyen interakciókra képesek az oldalon (use-case-ek), hogyan akarod őket elszeparálni egymástól. Milyen oldalak lesznek egyáltalán. Ez az alapja az egésznek, ha ebben nem vagy biztos, akkor gondolkodj még rajta.
Modell/Adatbázis: A speci függvényében találd ki a modelledet. Vagy adatbázisból indulj, vagy osztályokból. Én adatbázis modellből indulnék, mert tudom, hogy úgy biztosan hatékony és normalizált lesz az adatbázis (már hanem valami elosztott/no-sql megoldást teszel mögé). Ez még csak az adatok és az adatok közötti interakció, ebben nincsen benne a felhasználói input meg böngészés.
Modell 2 /BLL: Az adatbázis alapján megtervezed a modelledet, osztályokat, amik képesek mindenfélét elvégezni az adatbázisban, amire szüksége lehet a szoftverednek: új diagram, diagram lekérdezése, kérdések, tárátáttá... Itt már érezni fogod, hogy mik azok a pontok, amiket lehet, hogy egyszerűbben is meg lehetne valósítani valami design patternnel, és akkor felmész wikipédiára, és véginézed az összeset
Na, ha ezekkel megvagy, és úgy látod, kiválóan meg tudsz valósítani mindent modell szinten, amit szeretnél, akkor már "gyerekjáték" lesz megcsinálni a controllert és a view-kat, amik az adatokat megjelenítik. Ne felejtsd el, hogy a Java erősen objektumorientált nyelv, ezért nagyon is van értelme osztályokban gondolkodni.
Egy szó, mint száz: Tervezés, tervezés, tervezés!
Persze lehet, hogy fognak jönni azok, akik mondják, hogy manapság az agilis módszertanokat használják a gyors szoftverfejlesztés miatt, és nem kell ennyi időt szánni a tervezésre... erre csak azt tudom mondani, hogy: DE!
-
modder
aktív tag
az MVC az architektúra, nem tervezési minta. tervezési minta nagyon sokféle van, és sokfélét lehet használni MVC-n belül is, hogy egyszerűsítsd, hordozhatóbbá tedd a kódodat.
Én nem tudok hirtelen mást architektúrát MVC-n kívül, szerintem ez a legelterjedtebb.
De hogy valami érdemi információt is mondjak, én még ketté tudnám osztani az MVC model rétegét:Model:
DAL - Data Access Layer
BLL - Business Logic Layer
Controller
ViewA DAL fogja tartalmazni az alap objektumaidat a modelledben, általában ezt valósítják meg a külfönféle ORM-ek. (ügyfél, autó, számla, kutyafüle...) Más értelmezésben, ahogy a neve is mutatja: ez a réteg kommunikál közvetlenül az adatbázissal: create, update, read, delete
A BLL pedig komplexebb feladatok megoldása a DAL-béli objektumokon, amiknek nincsen köze még a view-hoz vagy a program flow-hoz, amit a controller biztosít.
Például: Ha egy banki szoftvert csinálsz, és regisztrálsz egy új felhasználót, akkor BLL-ben cisnálod meg a regisztrál függvényt, ami a DAL rétegben létrehoz egy felhasználót és egy kezdő számlát is. -
modder
aktív tag
gondolom a setCand()-on belül látod, hogy mikor változtattál egy elemet, akkor true-val térsz vissza.
Ha összeadod az nyilván nem biztos eredmény. egyébként ha 81 element egyenként összehasonlítasz, az p*csa, semmit nem számít. egyébként is csak az első különbözőségig kell menni a ciklusban. -
modder
aktív tag
Ahogy Chipi333 is írta, a get-eket tudod láncolni.
Amúgy gondolkodtam Map-en is pl.: -
modder
aktív tag
válasz
Fooler89 #2598 üzenetére
Nem tudom, hogy ez miért bonyolult. akár egy ciklusban is megoldható, én SWT-ben így oldanám meg (pszeudo kód), nem hiszem, hogy SWING-ben ez nagyon különbözne.
List<JPanel> jpanels = new ArrayList<JPanel>();
for( int i = 0; i< 64; i++ ){
JPanels p = new JPanel( .. );
//beallitod p koordinatait, kiterjedeset
...
//hozzaadsz egy eventlistenert click esemenyre
p.addClickListener( new ClickListenerInterfesz(){
void clickEvent( Event e ){
//beallitod a kivant szint
e.target.setBackgroundColor(...);
}
);
jpanels.add(p);
}sőtt, nem is valószínű, hogy kell minden egyes JPanelhez új ClickListener-t példányosítani, mert általában az esemény target-jéből (melyik elemre vonatkozott) ki lehet nyerni magát a GUI elemet.
-
modder
aktív tag
Ezt jó tudni, hogy a Spring, mintegy alternatívája a Java EE-nek. Nem foglalkoztam vele még, csak tudom, hogy van.
A webhostingról meg annyit, hogy mindenért fizetni kell. nem vagyok jól tájékozott hosting szolgáltatások terén, de szerintem egy javás hosting nem kerülhet többe, mint egy hasonló tudású php-s hosting árának másfélszerese. Tudom, hogy válság van meg mindenki szegény, de azért egy szolgáltatásért ki lehet fizetni évi mondjuk 8 ropit
-
modder
aktív tag
válasz
Taoharcos #2582 üzenetére
Servlet/JSP/JDBC az alap. Én ezekkel nem is nagyon foglalkoztam, inkább megpróbáltam kapásból JSF, EJB, JPA-t tanulni. Ez a kombó már komolyabb alkalmazások elkészítésére is alkalmas, és jobban karbantartható, de nem egyszerű megtanulni. Lényegesen lassabb megtanulni, mint az előbbit, de ha rendes Javas karriert akarsz befutni, mindenképpen érdemes ezt tanulni, szerintem. (vagy Struts2 ill. Spring3)
JSF mellett még ott van a Struts2 és a Spring framework 3. Mind a három MVC architektúrájú, nagyon sokat tud, de nem foglalkoztam az utóbbi kettővel. Azt tudom, hogy a JSF az bekerült a Java specibe, így hivatalosan támogatott keretrendszer, nagyon jól együttműködik EJB-vel és JPA-val.
Lacces: Szerintem jó ötlet, még a JSP, JDBC kombóval is PHPval szemben, mert rendes objektumorientált szemlélettel tudsz dolgozni, és tisztább kódot tudsz írni, ezt a nyelv megköveteli. Csomó dolog nincsen benne, ami a PHP-t dinamikusabb, alkalmazkodóbb nyelvvé teszik, de pont ezek miatt a megszorítások miatt lesz majd értelmesebb és átgondoltabb a kód. (Persze Javaban is ott a Reflection API, amivel aztán csuda dolgokat lehet művelni)
-
modder
aktív tag
Igen, ha Java, akkor inkább Java EE-re kell gondolni, ami mindenféle apit és szolgáltatást nyújt middleware rendszerek létrehozására, illetve webprogramozásra.
Szóval Javaval kapcsolatban elsősorban nem felhasználói programokra kell gondolni, hanem háttér rendszerekre.
Bár egyébként nem tudom, hogy miért nem használják gyakrabban felhasználói programokhoz. Én mostanában Eclipse RCP-ben fejlesztgettem SWT-vel, és nagyon használható, natív hatású felületeket lehet lérehozni vele, de tény, hogy az MS WPF-től elmarad sokban. Amúgy pl. a Vuze torrent kliens teljes egészében Javaban íródott, és SWT-t használ.
-
modder
aktív tag
válasz
Fooler89 #2566 üzenetére
Én nem is értem ezt a kérdést.
Én SWT-vel bíbelődtem mostanában, és kódoltam a felületet, nem tervezővel csináltam, így nyilván könnyebben nyúlok hozzá a különböző elemekhez, mintha a generált kódból szeretném kiszedni az egyes elemek referenciáit.
Egyre tudok gondolni, hogy a kérdésed arra vonatkozik, hogyan tudsz hivatkozni a tervezővel megrajzolt felületen lévő elemekre, mert az valószínűleg egyenként hozta létre mind a 64 elemre a referenciát.
Ha nem akarsz sokat kódolni (egyenként beletenni a generált elemeket egy mátrixba), akkor bizony kódolnod kell... generáld le te az említett elemeket, és kapásból pakold is őket bele egy mátrixba vagy tömbbe, vagy tudom is én, ahogy ábrázolni szeretnéd a sakktábládat.
Egyébként a sakktábla modelleden is elgondolkodhatsz. Elképzelésem szerint szeretnéd váloztatni a kocka színét, ha rálép egy bábú, rajta van egy bábú, vagy ráklikkel valaki. Előbbi esetekben érdemes lehet származtatni vagy becsomagolni egy osztályba a JPaneleket, amik a kockákat jelentik (decorator pattern pl.), és így minden egyes panelhez tudsz majd rendelni állapotot: rajta van egy bábú, melyik bábú van rajta.
Ez a baj a swinggel, hogy vannak kifinomult form tervezők, amivel megcsinálod a csilli-villi felületet, de amikor már interaktívvá kell tenni, akkor bizony hozzá kell nyúlni kódban is, és akkor jössz rá, hogy igazából nem tanultál semmit a swinggel kapcsolatban azzal, hogy összekattintgattál valamit.
-
modder
aktív tag
-
modder
aktív tag
Hali, nagyjából jó, amiről beszéltek, de kicsit össze vagytok zavarodva.
Azt mondjátok, hogy "ha változtatsz a kódon, a JIT csak azt fordítja újra". De ehhez előbb nyilván bytekódot kéne generálni, szóval ez a példa nem jó.
A jvm interpreterként működik: veszi a bytekódot, és sorról sorra megfeleltetni egy-egy gépi utasításnak vagy jvm-beli utasításnak. Ilyen a PHP is, a python is, az összes interpretált nyelv.
Amitől a JVM-et Hotspot-JVM-nek hívják az a JIT, ami az alábbi tulajdonságot aknázza ki:
Általában elmondható, hogy egy program a futása során az idő 90%-át a programrészek (függvények) 10-20%-ában tölti el.és ebből jön a JIT működése:
A JVM futtatja a kódot, statisztikákat készít róla futás közben (profiling). Megtalálja ezt a 10%-ot, ahol a program a futása során a legtöbb időt tölti, majd ezeket a kódokat direktbe lefordítja a célgép gépi kódjára, majd beszúr egy ugrást az eredeti bytekódba (természetesen a memóriában, a .class fájlokba nem ír semmit), hogy most onnantól a gépi kódos rész fut.Az optimalizálás pl. abban nyilvánul meg, hogy a JVM látja, mik azok a feltételek, amik sok-sok lefutás után sosem teljesülnek vagy mindig teljesülnek, és úgy fordítja az adott kódrészletet gépi kódra, hogy ezeket a feltételeket alapból igaznak vagy hamisnak veszi
Például egy if-else ág mindig csak egyik fele igaz, akkor úgy fordítja le a kódot, hogy ki is hagyja a feltételvizsgálatot. Természetesen folyamatosan figyeli ezeket az előfeltételeket, és ha van 1 eset, amikor mégis lefutna a kioptimalizált rész, akkor az eredeti bytekódot futtatja interpretált módban.Szó sincs arról, hogy mindent gépi kódra fordít.
Remélem tisztáztam
Szerk:
még annyi, hogy ezek mind a program 1-1 futása során történnek. nincsen olyan, hogy a futását befejező program gépi kód részeit valahová elmenti, és ha újra futtatod, akkor azokat betölti. ezek mint just-in-time egy-egy futás alkalmával történő változtatások. ( ezt azért mondom, mert régen én így képzeltem)
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- HP USB-C Dock G5 (HSN-IX02) ÁFÁ-s
- Bomba ár! Dell Latitude 5580 - i5-7GEN I 16GB I 256SSD I 15,6" FHD I HDMI I CAM I W11 I Garancia
- Bomba ár! Lenovo ThinkPad Yoga 260 - i5-G6 I 8GB I 192SSD I 12,5" FHD Touch I W10 I Cam I Gari!
- Bomba ár! Dell Latitude 5500 - i5-8GEN I 16GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Garancia!
- Bomba ár! Dell Latitude 5400 - i5-8GEN I 16GB I 512SSD I 14" HD I HDMI I Cam I W11 I Gari
- Apple iPhone 16 128GB,Adatkabel,12 hónap garanciával
- DELL Precision 5540 Workstation i7-9850H Nvidia Quadro T1000 32GB 1000GB 15.6 új akksi 1év garancia
- GYÖNYÖRŰ iPhone 13 Pro 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3083
- BESZÁMÍTÁS! GIGABYTE A520M R5 5600X 16GB DDR4 512GB SSD RTX 2060 Super 8GB Zalman ZM-T7 Corsair 550W
- Azonnali A320 B350 X370 B450 X470 A520 B550 X570 chipset alaplap felvásárlás személyes/csomagküldés
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest