์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- til
- IEEE 802
- ํญํด99
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- i-type
- well known ํฌํธ
- 99ํด๋ฝ
- ์ฃผ๊ธฐ์ ํธ
- leetcode
- xv6
- ํ๋ก์ด๋์์
- mariadb
- ์ฝ๋ฉํ ์คํธ์ค๋น
- reducible
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ์ค๋ฅ๊ฒ์ถ
- ์์๋ฒํธ
- ํ๋ ์ ๊ตฌ์กฐ
- ๋น์ฃผ๊ธฐ์ ํธ
- tcp ์ธ๊ทธ๋จผํธ
- ํ ํฐ ๋ฒ์ค
- ์ค๋ธ์
- ๋ฐ์ดํฐ ์ ์ก
- git merge
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- tcp ํ๋กํ ์ฝ
- ์ฐ๋ถํฌdb
- ์ค๋ฅ์ ์ด
- ๊ฐ๋ฐ์์ทจ์
- ์ค๋ ๋
- Today
- Total
๋ชฉ๋ก์ ์ฒด ๊ธ (160)
Unfazedโ๏ธ๐ฏ

1. ๋ฉํฐ์ค๋ ๋ฉ์ ๊ฐ๋ ๋ฉํฐ์ค๋ ๋ฉ์ ํ๋์ ํ๋ก๊ทธ๋จ ๋ด์์ ์ฌ๋ฌ ์์ ์ ๋์์ ์คํํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฒ์ด๋ค. Java์์๋ Thread ํด๋์ค์ Runnable ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ๋ฉํฐ์ค๋ ๋๋ฅผ ๊ตฌํํ ์ ์๋ค.์ค๋ ๋๋ฅผ ํ์ฉํ๋ฉด CPU ์์์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฐ ์๋ต์ฑ์ ๋์ผ ์ ์๋ค.2. ์๋ก์ด ์ค๋ ๋ ์์ฑํ๊ธฐJava์์ ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ๋จผ์ Thread ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค. ์์ฑ์์ Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๊ณ , Runnable ์ธํฐํ์ด์ค์ run() ๋ฉ์๋์ ์ค๋ ๋๊ฐ ์คํํ ๋ก์ง์ ์์ฑํ ์ ์๋ค.Thread thread = new Thread(new Runnable() { @Override public void run() { ..
1. ๋ฉํฐ์ค๋ ๋ฉ์ด ํ์ํ ์ด์ ๋ฉํฐ์ค๋ ๋ฉ์ด ํ์ํ ์ฃผ์ ์ด์ ๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ์๋ต์ฑ(Responsiveness)๊ณผ ์ฑ๋ฅ(Performance)์ด๋ค.1.1. ์๋ต์ฑ(Responsiveness)์ฌ์ฉ์ ๊ฒฝํ ์ธก๋ฉด์์ ์๋ต์ฑ์ ์ํํธ์จ์ด ํ์ง์ ๊ฒฐ์ ํ๋ ํต์ฌ ์์์ด๋ค.์ฌ๋ก 1: ์จ๋ผ์ธ ์ผํ๋ชฐ์์ ๋๋ ๊ตฌ๋งค ์์ฒญ์ด DB ์์ ์ ์ง์ฐ์ํฌ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์ฌ์ฉ์์ ์์ฒญ์ด ์ฐจ๋จ๋จ → ๋ฉํฐ์ค๋ ๋ฉ์ผ๋ก ๊ฐ ์์ฒญ์ ๋ณ๋ ์ค๋ ๋์์ ์ฒ๋ฆฌํ๋ฉด ๋์ ์๋ต ๊ฐ๋ฅ์ฌ๋ก 2: ๋์์ ์ฌ์ ์ฑ๋ฉ์ธ ์ค๋ ๋: UI ์ด๋ฒคํธ ์ฒ๋ฆฌ์์ปค ์ค๋ ๋: ๋ฏธ๋์ด ๋์ฝ๋ฉ ๋ฐ ์ถ๋ ฅ → ์ฌ์ฉ์ ์ธํฐ๋์ ์ง์ฐ ์๋ ๋ถ๋๋ฌ์ด ๊ฒฝํ ์ ๊ณต์ด๋ฌํ ๋์์ฑ(Concurrency)์ ๋ฉํฐ์ค๋ ๋ฉ์ ํตํด ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์ฌ์ง์ด ๋จ์ผ ์ฝ์ด์์๋ ๊ฐ๋ฅํ๋ค.1.2. ์ฑ๋ฅ(Performa..
์ด์ง ํ์์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋งค ๋ฐ๋ณต๋ง๋ค ๊ฒ์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ณผ์ ์์ ์ค๊ฐ ์ธ๋ฑ์ค(mid)๋ฅผ ๊ณ์ฐ์ ๋จ์ํ๊ฒ (left + right) / 2๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฒํ๋ก์ฐ์ ์ํ์ด ์กด์ฌํ๋ค.๊ฒฐ๋ก ๋ง ๋จผ์ ๋งํ๋ฉด, int mid = left + (right - left) / 2; ๋ฐฉ์์ ๊ถ์ฅํ๋ค.1. ๊ธฐ๋ณธ์ ์ธ ์ค๊ฐ ์ธ๋ฑ์ค mid ๊ณ์ฐ ๋ฐฉ์์ด์ง ํ์์์๋ ๊ฒ์ ๋ฒ์์ ์ ๋ ์ธ๋ฑ์ค์ธ left์ right๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ฐ ์ธ๋ฑ์ค๋ฅผ ๊ณ์ฐํ๋ค.int mid = (left + right) / 2; ์ด ๋ฐฉ์์ ๊ฐ๋จํ์ง๋ง, left์ right๊ฐ ๋งค์ฐ ํฐ ๊ฐ์ผ ๊ฒฝ์ฐ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค.2. ์ค๋ฒํ๋ก์ฐ์ค๋ฒํ๋ก์ฐ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ณ์์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์๋ฅผ ์ด๊ณผํ์ฌ ..

HashSet์ Java Collections Framework์ ํต์ฌ ๊ตฌ์ฑ ์์ ์ค ํ๋๋ก, ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์งํฉ(Set) ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๋ค. 1. HashSet์ ์ฃผ์ ํน์ง์ค๋ณต ์์๋ฅผ ํ์ฉํ์ง ์์ : ๋ฐ์ดํฐ ๋๋ฑ์ฑ ํ์ธ์ ์ํ equals(), hashCode() ๋ฉ์๋ ํ์์์๋ฅผ ๋ณด์ฅํ์ง ์์ : ์ธ๋ฑ์ค๊ฐ ๋งค๊ฐ ๋ณ์๋ก ๋์ด๊ฐ๋ ๋ฉ์๋(get(int index), indexOf(Object o) ๋ฑ)์ด ์์null ์์ ํ์ฉ ๋น๋๊ธฐ(non-synchronized) ๊ตฌํO(1) ์๊ฐ ๋ณต์ก๋์ ๊ธฐ๋ณธ ์ฐ์ฐ2. ๋ด๋ถ ๊ตฌ์กฐ 2-1) ์ฃผ์ ํ๋์์ ์ฝ๋์์ ๋ณผ ์ ์๋ฏ์ด HashSet์ ๋ด๋ถ์ ์ผ๋ก HashMap์ ์ฌ์ฉํ์ฌ ๊ตฌํํ๋ค.HashSet์ ์์๋ค์ HashMap์ key๋ก ์ ์ฅํ๋ค.๋ชจ๋ ๊ฐ์ ๋..

Java 8์์ ๋์ ๋ Stream API๋ ์ปฌ๋ ์ ์ ์ฒ๋ฆฌํ๋ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. ๊ทธ ์ค์์๋ map()๊ณผ flatMap() ๋ฉ์๋๋ ๋ฐ์ดํฐ ๋ณํ๊ณผ ์ฒ๋ฆฌ์ ์์ด ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ค. 1. map() Stream map( Function mapper // R : ์ถ๋ ฅ ํ์ (์๋ก์ด ์คํธ๋ฆผ์ ์์ ํ์ ))map() ๋ฉ์๋๋ ์คํธ๋ฆผ์ ๊ฐ ์์๋ฅผ ๋ค๋ฅธ ์์๋ก ๋ณํํ๋ 1:1 ๋งคํ์ ์ํํ๋ค. ์ ๋ ฅ ์์ ํ๋๋น ์ ํํ ํ๋์ ์ถ๋ ฅ ์์๊ฐ ์์ฑ๋๋ค.์ฃผ์ ํน์ง๊ฐ ์์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ณํ์คํธ๋ฆผ์ ์์ ๊ฐ์ ์ ์ง (one-to-one)์๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณด์กด๋ฐํ ํ์ : Stream (R์ ๋ณํ๋ ํ์ )์์ ์ฝ๋// ๋ฌธ์์ด ๊ธธ์ด ๋ณํList words = Arrays.asList("Java", "Stre..

1. ๊ฐ๋ฐฉ ํ์ ์์น(Open-Closed Principle)์ด๋?1988๋ Bertrand Meyer๊ฐ ๊ทธ์ ์ ์ "Object Oriented Software Construction"์์ ์ฒ์ ์๊ฐํ ์ด ์์น์ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค. software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification."์ํํธ์จ์ด ์ํฐํฐ(ํด๋์ค, ๋ชจ๋, ํจ์ ๋ฑ)๋ ํ์ฅ์ ๋ํด์๋ ์ด๋ ค ์์ด์ผ ํ๊ณ , ์์ ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํ๋ค."ํ์ฅ์ ์ด๋ ค์๋ค(Open for extension): ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ด์ผ ํจ์์ ์ ๋ซํ์๋ค(Closed for modification): ๊ธฐ์กด..
SRP๋ SOLID ์์น ์ค ์ฒซ ๋ฒ์งธ ์์น์ผ๋ก, ํ ๊ฐ์ ๋ชจ๋์ ์ค์ง ํ ๊ฐ์ ์กํฐ์๋ง ์ฑ ์์ ๊ฐ์ ธ์ผ ํ๋ค๋ ์์น์ด๋ค. A module should be responsible to one, and only one, actor.(Actor : ๋ชจ๋์ ๋ณ๊ฒฝ์ ์๊ตฌํ๋ ํ๋ ์ด์์ ์ดํด๊ด๊ณ์๋ ์ฌ์ฉ์ ๊ทธ๋ฃน)SRP์์ ์ฑ ์์ ์๋ฏธ ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด์งํฅ ์ค๊ณ์์์ ์ฑ ์(์ญํ , ์ฑ ์, ํ๋ ฅ์์์ ์ฑ ์)๊ฐ์ฒด๊ฐ ์ํํด์ผ ํ๋ ํ๋(behavior)์ ์๋ฏธ๊ฐ์ฒด๊ฐ "๋ฌด์์ ์๊ณ "(knowing) "๋ฌด์์ ํ๋์ง"(doing)๋ฅผ ๋ํ๋ํ๋ ฅ ๊ด๊ณ ์์์ ๊ฐ์ฒด๊ฐ ์ํํด์ผ ํ๋ ์ญํ ์ ์๋ฏธ์ฃผ๋ก ๋ฉ์๋๋ ๊ธฐ๋ฅ ๋จ์์ ์ฑ ์์ ์๋ฏธSRP์์์ ์ฑ ์๋ณ๊ฒฝ์ ์ด์ (reason for change)๋ฅผ ์๋ฏธํน์ ์กํฐ(์ดํด๊ด๊ณ์)์ ์๊ตฌ์ฌํญ์ ์๋ฏธ..

๋ฆฌ๋ชจํธ ์ ์ฅ์๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ(๋ฆฌ๋ชจํธ ์ ์ฅ์)๋ฅผ Clone ํ ๋ git clone ๋ช ๋ น์ ์๋์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ฅผ "origin"์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ถ๊ฐํ๋ค.๋ฆฌ๋ชจํธ ์ ์ฅ์๋ git remote ๋ช ๋ น์ผ๋ก ํ์ธํ ์ ์๋ค. (-v ์ต์ ์ผ๋ก fetch์ push URL ํ์ธ ๊ฐ๋ฅ) ๋ค๋ฅธ ์ฌ๋์ด ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฆฌ๋ชจํธ ์ ์ฅ์(main branch)์ ํธ์ฌํ์ ๋ ๋ก์ปฌ ์ ์ฅ์๋ ์ด๋ฅผ ๋ฐ๋ก ์ธ์งํ์ง ๋ชปํ๋ค.๋ก์ปฌ ์ ์ฅ์์์ ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๋ณ๊ฒฝ์ฌํญ์ ์ธ์งํ๊ธฐ ์ํด์๋ fetch๋ฅผ ํด์ผ๋๋ค. git fetch๋ก์ปฌ ์ ์ฅ์์ ์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ๊ณ ์๊ฒฉ ์ ์ฅ์(remote repository)์์ ๋ฐ์ดํฐ(๋ธ๋์น, ํ๊ทธ ๋ฑ)์ ๊ฐ์ ธ์ด๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ ๋ก์ปฌ์ .git ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋์ง๋ง, ์๋์ผ๋ก ๋ณํฉ(merge)๋..

git rebase : ํ ๋ธ๋์น์ ๋ณ๊ฒฝ์ฌํญ์ ๋ค๋ฅธ ๋ธ๋์น ์๋ก ์ฌ๋ฐฐ์น์ํค๋ ๋ช ๋ น์ด Rebase์ ์ฅ์ ๋ณํฉ ์ปค๋ฐ์ด ์์ด ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ ์ ๋ฆฌ ๊ฐ๋ฅํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์ํน์ ๊ธฐ๋ฅ์ ๋ํ ์ปค๋ฐ๋ค์ ์ฐ์์ ์ผ๋ก ๋ณผ ์ ์์ด ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์ฉ์ด Rebase ์ฌ์ฉ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ ๊ฐ์ ๋ธ๋์น๋ก ๋๋์ด์ง ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ํฉ์น๊ณ ์ถ์ ์ํฉ์์ ์ฐ๋ฆฌ๋ merge ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ค.$ git chekcout mainSwitched to branch 'main'$ git merge experimentMerge made by the 'recursive' strategy.merge ๋ช ๋ น ์คํ์ ํ์ฌ ๋ธ๋์น(main)๊ฐ๋ฆฌํค๋ ์ปค๋ฐ(c3)๊ฐ mergeํ ๋ธ๋์น(experiment)์ ์กฐ์์ด ์๋๋ฏ๋ก 3-way..

git merge : ์๋ก ๋ค๋ฅธ ๋ธ๋์น์ ๋ณ๊ฒฝ์ฌํญ์ ํ๋๋ก ํตํฉํ๋ ๋ช ๋ น์ดmerge์ ๋ํ ๋ ๊ฐ์ง ์ค์ํ ๊ฐ๋ 1. ํน์ commit์ด ์๋ branch๋ฅผ ๋ณํฉํ๋ ๊ฒmerge ๋ช ๋ น์ด๋ ์ ์ฒด branch์ ์์ ๋ด์ฉ์ ๋ณํฉํ๋ ๊ฒ์ด์ง, ๊ฐ๋ณ commit์ ์ ํํด์ mergeํ๋ ๊ฒ์ด ์๋๋ค.branch๋ ์ผ๋ จ์ commit๋ค์ ํฌ์ธํฐ์ด๋ฉฐ, ๊ทธ ๋ธ๋์น์ ์ต์ ์ํ(tip)๋ฅผ ๋ํํ๋ค. 2. ํญ์ ํ์ฌ HEAD ๋ธ๋์น๋ก ๋ณํฉmerge ๋ช ๋ น์ ์คํํ ๋, ๋ค๋ฅธ branch์ ๋ณ๊ฒฝ์ฌํญ์ด ํ์ฌ ์ฒดํฌ์์(checkout)๋ branch(HEAD๊ฐ ๊ฐ๋ฆฌํค๋ branch)๋ก ๋ณํฉ๋๋ค.์ฆ, ํญ์ ํ์ฌ branch ์ชฝ์ผ๋ก ๋ณํฉ ๋๋ค.ex) feature ๋ธ๋์น๋ฅผ master์ ๋ณํฉ(merge)ํ๋ ค๋ฉด, ๋จผ์ master ๋ธ..