๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
-
TCP, 3-way handshake, 4-way handshake, UDP๊ฐ๋ฐ/Network 2022. 4. 30. 10:55
๐ก์ ์ก ๊ณ์ธต(Transport Layer)์ ์ํ TCP์ UDP OSI 7 ๋ ์ด์ด์์ Transport Layer์๋ ์ ๋๋จ(End to end)์ ์ฌ์ฉ์๋ค์ด ์ ๋ขฐ์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํด ์ฃผ์ด, ์์ ๊ณ์ธต๋ค์ด ๋ฐ์ดํฐ ์ ๋ฌ์ ์ ํจ์ฑ์ด๋ ํจ์จ์ฑ์ ์๊ฐํ์ง ์๋๋ก ํด์ค๋ค. ์ ์ก ๊ณ์ธต์ ์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ๋ชจ๋ธ์ธ ๊ฐ๋ฐฉํ ์์คํ ๊ฐ ์ํธ ์ ์ (Open Systems Interconnection, OSI)๊ณผ ์ธํฐ๋ท์ ๊ธฐ๋ฐ์ธ TCP/IP ์ฐธ์กฐ ๋ชจ๋ธ๊ณผ ๋ชจ๋ ํฌํจํ๊ณ ์๋ค. ์ ์ก ํ๋กํ ์ฝ ์ค ์ ์๋ ค์ง ๊ฒ์ด ๋ฐ๋ก TCP์ UDP์ด๋ค. ๐กTCP(Transmission Control Protocol)๋ ๋ฌด์์ธ๊ฐ? : ์ ์ ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด์ ์ด์ฉ๋๋ ํ๋กํ ์ฝ ๐ํ๋กํ ์ฝ : ์ปดํจํฐ๋ผ๋ฆฌ ..
-
Java8 - stream(์คํธ๋ฆผ), forEach(), map(), filter(), Method Reference(๋ฉ์๋ ์ฐธ์กฐ)๊ฐ๋ฐ/Java 2022. 4. 30. 00:20
stream์ด๋ผ๋ ์์ด ๋จ์ด๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. 1. ๊ฐ์ธ, ์๋ด 2. (์ก์ฒด๋ ๊ธฐ์ฒด์) ์ค๊ธฐ 3. (์ฌ๋์ด๋ ์ฐจ๋๋ค๋ก ๊ณ์ ์ด์ด์ง) ์ค ์์ ์๋ฏธ๋ก ๋ณด์์ ๋, "์ค์ค์ด ์ด์ด์ ธ ์๋" ์๋ฏธ๋ก ์ฌ์ฉ์ด ๋๋ค. ๐ก์๋ฐ์ ์คํธ๋ฆผ์ ์ธ์ ์ฌ์ฉํ ๊น? ์๋ฐ์ ์คํธ๋ฆผ์ "๋ญ๊ฐ ์ฐ์๋ ์ ๋ณด"๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํ๋ค. ์๋ฐ์์๋ ๋ฐฐ์ด๊ณผ ์ปฌ๋ ์ ์ ์๊ฐํด๋ณผ ์ ์๊ฒ ๋ค. ํ์ง๋ง, ๋ฐฐ์ด์์๋ ์คํธ๋ฆผ์ ์ฌ์ฉํ ์ ์๋ค. cf) ๊ทธ๋ ์ง๋ง, ๋ฐฐ์ด์ ์ปฌ๋ ์ ์ List๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. 1) asList() ๋ฉ์๋๋ฅผ ์ด์ฉํ ๋ณํ Integer[] values = {1, 3, 5}; List list = new ArrayList(Arrays.asList(values)); 2) Arrays.stream()..
-
Java8 - Lamda ํํ์(expression)๊ฐ๋ฐ/Java 2022. 4. 29. 17:57
Java8 ์ด์์ ์ฌ์ฉํ๋ค๋ฉด ๋ฐ๋์ ์๊ณ ์์ด์ผ๋ง ํ๋ "๋๋ค"์ ๋ํด ์์๋ณด๊ฒ ๋ค. ์ด ๋๋ค ํํ์์ ์ตํ ๋์ง ์์ผ๋ฉด ์์ผ๋ก ๋ง๋ค์ด์ง๋ ์๋ฐ ์ฝ๋๋ฅผ ์ฝ๋ ๋ฐ ๋งค์ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์๊ธฐ ๋๋ฌธ์, ๊ผญ ์์๋๊ธฐ๋ฅผ ๊ถํ๋ค. ๐กLamda ํํ์์ ์ ๋ง๋ค์ด์ก์๊น? ์ต๋ช ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด, ํด๋์ค๋ฅผ ์๋กญ๊ฒ ๋ง๋๋ ๋ฐ ํ์ํ ๋น์ฉ์ ์ค์ผ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ๋ฐ๋๋ก ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ ๋ถํธํจ์ด ์๋ค. ์ด๋ฅผ ๋ณด์ํ๊ณ ์ ๋ง๋ค์ด์ก๋ค. ๐กLamda ํํ์์ ์ธ์ ์ธ๊น? ์ด ํํ์์ ์ธํฐํ์ด์ค์ ๋ฉ์๋๊ฐ "ํ๋"์ธ ๊ฒ๋ค๋ง ์ ์ฉ ๊ฐ๋ฅํ๋ค. ๊ทธ๋์, ๋๋ค ํํ์์ ์ต๋ช ํด๋์ค๋ก ์ ํ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ต๋ช ํด๋์ค๋ ๋๋ค ํํ์์ผ๋ก ์ ํ์ด ๊ฐ๋ฅํ๋ค. ๐กJava์ ์๋ ์ธํฐํ์ด์ค ์ค, ๋ฉ์๋๊ฐ ํ๋์ธ ์ธํฐํ์ด์ค์๋ ์ด๋ค ๊ฒ๋ค์ด ์..
-
[Thread] Runnable and Callable in Java๊ฐ๋ฐ/Java 2022. 4. 25. 15:31
Java ์ด๊ธฐ๋ถํฐ ๋ฉํฐ์ค๋ ๋ฉ์ ์ธ์ด์ ์ฃผ์ ์ธก๋ฉด์ด์๋ค. Runnable ์ ๋ค์ค ์ค๋ ๋ ์์ ์ ๋ํ๋ด๊ธฐ ์ํด ์ ๊ณต๋๋ ํต์ฌ ์ธํฐํ์ด์ค์ด๊ณ , Callable ์ Java 1.5์ ์ถ๊ฐ๋Runnable์ ๊ฐ์ ๋ ๋ฒ์ ์ด๋ค. ๋ ์ธํฐํ์ด์ค ๋ชจ๋ ์ฌ๋ฌ ์ค๋ ๋์์ ์คํํ ์ ์๋ ์์ ์ ๋ํ๋ด๋๋ก ์ค๊ณ๋์๋ค. ํ์ง๋ง, Runnable์ Threadํด๋์ค ๋๋ExecutorService ๋ฅผ ์ฌ์ฉํ์ฌ ์คํํ ์ ์๋ ๋ฐ๋ฉด Callable ์ ํ์๋ฅผ ์ฌ์ฉํด์๋ง ์คํํ ์ ์๋ค. ๊ทธ๋ผ ์ฐจ์ด์ ์ ์์ธํ ์ดํด๋ณด์. Runnable ๐ก๋ฐํ ๊ฐ Runnable ์ธํฐํ์ด์ค ๋ ๊ธฐ๋ฅ์ ์ธํฐํ์ด์ค์ด๋ฉฐ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํ์ง ์๊ณ ๊ฐ์ ๋ฐํํ์ง ์๋ ๋จ์ผ run() ๋ฉ์๋๊ฐ ์๋ค. ์ค๋ ๋ ์คํ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ง ์๋ ์ํฉ์ ์ ํฉํ๋ค. ๐ก์คํ ..
-
[Thread] Volatile์ด๋, Volatile๊ณผ DCL(Double Checking Locking) ๊ณต๋ถ ๊ธฐ๋ก๊ฐ๋ฐ/Java 2022. 4. 24. 00:02
๐กvolatile์ ์ธ์ ์ฌ์ฉํ ๊น? ์๋ฐ์ ์์ฝ์ด ์ค์๋ volatile๋ผ๋ ๊ฒ์ด ์๋ค. ์ด ์์ฝ์ด๋ ๋ณ์ ์ ์ธ์์๋ง ์ฌ์ฉ๋๋ค. ์ด ์์ฝ์ด์ ๋ํ ์ค๋ช ์ ๋ฃ๊ธฐ ์ ์ ๋จผ์ ๋ค์์ ์์ ์ฝ๋๋ฅผ ๋ณด์. (์ฝ๋ ์ค๋ช ์ ์ฃผ์์ผ๋ก ๋์ฒดํ๋ค.) VolatileSample.java package e.thread.volat; public class VolatileSample extends Thread{ //instanceVariable์ด๋ผ๋ ๋ณ์๊ฐ ์๊ณ , ๊ธฐ๋ณธ ๊ฐ์ 0์ผ๋ก ์ง์ ํ๋ค. private double instanceVariable = 0; //instanceVariable ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ฉ์๋ void setDouble(double value) { this.instanceVariable = value; } pu..
-
[Thread] ๋์์ฑ ์ด์(Synchronization Issue), ์ฐ๋ ๋๋ก์ปฌ(ThreadLocal), ์ฐ๋ ๋ํ(ThreadPool), ์ฐ๋ ๋์ ์์ ํ ์ค๊ณ(ThreadSafe)์ ๋ํ ๊ณต๋ถ ๊ธฐ๋ก๊ฐ๋ฐ/Java 2022. 4. 23. 21:54
๐ก๋์์ฑ ์ด์๋ ๋ฌด์์ธ๊ฐ? ๋์์ฑ ์ด์๋ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋์์ ๊ฐ์ ์ธ์คํด์ค์ ํ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์๋ฏธํ๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ์๋ก ์ฑ๊ธํค(Singleton) ํจํด์ ์๋ก ๋ค ์ ์๋ค. โ ์ฑ๊ธํค(Singleton) ํจํด์ด๋? ์ฑ๊ธํค์ด๋ ์ด๋ค ํด๋์ค๊ฐ ์ต์ด ํ๋ฒ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ (Static) ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ ์๋ฏธํ๋ค. ์ฆ, ์์ฑ์์ ํธ์ถ์ด ๋ฐ๋ณต์ ์ผ๋ก ์ด๋ค์ ธ๋ ์ค์ ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ ์ต์ด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ ํด์ฃผ๋ ๊ฒ์ด๋ค. ์๋์ ์ฝ๋๋ฅผ ๋ณด์. @Service public class UserService { private static UserId userId; // ์ํ ๊ฐ public void createUser(User user) { // ์ฌ๊ธฐ์ use..
-
[Thread] Program, Process, Thread, Multi-Thread๋? - ๊ตฌ์ฒด์ ์ธ ์๋ ๋ฐฉ์์ ๋ํ ๊ณต๋ถ ๊ธฐ๋ก๊ฐ๋ฐ/Java 2022. 4. 23. 17:35
๐กProgram, Process, Thread๋? ํ๋ก๊ทธ๋จ(Program)์ด๋, ํ์ผ์ด ์ ์ฅ ์ฅ์น์ ์ ์ฅ๋์ด ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ์๋ ์ฌ๋ผ๊ฐ ์์ง ์์ ์ ์ ์ธ ์ํ๋ฅผ ๋งํ๋ค. - ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์์ง ์์: ์์ง ์ด์์ฒด์ ๊ฐ ํ๋ก๊ทธ๋จ์๊ฒ ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด์ฃผ์ง ์์๋ค๋ ๋ป์ด๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ๊ฐ ์คํ๋๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด ์ค์ผ ์คํ๋ ์ ์๋ค. - ์ ์ ์ธ ์ํ: ์ ์ (้็)์ด๋ผ๋ ๋จ์ด ๊ทธ๋๋ก, ์์ง์ด์ง ์๋ ์ํ๋ผ๋ ๋ป์ด๋ค. ํ ๋ง๋๋ก ์์ง ์คํ๋์ง ์๊ณ ๊ฐ๋งํ ์๋ค๋ ๋ป์ด๋ค. ์ฆ, ํ๋ก๊ทธ๋จ(Program)์ด๋ผ๋ ๋จ์ด๋ ์์ง ์คํ๋์ง ์์ ํ์ผ ๊ทธ ์์ฒด, ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ง์ด๋ค. ์๋ฅผ ๋ค๋ฉด, ์๋์ฐ์ *.exe ํ์ผ์ด๋ MacOS์ *.dmg ํ์ผ ๋ฑ๋ฑ ์ฌ์ฉ์๊ฐ ๋๋ฌ์ ์คํํ๊ธฐ..
-
Set, Queue, Map๊ฐ๋ฐ/Java 2022. 4. 19. 00:38
Set Set์ ์์์ ์๊ด ์์ด, ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ฉ๋๋ก ๋ง์ด ์ฌ์ฉ๋๋ค. ๋ค์ ๋งํด์, ์ค๋ณต๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ์ํ๋ ๊ฐ์ด ํฌํจ๋์ด ์๋์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์ฃผ ์ฉ๋๋ค. ์ด์ฒ๋ผ ์ด๋ค ๊ฐ์ด ์กด์ฌํ๋์ง, ์๋์ง ์ฌ๋ถ๋ง ์ค์ํ ๋ Set์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์๋ฐ์์ Set์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ฃผ์ ํด๋์ค๋ HashSet, TreeSet, LinkedHashSet์ด ์๋ค. - HashSet : ์์๊ฐ ์ ํ ํ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํด์ ํ ์ด๋ธ(hash table)์ ์ ์ฅํ๋ค. Set ์ค์ ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ข๋ค. - TreeSet : ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ฐ์ ๋ฐ๋ผ์ ์ ๋ ฌ๋๋ ์ ์ด๋ค. red-black์ด๋ผ๋ ํธ๋ฆฌ(tree) ํ์ ์ผ๋ก ๊ฐ์ด ์ ์ฅ๋๋ฉฐ, HashSet ๋ณด๋ค ์ฝ๊ฐ ์ฑ๋ฅ์ด ๋๋ฆฌ๋ค. - Link..