[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] 10. equals๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ง€์ผœ ์žฌ์ •์˜ํ•˜๋ผ

1. ๊ฐœ๋… equals๋ฅผ ๋‹จ์ˆœํžˆ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ํ•จ์ •์ด ๋งŽ๋‹ค. ์ด๋ฒˆ ์žฅ์—์„œ๋Š” equals๋ฅผ ์žฌ์ •์˜ ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์ ๊ณผ, ์žฌ์ •์˜๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค. 2. equals๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์žฌ์ •์˜ํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ 2-1. equals๋ฅผ ์žฌ์ •์˜ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒฝ์šฐ ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ ๊ณ ์œ ํ•œ ๊ฐ’์„ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค: ์˜ˆ๋ฅผ ๋“ค์–ด, Thread ํด๋ž˜์Šค๋Š” ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณ ์œ ํ•œ ID๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ equals๋ฅผ ์žฌ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ: ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด ์‹๋ณ„์„ฑ๋งŒ ์ค‘์š”ํ•˜๋ฉฐ, ๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ์€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•œ equals๊ฐ€ ํ•˜์œ„ ํด๋ž˜์Šค์— ์ ์ ˆํ•œ ๊ฒฝ์šฐ: ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ด๋ฏธ equals๋ฅผ ์ ์ ˆํžˆ ๊ตฌํ˜„ํ–ˆ๊ณ , ์ด๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•œ ๊ฒฝ์šฐ์ด๋‹ค. ์ ‘๊ทผ์ด ์ œํ•œ๋œ ํด๋ž˜์Šค: equals๋ฅผ ํ˜ธ์ถœํ•  ์ผ์ด ์—†๋Š” private์ด๋‚˜ package-private ํด๋ž˜์Šค์ผ ๊ฒฝ์šฐ, ์žฌ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 2-2. equals๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ: ๊ฐ์ฒด์˜ ๋‚ด์šฉ์ด ๊ฐ™์€์ง€๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•  ๋•Œ, ์ƒ์œ„ ํด๋ž˜์Šค์˜ equals๊ฐ€ ์ด๋ฅผ ์ถฉ์กฑ์‹œํ‚ค์ง€ ์•Š์„ ๋•Œ ์žฌ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 3. equals ๋ฉ”์„œ๋“œ์˜ ๊ทœ์•ฝ Object ๊ธฐ๋ณธ ๋ช…์„ธ์˜ equals ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ์˜ ๊ทœ์•ฝ์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค: ...

[GitHub] ๋ฏผ๊ฐํ•œ ์ •๋ณด ์™„์ „ ์‚ญ์ œ์™€ PR ํžˆ์Šคํ† ๋ฆฌ ์ •๋ฆฌ

[GitHub] ๋ฏผ๊ฐํ•œ ์ •๋ณด ์™„์ „ ์‚ญ์ œ์™€ PR ํžˆ์Šคํ† ๋ฆฌ ์ •๋ฆฌ

GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ณด์•ˆ์ •์ฑ…์— ์œ„๋ฐ˜๋˜๊ฑฐ๋‚˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์‹ค์ˆ˜๋กœ ์—…๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ฐ€์–ด๋ฒ„๋ ค๋„ ์ด๋ฏธ ๋จธ์ง€๋œ Pull Request๋ผ๋ฉด, ๊นƒํ—ˆ๋ธŒ UI์˜ closed request ํƒญ์—์„œ ํŒŒ์ผ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์–ด ๋ณ„๋„์˜ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 1. ๋ฏผ๊ฐ์ •๋ณด ํŒŒ์ผ ์™„์ „ ์‚ญ์ œ (๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ ๋ฐ ์žฌ์ƒ์„ฑ) 1-1. ๊ธฐ์กด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํด๋ก  ๋ฐ ๋ฏผ๊ฐ ์ •๋ณด ์ œ๊ฑฐ git clone --mirror https://github.com/username/repo.git cd repo.git # BFG Repo-Cleaner ๋‹ค์šด๋กœ๋“œ curl -L -o bfg.jar https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar # ๋ฏผ๊ฐํ•œ ํŒŒ์ผ ๊นƒ ํžˆ์Šคํ† ๋ฆฌ์—์„œ ์™„์ „ ์ œ๊ฑฐ java -jar bfg.jar --delete-files 'test.properties(์‚ญ์ œํŒŒ์ผ๋ช…)' # Git Garbage Collection ์ˆ˜ํ–‰ ( Git reflog๋ฅผ ๋งŒ๋ฃŒ ์‹œํ‚ค๊ณ , ์“ฐ์ง€ ์•Š๋Š” ๊ฐ์ฒด ์‚ญ์ œ ) git reflog expire --expire=now --all git gc --prune=now --aggressive 1-2. ๊ธฐ์กด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํด๋ฆฐ ๋œ ํžˆ์Šคํ† ๋ฆฌ ๊ฐ•์ œ ํ‘ธ์‹œ git push --force --all git push --force --tags ...

[PostgreSQL] ๋ฌธ์ž์—ด์—์„œ ๋‚ ์งœ/์‹œ๊ฐ„ ๋ณ€ํ™˜ ๋ฐ ์ฒ˜๋ฆฌ ๊ณผ์ •

[PostgreSQL] ๋ฌธ์ž์—ด์—์„œ ๋‚ ์งœ/์‹œ๊ฐ„ ๋ณ€ํ™˜ ๋ฐ ์ฒ˜๋ฆฌ ๊ณผ์ •

1. ๋ฌธ์ž์—ด์—์„œ ๋‚ ์งœ/์‹œ๊ฐ„์œผ๋กœ์˜ ๋ณ€ํ™˜ PostgreSQL์˜ ๋‚ ์งœํ˜•ํƒœ์˜ ์นผ๋Ÿผ์„ ์กฐํšŒํ•  ๋•Œ, ์ข…์ข… ์ •ํ™•ํ•œ ๋‚ ์งœ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋ฌธ์ž์—ด, ํ˜น์€ ์ˆซ์ž ํ˜•ํƒœ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2024/05/02 ์ดํ›„์˜ ๊ฐ’์„ ์กฐํšŒํ•  ๋•Œ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์กฐํšŒ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. date_column > '20240502' date_column > TO_DATE('20240502', 'YYYYMMDD') ์˜ˆ์ œ์™€ ๊ฐ™์ด PostgreSQL์€ ์ผ๋ จ์˜ ๋ฌธ์ž/์ˆซ์ž์—ด์„ ์กฐ๊ฑด์— ๋งž๋Š” ๋‚ ์งœํ˜•์œผ๋กœ ์ž๋™์œผ๋กœ ๋””์ฝ”๋”ฉ์„ ํ•ด์ฃผ๋Š”๋ฐ, ๋ฌธ์ž์—ด์„ ์ธ์‹ํ•˜๋Š” ์ƒ์„ธ ๊ณผ์ •์„ ์ˆœ์„œ๋Œ€๋กœ ์•Œ์•„๋ณด์ž. 2. ๋ฌธ์ž์—ด์—์„œ ๋‚ ์งœ/์‹œ๊ฐ„์œผ๋กœ์˜ ๋””์ฝ”๋”ฉ ๊ณผ์ • 2-1. ๋ฌธ์ž์—ด์„ ํ† ํฐ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ฐ ํ† ํฐ์„ ์‹œ๊ฐ„, ์‹œ๊ฐ„๋Œ€, ๋˜๋Š” ์ˆซ์ž๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค. ์˜ˆ์ œ๋“ค์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์ด ๋ณ€ํ™˜๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•์ œ๋กœ TIMESTAMP ๋ฐ DATE๋กœ ํ˜• ๋ณ€ํ™˜์„ ํ•˜์˜€์ง€๋งŒ, ๋‚ ์งœ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ์™€ ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ๋ฅผ ๋น„๊ตํ•˜์—ฌ๋„ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ...

[๋””์ž์ธํŒจํ„ด] ์ „๋žต(Strategy) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

[๋””์ž์ธํŒจํ„ด] ์ „๋žต(Strategy) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

1. ์ „๋žต(Strategy) ํŒจํ„ด์ด๋ž€? Strategy๋Š” ์ „๋žต์ด๋ผ๋Š” ๋œป์œผ๋กœ ์ ์„ ํ•ด์น˜์šฐ๋Š” ์ž‘์ „, ๊ฒŒ์ž„์„ ์ด๊ธฐ๋Š” ์ „๋žต, ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์˜ ์˜๋ฏธ๊ฐ€ ์žˆ๊ณ , ํŠนํžˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ธ "์•Œ๊ณ ๋ฆฌ์ฆ˜"์„ ์˜๋ฏธํ•œ๋‹ค. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋ฉฐ, ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค. Strategy ํŒจํ„ด์—์„œ๋Š” ์ด๋ฏธ ๊ตฌํ˜„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‰ฝ๊ฒŒ ๋ชจ๋‘ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์Šค์œ„์น˜๋ฅผ ๋ˆ„๋ฅด๋“ฏ ์‰ฝ๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐ”๊ฟ”์„œ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํŒจํ„ด์ด Strategy ํŒจํ„ด์ด๋‹ค. 2. ์ „๋žต(Strategy) ํŒจํ„ด์˜ ๊ตฌ์กฐ ์ „๋žต ํŒจํ„ด์˜ ๊ตฌ์กฐ์™€ ์˜ˆ์ œ์—์„œ ๊ฐ ์š”์†Œ๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋จผ์ € ์‚ดํŽด๋ณด์ž. ...

[PostgreSQL] ROWNUM ์‚ฌ์šฉ๊ณผ ์ˆœ๋ฒˆ ๋ถ€์—ฌํ•˜๊ธฐ - ROW_NUMBER(), RANK(), DENSE_RANK()

[PostgreSQL] ROWNUM ์‚ฌ์šฉ๊ณผ ์ˆœ๋ฒˆ ๋ถ€์—ฌํ•˜๊ธฐ - ROW_NUMBER(), RANK(), DENSE_RANK()

1. ์ˆœ๋ฒˆ ๋ถ€์—ฌํ•˜๊ธฐย PostgreSQL์—์„œ๋Š” ๊ฐ ๋ฐ์ดํ„ฐ์— ์˜๋ฏธ ์žˆ๋Š” ์ˆœ๋ฒˆ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ROW_NUMBER(), RANK(), DENSE_RANK() ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.ย ROW_NUMBER() OVER(PARTITION BY * ORDER BY * ) RANK() OVER(PARTITION BY * ORDER BY * ) DENSE_RANK() OVER(PARTITION BY * ORDER BY * ) ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. (2. ํ…Œ์ŠคํŠธ ํ…Œ์ด๋ธ” & ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์ฐธ๊ณ ) ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ 1-1. ROW_NUMBER() 1-1-1. ๋‹จ์ผ ๊ทธ๋ฃน ์ˆœ๋ฒˆ ๋ถ€์—ฌ SELECT ROW_NUMBER() OVER (ORDER BY BRAND) AS ROWNUM, * FROM TEST_COMPLEX_GROUP; ...