- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Barátokká váltak az eddig rivális AI-óriások
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Az Aura Displays hordozható monitorhármasa jól felturbózhatja a produktivitást
- Dual Mode-os IPS monitorral adott magáról életjelet a Gigabyte
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- iPad topik
- Vezetékes FEJhallgatók
- ThinkPad (NEM IdeaPad)
- ASUS notebook topic
- Vezeték nélküli fülhallgatók
- Milyen videókártyát?
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Nvidia GPU-k jövője - amit tudni vélünk
Új hozzászólás Aktív témák
-
disy68
aktív tag
válasz
don_peter #11697 üzenetére
Nem is biztos a komplex a megfelelő kifejezés, inkább olyanra kell gondolni, ami rendszerszintű feature lenne, ami nem igazán kivitelezhető natív megoldások nélkül. Szóval ha az egész megvalósítható egy böngészőn belül is, akkor sanszosan nem lesz gond. Persze a pontos képhez érdemes megnézni mit támogat a Flutter, mik a célok és az alapján meghozni a döntést. Amit írsz az nem tűnik problémásnak. Persze kis projektnek sem :-)
-
disy68
aktív tag
válasz
#68216320 #11642 üzenetére
CodeSource codeSource = YourMainClass.class.getProtectionDomain().getCodeSource();
File jarFile = new File(codeSource.getLocation().toURI().getPath());
String jarDir = jarFile.getParentFile().getPath();
A fentivel megvan a jar path-ja, hozzácsapod az elvárt fájlnevet és azt próbálod beolvasni, ha nincs ilyen fájl, akkor mehet fallback-nek a resource beolvasás. Esetleg a jar mappájában keresel bármilyen .properties fájlt és mindegyiket beolvasod, de ez már részletkérdés.
-
disy68
aktív tag
-
disy68
aktív tag
válasz
Csaby25 #11564 üzenetére
Akkor sanszosan a szokásos fizzbuzz/fibonacci jellegű feladatokra lehet számítani meg ilyen oldd meg iterációval/rekurzióval. Ha esetleg ennél több energiát fektetnének a dologba, akkor valami saját példa, amiből esetleg kiderül, hogy hogyan állsz hozzá egy feladathoz, hogyan gondolkodsz, ilyesmi.
Én annyit tanácsolok, hogy gondolkodj hangosan és ha a feladatnál értelmezhető, akkor kérj egy teszt esetet (bemenet-kimenet). És hajrá
-
disy68
aktív tag
válasz
sztanozs #11548 üzenetére
Azt hiszem itt mindenre kitérnek: rewriting history
-
disy68
aktív tag
válasz
yanpec #11453 üzenetére
Azért mert már egyik nagy böngésző sem támogatja őket, halott technológia.
Here are browsers that do not support Java Applet any more:
- Google Chrome
- Firefox
- Safari
- Microsoft Edge
- Opera -
disy68
aktív tag
válasz
Taoharcos #11414 üzenetére
meg kell nézni, hogy pontosan mit és hogyan csinál, hogyan volt használva a korábbi programból és hogyan a tiedből, ha ennyiből nem derül ki akkor utána nézel, hogyan lehet debug-olni, abból biztos kiderül, hogy mi okozza a problémát
aztán vagy máshogy használod vagy át/újra kell írni -
disy68
aktív tag
válasz
Taoharcos #11412 üzenetére
Mi az a dll, amit használsz? A hiba azért van, mert a dll-ben lévő kód az általa lefoglalt memórián kívül akar írni a memóriába, amit akár más process éppen használ. Ezt figyeli a runtime és lelövi. Jobb esetben bugos a dll-ben lévő kód, rosszabb esetben valami kártevő lakik benne.
-
disy68
aktív tag
válasz
togvau #11306 üzenetére
protected static <T extends AbstractInvoiceEntity> T getInvoiceEntity(AbstractInvoiceEntity originalEntity, Class<T extends AbstractInvoiceEntity> newClass) {
T newInvoice = newClass.newInstance();
(...)
return newInvoice;
}
valami ilyesmi vagy átadsz egy factory-t, ami létrehozza a kívánt objektumot -
disy68
aktív tag
válasz
togvau #11296 üzenetére
ha a fetch mód subselect, akkor n db kapcsolódó entity-vel n+1 query-t generál a hibernate, ez működik eager és fetch betöltésnél is, viszont a join fetch mód esetében 1 db query-t generál a hibernate, amivel lekéri a kapcsolódó entity-ket is, így ez instant eager betöltést jelent fetch type-tól függetlenül
én alapvetően a @NamedEntityGraph irányba mentem volna, ha nincs mód nagyobb refaktorra (bár ha ezt force-olja a projekt struktúra, akkor kb. mindegy, mert eager betöltés lesz a vége)
-
disy68
aktív tag
válasz
togvau #11294 üzenetére
"ott sem volt jó egyik dolog sem az EAGER-t leszámítva, amit a google kidob erre a hibára"
aham, mint ez meg ez, amikben kifejezetten azt írják, hogy ne használj eager-t ilyen helyzetben (első 2 találat)
Vlad Mihalcea blogját amúgy tudom ajánlani, ha hibernate és/vagy jpa a témakör.
-
disy68
aktív tag
válasz
javamonk #11292 üzenetére
Attól függ az "alakzat" az micsoda és hogyan kerül oda. Ha megoldható, akkor CSS animációkkal/átmenettel oldd meg szerintem, amit egy class-al és css változóval (sebesség) irányítasz. A sebességet meg átadod mint globális js változó (generálod jsp-vel a lap betöltésekor). Vagy lekéred http-n keresztül egy végponton.
Egy minta css transition-re.
-
disy68
aktív tag
válasz
javamonk #11280 üzenetére
Nem feltétlen ez lenne az első, amit javasolnék bárkinek is. Vannak hasznos részei, amikre alapulnak implementációk, amikkel szinte biztos találkozik az ember, ha ezekre a funkcionalitásokra lesz szükségük (xml/json feldolgozás, persistence, servlet). Annyit mindenképpen érdemes tudni, hogy mi ez és milyen ajánlásai vannak mely témakörökben.
Ennek ellenére én inkább javasolnám a Spring keretrendszert kezdésnek, ami egy elég naprakész és sokak által használt megoldás, akár csak web backend (és frontend), middleware vagy akár service és cli alkalmazásokhoz. Rengeteg elérhető anyaggal és nagy közösséggel mögötte.
Előtte - ha még nem foglalkoztál volna vele - a git használatát érdemes elsajátítani és alkalmazni. Valamint a java ökoszisztémához valamilyen dependency manegement eszköz használatát (maven/gradle) se árt ismerni. Utóbbiakkal a Spring kapcsán fogsz találkozni mindenképpen.
-
disy68
aktív tag
válasz
togvau #11260 üzenetére
"Valami maven wrappert írt, hogy be kell rakni a projektbe, az benn is van."
docker-maven-plugin
? hogy néz ki hozzá a konfig a pom.xml-ben?"Igen rákerestem, a java írja, hogy nem jó a jar."
ha rákeresel a hibaüzenetre és hozzácsapod, hogy docker, akkor láthatod, hogy másoknak is volt ilyen problémájuk, a legtöbb esetben az argumentum átadással volt a gond, ami miatt a
JAR_FILE
változó értéke üres, így a copy nem fut le jól"Megnéztem az argumentumot, de nem találja, mivel a docker linux fájlrendszerében keresi, nem az igaziban."
wut?
-
disy68
aktív tag
válasz
togvau #11257 üzenetére
A docker image-et hogyan hozod létre? Használsz-e maven/gradle plugint? Rákerestél-e a hibaüzenetre? Nézted-e hogyan kell argumentumot használni a dokumentációban?
-
disy68
aktív tag
válasz
sztanozs #11245 üzenetére
html parser az szerintem az a kategória, aminél teljesen mindegy miben írja az ember, mert a legtöbb erre is alkalmas nyelvhez/infrastruktúrához van kész lib, java alatt is pont ugyanolyan egyszerű a html parse, mint akármilyen másik nyelven, ha meg selenium kell, akkor pláne mindegy
szerintem a döntés itt csak azon múlik, hogy mit ismer az ember, miben fejleszt szivesebben/gyorsabban/etc
-
disy68
aktív tag
válasz
bucihost #11134 üzenetére
A JVM lefoglal magának bizonyos méretű memóriaterületet, amit ő fog kezelni különböző dolgokra (lásd Memory Management). Xmx a maximum, amit lefoglalhat, de ha nincs rá szükség nem fogja.
A dokumentációban olvashatsz még részletesen a memória kezelés finomhangolásáról.Ahogy a Xms és Xmx kapcsolókról is.
Pl. Xms:
"Default Values
If you do not set this, the minimum Java heap size defaults to (depending on which mode you are running):
-server
mode: 25% of the amount of free physical memory in the system, up to 64 MB and at least 8 MB
-client
mode: 25% of the amount of free physical memory in the system, up to 16 MB and at least 8 MB If the nursery size is set with-Xns
, the default initial heap size will be scaled up to at least twice the nursery size. " -
disy68
aktív tag
Csak zárójelben. Én egy junior tréning programmal kezdtem egy multinál annó, ahol volt egy gyakorló feladat, ahol kvázi excel jelleggel kellett tudni kezelni cellákat (a cellának lehetett konkrét értéke vagy más cellákra is referáló függvénye). Ekkor futottam bele, hogy java 8-as verzióval bekerült a Nashhorn nevezetű Javascript Engine a JRE-be, amivel elég egyszerűen lehetett kiértékelni az egyszerűbb műveleteket. A js engine JVM byte-kódot generál. Nem használnám production-ben, pláne, hogy a 11-es verzióval deprecated, de érdekes volt, hogy van ilyen is.
-
disy68
aktív tag
válasz
togvau #11043 üzenetére
Nem írsz arról, hogy a MockMvc-t hogyan használod (a test class hogyan van annotálva). Ha
@SpringBootTest
annotációval használod, akkor explicit be kell konfigurálni a security-t.
részlet a korábbi baeldung cikkből:@Autowired
private WebApplicationContext context;
private MockMvc mvc;
@Before
public void setup() {
mvc = MockMvcBuilders
.webAppContextSetup(context)
.apply(springSecurity())
.build();
}(...)
De én továbbra is TestRestTemplate használatát javaslom, ehhez itt egy kis egyszerű minta.
A DB-s problémád pedig kicsit zavaros, az az "application.properties" részlet meg egy controller post methodja..
-
disy68
aktív tag
válasz
togvau #11041 üzenetére
Ok, azt hiszem értem mi a félreértés. Ezt írtad: "maradjon futva a junit tesztek lefutása után". Ebből én unit testre asszociáltam és erről is beszéltem.
Erősen kétlem, hogy támogatná bármilyen test framework alapból, hogy utána fusson tovább az alkalmazás, ami a tesztek futtatása miatt indult.
A springboot junit test az meg nem csal, hanem azt csinálja, amit "mondasz" neki. Hogyan hívod most a tesztekben a "rest szolgáltatásokat"? Itt egy baeldung a témakörben. Meg egy TestRestTemplate részletesebb.
-
disy68
aktív tag
válasz
togvau #11039 üzenetére
A unit test-eknek van valami futtató keretrendszere, ami segítségével futtatod a teszt osztályok metódusait, amiben használod az alkalmazásod elemeit. Ilyenkor nem fut a teljes alkalmazás, szóval nincs sok értelme így a kérdésnek. Mi a tényleges probléma, mit szeretnél elérni?
-
disy68
aktív tag
válasz
Taoharcos #10974 üzenetére
Alapból nem kéne külön beállítani, ha tud kapcsolódni, akkor meg tudja határozni. Én első körben arra tippelnék, hogy a kapcsolat se épül fel vagy nincs a db létrehozva, akkor is jöhet ez a hiba. A két db amúgy különböző? Van-e mintakód? Próbáltad-e esetleg valami in-memory db-vel (pl. h2/hsql)?
(#10975) venic
Melyik porton futna? Ha 80-as, akkor a skype esetleg lehet a ludas. De valami hibaüzenet nem ártana -
disy68
aktív tag
válasz
hefike #10922 üzenetére
Gondolom ezt úgy kell elképzelni, mint egy relációs adatbázis 3 tábláját. Vannak rekordok valami azonosító alapján kapcsolva egymáshoz.
Csinálsz a mezők alapján osztályokat. A kapcsolatok gondolom szülő gyerek (egy szülő több gyerek), ilyen esetben a szülő osztályban lesz egy kollekció, ami gyerekeket tartalmaz.
Beolvasod őket a fájlokból, majd az azonosítók alapján a gyerekeket belerakod a szülőkbe.
-
disy68
aktív tag
válasz
Csaby25 #10908 üzenetére
Írnak többmindent is, de ez a válasz, ahol a generált kódot megnézte a válaszoló.
A String osztály java alatt immutable, azaz értékadás után az objektum értéke nem változtatható. E miatt a String összefűzés
String concat = "first" + " " + "last";
4 String objektum létrejöttét jelentené.Erre rakták bele java 8 óta a fordítóba, hogy ahol ilyen található, azt optimalizálja. A String összefűzéseket helyettesíti StringBuilder-rel, ezért nem fog létrejönni annyi String objektum.
Vannak még egyéb String-ekkel kapcsolatos optimalizációk, amiket a fordító/futtató környezet csinál/alkalmaz, pl. a válaszokban említett internal pool, ahol kvázi cache-elve vannak String objektum példányok, java 8-as updattel jött a G1 GC-be, hogy tud deduplikálni String-eket. Java 9-ben pedig jött egy olyan, hogy azokat a szövegeket, amiket lehet, ISO-8859-1/Latin-1 kódolással tárolja a JVM UTF-16 helyett (1 vs 2 byte/karakter).
>javap -c Test Compiled from "Test.java" public java.lang.String makinStrings(); Code: 0: ldc #5; //String Fred 2: astore_1 3: new #6; //class java/lang/StringBuilder 6: dup 7: invokespecial #7; //Method java/lang/StringBuilder."<init>":()V 10: aload_1 11: invokevirtual #8; //Method java/lang/StringBuilder.append: (Ljava/lang/String;)Ljava/lang/StringBuilder; 14: ldc #9; //String 47 16: invokevirtual #8; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 19: invokevirtual #10; //Method java/lang/StringBuilder.toString:()Ljava/lang/String; 22: astore_1 23: aload_1 24: iconst_2 25: iconst_5 26: invokevirtual #11; //Method java/lang/String.substring:(II)Ljava/lang/String; 29: astore_1 30: aload_1 31: invokevirtual #12; //Method java/lang/String.toUpperCase:()Ljava/lang/String; 34: astore_1 35: aload_1 36: invokevirtual #13; //Method java/lang/String.toString:()Ljava/lang/String; 39: areturn
-
disy68
aktív tag
válasz
walgud6 #10893 üzenetére
Én a részemről 13"-on megőrülnék, az szerintem nagyon kicsi. A többi kb. attól függ mit fejlesztesz, mekkora az alkalmazás és a kódbázis. Valamint lokál környezetben mennyi adattal szaladgál az alkalmazás.
A kód az mindenképpen ssd-n férjen el, hogy az ide tudja a fájlokat gyorsan indexelni, én ajánlanám a 256GB-ost. Proci az a build-nél fontos, core i7 alá nem mennék. Egy giga monolith-nél persze sose lesz túl gyors a build, de nem mindegy, hogy 15 perc vagy 45 perc. A memória is attól függ kategória, 1-2 kis microservice-nek elég lehet 8 giga ide-vel egyebekkel, de én is inkább a 16-ot lőném be iránynak.
Amúgy meg ha munkaeszköz, akkor vedd meg a legjobbat a büdzséd szerint. Meg ha nem akkor is
-
disy68
aktív tag
válasz
floatr #10516 üzenetére
"Az XML vs Java configgal kapcsolatban az a problémám, hogy a konfiguráció karbantartásához/módosításához kódolás kell, CI pipeline."
Ez a konfiguráció nem ugyanaz, mint az alkalmazáshoz tartozó akár környezetenként változó konfig, pl url-ek. Ha itt kell módosítani bármit - magyarul az alkalmazás context-je változik -, akkor újra kell buildelni az alkalmazást, függetlenül a konfiguráció típusától. Innentől ez nem üzemeltetési kérdés, hanem fejlesztés.
Az átláthatóság szubjektív dolog, láttam már 30-40 xml-ből felépülő Spring konfigot, ami nekem minden volt csak nem átlátható, viszont volt kolléga, aki azt preferálta. Azt hittem ez csak az ő fétise, de akkor vannak még mások is ezen a vonalon :-)
"Lombokot szerintem alapvetően pár olyan dologra érdemes használni, ami fordításkor generál le bojlerplét kódot. Ezen az alapon semmilyen nem Java JVM nyelvet nem lenne szabad használni."
Semmi köze a kettőnek egymáshoz, ne keverd a dolgokat. A lombok által generált kódban nem bíznak sokan, valamint java update esetében okozhat/okozott gondot. Van pár issue-juk is. Ettől függetlenül, ahol lehet én is preferálom a használatát, de ettől még megértem, ha máshogy dönt valaki. -
disy68
aktív tag
válasz
#68216320 #10510 üzenetére
Szerintem érdemes ismerni mindkettőt, de a maven-t mindenképp. Kezdőként elég az egyik is. A Gradle rugalmasabb, a néhanapján felmerülő cache problémákat szopás kiszűrni. A maven kevésbé rugalmas - pluginekkel persze lehet bármit - de régi motoros, szerintem minden problémára van megoldás (plugin) hozzá. Gradle esetében találkoztam olyannal, ami nincs vagy csak részben volt meg a maven-es megoldáshoz képest.
-
disy68
aktív tag
-
disy68
aktív tag
válasz
floatr #10498 üzenetére
A körkörös függőség tervezési hibának hangzik. Több függőségnél pedig facade vagy egyéb wrapper megoldások is játszhatnak. Ezt is mondhatjuk workaround-nak, de én még mindig úgy vagyok vele, hogy inkább lássam a konstruktornál mi a függősége egy osztálynak, semmint annotációkat nézegetni. Én spring-nél is jobban preferálom az explicit java config-ot, mintsem a package scan-t meg annotációkat (saját kódnál, nem lib-eknél). Ha van egy konkrét config, ami alapján látom, mi lesz a context, mi-mi alapján épül fel, az nekem mindig szimpatikusabb volt.
-
disy68
aktív tag
válasz
#68216320 #10486 üzenetére
DTO: data transfer object
ez lehet bármilyen két komponens közötti kommunikációban szereplőDAO: data access object
ez egy olyan objektum, amin keresztül adatokat érünk el/tudunk manipulálni, általában adatbázissal a túloldalon - az objektum elrejti a DB részleteketrepository:
a DAO-hoz hasonló pattern, inkább domain centrikusabb, az adat objektumokat entity-nek hívjuk ebben az esetben
A rétegek szervezése/szeparálása fontos dolog, nehéz elsőre ráérezni, fog kelleni hozzá némi tapasztalat. Annyit szerintem mindenképp jegyezz meg most, hogy nincs semmi kőbe vésve. Vannak ajánlások, de mindig az adott problémához keressük a megoldást, nem pedig valami "best practice-t" erőszakolunk rá mindenre.Amennyiben egy egyszerű crud a cél, akkor nem is feltétlen szükséges külön entity/dto/pojo-kat készíteni a különböző rétegekhez, mert fölöslegesen kéne transzformálgatni mindent többször is.
Ha a crud-nál tovább lépünk vagy más jellegű a probléma, akkor hasznos lehet különválasztani a rétegeket jobban.Amúgy olvass még kicsit utána funkcionális programozásnak, immutability-nek - java 8 óta java-ban is van hozzá támogatás - szerintem árnyalja majd a képet.
A Spring JavaEE vs sima java témakörben pedig én javaslom a keretrendszer használatát, ha máshoz nem is, de a dependency injection miatt mindenképpen.
-
-
disy68
aktív tag
válasz
macssessz #10269 üzenetére
Egyrészt ez nem legál, másrészt semmi köze a java-hoz.
@(#10258) szbalogh
Nekem úgy tűnik, hogy a UI kirajzolása közben történik valami probléma, ami a kód ismerete nélkül elég sokminden lehet. Nem tudom melyik java verzióval fut jelenleg az alkalmazás, de szerintem próbáljátok meg régebbi java verzióval futtatni. -
-
disy68
aktív tag
-
disy68
aktív tag
válasz
floatr #10048 üzenetére
"Mert az feltételezem, hogy nem windowsos docker a live.
Akkor inkább már VBox-ban ubuntu/debian és azon docker."Lehet én értem félre, amit írsz, de Windows-ra nincs natív docker. A Docker Toolbox és a Docker for Windows - bár ez próbál natívnak tűnni - is egy virtuális linuxon fut, szóval sok előnye nincs használni egy dedikált linux vm-et, hacsak az embernek nincs szüksége valami linux specifikus eszközre. A local környezet meg soha nem lesz olyan, mint a production, ehhez úgyis illik egy teszt környezet, ami minél jobban közelít a production-höz.
De persze a fejlesztő dolga mit használ.
-
disy68
aktív tag
Java alatt az integer/short/akármi az egy szám reprezentáció számrendszertől függetlenül. Az alapértelmezett számrendszer a toString-nél a 10-es.
Integer.toString(int i, int radix)int binary = 0b0010;
int hexa = 0x0ef2;
int sum = binary + hexa;
System.out.println(sum);
System.out.println(Integer.toString(sum, 2));
System.out.println(Integer.toString(sum, 8));
System.out.println(Integer.toString(sum, 16));szerk: Amúgy a java elnevezési konvenciókról olvass még kicsit..
-
disy68
aktív tag
válasz
Taoharcos #9719 üzenetére
Én nem használnék ma már sha-1-et sima sóval (pláne nem egy statikus értékkel). Szerintem használj minimum bcrypt-et. Itt olvashatsz egy OWASP ajánlást jelszó hash tárolásról/kezelésről. Bcrypt minta. Amúgy a Spring Security is tartalmaz bcrypt-hez util osztályt.
Session kezelést is rábíznám a Springre, biztos tudnak a Vaadin-nal együttműködni, de velük nincs konkrtét tapasztalatom.
-
disy68
aktív tag
válasz
Ablakos #9512 üzenetére
Rendes támogatás majd a Netbeans 9-es verziójában lesz. Az early access verziókhoz itt egy leírás. Amúgy a Netbeans használja a jre-t, a fejlesztéshez kell a jdk. Nem furcsa dolog, a Netbeans futásához kell egy bizonyos verziójú jre, míg a cél platform java verziója ettől lehet eltérő.
-
disy68
aktív tag
A JavaEE egy specifikáció és API gyűjtemény, ami a Java Community Process alkalmazásával fejlődik. Ezekhez az API-khoz készülnek implementációk a specifikációk alapján. Erről egy kis összefoglaló.
A JavaEE technológiákra rengeteg alkalmazás épül és nagyon sok az érdekelt szereplő. A bejelentés után sok a felmerülő kérdés, így érdemes megvárni ki veszi át az Oracle szerepét, valamint lesznek-e változások a fejlesztési/elbírálási folyamatokban. Olvasd el még ezt a cikket a bejelentésről.
-
disy68
aktív tag
válasz
Lortech #9486 üzenetére
És java 9-től már private metódusok is lehetnek interface-ekben a default implementáció mellett.
-
disy68
aktív tag
Kollekciókhoz ezt nézd át, jól összefoglalja a Collections interface-ből származó interface-eket és azok implementációit.
"Ez alatt arra gondolsz, hogy elméletben tanuljam meg először, hogy melyik mit tud, ugye?"
Lényegében, igenSolid-ra találtam egy magyar összefoglalót érthető példákkal.
GRASP (General responsibility assignment software patterns)
Ezek meg beszédesek különösebb magyarázat nélkül is:
Don't Repeat Yourself (ne legyen kódismétlés)
Keep It Stupid Simple (legyen a kód olyan egyszerű, amennyire lehet)
You Ain't Gonna Need It (ne implementálj semmi olyan funkciót/logikát, amire nincs azonnal szükséged, később sanszosan változni fog az irány/struktúra/akármi és úgy is át kell írni) -
disy68
aktív tag
Mire lepötyögtem, már jött is válasz, de akkor más megfogalmazásban
:
Kollekciókkal kapcsolatban első körben ismerni érdemes a főbb inteface-eket és melyik milyen contract-nak tesz eleget (List, Set, Queue + Map). Ez után érdemes megnézni a tényleges implementációkat. A különböző implementációkat pedig akkor használjuk, amikor az adott megoldás igényli (pl. rendezett legyen mindig a kollekció, lehet-e benne ismétlődő elem, írunk vagy olvasunk belőle többet, elejéről/végéről vagy véletlen eléréssel veszünk ki elemeket, szálbiztosnak kell-e lennie). A nyelvi alapokon kívül még érdemes ráfeküdni az OOP-re. OOP alapelvek, SOLID, GRASP és pár további egyszerűbb dolog; DRY, KISS, YAGNI. Alapvető design pattern-ek (singleton, builder, facade, proxy, decorator, visitor, strategy). -
disy68
aktív tag
WatchService API-t tudod erre használni.
-
disy68
aktív tag
válasz
Aethelstone #9397 üzenetére
Előfordul persze, hogy megnő ez-az
.
Metódusok elnevezéséhez további segítségem nincs, de osztályokhoz, mindig jól jön az enterprisify.
-
disy68
aktív tag
válasz
Jhonny06 #9395 üzenetére
Egy metódus egy dolgot csináljon. A metódusok legyenek rövidek és legyen nekik minél beszédesebb nevük. Az hogy a YourConsultant osztályodon belül vannak egyéb private metódusok, amik segítenek jobban struktúrálni a logikát, nem jelenti azt, hogy változtatni kéne az interface-t.
-
disy68
aktív tag
A másik diák szerintem pont itt tette fel a kérdést.
-
disy68
aktív tag
válasz
#74220800 #9284 üzenetére
Java 8 alatt van lehetőség metódus referenciát átadni. Akár az alábbihoz hasonlóan is elindulhatsz:
public class MethodRuntimeChecker {
public static void main(String[] args) {
QuickSorter sorter = new QuickSorter();
int[] array = getNumbers(10_000);
System.out.println(mesureRunTimeNano(sorter::sort, array) + " ns");
System.out.println(mesureRunTimeMilli(sorter::sort, array) + " ms");
}
public static long mesureRunTimeNano(Function<int[], int[]> intSorter, int[] toBeSorted) {
long start = System.nanoTime();
intSorter.apply(toBeSorted);
return System.nanoTime() - start;
}
public static long mesureRunTimeMilli(Function<int[], int[]> intSorter, int[] toBeSorted) {
long start = System.currentTimeMillis();
intSorter.apply(toBeSorted);
return System.currentTimeMillis() - start;
}
private static int[] getNumbers(int count) {
int[] numbers = new int[count];
Random random = new Random();
for (int i = 0; i < count; i++) {
numbers[i] = random.nextInt(count);
}
return numbers;
}
} -
disy68
aktív tag
válasz
Patrick76496 #9275 üzenetére
Nullát adni egy számhoz fölösleges, szerintem erre célzott a kolléga
Ami viszont fontosabb, hogy a max érték exclusive, szóval a nextInt(50) 0 és 49 között ad neked egy random számot. Lásd: doksi -
disy68
aktív tag
Ennyiből ugyan nem látszik mi a hiba, de szerintem az elérési utakkal lehet gond.
Csináltam egy kis minta projectet (maven project), két "kép cserélővel", az egyik a resource mappából szedi a képeket, a másik pedig külső könyvtárból.
Ha nincs jól megadva az elérési út a jelenség az általad is leírttal egyezik. Annyit még változtattam, hogy egységesen kezeljem a két változatot, hogy az ImageIcon-t java.net.URL paraméterrel példányosítom.
-
disy68
aktív tag
válasz
#68216320 #9141 üzenetére
Helló, jó kis probléma
Hirtelen olyat találtam, hogy:
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
public class Main {
private static final String UTF_8 = "UTF-8";
private static final String INPUT_MESSAGE = "Írj be egy betűt: ";
public static void main(String[] args) throws UnsupportedEncodingException {
try (Scanner scanerObj = new Scanner(System.in, UTF_8);
PrintStream out = new PrintStream(System.out, true, UTF_8)) {
while (true) {
out.print(INPUT_MESSAGE);
out.println(String.format("key: '%s'", scanerObj.next().charAt(0)));
}
}
}
}Ezzel helyesen kezeli a scanner által utf-8-nak beolvasott betűket, viszont az INPUT_MESSAGE-et nem. Amit találtam még, hogy indítani a -Dfile.encoding=IBM437 (nálam ez az alapértelmezett kódlap chcp parancs megmondja) paraméterrel, bár ezzel nem kísérletezgettem szóval nem tudom működne-e helyesen.
-
disy68
aktív tag
válasz
vadasz70 #9131 üzenetére
Itt a leírás az engedélyezéshez. A lényeges az oldalon, hogy azt az url-t kell felvenned, ahol az applet megtalálható. Ez nem feltétlen ugyanaz, mint amit látsz a böngésző címsorában. A yatzy játék appletje a http://game03.playforia.net címről tölt be, ezt próbáld meg felvenni. De ez off szerintem itt, ez inkább üzemeltetéssel kapcsolatos problem.
És zárójelben még annyit, hogy szerintem keress inkább olyan oldalt, ahol nem applet-es játékok vannak, mert előbb utóbb egyik böngésző sem fogja az appleteket támogatni
-
disy68
aktív tag
válasz
vadasz70 #9129 üzenetére
Szerintem egy kicsit bővebben írd le, milyen játék, hol fut (böngésző/applet vagy asztali alkalmazás)? Mit írtál és milyen java console-ba (böngészőnél javascript console elérhető ugyebár)?
Amúgy a gondolatolvasó vénám azt mondatja, hogy Vezérlőpult (nézetnek kis ikonok) -> Java (vagy <java telepítési hely>/javacpl.exe) elindít ott security fül, lentebb állítod a szintet és ha valóban böngészős valamiről van szó, akkor hozzáadod a kivételekhez.
-
disy68
aktív tag
válasz
#74220800 #9096 üzenetére
Az equals függvényt hashCode nélkül nem írjuk felül (és amikor felülírjuk használjuk az @Override annotációt)! Mindkét függvény az Object osztályból jön, ami minden osztály őse. Olvasnivaló a témához.
-
disy68
aktív tag
Tudom ajánlani a Google Java Style Guide-ot, szerintem korrekt. Jelenlegi projekten is ezt használjuk, annyi változtatással, hogy a sorszélesség 100 helyett 120.
(#9088) donathl
Ha kódot raksz be, akkor ne képként légyszi. Amúgy neked pláne ajánlom a linket. Könnyezik a szemem ezektől az ékezetes magyar nevektől -
disy68
aktív tag
válasz
csabi0911 #9048 üzenetére
Pölö a lengyel forma használatával. Avagy a fordított lengyel forma használatával.
-
disy68
aktív tag
válasz
Aethelstone #9046 üzenetére
Természetesen a fejlesztő a devops-os a maga birodalmában
így neki illik tisztában lennie ezekkel.
-
disy68
aktív tag
válasz
Cathfaern #9042 üzenetére
Persze, mindenképpen. Nem tudom ki illetékes itt ez ügyben.
(#9043) emvy, (#9044) Aethelstone
A környezeti változók állítgatása nem éppen átlagfelhasználói tevékenység, hanem inkább üzemeltetési. Aki ilyen műveleteket akar csinálni, az szerintem nem árt, ha tisztában van a hogyanokkal, különben hamar pórul járhat. Ilyen szinten meg ne akarjon egy telepítő megcsinálni mindent. Vonatkozva jdk-ra és szerintem. -
disy68
aktív tag
Azt nem tudom mi az oka, hogy nem rakják bele a path beállítást a jdk telepítőbe, de az lenne a tippem, hogy azért, mert fölösleges. Egy átlag felhasználónak nincs rá szüksége, egy fejlesztő meg úgy alakítja a saját környezetét, ahogy neki tetszik.
A java_home környezeti változó beállítása amúgy is egy kihagyható lépés, azt azért szokás beállítani, hogy ha frissíti az ember a jdk-t, ne kelljen a Path-ben bogarászni, hanem csak a környezeti változót kelljen átírni. IDE-kben, egyéb helyeken is lehet magára a java_home-ra referálni általában, így könnyebben karbantartható.
-
disy68
aktív tag
válasz
eliterob #9021 üzenetére
Mivel nem írod, hogy pontosan mivel is próbálkozol, a lépések nagyvonalakban:
- JDK telepít
- környezeti változónak beállítod a telepítés helyét:
- pl. JAVA_HOME: C:\Program Files\Java\jdk1.8.0_73
- felveszed a Path környezeti változóhoz a binárisokat:
- pl. %JAVA_HOME%\binProgram:
package cli;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello dude");
}
}Parancssorban megnézed jó-e a java beállítás:
- java -version
> java version "1.8.0_101"
> Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
> Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)Majd compile:
- javac cli\Hello.javaÉs végül a futtatás:
- java cli\Hello
> Hello dude -
disy68
aktív tag
Lehet csk nekem, de nem egészen egyértelmű. Ez a helper osztály nekem egy service-nek hangzik, aminek van egy vendor dependency-je. A service-nek ezt a dependency-t illene konstruktorban átadni, mivel a funkcionalitásához nélkülözhetetlen (azaz ne is jöjjön létre példány anélkül, hogy működne). Nem tudom milyen az architektúra, de ha Java EE, akkor van context. A service valószínűleg valami singleton bean, amit újra lehet hasznosítani (figyelemmel a szálkezelésre, ha szükséges). Maga a vendor object is egy bean lesz ebben az esetben, amit szintén át lehet adni bárminek, ami igényli.
-
disy68
aktív tag
válasz
Chesterfield #8826 üzenetére
Kelleni fog még a jackson-datatype-jsr310 vagy a jackson-datatype-jdk8 modul is a LocalDate-hez.
A json mezőnévnek pedig nincs köze a konstruktor paraméter neveihez, hanem a getterek nevei alapján készülnek. Ha szeretnéd megtartani a getter nevét, viszont más nevet használnál a generált json-ben, akkor használhatod a @JsonProperty annotációt. Arra figyelj, hogy melyik jackson verziót használsz (1.x <-> 2.x).
pl.
public String getSomething()
-> mezőnév: something@JsonProperty("somethingelse")
-> mezőnév: somethingelse
public String getSomething() -
disy68
aktív tag
válasz
Froclee #8719 üzenetére
Enterprisify megvan?
-
disy68
aktív tag
Ha az ember még nincs is olyan helyzetben, hogy mással együtt kell dolgoznia egy kódbázison, de komolyan gondolja a programozást, akkor mindenképpen gondolni kell a jövőre. Jobb megszokni az angol kifejezések használatát még az elején, mintsem később kelljen egy rossz berögződésen korrigálni.
-
disy68
aktív tag
válasz
Chesterfield #8522 üzenetére
Talán margarinon.
Bocsánat. -
disy68
aktív tag
Lehet én nem értem a kérdést. Ha magára a request-response szerkezete a kérdés, akkor innen válogathatsz.
A formátum, mint JSON is eléggé adja magát, bár használhatsz xml-t is, többletmunkát nem okoz egyik sem java oldalon.
Ha a "betenni-kivenni" azt jelenti, hogy perzisztálnád az adatokat, amiket szűrni szeretnél egyszerűen, akkor valamilyen adatbázis használata is célszerű lehet.
Szóval az induláshoz a kulcsszavak
Spring Boot, @Restcontroller, Jackson, Hibernate, MySQL
is lehetnek akár.Persze ha te üzeneteket fogadsz, akkor érdemes lehet autentikáción is gondolkodni.
-
disy68
aktív tag
válasz
Chesterfield #8495 üzenetére
Java esetében a package egy magasabb egység. A Package-ek logikailag összefüggő egységeket tartalmaznak (interface, class, stb.). A base package általában az adott cég domain-je, plusz az adott alkalmazás neve.
Pl. FancyStuff alkalmazás eseténél org.fancyltd.fancystuff
Magyarul rád van bízva mit használsz, de azért használj valami egyedit.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- iPad topik
- Vezetékes FEJhallgatók
- Xbox tulajok OFF topicja
- Megvan, milyen chipet használ a Pura 80 Ultra
- BMW topik
- Háborog az Apple az iPhone-ra írt első pornóapp miatt
- ThinkPad (NEM IdeaPad)
- Assetto Corsa EVO
- További aktív témák...
- Dell Inspiron 5406 2-in-1i5-1135G7 16GB DDR4 3200 512GB NVME 14" FHD Érintőkijelző W11Pro
- Eladó MacBook Pro 14" M1 Pro (2021) 16/512 99% akku Makulátlan állapotban!
- Újszeru GIGABYTE G5 - 15.6" FullHD 144Hz - i7-13620H - 48GB - 1TB - RTX 4050 - Win11 - 1,5 év gari
- Eladó garanciás,új állapotu projektorom kihasználatlanság miatt!
- Acer Nitro V ANV15 - 15.6"FHD IPS 144Hz - i5-13420H - 16GB - 512GB - Win11 - RTX 3050 - 2,5 év gari
- DOKKOLÓ BAZÁR! Lenovo, HP, DELL és egyéb más dokkolók (TELJES SZETTEK)
- BESZÁMÍTÁS! ASUS A520M R5 5600X 16GB DDR4 512GB SSD RTX 3060Ti 8GB Rampage SHIVA Enermax 650W
- BESZÁMÍTÁS! MSI B450 TomaHawk R5 3600 16GB DDR4 512GB SSD RX5500 XT 8GB Rampage SHIVA TT 530W
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RX 7600 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest