Week-06

16. ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ 16.1 ๋ฒ ์ด์Šค ๋ฐ”์šด๋“œ์˜ ์ผ๋ฐ˜ํ™” ์ง€๊ธˆ ๊ฐ€์ •์˜ ๋‹จ๊ณ„์—์„œ ๋‚ด๋ถ€๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์š”์ธ์€ ์Šคํƒ๊ณผ ํž™ ์‚ฌ์ด์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์€ 60๋…„๋Œ€์— ์ด๋ฏธ ์‚ฌ์šฉ๋˜๋˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์€ ์„ธ๊ทธ๋จผํŠธ๋งˆ๋‹ค ๋ฒ ์ด์Šค์™€ ๋ฐ”์šด๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์„ธ๊ทธ๋จผํŠธ๋ž€ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ, ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„์ด๋‹ค. (์Šคํƒ, ํž™, ๋ฐ์ดํ„ฐ์˜์—ญ, ์ฝ”๋“œ์˜์—ญ ๋“ฑ) ์ฆ‰ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์„ธ๊ทธ๋จผํŠธ(๋…ผ๋ฆฌ์  ๋‹จ์œ„)์— ๊ฐ๊ฐ ๋ฒ ์ด์Šค์™€ ๋ฐ”์šด๋“œ๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ์™ธ์—๋Š” ๋ฒ ์ด์Šค ๋ฐ”์šด๋“œ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๊ฐ€์ƒ์ฃผ์†Œ๊ฐ€ 100, ๋ฒ ์ด์Šค๊ฐ€ 50, ๋ฐ”์šด๋“œ๊ฐ€ 110์ด๋ผ๋ฉด, ๋ฒ ์ด์Šค ์ฃผ์†Œ์ธ 50์œผ๋กœ ๊ฐ€์„œ 100์„ ๋”ํ•˜๋ฉด 150์ด ๋˜๋Š”๋ฐ, ์ด๋Š” ๋ฐ”์šด๋“œ๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค....

June 25, 2024

cpp-casting ๐Ÿ‹

static_cast static_cast๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ ์บ์ŠคํŒ…์ด๋‹ค. ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ํƒ€์ž… ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์–ด๋Š ์ •๋„ ๋ณด์žฅํ•ด ์ค€๋‹ค. ์ฃผ๋กœ ๊ธฐ๋ณธ ํƒ€์ž… ๊ฐ„์˜ ๋ณ€ํ™˜, ๋ช…์‹œ์  ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ์ƒ์„ฑ, ์ƒ์† ๊ด€๊ณ„์— ์žˆ๋Š” ํด๋ž˜์Šค ๊ฐ„์˜ ๋ณ€ํ™˜ ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. Copy code int a = 10; double b = static_cast<double>(a); // int๋ฅผ double๋กœ ๋ณ€ํ™˜ dynamic_cast dynamic_cast๋Š” ์ฃผ๋กœ ๋‹คํ˜•์„ฑ(polymorphism)์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค ๊ณ„์ธต์—์„œ์˜ ํฌ์ธํ„ฐ ๋˜๋Š” ์ฐธ์กฐ ํƒ€์ž… ๋ณ€ํ™˜์— ์‚ฌ์šฉ๋œ๋‹ค. ์‹คํ–‰ ์‹œ๊ฐ„์— ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์•ˆ์ „ํ•œ ํƒ€์ž… ๋ณ€ํ™˜์„ ๋ณด์žฅํ•ด ์ค€๋‹ค....

June 9, 2024

cpp ํƒ€์ž… ๋ณ€ํ™˜

๋ฉ€๋”ํ•œ ์ •๋ฆฌ๋Š” ํ•ญ์ƒ ์ข‹๋‹ค.

June 8, 2024

c/cpp free๋Š” ์–ด๋–ป๊ฒŒ ํ• ๋‹น์„ ํ•ด์ œํ•˜๋Š”๊ฐ€

malloc()์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ void* ํƒ€์ž…์ด๋‹ค. ์‚ฌ์‹ค ํ• ๋‹นํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธด ํ•˜์ง€๋งŒ, ์‚ฌ์‹ค์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ—ค๋”๊ฐ’์ด ์žˆ์–ด, ๋ฐฉ๊ธˆ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

June 8, 2024

N + 1 ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ๐ŸงŠ๏ธ

Post ์—”ํ‹ฐํ‹ฐ @Entity public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String content; @OneToMany(mappedBy = "post", fetch = FetchType.LAZY, cascade = CascadeType.ALL) private List<Comment> comments = new ArrayList<>(); } Comment ์—”ํ‹ฐํ‹ฐ @Entity public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String content; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "post_id") private Post post; } ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜์…จ์œผ๋ฉด, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค....

May 31, 2024

ํŠœํ„ฐ๋ง ์งˆ์˜ ์‘๋‹ต ๋ชจ์Œ ๐ŸงŠ๏ธ

๋ธ”๋กœ๊ทธ ๊ธ€์„ ํ‰์น˜๋ ค๋Š” ์–„ํŒํ•œ ์‹œ๋„ ๊ทผ๋ฐ ์ง„์งœ ๋ฐ”์˜๋‹ˆ๊นŒ.. [[JPA-์—”์ ๋Ÿฌ์Šค์ผ]]

May 31, 2024

TCP/IP Illustrated ๐Ÿ“š

Intro ๐Ÿ˜ƒ ํ”„๋กœํ† ์ฝœ์˜ ์ง‘ํ•ฉ์„ ํ”„๋กœํ† ์ฝœ ์Šค์œ„ํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ์Šค์œ„ํŠธ์˜ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์ด ์„œ๋กœ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ์œผ๋ฉฐ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ„๋Š”์ง€ ๋ช…์‹œํ•˜๋Š” ์„ค๊ณ„๋ฅผ ์•„ํ‚คํ…์ฒ˜ ๋˜๋Š” ์ฐธ์กฐ ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. TCP/IP๋Š” ์ธํ„ฐ๋„ท ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ์Šค์œ„ํŠธ์ด๋ฉฐ, ARPANET ์ฐธ์กฐ ๋ชจ๋ธ(ARM)์—์„œ ์œ ๋ž˜ํ–ˆ์Šต๋‹ˆ๋‹ค. Clark๋Š” ์ธํ„ฐ์—ฃ ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ๋œ ๋ชฉํ‘œ๊ฐ€ โ€œ๊ธฐ์กด ์ƒํ˜ธ ์—ฐ๊ฒฐ๋œ ๋„คํŠธ์›Œํฌ์˜ ๋‹ค์ค‘ํ™”๋œ ํ™œ์šฉ์„ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ ๊ธฐ์ˆ ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ"์ด๋ผ๊ณ  ์„ค๋ช…ํ•œ๋‹ค. ์ฆ‰ ์ด ์ง„์ˆ ์˜ ํ•ต์‹ฌ์€ ์ธํ„ฐ๋„ท ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ณ„ ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒํ˜ธ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์ƒ์„ฑ๋œ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋œ ๋„คํŠธ์›Œํฌ์—์„œ ์—ฌ๋Ÿฌ ํ™œ๋™์ด ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค....

May 29, 2024

Week-05

14. ๋ง‰๊ฐ„ : ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API stack : ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•ด, ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ํ• ๋‹น๊ณผ ํ•ด์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค(automatic). void func() { int x; } func()๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์Šคํƒ์— ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ , func()๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์Šคํƒ์—์„œ ๊ณต๊ฐ„์„ ํ•ด์ œํ•œ๋‹ค. heap : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ํ•ด์•ผํ•œ๋‹ค. void func() { int *x = (int *) malloc(sizeof(int)); free(x); } malloc()์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ , free()๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค. heap์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , func()์˜ ์Šคํƒ์—๋Š” heap์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค. stack๋งŒํผ ๋ช…์‹œ์ ์ด๊ณ  ๋‹จ์ˆœํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ์“ฐ์ž„์ƒˆ๊ฐ€ ๋‹ค์–‘ํ•˜๊ณ  ์‹ค์ˆ˜๋ฅผ ํ•  ์—ฌ์ง€๊ฐ€ ๋งŽ๋‹ค....

May 27, 2024

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

May 20, 2024

ํฌ์ธํ„ฐ ์ง€์˜ฅ๐Ÿ˜ข

int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int *p = arr; cout << p[0] << endl; cout << arr[0] << endl; cout << p[5] << endl; cout << arr[5] << endl; cout << *p << endl; cout << *arr << endl; cout << *(p+5) << endl; cout << *(arr+5) << endl; int arr2[2][2] = {{1,2},{3,4}}; int** pp = (int**)arr2; // error : 2์ฐจ์› ๋ฐฐ์—ด์€ ๋‹ค์ค‘ ํฌ์ธํ„ฐ์™€ ๋‹ค๋ฆ„ int** pp = (int**)arr2; // error : 2์ฐจ์› ๋ฐฐ์—ด์€ ๋‹ค์ค‘ ํฌ์ธํ„ฐ์™€ ๋‹ค๋ฆ„ : ์ด ๋ถ€๋ถ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ด์œ ....

May 15, 2024