์ ์ฒด ๊ธ199 [0x01] ๊ธฐ์ด ์ฝ๋ ์์ฑ ์๋ น 1 ๊ณต๊ฐ๋ณต์ก๋ 512 MB = 1.2์ต๊ฐ int ( 1 int = 4B) ⇒ ์ด๋ ๊ฒ ํ์ด๋๋ฉด ํ๋ฆฐ ๊ฒ! ์ ์ ์๋ฃํ char (1 byte) : 2^7 - 1(127) short (2 byte) : 2^15 - 1(32767) int (4 byte) : 2^31 - 1 = 2.1 * 10^9 (21์ต) long long (8 byte) : 2^63 - 1 = 9.2 * 10^18 ์ค์ ์๋ฃํ 2์ ์์ ์น์ ์ด์ฉํด ์ด์ง์๋ก ๋ํ๋ผ ์ ์์ float (4byte) double (8byte) ์ค์์ ์ ์ฅ/์ฐ์ฐ ๊ณผ์ ์์ ๋ฐ๋์ ์ค์ฐจ๊ฐ ๋ฐ์ํ ์๋ฐ์ ์๋คfraction field์ ์ฌ์ด์ฆ๊ฐ ์ ํํ๊ธฐ ๋๋ฌธ์ ๋ฌดํ์์๋ฅผ ์๋ฒฝํ๊ฒ ํํํ ์ ์๊ณ ์๋ฃํ์ ๋ฐ๋ผ ๋ฐ์ฌ๋ฆผํด์ผ ํจ float : ์ ํจ์ซ์ 6์๋ฆฌ double .. 2023. 6. 20. 6. RESTful API ์ค๊ณ ๊ฐ์ด๋ Richardson Maturity Model A way to grade your API according to the constraints of REST Level 0 expose soap web services in rest style https://server/getPosts Level 1 expose resources with proper url note : improper use of http methods → ๋ชจ๋ ์์ฒญ์ GET, POST๋ก ๋ฐ๊ฑฐ๋ ์๋ฌ/200์ผ๋ก๋ง ๋ฐํํ๋ ํํ https://server/accounts/10 Level 2 level1 + HTTP methods(GET, POST, PUT, DELETE ๊ตฌ๋ถ) Level 3 level2 + HATEOAS DATA + NEXT .. 2023. 6. 20. 5. Java Persistence API ์ฌ์ฉ JPA ๊ฐ์ JPA Java Persistence API ์๋ฐ ORM ๊ธฐ์ ์ ๋ํ API ํ์ค ๋ช ์ธ(Object Relationship Mapping) ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ํ ์ธํฐํ์ด์ค → ๋ฉ์๋ ์ ์ธ๋ฌธ๋ง ์กด์ฌ. ์ฐ๋ฆฌ๋ ๊ตฌํ์ฒด๋ฅผ ๊ฐ์ง๊ณ ๊ฐ๋ฐ์ ํด์ผ ํ๋ค ⇒ Hibernate EntityManager๋ฅผ ํตํด CRUD ์ฒ๋ฆฌ Hibernate JPA์ ๊ตฌํ์ฒด, ์ธํฐํ์ด์ค๋ฅผ ์ง์ ๊ตฌํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ⇒ JPA์ EntityManager๋ฅผ ๊ตฌํ ๊ฐ์ฒด ๊ด๊ณ ๋งคํ ํ๋ ์์ํฌ ์์ฐ์ฑ, ์ ์ง๋ณด์, ๋น์ข ์์ฑ Spring Data JPA Spring Module JPA๋ฅผ ์ถ์ํํ Repository ์ธํฐํ์ด์ค ์ ๊ณต ์ธํฐํ์ด์ค ์ ์ธ ๋ง์ผ๋ก๋ Spring์์ ์ ๊ณตํ๋ CRUD ๊ธฐ๋ฅ ์ฌ์ฉ.. 2023. 6. 20. 4. Spring Boot API ์ฌ์ฉ REST API Level 3๋ฅผ ์ํ HATEOAS ์ค์ HATEOAS Hypermedia As the Engine Of Application State ํ์ฌ ๋ฆฌ์์ค์ ์ฐ๊ด๋(ํธ์ถ ๊ฐ๋ฅํ) ์์ ์ํ ์ ๋ณด๋ฅผ ์ ๊ณต REST API ์ค๊ณ ๋จ๊ณ The Swamp of POX : ํน์ ํ ์น ํ๋กํ ์ฝ์ ํตํด์ ์ปดํจํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ์์์ ์๋ฏธ ์์ด ์ ๋ฌ Resources HTTP Verbs : http ์ํ ๋ฉ์๋๋ฅผ ์ด์ฉ Hypermedia controls : ๋ฆฌ์์ค์ ์ ๋ณด๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฆฌ์์ค์ ํจ๊ป ์ ๋ฌ org.springframework.boot spring-boot-starter-hateoas IntelliJ์์ ๊ฒ์ shift key 2๋ฒ ๋๋ฅด๊ธฐ → pom.xml ์ ํ ๋ฒ์ ๋ณ HATEOAS.. 2023. 6. 20. 3. RESTful Service ๊ธฐ๋ฅ ํ์ฅ Validation API @Valid annotation ์ฌ์ฉ **pom.xml์ dependency ์ถ๊ฐ** org.hibernate.validator hibernate-validator 6.0.7.Final dto์ ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ @Data @AllArgsConstructor public class User { private Integer id; @Size(min=2, message = "Name์ 2๊ธ์ ์ด์ ์ ๋ ฅํด์ฃผ์ธ์.") private String name; private String password; @Past // ๊ณผ๊ฑฐ ๋ ์ง๋ง ๊ฐ๋ฅํ ์ ์ฝ ์กฐ๊ฑด private Date joinDate; } controller์ ์ถ๊ฐ JDK์ ํฌํจ๋ API์ hibernate library์ ํฌํจ๋ vali.. 2023. 6. 20. 2. User Service API ๊ตฌํ User ๋๋ฉ์ธ ํด๋์ค ์์ฑ ๋๋ฉ์ธ ํน์ ์ ๋ฌธ ๋ถ์ผ์์ ์ฌ์ฉ๋๋ ์ ๋ฌธ ์ง์ ์คํ ๋ ์คํ์ ํด๋น ํด๋์ค๊ฐ ์ด๋ ์ฉ๋๋ก ์ฌ์ฉ๋ ๊ฒ์ธ์ง ๋ํ๋ด๋ ๊ฒ → ์์กด์ฑ ์ฃผ์ ์ ๋์๋๋ค. ex) @RestController, @Service POST @RequestBody ๋ฅผ ์ ์ธํด ํ์ฌ variable์ด requestbody ํ์์ผ๋ก ๋ค์ด์จ๋ค๋ ๊ฒ์ ์๋ฆผ HTTP Status Code 2XX → OK 4XX → Client 5XX → Server @ServletUriComponentsBuilder๋ฅผ ์ด์ฉํด ํธ์ถ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ์ ํ status code๋ฅผ ๋ฐํํจ @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user){ User save.. 2023. 6. 20. 1. Spring Boot๋ก ๊ฐ๋ฐํ๋ RESTful Service ํ๋ก์ ํธ ์์ฑ dependency ⇒ pom.xml JPA Spring web → embedded tomcat ์คํ ๊ฐ๋ฅ REST API ์ค๊ณ User → Posts ๊ตฌ์กฐ ํ์ธ application.properties → yml ํ์ผ๋ก! ์คํ๋ง ๋ถํธ ํ๊ฒฝ์ค์ ์ง์ pom.xml ์ ์ฒด ํ๋ก์ ํธ์ ํ์ํ maven ์ค์ Controller RESTController ํด๋์ค๋ก ์๋ํจ(์ผ๋ฐ MVC Controller์๋ ๋ค๋ฆ) @RestController Mapping // GET @RequestMapping(method=RequestMethod.GET, path="/hello-world") @GetMapping(path = "/hello-world")/ Bean ์คํ๋ง์์ ์ ์ธ๋์ด ๊ด๋ฆฌ๋๋ ์ธ์คํด์ค ⇒ ์์กด์ฑ.. 2023. 6. 20. 0. Web Service & Web Application ์น ์๋น์ค ๋คํธ์ํฌ ์์์ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ์ปดํจํฐ๋ค ๊ฐ์ ์ํธ์์ฉํ๊ธฐ ์ํ ์ํํธ์จ์ด ์์คํ SOAP VS REST 1) SOAP(Simple object access protocol) XML ๊ธฐ๋ฐ envelope - header - body ⇒ overhead ์ฌํจ 2) REST(REpresentational State Transfer) Resource์ representation์ ์ํ (์์์) ์ํ ์ ๋ฌ HTTP Method๋ฅผ ํตํด Resource๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ํคํ ์ณ RESTful : REST API๋ฅผ ์ ๊ณตํ๋ ์น ์๋น์ค REST HTTP HTTP Methods : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ ๋ฌํ๊ฒ ๋๋ ๋ชฉ์ ์ด๋ ์ข ๋ฅ๋ฅผ ์๋ ค์ฃผ๋ ์๋จ HTTP Status Codes : ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ ๋ณด.. 2023. 6. 20. [ALGO] BFS dist ๋ฐฐ์ด ํ์ฉ ๋ฌธ์ ๋ฌธ์ ์๊พธ ๊ฑฐ๋ฆฌ ๊ด๋ จ bfs ๋์ฌ ๋๋ง๋ค ์ฒ๋ฆฌ๋ฅผ ์ด์ํ๊ฒ ํจ ์ค๋์ ์ฝ์ง ๋น๊ต๋ฌธ์์๋ถํฐ dist ๊ฐ์ ๋ฐ์ง๊ณ ์์์์ if (dist[nx][ny] >= dist[x][y] + 1) continue; ํด๊ฒฐ ๊ทธ๋ฅ 0 ์ด์์ธ์ง๋ง ์ฒดํฌํด์ค๋ค (๋ฌผ๋ก ! ์ ๋ ฅ์์ dist ์ฒ๋ฆฌ๋ฅผ ๋ฉ์ฉกํ๊ฒ ํด์ผ๊ฒ ์ฃ ???) if (dist[nx][ny] >= 0) continue; ๊ด๋ จ ๋ฌธ์ https://www.acmicpc.net/problem/4179 4179๋ฒ: ๋ถ! ์ ๋ ฅ์ ์ฒซ์งธ ์ค์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ ์ ์ R๊ณผ C๊ฐ ์ฃผ์ด์ง๋ค. ๋จ, 1 ≤ R, C ≤ 1000 ์ด๋ค. R์ ๋ฏธ๋ก ํ์ ๊ฐ์, C๋ ์ด์ ๊ฐ์์ด๋ค. ๋ค์ ์ ๋ ฅ์ผ๋ก R์ค๋์ ๊ฐ๊ฐ์ ๋ฏธ๋ก ํ์ด ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ๋ฌธ์ www.acmicpc.net https://ww.. 2023. 6. 20. ์ด์ 1 2 3 4 5 6 7 ยทยทยท 23 ๋ค์