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

Programming

(85)
[Network]TCP/IP๋Š” ๋ญ˜๊นŒ? + UDP, Port ์ˆœ์„œ IP๋ž€? ใ„ด IP address / ์•„์ดํ”ผ ์ฃผ์†Œ ใ„ด IP์˜ ํ•œ๊ณ„์ (TCP์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ) TCP๋ž€? ใ„ด TCP ์„ธ๊ทธ๋จผํŠธ ใ„ด Port(ํฌํŠธ)๋ž€? ใ„ด 3-way handshake ใ„ด TCP์™€ UDP์˜ ์ฐจ์ด์  IP(Internet Protocal)๋ž€? IP๋Š” ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ํ˜น์€ ์ธํ„ฐ๋„ท ํ†ต์‹ ๊ทœ์•ฝ ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ํ†ต์‹ ๊ทœ์•ฝ์ด๋ž€๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ? ์ธํ„ฐ๋„ท์€ ์•„์ฃผ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ๋Š” ๋‘ ์„œ๋ฒ„ ํ˜น์€ ์ปดํ“จํ„ฐ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ฒŒํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ํŽธ๋ฆฌํ•œ ์กด์žฌ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ปดํ“จํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ฉด(๋ฉ”์„ธ์ง€๋‚˜, ๋ฉ”์ผ ๊ฐ™์€ ๊ฒƒ์„ ์ „์†ก) ์ธ๊ณต์œ„์„ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ€์„œ ์ƒ๋Œ€ํŽธ์˜ ์ปดํ“จํ„ฐ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์ฃผ๋Š” ์ค„ ์•Œ์•˜์ง€๋งŒ(์ปดํ“จํ„ฐ๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ์ „์— ๋‚œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค...) ์‚ฌ์‹ค ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ, ์„ ์œผ๋กœ..
[Java] Kruskal's Algorithm ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST) ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ MST(Minimun Spanning Tree) - ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฐ” ๊ตฌํ˜„ ๐Ÿง ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ MST(Minimun Spanning Tree)๋ž€? ์ตœ์†Œํ•œ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ •์ ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์˜ˆ์‹œ) ๋„์‹œ๋“ค์€ ๋ชจ๋‘ ๋‹ค๋ฆฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์„ ๋•Œ, ๋ชจ๋“  ๋„์‹œ๋ฅผ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋‹ค๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋˜ ์ตœ์†Œํ•œ์˜ ๋‹ค๋ฆฌ ๊ธธ์ด๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• (๋„์‹œ๊ฐ€ ๊ฐ€๋กœ๋“ฑ์œผ๋กœ ๋‹ค๋ฆฌ๊ฐ€ ์ „์„ ์œผ๋กœ ๋ฐ”๋€”์ˆ˜๋„ ์žˆ๋‹ค.) ๋„ค๋น„๊ฒŒ์ด์…˜์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ชจ๋“  ์ •์ (node ํ˜น์€ vortex)๊ฐ€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ ์ค‘ ๊ฐ€์žฅ ์ ์€ ๊ฐ€์ค‘์น˜(์—ฌ๊ธฐ์„  ๊ฑฐ๋ฆฌ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ ์ฃผ์˜์‚ฌํ•ญ ์—ฌ๊ธฐ์„œ ์—ฐ๊ฒฐ์ด๋ž€ ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ์„œ ๊ฐ€๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค. ๊ฐ„์„  ํ˜น์€ ๋ธŒ๋žœ์น˜(๋…ธ๋“œ๋ฅผ ์ด์–ด์ฃผ๋Š” ์„ , ๊ฑฐ๋ฆฌ)๋Š” ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค.(์—ฐ๊ฒฐ๋งŒ ๋˜์–ด์žˆ..
[Java] Dijkstra Path ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„(ft. ์šฐ์„ ์ˆœ์œ„ ํ) ์‰ฝ์ง€๋งŒ ๋ณต์žกํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿค” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์™œ ์“ธ๊นŒ? โ—๏ธ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ํŠน์ • ์ง€์ ์—์„œ ๋ชฉํ‘œ ์ง€์ ์œผ๋กœ ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ์„ ๋“ค์ด๋ฉฐ ๊ฐ€์•ผํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ) A์—์„œ D๋กœ ๊ฐ€๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๋น„์šฉ์€ ์ตœ์†Œ ๊ฐ’์€? A -> D = 5 A -> B -> D = 5 A -> C -> D = 3 ๋”ฐ๋ผ์„œ ์‹ค์ œ ์ตœ์†Œ ๋น„์šฉ ์ง€๋ถˆํ•˜๋Š” ๊ฒฝ๋กœ๋Š” A -> C -> D ์ด๋‹ค. ๐Ÿฅธ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง 1. ์‹œ์ž‘์ง€์ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค๊ณผ์˜ ๋น„์šฉ์„ ๊ตฌํ•œ๋‹ค. Result List ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ A B C D E ๋น„์šฉ 0 3 1 5 ๋ฌดํ•œ ์ถœ๋ฐœ ์ง€์ ์ด A์ผ ๋•Œ, ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ๊ฐ€๋Š” ๋น„์šฉ์€ ์—†์œผ๋‹ˆ 0 A์—์„œ E์™€ ๊ฐ™์ด ๋ฐ”๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒฝ๋กœ๋Š” ์—†์„ ๋•Œ, ๋น„์šฉ์„ ๋ฌดํ•œ(์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ์•„์ฃผ ํฐ ๊ฐ’)์œผ๋กœ ํ•œ๋‹ค..
[JavaScript] String-boot ์›น ์†Œ์ผ“(WebSocket)์„ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ตฌํ˜„ - Session Storage ํ™œ์šฉํ•˜๊ธฐ ์†Œ๊ฐœ ์™œ WebSocket์„ ์‚ฌ์šฉํ•˜์˜€๋‚˜? Spring-boot WebSocket ์‚ฌ์šฉ๋ฒ•(์„ค์ •๋ฒ•) ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•ด๋ณด๊ธฐ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ใ„ด HTTP session ๊ฐ€์ ธ์˜ค๊ธฐ -> interception ์‚ฌ์šฉ ใ„ด DB๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ๋ฉ”์‹œ์ง€ ์ €์žฅํ•˜๊ธฐ -> Session Storage ์‚ฌ์šฉํ•˜๊ธฐ ์ตœ๊ทผ ์ž‘์„ฑ ์ค‘์ธ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์›น์— ์ ‘์†ํ•œ ํด๋ผ์ด์–ธํŠธ์™€ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋‹ค. ๐Ÿค” ์™œ WebSocket์„ ์‚ฌ์šฉํ•˜์˜€๋‚˜? ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์›น ์†Œ์ผ“์€ Spring Framework์˜ STOMP๊ฐ€ ์•„๋‹Œ ์ˆœ์ˆ˜ JavaScript๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์ œ ์ž…๋‹ˆ๋‹ค. jquery๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. WebSocket์ด ํ•„์š”ํ–ˆ๋˜ ์ด์œ  ์•ž์„œ๋งํ–ˆ๋“ฏ ์‹ค์‹œ๊ฐ„ ๋ผ์ด๋ธŒ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ธฐ..
[์ž๋ฃŒ๊ตฌ์กฐ] Linked List๋ž€? - Java ๊ตฌํ˜„ ์ˆœ์„œ Linked list(๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ) ๋ž€? ใ„ด Linked list์™€ List์˜ ์ฐจ์ด์  ใ„ด Single Linked List์™€ Doubly Linked List ์ฐจ์ด์ (Doubly Linked List๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ) Single Linked list ๊ตฌํ˜„(JAVA) Doubly Linked list ๊ตฌํ˜„(JAVA) ๐Ÿค” Linked list ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? List์™€์˜ ์ฐจ์ด์  ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ๋ž€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์ผ๋ฐ˜ ๋ฆฌ์ŠคํŠธ(List)์™€ ์ฐจ์ด์ ์„ ๋ณด๋ฉด์„œ ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ List๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฐฐ์—ด ๊ตฌ์กฐ์ด๋‹ค. List ๊ตฌ์กฐ index(์ˆœ์„œ) 0 1 2 3 4 5 value(๊ฐ’) "์ฒซ๋ฒˆ์งธ ๊ฐ’" "๋‘๋ฒˆ์งธ ๊ฐ’" "์„ธ๋ฒˆ์งธ ๊ฐ’" "๋„ค๋ฒˆ์งธ ๊ฐ’" "๋‹ค์„ฏ๋ฒˆ์งธ ๊ฐ’" "์—ฌ์„ฏ๋ฒˆ์งธ ๊ฐ’" ..
[JavaScript] ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ disabled, display ์†์„ฑ ์ถ”๊ฐ€, ํ•ด์ œ(๋ณ€๊ฒฝ) ๊ฐ„ํ˜น ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ disabled ์†์„ฑ๊ณผ display ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํ•„์š”ํ•  ๋•Œ ์ฐพ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ ๊ธ€์„ ์”๋‹ˆ๋‹ค. JavaSctript๋กœ disabled ์†์„ฑ ํ™œ์„ฑํ™” or ํ•ด์ œ ํ•˜๊ธฐ function disabledFalse() { document.querySelector('#name').disabled = false; document.querySelector('#email').disabled = false; document.querySelector('#phone').disabled = false; document.querySelector('#message').disabled = false; } ์œ„ ์ฒ˜๋Ÿผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์„ ํƒ์ž๋ฅผ ์„ ํƒํ•ด์ค€ ํ›„ .disabled ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค...
[DBeaver / MySQL] ๋ฌดํ•œ ๋กœ๋”ฉ(dead lock) ํ•ด๊ฒฐ DBeaver / MySQL ๋ฌดํ•œ ๋กœ๋”ฉ ํ•ด๊ฒฐ๋ฒ•์ตœ๊ทผ ํŒ€์›๋“ค๊ณผ ์ง„ํ–‰ํ•˜๋Š” ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ DB์กฐ์ž‘์„ ํ•˜๋Š”๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋ณด๋‹ˆ DBeaver๊ฐ€ ๋ฌดํ•œ๋กœ๋”ฉ์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ข…์ข… ๋ชฉ๊ฒฉํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์ฟผ๋ฆฌ๋ฌธ์˜ ์š”๋ฅ˜๋‚˜ ์™ธ๋ถ€์š”์ธ์— ์˜ํ•ด์„œ ์ •์ƒ ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ๊ณณ์—์„œ SQL๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ๊ธฐ์— DBeaver๊ฐ€ ์ด๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๊ณ„์† ์‹คํ–‰์„ ์š”์ฒญํ•˜๋‹ค๊ฐ€ ๋ฌดํ•œ ๋กœ๋”ฉ(dead lock)์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ ์˜€์Šต๋‹ˆ๋‹ค.   ์˜ˆ์‹œJava ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ด query ์‹คํ–‰ -> ์˜ค๋ฅ˜ -> "DB ๋Œ€๊ธฐ ์ค‘"DBeaver๋ฅผ ํ†ตํ•ด query ์‹คํ–‰ -> "DB ๋Œ€๊ธฐ ์ค‘"์ด ๋๋‚ ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ... -> ๋ฌดํ•œ ๋กœ๋”ฉ์ด๋Ÿฐ ๋ชจ์Šต ํ˜น์€ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ๋ฒ•์€ ์‚ฌ์šฉํ•˜๋Š” DB ์ €์˜ ๊ฒฝ์šฐ MySQL ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ (๊ฐœ์ธ ..
[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..

728x90