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

์ „์ฒด ๊ธ€43

[SQL ๋ ˆ๋ฒจ์—…] 10์žฅ: ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์ธ๋ฑ์Šค์™€ B-tree 1. B-tree ์ธ๋ฑ์Šค ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ธ๋ฑ์Šค ๊ท ํ˜•์žกํžŒ ๋ฒ”์šฉ์„ฑ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ธ๋ฑ์Šค ํŠธ๋ฆฌ์˜ ๋ฆฌํ”„๋…ธ๋“œ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐœ์„ ๋œ B+tree ๋ฒ„์ „์„ ๋ณดํ†ต ์‚ฌ์šฉ B+tree ํŠน์ง• - ๋ฃจํŠธ์™€ ๋ฆฌํ”„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•˜์—ฌ ๊ท ํ˜•์ด ์ž˜ ์žกํ˜€ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ์•ˆ์ •์  (๋ฐ์ดํ„ฐ ์–‘์ด ์ฆ๊ฐ€ํ•ด๋„ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๊ฐ‘์ž๊ธฐ ์•…ํ™”๋˜๋Š” ์ผ์ด ์—†์Œ) - ํŠธ๋ฆฌ์˜ ๊นŠ์ด๋„ 3-4 ์ˆ˜์ค€์œผ๋กœ ์ผ์ •ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์ด๋ถ„ ํƒ์ƒ‰์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ ๋น„์šฉ ์ ˆ๊ฐ ๊ฐ€๋Šฅ - ์ง‘์•ฝ ํ•จ์ˆ˜ ๋“ฑ์—์„œ ์š”๊ตฌ๋˜๋Š” ์ •๋ ฌ์„ ํ•˜์ง€ ์•Š์€ ์ฑ„ ์‹คํ–‰ ๊ฐ€๋Šฅ - ๋“ฑํ˜ธ์™€ ๋ถ€๋“ฑํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ B+tree ๊ตฌ์กฐ 2. ๊ธฐํƒ€ ์ธ๋ฑ์Šค ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋น„ํŠธ ํ”Œ๋ž˜๊ทธ๋กœ ๋ณ€ํ™˜ํ•ด ์ €์žฅํ•˜๋Š” ์ธ๋ฑ์Šค ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ.. 2022. 5. 23.
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฐ๋‹ฌ (C++) ๋ฌธ์ œ ๋ถ„์„ - N๊ฐœ์˜ ๋งˆ์„๋กœ ๊ตฌ์„ฑ - ์–‘๋ฐฉํ–ฅ์œผ๋กœ ํ†ตํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋กœ๋กœ ์—ฐ๊ฒฐ - 1๋ฒˆ ๋งˆ์„์— ์žˆ๋Š” ์Œ์‹์ ์—์„œ ๊ฐ ๋งˆ์„๋กœ ์Œ์‹ ๋ฐฐ๋‹ฌ - N๊ฐœ์˜ ๋งˆ์„ ์ค‘ K ์‹œ๊ฐ„ ์ดํ•˜๋กœ ๋ฐฐ๋‹ฌ์ด ๊ฐ€๋Šฅํ•œ ๋งˆ์„์˜ ์ˆ˜ ๋ฐ˜ํ™˜ ์˜ˆ์ œ) ์œ„ ๊ทธ๋ฆผ์—์„œ 1๋ฒˆ ๋งˆ์„์— ์žˆ๋Š” ์Œ์‹์ ์€ [1, 2, 4, 5] ๋ฒˆ ๋งˆ์„๊นŒ์ง€๋Š” 3 ์ดํ•˜์˜ ์‹œ๊ฐ„์— ๋ฐฐ๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 3๋ฒˆ ๋งˆ์„๊นŒ์ง€๋Š” 3์‹œ๊ฐ„ ์ด๋‚ด๋กœ ๋ฐฐ๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†์œผ๋ฏ€๋กœ 3๋ฒˆ ๋งˆ์„์—์„œ๋Š” ์ฃผ๋ฌธ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1๋ฒˆ ๋งˆ์„์— ์žˆ๋Š” ์Œ์‹์ ์ด ๋ฐฐ๋‹ฌ ์ฃผ๋ฌธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งˆ์„์€ 4๊ฐœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. Dijkstra ์œ ํ˜•์„ ์—ฐ์Šตํ•ด๋ณด๊ธฐ ์œ„ํ•ด ํ’€์–ด๋ณธ ๋ฌธ์ œ์ด๋ฏ€๋กœ Dijkstra๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ํ’€๋ฆฐ๋‹ค. ํ’€์ด ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1) road์— ๋‹ด๊ธด ๊ฐ„์„ ์˜ ์ •๋ณด๋ฅผ adj ๋ฒกํ„ฐ์— ์ธ๋ฑ์Šค๋ณ„๋กœ ์ €์žฅํ•œ๋‹ค. .. 2022. 5. 17.
[SQL ๋ ˆ๋ฒจ์—…] 9์žฅ: ๊ฐฑ์‹ ๊ณผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ฐฑ์‹ ์€ ํšจ์œจ์ ์œผ๋กœ 1. NULL ์ฑ„์šฐ๊ธฐ val ์ปฌ๋Ÿผ์— NULL์ธ ๋ถ€๋ถ„์€ ์ด์ „ ๋ ˆ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฐ’์ž„์„ ์˜๋ฏธํ•จ ์ฆ‰, NULL ๋ถ€๋ถ„์— ์ด์ „ ๋ ˆ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฐ’์„ ์ฑ„์›Œ๋„ฃ์–ด์•ผ ํ•จ 1) ๊ฐ™์€ keycol ํ•„๋“œ๋ฅผ ๊ฐ€์ง 2) ํ˜„์žฌ ๋ ˆ์ฝ”๋“œ๋ณด๋‹ค ์ž‘์€ seq ํ•„๋“œ ๊ฐ€์ง 3) valํ•„๋“œ๊ฐ€ NULL์ด ์•„๋‹˜ UPDATE OmitTbl SET val = (SELECT val FROM OmitTbl OT1 WHERE OT1.keycol = OmitTbl.keycol AND OT1.seq = (SELECT MAX(seq) FROM OmitTbl OT2 WHERE OT2.keycol = OmitTbl.keycol AND OT2.seq < OmitTbl.seq AND OT2.val IS NOT NULL)) WHERE val IS NULL; .. 2022. 5. 16.
[๋ฐฑ์ค€] 1477๋ฒˆ: ํœด๊ฒŒ์†Œ ์„ธ์šฐ๊ธฐ Parametric Search ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์—ฐ์Šตํ•˜๊ธฐ ์œ„ํ•ด 1477๋ฒˆ์„ ํ’€์–ด๋ณด์•˜์œผ๋‚˜ ์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ ์ด๋ถ„ํƒ์ƒ‰์„ ์–ด๋–ป๊ฒŒ ๋Œ๋ ค์•ผํ• ์ง€ ๊ฐ์ด ์•ˆ์™”๋‹ค. ๊ฒฐ๊ตญ ๋‚ดํž˜์œผ๋กœ๋Š” ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ๊ฒฐ์ • ๋ฌธ์ œ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํŒ๋‹จํ•ด์„œ ๋ธ”๋กœ๊ทธ์˜ ๋„์›€์„ ๋ฐ›์•˜๋‹ค. Parametric Search: ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ์†Œ/์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ(์ตœ์ ํ™” ๋ฌธ์ œ)๋ฅผ ๊ฒฐ์ • ๋ฌธ์ œ๋กœ ๋ณ€ํ™˜ํ•ด ์ด๋ถ„ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐฉ๋ฒ• ์›๋ž˜ ๋ฌธ์ œ๋Š” ํœด๊ฒŒ์†Œ ์—†๋Š” ๊ตฌ๊ฐ„์˜ ๊ธธ์ด๋ฅผ ์ตœ์†Œ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์ด๋ฅผ ๊ฒฐ์ • ๋ฌธ์ œ๋กœ ๋ณ€ํ˜•ํ•ด์„œ ์ƒˆ๋กœ ์„ธ์šธ ํœด๊ฒŒ์†Œ ๊ฐ„์˜ ๊ธธ์ด๊ฐ€ X์ผ ๋•Œ, ํœด๊ฒŒ์†Œ ๊ฐœ์ˆ˜๊ฐ€ M๊ฐœ์ธ๊ฐ€ ์•„๋‹Œ๊ฐ€์— ๋Œ€ํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•œ๋‹ค. ์ƒˆ๋กœ ์„ธ์šธ ํœด๊ฒŒ์†Œ ๊ฐ„์˜ ๊ธธ์ด X๋Š” ์ƒ์„ฑ๋œ ํœด๊ฒŒ์†Œ ๊ฐœ์ˆ˜๊ฐ€ M๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ๊ธธ์ด๋ฅผ ๋Š˜๋ฆฌ๊ณ  M๊ฐœ ์ดํ•˜์ผ ๊ฒฝ์šฐ ๊ธธ์ด๋ฅผ ์ค„์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด.. 2022. 5. 10.
[SQL ๋ ˆ๋ฒจ์—…] 8์žฅ: SQL์˜ ์ˆœ์„œ ์ˆœ์„œ์กฐ์ž‘ ๊ธฐ์ดˆ - ๋ ˆ์ฝ”๋“œ์— ์ˆœ๋ฒˆ ๋ถ™์ด๊ธฐ 1. ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ํ•œ ๊ฐœ์˜ ํ•„๋“œ์ผ ๊ฒฝ์šฐ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์‚ฌ์šฉ SELECT student_id, ROW_NUMBER() OVER (ORDER BY student_id) AS seq FROM Weights; ์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ SELECT student_id, (SELECT COUNT(*) FROM Weights W2 WHERE w2.student_id I/O์–‘์ด ๋Š˜์–ด๋‚˜ SELECT ๊ตฌ๋ฌธ ์„ฑ๋Šฅ์ด ๋‚˜๋น ์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ตฌํ˜„์˜์กด์  ๋ฐฉ๋ฒ•์ž„ 2) ์ธ๋ฑ์Šค์— ๋ณต์žกํ•œ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ถ„์‚ฐ๋„๋ฅผ ๋†’์ž„ -> ๋ณต์žกํ•œ ํ•„๋“œ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ ๋ถˆํ•„์š”ํ•œ ์˜๋ฏธ๋ฅผ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ ๊ฒฐ๋ก : ๋ฆฌ์Šคํฌ๋ฅผ ์ธ์ง€ํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ž 2. IDENTITY ํ•„๋“œ - ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ๋กœ ์ •์˜ํ•˜๊ณ  .. 2022. 5. 9.
[SQL ๋ ˆ๋ฒจ์—…] 7์žฅ: ์„œ๋ธŒ์ฟผ๋ฆฌ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ํํ˜œ 1. ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋ฌธ์ œ์  ์‹ค์ฒด์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„ ๋ฌธ์ œ ๋ฐœ์ƒ - ์—ฐ์‚ฐ ๋น„์šฉ ์ถ”๊ฐ€ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค SELECT ๊ตฌ๋ฌธ ์‹คํ–‰ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•จ ๋‚ด์šฉ์ด ๋ณต์žกํ• ์ˆ˜๋ก ์‹คํ–‰ ๋น„์šฉ ๊ธ‰์ฆ - ๋ฐ์ดํ„ฐ I/O ๋น„์šฉ ๋ฐœ์ƒ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ํด ๊ฒฝ์šฐ ์ €์žฅ์†Œ์˜ ํŒŒ์ผ์— ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜์—ฌ ์˜ค๋ฒ„ํ—ค๋“œ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ - ์ตœ์ ํ™” ๋ถˆ๊ฐ€ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ฟผ๋ฆฌ๋ฅผ ํ•ด์„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด(๋ช…์‹œ์ ์ธ ์ œ์•ฝ, ์ธ๋ฑ์Šค ๋“ฑ)๋ฅผ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ์–ป์„ ์ˆ˜ ์—†์Œ ๊ฒฐ๋ก : ๋‚ด๋ถ€์ ์œผ๋กœ ๋ณต์žกํ•œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ ํฌ๊ธฐ๊ฐ€ ํฐ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ ์‹œ ์„ฑ๋Šฅ ๋ฆฌ์Šคํฌ ๊ณ ๋ คํ•ด์•ผ ํ•จ 2. ์„œ๋ธŒ์ฟผ๋ฆฌ ์˜์กด์ฆ ๋ฌธ์ œ: ๊ณ ๊ฐ๋ณ„๋กœ ์ตœ์†Œ ์ˆœ๋ฒˆ์„ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ ๊ตฌํ•˜๊ธฐ 1) ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ SELECT R1.cust_id, R1.seq, R1.pri.. 2022. 5. 2.
[Spring Security] JWT Tutorial (5) ํšŒ์›๊ฐ€์ž…, ๊ถŒํ•œ ๊ฒ€์ฆ SecurityUtil ํด๋ž˜์Šค ์ƒ์„ฑ package com.oliviarla.tutorial.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import java.util.Optional; public class SecurityUtil { private static final Logger logger.. 2022. 4. 28.
[Spring Security] JWT Tutorial (4) Repository ์ƒ์„ฑ, ๋กœ๊ทธ์ธ DTO ๊ณ„์ธต ์ƒ์„ฑ LoginDto package com.oliviarla.tutorial.dto; import lombok.*; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class LoginDto { @NotNull @Size(min = 3, max = 50) private String username; @NotNull @Size(min = 3, max = 100) private String password; } TokenDto package com.oliviarla.. 2022. 4. 28.
[Spring Security] JWT Tutorial (3) JWT ์ฝ”๋“œ, Security ์„ค์ • ์ถ”๊ฐ€ application.properties jwt.header=Authorization jwt.secret=4oCYb2xpdmlhcmxhLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXQtb2xpdmlhcmxhLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXTigJkK jwt.token-validity-in-seconds=86400 secret ํ•ญ๋ชฉ์€ ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋กœ secret key๋ฅผ base64๋กœ ์ธ์ฝ”๋”ฉํ•ด ์ฑ„์›Œ๋„ฃ์Œ echo ‘silvernine-tech-spring-boot-jwt-tutorial-secret-silvernine-tech-spring-boot-jwt-tutorial-secret’|base64 build.gradle compileOn.. 2022. 4. 28.