๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(387)
[Java] Thread-Safeํ•œ Singleton ๊ฐ์ฒด ์ถœ์ฒ˜ChatGPThttps://simyeju.tistory.com/121 Java] Multi Thread ํ™˜๊ฒฝ์—์„œ Singleton ํŒจํ„ด์„ Thread Safeํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐMulti Thread ํ™˜๊ฒฝ์—์„œ Singleton ํŒจํ„ด์„ Thread Safeํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€๊ณผ ๊ด€๋ จ๋œ Singleton Pattern์„ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” git์ฃผ์†Œ๋ฅผ ์ฒจ๋ถ€ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ— https://github.com/SimYeJu/HelloSingletonPattern/tree/main/src โ“Singlesimyeju.tistory.comhttps://www.initgrep.com/posts/design-patterns/thread-safety-in-java-singleton-pattern Explore Different..
[Java] volatile ํ‚ค์›Œ๋“œ - ๋ณ€์ˆ˜์˜ ๊ฐ€์‹œ์„ฑ, ์žฌ์ •๋ ฌ ๋ฐฉ์ง€ ์ถœ์ฒ˜ChatGPTvolatile ํ‚ค์›Œ๋“œ๋Š” Java์—์„œ ๋ณ€์ˆ˜์˜ ๊ฐ€์‹œ์„ฑ(visibility)๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋Œ€, ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ”๋กœ ์ฝ๊ณ  ์“ฐ๋„๋ก ๋ณด์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.๋ณ€์ˆ˜์˜ ๊ฐ€์‹œ์„ฑ : ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ, ๊ทธ ๋ณ€๊ฒฝ๋œ ๊ฐ’์„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€. ๊ฐ€์‹œ์„ฑ์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์œผ๋กœ, ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ€์ˆ˜์˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.์ž๋ฐ”์˜ ๋ณ€์ˆ˜ ๊ฐ€์‹œ์„ฑ ๋ฌธ์ œ์ž๋ฐ”์—์„œ๋Š” ๊ฐ€๊ฐ€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ์ž์‹ ์˜ CPU ์บ์‹œ ๋˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•˜๊ณ , ์—ฌ๊ธฐ์— ์ €์žฅ๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ• ..
[Java] Thread์˜ stop()๊ณผ interrupt()์˜ ๋น„๊ต ์ถœ์ฒ˜ChatGPT์ž๋ฐ” 8 ์†Œ์Šค ์ฝ”๋“œhttps://cano721.tistory.com/165 [Java] ์“ฐ๋ ˆ๋“œ 5 - ์“ฐ๋ ˆ๋“œ์˜ ์‹คํ–‰์ œ์–ด(sleep, interrupt, join, yield)์“ฐ๋ ˆ๋“œ์˜ ์Šค์ผ€์ค„๋ง ๊ด€๋ จ ๋ฉ”์„œ๋“œ ๋ฉ”์„œ๋“œ ์„ค ๋ช… static void sleep(long millis) static void sleep(long millis, int nanos) ์ง€์ •๋œ ์‹œ๊ฐ„(์ฒœ๋ถ„์˜ 1์ดˆ ๋‹จ์œ„)๋™์•ˆ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ผ์‹œ์ •์ง€์‹œํ‚จ๋‹ค. ์ง€์ •ํ•œ ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ๋‚˜๋ฉด,cano721.tistory.com  ์ž๋ฐ”์˜ Thread.stop() ๋ฉ”์†Œ๋“œ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ์œ„ํ•œ ํ•จ์ˆ˜๋กœ deprecated ๋๋‹ค. stop()์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด interrupt() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์Šค๋ ˆ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.  Threa..
[Java] ์Šค๋ ˆ๋“œ ์ƒ๋ช…์ฃผ๊ธฐ ์ถœ์ฒ˜ChatGPThttps://www.baeldung.com/java-thread-lifecycle  ์ž๋ฐ”์˜ ์Šค๋ ˆ๋“œ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์™œ ์•Œ์•„์•ผ ํ•˜๋Š”๊ฐ€๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ด๋‹ค.1. ์ž์› ๊ด€๋ฆฌ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•„์š”ํ•˜์ง€ ์•Š์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์† ์‹คํ–‰๋˜๋ฉด ์ž์› ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.2. ๋™๊ธฐํ™” ๋ฌธ์ œ ํ•ด๊ฒฐ์Šค๋ ˆ๋“œ๊ฐ€ ์–ธ์ œ ์‹คํ–‰๋˜๊ณ  ์–ธ์ œ ๋ฉˆ์ถ”๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. ์ž˜๋ชป๋œ ๋™๊ธฐํ™”๋Š” ๋ฐ๋“œ๋ฝ์ด๋‚˜ ๋ ˆ์ด์Šค ์ปจ๋””์…˜๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.๋ฐ๋“œ๋ฝ Deadlock : ๋‘ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ์ƒ๋Œ€๋ฐฉ์˜ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋ฌดํ•œํžˆ ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ. ์ด ์ƒํƒœ์—์„œ๋Š” ์–ด๋–ค ์Šค๋ ˆ..
[์ž๋ฃŒ๊ตฌ์กฐ] ํ•ด์‹œ ์ถฉ๋Œ Hash Collision ์ถœ์ฒ˜https://ryu-e.tistory.com/87 ํ•ด์‹œ(Hash)์™€ ํ•ด์‹œ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•1. ํ•ด์‹œ๋ž€? ๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๊ธธ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ ํ•ด์‹œ ํ•จ์ˆ˜: ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์„ryu-e.tistory.com https://www.geeksforgeeks.org/introduction-to-hashing-2/ Introduction to Hashing - GeeksforGeeksA Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming ..
[Java] Retrofit2์—์„œ Annotation์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์‚ดํ”ผ๊ธฐ ์ถœ์ฒ˜https://github.com/square/retrofit GitHub - square/retrofit: A type-safe HTTP client for Android and the JVMA type-safe HTTP client for Android and the JVM. Contribute to square/retrofit development by creating an account on GitHub.github.comChatGPT๋ชฉํ‘œ์ปค์Šคํ…€ Annotation ํ™œ์šฉ๋ฒ•์„ Retrofit์„ ํ†ตํ•ด์„œ ๋ฐฐ์šด๋‹ค. ์–ด๋–ป๊ฒŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์‚ดํ•€๋‹ค.์ƒ์„ธํ•œ Annotation ์‚ฌ์šฉ ๋ฐ ๊ตฌํ˜„ ์‚ฌํ•ญ๊นŒ์ง€๋Š”... ๐Ÿ™ˆ ๋ถ€๋‹ด์Šค๋Ÿฌ์›Œ์š”.Retrofit์—์„œ Annotation์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์˜ ์žฅ์ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒAn..
[Java] PriorityQueue ์ถœ์ฒ˜ChatGPT์ž๋ฐ” 8 ์†Œ์Šค์ฝ”๋“œPriorityQueue๋Š” ์ž๋ฐ”์˜ ํ(queue) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋กœ, ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์š”์†Œ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ํ์ด๋‹ค. PriorityQueue๋Š” ํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์‚ฝ์ž…๋œ ์š”์†Œ๋“ค์„ ํŠน์ • ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜์—ฌ, ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๊ฐ€ ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•œ๋‹ค.๊ด€๋ จ ๊ธ€ -> [Java] Queue ์ธํ„ฐํŽ˜์ด์Šค๊ด€๋ จ ๊ธ€ -> [์ž๋ฃŒ ๊ตฌ์กฐ][Java] ํž™ Heap 1. PriorityQueue์˜ ์ฃผ์š” ํŠน์ง•์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜PriorityQueue๋Š” ์ผ๋ฐ˜์ ์ธ ํ์™€ ๋‹ฌ๋ฆฌ, ์š”์†Œ๋“ค์ด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋ฉฐ, Comparator๋ฅผ ์ œ๊ณตํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ์šฐ์„ ์ˆœ์œ„๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.ํž™(Heap)  ์ž๋ฃŒ๊ตฌ์กฐ๋‚ด๋ถ€์ ์œผ๋กœ..
[์ž๋ฃŒ ๊ตฌ์กฐ]์ด์ง„ ํž™ Binary Heap ์ถœ์ฒ˜ ChatGPT์ด์ง„ ํž™ (Binary Heap)์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ํ•œ ํ˜•ํƒœ๋กœ, ํž™ ํŠน์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ด์ง„ ํž™์€ ์ฃผ๋กœ ์ตœ์†Œ ํž™(Min Heap)๊ณผ ์ตœ๋Œ€ ํž™(Max Heap) ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์ตœ์†Œ ํž™ Min Heap๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ์—๋Š” ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ์œ„์น˜ํ•œ๋‹ค.์ตœ๋Œ€ ํž™ Max Heap๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ์—๋Š” ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์œ„์น˜ํ•œ๋‹ค. 1. ์ด์ง„ ํž™์˜ ํŠน์„ฑ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ Complete Binary Tree์ด์ง„ ํž™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋ ˆ๋ฒจ์€ ๊ฐ€๋“ ์ฐจ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์€ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋…ธ๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ์•ผ ํ•œ๋‹ค.ํž™ ์†์„ฑ ..