๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
ยท
Database
ํ”„์ ์„ ํ•˜๋ ค๊ณ  ๋””๋น„ ์„ค๊ณ„๋ฅผ ํ•˜๋ ค๋Š”๋ฐ.. ๋””๋น„ ์ˆ˜์—…์„ ๋“ค์€์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์–ด์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ์ƒ๊ฐ์ด 1๋„ ๋‚˜์ง€ ์•Š๋Š”๋‹ค ๐Ÿ˜…๋Œ€์ถฉ ๋ฐ๋งน์ˆญ์ƒ ํ…Œ์ด๋ธ”์„ ์งœ๊ฒ ๋Š”๋ฐ ๊ทธ๋ž˜๋„ ํ•˜๋Š”๊น€์— ์ œ๋Œ€๋กœ ํ•ด๋ณด์ž ์‹ถ์–ด์„œ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด์ž์•„์•„์•„ -.-~~๊ธฐ๋ณธ์  ์ˆœ์„œ์—…๋ฌด ํŒŒ์•… (๋‹น์—ฐ)๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง (Conceptual design)๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฐœ๋…์ ์ธ ๋ชจ๋ธ๋ง์„ ์˜๋ฏธํ•œ๋‹ค. Entity Relation Diagram (ERD)๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง (logical design) -> ํ‘œ๋กœ ์ „ํ™˜ํ•œ๋‹ค๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง -> ์‹ค์ œ ๊ตฌํ˜„ (sql ์ฝ”๋“œ)Conceptual data modelingentity= ๋ช…์‚ฌ. ์‹ค์ œ ์„ธ์ƒ์— ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์–ด๋–ค ๊ฒƒ. ex ์‚ฌ๋žŒ, ์ฐจ ,์ง‘, ํ•™์ƒ ..weak entity : ์ง์›์˜ ๋ถ€์–‘๊ฐ€..
๋ธ”๋กœ๊ทธ ์‹œ์ž‘ ๐Ÿค–
ยท
life
๋‚˜๋Š” ์›๋ž˜ ํ•ญ์ƒ ์ •๋ฆฌํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•ด์•ผํ•˜๋Š” ์Šต๊ด€(?) ์ด ์žˆ์–ด์„œ .. ํ•™๊ต ๋‹ค๋‹ˆ๋ฉด์„œ ์ง„ํ–‰ํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ๋“ค์„ ๋…ธ์…˜์— ๋„์ ๋„์  ์ ์–ด์™”๋‹ค.๋…ธ์…˜์„ ์“ฐ๊ธฐ ์ „์—” ์ž ์‹œ ์ด ํ‹ฐ์Šคํ† ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋„ ํ–ˆ๋Š”๋ฐ.. so dirtyํ•˜๊ฒŒ ์ •๋ฆฌ๋ฅผ ํ•ด๋‘์–ด ๋Œ€๋ถ€๋ถ„์€ ๋น„๊ณต๊ฐœ๊ธ€๋กœ..^^ ๋˜์–ด์žˆ๋‹ค. ๊ทธ์น˜๋งŒ !๋‚˜๋งŒ ๋ณด๊ธฐ์œ„ํ•ด์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋‘๋ฉด ๋„ˆ๋ฌด ๋Œ€์ถฉ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜๊ณ .. ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ๊ฒƒ๋“ค์ด ๋งŽ๊ณ ,๋‚ด๊ฐ€ ๋‚˜์•„๊ฐ€๋Š” ๊ณผ์ •์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์— ๋‚จ๊ธฐ๊ณ ์ž ๋‹ค์‹œ ๋ธ”๋กœ๊ทธ๋ฅผ ์‹œ์ž‘ํ•œ๋‹น.ํžˆํžˆ ํ™งํŒ…~.~
14. Collections, Maps, Iterators
ยท
๊ฐ์ฒด์ง€ํ–ฅ - java
Collection : ์—ฌ๋Ÿฌ ์›์†Œ๋“ค์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ( = ์ธํ„ฐํŽ˜์ด์Šค . ๊ฐ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์€ Collection์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๊ณ , ์ด๋•Œ iterator๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค ) ์„ธ ๊ฐ€์ง€ ํฐ ๋ถ„๋ฅ˜ ์ธํ„ฐํŽ˜์ด์Šค = List / Set / Map 1. List ์ธํ„ฐํŽ˜์ด์Šค : ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ, ์ค‘๋ณตํ—ˆ์šฉ o ->๊ตฌํ˜„ ํด๋ž˜์Šค : Linked List, Stack, Queue, ArrayList, Vector โ€ข LinkedList : ์ €์žฅํ•  ์š”์†Œ๋ฅผ ๋…ธ๋“œ๋กœ ๋งŒ๋“ค์–ด ๊ฐ’๊ณผ ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•จ. ์‚ฝ์ž…, ์‚ญ์ œ ๋น ๋ฅด๋‚˜ ํƒ์ƒ‰์ด ๋Š๋ฆฌ๋‹ค. ๋‹จ์ผ/์ด์ค‘์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์กด์žฌ โ€ข Vector : ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๋™์ž‘์„ ์ˆ˜ํ–‰, Thread-safe ! ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•จ. ํ•œ๋ฒˆ์— ํ•œ ์Šค๋ ˆ๋“œ๋งŒ vectorํ˜ธ์ถœ๊ฐ€๋Šฅ. ๊ทธ์น˜๋งŒ ์†๋„๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ณด..
๋””์ž์ธํŒจํ„ด 2 - Observer & Decorator
ยท
๊ฐ์ฒด์ง€ํ–ฅ - java
๊ฐœ๋… : ๊ฐ์ฒด์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๋™์ ์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํŒจํ„ด - ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์ž‡๋Š” ๊ธฐ๋Šฅ์˜ ์ข…๋ฅ˜๊ฐ€ ๋งŽ์ด ์กด์žฌ (์ƒท์ถ”๊ฐ€ ๊ฐ™์€๊ฑฐ) -> ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ Decorator ํด๋ž˜์Šค๋กœ ์ •์˜ํ•œ ํ›„ -> ํ•„์š”ํ•œ Decorator ๊ฐ์ฒด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์˜ ์กฐํ•ฉ์„ ์„ค๊ณ„ํ•จ ! - ์Œ๋ฃŒ์ˆ˜ ์ฒ˜๋Ÿผ ๊ธฐ๋ณธ abstract ํด๋ž˜์Šค ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ฆ - ๊ฐ ์Œ๋ฃŒ๋Š” ๊ทธ๊ฑธ ์ƒ์† - ์ฒจ๊ฐ€ ์˜ต์…˜๋“ค์€ 1. Beverage (๊ธฐ๋ณธ component ํด๋ž˜์Šค) ๋ฅผ ์ƒ์†ํ•œ ๊ธฐ๋ณธDecorator(์ถ”์ƒ)ํด๋ž˜์Šค๋งŒ๋“ฆ 2. ๊ฐ ์˜ต์…˜์€ 1ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•จ -> ๊ฐ ์˜ต์…˜ ํด๋ž˜์Šค๋“ค์€ beverage ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ๊ฐ€์ง€๊ณ  ์žˆ์Œ -> ํ•ด๋‹น ์Œ๋ฃŒ์— ํ•ด๋‹น ์˜ต์…˜ ์ถ”๊ฐ€ํ•œ๊ฑธ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜ ๊ตฌํ˜„ Observer Pattern : ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€”๊ฒฝ์šฐ, ..
Design pattern - Singleton
ยท
๊ฐ์ฒด์ง€ํ–ฅ - java
Design patter = ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ํ•  ๋•Œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋“ค์— ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ํ•ด๊ฒฐ์ฑ… = ๊ฐ€์ด๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ ํ˜น์€ ์„ค๊ณ„ => ํŠน์ • ์ƒํ™ฉ์—์„œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž…์ฆ๋œ ์†”๋ฃจ์…˜ ! - ์ด๋ฏธ ํ•ด๊ฒฐ๋œ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํˆดํ‚ท์„ ์ œ๊ณต - ์†Œํ”„ํŠธ์›จ์–ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ์ง€ ์ƒ๊ฐํ•˜๋Š”๋ฐ ๋„์›€์„ ์คŒ - 23๊ฐœ์˜ ๋””์ž์ธ ํŒจํ„ด์„ ์ •๋ฆฌํ•˜๊ณ , ๋‹ค์Œ 3๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•จ 1. Creational(์ƒ์„ฑ) : ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด 2. Structural(๊ตฌ์กฐ) : ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋ฅผ ์กฐํ•ฉํ•ด ๋” ํฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ํŒจํ„ด 3. Behavioral(ํ–‰์œ„) : ๊ฐ์ฒด๋‚˜ ํด๋ž˜์Šค ์‚ฌ์ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜, ์ฑ…์ž„ ๋ถ„์žฌ์— ๊ด€๋ จ๋œ ํŒจํ„ด Singleton = ํ•œ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋งŒ !! ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ฒƒ -> ์–ด..
14- ArrayList , Generics
ยท
๊ฐ์ฒด์ง€ํ–ฅ - java
ArrayList Class - java์˜ standard library class (java.util.ArrayList ์— ์žˆ์Œ) (lang์ด ๊ธฐ๋ณธ์œผ๋กœ ๋˜๋Š”๊ฑฐ๊ณ , ์ €๊ฑฐ๋Š” ์ž„ํฌํŠธ ํ•ด์ค˜์•ผ๋จ ^^) = ๋™์  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ -> ์•„์ดํ…œ์ด ๋ฆฌ์ŠคํŠธ์—์„œ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์ค„์–ด๋“ ๋‹ค! -> ์‹คํ–‰๋™์•ˆ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์  ์„ ์ œ์™ธํ•˜๋ฉด ์ผ๋ฐ˜ ๋ฐฐ์—ด๊ณผ ๋™์ผํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋จ! ( ์ผ๋ฐ˜์ ์ธ array : ์ดˆ๊ธฐ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ์ •์  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ) โ€ข ๊ตฌํ˜„ ; array๋ฅผ private ๋ฉค๋ฒ„๋กœ ๋งŒ๋“ค์–ด ๊ตฌํ˜„. ๊ฝ‰์ฐจ๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ์‹! - base type์€ class type! (๊ทธ๋ž˜์„œ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(primitive type)์œผ๋กœ ๋ฐฐ์—ด ๋งŒ๋“ค๋ฉด Integer..
Graph 2
ยท
์ž๋ฃŒ๊ตฌ์กฐ (c)
Minimum-cost Spanning Tree Spanning tree - connected undirected weighted tree๋ฅผ ๋งํ•œ๋‹ค ( ๋ชจ๋“  ์ ๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ cycle์ด ์—†๋Š” tree) - BFS / DFS ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค - cost : ๋ชจ๋“  ์—ฃ์ง€์˜ weight์˜ ํ•ฉ - ์ ์ด n๊ฐœ๋ฉด ์—ฃ์ง€๋Š” n-1๊ฐœ (๋‹น์—ฐ) -> spanning tree์ค‘์—์„œ ์—ฃ์ง€๋“ค์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ํŠธ๋ฆฌ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜! 1. Kruskal Algorithm - edge๋ฅผ ์ด์šฉ! - ํญํญ. ์—ฃ์ง€์ž‡๊ฒŒ ์—ฃ์ง€์ค‘์—์„œ ์—ฃ์ง€ํ•˜๋‚˜์„ ํƒ ใ…‹ใ…‹ - ์—ฃ์ง€๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ฆฌ - ์ ค์ž‘์€๊ฑฐ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๊ณ ๋ฆ„ ! ์ด๋•Œ ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„๋•Œ๋งŒ ๊ณ ๋ฅธ๋‹ค! ๋ชจ๋“ ๊ฐ„์„ ์—๋Œ€ํ•ด ๋‹คํ•˜๋ฉด ๋— or n-1๊ฐœ ๊ณ ๋ฅด๋ฉด ๋— ๋ณต์žก๋„๋Š” O(eloge)..
Graph 1
ยท
์ž๋ฃŒ๊ตฌ์กฐ (c)
* ์„ ํ˜• ์ž๋ฃŒ ๊ตฌ์กฐ : array, linked list, stack, queue ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ : tree, graph, hash ! Concepts โ€ข graph ์ •์˜ : ํ•˜๋‚˜ ์ด์ƒ์˜ ๋…ธ๋“œ๋“ค์˜ ์ง‘ํ•ฉ V์™€ ๋‘ ๋…ธ๋“œ)์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ edhe๋“ค์˜ ์ง‘ํ•ฉ E๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ ( ๋…ธ๋“œ์™€ ์—ฃ์ง€์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ. pair(V, E) ) - tree๋Š” graph์˜ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ ! (Graph๊ฐ€ ๋” ํฐ ๋ฒ”์œ„) โ€ข ์ข…๋ฅ˜ Directed graph ( = digraph ) - ํ™”์‚ดํ‘œ ์žˆ๋Š”๊ฑฐ - self-loop ์žˆ์Œ Undirected graph - ํ™”์‚ดํ‘œ ์—†๋Š”๊ฑฐ - self-loop ์—†์Œ Weighed graph - ๊ฐ ์—ฃ์ง€์— ๊ฐ€์ค‘์น˜๊ฐ€ ๋ถ€์—ฌ๋˜๋Š” ๊ฒƒ (๊ฑฐ๋ฆฌ๋ฅผ ์˜๋ฏธ~~ ๊ฑฐ๋ฆฌ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฆ„~~ ๋…ธ๋“œ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ..
b-tree
ยท
์ž๋ฃŒ๊ตฌ์กฐ (c)
Concept ์ •์˜ : M-way Search Tree + AVL tree - M-way search tree : ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ m๊ฐœ์ด๊ณ  ์ตœ๋Œ€ m-1๊ฐœ์˜ ํ‚ค๋ฅผ ๊ฐ–๋Š” ํƒ์ƒ‰ ํŠธ๋ฆฌ - ์ตœ์†Œ ๐‘š/2(์œ„๋กœ์˜ฌ๋ฆผ) ๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง ์“ฐ์ด๋Š” ๊ณณ - database ์™€ file system์—์„œ ์“ฐ์ž„. ๋ณต์žก๋„ O(log n)
Red black tree & B-tree
ยท
์ž๋ฃŒ๊ตฌ์กฐ (c)
๋ ˆ๋“œ๋ธ”๋ž™ํŠธ๋ฆฌ ๊ฐœ๋… - ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ปฌ๋Ÿฌ๊ฐ€ red / black ์ธ binary search tree - ๋ชจ๋“  ๋นˆ ๋…ธ๋“œ(null pointer)๊ฐ€ ์™ธ๋ถ€ ๋…ธ๋“œ๋กœ ๋Œ€์ฒด๋œ๋‹ค (external node = ๋งจ๋์—์ž‡๋Š” ๋ฆฌํ”„๋…ธ๋“œ. ๋„ค๋ชจ) (์ž๋…€๊ฐ€ ์—†์Œ -> ์ž๋…€๋ฅผ nill ๋…ธ๋“œ๋ผ๊ณ  ์„ค์ •ํ•จ) - ๋ณต์žก๋„ O(log n) !!! - rank : ํ•ด๋‹น ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ external node๊นŒ์ง€ ๋ธ”๋ž™๋…ธ๋“œ ๊ฐœ์ˆ˜ lemma (๋ถ€๋ช…์ œ) - h ๋ถ€๋ชจ๊ฐ€ ๋ ˆ๋“œ๋ฉด ์ž์‹์€ ๋ฌด์กฐ๊ฑด ๋ธ”๋ž™ (์‚ฝ์ž…์‹œ ์–ด๊ธฐ๊ฒŒ๋จ) - ๋ ˆ๋“œ๊ทœ์น™ ์ด๋ผ๊ณ  ๋ถ€๋ฆ„ - ๋ฃจํŠธ์—์„œ(์ž„์˜์˜ ๋…ธ๋“œ์—์„œ) ์™ธ๋ถ€๊นŒ์ง€ ๋ชจ๋“ ๊ฒฝ๋กœ์—์„œ ๋ธ”๋ž™ ๊ฐœ์ˆ˜๋Š” ๊ฐ™๋‹ค! (์ž๊ธฐ ์ž์‹ ์€ ์ œ์™ธ) -> delete์—ฐ์‚ฐ์‹œ ์œ„๋ฐ˜๊ฐ€๋Šฅ. ์—ฐ์‚ฐ 1. insert ๊ตฟ๋…ธํŠธ์— ์ •๋ฆฌํ•จ~~