- AMD vs. INTEL vs. NVIDIA
- Milyen monitort vegyek?
- Amlogic S905, S912 processzoros készülékek
- Nem indul és mi a baja a gépemnek topik
- DUNE médialejátszók topicja
- Vezetékes FEJhallgatók
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Milyen egeret válasszak?
- Utánajártunk, hogy melyik memória mennyire drágulhat
- Majdnem megfelezi a GeForce GPU-k gyártókapacitását az NVIDIA?
Ú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?:))
- AMD vs. INTEL vs. NVIDIA
- One otthoni szolgáltatások (TV, internet, telefon)
- Path of Exile 2
- sziku69: Fűzzük össze a szavakat :)
- Milyen monitort vegyek?
- Luck Dragon: Asszociációs játék. :)
- Battlefield 6
- Elektromos autók - motorok
- Honor Magic V3 - mágikus realizmus
- Milyen légkondit a lakásba?
- További aktív témák...
- Asus ROG Zephyrus G16 Intel Core Ultra 9 185H/RTX 4060/16GB DDR5/1TB SSD eladó NÁLAM A LEGOLCSÓBBAN!
- MacBook Pro M1 13 inch 8/512GB magyar bill nálam a legolcsóbban
- Fujitsu 27" B27-8 TE Full HD 1920x1080 hófehér monitor állítható magasság, PIVOT, HDMI számla + gar
- AMD Ryzen 5 Félkonfig eladó!
- Asus Z13 Flow Acronym Limited Edition
- Új, Aktiválatlan iPhone 16 Pro (256 GB) (rendelhető)
- Apple iPhone 15 Pro Max 256GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Telefon felváráslás!! Xiaomi Redmi Note 11, Xiaomi Redmi Note 11 Pro, Xiaomi 11 Lite
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi
nem is hatékony



