- Android alkalmazások - szoftver kibeszélő topik
- iPhone topik
- Xiaomi Watch 2 Pro - oké, Google, itt vagyunk mi is
- Nem lett arányos a fogyókúra
- Redmi Note 13 4G
- Samsung Galaxy S25 - végre van kicsi!
- Akciófigyelő: Jelentősen olcsóbban nyit az Ulefone új mindenese
- Hívószám-hamisítás
- Samsung Galaxy A34 - plus size modell
- Samsung Galaxy S22 Ultra - na, kinél van toll?
Új hozzászólás Aktív témák
-
pakriksz
őstag
Sikerült, furán viselkedik. Ugyan az a program ugyanazokkal a teszfájlokkal ugyanannyi beállított threaddel teljesen randomban 3 féle dolgot művel:
-töltöget majd úgy néz ki mint egy végtelen ciklus 1 mag használatával
-működik de 1 magon
-több magon működik ahogy kellVolt már ilyen kiszámíthatatlan működés hasonlóképpen, de néhány indítás után normális lett. Hát most nem lett.
Ami mégfurább, hogy ha egyszerre kevesebb fájlt nyitok meg (300+ helyett mondjuk 100-at) akkor mindig megfelelően működik.
Elfogyott a memória talán? -
pakriksz
őstag
megvan, while awaittermination és a ciklusba egy sleep. Már "csak" meghívni a metódusokat kéne több szálon.
-
pakriksz
őstag
válasz
pakriksz #2447 üzenetére
Az első mondat hülyeség, csak már felment a pumpa. De a lényeg még mindig az hogy a metódushívás nem megoldott.
Viszont Executeservice működik létrehozáskor, a probléma az, hogy ugye végigmegy a for cikluson, de még futnak a threadek, a for ciklus után meg jön a gui frissítés az adatokkal, csak hogy sehogy sem tudom ezt váratni amíg készvannak a threadek.
Megváratni viszont sehogy sem tudom. Ha berakok egy waitet akkor "IllegalMonitorStateException", ha not isTerminated vagy isShutdown-t rakok a while ba azok soha nem jelzik hogy kész van... -
-
pakriksz
őstag
válasz
Lortech #2444 üzenetére
és ha nincs vége a konstruktornak akkor nem indítja a többi threadet? Ez nagyon gáz. akkor ahogy látom képtelenség így létrehozáskor exceptiont dobni, ugyanis a run() "nem támogatja". Konstruktor igen
Amúgy konstruktorból átrakva a dolgokat, sikerült több magot használtatni vele. De aztán hogyan?Grafikus felületen egy listában tárolja a fenti osztály példányait, majd for ciklussal megy végig rajtuk és hívogatja meg a metódusait a user eventjeikor, viszont ugye a for megvárja az eredményt, így 1 szál fog futni egyszerre. Ilyenkor mi van?
(valami szálmenyiség maximalizálást is kéne csinálni, mert fájlokból olvas ír, és hát a vinyóknál nem valami hatékony hogy 300 szál olvasgat írogat 300 fájlt, na meg a cpu-nak is értelmetlen ennyi.)
-
pakriksz
őstag
válasz
Lortech #2441 üzenetére
ja úgy néz ki csak 1 thread fut.
Csináltam ezért egy tesztosztályt.
public class Tred extends Thread {
private double tőtjük=0;
public Tred() {
super();
while (true) {
tőtjük=tőtjük+Math.round(Math.random()*(Math.random()*10));
//System.out.println(totjuk);
}
}
@Override
public void run() {
super.run();
}
}
És így indítom:
public static void main(String[] args) {
new Tred().start();
new Tred().start();
new Tred().start();
new Tred().start();
}gyönyörűen beáll 1 magra... mivel 25%-os terhelés a 4 magon.
Pedig úgy indítom ahogy mindenhol írjáák és itt aztán még synchronized változó sincs. -
pakriksz
őstag
Azt nem tudja valaki, hogy sok egymástól független threadből indított külső programból miért nem indít annyit a java ahány threadből meghívódik? Mert csak 1x hívja meg, és így ezen a részen elveszik a többszálúság.
-
pakriksz
őstag
Ez azért nagyon kemény:
sír hogy az objectként beolvasott objektum (lista) listára castolása ellenőrizetlen. De ha berakok egy instanceof-ot, oda meg nem lehet generikust írni, tehát ugyanúgy ellenőrizetlen lesz -
pakriksz
őstag
válasz
Lortech #2435 üzenetére
nem volt, de közben rájöttem. Mindegy ez amit így objektumként ment nem valami szép xml, és azért jó lenne ha embernek is jobban olvasható lenne, úgyhogy saját xml mentést írok, csak van vele egy gond.
DOM-ot használok, be van állítva a transformernél az indent is, mégsem formázza szépre az xml-t, miközben ugyanebben a programban egy másik xml-t igen, ugyan ezekkel a beállításokkal. -
pakriksz
őstag
XML-be írnék objektumokat.
De Ha egy feltöltött listát írok ki, gyakorlatilag létrehoz egy arraylist node-ot az xml-be ami tök üres, pedig a listben vannak objektumok.Ha forral akarom kiiratni a listben lévő objektumokat, akkor meg egy ilyen rendkívül informatív hibaüzenetet kapok:
java.lang.InstantiationException: Replaceable
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(Replaceable);A replaceable objektum már implements Serializable, de úgy is ugyanez.
-
pakriksz
őstag
Egy olyan problémába ütköztem, hogy egy külső exét hív meg a programom Runtime.getRuntime().exec("serz.exe "+path); ami egy fájlt konvertál. A gond az, hogy erről a sorról tovább lép a programom mielőtt kész lenne a hívott program, így konvertált fájlt vagy nem találja, vagy félkészen nyitja meg. Mit lehet tenni?
-
pakriksz
őstag
Hogyan lehet egy nagyobb libből kiszedni a szükséges dolgokat (vagy akár összeset mert gondolom a proguard ki tudja szedni a felesleget) hogy működjön is? Úgy megy hogy external jarként hozzáadom majd eclipse-vel úgy exportálom hogy berakja a jar-ba a lib jarokat is (de jarként teszi bele). Ha azt mondom hogy csomagolja ki a libet és úgy tegye bele a jarba, úgy megy, de így még nagyobb lesz az egész jar, proguard meg állandóan elszáll a végén, hogy "Warning: org.jdesktop.swingx.auth.KeyChain: can't find referenced class...".
Hogy lehet csökkenteni a libek méretét? -
pakriksz
őstag
válasz
Lortech #2411 üzenetére
Aha igen így tényleg megy. És így a noduplicatelisttel is ugyanúgy "thread safe" lesz?
Más: az xml-t egy serz (ami a serialize rövidítése szinte biztos) nevű programmal tudom konvertálni oda és vissza, egy bin kiterjesztésű fájlból. A bin-be konvertált xml-ek úgy néznek ki, hogy kb tizedakkora a méretük, néhány xml szöveget ki lehet venni belőle, de nagy része olyan bináris kódos mindenféle jel. És jó lenne ha nem kéne ez a serz program a konvertálásra, viszont zárt forráskódú. Rákerestem arra java-ban binarize, amire csak annyi jött ki hogy lehet javaban bináris adatot menteni sima xml-be. Serialize-re rákeresve pedig objektumok xml-be mentése jött ki. Egyik sem éppen az ami kéne.
Ez a dolog lenne az
De nem tudom javaban honnan indulhatnék el, ez a serz program egyébként c# nyelven íródott. -
pakriksz
őstag
Hát ez nagyon furcsa. A programomat elindítom a jar-ra duplaklikkelve win7 alatt, de nem csinálja a dolgát. Egy 50 megás xml-t kéne betöltenie, de nem listázza ki, semmi hibaüzenet, és jó sokáig terheli a cpu-t.
Eclipse-ből indítva jóval rövidebb ideig terhel, és úgy működik ahogy kell. A vicc az hogy paranccsorból java -jar al futtatva szintén rendesen működik.
Ha duplaklikkel indítom és nem működik rendesen akkor a folyamatoknál egy 32 bites javaw.exe-ben fut. Ha eclipse-ből, akkor 64bites javaw-ban, java -jar nál pedig 64 bites java.exe-ben. -
pakriksz
őstag
válasz
skoda12 #2407 üzenetére
Pedig nem működik, azt mondja nem lehet Listt-é alakítani. Viszont máshogy megoldottam a dolgot, úgy hogy a noduplicatelistben minden használt metódust synchronized-ként overrideoltam. Set-list konvertálgatás pedig azért gáz mert futás közben jópárszor végig kéne járnia ezt az utat, merthogy szerkeszteni is lehet a dolgokat nem csak kilistázni.
A JTable-hez meg csináltam egy saját tablemodelt, amivel már rendesen megy.
De van nála egy kis kinézeti bibi. Nem találok olyan beállítást hogy a cellákat az abban az oszlopban lévő leghosszabb szövegre méretezze, mert bár futás közben lehet egérrel átméretezni de jó lenne ha minden látszana. Az auto resize beállításoknál nincs ilyen azokat végigpróbáltam. A jtable metódusainál van 2 aminek a nevéből ítélve az lenne célja, de az egyik deprecated a másik meg már elvileg java 1.4 óta nincs benne. Az állítólagos alternatíva doLayout meg semmit sem csinál. -
pakriksz
őstag
Csináltam egy ilyet public class NoDuplicateList<E> extends ArrayList<E>
Azért nem set-et használok új osztály helyett mert kell a get metódus is és az is hogy a listában minden csak egyszer szerepel. Na de most A Collections.synchronizedList() ezen nem működik, már pedig több szál fog hozzáférni ehhez a listához.
Mit lehet tenni?
Ja a másik csavar benne, hogy ez azért kell, mert egy több szálú program állítja össze a listát (igazából bármi lehet csak 1 adat(ez az adat egy 6 stringből álló objektum csak 1x szerepeljen benne), majd ezt egy Jtable-ben kéne megjeleníteni(amihez szintén kell 3 metódust implementálni). -
pakriksz
őstag
Megoldottam, végigkeresi az üres string attribútumos(mert van ilyen az xml-ben, így szerencsére nem kell az összes tagen végigmenni, mert csak ezeknél fordulhat elő üres tag) tageket, és beilleszt egy space-t. Így külön zárja le. Azt olvastam az xml-nél az a szabvány ha nincs semmi a tagek között akkor <Tagnév/> a szabályos, de azért jó lenne ha a DOM-ban be lehetne állítani hogy formázgathatja-e vagy sem.
-
pakriksz
őstag
Ha segít, ilyen az xml-be mentési metódus.
private void toXML() throws Exception
{
TransformerFactory xf = TransformerFactory.newInstance();
xf.setAttribute("indent-number", new Integer(2));
Transformer xformer = xf.newTransformer();
xformer.setOutputProperty(OutputKeys.METHOD, "xml");
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
xformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
FileOutputStream fos= new FileOutputStream("teszt.xml");
Result out = new StreamResult(new OutputStreamWriter(fos,
"UTF-8"));
xformer.transform(new DOMSource(doc), out);
fos.close();
} -
pakriksz
őstag
Hogy lehet úgy kiírni fájlba a módosított xml-t hogy azokon a nodeokon kívül amit én a programban módosítok semmi mást sem változtat?
Mert pl felcserél attribútumokat, berak olyat ami előtte nem volt, stb.
pl ilyet is:
eredeti <BlueprintID d:type="cDeltaString"></BlueprintID>
úk <BlueprintID d:type="cDeltaString"/> -
pakriksz
őstag
válasz
ArchElf #2398 üzenetére
Aha köszi, bár nem pontosan így értettem, de majdnem, és így látva egy példát már kezdek rájönni hogy működik ez, és persze a programban is működik. Még annyit hozzátennék, hogy stringnél az xpath querybe "" között szóval kell pár \" is. Ezért egyébként nem szól, viszont ha nincs ""-ben akkor nem fog soha sem eredményt adni.
-
pakriksz
őstag
válasz
ArchElf #2395 üzenetére
jó ezt tudom, de egy lekérdezésbe ezt hogy?
Na meg azt is valahogy meg kellene oldani utána, hogy van egy provider product, és blueprintid trió és ezekre textjére együtt rákeresni, úgy hogy csak azt dobja ki ahol ez a 3 dolog pontosan egyezik a keresettel, ahol a 3 ból egyik nem egyezik ott már nem.
-
pakriksz
őstag
Hello, javas xpath segítség kellene nekem.
Egy ilyen felépítésű xml-ből bármilyen mélységben (<BlueprintID> fölötti rangú dolog is van, ez csak egy kis részlet) kéne az "EZ", "MEGEZ", "ÉSEZ" nevezetű szövegeket tartalmazó nodeok, tehát a provider, product, és blueprintID, úgy hogy a felső blueprintID lehet más nevű tag is de eszerint lehet keresni az xml-ben, de az alatta lévő tehát <iBlueprintLibrary-cAbsoluteBlueprintID>-től kezdődő dolgok mindig fixek.
<BlueprintID>
<iBlueprintLibrary-cAbsoluteBlueprintID>
<BlueprintSetID>
<iBlueprintLibrary-cBlueprintSetID>
<Provider d:type="cDeltaString">EZ</Provider>
<Product d:type="cDeltaString">MEGEZ</Product>
</iBlueprintLibrary-cBlueprintSetID>
</BlueprintSetID>
<BlueprintID d:type="cDeltaString">ÉSEZ</BlueprintID>
</iBlueprintLibrary-cAbsoluteBlueprintID>
</BlueprintID>például mitkeres="BlueprintID"
most úgy megy hogy XPATH.compile("//"+mitkeres+"/iBlueprintLibrary-cAbsoluteBlueprintID/..");Azért keres az iBlueprintLibrary-cAbsoluteBlueprintID-ig majd annak szülőjét adja vissza mert mint látható 2 ugyanolyan nevű tag-van másra használva, és így van meg biztosan a külső.
Majd ezután egy saját metódus lépked bele a childokba addig amíg a 3 keresett taget meg nem találja. De talán ezt meg lehetne csinálni ezek nélkül is 1 db xpath lekérdezéssel, de az xpath leírások eléggé összecsapottak, nem tudom hogy kéne kinéznie egy ilyen lekérdezésnek. Valaki tud valami tippet erre?
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- LG 55G3 - 55" OLED evo - 4K 120Hz 0.1ms - MLA - 2000 Nits - NVIDIA G-Sync - AMD FreeSync - HDMI 2.1
- iKing.Hu - Apple iPhone 14 Pro Max - Gold - Használt, szép állapot
- Azonnali készpénzes nVidia RTX 2000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Csere-Beszámítás! Sapphire Pure RX 7900XT 20GB Videokártya! Bemutató darab!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged