- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Nagy bemutatóra készül az Oppo
- Szaporodik és sokasodik a One UI 8.5
- Huawei Watch Fit 5 Pro - jó forma
- Okosóra és okoskiegészítő topik
- Rég várt frissítést kap az Android tárcsázója
- Friss információk és képek a OnePlus új órájáról
- Fotók, videók mobillal
- One mobilszolgáltatások
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
axioma
veterán
Na ennyit a java híres visszafelé kompatibilitásáról...
java 7-en működik a program, java 8-on java.io.IOException: javax.crypto.BadPaddingException: Given final block not properly padded
Ráadásul ez egy kódolt fájl olvasásának close()-olásakor jön elő, előtte simán kiolvas belőle minden adatot.
Ez mi?
Ha jol emlekszem 6->7 valtaskor szivott az egyik m.tarsam, aki vesszovel sorolta fel egy stringben a szamara szukseges listat (xml-ben lett attrib.), es a visszakonvertalasnal baromsagok jottek be, mert kozben valtozott a default tizedes ertelmezese, addig a pont volt, utana meg az aktualis nyelvnek megfelelo, magyarul pont a vesszo... persze ez a usernel jott elo nyilvan hianyos hibainfoval, nem nala, mert o angolul hasznalta.
-
xTc
aktív tag
Na ennyit a java híres visszafelé kompatibilitásáról...
java 7-en működik a program, java 8-on java.io.IOException: javax.crypto.BadPaddingException: Given final block not properly padded
Ráadásul ez egy kódolt fájl olvasásának close()-olásakor jön elő, előtte simán kiolvas belőle minden adatot.
Ez mi?
Ez miért is "visszafelé kompatibilitás"? Ha jól értem jdk7uXX jó a program, jdk8uXX-ben pedig nem. Ez nálam nem visszafelé kompatibilitás probléma, hanem egyszerűen csak változott egy implementáció.
-
sztanozs
veterán
Találtam egy base64-bug-os hibát is - meg egy rosszul használt finalization-t is. Ezek sem lehetnek? Tudnál kódot mutatni?
-
sztanozs
veterán
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
try
{
PBEKey key = (PBEKey) SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1").generateSecret(new PBEKeySpec(new String(stml).toCharArray(), salt, 7, 128));
SecretKey encKey = new SecretKeySpec(key.getEncoded(), "AES");
dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
dcipher.init(Cipher.DECRYPT_MODE, encKey, paramSpec);
}Nekem úgy tűnik meg van adva.
Encrypt oldalon is?
-
sztanozs
veterán
Na ennyit a java híres visszafelé kompatibilitásáról...
java 7-en működik a program, java 8-on java.io.IOException: javax.crypto.BadPaddingException: Given final block not properly padded
Ráadásul ez egy kódolt fájl olvasásának close()-olásakor jön elő, előtte simán kiolvas belőle minden adatot.
Ez mi?
A probléma az, hogy nincs a padding egyértelműen meghatározva a cypher generálásakor. Felteszem, hogy a 8-asban már egy nem biztonságosnak ítélt default paddinget egy másikra cseréltek (feltételezem le is van írva valamelyik cangelogban). A kódban csak cserélni/pontosítani kell a használt padding módot.
-
modder
aktív tag
http://en.wikipedia.org/wiki/Public-key_infrastructure
Mi az a cacerts file:
http://docs.acl.com/ax/300/index.jsp?topic=/com.acl.ax.admin.help/system_administration/t_importing_certificates_into_the_java_cacerts_file.htmlHa a java SSL kilensed a default cacerts truststore-t használja, és olyan szerverrel kommunikálsz, ami self-signed certificate-et vagy olyan használ, aminek az aláírója nincsen benne a cacerts fileban, akkor nem tudja hitelesíteni a szervert.
-
MrSealRD
veterán
-
Karma
félisten
-
pakriksz
őstag
köszi a válaszokat, ezt a dolgot kicsit félretettem.
Van egy nagyobb probléma, vagyis kettő. A javas servletem, és ez egy wines gépen tökéletesen fut. Egy x86-os linuxos gépen is, OpenJDK7-el, egy ARM-os linuxon szintén openJDK-el, viszont SSL-es smtp-n keresztüli mailküldésnél elszáll ezzel: javax.net.ssl.SSLException: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Guglin rákeresve valami default keystore-ról írnak, meg hogy hozzam létre... de lila gőzöm nincs arról hogy mi a fene ez a keystore és hol van. Eddig ilyesmi soha nem kellett, csak akkor ha szerverként akartam használni a programomat (ott inkább lemondtam az SSL-ről, mert annyira nem fontos), de most kliensként is ezzel szórakozik...
Ugyan ilyen leosztásban a servlet x86-os gépeken úgy működik ahogy kell (ha nem megfelelő requestet kap egyszerűen csöndben, van ha megfelelőt akkor válaszol), az ARM-os gépen pedig 500-as üzenetet "server error" dob az alkalmazásszerver mindenre, bár lehet hogy ez összefügg a fenti dologgal, mert a requestre a válasz SSL-en menne.
felraktam egy oracle jre-t és azzal no problem... úgyhogy openjdk kuka.
-
Karma
félisten
Ja egyébként erre visszatérve: jogos észrevétel, a TeeOutputStream valószínűleg praktikusabb, mert akkor csak egyszer kell írnod valahol a forrásnál, mintha simán a fájlt hergelnéd.
Ha InputStreamet készítesz a forrásoldalon, akkor tényleg másolni kell, a streamek nem folynak át maguktól egymásba
Viszont a Commons IO-ban erre is vannak statikus metódusok (IOUtils.copy, IOUtils.copyLarge), úgyhogy nem muszáj saját IO logikát írni. -
Karma
félisten
Minden request külön szálra kerül, párhuzamosan. A container tipikusan egy threadpoolt használ erre. Ha elfogynának a pool szálak, akkor meg vár a request.
-
Karma
félisten
Egy olyan dolgot szeretnék egy javas programban, hogy egy outputstreamet kiírok egy helyi fájlba, ÉS egyidejűleg ezt az outputstreamet valahogy inputstreammé konvertálva egy másik metódusnak is küldöm (ami feltölti egy tárhelyre). Van erre valami kész megoldás, vagy bytebufferes másolgatás lesz belőle?
Apache Commons IO -> TeeInputStream.
-
pakriksz
őstag
-
Superhun
addikt
-
modder
aktív tag
te most éppen miről beszélsz? Nem azt írtam be hogy nem működik, hanem azt hogy nem működik, és mivel van probléma és hogyan...
infora állított thresholddal nem küld semmit az info-ról, sem warn-ról csak errorról és fatalról.
Ugyan olyan threshold beállítással fájlba minden kiír, mailba viszont nem.Ne csak kötekedj, olvasd el miről van szó.
Jó, nem fogok leállni veled vitázni, csak legközelebb légyszi ne csak azt írd, hogy nem megy, hanem a körülményeket is, főleg ha segítséget vársz
-
Superhun
addikt
Nem tudod átállítani a Threshold property-vel sem. Trükközni kell. Kérdés, hogy megéri-e.
-
TBG
senior tag
Tesztre DEBUG szinten szoktunk logolni.
Próbáld ki DEBUG-gal. Nincs kizárva, hogy ez az appender egyáltalán nem logol INFO-ban. Láttam már ilyet. A 4.x-es JBoss egy csomó ERROR logot csak DEBUG-ban volt hajlandó logolni. Ergó, a kedves feljlesztők a try catch ág catch bejegyzéseibe nem ERROR, hanem DEBUG logot tettek... -
Superhun
addikt
Alapértelmezésként ERROR vagy magasabb szintű logokat küld csak az SMTPAppender, amit property állítgatással nem lehet befolyásolni. Miért van egyébként szükség az INFO szintű logok elküldésére?
-
modder
aktív tag
http://www.tutorialspoint.com/log4j/log4j_logging_levels.htm
For the standard levels, we have ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Ha a thresholdot INFO-ra teszed, akkor a DEBUG-ot nem engedi tovább.
Amúgy meg RTFM és azon nem javítasz a helyzeteden, hogy sértődötten beírod, hogy "nem működik", csak a 3. rákérdezésre adsz valami infót, amiből az ember leszűrhet valamit.
-
TBG
senior tag
igen
log4j.rootLogger=DEBUG, stdout, file, mail
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%t]: %m%n
log4j.appender.stdout.Threshold=TRACE
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=F:\\logging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.file.Threshold=INFO
log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.BufferSize=1
log4j.appender.mail.SMTPHost=smtp.gmail.com
log4j.appender.mail.SMTPUsername=#####################
log4j.appender.mail.SMTPPassword=XXXXXXXXXXXXXXXXXXXXXX
log4j.appender.mail.SMTPPort=465
log4j.appender.mail.SMTPProtocol=smtps
log4j.appender.mail.From=##########################
log4j.appender.mail.To=##########################
log4j.appender.mail.Subject=Hiba
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%t]: %m%n
log4j.appender.mail.Threshold=INFOA google a fejlesztő barátja.
http://stackoverflow.com/questions/6242838/log4j-failing-to-send-an-email-when-logging-an-error
-
TBG
senior tag
Be tudnád másolni a log4j beállításaid? Password nem kell

-
Superhun
addikt
-
Superhun
addikt
-
TBG
senior tag
-
Karma
félisten
-
TBG
senior tag
ja hát igen tehát teljesen másra való mint amire kellene. (ez urlbeni paraméterküldésre való) nekem meg url formázás kellene.
Tehát normális url-t stringből a replace-el lehet megint csak összehozni

(url pedig tartalmazhat spacet csak nem space-ként kódolva, de nem is +-ként... De éppen erről volt szó, hogy stringből kéne egy url-t csinálni)
Tehát vegyük át még egyszer. URL NEM tartalmazhat space-t. A paraméterek nevei NEM tartalmazhatnak space-t, a paraméterek értékei igen, encode-olva. Ha pár apróságot figyelembe veszel, könnyebb lesz az életed.
Természetesen a szabványoktól el lehet térni, csak nem érdemes.
-
Karma
félisten
ja hát igen tehát teljesen másra való mint amire kellene. (ez urlbeni paraméterküldésre való) nekem meg url formázás kellene.
Tehát normális url-t stringből a replace-el lehet megint csak összehozni

(url pedig tartalmazhat spacet csak nem space-ként kódolva, de nem is +-ként... De éppen erről volt szó, hogy stringből kéne egy url-t csinálni)
Egyébként tisztábban megoldani úgy tudod, hogy az URL osztály helyett a URI-t használod.
-
TBG
senior tag
Az URLEncoder teljesen jól működik. Ismerni kellene pár szabványt és nem anyázni.
http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4
Control names and values are escaped. Space characters are replaced by `+', and then reserved characters are escaped as described in [RFC1738],
Tehát a replaceAll() nem gányolás. A gányolás az, hogy space van az URL-ben.
http://www.w3schools.com/TAGS/ref_urlencode.asp
URLs can only be sent over the Internet using the ASCII character-set.
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format.
URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits.
URLs cannot contain spaces. URL encoding normally replaces a space with a + sign.
-
modder
aktív tag
javaslom, hogy olvasd el, mire jó az URLEncoder osztály http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html
" for converting a String to the application/x-www-form-urlencoded MIME format"
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
hát én ott még nem láttam normális paraméterezést...
Viszont ez a forkjoinpool már érdekes.Ez viszont vicces: az URL osztály nem kódolja rendesen URL-é a beadott a stringet. Openstreamnél simán elküldi a spacet pedig valami %20-al kéne helyettesítenie, aztán a szerver dobja is 400-as hibát rá.... Nagyon jó, még egy replace(" ","%20") gányolás....
Ez viszont vicces: az URL osztály nem kódolja rendesen URL-é a beadott a stringet. Openstreamnél simán elküldi a spacet pedig valami %20-al kéne helyettesítenie, aztán a szerver dobja is 400-as hibát rá.... Nagyon jó, még egy replace(" ","%20") gányolás....
http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html
-
WonderCSabo
félisten
Így sikerült
private static String byteArrayToHex(byte[] a) {
StringBuilder sb = new StringBuilder();
for(byte b: a)
sb.append(String.format("%02x", b&0xff));
return sb.toString();
}Ez se valami jó, de működik.
Egyébként most megint eljutottam oda, hogy az egész programnak nem is, de néhány metódusnak jó lenne külön szálon futnia. Egy rakás fájlt kéne letölteni, és kicsomagolni for ciklusban. Ezek simán mehetnének párhuzamosan, de az agyhalál ahogy a java-ban ezt meg lehet oldani, kezdve azzal, hogy nem lehet csak úgy simán paraméterezni a threadben futó metódusokat.
Olyan egyszerű lenne mondjuk így hogy:threadedFor (Valami x: List<Valami>, Runtime.getRuntime().availableProcessors()) {
valamimetódus(x);
másikmetódus(x);
}és így a ciklusban lévő kód egyszerre párhuzamosan futna maximum annyi szálon ahány processzor van (vagy amennyit oda beírsz)
A runnable-vel szendvedés helyett... de ahogy látom a többi nyelvnél sincs annyira megkönnyítve a a párhuzamos futtatás, pedig már ideje lenne.
Azért ThreadPool-al egész jól meg lehet oldani, amit Te hiányolsz.
-
modder
aktív tag
akkor próbáld meg így:
byte[] md5StringToByte = new byte[md5String.size()/2];
for( int i = 2; i < md5String.size(); i+=2 ){
String stringByte = md5String.substring(i-2,i);
md5StringToByte[i/2 - 1] = Byte.parseByte(stringByte, 16);
}összehasonlítod az md5StringToByte tömböt az eredetivel. Nem vagyok benne biztos, hogy a stringben a helyiértékek ugyanabban a sorrendben követik egymást, mint a byte tömbben, mert most nem tudom végiggondolni

szerk.: ez eléggé pseudo kód, valszeg nem is a leggyorsabb, de kiindulási alapnak szerintem jó
-
modder
aktív tag
konkrétan milyen formátumban van az MD5 hash stringben?
AB:AB:AB:AB formátumban, ami kvázi standardnak számít? -
Peter Kiss
őstag
-
Peter Kiss
őstag
String-nek nincs véletlenül getBytes() metódusa?
-
modder
aktív tag
Én arra gondoltam, hogy a fájlok fent vannak a szervern zipekben (minden fájl külön zipben), emellett van egy text fájl ami az összes zipben lévő fájl hashét tartalmazza.
A program elindul, a júzer rányom a letöltésre, behasheli az összes fájlt a célmappában, és összehasonlítja a szerveren lévő hashlistával. És csak azt a zipet tölti le és csomagolja ki amelyikben lévő fájl nem egyezik a júzerével.Csak hát ezt még meg kéne írni, és gondoltam hátha már valakinek szüksége volt ilyenre, és van rá lib.
ezt a hashelést a szerveren egy egyszerű shell script is megoldja, azon kell gondolkodni, hogy mi van az almappákkal, azt hogyan kezeled le. meg azon, hogy ha jól értem ez egy egyszerű FTP szerver lenne? vagy mi szolgálná ki a klienst a szerver oldalon? ..szóval azon, hogy hogyan triggereled szerver oldalon, hogy ok, akkor most csináld meg a file-ok hashét. Bár ez akár lehet egy állandóan futó program is, ami változtatás esetén újra generálja a zip fájlt, amiben a többi fájl hashét tárolod. De amúgy egyszerű elgondolás, fapados, de biztos működne, én azonban ha egy mód van rá, mindenképpen legalább egy szervletet futtatnék szerver oldalon, mert jóval szofisztikáltabb megoldást és későbbi kiterjeszthetőséget biztosít.
-
modder
aktív tag
ismer valaki valami libet verziókövetésre java-ban? Valami olyan kéne hogy egy tárhelyen legyenek fájlok, titkosítva, és a javas kliens a felhasználónál letölti ezeket, de csak akkor ha az adott fájl változott, vagy nincs még letöltve, és persze ezt úgy hogy a tárhely csak tárhely, sima fájlszerver http-n.
vagy nem specifikáltad eléggé nekünk, vagy ez egyáltalán nem egy bonyolult feladat. Sőt, ezt nem is nevezném a klasszikus értelemben vett verziókövetésnek.
Ha csak ennyi kell, ezt egy szimpla szervlettel megoldhatod. Amikor a felhasználó kér egy fájlt, get-ben elküldi az általa ismert utolsó módosítási időt vagy a fájl hashét. A szervlet megnézi, hogy a szerveren lévő fájlnak a módosítási ideje későbbi-e, mint a requestben található, vagy nem egyezik-e a hash. Ha a fájl módosult, akkor visszaküldi a response-ban.
Pont ugyanígy működnek a cache mechanizmusok is http-ben. Erről a két megoldásról tudok. Kicsit utána kell nézi, lehet, hogy Jetty is tudja ezt alapból (lévén, hogy ő egy HTTP server) csak a HTTP headerekben van az info, mert egy decens szerver már csak tudja.
Persze ehhez egyenként kell lekérdezgetni a fájlokat.
Azt sem mondtad, hogy mennyi fájlról lenne szó, és hogy a kliens tudja-e alapból a fájl elérési útját. El kell-e tárolni a korábbi verziókat? -
Karma
félisten
ismer valaki valami libet verziókövetésre java-ban? Valami olyan kéne hogy egy tárhelyen legyenek fájlok, titkosítva, és a javas kliens a felhasználónál letölti ezeket, de csak akkor ha az adott fájl változott, vagy nincs még letöltve, és persze ezt úgy hogy a tárhely csak tárhely, sima fájlszerver http-n.
A dolog onnantól kezdve büdös, mint a Gangesz partja, hogy "sima HTTP fájlszerver". Olyan nem létezik, ha esetleg arra gondolsz, hogy a könyvtár URL-jét beírva mappalistát látsz, az is szerverfüggő, embereknek szánt HTML oldal...
Ha a fájlok nevei kötöttek és előre ismertek, el lehetne lavírozni a HTTP HEAD hívással és a Last-Modified header értékével. De ha a fájlok nevei változhatnak, bővülhetnek, ez nem elég önmagában.
Igénytelen béna megoldást lehet építeni kétféleképpen a szerver okosítása nélkül. Az egyik, hogy a szerver által kigenerált fájllistát visszaparsolod kézzel. A másik, hogy csinálsz egy szöveges/XML fájlt kézzel, amit egy fix helyre, amit lehívsz mindig. És kézzel karban tartod jobb eszköz hiányában...
Ha meg valami okosítást raksz a szerverre, mehet rá SVN, Git (szinkronizálás adott), vagy WebDAV és máris szabványos és kezelhető.
-
TBG
senior tag
-
TBG
senior tag
ismer valaki valami libet verziókövetésre java-ban? Valami olyan kéne hogy egy tárhelyen legyenek fájlok, titkosítva, és a javas kliens a felhasználónál letölti ezeket, de csak akkor ha az adott fájl változott, vagy nincs még letöltve, és persze ezt úgy hogy a tárhely csak tárhely, sima fájlszerver http-n.
http://svnkit.com/
-
fatal`
titán
Na ilyet még nem láttam, van egy java program, aminél egy fájlból olvas be szöveget (számokat), és azt értelmezi. Valamiért java.lang.NumberFormatException: empty String-el elszáll. Na ezért beraktam pár println-t hogy megnézzem tényleg üres-e. És csak ezt az exceptiont írja, a println-ek kimaradnak, mintha rögtön a program közepére ugrana.
Beraktam a reader létrehozása után közvetlenük egy println-t aminek ki kéne írnia egy szöveget. ÉS nem írja, viszont az utána lévő sor exceptionját igen. És most átírtam a reader fájlhivatkozását, egy nem létező fájlra, és akkor is ugyan azt az exceptiont írja.
Akkor nyílván nem ott van a hiba, hanem valahol máshol.

Tegyél be kódot.
-
Superhun
addikt
Na ilyet még nem láttam, van egy java program, aminél egy fájlból olvas be szöveget (számokat), és azt értelmezi. Valamiért java.lang.NumberFormatException: empty String-el elszáll. Na ezért beraktam pár println-t hogy megnézzem tényleg üres-e. És csak ezt az exceptiont írja, a println-ek kimaradnak, mintha rögtön a program közepére ugrana.
Beraktam a reader létrehozása után közvetlenük egy println-t aminek ki kéne írnia egy szöveget. ÉS nem írja, viszont az utána lévő sor exceptionját igen. És most átírtam a reader fájlhivatkozását, egy nem létező fájlra, és akkor is ugyan azt az exceptiont írja.
Pastebin-re másold fel a kódot és linkeld be ide.
Az empty string hiba azt jelenti egyébként, hogy üres szöveget akartál számmá konvertálni, ami persze nem működik.
-
TBG
senior tag
-
TBG
senior tag
nem fogok napokat tölteni azzal hogy megcsináljam az osztályokat az xml mintájára (aminek a többségéről nem is tudok mindent), mert néhány sorban a több ezer közül meg kell változtatni pár dolgot. Akkor inkább a favágómódszeres ment, visszaolvas replace, újra ment dolog lesz a nyerő. Egyre jobban értem azt akik ócsárolják a java-t tele van, lehetetlen dolgokkal, olyan triviális apróságokkal kell szenvedni vele hogy az hihetetlen. És rákeresve a neten pont ezzel a dologgal mint én jó sokan szenvednek jó rég óta. Persze nem került be a transformer osztályba egy erre való beállítás...
(aminek a többségéről nem is tudok mindent),
Aham, tehát a Java a szar...
Egyre jobban értem azt akik ócsárolják a java-t tele van, lehetetlen dolgokkal, olyan triviális apróságokkal kell szenvedni vele hogy az hihetetlen.
Nem kötelező használni....tudod, Kun Béla egyszer azt mondta, hogy ha a kupleráj nem megy, akkor nem a bútorokat kell kicserélni, hanem a kurvákat....azok ócsárolják, akik Hozzád hasonlóan nem hajlandóak tanulni, fejlődni...új dolgokat megismerni.
Aki valóban meg akar oldani egy problémát, az nem a kifogásokat keresi, hanem a megoldást. A SAX parser kiváló megoldás lehetett volna, de dolgozni kell vele..igen. Az élet kemény.
-
TBG
senior tag
nézegethetem, nem lehet vele mit tenni. A transformer egyben adja ki az egészet, 1 stringbe megy. És a java mint írtam megbolondul egy bizonyos stringhossz után (sorok elejét lehagyja, randomban eltologatja a tageket, stb).
a sax nagyon dzsunkának néz ki, kb olyan mintha binárisba kódolnék programot
És biztos hogy a végeredmény is ugyan ez lenne.a sax nem dzsunka. csak kicsit macerásabb. és a te problēmádra pont megfelel.
-
pakriksz
őstag
nézegethetem, nem lehet vele mit tenni. A transformer egyben adja ki az egészet, 1 stringbe megy. És a java mint írtam megbolondul egy bizonyos stringhossz után (sorok elejét lehagyja, randomban eltologatja a tageket, stb).
a sax nagyon dzsunkának néz ki, kb olyan mintha binárisba kódolnék programot
És biztos hogy a végeredmény is ugyan ez lenne.persze favágó módszerrel menne, hogy xml-be mentem, majd rögtön megnyitom readerrel, és soronként replace az összes > <-t ><-re. De nem ártana valami szebb megoldás.
-
TBG
senior tag
Akkor a fájlbaírást kellene kicsit átnézni
Javaslom egyébként a sax parser használatát a DOM helyett.... -
pakriksz
őstag
most egy olyat csináltam, hogy fájl helyett egy stringbe írja ki az egész xmlt, amire nyomok egy replaceallt. System out-on jól is néz ki, de ha fájlban írom randomban kihagy sorokat, lehagyja a sor elejét, és ilyesmik.
-
TBG
senior tag
-
TBG
senior tag
Egy xml-t szeretnék módosítani, és menteni, és ez mind működik.
A probléma az, hogy egy hulladék gány programnak készül ez az xml, ami a void tag-et (vagy hogy hívják) nem fogadja el. Tehát ha a tagek közötti érték semmi, az hogy <Valami/> az nem jó neki (márpedig a java így állítja elő), csak a <valami><valami/> jó
Erre azt találtam ki, hogy ahol üres az érték, beszúrok egy spacet így lesz <valami> <valami/> de ez sem jó neki mert a spacet értéknek veszi...
Transformer osztályt használok, és DOM-ból jön az xml.Mi erre a megoldás?
A fogadó oldalt kell átírni
space helyett egyébként egy üres string? ördögűzés, de ki tudja
-
pakriksz
őstag
baze hát kikészít az android fejlesztés.
Van az audiomanagernek egy ilyen metódusa hogy registerMediaButtonEventReceiver. Na most erre ráguglizok, és 5000 helyen mindig ugyan az jön ki, hogy ComponentName objektum a paramétere... Csakhogy "The method registerMediaButtonEventReceiver(ComponentName) is undefined for the type AudioManager"
ja hát persze ilyen nincs is csak api level 8-tól... áááá
-
modder
aktív tag
az appengine-el az a problémám, hogy egyrészt semmi sem szabványos rajta. Másrészt semmitmondó hibaüzeneteket írogat deploykor az ismeretlen komponenseire.
Az egyetlen dolog amit sikerült futtatni rajta, az a sample project, amiben egy rakás érthetetlen, sehol sem látott dolog van.
A servletem egyébként pöccre megy jettyvel, meg tomcattel is.
Ezekkel az a gond, hogy nincs most elérhető szerver, csak a saját gépem, ami nem mehet egész nap, másrészt a jetty állandóan nem utf-8 üzenetes problémákkal száll el ha az üzenetben amit a servlet kap van egy speciális karakter.
tomcat jó(-nak néz ki), azt leszámítva hogy ahogy látom nem lehet a servletnek tetszőleges elérési utat beállítani, akármit állítok a web.xml-ben, csak http://cím/Servletneve url-el lehet elérni, de a másik félnél meg be van betonozva (mert egy hulladék) hogy http://cím -re küldi az üzeneteket.Az appenginere csak annyit, hogy sajnos ez az informatika ilyen, hogy néha meg kell tanulni új dolgokat.
Az utf8-ra nem tudok hirtelen mit mondani, szerintem annak container szinten nem kéne problémát okoznia, vagy be lehet állítani. (az alábbi linken van egy példa karakter kódolás megváltoztatására)
Az utolsó bekezdésre viszont állíts be egy szervletet, mint index.html, tehát a defaultra. van külön ilyen beállítás, és onnan indíthatsz belső requestet más szervletekre is valamilyen input paraméter alapján. Lehet, hogy filterrel is meg tudod oldani: http://www.oracle.com/technetwork/java/filters-137243.html -
modder
aktív tag
nem éppen vagyok inkompetens, csak régen szenvedtem ilyen marhaságokkal (szerencsére nem volt szükség rá, mert a lightos minden egyben programokat szeretem, nem az ilyen bugos bloatwareket de most sajnos most nem én csinálom az egész kócerájt, alkalmazkodni kell a servlettel), a servletes kérdés is igazából úgy szólt volna jól hogy "nincs az alkalmazás szervereken kívül valami lightosabb megoldás servlet futtatásra?" és van, a jetty

De már lényegtelen a guglis téma nem fogom megtanulgatni az n+1. "szabványos, kompatibilis"(és mégsem az sem az) implementációt, inkább összerakok egy kis fogyasztású gépet szervernek azt arra meg azt rakok amit akarok).
Csak azt nem értem hogy miért olyan ritka a free javas alkalmazásszerver hosting, az undorító php-ból meg annyi van mint a szemét, pedig scriptnyelvként tuti hogy a php zabálja jobban a szervereket.Nem tudom mi volt a problémád google appengine-en a servlettel, elvileg azt defaultból tudnia kell, kvázi szabványos szervlet konténert deployolsz föl az appoddal, de van néhány kisebb megszorítás hogy ne lehessen kihasználni végtelen mennyiségű erőforrást, illetve biztonsági megfontolásokból.
A Java EE alkalmazásokra szerintem egyébként sem pont az egyszerű konfiguráció jellemző. vannak dolgok, amik működnek out of the box kevés konfigurációval, de a komplexebb megoldásoknál elég sok deklaratív beállítás van, amiről nem árt, ha az ember tud.
-- ellenben a PHP-val, ami elméletileg csak abból áll, hogy feltöltöd a webszerverre és megy. gyakorlatban meg ahány szolgáltató, annyiféle korlátozás lehetséges --Amúgy nekem már sikerüt (vannak leírások a neten) deployolni JSF-et (Mojarra) és CDI-t is (Weld) is appengine-re. Persze nem fél óra volt, de aztán működött rendesen...
Ha nem tetszik a google appengine, próbáld ki a Heroku-t, de nem biztos, hogy azzal kevesebb utána járás lesz.
Hogy miért nincsenek ingyenes Java hostingok? Hirtelen belegondolva azért, mert kevesebben ismerik olyan szinten, hogy képesek legyenek egy normális weboldalt összehozni velük, így nincs rá akkora igény. Mikor hallani, hogy valaki a sarki suszter weboldalát Java EE alapokon akarja összedobni PHP helyett.
Akik viszont Java-t használnak webes környezetben, azok inkább cégek, és ők szerintem kifejezetten kerülik az ingyenes alternatívákat, mert nem bíznak benne, hogy az tényleg menni fog minden helyzetben. -
modder
aktív tag
"Ezek a servletek hogy is működnek? mármint kell hozzá alkalmazásszerver?
Van egy egyszerű servletem és azt szeretném működtetni."A korábbi hozzászólásaiddal már bebizonyítottad hogy teljesen inkompetens vagy a témában, ennek ellenére olyan felháborodottan írsz a futtatási környezetekről, -- amit nem mellesleg sokan elégedetten használnak -- mintha meglenne az előképzettséged ahhoz, hogy jogosan lefikkantsd olyan emberek munkáját, akik értettek is ahhoz, amit csinálnak.
Amúgy ha valami problémád van pl. az appengine-nel, mindenki sokkal többre menne, ha részletes információkat adnál a hibáról vagy pl. egy stacktrace-t. De lehet, hogy a megoldásban már az is sokat segítene, ha elolvasnád az appengine wiki-t, mert tényleg nem olyan egyszerű, de az biztos, hogy használható.
-
modder
aktív tag
A Java EE specifikáció elég régóta application server specifikáció. ha egy-egy dolog kell, nem kell hozzá letöltened egy egész application szervert, elég csak megtalálnod azt a projektet, ami tartalmazza a megfelelő package-ket. és ebből több implementáció is van.
Ha kell neked egy darab szervlet container -- isten tudja miért --, akkor pl. letöltöd a Jetty-t, és elindítod egy sima kliens alkalmazásban.
-
Frigo
őstag
-
Lacces
őstag
-
Lacces
őstag
Hát érdekes, de azt tudom, hogy a java két fajta "clipboardot - vágóasztalt" használhat. Az egyik a rendszer, system (azaz az oprendszerré) a másik pedig lehet egy beépített Java-s vágoasztal. De nem hinném, hogy ez lenne itt a gond.
Más böngészőből, más jelszóval is előfordul? Ezeket is meg kell vizsgálni. -
Davs
tag
Egy nagyon noob javaslat, hogy kiiratni asciiben, hogy tudjuk milyen karakter az? (sztem nem tuti, hogy kerdojel, lehet vmi specialis karakter)
-
MrSealRD
veterán
Csak tipp de én valamiért a karakterkódolás vonalán indulnék el...
-
pakriksz
őstag
Ilyenről már hallott valaki?
Van egy programom ami jelszót kér, AWT-s textfieldbe. Bizonyos jelszavaknál előfordul hogy ha a használó paste-el(ctrl-v) adja be a jelszót(egy emailből kimásolva), akkor nem fogadja el (a jelszó ellenőrzés egy trim után, egy equalsignorecase-el történik. Viszont ha ugyan azt beírja kézzel, akkor már jó...
Most tesztelgettem a programot system out-al kiírattam a bevitt jelszót. A fura dolog hogy a pastelt jelszónak a közepébe bekerül egy kérdőjel.
[link] felül a textfield, alul pedig a system outja a bevitt értéknek.
Ez micsoda? -
WonderCSabo
félisten
-
WonderCSabo
félisten
-
WonderCSabo
félisten
nem. (főleg mert createtempfile, így kizárt hogy 2x ugyan az legyen mert a fájlnévhez hozzárak egy vagy 10 jegyű random számot).
a megoldás megint ugyan az mint a legtöbb fájlos szenvedésnél: átírni mindent amit lehet nio-ra. Bár mivel van egy olyan lib ami csak io.File-ot ismer így is van egy konvertálgatás, de nio createtempfile-al létrehozva és Files.delete() a végén már törli rendesen.
Olyan lehetséges hogy egy fájlt memóriában hozunk létre de úgy hogy az tökéletesen olyan legyen mint egy igazi fájl? (tehát sima io File-t ismerő libekkel lehessen hivatkozni rá elérési úttal)
Persze, hogy lehetséges. Létrehozol egy Filet, csak nem hívod meg a createNewFile() fvét.
-
WonderCSabo
félisten
Van egy temp fájl amit a createTempFile-al hozok létre.
Amikor kész van a feladattal ezt törölni kéne, csak hogy nem teszi sem delete-el, sem deleteonexit-el, csak és kizárólag akkor ha eclipse-ből futtatom. Kiexportálva minden esetben otthagyja a fájlt. Miért?Kipróbáltam nio-s delete-el, aszerint pedig egy másik process használja. Hát LOL ilyen nincs, nincs másik processz, és a program is 1 szálú.
Nem lehet, hogy még az előző folyamatod ragadt be?
-
sztanozs
veterán
-
sztanozs
veterán
Hát ez vicc. Írtam egy programot ami egy táblázat elemeit dataoutpstreamba menti el.
Teljesen jó is volt, amíg pár sorral teszteltem. Aztán generáltam neki egy 5000 soros tesztlistát.
Kimentés sima. Betöltésnél viszont 223. sornál megállt állandóan, hibaüzenet nélkül.
A sorok betöltése egy while (inputstream.available()>0) ciklusban van. Aztán kiirattam a availablet-t, és gyakorlatilag random számok jönnek ki a függvényből. Az oda van írva a leírásba hogy csak becsült értéket ad a hátralévő bájtok számáról, na de ez nem becsült, ez random.Tényleg csak végtelen ciklussal, EOFexception lenyeléssel lehet beolvasni egy fájlból sok adatot?
Mert más függvényt nem látok amivel a fájl végét meg lehetne határozni, de ez nagyon gány módszer.Ha read-et használsz akkor miért kell available-t figyelni?
Ha kevesebbet adott vissza amennyit kértél, vagy -1-et akkor a végére ért a steamnek.
Ha nem read, akkor mit használsz? -
Lacces
őstag
hello
Egy kicsomagolásban lévő bináris fájlban szeretnék kicserélni meghatározott stringeket másra(ezek stringként láthatóak csak a többi adattípus lesz "olvashatatlan"), úgy hogy az unzip outputstreamját használja, így lemezre már csak modosítva kerüljön. Szóval on the fly kéne cserélgetnie.
Erre valami ötlet?On the fly, hát... Java-nal nem tudok. MS téren a .NET-nél talán az IFilter interface.
talán nézz rá
Szerintem, inkább olvass be a sorokat és ha van valami, akkor cseréld, és mentsd el. Ehhez nagyon utána kellene járni. Unicode karakter-nél lehetnek gondok. -
WonderCSabo
félisten
nemjó, mert streamként kell.
De mégsem az volt a gond, hanem az hogy a retkes cipheredinputstream teljesen kiszámíthatatlanul működik. Ha fileinputstreamből megy bele az adat, és rossz a kulcs akkor még nagyobb halandzsa lesz a végeredmény. Ha viszont urlconnection inputstreamjéből jön akkor nullpointerexeption lesz.
Mi nem jó? uc.getInputStream() -el kapod meg a stream-et, erről aztán olvashatsz amivel akarsz.
-
WonderCSabo
félisten
Próbáld meg így:
try {
URL u = new URL("http://wikipedia.org");
URLConnection uc = u.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(new BufferedInputStream(uc.getInputStream())));
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
} -
skoda12
aktív tag
ismer valaki egy normális modern hibernate tutorialt, ahol nem használnak fos soha sem működő mindenféle hibát dobáló eclipse kiegészítéseket generálgatásra, és nem ősrégi?
Tehát annotációkat használ, magában a rekord class a tábla leírása is, nincs retkes 49 db mapping xml mellé amivel gyak a lényege veszik el a dolognak. Régebben használtam hasonlót de teljesen elfelejtettem az egész beüzemelést.Hibernate oldalan az osszes guide jo. Nem is ertem, hogy az adott lib hivatalos oldalan kivul miert kellene mashonnan osszevadaszni tutorialokat. Most nem tudom, mi a problemad, osszesen 1 xml fajt kell irni es semmi olyan nem kerul bele, ami miatt a lenyeg elveszne. Sima pebkac.
-
Chipi333
csendes tag
hát működni működik, csak az eredmény nem jó

én is rájöttem egy másik megoldásra, bytebufferrel, ki is jött az eredmény ami a te kódoddal, de egyik sem jó
pl 000000C0E0B22440 ez 10.3494 kellene hogy legyen, de sehogy sem tudom elérni hogy ez jöjjön ki, bár ebbe a hexába az a legfurább, hogy az elején és a végén is 0 van.
//4024B2E0C0000000 ez lesz a végére
String toConvert = "000000C0E0B22440";
BigInteger temp = new BigInteger(toConvert, 16);
long raw = temp.longValue();
long result = 0x0L;
result = (raw >> 32) | (raw << 32);
result = ((result << 16) & 0xffff0000ffff0000L) | ((result >> 16) & 0x0000ffff0000ffffL);
result = ((result << 8) & 0xff00ff00ff00ff00L) | ((result >> 8) & 0x00ff00ff00ff00ffL);
double converted = Double.longBitsToDouble(result);
System.out.println(converted);No akkor így műxik

-
Chipi333
csendes tag
Nem nyert
Exception in thread "main" java.lang.NumberFormatException: For input string: "0xA2E16D3E949F633F"
at sun.misc.FloatingDecimal.parseHexString(Unknown Source)
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)(minden hexára ezt írja)
Nah, áthidaltam a problémát

String toConvert = "A2E16D3E949F633F";
BigInteger temp = new BigInteger(toConvert, 16);
double converted = Double.longBitsToDouble(temp.longValue());Longot sem lehet vmiért közvetlenül csinálni belőle... Valami az előjelesség miatt lehet, de a BigInteger megeszi, és a longValue() a "A2E16D3E949F633F" bitmintát adja vissza long-ként, és abból már lehet double-t kalapálni

-
modder
aktív tag
hát egy 500 soros többszörösen egymásbaágyazott ciklusos függvényes, több bean osztályt használó listákból 50 megás xml-ben több ezer bejegyzést cserélgető programommal próbáltam, ami úgy 5 másodpercig dolgozik a fájlon, és semmit nem írt ki.
Egy javas áramkör szimulátort is próbáltam viszonylag bonyolult áramkörökkel, ott sem írt semmit.Bocsesz, megnéztem a szintaxisát újra, és:
-XX:+PrintCompilationboolean típusú argumentumoknál + a bekapcsolva, - a kikapcsolva.
-
modder
aktív tag
-
drogery
tag
Sziasztok,
egy beadandót kellene készítenem a következő paraméterekkel:A feladatokat Java nyelven kell megoldani. A megoldásoknál feltételezheti, hogy a file-ban levő adatok elférnek a memóriában is.
A feladatokban a bemenő adatok (pl file neve) paraméterben adhatók meg. A program kezelje azt az esetet is ha nem ad meg a felhasználó megfelelő számú paramétert.
File tartalma:
Kölcsönző neve, kölcsönzés vagy visszahozatal ideje, könyvazonosítója, kölcsönzés vagy
visszahozatal (a pontos szerkezet (pl. elválasztójelek, kölcsönzés jelölése, visszahozatal
jelölése) tetszőleges) (pl. Kis Béla; 2011.12.12. 10:20; 9789639637696; 1)Készítsen egy programot, amely paraméterként kap egy file-t, amelyben
könyvtári kölcsönzési adatok vannak a következő szerkezetben:
Név, időpont, könyvazonosító, kikölcsönzés/visszahozatal
Írja ki, hogy ki hány könyvet kölcsönzött ki eddig.A beadás határideje 4.30.
Nyilván megfelelő kompenzálás fejében keresnék valakit, aki segít az "elkészítésében".
Többit privátban.
üdvszerk.
nem erre akartam válaszolni
-
Ricqy
tag
én http-vel csináltam egy új verzió ellenőrzést, a programom elindít egy threadet ami meglátogat egy dropbox publicra feltöltött txt fájlt és kiolvassa belőle a jelenlegi verziót meg egy linket az esetleges frissítésre. FTP nem nagyon van ilyen "on the fly" olvasásra tervezve, szerintem azt le kell tölteni és utána olvasni. Stringbe szerintem befér akármennyi adat, legalább is az xml generátorok gond nélkül kiírják a több megás xml-eket stringbe.
Nekem csak 1x kéne kiolvasni a fájlt, majd a tartalmát beírni egy a gépen lévő fájlba.
A probléma ott van az 1 Stringbe való bemásolással, hogy sok az idézőjel, pontosvessző, meg egyéb speciális karakterek a beolvasandó fájlban és némelyikre hibát dob a fordító csak nem tudja kiírni hol. -
Scroll Lock
tag
-
Lortech
addikt
Ez egy intel féle 64 bites double.
-
Chipi333
csendes tag
Hát ez biza 64bites(azaz tuti nem float32).
Ez a 8.83603 64bites IEEE 754 lebegőpontos számként (java double): 0x4021ac0c1fc8f323
A 000000400CAC2140 kb ugyanez big endianban. Ami különbség van a kettő között az nem túl szignifikáns biteken van. Szóval valószinűszeg tényleg valami big endian lebegőpontos reprezentációja lehet a 8.83603nak (kb), csak nem 32 hanem 64 biten. De hogy pontosan mi, azt nem hiszem hogy meg lehet mondani. -
Chipi333
csendes tag
Sajnos ilyet nem lehet, csak workaroundok vannak rá. (becsomagolod másik appba, vagy egy scripttel inditod, és ezek a megfelelő command line paraméterekkel elinditják)
-
Chipi333
csendes tag
Mitől működik randomban a file renameTo metódusa? Van egy programom ami mentés előtt átnevezi az eredeti fájlt, biztonsági mentés céljából.
Ez úgy működik, hogy konvertál egy fájl külső programmal, a konvertáltat megnyitja, majd a végén menti, visszakonvertálás előtt pedig még az eredeti fájlt átnevezi és bak kiterjesztést ad. Ez működik is, csak randomban. Semmi hiba, csak a renameTo sikertelen átnevezést ad vissza bizonyos fájloknál mindig, a többi fájlnál ugyanabban a mappában meg randomban. Vagy átnevezi, vagy sikertelen.Nem teljesen értem a folyamatot. Azt kicsit átláthatóbban leirhatnád, hogy mi történik.
De ha nem tudod átnevezni a fájlt annak egy oka lehet: valamilyen processznél meg le van lockolva.
Ez lehet a külső progi ami konvertált (lehet még nem engedte el a file-t), ill. lehet a windows is (nem feltétlenül engedi fel azonnal a lockot miután egy progi bezárta a fált).http://stackoverflow.com/questions/1325388/how-to-find-out-why-renameto-failed
http://www.bigsoft.co.uk/blog/index.php/2010/02/02/file-renameto-always-fails-on-windowsGoogle első két találat a problémára és szerintem leirják, hogy mik a lehetséges bajok.
Ha csak annyi, hogy a windows még tartja rajta a lockot, akkor erre megoldás, hogy egy ciklusban addig próbálkozol az átnevezéssel amég nem sikerül(érdemes közben minden próbálkozás után pihentetni kicsit a szálat, hogy ezzel ne edd meg a procit). Ha valahol elfelejted bezárni a fájlt, akkor meg rá kell jönni, hogy ez hol van és javitani.Ui.: Ha nem windowson vagy akkor a lock felengedés késlekedése elvileg nem játszik, és tuti, hogy valahol nyitvahagyod a fájlokat.
-
Lortech
addikt
Pl. schemagen a jaxb, jwsdp részeként.
szerk: De az említett XMLBeans is, de a JiBX is, feltételezem - ugyan nem használtam még -, működik, csak rá kéne szánni az időt, megérteni, hogy hogy működnek, mire valóak, és elolvasni a leírásaikat, használati útmutatójukat.
-
Lortech
addikt
Annyit használ, amennyit a default maximum heap size (vagy permgen) megenged neki.
Az -xmx paraméterrel felülbírálható, pl. -Xmx1024m.#2451 bolcsodal:
meg kéne vizsgálni, milyen java futtatókörnyezet és verzió a követelmény a program futtatáshoz, és ehhez képest milyen java van telepítve a gépen, illetve a másik gépeken. Ha oracle/sun jvm van a másik gépeken, akkor parancssorba beírva java -version paranccsal le tudod kérdezni a verziót. Ezt kéne feltelepíteni a gépre.
Pl. Oracle 1.6 jre itt
Ha ezután sem működik, meg kéne vizsgálni, hogy a program hogyan indítja saját magát, pl. PATH-ból vagy más környezeti változón keresztül eri el a javat. -
pakriksz
őstag
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... -
ArchElf
addikt
é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.)
Tread Poolingról olvasgass...
AE
-
Lortech
addikt
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.Mivel a konstruktorban írtál egy végtelen ciklust, már az első new Tred() sem fog visszatérni, így már az első thread run metódusáig se jut el soha.
-
ArchElf
addikt
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.Egy process fut, amiben fut
négyöt thread...
Mondjuk 100% processzort kellene csináljanak, hacsak nincs valami ördöngősség nálad...
Próbáld meg így: [link]Lortech: ehh

AE
-
Lortech
addikt
Annyi (nyilván az erőforrások és a futtatókörnyezet adta keretet között) külső programot indíthatsz el akár ugyanabból a threadből is, amennyit csak akarsz. A külső programtól függ, hogy megakadályozza-e, hogy futtathass több példányt belőle. Ha nincs ilyen limitáció, akkor valószínűleg valamit rosszul csinálsz.
-
Lortech
addikt
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.
Van default konstrukrora is a Replaceable osztályodnak ?
-
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?
megvan, van egy waitFor() metódusa, azzal lehet váratni.
-
Lortech
addikt
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.Ha duplaklikkel futtatod, akkor az os jar fájl társítása határozza meg, mivel fut, ha a java -jart ... parancsot kiadva futtatod, akkor pedig a %PATH%-ban található java-val fut. A kettő nem szükségképpen uaz.
Collections.synchronizedList()-nek mennie kell generikusokra, ahogy írták előttem. pl.
List<T> xyz = Collections.synchronizedList(new NoDuplicateList<T>()); -
skoda12
aktív tag
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).Pengen kell mukodnie annak a Collections.synchronizedList()-tel is. Ennek ellenere megsem ajanlanam ezt a megoldast, a szarmaztatas mindig csak vegso menedek legyen. Neked az kell, hogy a szalak egy Set-et allitsanak ossze, igy nem lesz duplikacio. Ezutan pedig keszithetsz egy listat a Set elemeibol.
-
Sianis
addikt
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.
Igen, csak ugye itt a kiírás nem fájlban gondolkodik, hanem adatszerkezetként. Van egy DOM fád pl és azt akarod kiírni, nem tartalmazza azt, hogy anno hogyan nézett ki.
Sianis
-
Sianis
addikt
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();
}Itt egy kerülő megoldást adnak, miszerint egy alkalmazással a régi és új xml-t is átküldöd egy konvertáláson és akkor könnyen lehet diffelni.
Sianis
-
ArchElf
addikt
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.
//iBlueprintLibrary-cAbsoluteBlueprintID[iBlueprintLibrary-cBlueprintSetID/Provider="+valamiProvider+" and iBlueprintLibrary-cBlueprintSetID/Product="+valamiProduct+" and BlueprintID = "+ valamiID"]
AE
-
ArchElf
addikt
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?
iBlueprintLibrary-cAbsoluteBlueprintID <- erre kell keresni, mert ez egyértelműen megadja az összes olyan node-ot ami neked kell.
A gyökérre:
//iBlueprintLibrary-cAbsoluteBlueprintIDAz elemekre, ha nem lépkedni akarnál
iBlueprintLibrary-cBlueprintSetID/Provider
iBlueprintLibrary-cBlueprintSetID/Product
BlueprintIDAE
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- AMD FX
- Arc Raiders
- BMW topik
- Kuponkunyeráló
- Gumi és felni topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen billentyűzetet vegyek?
- Mibe tegyem a megtakarításaimat?
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- 27% - NiPoGi MINI PC AMD Ryzen 5800U / 16GB DDR4 / 512GB NVMe
- Huawei P30 Lite 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! HP Pavilion Power FHD GAMER notebook - i5 7300HQ 32GB DDR4 512GB SSD 1TB HDD GTX1050 4GB
- új NAGYakku!!! 6-10óra üzemidő, 5G! Dell Latitude 5330 i3-1215U - 16GB 256GB 13.3" FHD 1 év gar
- GYÖNYÖRŰ iPhone 13 Pro 128GB Alpine Green -2 ÉV GARANCIA - Kártyafüggetlen, MS5509
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)







