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

๐Ÿ’กCS11

[Database] ์ธ๋ฑ์Šค (Index) ์ธ๋ฑ์Šค๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ (ํŠน์ • ์ปฌ๋Ÿผ์„ ๋ณต์‚ฌํ•ด์„œ ์ •๋ ฌํ•ด ๋‘”๋‹ค!) ex) ์šฐ๋ฆฌ๊ฐ€ ์ฑ…์—์„œ ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ์ฐพ๋Š”๋‹ค๊ณ  ํ•˜๋ฉด, ์ฑ…์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ์€ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฑ…์˜ ์ €์ž๋“ค์€ ๋ณดํ†ต ์ฑ…์˜ ๋งจ ๋’ค์— ์ƒ‰์ธ์„ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ index๋Š” ์ฑ…์˜ ์ƒ‰์ธ๊ณผ ๊ฐ™๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. ์ธ๋ฑ์Šค์˜ ๊ด€๋ฆฌ DBMS๋Š” index๋ฅผ ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด์•ผ ์›ํ•˜๋Š” ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ์ปฌ๋Ÿผ์— INSERT, UPDATE, DELETE๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค๋ฉด, ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ.. 2023. 6. 16.
[Database] ํŠธ๋žœ์ ์…˜ (Transaction) ํŠธ๋žœ์ ์…˜์ด๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์˜ ๋‹จ์œ„ ๋˜๋Š” ํ•œ๊บผ๋ฒˆ์— ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•  ์ผ๋ จ์˜ ์—ฐ์‚ฐ๋“ค ํŠธ๋žœ์ ์…˜์˜ ์„ฑ์งˆ (ACID) Atomicity (์›์ž์„ฑ) - All or Nothing - ํŠธ๋žœ์žญ์…˜์€ "์ „๋ถ€ ์„ฑ๊ณต"ํ•˜๊ฑฐ๋‚˜ "์ „๋ถ€ ์‹คํŒจ"ํ•˜๋Š” ์›์ž์ ์ธ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. - ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์€ ๋ชจ๋‘ ์„ฑ๊ณตํ•ด์•ผ๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ , ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ „ ์ƒํƒœ๋กœ ๋กค๋ฐฑ(ํŠธ๋žœ์ ์…˜ ์ „๋ถ€ ์ทจ์†Œ)๋œ๋‹ค. Consistency (์ผ๊ด€์„ฑ) - ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ „๊ณผ ์ˆ˜ํ–‰ ํ›„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋™์ผํ•œ ๊ทœ์น™๊ณผ ์ œ์•ฝ์กฐ๊ฑด์„ ๋”ฐ๋ฅด๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ฐ„์— ์ผ์น˜์„ฑ์ด ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ex) ์€ํ–‰ ์†ก๊ธˆ ๊ธฐ๋Šฅ์—์„œ ํŠธ๋žœ์ ์…˜ ์ˆ˜ํ–‰ ์ด์ „์˜ ์†ก๊ธˆ์ž์™€ ์ˆ˜๊ธˆ์ž์˜ ์ž”์•ฑ ํ•ฉ์ด.. 2023. 6. 16.
[Database] ์ •๊ทœํ™”(Normalization) ์ •๊ทœํ™”๋ž€? Attribute ๊ฐ„์˜ ์ข…์†์„ฑ์œผ๋กœ ์ธํ•œ ์ด์ƒํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์„ ๋ถ„ํ•ดํ•˜์—ฌ ์žฌ๋””์ž์ธํ•จ์œผ๋กœ์จ ์ด์ƒํ˜„์ƒ์„ ์—†์• ๋Š” ๊ณผ์ • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ๋ฐฉ์ง€, ๋ฌด๊ฒฐ์„ฑ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ •๊ทœํ™”๊ฐ€ ์ƒ๊ฒจ๋‚œ ๋ฐฐ๊ฒฝ ํ•œ ๋ฆด๋ ˆ์ด์…˜(Relation)์— ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ์˜ ์†์„ฑ์„ ํ˜ผํ•ฉํ•˜๋ฉด ์ •๋ณด๊ฐ€ ์ค‘๋ณต ์ €์žฅ๋˜๋ฉฐ ์ €์žฅ ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค. ๋˜ ์ค‘๋ณต๋œ ์ •๋ณด๋กœ ์ธํ•ด '์ด์ƒ ํ˜„์ƒ'์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ •๊ทœํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด๋‹ค. ์ •๊ทœํ™”์˜ 3๊ฐ€์ง€ ์›์น™ - ์ •๋ณด์˜ ๋ฌด์†์‹ค : ๋ถ„ํ•ด๋œ ๋ฆด๋ ˆ์ด์…˜์ด ํ‘œํ˜„ํ•˜๋Š” ์ •๋ณด๋Š” ๋ถ„ํ•ด๋˜๊ธฐ ์ „์˜ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค. - ์ตœ์†Œ ๋ฐ์ดํ„ฐ ์ค‘๋ณต : ์ด์ƒ ํ˜„์ƒ์„ ์ œ๊ฑฐ, ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ์ตœ์†Œํ™” - ๋ถ„๋ฆฌ์˜ ์›์น™ : ํ•˜๋‚˜์˜ ๋…๋ฆฝ๋œ ๊ด€๊ณ„์„ฑ์€ ํ•˜๋‚˜์˜ ๋…๋ฆฝ๋œ ๋ฆด๋ ˆ์ด์…˜์œผ๋กœ ๋ถ„๋ฆฌํ•ด.. 2023. 6. 16.
[Java] String, StringBuffer, StringBuilder ์ž๋ฐ”์—์„œ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฃŒํ˜• ํด๋ž˜์Šค๋กœ String, StringBuffer, StringBuilder๋ฅผ ์ง€์›ํ•œ๋‹ค. 3๊ฐ€์ง€ ํด๋ž˜์Šค๋Š” ๋ชจ๋‘ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃฐ ๋•Œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์“ฐ์ž„์ƒˆ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. String ์ž๋ฐ”์—์„œ String ๊ฐ์ฒด์˜ ๊ฐ’์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ๋ถˆ๋ณ€์˜ ์†์„ฑ์„ ๊ฐ–๋Š”๋‹ค.(immutable) ์ฐธ๊ณ ) String ๋‚ด๋ถ€ ์ฝ”๋“œ public final class String implements java.io.Serializable, Comparable { private final byte[] value; } ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์ž. public static void main(String[] args) { String str = "Hello"; str += "Worl.. 2023. 6. 9.
[Java] equals()์™€ hashCode()(+ ๋™์ผ์„ฑ, ๋™๋“ฑ์„ฑ) equals์™€ hashCodeํ•จ์ˆ˜ ๋ชจ๋“  Java ๊ฐ์ฒด์˜ ๋ถ€๋ชจ ๊ฐ์ฒด์ธ Object ํด๋ž˜์Šค์— ์ •์˜๋˜์–ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๊ฐ์ฒด๋Š” Object ํด๋ž˜์Šค์— ์ •์˜๋œ equals์™€ hashCodeํ•จ์ˆ˜๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. ๋™์ผ์„ฑ(Identity), ๋™๋“ฑ์„ฑ(Equality) ํ•จ์ˆ˜๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์ „ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฐœ๋…์ธ ๊ฒƒ ๊ฐ™์•„์„œ ๋จผ์ € ์ •๋ฆฌํ•˜์˜€๋‹ค. ๋™์ผ์„ฑ(Identity) ๋™์ผ์„ฑ์€ ๋น„๊ต ๋Œ€์ƒ์˜ ๋‘ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๊ฐ™์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ž๋ฐ”์—์„œ ๋น„๊ต์—ฐ์‚ฐ์ž(==)๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. public class Main { static class Person{ int age; public Person(int age) { this.age = age; } } public static void main(String[] args) { Pe.. 2023. 6. 9.
[Java] Call by value vs Call by reference ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๐Ÿ‘† Call by value ๐Ÿ‘† Call by reference Java์—์„œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ ๋ฐฉ๋ฒ• Java์—์„œ๋Š” ์ด ๋‘ ๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ• ์ค‘ Call by value๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. Call by value (๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ) ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ์— ์‚ฌ์šฉ๋˜๋Š” ์ธ์ž์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’(value)๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ณด๋‚ธ๋‹ค. ์›์‹œ ํƒ€์ž… public class Main { public static void main(String[] args) { int a = 1; int b = 2; modify(a, b); System.out.println(a); System.out.println(b); } static void modify(int a, int b) { a .. 2023. 6. 8.