728x90

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 128

[DB] ํŠธ๋žœ์žญ์…˜ (Transaction), ์žฅ์•  ํšŒ๋ณต

ํŠธ๋žœ์žญ์…˜ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ์‚ฐ๋“ค์„ ๋ชจ์•„๋†“์€ ๊ฒƒ = ์ž‘์—… ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ SQL ๋ฌธ์˜ ๋ชจ์ž„ ํŠนํžˆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” INSERT, DELETE, UPDATE ๋ฌธ์˜ ์‹คํ–‰ ๊ด€๋ฆฌ ๋…ผ๋ฆฌ์  ์ž‘์—…์˜ ๋‹จ์œ„ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌ ์ž‘์—…์ด๋‚˜ ๋ณ‘ํ–‰ ์ œ์–ด ์ž‘์—…์„ ์œ„ํ•œ ์ค‘์š”ํ•œ ๋‹จ์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—… ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์—ฐ์‚ฐ๋“ค์„ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ œ๋Œ€๋กœ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•จ ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ (ACID) ์›์ž์„ฑ (Atomicity) - ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ๋“ค์ด ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ํ•˜๋‚˜๋„ ์‹คํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•จ (= all-or-nothing) - ๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ๋„์ค‘ ์žฅ์•  ๋ฐœ์ƒํ•˜๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰ํ•œ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํŠธ๋žœ์žญ์…˜ ์ž‘์—… ์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ ค์•ผ..

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”

์ •๊ทœํ™”์˜ ํ•„์š”์„ฑ, ์ด์ƒํ˜„์ƒ์˜ ์˜๋ฏธ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜ ์ข…์†์„ฑ์˜ ๊ฐœ๋… ์ดํ•ด ์ •๊ทœํ˜•์˜ ์œ ํ˜•, ๊ด€๊ณ„ ํŒŒ์•… ์ •๊ทœํ™”์˜ ๊ฐœ๋…๊ณผ ์ด์ƒ ํ˜„์ƒ ์ด์ƒ ํ˜„์ƒ์˜ ์ข…๋ฅ˜ ์‚ฝ์ž… ์ด์ƒ: ์ƒˆ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ ๊ฐฑ์‹  ์ด์ƒ: ์ค‘๋ณต ํˆฌํ”Œ ์ค‘ ์ผ๋ถ€๋งŒ ๋ณ€๊ฒฝํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๊ฒŒ ๋˜๋Š” ๋ชจ์ˆœ์˜ ๋ฌธ์ œ ์‚ญ์ œ ์ด์ƒ: ํˆฌํ”Œ์„ ์‚ญ์ œํ•˜๋ฉด ๊ผญ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์‚ญ์ œ๋˜๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์˜ ๋ฌธ์ œ ์ •๊ทœํ™” ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์•Š๋„๋ก, ๋ฆด๋ ˆ์ด์…˜์„ ๊ด€๋ จ ์žˆ๋Š” ์†์„ฑ๋“ค๋กœ๋งŒ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฆด๋ ˆ์ด์…˜์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ • ํ•จ์ˆ˜์„ฑ ์ข…์†์„ฑ์„ ํŒ๋‹จํ•ด ์ •๊ทœํ™” ์ˆ˜ํ–‰ ํ•จ์ˆ˜์„ฑ ์ข…์†์„ฑ(FD; Functional Dependency): ์†์„ฑ๋“ค ๊ฐ„์˜ ๊ด€๋ จ์„ฑ ํ•จ์ˆ˜ ์ข…์† X๊ฐ€ Y๋ฅผ ํ•จ์ˆ˜์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค ๋ฆด๋ ˆ์ด์…˜ ๋‚ด์ด ๋ชจ๋“  ํˆฌํ”Œ์—์„œ ํ•˜๋‚˜์˜ X๊ฐ’์— ๋Œ€ํ•œ ..

Hackerrank SQL Occupations

https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true Occupations | HackerRank Pivot the Occupation column so the Name of each person in OCCUPATIONS is displayed underneath their respective Occupation. www.hackerrank.com -- pivot table ์ด์šฉ -- ๋ฌธ์ž์—ด์—์„œ MIN์€ a๋ถ€ํ„ฐ ์ถ”์ถœ -- ๋ณ€์ˆ˜ ์„ค์ • set @ -- sub table ์ด๋ฆ„ ์ง€์ • SET @D=0, @P=0, @S=0, @A=0; SELECT MIN(Doctor), MIN(Professor), MIN(Singer), MIN(A..

DB(Database)/MySQL 2021.11.04

์ˆ˜ ์ฐพ๊ธฐ (๋ฐฑ์ค€ 1920๋ฒˆ, ํ•ด์‹œ)

https://www.acmicpc.net/problem/1920 1920๋ฒˆ: ์ˆ˜ ์ฐพ๊ธฐ ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” N๊ฐœ์˜ ์ •์ˆ˜ A[1], A[2], …, A[N]์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” M(1 ≤ M ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” M๊ฐœ์˜ ์ˆ˜๋“ค์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, ์ด ์ˆ˜๋“ค www.acmicpc.net import sys input = sys.stdin.readline n = map(int, input()) a = list(map(int, input().split())) pool = {} for k in a: pool[k] = 1 print(pool) m = map(int, input()) b = list(map(int, input().split(..

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์‚ฌ์šฉ์ž์˜ ๋‹ค์–‘ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ • ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋Œ€ํ‘œ์ ์ธ ์„ค๊ณ„ ๋ฐฉ๋ฒ• E-R ๋ชจ๋ธ๊ณผ ๋ฆด๋ ˆ์ด์…˜ ๋ณ€ํ™˜ ๊ทœ์น™์„ ์ด์šฉํ•œ ์„ค๊ณ„ ์ •๊ทœํ™”๋ฅผ ์ด์šฉํ•œ ์„ค๊ณ„ E-R ๋ชจ๋ธ๊ณผ ๋ฆด๋ ˆ์ด์…˜ ๋ณ€ํ™˜ ๊ทœ์น™์„ ์ด์šฉํ•œ ์„ค๊ณ„ 1๋‹จ๊ณ„ ์š”๊ตฌ ์‚ฌํ•ญ ๋ถ„์„ - ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ ํŒŒ์•…, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์šฉ๋„ ํŒŒ์•… - ๊ฒฐ๊ณผ๋ฌผ: ์š”๊ตฌ ์‚ฌํ•ญ ๋ช…์„ธ์„œ 2๋‹จ๊ณ„ ๊ฐœ๋…์  ์„ค๊ณ„ - DBMS์— ๋…๋ฆฝ์ ์ธ ๊ฐœ๋…์  ๊ตฌ์กฐ ์„ค๊ณ„ - ๊ฒฐ๊ณผ๋ฌผ: ๊ฐœ๋…์  ์Šคํ‚ค๋งˆ(E-R ๋‹ค์ด์–ด๊ทธ๋žจ) 3๋‹จ๊ณ„ ๋…ผ๋ฆฌ์  ์„ค๊ณ„ - DBMS์— ์ ํ•ฉํ•œ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ ์„ค๊ณ„ - ๊ฒฐ๊ณผ๋ฌผ: ๋…ผ๋ฆฌ์  ์Šคํ‚ค๋งˆ(๋ฆด๋ ˆ์ด์…˜ ์Šคํ‚ค๋งˆ) 4๋‹จ๊ณ„ ๋ฌผ๋ฆฌ์  ์„ค๊ณ„ - DBMS๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ ์„ค๊ณ„ - ์ €์žฅ ์žฅ์น˜์— ์ ํ•ฉํ•œ ์ €์žฅ ๋ ˆ์ฝ”๋“œ, ์ธ๋ฑ์Šค์˜ ๊ตฌ์กฐ ๋“ฑ ์„ค๊ณ„ - ์ธ๋ฑ์Šค์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ..

[DB] ๋ทฐ(VIEW)

๋ทฐ(VIEW) ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ๋งŒ ์กด์žฌ but ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ทฐ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ ๋ทฐ ํ†ตํ•ด ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”(๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฌผ๋ฆฌ์  ํ…Œ์ด๋ธ”) ๋‚ด์šฉ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ์ž‘์—…์€ ์ œํ•œ์  →→ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฐฝ์˜ ์—ญํ• ์„ ๋‹ด๋‹น, ๋ฌผ๋ฆฌ์ X, ๋…ผ๋ฆฌ์  ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ๋ทฐ ์ƒ์„ฑ : CREATE VIEW ๋ฌธ CREATE VIEW ๋ทฐ_์ด๋ฆ„[(์†์„ฑ_๋ฆฌ์ŠคํŠธ)] AS SELECT ๋ฌธ [WITH CHECK OPTION]; CREATE VIEW ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ƒ์„ฑํ•  ๋ทฐ์˜ ์ด๋ฆ„๊ณผ ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ ์ด๋ฆ„ ๋‚˜์—ด AS ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ SELECT ๋ฌธ..

[Java] ์ž๋ฐ”์˜ ์ ‘๊ทผ ์ง€์ •์ž (private, protected, public, default), static ๋ฉค๋ฒ„, final ํด๋ž˜์Šค

์ ‘๊ทผ ์ง€์ •์ž private, protected, public, ๋””ํดํŠธ(์ ‘๊ทผ ์ง€์ •์ž ์ƒ๋žต) ๋ชฉ์  ํด๋ž˜์Šค๋‚˜ ์ผ๋ถ€ ๋ฉค๋ฒ„๋ฅผ ๊ณต๊ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผํ•˜๋„๋ก ํ—ˆ์šฉ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์˜ ์บก์Šํ™” ์ •์ฑ…์€ ๋ฉค๋ฒ„๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ ํด๋ž˜์Šค ์ ‘๊ทผ ์ง€์ • ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ํ—ˆ์šฉํ•  ์ง€ ์ง€์ • public ํด๋ž˜์Šค -> ๋‹ค๋ฅธ ๋ชจ๋“  ํด๋ž˜์Šค์—๊ฒŒ ์ ‘๊ทผ ํ—ˆ์šฉ ๋””ํดํŠธ ํด๋ž˜์Šค -> ์ ‘๊ทผ ์ง€์ •์ž ์ƒ๋žต, package-private๋ผ๊ณ ๋„ ํ•จ, ๊ฐ™์€ ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค์—๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ ๋งด๋ฒ„ ์ ‘๊ทผ ์ง€์ • public ํŒจํ‚ค์ง€์— ๊ด€๊ณ„ ์—†์ด ๋ชจ๋“  ํด๋ž˜์Šค์—์„ธ ์ ‘๊ทผ ํ—ˆ์šฉ private ๋™์ผ ํด๋ž˜์Šค ๋‚ด์—๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ ์ƒ์†๋ฐ›์€ ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€ protected ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ํด๋ž˜์Šค์—์„ธ ์ ‘๊ทผ ํ—ˆ์šฉ ์ƒ์† ๋ฐ›์€ ์„œ๋ธŒ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ์–ด๋„ ..

[Java] ์ž๋ฐ”์˜ ๊ฐ์ฒด ์†Œ๋ฉธ, ๊ฐ€๋น„์ง€, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

๊ฐ์ฒด ์†Œ๋ฉธ ๊ฐ์ฒด ์ƒ์„ฑ ์—ฐ์‚ฐ์ž new ๋กœ ํ• ๋‹น ๋ฐ›์€ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ JVM(์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„)๋กœ ๋˜๋Œ๋ ค ์ฃผ๋Š” ํ–‰์œ„ ์†Œ๋ฉธ๋œ ๊ฐ์ฒด ๊ณต๊ฐ„์€ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ์— ํฌํ•จ ์ž๋ฐ”๋Š” ์‚ฌ์šฉ์ž ์ž„์˜๋กœ ๊ฐ์ฒด ์†Œ๋ฉธ ์•ˆ๋จ -> ๊ฐ์ฒด ์†Œ๋ฉธ ์—ฐ์‚ฐ์ž ์—†์Œ JVM(์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„)์˜ ๊ณ ์œ ํ•œ ์—ญํ•  ๊ฐ€๋น„์ง€ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฐ์ฒด -> ๋” ์ด์ƒ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ JVM์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘, ๋ฐ˜ํ™˜ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ผ์ • ์ดํ•˜๋กœ ๋ถ€์กฑํ•ด์งˆ ๋•Œ ๊ฐ€๋น„์ง€๋ฅผ ์ˆ˜๊ฑฐํ•ด ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์œผ๋กœ ํ™•๋ณด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์ž๋™ ์ˆ˜ํ–‰ ๊ฐ•์ œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ˆ˜ํ–‰ System ๋˜๋Š” Runtime ๊ฐ์ฒด์˜ gc() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ gc() ๋ฉ”์†Œ๋“œ -> JVM์˜ ๊ฐ•๋ ฅํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์š”์ฒญ ํ•˜์ง€๋งŒ JVM์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰..

728x90