๐ŸŒ WEB/JAVA

์Šค๋ ˆ๋“œ๋Š” ์‹คํ–‰๋Œ€๊ธฐ ์ƒํƒœ์™€ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์ž์‹ ์˜ run() ๋ฉ”์„œ๋“œ๋ฅผ ์กฐ๊ธˆ์”ฉ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋”์ด์ƒ ์‹คํ–‰ํ•  ์ฝ”๋“œ๊ฐ€ ์—†์„ ๋•Œ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ ๊ฐ์ฒด ์ƒ์„ฑ -> start() -> ์‹คํ–‰๋Œ€๊ธฐ(์Šค์ผ€์ค„๋ง์œผ๋กœ ์ธํ•ด) ์‹คํ–‰ -> ์ข…๋ฃŒ - ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง์œผ๋กœ ์„ ํƒ๋œ ์Šค๋ ˆ๋“œ๊ฐ€ cpu๋ฅผ ์ ์œ ํ•˜๊ณ  run() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค (์‹คํ–‰ ์ƒํƒœ) - ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง์— ์˜ํ•ด ๋‹ค์‹œ ์‹คํ–‰๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.(์‹คํ–‰๋Œ€๊ธฐ ์ƒํƒœ) ์–ด๋–ป๊ฒŒ ์ œ์–ดํ• ๊นŒ? 1. ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ ์ผ์‹œ ์ •์ง€ sleep() ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. Thread ํด๋ž˜์Šค์˜ ์ •์  ๋ฉ”์„œ๋“œ์ธ sleep() ์„ ์‚ฌ์šฉํ•œ๋‹ค. Thread.sleep(1000) // 1์ดˆ -> ๋ฐ€๋ฆฌ์„ธ์ปจ๋“œ (1/1000) ๋‹จ์œ„ * ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์ด ๋˜๊ธฐ์ „..
๋™๊ธฐํ™” ๋ฉ”์„œ๋“œ์™€ ๋™๊ธฐํ™” ๋ธ”๋ก ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์Šค๋ ˆ๋“œ๋“ค์ด ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•ด์„œ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์Šค๋ ˆ๋“œa๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ ๊ฐ์ฒด๋ฅผ b์— ์˜ํ•ด ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์–ด์„œ a๊ฐ€ ์˜๋„ํ–ˆ๋˜ ๊ฒฐ๊ณผ์™€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ค‘์ธ ์Šค๋ ˆ๋“œ์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฐ์ฒด์— ์ž ๊ธˆ์„ ๊ฑธ์–ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ž„๊ณ„ ์˜์—ญ์„ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค. -> ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ์ฑ„ ๋‚ด๋ถ€์˜ ๋™๊ธฐํ™” ๋ฉ”์†Œ๋“œ ๋˜๋Š” ๋ธ”๋ก์— ๋“ค์–ด๊ฐ€๋ฉด ์ฆ‰์‹œ ๊ฐ์ฒด์— ์ž ๊ธˆ์„ ๊ฑธ์–ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์˜์—ญ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ข…๋ฃŒ ๋˜๋ฉด ์ž ๊ธˆ์ด ํ’€๋ฆฐ๋‹ค. ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค public synchronized void method(){ // ์ž„๊ณ„ ์˜์—ญ } ์ผ๋ถ€ ๋‚ด์šฉ๋งŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ธ”..
๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์œ„์˜ ๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น์ด๋ผ๋ฉด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์—์„œ์˜ ๋ฉ€ํ‹ฐ ํƒœ์Šคํ‚น์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. 1. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์„œ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ์—์„œ ์‚ฌ์šฉ 2. UI๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ 3. ๋‹ค์ˆ˜ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ - ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž‘์—… ์Šค๋ ˆ๋“œ๋ณด๋‹ค ๋จผ์ € ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ์ž‘์—… ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์† ์‹คํ–‰ ์ค‘์ด๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค. - ์ž‘์—… ์Šค๋ ˆ๋“œ ๋ช‡ ๊ฐœ์˜ ์ž‘์—…์„ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ๊ฐ ์ž‘์—…๋ณ„๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (์ž‘์—…1) (์ž‘์—…2) (ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ž‘์—…์„ ๊ฒฐ์ •) -> ๋ฉ”์ธ์Šค๋ ˆ๋“œ ์Šค๋ ˆ๋“œ1 ์Šค๋ ˆ๋“œ2 Threadํด..
์ธํ”„๋Ÿฐ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ - ์ตœ๋ฒ”๊ท ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ ์€ํ•„๊ธฐ ๋…ธํŠธ์ž…๋‹ˆ๋‹ค. ์ง์ ‘ ์‹ค์ „์—์„œ Java๋ฅผ ์“ฐ๊ฒŒ ๋˜๋ฉด์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ค‘์š”์„ฑ์ด ๋ผˆ๋ฅผ ๊ฐ•ํƒ€ํ–ˆ๋‹ค... ๊ณต๋ถ€ํ•˜์ž! "Software maintenance is not keep it working like before it is keep being useful in a changing world" - Jessica Kerr ์œ ์ง€๋ณด์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์œ ์šฉํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ถ„์„๊ณผ ์ˆ˜์ •์ด ๋น ๋ฅด๊ฒŒ ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋น„์šฉ๊ณผ ๋ณ€ํ™” ๋‚ฎ์€ ๋น„์šฉ์œผ๋กœ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 1. ํŒจ๋Ÿฌ๋‹ค์ž„ ๊ฐ์ฒด ์ง€ํ–ฅ, ํ•จ์ˆ˜ํ˜•, ๋ฆฌ์•กํ‹ฐ๋ธŒ ๋“ฑ 2. ์ฝ”๋“œ, ์„ค๊ณ„, ์•„ํ‚คํ…์ฒ˜ DRY, TDD, SOLID, DDD, ... ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, MSA, ... 3. ..
์ด๋ฒˆ์— ์Šคํƒ€ํŠธ์—…์— ์ทจ์—…ํ•˜๋ฉด์„œ ๋งŽ์€ ๊ฑธ ๋ฐฐ์šฐ๋Š” ๋™์‹œ์— ๋งŽ์€ ๊ฒŒ ์‹ซ์–ด์กŒ๋‹ค. ํ•˜์ง€๋งŒ ๋ฒ„ํ‹ฐ๊ณ  ๋‚˜๋ฉด ์ถ”์–ต์ด๊ณ  ๋‚˜์˜ ๊ฒฝ๋ ฅ์ด ๋˜๊ฒ ์ง€ ... ใ…  ๊ฟป ์šฐ์„  ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋“ค์–ด๊ฐ€์„œ ์ฒ˜์Œ์œผ๋กœ ์‚ฌ์šฉํ•ด ๋ดค๋‹ค. ํ•™์›์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ฐฐ์› ์ง€๋งŒ ์ด๋ฒˆ์— ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐ€๋…์„ฑ๋ฉด์—์„œ ๋งค์šฐ ์ข‹๋‹ค๊ณ  ๋Š๊ผˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์„ ์œ„ํ•ด ์ •๋ฆฌํ•œ๋‹ค! Spring Boot ์—์„œ api ์„ค๊ณ„ ์ค‘ ๋ฐฐ์†ก ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์†ก์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š”๋ฐ 1,2,3... ๋“ฑ ์ˆซ์ž๋กœ ํ‘œํ˜„๋˜์–ด 1์ด ๋ฌด์—‡์ธ์ง€ 2๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ผ์ผ์ด ์ฐพ์•„๋ณด๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์› ๋‹ค. ๋˜ํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋•Œ ์–ด๋–ค ๊ฑด์ง€ ํ—ท๊ฐˆ๋ฆด ๊ฑฐ ๊ฐ™์•„ Enumํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. @Getter public enum SomethingStatus { PAYMENT_COMPLETE(0), PREPARING(1), CANCEL(..
๊ธฐ๋ณธํƒ€์ž… / ์ฐธ์กฐํƒ€์ž… ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. (immutable / mutable) ๊ธฐ๋ณธํƒ€์ž…์€ ์ •์ˆ˜, ์‹ค์ˆ˜, ๋ฌธ์ž, ๋…ผ๋ฆฌ ๋ฆฌํ„ฐ๋Ÿด์„ ์ €์žฅํ•˜๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ข…๋ฅ˜ ๊ธฐ๋ณธํƒ€์ž… ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ณธ๊ฐ’ ์ •์ˆ˜ byte 8bit 1byte 0 char 16bit 2byte ์œ ๋‹ˆ์ฝ”๋“œ(\u0000), ASCII, ๋ฌธ์žํ˜• short 16bit (2byte) 0 int 32bit (4byte) 0 long 64bit (8byte) 0 ์‹ค์ˆ˜ (๋ถ€๋™ ์†Œ์ˆ˜์ ) float 32bit (4byte) 0.0F double 8bit (1byte) 0.0 ๋…ผ๋ฆฌ boolean 8bit (1byte) false ๋ฉ”๋ชจ๋ฆฌ์—๋Š” 0๊ณผ 1์„ ์ €์žฅํ•˜๋Š” ์ตœ์†Œ ๊ธฐ์–ต ๋‹จ์œ„์ธ bit๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด bit 8๊ฐœ๋ฅผ ๋ฌถ์œผ๋ฉด byte๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด byte๊ฐ€ ํด์ˆ˜๋ก ํ‘œํ˜„ํ•˜๋Š” ๊ฐ’์œผ ๋ฒ”..
Enum์„ ํ†ตํ•ด ์–ป๋Š” ๊ธฐ๋ณธ์ ์ธ ์žฅ์  ๋ฌธ์ž์—ด๊ณผ ๋น„๊ตํ•ด, IDE์˜ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ž๋™์™„์„ฑ, ์˜คํƒ€๊ฒ€์ฆ, ํ…์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง ๋“ฑ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ‘๋“ค์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง์‹œ ๋ณ€๊ฒฝ ๋ฒ”์œ„๊ฐ€ ์ตœ์†Œํ•˜ ๋œ๋‹ค. ๋‚ด์šฉ์˜ ์ถ”๊ฐ€๊ฐ€ ํ•„์š”ํ•ด๋„, Enum์ฝ”๋“œ์™ธ์— ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. Java Enum์ธ ๊ฒฝ์šฐ int๊ฐ’์ด ์•„๋‹ˆ๋ผ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํด๋ž˜์Šค์ด๋‹ค! ์šฐ์„  enumํƒ€์ž…์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค ์ด์ œ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋˜๋Š”๋ฐ, ๊ด€๋ก€์ ์œผ๋กœ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•œ๋‹ค. Entityํด๋ž˜์Šค์— ์„ ์–ธํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ String์ด ์•„๋‹Œ enum์„ ์„ ์–ธํ•œ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ @Enumerated(EnumType.SPRING)์„ ์„ ์–ธํ•˜๋ฉด Enumํ•„๋“œ๊ฐ€ ํ…Œ์ด๋ธ”์— ์ €์žฅ์‹œ ์ˆซ์žํ˜•์ด ์•„๋‹Œ, Enum์˜ ์ด๋ฆ„์ด ์ €์žฅ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” GUEST,USER..
//postRepository์—์„œ ๋„˜์–ด์˜จ ๊ฒฐ๊ณผ๋ฅผ postsRepository.findAllDesc().stream() //Stream์„ ํ†ตํ•ด map์œผ๋กœ new PostsListResponseDto ์— ๋งคํ•‘ ํ•ด์ค€๋‹ค. //PostsListResponseDto์—์„œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ postRepository์—์„œ ๋„˜์–ด์˜จ ๊ฒฐ๊ณผ Entity posts๋ฅผ ๋ฐ›๊ณ  ์žˆ์œผ๋ฏ€๋กœ //๊ฒฐ๊ณผ์ ์œผ๋กœ .map(posts -> new PostsListResponseDto(posts)) .map(PostsListResponseDto::new) //collect๋ฅผ ์‚ฌ์šฉํ•ด์„œ List๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. .collect(Collectors.toList()); stream์ด๋ผ๋Š” ๊ฒŒ ์žˆ๋Š” ๊ฒƒ ์กฐ์ฐจ ๋ชฐ๋ผ์„œ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ๋‹ค ๋žŒ๋‹ค์‹์„ ๋ฐฐ์šด ์ ์ด ์—†์œผ๋‹ˆ. ใ… ..
์• ์ •์“ฐ
'๐ŸŒ WEB/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)