Spring
๐ฌ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋๋ ์ฃผ๋ก 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ค. โพ GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ /?username=hello&age=20 ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ๋ค. ๋ฉ์์ง ๋ฐ๋ ์์ด, url์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌํ๋ค. ๊ฒ์, ํํฐ, ํ์ด์ง์์ ๋ง์ด ์ฌ์ฉ โพ POST - HTML Form content-type : application/x-www-form-urlencoded ํ์ ๋ฉ์์ง ๋ฐ๋์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ์ ๋ฌ (username=hello&age=20) ํ์๊ฐ์
, ์ํ์ฃผ๋ฌธ์์ ๋ง์ด ์ฌ์ฉ โพ HTTP message body์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ด์์ ์์ฒญ HTTP API์์ ์ฃผ๋ก ์ฌ์ฉ (JSON, XML, TEXT) ๋ฐ์ดํฐ ํ์์ ์ฃผ๋ก JSON์ฌ์ฉ POST, PUT, ..
Spring
์คํ๋ง ์
๋ฌธ ๊ฐ์, ๊ธฐ์ด๊ฐ์๋ฅผ ๋ค์์ ๋ ์ข
์ข
๋ณด์๋ RequestMapping์ ๋ํ ๊ธฐ์ด๋ฅผ ๋ค์ ๋ค์ก๋ค! ์์ง ๊ธฐ์ด๋ง ๋ฐฐ์ด ๊ฑฐ๋ผ ์ค๋ฌด์์ ์ด๋์ ์ฌ์ฉํ ์ง ๊ฐ๋ฐ์ ์ค์ง ์์ง๋ง ์ธ์ ๊ฐ ๋ฅ์๋ฅ๋ํ๊ฒ ๋ค๋ฃจ๊ณ ์ถ๋ค๐ RequestMapping(์์ฒญ ๋งคํ) ์ด๋? ์์ฒญ์ด ์์ ๋ ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ํธ์ถ์ด ๋์ด์ผ ํ๋์ง ์๋ ค์ฃผ๋ ์งํ ๊ฐ์ ๊ฒ์ด๋ค. ๐ ์์ @RequestMapping(value = "/hello-basic") ์ด๋ ๊ฒ ๋งคํ์ ํ๋ฉด localhost:8080/hello-basic์ผ๋ก url์ ์
๋ ฅํ์ ๊ฒฝ์ฐ์ ์ด๊ฒ์ ํด๋นํ๋ ๋ฉ์๋๊ฐ ์คํ๋๋ค. @RequestMapping์ ๋ค์ค์์ฒญ๋ ๊ฐ๋ฅํ๋ค! ๋ค์ค ์์ฒญ์ ํ๋ ค๋ฉด ๋ฐฐ์ด๋ก ๋ฌถ์ด์ผ ํ๋ค. @RequestMapping(value = {"/hello", "/..
Spring
์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋์ ์ผ๋ก ์ถ๊ฐ๋๋ค. ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ข
๋ฅ๊ฐ ๋ง์๋ฐ ๊ทธ๊ฒ์ ํตํฉ์ ์ผ๋ก ์ธํฐํ์ด์ค๋ก ์ ๊ณตํ๋ ๊ฒ์ด SLF4J ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ค๋ฌด์์๋ Logback์ ๋๋ถ๋ถ ์ฌ์ฉํ๋ค. ๐ฌ ๋ก๊ทธ ์ ์ธ ๋ฐฉ๋ฒ // 1๋ฒ ๋ฐฉ๋ฒ private Logger log = LoggerFactory.getLogger(getClass()); // 2๋ฒ ๋ฐฉ๋ฒ private static final Logger log = LoggerFactory.getLogger(Xxx.class); //3๋ฒ ๋ฐฉ๋ฒ ์ ๋
ธํ
์ด์
์ฌ์ฉ(lombok์ด ์ ๊ณต) @Slf4j โ ์ฒซ๋ฒ์งธ ๋ ๋ฒ์งธ ๋ก๊ทธ ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ก๊ทธ๋ slf4j๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ๐ ๋ก๊ทธ ์ฌ์ฉ ๋ฐฉ๋ฒ @Slf4j // lombok์ด ์ ๊ณตํ๋ ๊ธฐ..
Algorithm/BOJ
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋? "๋งค ์ ํ์์ ์ง๊ธ ์ด ์๊ฐ ๋น์ฅ ์ต์ ์ธ ๋ต์ ์ ํํ์ฌ ์ ํฉํ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ์"๋ผ๋ ๋ชจํ ๋ฅผ ๊ฐ์ง๋ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ด๋ค. ๊ฑฐ์ค๋ฆ๋์ ๋๋ ค์ฃผ๋ ๋ฌธ์ ๋ฅผ ์๊ฐํด๋ณด์. ์ฐ๋ฆฌ๋ ๋๋ถ๋ถ ๊ฑฐ์ค๋ฆ๋์ ๋๋ ค์ค๋ ํฐ ๋จ์์ ๋์ ๋ถํฐ ๊ฑฐ์ฌ๋ฌ์ค๋ค. ex ) 500์์ ๋๋ ค์ค์ผ ํ๋ค๋ฉด, 100์์ 5๊ฐ ์ฃผ๋ ๊ฒ๋ณด๋ค 500์์ 1๊ฐ ์ฃผ๋ ํธ์ด ๋ ํธํ๋ค. ํ์ง๋ง ๋ง์ฝ์ ๋์ ์ ๋จ์๊ฐ 100, 250, 300 ์ด๋ผ๋ฉด, (300 * 1) + (100 * 2) ๋ก 3๊ฐ๋ก ๊ฑฐ์ฌ๋ฌ์ฃผ๋ ๊ฒ๋ณด๋ค๋ 250 * 2 ์ ๋ฐฉ๋ฒ์ผ๋ก 2๊ฐ๋ก ๊ฑฐ์ฌ๋ฌ์ฃผ๋ ๊ฒ์ด ๋ ์ต์ ์ ๋ฐฉ๋ฒ์ด๋ค. ๋ฐ๋ผ์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํญ์ ์ต์ ์ ํด๋ฅผ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ ์๋๋ค. ํ์ง๋ง ๋ง์ฝ ์ด ์ํฉ์์ ํฐ ๋จ์์ ์๋ถํฐ ๊ฑฐ์ฌ๋ฌ์ค์ผํ๋ ์กฐ๊ฑด์ด ์กด์ฌํ ๋ ๊ทธ๋ฆฌ๋ ์..
Books
์ฌํผ์์ค๋ ์ ๋ง ์ ๋ง ์์ ์ ์ฝ์๋ ์ฑ
์ด๋ค!! ๊ธฐ์ต์ด ์ ์ ๋๋ ค๊ณ ํ์ง๋ง ์ง์ง ์ฌ๋ฐ๊ฒ ์ฝ์๋ ์ฑ
์ด์ด์ ๋ธ๋ก๊ทธ์ ๊ธฐ๋กํด๋๊ณ ์ถ์๋ค!! (โ
´•โ•`)*โฒ๏พ*๏ฝก ๐ ์ฑ
์๊ฐ ์ฌํผ์์ค๋ ์ ๋ฐ ํ๋ผ๋ฆฌ๊ฐ ์ด ์ฑ
์ด๋ค. ์ธ๊ฐ์ ์ญ์ฌ์ ๋ฏธ๋์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ์ฐ์ฌ์๋ค. ์ด ์ฑ
์ ์ด 4๋ถ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ทธ ์์๋ ์ฌ๋ฌ ์ด์ผ๊ธฐ๊ฐ ๋ค์ด์๋ค. [ ๋ชฉ์ฐจ ] ์ 1๋ถ ์ธ์งํ๋ช
๋ณ๋ก ์ค์์น ์์ ๋๋ฌผ ์ง์์ ๋๋ฌด ์๋ด๊ณผ ์ด๋ธ๊ฐ ๋ณด๋ธ ์ด๋ ๋ ๋ํ์ ์ 2๋ถ ๋์
ํ๋ช
์ญ์ฌ์ ์ต๋์ ์ฌ๊ธฐ ํผ๋ผ๋ฏธ๋ ๊ฑด์คํ๊ธฐ ๋ฉ๋ชจ๋ฆฌ ๊ณผ๋ถํ ์ญ์ฌ์ ์ ์๋ ์๋ค ์ 3๋ถ ์ธ๋ฅ์ ํตํฉ ์ญ์ฌ์ ํ์ด ๋์ ํฅ๊ธฐ ์ ๊ตญ์ ๋น์ ์ข
๊ต์ ๋ฒ์น ์ฑ๊ณต์ ๋น๊ฒฐ ์ 4๋ถ ๊ณผํํ๋ช
๋ฌด์ง์ ๋ฐ๊ฒฌ ๊ณผํ๊ณผ ์ ๊ตญ์ ๊ฒฐํผ ์๋ณธ์ฃผ์ ๊ต๋ฆฌ ์ฐ์
์ ๋ฐํด ๋์๋ ํ๋ช
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ํ๋ณตํ๊ฒ ์ด์๋ค..
Algorithm/BOJ
1931๋ฒ: ํ์์ค ๋ฐฐ์ (1,4), (5,7), (8,11), (12,14) ๋ฅผ ์ด์ฉํ ์ ์๋ค. www.acmicpc.net ๋ฌธ์ ํ ๊ฐ์ ํ์์ค์ด ์๋๋ฐ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ N๊ฐ์ ํ์์ ๋ํ์ฌ ํ์์ค ์ฌ์ฉํ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ค. ๊ฐ ํ์ I์ ๋ํด ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ ธ ์๊ณ , ๊ฐ ํ์๊ฐ ๊ฒน์น์ง ์๊ฒ ํ๋ฉด์ ํ์์ค์ ์ฌ์ฉํ ์ ์๋ ํ์์ ์ต๋ ๊ฐ์๋ฅผ ์ฐพ์๋ณด์. ๋จ, ํ์๋ ํ๋ฒ ์์ํ๋ฉด ์ค๊ฐ์ ์ค๋จ๋ ์ ์์ผ๋ฉฐ ํ ํ์๊ฐ ๋๋๋ ๊ฒ๊ณผ ๋์์ ๋ค์ ํ์๊ฐ ์์๋ ์ ์๋ค. ํ์์ ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ๊ฐ์ ์๋ ์๋ค. ์ด ๊ฒฝ์ฐ์๋ ์์ํ์๋ง์ ๋๋๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ฉด ๋๋ค. ์
๋ ฅ ์ฒซ์งธ ์ค์ ํ์์ ์ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N+1 ์ค๊น์ง ๊ฐ ํ์์ ์ ๋ณด..
Algorithm/BOJ
11000๋ฒ: ๊ฐ์์ค ๋ฐฐ์ ์ฒซ ๋ฒ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200,000) ์ดํ N๊ฐ์ ์ค์ Si, Ti๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Si < Ti ≤ 109) www.acmicpc.net ๋ฌธ์ ์๊ฐ์ ์ฒญ์ ๋ง์คํฐ ๊น์ข
ํ ์ ์๋์๊ฒ ์๋ก์ด ๊ณผ์ ๊ฐ ์ฃผ์ด์ก๋ค. ๊น์ข
ํ ์ ์๋ํํ
๋ Si์ ์์ํด์ Ti์ ๋๋๋ N๊ฐ์ ์์
์ด ์ฃผ์ด์ง๋๋ฐ, ์ต์์ ๊ฐ์์ค์ ์ฌ์ฉํด์ ๋ชจ๋ ์์
์ ๊ฐ๋ฅํ๊ฒ ํด์ผ ํ๋ค. ์ฐธ๊ณ ๋ก, ์์
์ด ๋๋ ์งํ์ ๋ค์ ์์
์ ์์ํ ์ ์๋ค. (์ฆ, Ti ≤ Sj ์ผ ๊ฒฝ์ฐ i ์์
๊ณผ j ์์
์ ๊ฐ์ด ๋ค์ ์ ์๋ค.) ์๊ฐ์ ์ฒญ ๋์ถฉํ ๊ฒ ์ฐ๋ฆฌ๋ฉด, ์ ์๋์ ๋์๋๋ฆฌ์! ์
๋ ฅ ์ฒซ ๋ฒ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200,000) ์ดํ N๊ฐ์ ์ค์ Si, Ti๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Si < ..
๊ธฐํ
ํฐ์คํ ๋ฆฌ์ ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๋ฉด์ ํญ์ ๊ฑฐ์ฌ๋ ธ๋ ๊ฑฐ!!! ๋ฐ๋ก ์ฝ๋ ๋ธ๋ก์ผ๋ก ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๊ณ ๋๋ฉด ์ฌ์ง์ฒ๋ผ ์ฝ๋ ์ฃผ๋ณ์ ํ
๋๋ฆฌ๊ฐ ์๊ธด๋ค๋ ๊ฒ... ์ฝ๋๊ฐ ํ๋ ๊ฐ๋ฉด ๊ด์ฐฎ์๋ฐ ์ฌ๋ฌ ๊ฐ ์์ฑํ๋๊น ์ง์ง ์ ๊ฑฐ์ฌ๋ฆด ์๊ฐ ์์ด์ ์์ ๋ณด๊ธฐ๋ก ๊ฒฐ์ !! html์ด๋ css๋ฅผ ์ํ ์ค์ ๋ชจ๋ฅด์ง๋ง ๋ถ๋ช
margin์ด๋ padding๊ฐ ๋๋ฌธ์ ์ ๋ด ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ htmlํธ์ง๊ธฐ์ ๋ค์ด๊ฐ๋๋ฐ ์๋ฌด๋ฆฌ ์ฐพ์๋ ์ฝ๋์ ๊ด๋ จ๋ ๋ด์ฉ์ ์๋ณด์๋ค....(๋ด๊ฐ ์ ๋ชปํด์ ๊ทธ๋ฌ๋ ๊ฑด ๋ง๋คใ
ใ
) ๊ตฌ๊ธ์ ๊ฒ์๋ ํด๋ณด๊ณ ๋ฐ๋ผ๋ ํด๋ดค์ง๋ง ์ ํ ์ ์ฉ์ด ๋์ง ์์๊ณ (๊ฒ์ํด๋ ์ ์ ๋์ด ๐ฅ ๋ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋ณ๋ก ์๋,,,) ๊ฒจ์ฐ๊ฒจ์ฐ ์ด๊ฒ์ ๊ฒ ํ๋ค๊ฐ ์กฐ์ค๊ธ..? ํด๊ฒฐํ๋ค! ๋ธ๋ก๊ทธ ์ค์ ์์ ๊พธ๋ฏธ๊ธฐ ๐ ์คํจ ํธ์ง์ ๋ค์ด๊ฐ๋ค. html ํธ์ง ๐ css ํธ์ง์ ..
Spring
spring mvc๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์์ํ๋ค! mvc๋ฅผ ๋ฐฐ์ฐ๊ธฐ ์ ์ ์๋ธ๋ฆฟ๋ถํฐ ๊ฐ๋จํ ์ดํด๋ณด๋๋ฐ ์ ์ดํดํ ๊ฑด์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค...! ์ด๋ฒ์๋ ์๋ธ๋ฆฟ์ ์ด์ฉํด์ ์ดํด๋ณธ ์์ฒญ๊ณผ ์๋ต ๋ฉ์์ง๋ฅผ ํ์ธํด๋ณด๊ณ ์๋ ์๋ฆฌ๋ฅผ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ๐ ์คํ๋ง ๋ถํธ์์ ์๋ธ๋ฆฟ์ ์ง์ ๋ฑ๋กํด์ ์ฐ๋ ค๋ฉด ์ด๋
ธํ
์ด์
์ ํ๋ ์ถ๊ฐํด์ผ ํ๋ค. @ServletComponentScan //์๋ธ๋ฆฟ ์๋ ๋ฑ๋ก [ ์๋ธ๋ฆฟ ๋ฑ๋กํ๊ธฐ ] @WebServlet(name="", urlPatterns = "/") name : ์๋ธ๋ฆฟ ์ด๋ฆ urlPatterns : URL ๋งคํ [ HttpServletRequest ] ๋จผ์ http ์์ฒญ ๋ฉ์์ง๋ฅผ ์ดํด๋ณด์๋ฉด. POST /save HTTP/1.1 Host: localhost:8080 Content-Type: app..
Network
๐ HTTP ํค๋์ ์ฉ๋ HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด ํ์์ ์์์ ํค๋๋ฅผ ์ถ๊ฐํ ์ ์๋ค. Ex) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์๋ฒ ์ ๋ณด ๋ฑ๋ฑ์ด ํฌํจ๋์ด์๋ค. ๐ HTTP์ ํํ ํ์ field-name":" OWS field-value OWS (OWS๋ ๋์ด์ฐ๊ธฐ ํ์ฉ์ด๋ผ๋ ๋ป) ๐ ๊ณผ๊ฑฐ์ HTTP ํค๋ (RFC2616) General ํค๋ : ๋ฉ์์ง ์ ์ฒด์ ์ ์ฉ๋๋ ์ ๋ณด ( ex) Connectiond : close ) Request ํค๋ : ์์ฒญ ์ ๋ณด ( ex) User-Agent: Mozilla/5.0 (Macintosh;... ) Response ํค๋ : ์๋ต ์ ๋ณด ( ex) Server: Apache ) Entity ํค๋ : ์ํฐํฐ ๋ฐ๋ ์ ๋ณด ( ex) C..