๋ชฉ๋ก๐ป Java Study (32)
Coding Planet
|ThreadLocal์ด๋ ThreadLocal์ Java์ ์ค๋ ๋ ๋ก์ปฌ ๋ณ์๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ด๋ค. ์ง๊ธ๊น์ง ๋ณ์๋ค์ ํด๋์ค, ๋ฉ์๋ ๋ ๋ฒจ์์ ๊ด๋ฆฌ๋์๋๋ฐ ์ค๋ ๋๋ณ๋ก ์ ์ฅ๋๊ณ ๊ด๋ฆฌํ ์ ์๋ ๊ฒ์ด๋ค. ์ฆ, ํ ์ค๋ ๋์์ ์ค์ ํ ThreadLocal ๋ณ์์ ๊ฐ์ ๋ค๋ฅธ ์ค๋ ๋์ ๊ณต์ ๋์ง ์์ผ๋ฉฐ, ๊ฐ ์ค๋ ๋๋ ํด๋น ๋ณ์์ ์์ ๋ง์ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ ์ ์งํ๊ฒ ๋๋ค. ์ด๋ฅผ ํตํด ์ค๋ ๋ ๊ฐ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ ธ ์ค๋ ๋ ์์ ์ฑ(thread-safety)์ ํ๋ณดํ ์ ์๋ค. ๋ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด threadLocal๋ณ์๋ฅผ ์ ์ธํ๋ฉด ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ๊ฐ ์ค๋ ๋๋ง๋ค ๋ ๋ฆฝ์ ์ธ ๋ณ์๋ฅผ ๊ฐ์ง๊ฒ ๋๊ณ ๊ฐ ๊ฐ์ get(), set() ๋ฉ์๋๋ฅผ ํตํด ์ ๊ทผํ ์ ์๊ฒ ๋๋ค. **thread-safety ๋ฉํฐ ์ค๋ ๋ฉ ..
SyntaxError: Unexpected token '
"Daemon" ์ด๋ผ๋ ๋จ์ด๋ ์๋ ๊ทธ๋ฆฌ์ค ์ ํ์ ๋ณดํธ์ ๋๋ ์ ์ ์ง๋ฐฐ๋ฅผ ๋ฐ๋ ์ํผ์ ์๋ฏธํ๋ ๋จ์ด์์ ์ ๋๋ฌ์ผ๋, ์ปดํจํ ๋ถ์ผ์์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ ์๋น์ค๋ฅผ ์๋ฏธํ๋ค. ๋ณดํต ์ฌ์ฉ์์ ์ง์ ์ ์ธ ๊ฐ์ ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฉฐ ์์คํ ๊ด๋ฆฌ, ์์ ๊ด๋ฆฌ, ํ์ผ ์ ์ก, ๋คํธ์ํฌ ์๋น์ค ์ ๊ณต ๋ฑ์ ์์ ์ ์ํํ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฆฌํจ๋ค. ์ด์์ฒด์ ๋ ์๋ฒ์์๋ ๋ค์ํ ๋ฐ๋ชฌ์ด ์์คํ ์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ์คํ๋๊ณ ์๋๋ฐ ์ด ํฌ์คํธ์์๋ ๋ฐ๋ชฌ์ฐ๋ ๋(daemeon thread)๋ฅผ ์ค์ ์ ์ผ๋ก ์ดํด ๋ณด๊ณ ์ ํ๋ค. | ๋ฐ๋ชฌ ์ฐ๋ ๋(daemon thread) ๋ฐ๋ชฌ ์ฐ๋ ๋๋ ์ผ๋ฐ์ฐ๋ ๋(๋ฐ๋ชฌ ์ฐ๋ ๋๊ฐ ์๋ ์ฐ๋ ๋)์ ์์ ์ ๋๋ ๋ณด์กฐ์ ์ธ ์ญํ ์ ์ํํ๋ ์ฐ๋ ๋์ด๋ค. ์ฃผ ์ฐ๋ ๋(์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ์ธ์ฐ๋ ๋)๊ฐ ์ข ..
| ํ๋ก์ธ์ค์ ์ฐ๋ ๋ ํ๋ก์ธ์ค(process)๋ ๊ฐ๋จํ ๋งํด์ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด OS๋ก๋ถํฐ ์คํ์ ํ์ํ ์์(๋ฉ๋ชจ๋ฆฌ)๋ฅผ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๊ฐ ๋๋ค. ํ๋ก์ธ์ค๋ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์์ ๊ทธ๋ฆฌ๊ณ ์ฐ๋ ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ด ๋ ํ๋ก์ธ์ค์ ์์์ ์ด์ฉํด์ ์ค์ ๋ก ์์ ์ ์ํํ๋ ๊ฒ์ด ์ฐ๋ ๋์ด๋ค. ๊ทธ๋์ ๋ชจ๋ ํ๋ก์ธ์ค์์๋ ์ต์ํ ํ๋ ์ด์์ ์ฐ๋ ๋๊ฐ ์กด์ฌํ๋ฉฐ, ๋ ์ด์์ ์ฐ๋ ๋๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ ๋ฉํฐ์ค๋ ๋ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค. ํ๋ก์ธ์ค๊ฐ ํ๋์ ๊ณต์ฅ์ด๋ผ๋ฉด ์ฐ๋ ๋๋ ๊ณต์ฅ ๋ด๋ถ์ ๋ ธ๋์์ด๋ค. | ๋ฉํฐํ์คํน๊ณผ ๋ฉํฐ์ฐ๋ ๋ฉ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์๋์ฐ๋ ์ ๋์ค๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ OS๋ ๋ฉํฐํ์คํน(multitasking, ๋ค์ค์์ )์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์..
๊ฐ๋ฐ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฐ์ cohttp://m.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class cohttp://m.example.demo.main.domain.Menu and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]) 1. ๋ฌธ์ ์์ธ ์คํ๋ง ๋ถํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก JSON ๋ฐ์ดํฐ์ Java ๊ฐ์ฒด ๊ฐ์ ๋ณํ์ ๋ด๋นํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก J..
์๋ฐ์ ๋๋ค์(Lambda Expressions)์ Java 8๋ถํฐ ๋์ ๋ ๊ธฐ๋ฅ์ผ๋ก, ๊ฐ๊ฒฐํ๊ฒ ํจ์๋ฅผ ํํํ ์ ์๊ฒ ํด์ค๋ค. ๋๋ค์์ด๋ ๋ง๊ทธ๋๋ ๋ฉ์๋๋ฅผ ํ๋์ ์(expression)์ผ๋ก ํํํ ๊ฒ์ด๋ค. ๋๋ค์์ผ๋ก ํํํ๋ฉด ๋ฉ์๋์ ์ด๋ฆ๊ณผ ๋ฐํ๊ฐ์ด ์์ด์ง๋ฏ๋ก ๋๋ค์์ ์ต๋ช ํจ์๋ผ๊ณ ๋ ํ๋ค. | ๊ธฐ๋ณธ๊ตฌ์กฐ ํ๋ผ๋ฏธํฐ : ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ์ ๋์ผํ๋ฉฐ ๊ดํธ '()'์์ ์ ์ธํ๋ค. ํ๋ผ๋ฏธํฐ์ ํ์ ์ ๋ช ์ํ ์๋ ์๊ณ ์๋ตํ ์๋ ์๋ค. ํ์ดํ : ํ๋ผ๋ฏธํฐ์ ๋ณธ๋ฌธ์ ๊ตฌ๋ถํ๋ ์ญํ ์ ํ๋ค. expression_body : ํด๋น ํจ์๊ฐ ์ํํ ๋ก์ง์ ๋ด๊ณ ์๋ค. ๋ฉ์๋์์ ์ด๋ฆ๊ณผ ๋ฐํํ์ ์ ์ ๊ฑฐํ๊ณ ๋งค๊ฐ๋ณ์ ์ ์ธ๋ถ์ ๋ชธํต ์ฌ์ด์ ->๋ฅผ ์ถ๊ฐํ ๊ฒ์ด๋ค. (parameters) -> expression_body | ๋๋ค์..
๊ธฐ์ด ์ค์ ๊ธฐ์ด์ธ๋ฐ ์ต๊ทผ ํ๋ก๊ทธ๋๋จธ์ค ํ๋ฉด์ ์ฌ์ ํ ์ด๊ฒ๋๋ฌธ์ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค;; ๋ค์ ์ ๋ฆฌํ๋ค... 1. length (ํ๋กํผํฐ) length๋ ๋ฐฐ์ด์ ๊ธธ์ด(ํฌ๊ธฐ)๋ฅผ ๋ํ๋ด๋ ํ๋กํผํฐ ๋ชจ๋ ๋ฐฐ์ด์ ๋ํด ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ค. int[] arr = {1, 2, 3, 4, 5}; int size = arr.length; // size๋ 5 2. length() (๋ฉ์๋) length()๋ String ํด๋์ค์ ๋ฉ์๋๋ก, ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํ ๋ฌธ์์ด์ ๊ธธ์ด๋ ํด๋น ๋ฌธ์์ด์ ํฌํจ๋ ๋ฌธ์์ ์๋ฅผ ์๋ฏธํ๋ค. String str = "hello"; int len = str.length(); // len๋ 5
`String`, `StringBuffer`, `StringBuilder`๋ ๋ชจ๋ Java์์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํด๋์ค์ด๋ค. ๊ฐ ํด๋์ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ํด ๊ณต๋ถํ๋ค. | String ๋ถ๋ณ์ฑ (Immutability): String ํด๋์ค์ ๊ฐ์ฅ ํฐ ํน์ง์ ํ ๋ฒ ์์ฑ๋ String ๊ฐ์ฒด๋ ๋ถ๋ณ์ด๋ค. ์ฆ, String์ ์ด๋ค ๋ณํ๋ฅผ ์ฃผ๋ ค๊ณ ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค. ์ด๋ฌํ ๋ถ๋ณ์ฑ์ ํน์ ์ํฉ์์๋ ์์ ์ฑ์ ์ ๊ณตํ์ง๋ง, ๋ฌธ์์ด ์กฐ์ ์์ ์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋ ๋๋ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์์: ๋ฌธ์์ด ์ฐ๊ฒฐ (+ ์ฐ์ฐ์ ์ฌ์ฉ)์ ํ ๋๋ง๋ค ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค. | StringBuffer ๊ฐ๋ณ์ฑ (Mutability): StringBuffer๋ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐ์ํ ..
| Wrapper ํด๋์ค๋? Java์์๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ (primitive data types)๊ณผ ๊ทธ์ ํด๋นํ๋ ๋ํผ(Wrapper) ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. ๋ํผ ํด๋์ค๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ ๊ฐ์ฒด๋ก ๊ฐ์ธ๋ ์ญํ ์ ํ๋ค. ์ด๋ฅผ ํตํด ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๊ฐ์ ๋ํ ๊ฐ์ฒด ์ฐ์ฐ์ ์ํํ ์ ์๋ค. ๋ํ ์ ๋๋ฆญ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ์ง์ ์ฌ์ฉํ ์ ์์ ๋ ๋ํผ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ค. | ์ฃผ์ ๋ํผ ํด๋์ค์ ํด๋น ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ | ๋ํผ ํด๋์ค์ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ์์ 1. ๊ฐ ๋ณํ ๋ฌธ์์ด์ ํด๋น ๋ํผ ํด๋์ค์ ํ์ ์ผ๋ก ๋ณํํ๊ฑฐ๋, ํด๋น ํ์ ์ ๊ฐ์ ๋ค๋ฅธ ํ์์ผ๋ก ๋ณํํ ์ ์๋ค. int i = Integer.parseInt("123"); String s = Integer.toStrin..
์์ดํ 7 : ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ C, C++ ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ด๋ฆฌํ์ง๋ง ์๋ฐ์ ๊ฒฝ์ฐ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์ด ์ญํ ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ค ์ด ๊ฐ์ฒด๋ ์์์ ํ์๋๋ค. ํ์ง๋ง ์ด ๊ฒ์ด ๋ฉ๋ก๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋๋๋ค๋ ์๋ฏธ๋ ์๋๋ค. 1. ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์ผ์ด๋๋ ์์น๋ ์ด๋์ธ๊ฐ? public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(..