๐์ปดํจํฐ๊ณผํ:CS
ํ๋ก๊ทธ๋จ ๋์์์ 1. ํ๋ก๊ทธ๋จ์ด ์์๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ 2. PC(ํ๋ก๊ทธ๋จ ์นด์ดํฐ)๋ผ๋ ๋ ์ง์คํฐ๊ฐ ํ์ฌ CPU์์ ์ํํ ์ฝ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ฒ ๋จ 3. CPU๋ PC๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ๊ธฐ๊ณ์ด ๋ช
๋ น์ ํ๋์ฉ ์ํ ๊ธฐ๊ณ์ด ๋ช
๋ น ์ข
๋ฅ cpu๋ด์์ ์ํ๋๋ ๋ช
๋ น (์ : ADD๋ช
๋ น) ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ํ์๋ก ํ๋ ๋ช
๋ น (์ : Load๋ช
๋ น, Store๋ช
๋ น) ์
์ถ๋ ฅ์ ๋๋ฐํ๋ ๋ช
๋ น 1๋ฒ, 2๋ฒ์ ๋น๊ต์ ๋น ๋ฅธ๋ช
๋ น (์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ cpu๋ฅผ ๊ฐ์ง๊ณ ์ํ) ๐ CPU๋ฒ์คํธ 3๋ฒ์ ์๋์ ์ผ๋ก ๋๋ฆฐ ๋ช
๋ น ๐ I/O ๋ฒ์คํธ ํ๋ก๊ทธ๋จ๋ค์ CPU๋ฒ์คํธ๊ฐ ๊ธด ๊ฒฝ์ฐ๋ ์๊ณ ์งง์ ๊ฒฝ์ฐ๋ ์๊ณ , I/O๋ฒ์คํธ๊ฐ ๊ธด ๊ฒฝ์ฐ, ์งง์ ๊ฒฝ์ฐ ์๊ณ ๋ค์ํ๋ค. ๋ฐ๋ผ์ CPU ์ค์ผ์ค๋ง์ด ํ์ํจ. CPU์ค์ผ์ค๋ง์ ๋ ๊ฐ์ง ๋ถ๋ฅ ๋น์ ์ ํ..
๐๋ฐ์ดํฐ๋ฒ ์ด์ค:DB
1๊ณผ๋ชฉ ๋ฐ์์์ ์ ๋ฐ๋ฅธ ์ํฐํฐ ๋ถ๋ฅ ๊ธฐ๋ณธ/ํค์ํฐํฐ : ๋ค๋ฅธ ์ํฐํฐ๋ก๋ถํฐ ์ฃผ์๋ณ์๋ฅผ ์์๋ฐ์ง ์๊ณ ์์ ์ ๊ณ ์ ํ ์ฃผ์๋ณ์๋ฅผ ๊ฐ์ง๋ฉฐ ์ฌ์, ๋ถ์, ๊ณ ๊ฐ, ์ํ, ์์ฌ ๋ฑ์ด ์๊ฐ ๋ ์ ์๋ ์ํฐํฐ ์ค์ฌ์ํฐํฐ ํ์์ํฐํฐ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ด๋ ์ ๋ณด์์คํ
์ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ด์ ์ ์
๋ฌด ๋ถ์ ๊ธฐ๋ฒ ํ์ค์ธ๊ณ์ ๋ฐ์ดํฐ์ ๋ํด ์ฝ์๋ ํ๊ธฐ๋ฒ์ ์ํด ํํํ๋ ๊ณผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ถ์/์ค๊ณ์ ๊ณผ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์ ์์ ์ค๋ณต ๋น์ ์ฐ์ฑ : ๋ฐ์ดํฐ์ ์ ์์ ๋ฐ์ดํฐ์ ์ฌ์ฉ ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฆฌ ๋น์ผ๊ด์ฑ ๋ฐ์ดํฐ๋ชจ๋ธ๋ง์ DB๊ตฌ์ถํ๊ธฐ๋ง์ ์ํ ๊ฒ์ด ์๋๋ผ, ๋ชจ๋ธ๋ง ์์ฒด๋ก์ ์
๋ฌด๋ฅผ ์ค๋ช
ํ๊ณ ๋ถ์ํ๋๋ฐ ์ค์ํ ์๋ฏธ๊ฐ ์๋ค ๊ฐ๋
์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง : ์ถ์ํ ์์ค์ด ๋๊ณ ์
๋ฌด์ค์ฌ์ ์ด๊ณ ํฌ๊ด์ ์ธ ์์ค์ ๋ชจ๋ธ๋ง ์งํ. ์ ์ฌ์ ๋ฐ์ดํฐ ๋ชจ๋ธ..
๐๋ฐฑ์๋ : BackEnd
REST : Representational State Transfer ํ๋์ URI๋ ํ๋์ ๊ณ ์ ํ ๋ฆฌ์์ค๋ฅผ ๋ํํ๋๋ก ์ค๊ฒ๋๋ค๋ ๊ฐ๋
์ ์ ์ก๋ฐฉ์์ ๊ฒฐํฉํด์ ์ํ๋ ์์
์ ์ง์ ํ๋ค. URI + GET / POST / PUT / DELETE HTTP URI๋ฅผ ํตํด ์ ์ดํ ์์์ ๋ช
์ํ๊ณ , HTTP Method(GET, POST, PUT, DELETE)๋ฅผ ํตํด ํด๋น ์์(Resource)์ ์ ์ดํ๋ ๋ช
๋ น์ ๋ด๋ฆฌ๋ ๋ฐฉ์์ ์ํคํ
์ฒ ๊ธฐ์กด Service : ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ ํ ๊ฐ๊ณต๋ data๋ฅผ ์ด์ฉํด ํน์ ํ๋ซํผ์ ์ ํฉํ ํํ์ View๋ก ๋ง๋ค์ด์ ๋ฐํ. REST Service : data์ฒ๋ฆฌ๋ง ํ๋ค๊ฑฐ๋, ์ฒ๋ผ ํ ๋ฐํ๋ data๊ฐ ์๋ค๋ฉด JSON์ด๋ XMLํ์์ผ๋ก ์ ๋ฌ. View์ ๋ํด์๋ ์ ๊ฒฝ์ธ ํ์๊ฐ..
๐์ฝ๋ฉํ
์คํธ:CodingTest
๊ฐ์ ์ค์ฌ ์๊ณ ๋ฆฌ์ฆ ๐ ๊ทธ๋ํ๋ค์ ์์ง ๋ฆฌ์คํธ๋ก ๊ตฌํ ์์ ๊ฐ์ ์ด ํฌํจ๋ ์ํฉ์์์ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฌธ์ ์ ์ฌ์ฉ. ์์ ๊ฐ์ ์ ์ํ์ ๊ฐ์งํ ์ ์์. ๋งค๋ฒ ๋ชจ๋ ๊ฐ์ ์ ์ ๋ถ ํ์ธ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฆฌ์คํธ์์ ์
๋ฐ์ดํธ ๋ฐ๋ณต ํ์๋ V - 1 ์๊ฐ๋ณต์ก๋ : O(VE), ๋ค์ต์คํธ ์๊ณ ๋ฆฌ์ฆ์ ๋นํด ๋๋ฆฌ๋ค ์์๊ฐ์ ์ด ์์ด๋ ์ํ์ด ๋ฐ์ํ์ง ์๋๋ค๋ฉด ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ ์ ์๋ค. (์์๊ฐ์ ์ ์ํ์ด ๋ฐ์ํ๋ฉด ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์์ ๋ฌดํ์ธ ๋
ธ๋๊ฐ ๋ฐ์ํ๊ฒ ๋จ) ๋์์๋ฆฌ 1. ์ถ๋ฐ ๋
ธ๋๋ฅผ ์ค์ 2. ์ต๋จ ๊ฑฐ๋ฆฌ ํ
์ด๋ธ์ ์ด๊ธฐํ 3. ๋ค์์ ๊ณผ์ ์ N-1 ๋ฒ ๋ฐ๋ณต 3-1. ์ ์ฒด ๊ฐ์ E๊ฐ๋ฅผ ํ๋์ฉ ํ์ธ 3-2. ๊ฐ ๊ฐ์ ์ ๊ฑฐ์ณ ๋ค๋ฅธ ๋
ธ๋๋ก ๊ฐ๋ ๋น์ฉ์ ๊ณ์ฐํ์ฌ ์ต๋จ๊ฑฐ๋ฆฌ ํ
์ด๋ธ์ ๊ฐฑ์ 4. ๋ง์ฝ ์์ ๊ฐ์ ์ํ์ด ๋ฐ์ํ๋์ง ์ฒดํฌํ๊ณ ์ถ๋ค๋ฉด 3..
๐๋ฐ์ดํฐ๋ฒ ์ด์ค:DB
Union์ ํ
์ด๋ธ์ ์์ง ๋ฐฉํฅ์ผ๋ก ํฉ์น๋ค ์ด๋ union์ ์ค๋ณต row๋ฅผ ์ ๊ฑฐํ์ง๋ง, union all ์ ์ค๋ณต row๋ฅผ ์ ๊ฑฐํ์ง ์๋๋ค. Join์ ํ
์ด๋ธ์ ์ํ ๋ฐฉํฅ์ผ๋ก ํฉ์น๋ค ํ๋ก๊ทธ๋๋จธ์ค sql ๋ฌธ์ ์ค " ์คํ๋ผ์ธ/์จ๋ผ์ธ ํ๋งค ๋ฐ์ดํฐ ํตํฉํ๊ธฐ" ๋ฌธ์ ์์ Union์ ์ฌ์ฉํ๋ค. ONLINE_SALE ํ
์ด๋ธ OFFLINSE_SALE ํ
์ด๋ธ ONLINE_SALE ํ
์ด๋ธ๊ณผ OFFLINE_SALE ํ
์ด๋ธ์์ 2022๋
3์์ ์คํ๋ผ์ธ/์จ๋ผ์ธ ์ํ ํ๋งค ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋ฌธ์ ์๋ค. (OFFLINE_SALE ํ
์ด๋ธ์ USER_ID๊ฐ์ NULL ๋ก ํ์ํ๋ผ๋ ์กฐ๊ฑด์ด ์์๋ค.) ๋ ํ
์ด๋ธ์ ๊ฒฐ๊ณผ๋ฅผ ํฉ์น๊ธฐ ์ํด UNION์, ์คํ๋ผ์ธ ํ
์ด๋ธ์ USER_ID๋ฅผ NULL ๋ก ๋ํ๋ด๊ธฐ ์ํด NULL as user_id..
๐๋ฐฑ์๋ : BackEnd
MyBatis Java Object์ SQL๋ฌธ ์ฌ์ด์ ์๋ Mapping ๊ธฐ๋ฅ์ ์ง์ํ๋ ORM Framework MyBatis๋ SQL์ ๋ณ๋์ ํ์ผ(XML ํน์ ์)๋ก ๋ถ๋ํด์ ๊ด๋ฆฌ Object ์ SQL ์ฌ์ด์ parameter mapping ์์
์ ์๋์ผ๋ก ํด ์ค. ์๋ฐ์ SQL์ ์ฐ๊ฒฐ๋ง ํด์ค๋ค! JAVA - MyBatis - MySQL myBatis → Java์ myBatis → spring ๋ฐ๋ก ์์ JDBC Driver Loading (Driver Class) DB์ฐ๊ฒฐ(Connection๊ฐ์ฒด ์์ฑ) (url, id, pwd) SQL ์คํ ์ค๋น SQL๋ฌธ์ฅ Statement์์ฑ SQL ์คํ DB ์ ์ข
๋ฃ ๐ก ์ ๋ฐฉ์์์ ํ๋์ ๋ถ๋ถ์ MyBatis๊ฐ ์์์ ํด์ฃผ๊ณ , ์ด๋ก์ ๋ถ๋ถ๋ง xml์ ์ค์ ..
๐๋ฐ์ดํฐ๋ฒ ์ด์ค:DB
๐ก์๊ฒ๋ ์ : GROUP BY์ HAVING ์กฐ๊ฑด์ COUNT(*) ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ค์๊ณผ ๊ฐ์ ํ
์ด๋ธ์์, ๋์ผํ ํ์(USER_ID)์ด ๋์ผํ ์ํ(PRODUCT_ID)์ ์ฌ๊ตฌ๋งคํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌํ๋ ค๋ฉด SELECT USER_ID, PRODUCT_ID, COUNT(*) FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*) >= 2; ์ ๊ฐ์ด ํ๋ฉด ๋๋ค. ์คํ๊ฒฐ๊ณผ