์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ฐ์ดํฐ ์ ์ก
- git merge
- ๋น์ฃผ๊ธฐ์ ํธ
- ํ ํฐ ๋ฒ์ค
- ์ค๋ฅ๊ฒ์ถ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- til
- ํ๋ก์ด๋์์
- tcp ํ๋กํ ์ฝ
- ์ฝ๋ฉํ ์คํธ์ค๋น
- ์ค๋ ๋
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ํ๋ ์ ๊ตฌ์กฐ
- 99ํด๋ฝ
- ์์๋ฒํธ
- well known ํฌํธ
- ์ฃผ๊ธฐ์ ํธ
- i-type
- ๊ฐ๋ฐ์์ทจ์
- ์ค๋ธ์
- mariadb
- xv6
- ์ฐ๋ถํฌdb
- leetcode
- reducible
- IEEE 802
- tcp ์ธ๊ทธ๋จผํธ
- ํญํด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..