์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- stream
- ๋ฌธ์์ด
- ๋ฐฑ์ค1874
- ๋ฐฑ์ค11053 #ํ์ด์ฌ #python
- ๋ฐฑ์ค9012
- ์
- ๋ฐฐ์ด
- ๋
- ํ๋ฐฉ์ฟผ๋ฆฌ
- ์คํ
- ๋ฐฑ์ค9093
- StringBuffer
- ๋ฐ์ดํฐํ์
- ์ฟ ํกDB
- ์ฐ์ฐ์
- StringBuilder
- ์ฐ
- ์คํธ๋ฆผ
- ์๋ฐ
- ์คํ์์ด
- ์ฟ ํกERD
- java
- Today
- Total
๋ชฉ๋ก๊ฐ๋ฐ ์์ (13)
Tech Log ๐ ๏ธ
0. ์คํฐ๋ ์งํ ํ์๋ค๊ณผ ์ผ์ฃผ์ผ์ 1~2๋ฒ ์ ๋ ๋ ผ์ํ๊ณ ์ถ์ ๋ด์ฉ๊ณผ ์๊ฐ์ ์ ๋ฆฌํ๋ ์๊ฐ์ ๊ฐ์ก๋ค. ์คํฐ๋๋ 1์๊ฐ์ ๋๊ธฐ์ง ์์ผ๋ ค๊ณ ํ์์ผ๋ฉฐ ๊ฐ์ ์ค๋นํ ๋ด์ฉ๋ค์ ๊ฐ์ง๊ณ ์๊ธฐ๋ฅผ ๋๋๋ ๋ฐฉ์์ผ๋ก ํ์๋ค. 1. ์ผํธ๋ฐฑ ๊ตฌํ ํจํด์ ์ฝ๊ธฐ ์ ์ ๊ทธ๋์ ์ฝ๋ฉ์ ํ๋ฉด์ ์ถํ ๋ณ๊ฒฝ์ฌํญ์ ๊ณ ๋ คํ๊ฑฐ๋ ๋ณํ ๋น์ฉ์ ๊ณ ๋ คํ๋ฉด์ ์ง ์ ์ด ํฌ๊ฒ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ๋ฉ์ ํ๋ค๊ฐ ์ ๋งคํ ์ํฉ์ด ์ค๋ฉด ๊ทธ๋๊ทธ๋ ๋ดํค๋ ๊ฒ์ผ๋ก ์ ํ์ ํ์์ผ๋ฉฐ ์ด๋ ์ฝ๋์ ์ผ๊ด์ฑ์ ์งํค๊ธฐ ํ๋ค์๊ณ ๊ณง ์ ์ง๋ณด์ ๋น์ฉ์ด ๋์ด๋๊ธฐ ์ผ์ค์๋ค. ๊ทธ๋ผ์๋ ํ์์ ์๋ฐ๋ ๊ฐ์ฒด ์งํฅ์ ๋ํ ์ง์์ ์ค์์ ํ์๋ฟ ์ฝ๋ฉ์ ํ๋ค๊ฐ ํ์ํ ํจํด์ ๋ํด ๊ณ ๋ฏผํด๋ณด๊ฑฐ๋ ๋ฐ๋ก ์ฐพ์์ ๊ณต๋ถํ ์๊ฐ์ ์์๋ ๊ฒ ๊ฐ๋ค. ๋๋ง์นจ ํ์์ ๊ฐ์ฒด์งํฅ ์คํฐ๋๋ฅผ ๋๋ด๊ณ ๋ค์ ์ฑ ์ ๊ณ ๋ฅด๋ ์ค, ..
์ ๊ทธ๋ฆฌ๊ฑฐํธ์ ํธ๋์ญ์ ์ ๊ทธ๋ฆฌ๊ฑฐํธ์ ๋ํด ์ฌ์ฉํ ์ ์๋ ๋ํ์ ์ธ ํธ๋์ญ์ ์ฒ๋ฆฌ ๋ฐฉ์ 1. ์ ์ ์ ๊ธ 2. ๋น์ ์ ์ ๊ธ ์ ์ ์ ๊ธ ์ ๊ทธ๋ฆฌ๊ฑฐํธ ์ฌ์ฉ์ด ๋๋ ๋๊น์ง ๋ค๋ฅธ ์ค๋ ๋๊ฐ ํค๋ฉ ์ ๊ทธ๋ฆฌ๊ฑฐํธ๋ฅผ ์์ ํ์ง ๋ชปํ๋ค. ex) agg1์ด ์์ ํ๋ ๋์ agg2๋ ์ ๊ธ์ด ํด์ ๋ ๋๊น์ง ๋ธ๋กํน๋๋ค. ์ ์ ์ ๊ธ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ์ถฉ๋ ๋ฌธ์ ๋ฅผ ํด์ํ ์ ์๋ค. ํ์ง๋ง ๊ต์ฐฉ ์ํ์ ๋น ์ง ์ ์๋ค. ๊ต์ฐฉ ์ํ๋? ์ค๋ ๋๊ฐ ๊ฐ์ ๋ค๋ฅธ ์ ๊ทธ๋ฆฌ๊ฑฐํธ๋ฅผ ์ ์ ํ๋ค๊ฐ ์๋ก์ ์ ๊ทธ๋ฆฌ๊ฑฐํธ์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ ๊ต์ฐฉ ์ํ์ ๋ฐ์ง๋ฉด ์์คํ ์ ๋ง๋น๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋ง์ ์๋ก ๋ฐ์ํ๊ธฐ ์ฝ๋ค. ์ต๋ ๋๊ธฐ ์๊ฐ์ ์ค์ ํด์ค์ผ๋ก์จ ๊ต์ฐฉ ์ํ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๋น์ ์ ์ ๊ธ ๋ณ๊ฒฝํ ๋ฐ์ดํฐ๋ฅผ ์ค์ DBMS์ ๋ฐ์ํ๋ ์์ ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ์ธ -> ๋ฒ์ ๊ฐ..
๋๋ฉ์ธ ์๋น์ค ์ฌ๋ฌ ์ ๊ทธ๋ฆฌ๊ฑฐํธ๊ฐ ํ์ํ๊ณ ์ฑ ์์ด ์ ๋งคํ ๋ ๋๋ฉ์ธ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ค. ๋๋ฉ์ธ ์๋น๋ ๋ค์ ์ํฉ์ ์ด์ฉ๋๋ค. 1. ๊ณ์ฐ๋ก์ง 2. ์ธ๋ถ ์์คํ ์ฐ๋์ด ํ์ํ ๋ก์ง ๋๋ฉ์ธ ์๋น์ค๋ ์ํ ์์ด ๋ก์ง๋ง ๊ตฌํํ๋ค. ๋๋ฉ์ธ ์๋น์ค๋ฅผ ์ ๊ทธ๋ฆฌ๊ฑฐํธ ๊ฐ์ฒด์ ์ฃผ์ ํ๋ฉด ์๋๋ค! ์ธ๋ถ ์์คํ ์ฐ๋๊ณผ ๋๋ฉ์ธ ์๋น์ค public interface API { ... } ๋๋ฉ์ธ ๋ก์ง ๊ด์ ์์ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํด์ผํ๋ค. ์์ฉ ์๋น์ค๋ ์ด ๋๋ฉ์ธ ์๋น์ค๋ฅผ ์ด์ฉํด์ ๊ธฐ๋ฅ์ ์ํํ๋ค. ๋๋ฉ์ธ ์๋น์ค์ ๋ก์ง์ด ๊ณ ์ ๋์ด ์์ง ์์ผ๋ฉด , ๋๋ฉ์ธ ์๋น์ค ์์ฒด๋ฅผ ์ธํฐํ์ด์ค๋ก ๊ตฌํํ ์ ์๋ค. ๋๋ฉ์ธ ์๋น์ค์ ๊ตฌํ์ด ํน์ ๊ธฐ์ ์ ์์กดํ๊ฑฐ๋ ์ธ๋ถ API๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ถ์ํํด์ผํ๋ค.
ํํ ์์ญ๊ณผ ์์ฉ ์์ญ ์์ฉ ์์ญ๊ณผ ํํ ์์ญ์ ์ฌ์ฉ์์ ๋๋ฉ์ธ์ ์ฐ๊ฒฐํด์ฃผ๋ ๋งค๊ฐ์ฒด ์ญํ ์ด๋ค. ํํ ์์ญ์ ์ฌ์ฉ์์ ์์ฒญ์ ํด์ํ๊ณ ๊ทธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์์ฉ ์๋น์ค๋ฅผ ์คํํ๋ค. ์์ฉ ์์ญ์ ์ค์ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๋ ์์ญ์ ์๋ก ์๊ตฌํ๋ ํ๋ผ๋ฏธํฐ์ ํ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์์ฒญ์ ๋ณํํด์ผํ๋ค. ์ฌ์ฉ์๊ฐ ์ํธ์์ฉ์ ํํ ์์ญ์ด ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ์์ฉ ์๋น์ค๋ ํํ ์์ญ์ ์์กดํ์ง ์์์ผํ๋ค. ์์ฉ ์๋น์ค์ ์ญํ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฆฌํฌ์งํฐ๋ฆฌ์์ ๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค. public Result func(Req req){ // ๋ฆฌํฌ์งํฐ๋ฆฌ์์ ์ ๊ทธ๋ฆฌ๊ฑฐํธ๋ฅผ ๊ตฌํจ Agg agg = AggRepository.finById(req.getId()); // ์ ๊ทธ๊ฑฐํธ์ ๋๋ฉ์ธ ๊ธฐ๋ฅ ์คํ ad..
์ ๊ทธ๋ฆฌ๊ฑฐํธ ๊ฐ์ฒด ๋ชจ๋ธ์ด ๋ณต์กํด์ง๋ฉด ๊ฐ๋ณ ๊ตฌ์ฑ์์ ์์ฃผ๋ก ๋ชจ๋ธ์ ์ดํดํ๊ฒ ๋๊ณ ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ ํฐ ์์ค์์ ๋๋ฉ์ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ค์์ง๋ค. -> ์์ ์์ค์์ ๋ชจ๋ธ์ ์กฐ๋งํด์ผํ๋๋ฐ , ์ ๊ทธ๋ฆฌ๊ฑฐํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ ๊ทธ๋ฆฌ๋ฆฌ๊ฑฐํธ๋ ๋ณต์กํ ๋๋ฉ์ธ์ ๋จ์ํ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ค๋ค. ์ ๊ทธ๋ฆฌ๊ฑฐํธ์ ์ํ ๊ฐ์ฒด๋ ์ ์ฌํ๊ฑฐ๋ ๋์ผํ ๋ผ์ดํ ์ฌ์ดํด์ ๊ฐ์ง๋ฉฐ ๋ค๋ฅธ ์ ๊ทธ๋ฆฌ์ปคํธ์ ์ํ ๊ฐ์ฒด๋ ๋ค๋ฅธ ์ ๊ทธ๋ฆฌ์ปคํธ์ ์ํ์ง ์๋๋ค. ์ ๊ทธ๋ฆฌ๊ฑฐํธ ๋ฃจํธ ์ ๊ทธ๋ฆฌ๊ฑฐํธ ์ ์ฒด๋ฅผ ๊ด๋ฆฌํ ์ฃผ์ฒด๊ฐ ํ์ํ๋ฐ, ์ด ์ฑ ์์ ์ง๋ ๊ฒ์ด ๋ฃจํธ ์ํฐํฐ์ด๋ค. ex) Order -> (OrderLine) , (Orderer) , (Address) ํต์ฌ ์ญํ ์ ์ ๊ทธ๋ฆฌ๊ฑฐํธ์ ์ผ๊ด์ฑ์ด ๊นจ์ง์ง ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ๋ฃจํธ๋ ์ ๊ทธ๋ฆฌ๊ฑฐํธ๊ฐ ์ ๊ณตํด์ผํ ๋๋ฉ์ธ์ ๊ตฌํํ๋ค. ์ ๊ทธ..
๋ค ๊ฐ์ ์์ญ ํํ ์์ญ HTTP ์์ฒญ์ ํ์๋ก ํ๋ ํ์์ผ๋ก ๋ณํํด์ ์์ฉ ์์ญ์ ์ ๋ฌํ๊ณ ๋ค์ ์๋ต์ HTTP ์๋ต์ผ๋ก ๋ณํํ์ฌ ์ ์ก ex) mvc ํ๋ ์์ํฌ ์์ฉ ์์ญ(์๋น์ค ๊ณ์ธต) ๋๋ฉ์ธ ์์ญ์ ๋ชจ๋ธ์ ์ฌ์ฉํด์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ๋ก์ง์ ์ง์ ์ํํ๊ธฐ ๋ณด๋จ ๋๋ฉ์ธ ๋ชจ๋ธ์ ๋ก์ง ์ํ์ ์ํ ๋๋ฉ์ธ ์์ญ ๋๋ฉ์ธ ๋ชจ๋ธ์ ๊ตฌํํ๊ณ ํต์ฌ ๋ก์ง์ ๊ตฌํ public cancelOrder(String orderId) { Order order = findOrderById(orderId); // ๋๋ฉ์ธ ๋ชจ๋ธ์ ์์ ... } ์ธํ๋ผ ์คํธ๋ญ์ณ ์์ญ ๋ ผ๋ฆฌ์ ๊ฐ๋ ๋ณด๋ค๋ ๊ตฌํ ๊ธฐ์ ์ ๋ค๋ฃฌ๋ค. ex) DB ,SMTP , ์นดํ์นด ๊ณ์ธต ๊ตฌ์กฐ ์ํคํ ์ฒ ์ํคํ ์ฒ๋ ๋ณดํต ํํ -> ์์ฉ -> ๋๋ฉ์ธ -> ์ธํ๋ผ์ค..
์๊ตฌ ์ฌํญ ์๊ตฌ์ฌํญ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ์ง ๋ชปํ๋ฉด ์๋ฑํ ๊ธฐ๋ฅ์ ๋ง๋ค๊ฒ ๋๋ค. (Garbage in , Garbage out) -> ์ฝ๋ฉ์ ์์ ์๊ตฌ์ฌํญ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค ! ๋๋ฉ์ธ ๋ชจ๋ธ ํน์ ๋๋ฉ์ธ์ ๊ฐ๋ ์ ์ผ๋ก ํํํ ๊ฒ์ ๋๋ฉ์ธ ๋ชจ๋ธ์ด๋ผ๊ณ ํ๋ค. ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๊ด๊ณ์๋ค์ด ๋์ผํ ๋ชจ์ต์ผ๋ก ์ดํดํ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ๊ฐ์ง ์ข ๋ฅ๋ก ๋ชจ๋ธ๋ง ํ ์ ์๋ค. ex) ๊ฐ์ฒด , ์ํ ๋ค์ด์ด๊ทธ๋จ, ๊ทธ๋ํ ๋๋ฉ์ธ ๋ชจ๋ธ ํจํด ๋๋ฉ์ธ ๊ณ์ธต์ ๋๋ฉ์ธ์ ํต์ฌ ๊ท์น์ ๊ตฌํํ๋ค. ์๋์ ์ฝ๋๋ ์ฃผ๋ฌธ ์ํ์ ๋ฐ๋ผ ๋ฐฐ์ก์ง๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ ๋ํ ์ฝ๋๋ฅผ ๋๋ฉ์ธ ๋ชจ๋ธ ํจํด์ผ๋ก ๊ตฌํ public class Order { private OrderState state; private ShippingInfo inf..
์ปฌ๋ ์ ์ปฌ๋ ์ ์ธํฐํ์ด์ค๋ ์ฌ๋ฌ ๊ฐ์ฒด์ ๋ฌถ์์ ๋ํด ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ์ ๋ฌํ๋ค. ์ฃผ๋ก ์ฑ๋ฅ์ ๊ด๋ จ๋ ํ๋ก๊ทธ๋๋จธ์ ์๋๋ฅผ ์ ๋ฌํ๋ค. ์ปฌ๋ ์ ์ด ํํํ๋ 3๊ฐ์ง ๊ฐ๋ 1. ํฌ๊ธฐ - ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ์์ฑ ์ ๊ณ ์ ๋์ง๋ง, ๋๋ถ๋ถ์ ์ปฌ๋ ์ ์ ์ค๊ฐ์ ํฌ๊ธฐ๋ฅผ ์์ ํ ์ ์๋ค. 2. ์์ ๊ฐ ์์ - ์์์ ์์์ ๋ํ ์ ๋ณด๊ฐ ํ์ํ๋ค๋ฉด ์์๋ฅผ ๋ณด์ ํ๋ ์ปฌ๋ ์ ์ ์ฌ์ฉํด์ผํ๋ค. 3. ๋ ์์ฑ - ์ผ๋ถ ์ฐ์ฐ์ ๊ฒฝ์ฐ ์ด๋ค ์์๊ฐ ์ปฌ๋ ์ ์ ์ํด์๋ ์ง ํน์ ๋ช๋ฒ ๋ํ๋ฌ๋์ง ์ค์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ธํฐํ์ด์ค ๋ฐฐ์ด ๊ฐ์ฅ ๋จ์ํ ์ธํฐํ์ด์ค์ด๋ค. ์ ์ฐ์ฑ ๋ฌธ์ ๋ฅผ ์ ์ธํ๊ณ ์ฑ๋ฅ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. Iterable ์์๋ฅผ ์ฃผ๊ฐํ๋ ๊ฒ์ ๋ง์ ์ ์์ง๋ง ์์๊ฐ ์ง์์ง ์ํ์ด ์๋ค. Collection Iterable์ ์์ํ๋ฉฐ ์ฌ๋ฌ ๋ฉ์..
๋ฉ์์ง ๋ฉ์์ง ์์ ์๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์ผ๋ฉด, ๋ฐ์ ์์ ์ํ๋ ๋ฐ๋์ง ์์ง๋ง ์์ ์์ ์ํ๋ ๋ฐ๋ ์ ์๋ค. ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์์ ๋ ๋น์ฅ ์ค์ํ์ง ์์ ์ธ๋ถ ๊ตฌํ์ด ์กด์ฌํ๋ค ๋ผ๋ ์๋ฏธ๋ฅผ ๋ดํฌํ ์ ์๋ค. (์บก์ํ) function() { input(); process(); output(); } ์ ํ ๋ฉ์์ง ์ ํ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช ์์ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉ์ ํฌ๊ฒ ์ค์ผ ์ ์๋ค. ํ์ง๋ง ๊ณผ๋ํ ์ ํ๋ฉ์์ง์ ์ฌ์ฉ์ ๊ฐ๋ ์ฑ์ ์ ํดํ ์ ์๋ค. public void display(Subject subject, Brush brush) { brush.display(subject); } ๋๋ธ ๋์คํจ์น 2๊ฐ์ ์ ํ ๋ฉ์์ง๋ฅผ ์ง๋ ฌ๋ก ์ฐ๊ฒฐํ ์ ์๋ค. https://www.youtube.com/watch?v=s-tXAHub6v..
๊ฐ์ฒด๋ ์ธ๋ถ์ ๋๋ฌ๋๋ ํ์์ ํ์๋ฅผ ์ง์ํ๊ธฐ ์ํ ์ํ๋ฅผ ๋ฌถ์ด์ฃผ๋ ํธ๋ฆฌํ ๋จ์๋ค. ์ํ - ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์ ์ ์ฌํ ์ํ๋ฅผ ๋ฌถ์ด์ ๊ด๋ฆฌํ๊ณ ๊ฐ ์ํ๋ ๋ณ๋๋ก ๊ด๋ฆฌํด์ผํ๋ค. ๋ ๊ฐ์ ์ํ๊ฐ ์ ์ฌํ ์ง ์๋ ค๋ฉด 1. ๋ ๊ฐ์ ์ํ๊ฐ ๋์ผํ ์ฐ์ฐ ์์์ ์ฌ์ฉ๋๋๊ฐ? 2. ๋์ผํ ์์ ์ ์์ฑ๋๊ณ ์๋ฉธ๋๋๊ฐ? ๋ฅผ ํ์ธํ๋ฉด ๋๋ค. ์ง์ ์ ๊ทผ - ์ง์ ์ ๊ทผ์ ์ฅ์ ์ ๋ช ํ์ฑ์ด๋ค. x=10 // ๋งค์ฐ๋งค์ฐ ๋ช ํํ๋ค. ํ์ง๋ง ์ฝ๋๋ฅผ ํตํด ์์ธํ ๋ด์ฉ์ ์๋ ค์ฃผ๊ธฐ๋ ์ด๋ ต๋ค. ์๋ฅผ ๋ค์ด doorRegister = 1; // ์ง๊ด์ ์ด์ง ์์ door.open(); // ๋งค์ฐ ์ง๊ด์ ์ ๋ฐ๋ผ์ ์ง์ ์ ๊ทผ์ด ๋ง๋ค๋ฉด ์ํํ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ฐฉํดํ ์ ์๋ค. ๊ฐ์ ์ ๊ทผ - ๋ช ํ์ฑ๊ณผ ์ง์ ์ฑ์ ํฌ์ํด์ ์ ์ฐ์ฑ์ ์ป์ ์ ์๋ค. ..