728x90
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ 1364

[intelliJ] Stash / Unstash

โœ… Git Stash ์ €์žฅ ๋‹จ๊ณ„ (IntelliJ์—์„œ)ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญ → Git → Stash Changes...์ฐฝ์ด ๋œจ๋ฉดMessage ์นธ์— ๋ฉ”๋ชจ ์ ๊ธฐ (์˜ˆ: ์ž„์‹œ์ €์žฅ - ๊ณ ๊ฐAPI ์ˆ˜์ • ์ค‘)๋‹ค๋ฅธ ์˜ต์…˜์€ ๊ทธ๋Œ€๋กœ ๋‘๋ฉด ๋ฉ๋‹ˆ๋‹ค(ํŠนํžˆ “Keep staged changes”๋‚˜ “Include untracked files”๋Š” ๊ธฐ๋ณธ๊ฐ’ ๊ทธ๋Œ€๋กœ OK)[Create Stash] ๋ฒ„ํŠผ ํด๋ฆญ๐Ÿ’ก ๊ทธ ๊ฒฐ๊ณผํ˜„์žฌ ์ˆ˜์ • ์ค‘์ด๋˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์ด ์ž„์‹œ ์ €์žฅ(Stash) ๋˜๊ณ ์ž‘์—… ํด๋”๋Š” ๊นจ๋—ํ•œ ์ƒํƒœ๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค(์ฆ‰, git diff ํ•˜๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ ์—†์Œ ์ƒํƒœ๊ฐ€ ๋จ)โœ… ๋‹ค์‹œ ๋ณต์›ํ•˜๋ ค๋ฉด (Unstash)๋‚˜์ค‘์— ์›๋ž˜ ์ž‘์—…์œผ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๐Ÿ‘‡ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญ → Git → Unstash Changes...๋ชฉ๋ก์— ์•„๊นŒ ์ €์žฅํ•œ ์Šคํƒœ์‹œ(์ž„์‹œ์ €์žฅ ..

IT์ง€์‹ 2025.10.13

[js] Date ๊ฐ์ฒด๋ผ๋ฆฌ ๋บ„์…ˆ(-)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” Date ๊ฐ์ฒด๋ผ๋ฆฌ ๋บ„์…ˆ(-)์„ ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ getTime()์ด ํ˜ธ์ถœ๋ผ์„œ ๋ฐ€๋ฆฌ์ดˆ(ms) ๋‹จ์œ„ ์ฐจ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ์˜ˆ์‹œconst d1 = new Date(2025, 9, 1); // 2025-10-01const d2 = new Date(2025, 9, 31); // 2025-10-31console.log(d2 - d1); // ๐Ÿ‘‰ 2592000000 (๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„, ์•ฝ 30์ผ)console.log(d2.getTime() - d1.getTime()); // ๐Ÿ‘‰ 2592000000 (์œ„ ๊ฒฐ๊ณผ์™€ ๋™์ผ)์ฆ‰, d2 - d1 ์€ ์‚ฌ์‹ค์ƒ d2.getTime() - d1.getTime() ๊ณผ ๊ฐ™์•„์š”. ๐Ÿ“Œ ํ™œ์šฉconst days = (info.end - info.star..

Front/JS & jQuery 2025.10.04

[js] getTime()

getTime()์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Date ๊ฐ์ฒด์—์„œ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ฉ”์„œ๋“œ๋กœ,ํ•ด๋‹น ๋‚ ์งœ๋ฅผ 1970๋…„ 1์›” 1์ผ 00:00:00 UTC๋ถ€ํ„ฐ์˜ ๋ฐ€๋ฆฌ์ดˆ(ms)๋กœ ๋ณ€ํ™˜ํ•œ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ“Œ ์˜ˆ์‹œconst now = new Date(); console.log(now); // ๐Ÿ‘‰ Tue Oct 01 2025 14:20:00 GMT+0900 (KST)console.log(now.getTime()); // ๐Ÿ‘‰ 1759359600000 (๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์ˆซ์ž) ๐Ÿ“Œ ํ™œ์šฉ - ๋‘ ๋‚ ์งœ ์ฐจ์ด ๊ตฌํ•˜๊ธฐconst d1 = new Date(2025, 9, 1); // 2025-10-01const d2 = new Date(2025, 9, 31); // 2025-10-31const diffMs = d2.getTime() - d1..

Front/JS & jQuery 2025.10.03

[JAVA] ์Šค๋ ˆ๋“œ์™€ wait()์™€ notify() ์ƒํ˜ธ์ž‘์šฉ

1๏ธโƒฃ ์ƒํ™ฉ ์„ค์ •๊ณต์œ  ๊ฐ์ฒด obj๊ฐ€ ์žˆ์Œ → ๋ชจ๋‹ˆํ„ฐ ํฌํ•จ๋‘ ์Šค๋ ˆ๋“œ: Thread A(์ƒ์‚ฐ์ž), Thread B(์†Œ๋น„์ž)๋ชฉ์ : Thread A๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์‚ฐํ•˜๋ฉด Thread B๊ฐ€ ์†Œ๋น„2๏ธโƒฃ ๋ชจ๋‹ˆํ„ฐ ๊ตฌ์กฐ ๊ทธ๋ฆผ [Object obj] โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Monitor โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Lock โ”‚ โ”‚ ← ํ˜„์žฌ ๋ฝ ์†Œ์œ  ์Šค๋ ˆ๋“œ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Wait Q โ”‚ โ”‚ ← wait() ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ ๋Œ€๊ธฐ ํ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜Lock: ํ˜„์žฌ ๊ฐ์ฒด์˜ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์ ์œ ํ•œ ์Šค๋ ˆ๋“œWait Q: wait() ํ˜ธ์ถœ๋กœ ๋Œ€๊ธฐ ์ค‘์ธ ์Šค๋ ˆ๋“œ ๋ชฉ๋ก3๏ธโƒฃ ์‹คํ–‰ ํ๋ฆ„ ์˜ˆ์ œ class Shared { p..

JAVA 2025.10.02

[JAVA] ๋ชจ๋‹ˆํ„ฐ(Monitor)

1๏ธโƒฃ ๋ชจ๋‹ˆํ„ฐ(Monitor)๋ž€?์ •์˜: ํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋™๊ธฐํ™” ์ œ์–ด ์žฅ์น˜์—ญํ• : ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์—์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๊ด€๋ฆฌ์‰ฝ๊ฒŒ ๋งํ•ด “๊ฐ์ฒด์— ๊ฑธ๋ฆฐ ์ž๋ฌผ์‡ (lock)” ๊ฐ™์€ ์กด์žฌ์˜ˆ์š”.๐Ÿ’ก ๋ชจ๋“  ๊ฐ์ฒด๋Š” Java์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ → ์Šค๋ ˆ๋“œ๊ฐ€ synchronized๋กœ ์ ‘๊ทผํ•  ๋•Œ ์ด ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์‚ฌ์šฉ2๏ธโƒฃ ๋ชจ๋‹ˆํ„ฐ ๋™์ž‘์Šค๋ ˆ๋“œ๊ฐ€ synchronized(obj) ๋ธ”๋ก์— ๋“ค์–ด๊ฐ€๋ฉด → obj์˜ ๋ชจ๋‹ˆํ„ฐ ๋ฝ์„ ํš๋“๋ชจ๋‹ˆํ„ฐ๋ฅผ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ๋งŒ ๋ธ”๋ก ์•ˆ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅ๋ธ”๋ก ์ข…๋ฃŒ ์‹œ → ๋ฝ ํ•ด์ œ, ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅwait()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด → ๋ฝ์„ ํ’€๊ณ  ๋Œ€๊ธฐ → ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ์ ‘๊ทผ ๊ฐ€๋Šฅnotify()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด → ๋Œ€๊ธฐ ์ค‘์ธ ์Šค๋ ˆ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊นจ์›€, ๋ฝ์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ3๏ธโƒฃ ๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ด[Object o..

JAVA 2025.10.01

[JAVA] Object.notify()

wait() ๊ณผ ๊ฐ™์ด ๋ณผ๊ฒŒ์š”.1๏ธโƒฃ ๊ธฐ๋ณธ ๊ฐœ๋…wait()ํ˜„์žฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ผ์‹œ ์ •์ง€์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ๋ชจ๋‹ˆํ„ฐ ๋ฝ์„ ํ•ด์ œํ•˜๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ notify() ๋˜๋Š” notifyAll()์„ ํ˜ธ์ถœํ•˜๋ฉด ๊นจ์–ด๋‚จ๋ฐ˜๋“œ์‹œ synchronized ๋ธ”๋ก ์•ˆ์—์„œ ํ˜ธ์ถœํ•ด์•ผ ํ•จnotify()wait()๋กœ ๋Œ€๊ธฐ ์ค‘์ธ ์Šค๋ ˆ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊นจ์›€๊ฐ์ฒด์˜ ๋ชจ๋‹ˆํ„ฐ ๋ฝ์„ ์†Œ์œ ํ•œ ์ƒํƒœ์—์„œ ํ˜ธ์ถœํ•ด์•ผ ํ•จnotifyAll()์€ ๋ชจ๋“  ๋Œ€๊ธฐ ์Šค๋ ˆ๋“œ๋ฅผ ๊นจ์›€๐Ÿ’ก ํ•ต์‹ฌ: wait() = ๊ธฐ๋‹ค๋ฆผ, notify() = ๊นจ์›€wait()์™€ notify()๋Š” ๋ชจ๋“  ๊ฐ์ฒด์— ์กด์žฌObject obj = new Object();synchronized(obj) { obj.wait(); // obj ๋ฝ ํ•ด์ œํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆผ obj.notify..

Front/JS & jQuery 2025.09.30

[JAVA] synchronized ๋ธ”๋ก

Java์—์„œ synchronized๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ์ž์›์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์˜ˆ์š”. 1๏ธโƒฃ ๊ธฐ๋ณธ ๊ฐœ๋…๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋ฌธ์ œ: ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๊ฐ™์€ ์ž์›(๋ณ€์ˆ˜, ๊ฐ์ฒด ๋“ฑ)์— ์ ‘๊ทผํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ด๊ฑฐ๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด์š”.ํ•ด๊ฒฐ์ฑ…: synchronized๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ์ œํ•œ.๋ฝ(Lock): synchronized๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ **๊ฐ์ฒด์˜ ๋ชจ๋‹ˆํ„ฐ(lock)**๋ฅผ ์‚ฌ์šฉํ•ด ์Šค๋ ˆ๋“œ ์ ‘๊ทผ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.2๏ธโƒฃ synchronized ์‚ฌ์šฉ ๋ฐฉ๋ฒ•2-1. ๋ฉ”์„œ๋“œ์— ์ ์šฉpublic synchronized void increment() { count++; // ํ•œ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ}์ด๋ ‡๊ฒŒ ํ•˜๋ฉด increment() ๋ฉ”์„œ๋“œ ์ „์ฒด๊ฐ€ ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.์žฅ์ ..

JAVA 2025.09.29

[JAVA] Object.wait()

Java์—์„œ wait()๋Š” ๋ชจ๋“  ๊ฐ์ฒด์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ผ๋Š” ์ ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Object ํด๋ž˜์Šค์— ์ •์˜๋˜์–ด ์žˆ์–ด์„œ ๋ชจ๋“  ๊ฐ์ฒด์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์ˆœํžˆ obj.wait()๋ผ๊ณ  ํ•˜๋ฉด ์กฐ๊ธˆ ๋ณต์žกํ•œ ๋™์ž‘ ์›๋ฆฌ๊ฐ€ ์žˆ์–ด์š”. 1๏ธโƒฃ ๊ธฐ๋ณธ ๊ฐœ๋…๋ชฉ์ : ์Šค๋ ˆ๋“œ๋ฅผ ์ผ์‹œ ์ •์ง€์‹œํ‚ค๊ณ , ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๋Š” ๊ฒƒ.์œ„์น˜: java.lang.Object ํด๋ž˜์Šค์— ์ •์˜๋จ.์กฐ๊ฑด: wait()๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋ชจ๋‹ˆํ„ฐ(๋ฝ)์„ ์†Œ์œ ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ (์ฆ‰, synchronized ๋ธ”๋ก ์•ˆ์—์„œ๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅ). synchronized(obj) { obj.wait(); // obj์˜ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ}2๏ธโƒฃ ์ฃผ์š” ํŠน์ง•ํŠน์ง•์„ค๋ช…๋ชจ๋‹ˆํ„ฐ ํ•„์š”wait()๋Š” ๋ฐ˜๋“œ์‹œ sy..

JAVA 2025.09.25

[JAVA] Thread.sleep()

Thread.sleep() ์€ ์ž๋ฐ”(Java) ์—์„œ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ผ์‹œ ์ •์ง€(๋Œ€๊ธฐ) ์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ์˜ˆ์š”. ๐Ÿ“Œ ๊ธฐ๋ณธ ํ˜•์‹Thread.sleep(long millis) throws InterruptedException millis : ๋ฉˆ์ถœ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„, 1์ดˆ = 1000ms)์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฒ„์ „์œผ๋กœ ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„๊นŒ์ง€ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:Thread.sleep(long millis, int nanos) throws InterruptedException๐Ÿ“Œ ๋™์ž‘ ๋ฐฉ์‹ํ˜ธ์ถœํ•œ ์Šค๋ ˆ๋“œ๋Š” ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์‹คํ–‰ ์ƒํƒœ(Running) ์—์„œ ์ผ์‹œ ์ •์ง€(Timed Waiting) ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.์ง€์ •๋œ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด, ๋‹ค์‹œ Runnable(์‹คํ–‰ ๋Œ€๊ธฐ) ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ณ , CPU ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์žก์•„์ฃผ๋ฉด ..

JAVA 2025.09.24
728x90
๋ฐ˜์‘ํ˜•