Hirdetés
- One mobilszolgáltatások
- Huawei P30 Pro - teletalálat
- Google Pixel topik
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Xiaomi 15T Pro - a téma nincs lezárva
- Milyen okostelefont vegyek?
- Samsung Galaxy Z Flip5 - ami kint, az van bent
- Vivo X200 FE – fenséges méret
- Xiaomi 13 - felnőni nehéz
- Vivo X200 Pro - a kétszázát!
Ú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?:))
- BESZÁMÍTÁS! ASUS H510M i5 11400F 16GB DDR4 500GB SSD RTX 2060 6GB Zalman T4 Plus Cooler Master 650W
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5060 Ti 8GB GAMER PC termékbeszámítással
- LG 55G4 - 55" OLED evo - 4K 144Hz & 0.1ms - MLA Plus - 3000 Nits - NVIDIA G-Sync - FreeSync Premium
- Apple iPhone 13 ProMax 256GB Kártyafüggetlen 1év Garanciával
- Dell Precision 7560 Workstation i7-11850H 32GB RAM 512GB SSD Nvidia RTX A3000 6GB 1 év garancia
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi
nem is hatékony



