- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Magisk
- iPhone topik
- Yettel topik
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- LG V50 ThinQ Dual Screen - az 5G ára
- Fotók, videók mobillal
- Milyen okostelefont vegyek?
- Samsung Galaxy A54 - türelemjáték
Új hozzászólás Aktív témák
-
WonderCSabo
félisten
válasz
Sk8erPeter #6815 üzenetére
Emlékeztem rá, csak lusta voltam kikeresni, köszi.
-
WonderCSabo
félisten
-
WonderCSabo
félisten
válasz
glutamin #6805 üzenetére
Nem valszeg volt ott a hiba, hanem biztos ott volt a hiba, hiszen az error trace pontosan le is írta. Még azt is, hogy az első sorban a prolog előtt van valami felesleges adat.
Java 1.6-ra vissza váltás mondjuk szerintem annyira nem jó ötlet, minek? Ez oldotta meg a problémát? -
WonderCSabo
félisten
válasz
Aethelstone #6795 üzenetére
Azt egy szóval sem mondtam, hogy az IMDB LIKE-al működik, mert fogalmam sincs mivel működik. Az eredeti kérdés az volt, hogy lehet JPA-val megoldani, és LIKE-al meg lehet. Ha nincs túl sok sor, akkor jó lesz, ha nem, akkor nyilván lassú. MySQL-ben pl. van full text search, azzal meg lehet gyorsítani a dolgokat, pont erre való. Nem tudom, JPA-ra hogyan lehetne áthozni a featuret.
A leggyorsabb megoldás persze egy suffix fa építése lenne a memóriában, ahol minden node az adatbázis egy sorára is mutat. Persze ehhez sok adat esetén nagy memória kell.(#6794) Aethelstone: Jajj.
-
WonderCSabo
félisten
válasz
Oppenheimer #6783 üzenetére
Izé, a sima LIKE feltétel nem pont erre való JPQL-ben? Pl. city LIKE '%bud%'.
Szerk.: Ha csak elejére illeszkedés kell: city LIKE 'bud%'
-
WonderCSabo
félisten
válasz
kornyiktamas #6720 üzenetére
Lehet, hogy többen mondták már, és elnézést ha ismétlem őket, de azért leírom: ha informatikai szakmában akarsz elhelyezkedni, legalább alapszintű angoltudás elkerülhetetlen, enélkül meg vagy lőve, az elérhető információnak csak egy nagyon kicsi szeletét tudod használni.
-
WonderCSabo
félisten
válasz
Aethelstone #6615 üzenetére
Ugye itt generic collectionről van szó, az instanceof itt csak a taroló típusban segít, az elemek típusában már nem, persze ha csak lekérdezed az elsőt.
Szerintem itt felesleges ezzel foglalkozni, alapvetően a hívónak ismernie kell, hogy mit kap vissza, ez a hiba úgyis nagyon gyorsan kiderül a tesztelés során.
Akkor persze kéne esetszétválasztás, ha többféle objektumot kaphatunk vissza, de az pedig szerintem kerülendő... -
WonderCSabo
félisten
12.sor : ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
13. sor: Type safety: The expression of type ArrayList needs unchecked conversion to conform to ArrayList<Object>Javac meg ezt mondja:
[WARNING] Test/src/Main.java:[12,17] found raw type: java.util.ArrayList
missing type arguments for generic class java.util.ArrayList<E>
[WARNING] Test/src/Main.java:[13,40] unchecked conversion
required: java.util.ArrayList<java.lang.Object>
found: java.util.ArrayList -
WonderCSabo
félisten
válasz
beleszólok #6601 üzenetére
Manual -> oracle hivatalos tutorial, vogella
Design patterns, sztem nagyon faszán összehasonlítja.
Singleton: igen, sokak szerint anti-pattern. Időnként hasznos lehet, de normálisan kell használni.
MVC, ez is egy pattern végülis.
Decorator: ugye itt egy speckó python nyelvi elemről van szó. A műkődése viszont tényleg kvázi a pattern, viszont a python-os cucc függvényt dekorál, a design pattern pedig objektumot/osztályt.
-
WonderCSabo
félisten
Ebben tévedsz, a reflectionnel ebben az esetben valóban le lehet kérdezni az az Integer-t. Ezt használja ki a Guava/Guice/stb TypeToken/TypeLiteral megoldása:
Type genericSuperclass = IntegerList.class.getGenericSuperclass();
ParameterizedType pt = (ParameterizedType) genericSuperclass;
System.out.println(pt.getActualTypeArguments()[0]); -
WonderCSabo
félisten
mert runtime elérhető a típusinformáció (Reflection).
Öööö tuti?
Ha van egy ilyened:
class IntegerList extends List<Integer> {}
Akkor igen.
De ha ezt írod:
List<Integer> list ...;
Akkor a büdös életben nem fogod kideríteni runtime, hogy mi volt a <> között pontosan. És biztos vagyok benne, hogy a legtöbben erre gondolnak a generikus alatt.
-
WonderCSabo
félisten
válasz
beleszólok #6579 üzenetére
Kicsit hosszú lenne itt részletezni (mást ne mondjak: tömböt gyárthatok elemi típusokból is, egyebeket csak objektumokból)
Fú, ne keverjük a szezont a fazonnal. Ennek a dolognak, amit említettél, nem sok köze van magához a listához és a tömbhöz, ez a Java (nagyon sokak szerint elcseszett) generikus működése miatt van.
Egyébként a python list, és a Java ArrayList ugyanaz, csak más szintaktikával tudod elérni a műveleteit.
-
WonderCSabo
félisten
válasz
beleszólok #6577 üzenetére
viszont engem pusztán az zavar, hogy nincs olyan tömb, amihez utólag, másolás nélkül tudnék hozzáadni újabb elemeket
Én ezt most már nem értem...
Egyébként meg ArrayList és nem ListArray.
-
WonderCSabo
félisten
válasz
Aethelstone #6573 üzenetére
Én csak azt akartam mondani, hogy a párhuzam korrekt volt...
-
WonderCSabo
félisten
válasz
Aethelstone #6571 üzenetére
De, jogos az összehasonlítás, mert azokban a nyelvekben, ahol van operátortúlterhelés (pl. python, C++), ott a collection osztályoknál és indexelő operátort használnak. Ezt hiányolja beleszólok.
-
WonderCSabo
félisten
válasz
beleszólok #6560 üzenetére
Igen, pythonban is van operátortúlterhelés. Javában nincs, hogy miért az itt olvasható. A Java kritikájának egyik első eleme az operátortúlterhelés hiánya.
-
WonderCSabo
félisten
válasz
beleszólok #6558 üzenetére
Javában egy féle tömb van:
String[] array = new String[20]
Ennek futásidőben lehet méretet adni, szóval a C++ -os dinamikus memória lefoglalású tömbbel analóg. Ennek a mérete fix, és van indexelő operátora. Vannak osztályok, amik ezt a tömböt felhasználva változtatható méretű listát implementálnak, pl. ilyen az ArrayList. Valóban csak metódusokkal lehet elérni az elemeit, de ennek az oka alapvetően az, hogy Javában nincs operátortúlterhelés.
-
WonderCSabo
félisten
Lehet, hogy ehhez a beszélgetéshez is vagy át kéne menni a Programozás topikba, vagy egy új topikot létrehozni, mert eléggé túlmutat a Java keretein.
-
WonderCSabo
félisten
válasz
zserrbo #6433 üzenetére
A Sonatype Maven könyve elég jó szerintem. Egyébként a build system egyik lényege/előnye, hogy IDE-től teljesen független legyen. Először szerintem magát a Mavent értsed meg, aztán utána lehet megnézni az IDE integrációt.
-
WonderCSabo
félisten
Jajj... Ezt még olvasni is fáj.
A lokális repó nem arra van kitalálva, hogy másolják (szinkronizálják) egyik gépről a másikra, a struktúrája nem ilyen. Azt meg pláne nem értem, hogy ha már megtanultad a repo lokális kezelését, akkor miért nem vetted a fáradtságot hogy a távoli kezelést is megnézd. Bitbucket-ra regisztrálni nem nehezebb, mint dropboxra, és valóban ingyenes privát repóval is. A GitHub talán még letisztultabb, bár az csak git-et támogat.
Én mindenképpen javaslom Neked és plaschil-nak is, hogy tanuljátok meg a verziókezelők normális használatát, mert később ez elengedhetetlen lesz.
-
WonderCSabo
félisten
válasz
Aethelstone #6411 üzenetére
Valahogy azt sejtem, hogy ez nem céges projekt, de igazad van.
Pimpő: Szóval igazából csak Te használtad a repot? És a dropbox syncelte, és nem is a hg push?
-
WonderCSabo
félisten
válasz
TheProb #6399 üzenetére
Egyébként nem tudom érint-e, de egyetemi hallgatóknak és open source projekteknek ingyenes az Ultimate edition.
-
WonderCSabo
félisten
válasz
Aethelstone #6369 üzenetére
Értem, nyugi, csak pongyola volt a megfogalmazás.
-
WonderCSabo
félisten
válasz
Aethelstone #6367 üzenetére
Nyilván mindenkinek más a szokása, de static final változónak én ott adok értéket, ahol a deklaráció van.
Máshol nem is lehet.
-
WonderCSabo
félisten
Nagyrészt az egész a visszafele kompatibilitás miatt ilyen béna.
Igen, lehetne olyan runtime annot, aminek fordítási időben nem, viszont futási időben elérheted az értékeit, és akkor lehetne dinamikus is akár. Sok minden lehetne.
Mondjuk azért mielőtt adjon szidjuk a fordítot, nézd meg a JLS-t, valszeg ez így van specifikálva (persze lehet, hogy az egyszerű fordító kedvéért).
-
WonderCSabo
félisten
válasz
Aethelstone #6219 üzenetére
OK, valóban kezdünk eltérni a témától, sorry.
-
WonderCSabo
félisten
válasz
Aethelstone #6217 üzenetére
OK, azért szerintem jogos a duplikált sor lehetősége, különben a DISTINCT operátor értelmét vesztené, csak ezt akartam mondani.
Az viszont lehet, hogy így objektum-relációs leképezésen nem nagyon lehet használni, ebben valszeg igazad van, elnézést. -
WonderCSabo
félisten
válasz
Aethelstone #6214 üzenetére
Nyilván az ID-k eltérhetnek, de azt a java kódban az equals metódus-nak nem kell feltétlenül figyelembe vennie, és akkor máris egyenlő két egyed.
Persze az ilyen dolog is még ki fog bukni normalizáláskor, de egyrészt nem kell minden adatbázisnak x. normálformában lennie, másrészt ez az egyszerű példa is mutatja, hogy nagyon sántít ez a dolog.Én OrmLite-ot használok ORM-ként Android-on, az sosem csinált ilyet. Most rákerestem erre a Hibernate OneToMany duplicates problémára, és mindenhol azt olvastam, hogy rosszul volt használva a cucc.
Én elhiszem hogy ez így működik, mivel nem használtam még Hibernate-et (se semmilyen JPA implementációt), de akkor is nagyon furcsának tartom ezt. Ha esetleg erre van doksitok, ami leírja hogy ez az elvárt működés, az hasznos lenne.
-
WonderCSabo
félisten
Olvasom itt a fórumot erről a Hibarnete-es esetről. Én nem használom a Hibernate-et, de józan paraszti ésszel nézve és némi adatbázis használattal a hátam mögött, kizártnak tartom, hogy ez normális viselkedés. A Set és DISTINCT inkább csak a hiba elfedésének tűnik.
Pl. mi van akkor, ha nem uniqe sorok vannak a db-ben (nem jellemző, de akár lehetne). Akkor hogyan oldod meg, hogy ne legyenek felesleges duplikációk, mert a Set és DISTINCT az igazi duplikációkat kinyírja. -
WonderCSabo
félisten
válasz
PumpkinSeed #6151 üzenetére
-
WonderCSabo
félisten
válasz
bucsupeti #6148 üzenetére
akkor a new operátorral null-t kapok, azaz nem jön létre az objektum?
Azért ez a kettő állítás nem igaz.
public class Vmi {
public Vmi(boolean shouldThrow) {
if (shouldThrow) {
throw new RuntimeException();
}
}
}
public static void main(String[] args) {
Vmi vmi = new Vmi(false); // most a konstruktor rendesen lefut
try {
vmi = new Vmi(true); // most a konstruktor dob
} catch (Exception e) {
}
System.out.println(vmi);
}Ezen a ponton, ha null-t kapnál, akkor a vmi változó értéke null lenne. De ez nem igaz, hiszen a konstruktor "vissza se tér", így a változó marad az előző állapotában, azaz az első Vmi példányra mutat.
-
WonderCSabo
félisten
Azért hozzátenném, hogy a fordító nagyon okos, és a + operátor esetében is StringBuildert használ az összefűzéshez. Szóval olvashatóság érdekében nyugodtan meg lehet tartani az operátoros jelölést (itt mondjuk az pont ronda). Pl.
Integer b = // valahonnan
String a = b + "hehe" + 4;Az erre fordul:
NEW java/lang/StringBuilder
DUP
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
ALOAD 4
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
LDC "hehe"
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ICONST_4
INVOKEVIRTUAL java/lang/StringBuilder.append (I)Ljava/lang/StringBuilder;
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
ASTORE 5 -
WonderCSabo
félisten
válasz
PumpkinSeed #6124 üzenetére
static int input() {
Scanner scanner = new Scanner(System.in);
String string = scanner.next();
return string;
} -
WonderCSabo
félisten
válasz
zserrbo #6116 üzenetére
private Singletonpelda() {}
Erre gondolsz? Ez egy konstruktor. A konstruktor neve mindig megegyezik az osztály nevével, más nem is lehet, így lehet megtalálni, továbbá nincsen visszatérési értéke.
Singletonnál szokás privát konstruktort definiálni, mivel kívülről nem szabad példányosítani az osztályt (hiszen csak egy példánya lehet), ezt a privát konstruktor megakadályozza. A {} a konstruktor törzse, ami üres. Így talán érthetőbb:
private Singletonpelda() {
} -
WonderCSabo
félisten
válasz
PumpkinSeed #6101 üzenetére
Jó, de mégis az a String hogy van elválasztva a többitől, honnan tudod, hogy mi a vége? Alapesetben a Scanner whitespace-ek mentén darabol. Ha ez Neked megfelelő, akkor elég meghívnod így:
String string = scanner.next();
De ha nem akkor saját elválasztót is beállíthatsz a useDelimiter() metódussal.
-
WonderCSabo
félisten
válasz
PumpkinSeed #6096 üzenetére
static int input(){
Itt a metódus szignatúrájából látszik, hogy te egy int típusú értéket szeretnél beolvasni.
Ha a nextLine() metódust használod, az String-et ad vissza, és ekkor a String-ből még intet kéne parseolni.
String line = scanner.nextLine();
int value = Integer.valueOf(line);Ehelyett sokkal kényelmesebb:
int value = scanner.nextInt();
-
WonderCSabo
félisten
Én igazán nem akarok beleszólni, de kezdünk nagyon elkanyarodni a témától, és bár érdekes érvek hangoznak el, mindannyian tudjuk, hogy ez is mint oly sok vita az informatikában, sehova se vezet.
-
-
WonderCSabo
félisten
Egyébként esetleg Bugzilla?
-
WonderCSabo
félisten
válasz
MrSealRD #5815 üzenetére
Sztem Lortech üzenete itt az akart lenni, hogy nem minden tagnak kell getter/setter, továbbá ahol indokolt, a getter/setterbe egyéb logikát is illik írni az alapvető műveleten kívül.
Pl. vegyük egy Pair osztályt, aminek két darab adattagja van, first és second, és annyi az egész class funkcionalitása, hogy ezt a két értéket hordozza. Ebben az esetben a getter és setter felesleges, nyudogtan lehet public mindkettő.
De pl. van egy Car osztályod, akkor egyes belső adattagoknak nem csinálsz getter/settert, mivel semmi köze hozzá senki másnak, más adattagokhoz meg deklarálsz. -
WonderCSabo
félisten
válasz
RaPiDsHaRe #5808 üzenetére
"Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Azért egy picit próbáld meg értelmezni a hibaüzeneteket... Fordítási hiba van a kódban, azért nem tudod futtatni.
Ezután már futtatható IDE-ből, exportálható JAR fájlba, majd futtatható a jar a JVM segítségével... -ezt, hogyan tudom megcsinálni ?
Ha csak nem akarod másnak is átadni a programot, vagy valamiért tesztelni hogy viselkedik ilyen esetben, teljesen felesleges ezzel nyűglődni, az IDE-ből való futtatás sokkal kényelmesebb, és nagyon sok előnnyel jár.
-
WonderCSabo
félisten
válasz
RaPiDsHaRe #5796 üzenetére
Egy hiba mindenképpen van benne. Először kiírja 2x a cuccot, aztán csökkenti a számot és még egyszer kiírja. Ez a végén ahhoz fog vezetni, hogy "1 bottles of beer on the wall" is ki lesz írva.
-
WonderCSabo
félisten
200 elemnél még egy sima array és lineáris keresés is elég... Ekkora elemszám már gyakorlatilag nulla a mai processzorteljesítményekhez, ha más adatszerkezetbe szervezed nem fogsz gyorsulást tapasztalni. 1 millió elemnél már igen.
Egyébként a legkényelmesebb erre a célra valamilyen kétirányú map, pl. Guava Bimap. Vagy ha egyirányú a tanulás akkor elég egy HashMap is.
-
WonderCSabo
félisten
válasz
szcsaba1994 #5645 üzenetére
Dobsz egy véletlen számot a Random osztállyal, aztán ciklusban addig olvasod be a sorokat mondjuk BufferedReader-be, amíg a számhoz nem érsz.
-
WonderCSabo
félisten
Ismeritek a Git-et?
-
-
WonderCSabo
félisten
A Versions Maven plugin tudja ezt valamennyire. Az mvn versions:use-latest-versions a POM-ban átírja az összes verziószámot az elérhető legújabbra. Viszont én nem ajánlom, hogy ezt használjad. Inkább érdemes az mvn versions:display-dependency-updates parancsot meghívni. Ez nem írja át a POM-ot, csak a konzolra printeli a frissebb elérhető dependenciát, ha van. Ezután kézzel érdemes beírni a POM-ba, és megnézni minden működik-e, ahogy kell. A kompatibilitást nem tudja garantálni, erre nincs módszer, bármikor eltűnhet egy metódus az API-ból, vagy megváltozik a viselkedése egy osztálynak, ezt a Maven nem fogja tudni kideríteni.
Igen, erre ideális egy branchet létrehozni, bár én utálom az SVN branch-eit. Itt le van írva, hogyan tudsz SVN-ben branchet létrehozni, commitolni benne majd később mergelni.
-
WonderCSabo
félisten
Csak magamat tudom ismételni:
-
WonderCSabo
félisten
válasz
Aethelstone #5472 üzenetére
Ez nem igaz. Nézzük csak meg pl. az ArrayList iterátorának a forráskódját:
public void remove() {
if (lastRet < 0)
throw new IllegalStateException();
checkForComodification();
try {
ArrayList.this.remove(lastRet);
cursor = lastRet;
lastRet = -1;
expectedModCount = modCount;
} catch (IndexOutOfBoundsException ex) {
throw new ConcurrentModificationException();
}
}Ez simán ráhív a ArrayList.this.remove(lastRet) -ra ami ténylegesen kitörli az elemet.
Vagy nézzük meg az Androidos implementációt:
public void remove() {
Object[] a = array;
int removalIdx = removalIndex;
if (modCount != expectedModCount) {
throw new ConcurrentModificationException();
}
if (removalIdx < 0) {
throw new IllegalStateException();
}
System.arraycopy(a, removalIdx + 1, a, removalIdx, remaining);
a[--size] = null; // Prevent memory leak
removalIndex = -1;
expectedModCount = ++modCount;
}Itt még egyértelműbben látszik, hogy az arraycopyval odébb mozgatja az egészet eggyel.
Az állításod már ott megbukott, hogy a "végén kikapja az elemeket". Milyen végén? Itt nincs semmi esemény, amihez ezt köthetni lehetne, in-place kell kitörölni az elemet.
-
WonderCSabo
félisten
válasz
Aethelstone #5458 üzenetére
A Date egyes metódusai joggal deprecated-ek.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Melyik tápegységet vegyem?
- Mibe tegyem a megtakarításaimat?
- NVIDIA® driverek topikja
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- LED világítás a lakásban
- BestBuy topik
- WLAN, WiFi, vezeték nélküli hálózat
- Casco és kötelező gépjármű felelősségbiztosítás
- Fujifilm X
- További aktív témák...
- Újszerű HP 250 G10 - 15.6"FHD IPS - i3-1315U - 8GB - 512GB SSD - Win11 - 1,5 garancia - MAGYAR
- új bontatlan iPhone 16 Pro 128GB black titanium fekete titán független Apple 1 év garancia ajándék
- HP 635 laptop eladó
- Thinkpad X230 legenda: i7 CPU, IPS kijelző, 12 GB, dupla SSD, magyar villbill, webcam, fingerprint
- Honor X6b 128GB Kártyafüggetlen 1Év Garanciával
- Dell USB-C, Thunderbolt 3, TB3, TB4 dokkolók (K20A) WD19TB/ WD19TBS/ WD22TB4, (K16A) TB16/ TB18DC
- Bowers/Wilkins Px7 S2 fejhallgatók
- Bomba ár! Lenovo ThinkPad T470 - i5-G6 I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W10 I Garancia!
- ÁRGARANCIA! Épített KomPhone i5 13400F 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- Csere-Beszámítás! Asus Prime RTX 5060Ti 16GB GDDR7 Videokártya! Bemutató darab!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged