BeakGwa
@beakgwa
Reviews Written
8
Average Rating
5.0
Posts
Q&A
์ ์๋ํฐ์์ notepad๊ฐ ์๋์์
(์ฌ์ง)์ฐํด๋ฆญ ํ์๊ณ Notepads ํ๋ฒ ํด๋ณด์๊ฒ ์ด์?
- 0
- 2
- 196
Q&A
api ์์ฒญ ํ์์ ์๋๋ฆฌ์ค ๊ฐฏ์์ ๋ํด ์ง๋ฌธ ์์ต๋๋ค.
๊ฒฐ๋ก ๋ถํฐ, ํด๋นํ๋ ์กฐ๊ฑด์ ๋ช ํํ๊ฒ ๋ช๋ฒ์ api๊ฐ ์คํ๋๋์ง๋ ๋จ์ ํ ์ ์์ต๋๋ค.๋จ, ๋ค์๊ณผ ๊ฐ์ด ์ด๋์ ๋ ์์์ ํด๋ณผ ์ ์์ต๋๋ค. 1์ด๋น 3๋ช ์ ๊ฐ์ ์ ์ ๋ฅผ ์์ฑํ๊ฒ ๋๊ณ , 30์ด ๋์ ์ด 90๋ช ์ ๊ฐ์ ์ ์ ๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค.๊ฐ ์๋๋ฆฌ์ค์ (ํ์ฌ 2๊ฐ) ๊ฐ์ ์ ์ ๋ฅผ ๋ฐฐ์ ํด์ผ ํ๋๋ฐ, Artilleryt์์๋ ๋น๊ท ๋ฑํ๊ฒ ๋ฐฐ์น๊ฐ ๋๊ณ ์์ต๋๋ค. ๊ฐ ์๋๋ฆฌ์ค๊ฐ, 42์ ์ /48์ ์ (์๋๋ฆฌ์ค1/์๋๋ฆฌ์ค2) ๋งํผ ๋ฐฐ์น๋์๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.1๋ฒ ์๋๋ฆฌ์ค : 42 * 3 (์ ์ x api ๊ฐฏ์) = ์ด 126๊ฐ์ api ํธ์ถ2๋ฒ ์๋๋ฆฌ์ค : 48 * 1 = 48๊ฐ์ api ํธ์ถ์ด๋ฐ์์ผ๋ก ๊ฐ์ ํด์ ํ์ธํด๋ณผ ์ ์์ต๋๋ค.(์ฌ์ง)config: target: 'http://localhost:8080' phases: - duration: 30 arrivalRate: 3 name: Warm up scenarios: - name: "login and use some functions" flow: - post: url: "/login" - get: url: "/some-function-one" - get: url: "/some-function-two" - name: "just login" flow: - post: url: "/hello" weight ๊ฐ์ ๊ฐ์ค์น๋ฅผ ์ค์ ์ต๋ํ ๊ท ๋ฑํ๊ฒ ๋ฐฐ์ ํ๋ ๋ฐฉ๋ฒ๋ํ ์๊ฐ๋๋๊ฒ์ผ๋ก ํ์ธ๋๋๋ฐ, ์ ํํ๊ฒ ๋์ํ๋์ง๋ ์ ๋ ํ ์คํธ๋ ์ํด๋ณด์์ต๋๋ค.https://www.artillery.io/docs/reference/test-script#scenario-weights
- 1
- 3
- 273
Q&A
Spring REST Docs ๊ด๋ จ ์ง๋ฌธ ์ฌํญ
๋น์ทํ ์๊ฐ์ ๊ฐ์ง ์ฌ๋ฌ ์๊ฐ์์ ๋จ๊ฒจ์ฃผ์ ์ง๋ฌธ ํ์ธํ์์ต๋๋ค! ๊ฐ์ฌํฉ๋๋ค~
- 0
- 3
- 317
Q&A
์ธ์ ํ์์์๊ณผ refresh token
์ ๋ ๋์ผํ๊ฒ ๊ถ๊ธํด์ ์ ๋ฆฌํ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ํ๋ฒ ๊ณต์ ๋๋ฆฝ๋๋ค. (๊ฐ์ธ ์๊ฒฌ ๊ฐ๋)1. ํ์ทจ๋์์๋๋ฅผ ๊ฐ์ ํ์ฌ, accessToken์ด ํ์ทจ๋ ๊ฒฝ์ฐ, ์ง์์ ์ธ ์ ํจ๊ธฐ๊ฐ ์ฐ์ฅ ์์ ์ผ๋ก, ํ์ทจ์๋ ๋ฌดํ์ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ ๋ณด์์ด์๋ก ํฐ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค. - ๋ณธ ๊ฐ์์์ ๋์ค๋ session ํ์์์ ์ฐ์ฅ ๋ํ ๊ฐ์ ๋ฌธ์ ์์ ๊ฒ์ผ๋ก ์๊ฐ. ํ์ ์์๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฐ์ฅ ํ๋์ง, ์๋ก์ด session์ ์์ฑํ๋์ง๋ ์ ๋ ์๋ฌธ์ ๋๋ค.2. 1๋ฒ์ ๋ณด์์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, ๋ก๊ทธ์ธ์ ๋ฐ๊ธํ, refresh token์ผ๋ก ์๋ก์ด access token์ ๋ฐ๊ธํ์ฌ client์๊ฒ ์ ๋ฌํฉ๋๋ค. ์ด๋ ์ด์ ์ ๋ฐ๊ธํ access token์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅ ํฉ๋๋ค. - ์งง์ expired time์ ์ค์ ํ์ฌ, ์ด๋ฏธ ๋ฐ๊ธ๋ access token์ด ํ์ทจ๋นํ ์ํฉ์ ์ฐ๋ ค, refresh token์ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ธ์ฆtoken์ ๋ฐ๊ธํ์ฌ ๋ณด์์ด์ ํํผ - ๊ธฐ์กด ์ฌ์ฉํ๋ AccessToken์ ExpiredTime์ด ๋ค๋์ ๋น์ฐํ ์ฌ์ฉ ๋ถ๊ฐ. (ํ์ทจ๋๊ฑฐ? ์ฌ์ฉ ์๋ผ!)๊ฒฐ๋ก )๊ฒฐ๊ตญ refresh token์ ์ ์ฉํ๊ฒ ๋ ์ด์ ๋, ์ฌ์ฉ์ ๊ฒฝํ์ฑ ์ฆ๊ฐ๋ฅผ ์ํด, ๊ธด ๋ก๊ทธ์ธ ์๊ฐ์ ์ง์ํ๊ฒ ํ๊ณ , ๋ณด์ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ์ฉ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค.๊ฐ์ด ํ ๋ก ํด์ฃผ์ธ์!
- 0
- 1
- 328
Q&A
unlock()์ synchronized๋ฅผ ๊ฑธ๋ฉด ์ ๋ฌดํ๋ฃจํ๋ฅผ ๋๋์ง๊ฐ ์ดํด๊ฐ ์๋ฉ๋๋ค..ใ ใ
ํ์ฌ SpinLockBad class์ lock(), unlock() ๋ฉ์๋๋ํด๋น ํด๋์ค์ private volatile boolean lock์ true ํน์ false๋ก ๋ณ๊ฒฝ์ํค๋ฉด์ lock์ ์ ์ดํ๊ณ ์์ต๋๋ค. ํ์ง๋ง, synchronized๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ๋ด๋ถ ๋ฝ์ ๋ฐ๋ก ์ฌ์ฉํ๊ฒ ๋๋๊ฑฐ์ฃ . ์ฌ๊ธฐ์ synchronized๋ฅผ ํตํด ์ฌ์ฉ๋๋ lock ์ lock(), unlock() ๋ฉ์๋์ ์๊ด์์ด ๋ฉ์๋๊ฐ ์์ํ ๋ ๋ด๋ถ ๋ฝ์ ํ๋ ์๋, ๋๋ ๋ ๋ด๋ถ ๋ฝ์ ๋ฐ๋ฉ ํ๊ฒ ๋ฉ๋๋ค. ๊ฒฐ๊ตญ, ํด๋น SpinLockBad ํด๋์ค๋volatile boolean ํ์ lock ํ๋synchronized ํค์๋๋ฅผ ํตํด ์ ์ดํ๋ ๋ด๋ถ lock ํ๋์ด๋ ๊ฒ ๋๊ฐ์ง lock์ ์ฌ์ฉํ๊ฒ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๊ฑฐ์ฃ .
- 1
- 2
- 253
Q&A
unlock()์ synchronized๋ฅผ ๊ฑธ๋ฉด ์ ๋ฌดํ๋ฃจํ๋ฅผ ๋๋์ง๊ฐ ์ดํด๊ฐ ์๋ฉ๋๋ค..ใ ใ
main์ฝ๋๊ฐ ์์ด์ผ ํ์ธ์ด ๊ฐ๋ฅํ ๊ฒ ๊ฐ์๋ฐ, ํ์ฌ ํ์ธ๋ ์ฝ๋๋ก๋ lock ์ ๋ต์ด ๋๊ฐ์ง ์ค์ ๋์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค.volatile lock , synchronized lock synchronized ํค์๋๋ฅผ ์ฌ์ฉํด์ ๋ฝ ์ ๋ต์ ์คํํ๋ฉด, ํด๋น ํด๋์ค์ ๋ด๋ถ lock์ ์ฌ์ฉํ๊ฒ๋ฉ๋๋ค.์ด lock์ synchronizedํค์๋๊ฐ ๋ถ์ ๋ฉ์๋ or ์๊ณ์์ญ ์ด ์๋ฃ๋ ๋๊น์ง lock์ ๋ฐ๋ฉํ์ง ์์ต๋๋ค. volatile lock์ผ๋ก lock()/unlock() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฝ์ ์ ์ดํ๋ค๊ณ ํด๋, synchronzed ์ ๋ด๋ถ ๋ฝ์ ๋ฐ๋ฉํ์ง ์๊ธฐ๋๋ฌธ์, ์ง๋ฌธ์ ์๋ ๋ฌดํ ๋๊ธฐ ์ํ๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๊ณต์ ๋ต๋ณ์ด ์๋๋ผ์ ํ๋ฆด์๋ ์๋์ ์ํด ๋ถํ๋๋ฆฝ๋๋ค.
- 1
- 2
- 253
Q&A
List์ธํฐํ์ด์ค๋ฅผ sout ํ ๋ ์ง๋ฌธ์ ๋๋ค.
์ ๋ ์ง๋ฌธ๊ธ ๋ณด๋ ๊ถ๊ธํด์ ๋๋ฒ๊น ํ๋ฉด์ ๋ค์ ธ๋ดค๋ค์.๊ฒฐ๋ก ์ ์ผ๋ก๋ AbstractCollection ํด๋์ค์ ์ toString ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋ง์ต๋๋ค.List list = new LinkedList(); list.add("data1"); System.out.println("list = " + list);list๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํํ๊ธฐ ์ํด์ String class์ valueOf ์คํ.์ฌ๊ธฐ์ Object์ toString ๋ฉ์๋ ์คํ.toString ์คํ ์, ํด๋น Object์ ์ค๋ฒ๋ผ์ด๋ฉ ๋ toString, AbstractCollection.toString ์คํ์ด๋ฐ ์์๋ก ์ด๋ค์ง๋๊ฑธ๋ก ํ์ธํ์์ต๋๋ค.
- 0
- 1
- 262
Q&A
ํ์๋ชฉ๋ก ์ด๋ ์คํจ ํด๊ฒฐ๊ด๋ จ ๋ฌธ์์ฌํญ
Member ํด๋์ค ๋ด getId, getName ๋งค์๋alt+insert -> getter and setter๋ก ์ฌ์์ฑ ํ ๋ฌธ์ ํด๊ฒฐ
- 0
- 2
- 374




