soogoori

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ์ œ๋„ค๋ฆญ ไธŠ

์ œ๋„ค๋ฆญ์ž๋ฐ” 5๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ผ ๋•Œ๋งˆ๋‹ค ํ˜•๋ณ€ํ™˜ํ•  ํ•„์š” ์—†์Œ์ปฌ๋ ‰์…˜์ด ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ์ปดํŒŒ์ผ๋Ÿฌ์— ์•Œ๋ ค์คŒ ๐Ÿ‘‰ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์•Œ์•„์„œ ํ˜•๋ณ€ํ™˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ์— ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋จ ๐Ÿ‘‰ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค or ์ œ๋„ค๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค = ์ œ๋„ค๋ฆญ ํƒ€์ž…๋งค๊ฐœ๋ณ€์ˆ˜ํ™” ํƒ€์ž…  = List ๐Ÿ‘‰ String์€ ์ •๊ทœ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜ E (List)์— ํ•ด๋‹นํ•˜๋Š” ์‹ค์ œ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜  26. Raw ํƒ€์ž…์€ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ธฐ raw ํƒ€์ž…์ด๋ž€ ์ œ๋„ค๋ฆญ ํƒ€์ž…์—์„œ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋ฅผ ๋งํ•จex). List์˜ raw ํƒ€์ž…์€ List์ž„ ๐Ÿ‘‰ ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ํ•œ์ฐธ ๋’ค์ธ ๋Ÿฐํƒ€์ž„์—์•ผ ์•Œ์•„์ฑŒ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ ! โœณ๏ธ ์ปฌ๋ ‰์…˜์˜ raw ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ // Stamp ์ธ์Šคํ„ด์Šค๋งŒ ์ทจ๊ธ‰private f..

Database/MongoDB

[MongoDB] ReactiveMongo~~

ReactiveMongoRepository๋ž€ ?  ๋น„๋™๊ธฐ์ ์ด๊ณ  ๋ฆฌ์•กํ‹ฐ๋ธŒํ•œ ๋ฐฉ์‹์œผ๋กœ MongoDB์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ €์žฅ์†Œ ์ƒ์„ฑ๐Ÿ‘‰ CRUD, ํŽ˜์ด์ง•, ์ •๋ ฌ, ์ฟผ๋ฆฌ ์ž‘์„ฑ ๊ธฐ๋Šฅ ๋“ฑ ์ œ๊ณต T : repository์—์„œ ๊ด€๋ฆฌํ•  ๋„๋ฉ”์ธ ์—”ํ‹ฐํ‹ฐ ํƒ€์ž…ID : ์—”ํ‹ฐํ‹ฐ์˜ ์‹๋ณ„์ž(ID) ํƒ€์ž…  ReactiveMongoTemplateMongoDB์™€ ์ง์ ‘์ ์ธ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉReactiveMongoRepository๋Š” ์ฃผ๋กœ ๋‹จ์ˆœํ•œ CRUD ์ž‘์—…๊ณผ ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ์— ์ ํ•ฉํ•˜์ง€๋งŒ, ReactiveMongoTemplate์€ ๋” ์„ธ๋ถ€์ ์ด๊ณ  ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์ž‘์—…์— ์œ ๋ฆฌ โœณ๏ธ ์˜ˆ์‹œ ์ฝ”๋“œ @Service@RequiredArgsConstructor@Slf4jpublic class ProductCategory..

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ไธ‹

23. ํƒœ๊ทธ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ ํ™œ์šฉํ•˜๊ธฐํƒœ๊ทธ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค ๐Ÿ‘‰ ์ƒ์ˆ˜ ํ•„๋“œ๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค, ์—ด๊ฑฐํ˜•(enum) ๋“ฑ์„ ํ™œ์šฉํ•ด์„œ ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•˜๋Š”์ง€ ์‹๋ณ„class Figure { enum Shape {RECTANGLE, CIRCLE}; // ํƒœ๊ทธ ํ•„๋“œ - ํ˜„์žฌ ๋ชจ์–‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. final Shape shape; // ๋‹ค์Œ ํ•„๋“œ๋“ค์€ ๋ชจ์–‘์ด ์‚ฌ๊ฐํ˜•(RECTANGLE)์ผ ๋•Œ๋งŒ ์“ฐ์ธ๋‹ค. double length; double width; // ๋‹ค์Œ ํ•„๋“œ๋Š” ๋ชจ์–‘์ด ์›(CIRCLE)์ผ ๋•Œ๋งŒ ์“ฐ์ธ๋‹ค. double radius; // ์›์šฉ ์ƒ์„ฑ์ž Figure(double radius) { shape = Shape.CIRCLE; ..

Java/๐Ÿ“• Effective Java

[๐Ÿ“• Effective Java] ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ไธญ

18. ์ƒ์†๋ณด๋‹ค๋Š” ์ปดํฌ์ง€์…˜ ์‚ฌ์šฉ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ผ์€ ์œ„ํ—˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๊ณผ ๋‹ฌ๋ฆฌ ์ƒ์†์€ ์บก์Šํ™”๋ฅผ ๊นจ๋œจ๋ฆผ ๐Ÿ‘‰ ์ƒ์œ„ ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š๋ƒ์— ๋”ฐ๋ผ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ๋™์ž‘์— ์ด์ƒ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ์ƒ์œ„ ํด๋ž˜์Šค๋Š” ๋ฆด๋ฆฌ์ฆˆ๋งˆ๋‹ค ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ๋กœ ์ธํ•ด ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์˜ค๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Œ โœณ๏ธ ์ƒ์†์„ ์ž˜๋ชป ์‚ฌ์šฉํ•œ ์˜ˆ public class InstrumentedHashSet extends HashSet { private int addCount = 0; public InstrumentedHashSet(){ } public InstrumentedHashSet(int initCap, float loadFactor){ super(i..

๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ๊ธ€/๐Ÿ“– WIL

[๐Ÿ“– WIL] jwt.getClaimAsString()

jwt.getClaimAsString()JSON Web Token (JWT) ์—์„œ ํŠน์ • ํด๋ ˆ์ž„์„ ๋ฌธ์ž์—ด๋กœ ์ถ”์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ โœด๏ธ claim ์ด๋ž€? ๐Ÿ‘‰ JWT์— ํฌํ•จ๋œ ์ •๋ณด๋กœ, ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด๋‚˜ ๊ถŒํ•œ ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ  โœณ๏ธ JWT ๊ตฌ์„ฑHeader : ํ† ํฐ ํƒ€์ž…๊ณผ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํฌํ•จPayload : ํด๋ ˆ์ž„ ๋ฐ์ดํ„ฐ ํฌํ•จSignature : ํ† ํฐ์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ•˜๋Š” ์„œ๋ช…  getClaimAsString()์˜ ๋™์ž‘์ž…๋ ฅ : ํด๋ ˆ์ž„์˜ ํ‚ค๋ฅผ ์ „๋‹ฌ์ถœ๋ ฅ : ํ•ด๋‹น ํด๋ ˆ์ž„์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜// JWT ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •String username = jwt.getClaimAsString("username");String role = jwt.getClaimAsString("role");System..

๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ๊ธ€/๐Ÿ’ฃ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[๐Ÿ’ฃ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] Could not move temporary workspace

์–ด๋–ค ์ƒํ™ฉ์ด์—ˆ๋Š”์ง€ ?  gradle project๋ฅผ loadํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋‹ค. JDK๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜๋˜๊ณ  ํ™˜๊ฒฝ ๋ณ€์ˆ˜(JAVA_HOME)๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€๋„ ํ™•์ธํ–ˆ๋‹ค. ์บ์‹œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ buildํ•ด๋„ ๋˜‘๊ฐ™๊ธธ๋ž˜ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.   ํ•ด๊ฒฐ 1. devleopment ๋ธŒ๋žœ์น˜๋กœ checkout ํ–ˆ๋Š”์ง€ ํ™•์ธ ์ฒ˜์Œ์—๋Š” master ๋ธŒ๋žœ์น˜์— ์žˆ๋Š” build.gradle ํŒŒ์ผ์„ loadํ–ˆ๋‹ค. development ๋ธŒ๋žœ์น˜์— ์žˆ๋Š” ๊ฒƒ์œผ๋กœ reload ํ•ด๋ณด๋‹ˆ ๋ช‡๋ช‡ ํ”„๋กœ์ ํŠธ๋Š” ์ž˜ build๋˜์—ˆ์ง€๋งŒ ์•„์ง๊นŒ์ง€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‚จ์•„์žˆ์—ˆ๋‹ค.     ํ•ด๊ฒฐ 2. gradle-wrapper.properties ํŒŒ์ผ์—์„œ distributionUrl ๐Ÿ‘‰ gradle ๋ฒ„์ „ ๋‚ฎ์ถ”๊ธฐdistributionUr..

Java

[Java ๊ณ ๊ธ‰ํŽธ] ์Šค๋ ˆ๋“œ ์ƒ์„ฑ๊ณผ ์‹คํ–‰

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œโœณ๏ธ ํ”„๋กœ์„ธ์Šค์šด์˜์ฒด์ œ ์•ˆ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ–๊ณ  ์žˆ์Œ ๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผ X์šด์˜์ฒด์ œ์—์„œ ๋ณ„๋„์˜ ์ž‘์—… ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌ๋จ ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จ โ‡๏ธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ์ฝ”๋“œ ์„น์…˜ : ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ถ€๋ถ„๋ฐ์ดํ„ฐ ์„น์…˜ : ์ „์—ญ ๋ณ€์ˆ˜ ๋ฐ ์ •์  ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ถ€๋ถ„ (๊ธฐํƒ€ ๋ถ€๋ถ„)ํž™ : ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์Šคํƒ : ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ ์ƒ์„ฑ๋˜๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ (์Šค๋ ˆ๋“œ์— ํฌํ•จ) โœณ๏ธ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ ์กด์žฌ ๊ฐ€๋Šฅ ๐Ÿ‘‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๊ณต์œ  โ‡๏ธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ๊ณต..

AWS

[AWS] AWS IoT Core๋ž€ ?

AWS IoT Core๋ž€ ? ํ˜„์žฌ ํŒ€ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์š” ๊ธฐ์ˆ ๋กœ, ํŒ€ ์ด๋ฆ„์— ๋ถ€ํ•ฉํ•˜์—ฌ ํ™œ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. AWS์—์„œ ๋งŽ์€ ์„œ๋น„์Šค ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•Œ๊ณ  ์žˆ์—ˆ์œผ๋‚˜, IoT๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ž…์‚ฌํ•˜๊ณ  ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. AWS IoT Core์˜ ์„œ๋น„์Šค๋ฅผ ์š”์•ฝํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.๐Ÿ‘‰ IoT ๊ธฐ๊ธฐ์™€ ํด๋ผ์šฐ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์„œ๋น„์Šค๋กœ, ๊ธฐ๊ธฐ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„์„ ์œ„ํ•œ ์ค‘์•™ ํ—ˆ๋ธŒ ์—ญํ•  ์ˆ˜ํ–‰์ฆ‰, ๋‹ค๋ฅธ AWS ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ์žฅ์น˜์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก IoT ์žฅ์น˜๋ฅผ ํด๋ผ์šฐ๋“œ์— ์—ฐ๊ฒฐํ•˜๋Š” ์„œ๋น„์Šค ์ œ๊ณต   MQTT (Message Queuing Telemetry Transport)IoT ๋””๋ฐ”์ด์Šค์™€ ํด๋ผ์šฐ๋“œ ๊ฐ„์˜ ๊ฒฝ๋Ÿ‰ ํ†ต์‹  ํ”„..

soogoori
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (6 Page)