์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- ์ฐ๋ถํฌdb
- leetcode
- ํญํด99
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ๋น์ฃผ๊ธฐ์ ํธ
- IEEE 802
- tcp ์ธ๊ทธ๋จผํธ
- ์ค๋ ๋
- ์ค๋ฅ์ ์ด
- ์ฝ๋ฉํ ์คํธ์ค๋น
- git merge
- ์ค๋ฅ๊ฒ์ถ
- ๋ฐ์ดํฐ ์ ์ก
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๊ฐ๋ฐ์์ทจ์
- well known ํฌํธ
- ์ค๋ธ์
- ์์๋ฒํธ
- mariadb
- ํ ํฐ ๋ฒ์ค
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ํ๋ ์ ๊ตฌ์กฐ
- ์ฃผ๊ธฐ์ ํธ
- i-type
- tcp ํ๋กํ ์ฝ
- til
- reducible
- xv6
- ํ๋ก์ด๋์์
- 99ํด๋ฝ
- Today
- Total
๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (160)
Unfazedโ๏ธ๐ฏ
Java์ String Pool์ JVM์ด ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํน๋ณํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ์ด๋ฅผ ํตํด ๋์ผํ ๋ฌธ์์ด ๊ฐ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.๊ธฐ๋ณธ ๊ฐ๋ String Pool(๋๋ String Constant Pool, String Intern Pool)์ JVM์ ํ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์กด์ฌํ๋ ํน๋ณํ ๊ณต๊ฐ์ผ๋ก, ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด ์ ์ฅ๋๋ค. String Pool์ ๋ฌธ์์ด์ ๋ถ๋ณ์ฑ(immutability)๊ณผ String interning์ด๋ผ๋ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค. 2. ๋ฌธ์์ด ์์ฑ ๋ฐฉ์๊ณผ String Pool1. ๋ฌธ์์ด ๋ฆฌํฐ๋ด ์์ฑString s1 = "hello";String s2 = "hello"; JVM์ str1์ ์์ฑํ ๋ "..

spring.datasource.url=jdbc:mysql://my-db:3306/mydbspring.datasource.username=rootspring.datasource.password=pwd123spring.datasource.driver-class-name=cohttp://m.mysql.cj.jdbc.Driverspring.jpa.hibernate.ddl-auto=update DB ์ฐ๊ฒฐ ๋ฌธ์์ด์์ ํํ ๋ณผ ์ ์๋ ํจํด ์ค ํ๋๋ localhost:3306๊ณผ ๊ฐ์ ํํ๋ค. ๊ทธ๋ฌ๋ Docker ํ๊ฒฝ์ผ๋ก ์ ํํ ๋ ์ด ํจํด์ ๊ธฐ๋์ ๊ฐ์ด ๋์ํ์ง ์์ผ๋ฉฐ, localhost ๋์ ํด๋น ์๋น์ค ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํ๋ค. ์ด ๊ธ์์ ๊ทธ ์ด์ ๋ฅผ Docker์ ๋คํธ์ํน ์๋ฆฌ๋ฅผ ํตํด ์์๋ณด๋ ค ํ๋ค. ๋ก์ปฌ ๊ฐ๋ฐ ..

Docker ๊ธฐ๋ฐ PostgreSQL ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ค DataGrip์์ ์ฐ๊ฒฐ ํ ์คํธ ์ "[28000] FATAL: role 'postgres' does not exist" ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ก Docker ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ์คํํ๋ค.PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Docker ์ปจํ ์ด๋๋ก ์คํํ๋, ๋ฐ์ดํฐ๋ ํธ์คํธ ์์คํ ์ ๋ณผ๋ฅจ์ ์ ์ฅํ๊ณ , ํธ์คํธ์ 5432 ํฌํธ๋ฅผ ํตํด ์ปจํ ์ด๋์ ๋ด 5432 ํฌํธ์ ์ ๊ทผํ ์ ์๊ฒ ํ๋ค. ์ํ๋ ์ ์์ธ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ๋ค์์ผ๋ก Datagrip์์ Test Connection์ ์๋ํด ๋ณด์๋ค. ์๋์ ๊ฐ์ด [28000] FATAL: role 'postgres' does not exist ์๋ฌ๊ฐ..
Docker ์ด๋ฏธ์ง์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ข ์์ฑ, ์ค์ ํ์ผ ๋ฑ์ ํฌํจํ ํ์ผ ์์คํ ์ ์ค๋ ์ท๋จ์ํ ์ ์ ํ์ผ ๋ชจ์๋ฟ๋ง ์๋๋ผ, Dockerfile์ ๊ธฐ๋ฐ์ผ๋ก ๋น๋๋ ๋ถ๋ณ(immutable)์ธ ์ฒญ์ฌ์ง์ฝ๊ธฐ ์ ์ฉ(read-only)์ธ ์ฌ๋ฌ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ ๋ ์ด์ด๋ ์ด์ ๋ ์ด์ด ์์ ์์ด๋ ํํ๋ก ์ด๋ฏธ์ง์ ๋ณ๊ฒฝ ๋ด์ญ์ ์ถ์ ํ ์ ์์Docker ์ปจํ ์ด๋์ด๋ฏธ์ง์ ์คํ ๊ฐ๋ฅํ ์ธ์คํด์ค์ด๋ฏธ์ง ์์ ์ฝ๊ธฐ-์ฐ๊ธฐ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ์ฌ ์์ฑ๋ฆฌ๋ ์ค ๋ค์์คํ์ด์ค์ cgroups ๊ฐ์ ๊ธฐ์ ์ ํ์ฉํด ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ ๋ฐ ์์ ํ ๋น์ ๊ด๋ฆฌ์ปจํ ์ด๋์ ์๋ช ์ฃผ๊ธฐ๋ ํด๋น ์ปจํ ์ด๋ ๋ด์์ ์คํ๋๋ ์ฃผ ํ๋ก์ธ์ค(PID 1)์ ์ํ์ ๋ฐ๋ผ ๊ฒฐ์ ๋จ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ ๋ด์์ ์คํ๋๋ ์ค์ ์ํํธ์จ์ด ํ๋ก๊ทธ๋จMySQL, Nginx..
๊ธฐ๋ณธ ๋ช ๋ น์ดdocker run - '์คํํ๋ค'์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์์์: docker run nginx - Nginx ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋๋ฅผ ์คํdocker pull - '๋น๊ธฐ๋ค/๊ฐ์ ธ์ค๋ค'Docker Hub ๋๋ ๋ค๋ฅธ ๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง๋ฅผ ๋ก์ปฌ ์์คํ ์ผ๋ก ๋ค์ด๋ก๋์: docker pull ubuntu - Ubuntu ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋docker push - '๋ฐ๋ค/์ฌ๋ฆฌ๋ค'๋ก์ปฌ์์ ๋ง๋ ์ด๋ฏธ์ง๋ฅผ Docker Hub๋ ๋ค๋ฅธ ๋ ์ง์คํธ๋ฆฌ์ ์ ๋ก๋์: docker push myusername/myapp - ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ๋ ์ง์คํธ๋ฆฌ์ ์ ๋ก๋docker build - '๊ตฌ์ถํ๋ค'Dockerfile์ ์ฌ์ฉํ์ฌ ์ Docker ์ด๋ฏธ์ง๋ฅผ ์์ฑ์: docker build -t myapp . - ํ์ฌ ๋๋ ..

AWS ํ๋ฆฌ ํฐ์ด ๋ง๋ฃ ํ ๋์ฒAWS ํ๋ฆฌํฐ์ด๊ฐ ๋ง๋ฃ๋์ด ์ ๊ณ์ ์ ๋ง๋ค๋ ค๋ฉด ์ ์ด๋ฉ์ผ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง, ๊ธฐ์กด์ ์ฌ์ฉํ๋ Gmail ๊ณ์ ์ผ๋ก ๊ณ์ ๊ด๋ฆฌํ๊ณ ์ถ์๋ค. ๊ทธ๋ฌ๋ ์ค Gmail์ 'Plus Addressing' ๊ธฐ๋ฅ์ ์๊ฒ ๋์๊ณ , ์ด๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค!ํ๋ฌ์ค ์ฃผ์(plus addressing)๋?๊ธฐ์กด ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด์๋ ์๋ก์ด AWS ๊ณ์ ์ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.์ฌ์ฉ๋ฒ: ํ์ฌ ์ด๋ฉ์ผ ์ฃผ์์ "@" ๊ธฐํธ ์์ "+"์ ์ถ๊ฐ ๋ฌธ์๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๋ค.์์: ์๋ ์ด๋ฉ์ผ์ด test@gmail.com์ด๋ผ๋ฉด, test+aws1@gmail.com์ผ๋ก ์ AWS ๊ณ์ ์ ์์ฑํ ์ ์๋ค.์ ๋ฐฉ๋ฒ์ ํตํด ๋์ผ gmail ๊ณ์ ์ ์ถ์๋ฌธ์๋ฅผ ๋ถ์ฌ ๊ฐ์ ํ์ฌ ๋์ผ ๋ฉ์ผ ๊ณ์ ์ผ๋ก ํ๋ฆฌ..

Java์์ ์ฐธ์กฐ๋ณ์๋ ๋จ์ํ ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ์ ์ฅํ๊ณ ์๋ค๊ณ ์๊ฐํ๊ณ ์์๋๋ฐ, ์ฐธ์กฐ๋ณ์๋ฅผ ์ถ๋ ฅํด๋ณด์์ ๋๋ ํด๋์ค๋ช @16์ง์ ํด์์ฝ๋๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ๊ณ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฐธ์กฐ๋ณ์๊ฐ ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ธ์ง ๊ถ๊ธํด์ก๋ค.ํด๋น ๊ธ์์๋ ์ฐธ์กฐ ๋ณ์๊ฐ ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ์ฐธ์กฐํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ฐธ์กฐ ๋ณ์ ์ถ๋ ฅ ์ ๋ํ๋๋ ํด์์ฝ๋์ ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ด๊ณ์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค.Java์ ์ฐธ์กฐ ๋ณ์์ฐธ์กฐ๋ณ์๋ ํ(Heap) ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ ์ฅํ์ง๋ง, ๊ฐ๋ฐ์์๊ฒ ์ง์ ์ฃผ์๊ฐ์ ๋ ธ์ถํ์ง ์๋๋ค๊ณ ํ๋ค. ๋์ toString() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ํด๋์ค๋ช @ํด์์ฝ๋ ํ์์ ๋ฌธ์์ด์ด ๋ฐํ๋๋ค. ํด์์ฝ๋ vs ์ค์ ์ฃผ์Product@1302068a์ ๊ฐ์ ํด์์ฝ๋๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์๋ฏธํ์ง ์๋..
removeAll๊ณผ retainAll ๋ฉ์๋๋ ๋ชจ๋ ๋ด๋ถ์ ์ผ๋ก batchRemove ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉฐ, ์ ๊ฑฐ ๋ฐฉ์๋ง complement ํ๋ผ๋ฏธํฐ๋ก ๊ตฌ๋ถํ๋ค.removeAll: complement = false (์ปฌ๋ ์ ์ ์๋ ์์ ์ ๊ฑฐ)retainAll: complement = true (์ปฌ๋ ์ ์ ์๋ ์์๋ง ์ ์ง)public boolean removeAll(Collection c) { return batchRemove(c, false, 0, size);} boolean batchRemove(Collection c, boolean complement, final int from, final int end) { Objects.requireNonNull(c); final Object[] ..

Semantic Versioning(SemVer)์ ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ฒด๊ณ์ ์ธ ๊ท์น์ผ๋ก, MAJOR.MINOR.PATCH ํ์์ผ๋ก ๋ฒ์ ์ ๊ตฌ์ฑํ๋ค. ์ด ์ฒด๊ณ๋ API๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ช ํํ ์ ๋ฌํ๋ฉฐ, Spring Boot ํ๋ ์์ํฌ์์๋ ํต์ฌ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ผ๋ก ์ฑํ๋์๋ค. Semantic Versioning ๊ธฐ๋ณธ ํ์MAJOR.MINOR.PATCHMAJOR ๋ฒ์ (์ฃผ ๋ฒ์ ): ๊ธฐ์กด ๊ธฐ๋ฅ๊ณผ์ ํธํ์ฑ์ ๊นจ๋จ๋ฆฌ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋ ๋ ์ฆ๊ฐ(์: 1.x.x → 2.0.0)MINOR ๋ฒ์ (๋ถ ๋ฒ์ ): ํ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ ์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ์ฆ๊ฐ(์: 2.1.x → 2.2.0)PATCH ๋ฒ์ (ํจ์น ๋ฒ์ ): ๋ฒ๊ทธ ์์ ๋ฑ ๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์ด ๋ด๋ถ ๊ฐ์ ์ด ์์ ๋ ์ฆ๊ฐ(์: 2.2.0 → 2...
API๋ฅผ ์ค๊ณํ ๋, ์ฌ์ฉ์๊ฐ ๋ฉ์๋ ์๊ทธ๋์ฒ๋ง ๋ณด๊ณ ๋ ๋ฐํ๊ฐ์ด ์ ํํ์ธ์ง, ์ฆ ๊ฐ์ด ์กด์ฌํ์ง ์์ ์ ์์์ ์ฝ๊ฒ ์ธ์งํ ์ ์๋ค๋ฉด ํจ์ฌ ์์ ํ๊ณ ๋ช ๋ฃํ API๋ฅผ ์ ๊ณตํ ์ ์์ ๊ฒ์ด๋ค. ์ด ๊ธ์์๋ Java 8๋ถํฐ ๋์ ๋ Optional ํด๋์ค๋ฅผ ํ์ฉํด API ์ค๊ณ์ ๋ช ํ์ฑ์ ๋์ด๊ณ , NullPointerException๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋ ค ํ๋ค.1. Optional์ ๊ธฐ๋ณธ ๊ฐ๋ public final class Optionalextends ObjectA container object which may or may not contain a non-null value. - ๊ณต์ ๋ฌธ์ ์ ์Java 8 ๋ถํฐ ๋์ ๋ Optional๋ null์ด ๋ ์ ์๋ ๊ฐ์ ๊ฐ์ธ๋ ๋ํผ(wrapp..