https://leetcode.com/problems/valid-parentheses/์๋๋ฉด์์๋ ๋น ๋ฅด์ง๋ง, HashMap์ ์ฌ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฐจ์งํ๋ค.๋ฉ๋ชจ๋ฆฌ๋ ์ ๊ฒ ์ฌ์ฉํ์ง๋ง, ์๋๊ฐ ์ด์ ๋ณด๋ค ์ด์ง ๋๋ ค์ก๋ค.์๋๋ 1์ ๊ณผ ๊ฐ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ๋ HashMa
https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=javaReturns the value to which the specified key is mapped, or defaultVa
https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=javaHashMap์ ์ด์ฉํ๋ฉด, key๊ฐ์ด ์ค๋ณต๋์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํ์๋ค.numsi๋ฅผ ํค ๊ฐ์ผ๋ก ํ์ฌ HashMap์ ๋ฃ๊ณ
๋๊ธฐ์ ํจ๊ป ์์ ํ๋ก์ ํธ๋ฅผ ์์ํ๋๋ฐ (๋ด๊ฐ ๋ณผ ๋) ์์ฒญ๋ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค.API ๋ฅผ ๋ง๋ค์๋๋ฐ, READ ๋ถ๋ถ์์ ๋๋ฌด ํ ๋ฒ์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ ๊ฐ์๋ค.์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๋ฆฌ์คํธ๋ฅผ ๋ฟ๋ ค์ฃผ๋ ค๊ณ ํ๋๋ฐ ์ ๋ณ์ ํ๋ํ๋๋ฅผ ์ ๋ ฅํ๊ธฐ๊ฐ
์ค๋๋ง์ C++์ ์ฌ์ฉํ๋ฉด์ ์ฝ๋ฉํ ์คํธ ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ 2์ฐจ์ ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ๊ฐ ํผ๋์ด ๋๊ธฐ ์์ํ๋ค.์์ ์ C๊ณต๋ถ๋ฅผ ํ ๋, ํฌ์ธํฐ ์ฃผ์๋ฅผ ํ๋ํ๋ ๋ค ์ฐ์ด๊ฐ๋ณด๋ฉด์ ์ด๋ป๊ฒ๋ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ๊ธฐ์ต์ด ๋๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ์ค๋๋ง์ ์ก์๋ณด๋ ค๋๊น ์ ๋ง ํ๋๋ ๋ชจ๋ฅด๊ฒ ๋๋ผ. (1
๊ธด ์ถ์ ์ฐํด๋์ ๋ฌด์์ ํด๋ณผ๊น ๊ณ ๋ฏผํ๋ ์ค,์ฐ์ฐํ๋ "ํญํด ํ๋ฌ์ค ์ฝ์ก๋"๋ผ๋ ๊ฒ์๊ธ์ ๋ณด๊ฒ ๋์๋ค.https://hanghaeplus-coyukdae.oopy.io/๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ค์ํ ์ข ๋ณต์ด ์กด์ฌํ๊ณ , ์ฒ์์ ํ ํธ๋ฆฌ์ค์ ๋์ ํด๋ณด๋ ค๊ณ ํ๋ค๊ฐ ์ฐ์๋ ๊ฐ์ผํ๊ณ
์ถ์ฒ : ์ธ์์ ๋๋ด๋ ๋คํธ์ํฌ ํต์ฌ์ด๋ก - ๊ธฐ์ด (์ธํ๋ฐ)
UITableView๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ฒ์์ Style์ Inset Grouped ๋ฅผ ์ค์ ๋ชจ์์ ์ก์ผ๋ ค๊ณ ํ๋ค. Inset Grouped ๋ฅผ ์ฌ์ฉํ๋ฉด, ์๋ ์ฌ์ง์ฒ๋ผ ์์์ ์น์ ์ corner round๋ฅผ ๋ฃ์ด์ฃผ๊ณ , padding ๋ ์์์ ์ก์์ค๋ค.๊ทธ๋ฐ๋ฐ ํ์ฌ์ ์ถ๊ทผ
์์ฒ๋ผ header ๋ผ๋ UIView ์์ card ๋ผ๋ UIView ๋ฅผ ๋ฃ๊ณ , setGradient() ๋ผ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ gradient๋ฅผ ์ฃผ๋ ค๊ณ ํ๋๋ฐ, ์๋ฌด๋ฆฌ ํด๋ ์๋จนํ๋๋ผ...๋์ฒด ์๊ทธ๋ด๊น ํ๊ณ , card.layout.size.height ๋ card.la
@ConfigurationProperties ์ฌ์ฉ ์ค ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค.Spring Boot Configuration Annotation Processor not configured์ธํฐ๋ท์ ๊ฒ์ํด๋ณด๋ build.gradle์ ์๋์ ๊ฐ์ด ์ถ๊ฐ๋ฅผ ํ๋ฉด ๋๋ค๊ณ ํ๋ค.
์ค๋์ Elastic Beanstalk ์ ์๋ฒ๋ฅผ ๋ฐฐํฌํด๋ณด๋ ค๊ณ ํ๋ค.EC2์๋ ๋ช ๋ฒ ๋ฐฐํฌํด๋ดค์ง๋ง Elastic Beanstalk์ ๋ฐฐํฌํด๋ณด๋ ๊ฑด ์ฒ์์ด๋ค!์ผ๋จ ์ ์ผ ์ฒ์ aws ์ Beanstalk์ ๋ค์ด๊ฐ๋ค.๊ฐ๋จํ๊ฒ '์์ํ๊ธฐ'ํด๋ฆญ!ํ๊ฒฝ ์ค์ ์ ํด์ค๋ค.ํ์ผ์ ์ ๋ก๋
API ๋ช ์์๋ฅผ ํ ๋ฒ ์์ฑํด๋ณด๋ ค๊ณ ํ๋๋ฐ, ์๋ ์ Swagger๋ฅผ ๋ฑ ํ ๋ฒ ์ผ๋ ๊ธฐ์ต์ด ์์ด์ Swagger๋ก ๊ฐํธํ๊ฒ! ์์์ ์์ฑ๋๊ฒ! ํด๋ณด๋ ค๊ณ ํ๋ค.Spring boot 3 ๋ฏธ๋ง์์๋ springfox-swagger2 ์ springfox-swagger-ui
์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํด๋ณด๋ ค๊ณ ํ๋ค.์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค.๋ด์ฉ์ 1๊ธ์ ์ด์ 1000๊ธ์ ์ดํ์ฌ์ผ ํ๋ค.์ ๋ชฉ์ ๊ณต๋ฐฑ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ์๋ ์๋ค.๊ฒ์๊ธ์ id(PK, primary key)๋ก ํน์ ๊ฒ์๊ธ์ ์กฐํํ์ ๋, ์กด์ฌํ์ง ์๋ ๊ฒ์๊ธ์ผ ๊ฒฝ์ฐ ์๋ฌ ๋ฉ์์ง๋ก ์๋ตํ๊ธฐ๊ฒ์๊ธ์
์ด๋ฒ์ Pageable์ ์์ ์ ์ข ํด๋ณด์๋ค.์๋๋ SpringDoc์ ํตํด์ API ๋ช ์์ ํ์ด์ง๋ฅผ ๋ง๋ค๋ คํ๋๋ฐ, ๋ง๋ค๊ณ ๋ณด๋ ํ๋ผ๋ฏธํฐ์ order๊ฐ ์๋๊ฒ ์๋๊ฐ! (์ ๋ฒ์ Pageable์์ order๋ฅผ ์ฐพ๋ค๊ฐ ํฌ๊ธฐํ์๋ค.) ๊ทธ๋์ ๋ค์ TRY ํด๋ณด์๋๋ฐ, ์ญ์๋
Optional >Optional ํด๋์ค๋ Integer๋ Double ํด๋์ค์ฒ๋ผ 'T'ํ์ ์ ๊ฐ์ฒด๋ฅผ ํฌ์ฅํด ์ฃผ๋ ๋ํผ ํด๋์ค(Wrapper class)์ ๋๋ค. >๋ฐ๋ผ์ Optional ์ธ์คํด์ค๋ ๋ชจ๋ ํ์ ์ ์ฐธ์กฐ ๋ณ์๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. >์ถ์ฒ : ์ฝ๋ฉ์ ์์,
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๊ฒ์, ์ ๋ ฌ, ๊ฐฏ์์ ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํด ๋ณด๋ ค๊ณ ํ๋ค.๊ฐฏ์์ ํ์ ๊ทธ๋ฅ limit๋ก ๋ณด๋๊ฒ ์๋๋ผ Pagination๋๋์ผ๋ก ํด๋ณด๋ ค๊ณ ํ๋ค.Spring Data JPA๊ฐ ์ ๊ณตํ๋ PageNation์ด ์๋๋ฐ, Pageable๊ณผ PageRequest์ด๋ค.Pa
ORM(Object-Relational Mapping)์ ๋์ฒด ๋ฌด์์ผ๊น?์ด๊ฒ์ ์๋ฐ์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์ดํ, ๋๋น)๋ฅผ ์ฐ๊ฒฐํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค.์๋ฅผ ๋ค์ด, ์๋ฐ์ ๊ฐ์ฒด๋ก Board๋ผ๋ ๊ฐ์ฒด๊ฐ ์๊ณ title, content ํ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด๊ฒ์ ๋๋น
ํน์ ํ ๊ฒ์ํ์ ์กฐํํ๋ API๋ฅผ ๋ง๋ค์ด ๋ณด๋ ค๊ณ ํ๋ค.๋จผ์ Service ์ฝ๋๋ถํฐ ์์ฑํด๋ณด์.findById ๋ CrudRepository ์ ์๋ ๋ฉ์๋์ด๋ค.id ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Board๋ฅผ ํ์ํ๋ค.์๋น์ค ์ฝ๋๋ฅผ ์์ฑํ์ผ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํด๋ณด์.์ด๋ฌ๋ฉด ๋ฒ์จ ๊ฒ์๊ธ ํ
1. ์ํฐํฐ ๊ตฌ์ฑํ๊ธฐ ๊ฐ์ฅ ๋จผ์ ์ํฐํฐ๋ฅผ ๊ตฌ์ฑํด๋ณด๊ฒ ๋ค. | ์ปฌ๋ผ๋ช | ์๋ฃํ | null ํ์ฉ | ํค | ์ค๋ช | |-|-|-|-|- | id | int | X | PK | ๊ฒ์๊ธ์ ์์ด๋ | | title | varchar(100) | X | | ๊ฒ์๊ธ์ ์ ๋ชฉ|
๊ธ์ ๋ชฉ, ๋ด์ฉ ์ ๋๋ง ์๋ ๊ฐ๋จํ ๊ฒ์ํ API๋ฅผ ๋ง๋ค์ด ๋ณด๋ ค๊ณ ํ๋ค.์คํ๋ง์ ๋ง์ง์ง ์ด์ธ 1๋ ์ด ๋ค ๋์ด ์คํ๋ง์ด ํ๋๋ ๊ธฐ์ต๋์ง ์์ ๋ณต์ต ์ฐจ์์์ ์ด์ฌํ ์คํฐ๋ ์ค์ด๋ค! ๐์ผ๋จ ๊ฐ์ฅ ๋จผ์ Rest API๋ ๋ฌด์์ผ๊น?Rest API๋ URL์ ์ค๊ณ ๋ฐฉ์์ ์๋ฏธํ๋ค