Java programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


Taoharcos
(aktív tag)
Blog

Sziasztok.
Spring Boot-ban lehet futás közben dinamikusan állítani a port-ot?
Vagy induláskor ha foglalt eggyel nagyobb port számot választani amin induljon?


hoopy
(újonc)

Futásidőben nem tudsz. Viszont induláskor tudsz neki beadni portszámot: itt
Illetve a propertiesben a server.port=0 egy random portot választ.

Kerülőmegoldásokkal biztos megoldható az is, hogy induláskor a TCP portot először ellenőrzöd és ha foglalt növeled és azt adod be neki a main függvényben. (TestSocketUtils-nak talán van egy ilyen from-to port scan metódusa)

Bár prod környezetben érdekes megközelítés nem statikus vagy teljesen random portot használni.

[ Szerkesztve ]


btraven
(őstag)

Android Studio erre miért nem jelez hibát?
class Nation
private final List<League> leagues = new ArrayList<>();
class League
private List<Integer> teamIds = new ArrayList<>();

Team promotedTeam = statActor.getAscendingTeam();
nation.getLeagues().get(downLeague).getTeamIds().remove(promotedTeam);


btraven
(őstag)

Ha rengeteg objektumot írok ki serializálva a tárolóra akkor jobb byte field-eket használni az osztályban használni mint int-et?
Elvileg negyede lesz a fájl mérete?


Drizzt
(nagyúr)
Blog

Ha kifejezetten méretre lősz és nem muszáj JDK only megoldást adni, akkor lehet jobban jársz, ha valamilyen cél library-t használsz. Némi összehasonlítás: [link] Főleg a 3.4 performance az érdekes.
Btw: Nagyban függ attól, hogy mi egyéb van még az osztályokban, ha csak egész számok, akkor hány darab, etc. De ha nagyon optimalizálni akarsz méretre, akkor lehet nem is magát a classt kéne szerializálni, mert az nyilván hoz magával mindenféle metadatát, ami tuti sokat fogyaszt.


btraven
(őstag)

Valaki kitalálja miért?
[link] libgdx Color

int x = 1 + 255;
Color color = new Color(x);
print(color); = 0x00000100;

Hát én 0x000001FF -re számítottam.

new Color(0f, 0f, 1f/255f, 1f); - ez jó


Drizzt
(nagyúr)
Blog

Miért számítottál másra?
Decimális 256 az hexadecimális 0x100. Mitől kellett volna 0x1FF-nek lennie?
Ha 0x1FF-et akarsz, miért nem hexadecimálisan adod meg az x int értékét?


btraven
(őstag)

Köszönöm, ezt jól elnéztem. :R
int értékem van, és az alpha-t szerettem volna FF-re állítani mindegyikhez.
Akkor marad az r,g,b,a konstruktor.


dudikpal
(aktív tag)

Ezzel kérem le a html contentet:
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
con.setReadTimeout(5000);
con.setConnectTimeout(5000);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    content.append(inputLine + "\n");
}
in.close();
con.disconnect();
Eddig működött is (más oldalaknál továbbra is jó), de most 403-at dob pl erre:
https://www.cars-data.com/en/lincoln-continental-specs/59792/tech
Viszont postmanből sima get-tel jön a content, még http request-ből is (.http), de így kódból meg nem. Gondoltam rá lett dobva 1 nem vagyok robot captcha vagy vmi, de akkor request fileból meg postmanből sem kéne jönnie, nem?


Arpee78
(senior tag)
Blog

Üdv, szerintetek az alábbi feladatot meg lehet oldani jobban, elegánsabban is?

A metódus kap egy egész számokból álló listát, meg kell számolni benn a növekvő sorozatokat. Pl (1, 2, 3, 1, 2, 3, 1) ebben van kettő.

Az én megoldásom:
public int numberOfIncSeries(List<Integer> numbers) {

int count = 0;
boolean inc = false;

for (int i = 1; i < numbers.size(); i++) {
if (numbers.get(i - 1) <= numbers.get(i)) {
inc = true;
} else {
if (inc) {
inc = false;
count++;
}
}
}
count = inc ? count + 1 : count;
return count;
}


Drizzt
(nagyúr)
Blog

Sokkal szebb szerintem nincsen sajnos. Én picit gyakoroltam TDD-t rajta, nagyjából ez jött ki belőle:
[link]
ListSequenceFinder.findSeq a metódus, ListSequenceFinderTest tartalmazza a 18 Test case-et. Sajnos a formázást valamiért elcseszte csúnyán.


Ablakos
(őstag)

Van egy osztály (App) ami implementál két interfészt. Mindkét interfésznek van egy ugyanolyan nevű default metódusa.(default void doStuff(){})
Az osztályban hogyan tudom hívni a kívánt default metódust?

(new App().doStuff(); természetesen fordítási hibát ad)

[ Szerkesztve ]


Sirpi
(senior tag)
Blog

Ha jól emlékszem:
PreferredInterface.super.doStuff()

Kötelező definiálni is az osztályban a doStuff metódust ilyenkor, es akkor menni fog, amit irtál.

[ Szerkesztve ]


Ablakos
(őstag)

Igen, tényleg az eclipse már editorban figyelmeztet, hogy override nélkül nem lesz jó.
Így már megy. super :B
Köszi


Ablakos
(őstag)

Egy tömb referencia változó kiíratása konzolra hasonló [I@85ede7b eredményt ad. Valamire (mire) használható ez a hieroglifa?

[ Szerkesztve ]


Arpee78
(senior tag)
Blog

Nem vagyok még teljesen a téma szakértője, valaki biztos szebb választ is tud majd adni, de

Azt hiszem amit kiír az maga a memóriacím ahol a tömböd található, lévén a referencia típusú változók egy referenciát(hivatkozást) tárolnak el.

Az Arrays.toString(tombodValtozoNeve)) amivel megkapod emészthetőbben a tömb tartalmát, vagyis az Arrays osztály toString metódusával.

Ha nem így lenne javítsatok ki.

üzenetek