๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Java

(9)
[Java] modelmapper jdk 17 issue "modelmapper Unable to make field private final java.time.LocalDate java.time.LocalDateTime.date accessible: module java.base does not "opens java.time" to unnamed module" ํ•ด๊ฒฐ java spring ํ™˜๊ฒฝ์—์„œ modelmapper ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒ "modelmapper Unable to make field private final java.time.LocalDate java.time.LocalDateTime.date accessible: module java.base does not "opens java.time" to unnamed module" Java 9๋ถ€ํ„ฐ๋Š” ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด ๋„์ž…๋˜์—ˆ์œผ๋ฉฐ, ๋ชจ๋“ˆ ๊ฐ„์˜ ์ ‘๊ทผ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ œ์–ดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” Java 9 ์ด์ƒ์—์„œ ModelMapper์™€ java.time ํŒจํ‚ค์ง€์˜ ์‚ฌ์šฉ ์‚ฌ์ด์˜ ์ ‘๊ทผ ์ œํ•œ์œผ๋กœ ๋ฐœ์ƒํ•œ ์ด์Šˆ ํ˜„์žฌ ๋‚ด ํ™˜๊ฒฝ์€ jdk 17์ด์—ˆ๊ณ  entity์˜ private์œผ๋กœ ์„ค์ •๋œ LocalDateTi..
[Java] ์ž๋ฐ”์—์„œ ์ธ์ž์˜ ์‹ค์ œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š” ์ด์œ  Java๋Š” ์ธ์ž๋กœ ๋„˜๊ฒจ์ค€ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด์˜ ์‹ค์ œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค. add ํ•จ์ˆ˜๋Š” ์ธ์ž๋กœ ๋ฐ›๋Š” model ๊ฐ์ฒด ์•ˆ์˜ number ํ•„๋“œ์˜ ๊ฐ’์„ 1 ๋”ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ฒ˜์Œ์— ์žˆ๋Š” model ๊ฐ์ฒด๋ฅผ add ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๋„˜๊ฒจ์„œ ์‹คํ–‰ํ•˜๋ฉด ์ฒ˜์Œ model์˜ ํ•„๋“œ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค. C์–ธ์–ด๋‚˜ python์—์„œ ํ•จ์ˆ˜์— ์ธ์ž๋ฅผ ๋„˜๊ธฐ๋ฉด ์‹ค์ œ ๊ฐ’(ํ˜น์€ ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’)์ด ์•„๋‹Œ ์ธ์ž์˜ ๊ฐ’์„ ๋ณต์‚ฌ ๊ฐ’์ด ๋„˜์–ด๊ฐ„๋‹ค. ์ด๋ ‡๊ฒŒ ์›๋ณธ์˜ ๋ณต์‚ฌ ๊ฐ’์„ ์ธ์ž์— ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ "Call By Value"๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์‹ค์ œ๋กœ ์›๋ณธ A๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ addํ•จ์ˆ˜์˜ return ๊ฐ’์ธ B ๋‹ค์‹œ ๋Œ€์ž…ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. Model model = new Model() model = add(model)// add ํ•จ์ˆ˜์˜ return์€ Model cl..
[Java] XMLํŒŒ์ผ๊ณผ ์ž๋ฐ”(Java)๋กœ ํŒŒ์‹ฑ(parsing)ํ•˜๊ธฐ xml์˜ˆ์‹œ ํŒŒ์ผ ํ•œ๊ตญ์ด 25 ์„œ์šธ java๋กœ xmlํŒŒ์ผ parsing ํ•˜๊ธฐ XML ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ ˆ์ฐจ๋Š” HTML ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ ˆ์ฐจ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. HTML์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•„์š”ํ•œ ํƒœ๊ทธ๋ฅผ ์ธ์‹ํ•ด์ค„ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, document.getElementById("๊ฐ€์ ธ์˜ฌ ํƒœ๊ทธ์˜ Id") ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ ํŠน์ • ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ํƒœ๊ทธ๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ xmlํŒŒ์ผ ์—ญ์‹œ ํƒœ๊ทธ๋ฅผ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ์ ˆ์ฐจ๋Š” ๋ฌธ์„œ์˜ ์ž์ฒด ๊ฐ์ฒด์ธ document๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax..
<ํ† ์ด ํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๋ก> ์ž๋ฐ” ์Šค์œ™(Java Swing)์„ ์ด์šฉํ•œ GUI ํ”„๋กœ๊ทธ๋žจ(ft. DBeaver) Java๋‚ด์— ๋‚ด์žฅ๋˜์–ด์žˆ๋Š” GUI์ธ ์Šค์œ™(swing)์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ํ† ์ด ํ”„๋กœ๊ทธ๋žจ(๊ฐ€๊ณ„๋ถ€ ํ”„๋กœ์ ํŠธ)์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ์ƒ๊ฐํ•ด์•ผํ•  ๋ถ€๋ถ„์ด ์–ด๋–ค ๊ฒŒ ์žˆ์„์ง€ ํšŒ๊ณ ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ใ€‹ใ€‹ใ€‹๋ฐ”๋กœ๊ฐ€๊ธฐ ๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž… ํ…์ŠคํŠธ ํ•„๋“œ ํžŒํŠธ ์‚ฝ์ž… ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ํ…Œ์ด๋ธ” ์ƒˆ๋กœ๊ณ ์นจ ํ…Œ์ด๋ธ” ํ–‰ ์‚ญ์ œ โ–ถ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์•„์ด๋”” ํ˜น์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ž…ํ•˜๋Š” ํ…์ŠคํŠธํ•„๋“œ(textfield)๊ฐ€ ๊ธฐ์ž…๋˜์ง€ ์•Š์œผ๋ฉด ํ•˜๋‹จ ๋ผ๋ฒจ์— ๊ฒฝ๊ณ ๋ฌธ์„ ์ƒ์„ฑ. ์˜ณ์ง€ ์•Š์€ ์•„์ด๋””๋‚˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ๊ฒฝ๊ณ ๋ฌธ GUI ์ƒ์„ฑ. ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์— ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ actionListener ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋” ํ•ด์ฃผ๊ณ  ํ…์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ, ์ •ํ™•ํžˆ๋Š” idHint, pwHint ๋ฌธ์ž์—ด๊ณผ ๋™์ผํ•œ ๊ฒฝ์šฐ ๋ผ๋ฒจ ๊ฒฝ๊ณ ๋ฌธ์ด ๋ณด์ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ..
์ž๋ฐ”[Java] ์ž…์ถœ๋ ฅ Stream ์ดํ•ดํ•˜๊ธฐ โ–ถInputStream / Sytem.in.read() ImputStream์€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์ž์ฃผ ์“ฐ์ด๋Š” ํด๋ž˜์Šค์ธ Scanner์™€ ๋‹ค๋ฅธ ๋™์ž‘์„ ๋ณด์ด๋Š”๋ฐ, ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ 1byte ๋‹จ์œ„๋กœ ์ž…๋ ฅ์„ ๋ฐ›์•„์˜จ๋‹ค๋Š” ์ ์ด๋‹ค. Sytem.in.read()์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ž„์‹œ ์ €์žฅํ•˜๋Š” ๋ฒ„ํผ(Buffer)์—์„œ ์ €์žฅ๋œ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์˜จ๋‹ค. ์ด read()์˜ return ๊ฐ’์€ byte๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ ํ˜น์€ -1(๋ฒ„ํผ์— ๊ฐ’์ด ์—†์„ ๋•Œ)์ด๋‹ค. โ–ถ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์œผ๋กœ ์ €์žฅ read() ๋ฉ”์„œ๋“œ๋กœ ๋ฆฌํ„ดํ•œ ๊ฐ’์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ฒŒ ๋  ํ…๋ฐ, ์ด๋•Œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฐ’์„ ๋ฆฌํ„ด ๊ฐ’์ธ byte๋‹จ์œ„(0~255)์— ๋งž์ถ”์–ด ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๋ณ€์ˆ˜ a์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ๋ฌธ์ž 'a'๋ฅผ ๋ฐ›์œผ๋ฉด ๋ฌธ์ž 'a..
์ž๋ฐ”[Java] ์ธํ„ฐํŽ˜์ด์Šค[Interface] ์‚ฌ์šฉ๊ณผ ์ด์œ  โ–ถ ์ธํ„ฐํŽ˜์ด์Šค(Interface) ๋ž€? ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ž€, ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ถ”์ƒ๋œ ํ‹€์„ ๋งŒ๋“ค์–ด ๊ฐœ๋ฐœ์— ํ˜ผ์„ ์ด ์—†๊ฒŒ๋” ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ํ˜‘์—…์„ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค๋ผ๋ฆฌ์˜ ์›ํ™œํ•œ ์˜์‚ฌ์†Œํ†ต์„ ์œ„ํ•ด์„œ ์ƒ์„ฑ๋œ ๊ฐœ๋…์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค. โ–ถ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๋ฌด์—‡์ด ๋‹ค๋ฅผ๊นŒ? ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ํŠธ๋ฆฌ ํ˜•์‹์œผ๋กœ ์ƒ์œ„ ํด๋ž˜์Šค์™€ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ๋‚˜๋‰˜์–ด์ง€๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค. ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ถ”์ƒํ™”์‹œํ‚จ ์ƒ์„ฑ์ž ํ˜น์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋ฉด์„œ ๋” ๊ตฌ์ฒดํ™”๋˜์–ด๊ฐ„๋‹ค. ๋ฐ˜๋ฉด์—, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ์™€ ๊ฐ™์€ ์ˆ˜์ง์  ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ ์ˆ˜ํ‰์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ์ˆ˜์ง์  ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ƒ์œ„ ํด๋ž˜์Šค์—๊ฒŒ๋งŒ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ˆ˜ํ‰์  ๊ตฌ์กฐ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด..
์ž๋ฐ”[Java] ์ ‘๊ทผ ์ œ์–ด์ž[Access modifier] ์ž๋ฐ”์˜ ์ ‘๊ทผ ์ œ์–ด์ž default / public(package) / private / protected / static / final โ–ถ default(package) ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ ‘๊ทผ ์ œ์–ด์ž๋กœ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค. => ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์ƒ๋žตํ•˜๋ฉด default๋กœ ์„ค์ •๋œ๋‹ค. default๋Š” ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์— ์žˆ๋Š” class๋ผ๋ฉด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 1๋ฒˆ ํŒจํ‚ค์ง€์— 1๋ฒˆ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜์˜€๋‹ค. 2๋ฒˆ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๊ณ  2๋ฒˆ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  2๋ฒˆ ํด๋ž˜์Šค์— 1๋ฒˆ ํด๋ž˜์Šค๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(import)๋ฅผ ํ–ˆ์„ ๋•Œ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ => ๊ฐ™์€ ํŒจํ‚ค์ง€ ์•ˆ์—์„œ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๊ฐ€๋Šฅ โ–ถ public ์ด๋ฆ„์ฒ˜๋Ÿผ ์–ด๋””์„œ๋“  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ์•ˆ์˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ๋„ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. testPackage1 ํŒจํ‚ค์ง€์— ์žˆ๋Š” TestClass2 ..
์ž๋ฐ”(Java) ์‚ฌ์šฉ์ž ์ž…/์ถœ๋ ฅ๊ณผ ๋ฒ„ํผ(butter) ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. c์–ธ์–ด๋‚˜ java์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ, ๋ฒ„ํผ(buffer)๋ผ๋Š” ๋…€์„์— ๊ฐ’์„ ์ž„์‹œ๋กœ ์ €์žฅํ•ด๋‘์—ˆ๋‹ค๊ฐ€ ํ•œ๋ฒˆ์— ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š”๋ฐ ์ˆซ์ž์™€ ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•ด์„œ ์ด์ƒํ•œ ์˜๋„ํ•œ ๋ฐ”์™€ ๋‹ค๋ฅด๊ฒŒ ๋˜๊ธฐ๋„ ํ•œ๋‹ค. โ–ถ ๋ฒ„ํผ(buffer)์˜ ์ดํ•ด ์ผ๋‹จ, ์™œ ๋ฒ„ํผ๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•˜๋Š”์ง€๋ถ€ํ„ฐ ์•Œ์•„์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์ปดํ“จํ„ฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ(๊ฐ€์ •์šฉ)๋Š” 1์ดˆ์— ์•ฝ 8์ฒœ ~ 1์–ต ๋ฒˆ ์ •๋„์˜ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๋งŒ์•ฝ, ์ปดํ“จํ„ฐ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„์•ผํ•  ๋•Œ, ์šฐ๋ฆฌ๊ฐ€ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ž…๋ ฅํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ 1 / 1์–ต ์ดˆ ์•ˆ์— ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š๋Š” ํ•œ ์ปดํ“จํ„ฐ๋Š” ๊ทธ๋™์•ˆ ๊ณ„์† ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. CPU์ž…์žฅ์—์„œ๋Š” ์†ํ„ฐ์ง€๋Š” ์ผ์ด ์•„๋‹..

728x90