- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Proxmox VE
- Kapnak egy rakás reklámot a Roblox játékosai
- ArchiCAD és Artlantis topik
- Mikrotik routerek
- YouTube
- WLAN, WiFi, vezeték nélküli hálózat
- Linux kezdőknek
Új hozzászólás Aktív témák
-
Jim-Y
veterán
Értem, az utóbbi részével nem lesz gond szerintem, előbbivel sem, mármint a kvízkérdésekkel, de attól azért félek, mert én még Nem dolgoztam java fejlesztőként, a tudásom leginkább abból áll amit a suliban tanultunk ami sokszor azért -főleg gyakorlás nélkül- nem fedi az ilyen kvízkérdéseket. Gondolok arra, hogy ha nem fejlesztek folyamatosan akkor kiesek a ritmusból, felejtek dolgokat stb. De akkor leginkább csak sűrűbben fogok foglalkozni a Java-val mint témával az interjúig és kész
-
M_AND_Ms
addikt
-
M_AND_Ms
addikt
Azért a generics használata, főleg keretrendszereknél hasznos tud lenni. Pl.: egy rakat instanceof vizsgálattól kímél meg, viszont sokszor nagyon megnehezíti magának a generics-es kódoknak a karbantartását: nagyobb osztályhierarchián átívelő generics-ek módosításakor (pl: újak bevezetése) eléggé nehézkes az átírás, refaktor.
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
M_AND_Ms
addikt
Hasonló problémákra gondoltam én is.
Igen. Egyszerű kódot, amolyan baltával is kifaraghatót írni genrerics nélkül kell. Ha cicomázod a generics-szel, akkor farigcsálhatsz órákig. De ha kész, olyan elegáns tud lenni! (csak ne kelljen átfaragni!)
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
WonderCSabo
félisten
A Java serializáció API-ja teljességgel elhibázott, mi az, hogy be kell kopizni a függvényszignatúrákat a customhoz, és ha eltalálom jó. ha nem akkor meg se hívódik? Ehhez egy újabb interfészt kellett volna bevezetni. Van még sok dizájn flow a javában - pl. a clone() fv. az Object része, de csak akkor ok, ha az osztály implementálja a Cloneable interfészt - miért nem lehetett akkor a clone()-t eleve csak a Cloneable-be rakni...
Viszont ez a feature nagyon is jogos. Pl. van egy objektumgráfod, kétszer is hivatkozol valahol benne az objektumra, miért is mentenéd ki kétszer az értékét? Továbbá ha ciklikus referenciád van, akkor még nagyobb probléma lenne, ha mindig mentenél, mert szépen stackoverflowt kapnál.
Egyébként is, a gyakorlatban ez a példa sosem fog szerepelni (teljességgel hülyeség u.a. objektumot rögtön egymás után különböző értékekkel kiszerializálni, nem látom ennek use-caset).
A JSON meg XML valóban elterjedt, de azért ezek többet foglalnak és lassabbak is, mint a Java serializálás. Én pl. Androidon szoktam használni, ahol nem fájlba mentünk objektumokat, hanem programrészek között küldjük át szerializálva. -
Karma
félisten
Nem tudom melyik forrást nézed, de az AbstractList indexOf teljesen korrekt módon kezeli a null elemeket a listában. Illetve nullra is tud keresni.
"Márpedig ahol objektumok vannak ott van null is "
Ez egyáltalán nem biztos. Ha egy objektumlistáról nem lehet feltételezni, hogy benne objektumok vannak, ott azért vannak más bajok is, fejben
“All nothings are not equal.”
-
Karma
félisten
Most decompiláltam az ArrayList.class-t a JDK7-ben (rt.jar):
public int indexOf(Object obj)
{
if(obj == null)
{
for(int i = 0; i < size; i++)
if(elementData[i] == null)
return i;
} else
{
for(int j = 0; j < size; j++)
if(obj.equals(elementData[j]))
return j;
}
return -1;
}Nem látom az összeomlást.
“All nothings are not equal.”
-
M_AND_Ms
addikt
"Valamiért nekem még mindig az volt a fejemben, hogy az equals nullptr-t dob akkor is, ha a paraméter null."
Általában elmondható az equals-re is, hogy úgy működik, ahogy megírták és azt dobja, amit nem kezeltek benne, vagy amit szándékosan dobnak.
Amúgy, a legősibb equals az Objectben van, ami nem dob null-t null bemenő esetén, csak kiad egy szép false-t.
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
fatal`
titán
Akkor dob nullptrexet, ha az objektum null, aminek hívod az equals függvényét, de ez egyértelmű.
Maga az equals nem kéne, hogy nullt dobjon, csak false-al visszatérni.
(#4837) Karma : Sajnos még az egyetemeken is jellemző, hogy nem engednek listát használni, vagy nem mindig.
Én pl. csak akkor használok tömböt, ha fixek az elemek.
[ Szerkesztve ]
-
S0m30n3
aktív tag
Köszönöm a tanácsokat. Igen, érdekel komolyabban a programozás. Amúgy a tanárnőnk is mindig mondja, hogy a tervezés egy nagyon fontos szempont, én is így gondolom, csak adatbázisokhoz még nem sok közöm volt, pont azért is próbáltam ki a vizsgaprogramban. Nem gondoltam, hogy ennyire szerteágazó az adatbázisok világa, de legalább ez a kis fejlesztés erre is ráébresztett.
-
-
sutszi
veterán
Tyű...jó a stílus és emészthető volt az anyag. Amit láttam az alapján nagyon tetszik ez az eszköz...Köszi még egyszer, hogy megírtad.
Az is látszik, hogy azért kell egy-két dummy alkalmazást is összedobni majd a napokban, hogy ülepedjenek a dolgok...Ja és persze könyvjelzőbe felvéve.
[ Szerkesztve ]
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
-
sutszi
veterán
A vitát leszámítva akár én is lehetnék a bevezető alanya...
Ez már durvább téma volt kicsivel...viszont látom, hogy ha nálunk is ez lesz akkor tényleg ráborulok az asztalra, ahogy írod is...
Nehéz így technológiát választani, hogy nem használom készség szinten.
Ma addig jutottam az alkalmazásszerver témában, hogy JBoss és Tomcat-re szűkítettem a kört(Glassfish volt a harmadik). Nem véletlen, az egyik egy űrhajó ha másik egy vitorlázógép...
Azt gondolom, hogy ha később beesik valami nagyobb méretű dolog amihez a JBoss kéne akkor jól jön ha most bemelegítünk rajta. A másik, hogy full platform, szóval nem érhet meglepetés menet közben, hogy hopp hiányzik a Tomcat-ből valami...(Tudom ott lenne a TomEE) viszont ha változik a konfig akkor nem kell restart elég a reload...még akkor is ha ez nem sokszor fordul elő.
Néztem, hogy a memóriaigénye kb dupla az egyik oldal szerint. De hát ha az egyik 100MB-ot kér a másik meg 200MB-ot, akkor az elhanyagolható lesz az alkalmazás vagy az egész szerver méretéhez képest...Ezek miatt a JBoss felé húzok...Nem tudom mennyire teszem jól...
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
-
sutszi
veterán
Ezt az ujratöltés bug-ot azért megjegyzem, ha előfordul valami akkor ne lepődjek meg.
Átolvastam eztHát nagyon hajlanak az ilyen könnyedebb cuccok felé. Dicsérik őket, bár a végén a JBoss nyer...
Tőlük elolvastam még a web framework tesztjüket is...na ott meg lehúzzák a Spring-et...azt elégég furcsának tartottam mikor a piaci részesedése igen magas...De jó, hogy ezt felhoztad. Az előzőbe pont kérdezni akartam, hogy több helyen olvastam, hogy a web profile részt használva kis túlzással cserélgethetem az alkalmazásszervereket mert nagy gond nem lehet belőle elvileg minimális konfiggal működnie kell...
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
-
sutszi
veterán
Köszi.
Kár, pedig éppen csak belejöttél...
Ha minden jól megy akkor jövő héten már próbálgatni fogom ezeket a dolgokat...Délutánra sikerült összeraknom "a szervert". CentOS 6.5 + jdk7_51 + wildfly8.0.0(szolgáltatásként futva)
Még az Iptables-el kell összebarátkoztatni és akkor jó lesz...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
-
WonderCSabo
félisten
Ha viszont nincsen saját toString metódus, akkor pointer értéket fog kiírni.
Ez nem teljesen igaz, az Object osztályban definiált toString() hívódik meg ilyenkor, ami akármit kiírhat. Általában a Java implementációkban az Object#toString() ezzel tér vissza:
getClass().getName() + '@' + Integer.toHexString(hashCode());
Ugye ez az egész csak sima dinamikus kötés.
[ Szerkesztve ]
-
-v-
addikt
Ezzel annyit érsz el, hogy a println() String paraméteres verziója hívódik meg. És az azért jobb neked... mert?
"Ha van egy változód, ami akár objektum, akár egyszerű típus, akkor ez a megoldás mindig működik."A "" + nélkül is.
Ha azt mondod
System.out.println(myObject);
System.out.println("" + myObject);
és a myObject null, mindkét esetben "null"-t fog kiírni. Ha nincs felüldefiniálva a toString-je, akkor is ugyanazt írja ki mindkét esetben (MyObject@120cc56 pl ... ). Ha nem referenciatípus, hanem primitív típus, akkor sincsen különbség, println() mindenre túl van terhelve. Még mindig nem értem mire jó ez... nem kell se toString se semmi, println(amitakarszkiiratni) aztán szevasz ...
Ott van különbség ha pl. int-ek, ha nincs előtte "" akkor a + miatt összeadja mielőtt kiírja, ha meg egy ""-t odaraksz elég onnantól stringként kezeli és konkatenálgatja.. de itt most ilyesmi nem volt kérdés.[ Szerkesztve ]
-
Karma
félisten
Azért a String.valueOf, ami implicit meghívódik ebben az esetben, kicsit jobban olvasható és nem sokkal hosszabb .
Superhun: Wow, ezt nem is tudtam. Mondjuk a felsorolt három, nem optimalizált alternatívából az utolsó pont hogy jobb az int overload miatt.
[ Szerkesztve ]
“All nothings are not equal.”
-
WonderCSabo
félisten
Így van, ha csak egy sor összefűzésed van, akkor feleslegse SB-re cserélni, hiszen a fordító úgyis megteszi, illetve a String + operátoros verzió sokkal olvashatóbb.
(#5076) floatr: A Superhun által bemutatott optmalizációra egy valid use-case:
class Test {
private static final int max = 10;
public static void main(String[] args) {
int a = ...; // beolvasod
if (a > max) {
System.out.println("Value is bigger than " + max + "!");
}
}
}Ekkor a bytecodeban egy összefűzött String literált generál a fordító.
[ Szerkesztve ]
-
addikt
Annyira nem nevezném semmirekellőnek, mert ha konkatenálni akarsz primitív konstansokkal egy konstans Stringet, akkor nem mindegy, hogy a primitívből is lesz egy String és ebből a kettőből csinál egy újat futási időben, vagy már fordítási időben megtörténik ez.
Példának okáért:
String emelet = ". emelet";
String emelet1 = 1 + ". emelet"; // bytekódban: // String emelet1 = "1. emelet"; -
Karma
félisten
Pont a specifikusság az, amivel karcsúbbat lehet írni. A Gsont durván szét lehet hackelni anélkül, hogy a forráskódhoz nyúl az ember(*). Másrészt vannak benne apróságok, amik elméletben nem is számítanának, de a gyakorlat más... Például hogy a Mapek sorrendtartóak.
(*) Személyes rekordom: olyan bővítmény. ami új annotációkat figyel a célosztályon, és a bemeneti JSON fát transzformálja többféleképpen, mielőtt a reflexió rámenne. Nagyon ocsmány JSON bemenetnél kihúzott a szarból.
“All nothings are not equal.”
-
WonderCSabo
félisten
Én azon az állásponton vagyok, hogy inkább használjunk általános libeket. Egyrészt nem kell újraírni a kódot, másrészt a lib készítői valszeg több mindenre gondoltak (hibák, lehetőségek stb.), mint mi valaha is tudunk, továbbá folyamatosan fejlesztik is ezeket. A mai hardverek mentén én nem látok problémát a teljesítmény terén, már Android-on is csomó reflective kód fut (sőt maga az egész framework reflectionnel megy), pedig csak buta HW van alatta desktophoz vagy serverhez képest. A méretet tekintve pedig pl. proguarddal a nem használt kódot könnyen ki lehet dobni a libekből.
A GSON-t egyébként pont Karma mutatta nekem anno, sztem szuper jó lib, csak ajánlani tudom mindenkinek. Olyan gyönyörű megoldások vannak benne, amik sztem egy hétköznapi fejlesztőnek sosem jutnak eszébe.
[ Szerkesztve ]
-
WonderCSabo
félisten
Én mondjuk mobilon mozgok mostanában, itt azért jóval kisebb libekkel találkozom, 20 megabyte-tól én is a falra másznék. A másik implementáció mondjuk tényleg nagyon zavaró, pl. jellemzően mindenki más logging frameworkot használ és akkor ez mind foglalja a helyet. Az előbb említett proguardot tudom ajánlani.
-
chabeee
tag
hát eléggé, mivel rossz volt az import.
Részletesebben a multipart -ba nem tudtam MimeBodyPart típusú adattagot rakni, mert folyamatosan BodyPart-ot kért, akkor viszont máshol volt a hiba. (már nem emlékszem, reprodukálni meg nem sikerült) a vége ez lett
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(username));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
msg.setSubject("Test Java Sending Zip File");
msg.setText("This is a message from a java program");
MimeBodyPart msgbodypart = new MimeBodyPart();
msgbodypart.setText("this is msg Body");
Multipart multipart = new MimeMultipart();
msgbodypart = new MimeBodyPart();
String filename = "MyFile.zip";
DataSource source = new FileDataSource(filename);
msgbodypart.setDataHandler(new DataHandler(source));
msgbodypart.setFileName("its_a_zipped_file.zip");
multipart.addBodyPart(msgbodypart);
msg.setContent(multipart);
System.out.println("-Sending");
Transport.send(msg);
System.out.println("Sent!");
}catch (MessagingException mex){
mex.printStackTrace();
} -
Aethelstone
addikt
Senki nem akar a szádba adni semmit. Illetve nem tudom, de én tutira nem. Mi speciel kicsit felokosítottuk ezt az API-t. Pont ez a lényege, hogy kellően alacsonyszintű, akinek valami kell pluszban, az majd implementálja.
De mondtam...nem akarok vitázni ezen.
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
Aethelstone
addikt
Agree. Ugye Java-ban van ez a remek package rendszer. Valaki korábban már említette, hogy package szerint is tök jól el lehet különíteni az osztályokat. Én is ennek a híve vagyok, ergó jelen pillanatban pl. az Eclipse nem sok segítséget ad. Annál inkább a hu.akarmi.iface és hu.akarmi.impl
A C/C++t meg annyira ismerem, amennyire a főiskolán kellett
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
hasman
tag
floatr: Rendben, ezt is megértem, sőt ki is próbálom hétvégén, de egyelőre a parancssoros meghívások nekem tökéletesen elég (jelenleg).
Nem az a célom a JAVA tanulásával, hogy akármit is megtervezzek, (lehet kisebb dolgokat magam is terveznék, ) inkább a cél az, hogy lássam a programozás korlátait, és ne olyan dolgot találjak ki amit mondjuk esélytelen leterveztetni.
A magam részéről egy hasonló program letervezését tűztem ki célul magam elé:
http://pf-prg.hu/trafo/trafo-4.php?mod=-3[ Szerkesztve ]
-
hasman
tag
Még 1x köszönöm, megpróbálok előbb utóbb abból is felvenni magamra egy keveset
A szerkesztési körülmények alatt nem tudom mit értesz, de a struktúrák kialakítása, hogy az egyes hivatkozások jól legyenek megírva, az tényleg számomra másodrendű, nem vágyom bonyolult programokra, ha azt szeretnék, szerintem el sem kezdeném tanulni a JAVA-t mert az több év lenne mire össze tudnék rakni valamit. Egyelőre csak ismerkedem, tanulmányozom, aztán ha nem tetszik, vagy kifog rajtam megtanulok japánul, vagy valami hasonló hasznos dolgot[ Szerkesztve ]
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Linux felhasználók OFF topikja
- A fociról könnyedén, egy baráti társaságban
- Dell notebook topic
- (nem csak) AMD FX / Ryzen tulajok OFF topikja
- Eredeti játékok OFF topik
- Modern monitorokra köthető 3dfx Voodoo kártya a fészerből
- Rezsicsökkentés, spórolás (fűtés, szigetelés, stb.)
- iRacing.com - a legélethűbb -online- autós szimulátor bajnokság
- Milyen billentyűzetet vegyek?
- Fujifilm X
- További aktív témák...
- Újszerű - ASROCK B450 Fatal1ty Gaming K4 AMD AM4 alaplap + Windows 10/11 HOME digitális licensz
- Újszerű - ASROCK B450 Pro4 AMD AM4 dobozos alaplap
- HP Elitedesk 800 G4 DM I5-8500T 16GB 256GB SSD (1 USB sérült, de működik)
- Dell 7060 Micro I5-8500T 8GB 500 GB SSD WIFI
- DELL LATITUDE 7390 I5-8250U/8GB/256GB SSD/1920X1080