Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java ja oman Stack-luokan teko?

Sivun loppuun

HannuTapio [24.06.2021 21:49:35]

#

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..

:) :) :)

--

Metabolix [24.06.2021 22:25:02]

#

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?

HannuTapio [24.06.2021 22:32:04]

#

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).

--

Metabolix [24.06.2021 22:51:49]

#

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öä.

HannuTapio [24.06.2021 22:55:58]

#

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 :) ..

:) :) :)

--

groovyb [01.07.2021 01:22:55]

#

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ä?

HannuTapio [01.07.2021 01:42:40]

#

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ä.

--

muuskanuikku [01.07.2021 05:49:26]

#

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.

noutti [01.07.2021 12:21:12]

#

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

groovyb [01.07.2021 19:46:24]

#

noutti, kyllä varmaan joku silverlight ja ActiveX viritys tullaan vielä näkemään.

peran [02.07.2021 10:51:26]

#

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.

groovyb [03.07.2021 16:20:38]

#

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


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta