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

๐Ÿ’Ž48

[Spring] AOP ๊ฐœ๋… AOP(Aspect Oriented Programming) ์˜ ์•ฝ์ž๋กœ ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ๊ด€์  ์ง€ํ–ฅ์€ ์‰ฝ๊ฒŒ ๋งํ•ด ์–ด๋–ค ๋กœ์ง์„ ๊ธฐ์ค€์œผ๋กœ ํ•ต์‹ฌ์ ์ธ ๊ด€์ , ๋ถ€๊ฐ€์ ์ธ ๊ด€์ ์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋ณด๊ณ  ๊ทธ ๊ด€์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ๊ฐ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋“ˆํ™”๋ž€ ์–ด๋–ค ๊ณตํ†ต๋œ ๋กœ์ง์ด๋‚˜ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ฌถ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋ชจ๋“ˆํ™”๋ฅผ ํ†ตํ•ด ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ์—์„œ ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•œ๋‹ค. ๋ถ„๋ฆฌํ•œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ์• ์ŠคํŽ™ํŠธ(Aspect)๋ผ๋Š” ๋…ํŠนํ•œ ๋ชจ๋“ˆ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์„œ ์„ค๊ณ„ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ• ํ•ต์‹ฌ๊ธฐ๋Šฅ์—์„œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•ด์„œ Aspectํ˜•ํƒœ๋กœ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ฒƒ ํ•ต์‹ฌ๊ธฐ๋Šฅ : ์—…๋ฌด ๋กœ์ง์„ ํฌํ•จํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•ต์‹ฌ๊ธฐ๋Šฅ(Core Concerns) ๋ถ€๊ฐ€๊ธฐ๋Šฅ : ํ•ต์‹ฌ๊ธฐ๋Šฅ์„ ๋„์™€์ฃผ๋Š” ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ(๋กœ๊น…, ๋ณด์•ˆ ๋“ฑ)์„ ๋ถ€๊ฐ€๊ธฐ๋Šฅ(Cross-c.. 2021. 4. 18.
[Java] Primitive type vs Reference type ๊ธฐ๋ณธํ˜•(Primitive type) ์ด 8๊ฐ€์ง€์˜ ๊ธฐ๋ณธํ˜• ํƒ€์ž…(Primitive type)์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค. ๋น„๊ฐ์ฒด, Null์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ ๋ฌธ๋ฒ•์ƒ ์—๋Ÿฌ → ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ ํƒ€์ž… ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ๊ธฐ๋ณธ๊ฐ’ ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„ ๋ฒ”์œ„ ๋…ผ๋ฆฌํ˜• boolean 1 byte false true, false ์ •์ˆ˜ํ˜• byte 1 byte 0 -128 ~ 127 short 2 byte 0 -32,768 ~ 32,767 int(๊ธฐ๋ณธ) 4 byte 0 -2,147,483,648 ~ 2,147,483,647 long 8 byte 0L -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ์‹ค์ˆ˜ํ˜• float 4 byte 0.0F .. 2021. 4. 18.
[Java] HashMap, LinkedHashMap, TreeMap, Hashtable ์ฐจ์ด '์ฝ”๋”ฉ์ธํ„ฐ๋ทฐ'์™€ '์œ ํŠœ๋ธŒ'๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. HashMap, LinkedHashMap, TreeMap, Hashtable ๋„ค ๊ฐ€์ง€ ๋ชจ๋‘ ํ‚ค(key)์—์„œ ๊ฐ’(value)์œผ๋กœ์˜ ๋Œ€์‘ ๊ด€๊ณ„๊ฐ€ ์žˆ๊ณ  ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ํด๋ž˜์Šค๋“ค์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ํ‚ค๊ฐ€ ๋†“์ด๋Š” ์ˆœ์„œ์— ์žˆ๋‹ค. HashMap ๊ฒ€์ƒ‰๊ณผ ์‚ฝ์ž…์— O(1) ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ํ‚ค์˜ ์ˆœ์„œ๋Š” ๋ฌด์ž‘์œ„๋กœ ์„ž์—ฌ ์žˆ๋‹ค. ๊ตฌํ˜„์€ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด๋กœ ๋˜์–ด ์žˆ๋‹ค. null key์™€ null value๋ฅผ ๋ชจ๋‘ ํ—ˆ์šฉ LinkedHashMap ๊ฒ€์ƒ‰๊ณผ ์‚ฝ์ž…์— O(1) ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ํ‚ค์˜ ์ˆœ์„œ๋Š” ์‚ฝ์ž…ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ๊ตฌํ˜„์€ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฒ„ํ‚ท(double-linked bucket)์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. TreeMap ๊ฒ€์ƒ‰๊ณผ ์‚ฝ.. 2021. 4. 3.
[C++] ๊ณต๋ฐฑ ํฌํ•จ ๋ฌธ์ž์—ด ์ž…๋ ฅ | stringstream ๋ฌธ์ž์—ด ์ถ”์ถœ ๋ฌธ์ž์—ด ์ž…๋ ฅ ๋จผ์ €, ๊ณต๋ฐฑ์„ ํฌํ•จํ•œ ๋ฌธ์ž์—ด์„ ํ•œ ์ค„๋กœ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. 1 2 3 4 5 6 7 // string ๊ณต๋ฐฑ ํฌํ•จ ๋ฌธ์ž์—ด ์ž…๋ ฅ string str; getline(cin, str); // char ๊ณต๋ฐฑ ํฌํ•จ ๋ฌธ์ž์—ด ์ž…๋ ฅ char ch[100]; cin.getline(ch, 100); cs string ์ž๋ฃŒํ˜•์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ—ค๋” ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ istream ๊ฐ์ฒด ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ž…๋ ฅ ๋ฐ›์„ string ๋ณ€์ˆ˜ ์ด๋ฆ„ ์„ธ ๋ฒˆ์งธ ์ธ์ž๋กœ delimitChar(์ƒ๋žต๊ฐ€๋Šฅ. default '\n') delimitChar์— ' '๋ฅผ ์ค€๋‹ค๋ฉด, ๊ณต๋ฐฑ ๊ธฐ์ค€์œผ๋กœ ๋Š์–ด ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. char ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” cin.geline์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ์ค„๋กœ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ ํ—ค.. 2021. 3. 2.
[C++] ํ˜•์‹ ์ง€์ •์ž, ์„œ์‹ ์ง€์ •์ž %[ํ”Œ๋ž˜๊ทธ][ํญ][.์ •๋ฐ€๋„][๊ธธ์ด]์„œ์‹์ง€์ •์ž ์˜ˆ์ œ 1 ํญ๊ณผ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ•จ๊ป˜ ์จ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํญ ์•ž์— 0์„ ๋„ฃ์œผ๋ฉด ๋‚จ๋Š” ๊ณต๊ฐ„์—๋Š” ๊ณต๋ฐฑ ๋Œ€์‹  0์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค. printf("%06d\n", 20); // ์ถœ๋ ฅ ํญ์„ 6์นธ์œผ๋กœ ์ง€์ •, ๋‚จ๋Š” ๊ณต๊ฐ„์€ 0์œผ๋กœ ์ฑ„์›€ printf("%06d\n", 2000); // ์ถœ๋ ฅ ํญ์„ 6์นธ์œผ๋กœ ์ง€์ •, ๋‚จ๋Š” ๊ณต๊ฐ„์€ 0์œผ๋กœ ์ฑ„์›€ ํญ์„ 6์นธ, ๋‚จ๋Š” ๊ณต๊ฐ„์„ 0์œผ๋กœ ์ฑ„์šฐ๋„๋ก ํ–ˆ์œผ๋ฏ€๋กœ 20 ์•ž์—๋Š” 0์ด 4๊ฐœ, 2000 ์•ž์—๋Š” 0์ด 2๊ฐœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ํญ์„ 6์นธ, ๋‚จ๋Š” ๊ณต๊ฐ„์„ 0์œผ๋กœ ์ฑ„์šฐ๋„๋ก ํ–ˆ์œผ๋ฏ€๋กœ 20 ์•ž์—๋Š” 0์ด 4๊ฐœ, 2000 ์•ž์—๋Š” 0์ด 2๊ฐœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ์‹คํ–‰ ๊ฒฐ๊ณผ ↓ 0์ด 4๊ฐœ ์ฑ„์›Œ์ง 000020 002000 ↑ 0์ด 2๊ฐœ ์ฑ„์›Œ์ง ์˜ˆ์ œ 2 ์‹ค์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” %f, %e๋Š” ์ •๋ฐ€.. 2021. 1. 13.
[C++] cin, cout ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); or ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ์œ„์˜ ์ฝ”๋“œ๋ฅผ main() ์•ˆ์— ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 0์ด๋“ , NULL์ด๋“  ๊ฐ™์€ ์˜๋ฏธ๋กœ ์“ฐ์ธ๋‹ค. ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ๋งŒ๋Šฅ์€ ์•„๋‹ˆ๋ผ๊ณ  ํ•˜๋‹ˆ ๋ถˆ๊ฐ€ํ”ผํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๊ณ , ๋˜๋„๋ก scanf, printf๋ฅผ ์‚ฌ์šฉํ•˜์ž. algospot.com :: ์ž์œ ๊ฒŒ์‹œํŒ: ๊ฐ ์–ธ์–ด๋ณ„ input method ๋น„๊ต ๊ฐ ์–ธ์–ด๋ณ„ input method ๋น„๊ต 13๊ฐœ์˜ ๋Œ“๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค. algospot.com cin ๊ณผ scanf ์— ๋Œ€ํ•ด์„œ ACM-ICPC, Olympiad ๋ฌธ์ œ ์ •๋ฆฌ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ.. 2020. 10. 16.
[Java] ==, equals, instanceof == vs equals ๊ธฐ๋ณธํ˜• ๋น„๊ต : == ๊ฐ์ฒด ๋น„๊ต : equals ์ž์‹ (this)์™€ ์ฃผ์–ด์ง„ ๊ฐ์ฒด(obj)๋ฅผ ๋น„๊ตํ•œ๋‹ค. ๊ฐ™์œผ๋ฉด true, ๋‹ค๋ฅด๋ฉด false ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•˜๋ฏ€๋กœ ๊ฐ’์„ ๋น„๊ตํ•˜๋„๋ก ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•ด์•ผํ•œ๋‹ค. obj์˜ ํ˜•๋ณ€ํ™˜ ํ›„ ๊ฐ’ ๋น„๊ต ๊ธฐ๋ณธํ˜•๊ณผ ๊ฐ์ฒด(์ฐธ์กฐํ˜•)์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๐Ÿ‘‰์—ฌ๊ธฐ ์ฐธ๊ณ ! instanceof ์—ฐ์‚ฐ์ž ์ฐธ์กฐ๋ณ€์ˆ˜ ํ˜•๋ณ€ํ™˜ ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ์— ์‚ฌ์šฉ. ํ˜•๋ณ€ํ™˜์€ ์กฐ์ƒ๊ณผ ์ž์†๊ฐ„์˜ ๋ณ€ํ™˜์—์„œ๋งŒ ๊ฐ€๋Šฅ. ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ๋ฉค๋ฒ„๋ณ€์ˆ˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ˜•๋ณ€ํ™˜์„ ํ•œ๋‹ค. (์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ์ธ์Šคํ„ด์Šค์˜ ์›๋ž˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ˜•๋ณ€ํ™˜์„ ํ•œ๋‹ค.) ์˜ˆ) Car์—์„œ๋Š” ์ž์†ํƒ€์ž…์˜ ๋ฉ”์†Œ๋“œ๋„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ FireEngine์œผ๋กœ ํ˜•๋ณ€ํ™˜ํ•˜๊ณ  FireEngine์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.. 2020. 9. 9.
[Java] int ์™€ Integer ์ฐจ์ด์  ๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• ๊ธฐ๋ณธํ˜• : ์˜ค์ง 8๊ฐœ(boolean, char, byte, short, int, long, float, double) ์‹ค์ œ ๊ฐ’์„ ์ €์žฅ ๊ธฐ๋ณธํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜ - ๊ฐ’์„ ์ฝ๊ธฐ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ์กฐํ˜• : ๊ธฐ๋ณธํ˜•์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€(String, System ๋“ฑ) ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅ ์ฐธ์กฐํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜ - ์ฝ๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. (์ฃผ์†Œ๋ฅผ ์ „๋‹ฌ ๋ฐ›์œผ๋‹ˆ๊นŒ) ๋ž˜ํผ(wrapper) ํด๋ž˜์Šค ๊ธฐ๋ณธํ˜•๊ฐ’์„ ๊ฐ์‹ธ๋Š” ํด๋ž˜์Šค. 8๊ฐœ์˜ ๊ธฐ๋ณธํ˜•์„ ๊ฐ์ฒด๋กœ ๋‹ค๋ค„์•ผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค. ๐Ÿ‘‰ Boolean, Character, Byte, Short, Integer, Long, Float, Double Java๋Š” 90% ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ๋ชจ๋“ ๊ฒƒ์— ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์„ฑ๋Šฅ๋•Œ๋ฌธ์— ๊ธฐ๋ณธํ˜•์ด ํ•„์š”ํ–ˆ๋‹ค. ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๊ธฐ๋ณธํ˜•์ด๋ฉด ์ฃผ.. 2020. 9. 8.
[Java] finalize ๋ฉ”์†Œ๋“œ ๋ฐœ๋‹จ c++์„ ์ฃผ๋กœ ์ผ๋‹ค๋ณด๋‹ˆ ์ƒ์„ฑ์ž, ์†Œ๋ฉธ์ž์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ํ•™๊ต ๊ณผ์ œ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ Swing ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๋‹ค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊บผ์งˆ ๋•Œ ๋‹ค๋ฅธ ๊ฐ์ฒด๋„ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์–ด์„œ Java ์†Œ๋ฉธ์ž๋ฅผ ์•Œ์•„๋ณด์•˜๋‹ค. Java์—๋Š” ์†Œ๋ฉธ์ž ๋ฉ”์†Œ๋“œ๋Š” ๋”ฐ๋กœ ์—†๊ณ , ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” finalize๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ์ž๋ฐ”๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC)๊ฐ€ ํž™ ์˜์—ญ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— finalize ๋ฉ”์†Œ๋“œ๋ฅผ ์“ฐ๋”๋ผ๋„ ์–ธ์ œ ๋™์ž‘ํ• ์ง€ ๋ชจ๋ฅด๊ณ (์‹คํ–‰์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ) ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์œ„ํ—˜ํ•˜๋‹ค๋Š” ์˜๊ฒฌ์ด ์žˆ์—ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ Java9๋ถ€ํ„ฐ๋Š” Object.finalize๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ๊ธ€์„ ๋ณด๊ณ  ๋‚˜์„œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์†Œ๋“œ์ž„์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ์ฐพ์•„๋ดค๋˜ ์งˆ๋ฌธ์˜ ๋‹ต๋ณ€๋„ ๋Œ€๋ถ€๋ถ„ finalize()๋ฅผ ํ†ตํ•œ ๋ฐฉ๋ฒ•์ด.. 2020. 9. 8.