Stack,
Hei, minulla on Java palvelinohjelma valmistuksessa, ja olen päättänyt rakentaa stack luokan, jota sitten käytän palvelimen pakettien pinoamiseen ja kaikkeen käsittelyyn ja tutkimiseen.
Kuinka tämä stack luokka olisi hyvä rakentaa java kielellä, java itsessään toki sisältää jo stack luokan, mutta, se on kovin suppea, siinä on vain push, pop, search, empty ja siinäkö ne jo olikin.
Minä aion rakentaa stack luokan joka sisältää seuraavat -
Push, pop, search, get(index), set(index,object_or_value), compare(index1, index2), compare( index, value), swap_top_to_bottom, swap_bottom_to_top, remove (index), remove(object or value), ja mahdollisesti jotain muutakin.
Millä java ominaisuudella olisi kätevä rakentaa tuo luokka, olisi mukava jos se olisi thread safe, koska käytössäni on 6 core palvelin, jossa sitten ohjelmani toimii.
Minulla on vastaava jo rakennettu javascriptin kanssa, mutta, en tunne java kieltä tarpeeksi, jotta osaisin tietää, kuinka rakentaa sama mitä javascriptissä, niin, tähän javaan.
Minä jonkin thread safe object arrayn, tarvitsen varmaankin, mutta, en tunne tätä java puolta kovinkaan ? Myös objectien vertaaminen toisiinsa on uutta minulle, kun objectien sisältö eroaa paljon toisistaansa, voiko silloin edes verrata, minä vain ajattelin jos on tuo array of objects ja sinne on pushattu eri luokkaa ja valueta ?
Minä koen että tarvitsen thread safe object arrayn, kuinka tämän kaltaisen voi rakentaa javassa ? ja mikä on tehokkain tavoista, rakentaa object array jota paljon tutkitaan ja verrataan ?
Tuon thread safe voi varmaankin rakentaa itse synchnorized avulla, lock object, vai ?
Eli, jotenkin sitten object array tai object pino, ja tämän täysi tutkiminen ja vertaaminen ja muokkaaminen, vielä puuttuu, jos tuo synchnorized(lock){} riittää thread safetyyn ?
Kiitos..
:) :) :)
--
Hannu hyvä.
Kuvaamasi toiminnot eivät ole pinon ominaisuuksia, eli kyseessä ei ole stack. Jos oikeasti haluat tehdä kaikki nuo ominaisuudet, sinulle sopii esimerkiksi List (kuten ArrayList tai LinkedList, josta tulee thread safe Collections.synchronizedList-funktiolla) tai mahdollisesti Deque (kuten ConcurrentLinkedDeque).
Pino on yleensä väärä rakenne saapuvien viestien (pakettien) käsittelyyn. Yleensä jono (Queue) on parempi, jotta paketit käsitellään oikeassa järjestyksessä. Keko eli prioriteettijono (PriorityQueue) on oikea valinta, jos paketit pitää saada järjestykseen vaikka lähetysajan mukaan.
Missä tilanteessa sinun pitäisi etsiä tai vertailla saapuneita paketteja indeksin tai objektin perusteella? Missä tilanteessa pitäisi vaihtaa ensimmäinen ja viimeinen? Nämä eivät kuulosta oikeasti tarpeellisilta ominaisuuksilta. Luultavasti teet jotain väärin koko palvelimessa.
Mitä eroa edes olisi metodeilla swap_top_to_bottom ja swap_bottom_to_top?
HannuTapio kirjoitti:
Myös objectien vertaaminen toisiinsa on uutta minulle, kun objectien sisältö eroaa paljon toisistaansa, voiko silloin edes verrata
Jos et tiedä edes, voiko niitä verrata, niin miksi niitä pitäisi verrata? Mikä olisi vertaamisen tulos? Mihin vertaamista tarvitaan?
Stackkia,
Minulla on tarkoitus käyttää myös java asiakasohjelmassa, jossa pelini ovat, niin, tätä stack luokkaa.
Tämä koko aihe on minulle ihan uusi kattavana, kevyttä testiä vain ollut aiemmin, en ihan osaa ajatella kunnolla tätä ohjelmoinnin ominaisuutta stack, kuinka sitä kuuluisi käyttää.
Tarvitsen stack luokan javascriptiin asiakasohjelmaani, ja java openjdk kanssa asiakasohjelma pelit, ja vielä palvelinohjelma.
Minä varmaankin sitten laitan arraylist object ja siihen synchronized ?
En ihan tiedä vielä mitä kaikkea ominaisuutta tarvitsen palvelinohjelman kanssa.
Tämä on vaikea vaihe minulle.
:) :) :)
Lisäys.
Minulla tuo swap_bottom_to_top ja toisinpäin, niin, move_bottom_top, ja move_top_bottom ja sitten swap_(index1,index2).
--
HannuTapio kirjoitti:
En ihan tiedä vielä mitä kaikkea ominaisuutta tarvitsen palvelinohjelman kanssa.
Silloin olisi viisainta käyttää suoraan valmista luokkaa (kuten ConcurrentLinkedDeque, jossa on myös synkronointi valmiina), ja jos sitten oikeasti tarvitsee lisää ominaisuuksia, voi vaihtaa tilalle oman luokan. On ihan pöljää ajanhukkaa tehdä monimutkaista luokkaa, jos sille ei ole vielä edes käyttöä.
Käyttöä,
Minun stack luokan suurin käyttötarve on näissä sotalautapeleissäni.
Minä koodaan pelini valmiilla funktioilla, aion tehdä xstr = string ja xstack = pino luokat, ja sitten käyttää niitä peleissäni.
Kun sitten käännän javascripti peliä javaan, niin, minun ei tarvi koodata koko koodin alueella, kun luokkien xstr ja xstack ja vastaavien uusi koodaus vain riittää, minä pyrin että en joudu juurikaan koodaamaan pelejä uusiksi, kun siirrän ne javaan, vaan minulla on sama asiakasohjelma molemmissa kielissä, vain asiakasohjelman joutuu koodaamaan uusiksi ja javascript -> java koodi rakenteen, mutta, pelit kulkisivat asiakasohjelman luokilla. :).
Kun AsiakasOhjelmat on molemmissa kielissä valmiina, niin, sitten pyrin että ihan copy & pastena, menisi aina uusien pelien kääntö javaan, lisänä vain tuo javascript -> java rakenne, function ja for ja let ja var :) ..
:) :) :)
--
tekisit nyt vaikka kerrankin loppuun asti jotain ennenkuin taas suunnittelet vaihtoa toiseen teknologiaan. Ja miksi kysyt edes täällä mitään, jos olet ennen kysymistä jo päättänyt mitä aiot tehdä?
Vaihtoa,
Hei, minulla ei ole tarkoitus "vaihtaa", vaan rakentaa myös javan kanssa samat pelit samanaikaisesti.
Minä kysyn kun en ole varma koodista, minulla harvoin on tilanne että en osaa mitään, minä yleensä osaan, mutta, en ole varma mitenkä.
--
Väärin tekeminen on sama kuin että ei osaa. Etkä sinä koskaan ole kenenkään vastauksia kuunnellut, vaan teet joka tapauksessa niin kuin olit alkujaankin päättänyt tekeväsi.
Muut lisäävät Javascriptin määrää, mutta meidän Hannu ui vastavirtaan ja vähentää! Vielä kun saisi jonkun milleniumin alun upotetun java appletin ja flash mainoksia niin aijaij
noutti, kyllä varmaan joku silverlight ja ActiveX viritys tullaan vielä näkemään.
groovyb kirjoitti:
noutti, kyllä varmaan joku silverlight ja ActiveX viritys tullaan vielä näkemään.
Todennäköisesti ei, koska Hannu käyttäneen Linuxia, ja käsittääkseni ne ovat enemmän tai vähemmän Windows-teknologiaa.
peran kirjoitti:
Todennäköisesti ei, koska Hannu käyttäneen Linuxia, ja käsittääkseni ne ovat enemmän tai vähemmän Windows-teknologiaa.
Never say never
Aihe on jo aika vanha, joten et voi enää vastata siihen.