์ ์ฒด ๊ธ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. ์ด์ 1 2 3 4 5 ๋ค์