ํผ์ ๋์ ์ฌ๋ณด๋... ์๋ฐ ๊ณต๋ถ (3)
์ค๋๋ ํผ์ ๋์ ์ฌ๋ณด๋..
Throw vs Throws
์์ธ? ์๋ฌ?
์๋ฌ
์๋ฌ๋ ์์คํ ๋ ๋ฒจ์์ ๋ฐ์ํ๋ ์์ฃผ ์ฌ๊ฐํ ์์ค์ ๋ฌธ์ ์ด๋ค.
์๋ฅผ ๋ค๋ฉด OutOfMemoryError, StackOverflowError, LinkageError ๋ฑ์ด ์๋ค.
์ด๋ฌํ ์๋ฌ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฏธ๋ฆฌ ์์ธกํ์ง ๋ชปํ๋ฉฐ ๋ก์ง์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
์์ธ
์ด์ ๋ฐํด ์์ธ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ๋ก์ง์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
๋ฏธ๋ฆฌ ์์ธกํ์ฌ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ํตํด ํธ๋ค๋งํ๋ ๊ฒ์ด ์ค์ํ๋ค.
throw : ์์ธ๋ฅผ ๊ฐ์ ๋ก ๋ฐ์์ํจ ํ, ์์ ๋ธ๋ญ์ด๋ catch๋ฌธ์ผ๋ก ์์ธ๋ฅผ ๋์ง๋ค.
๊ฐ๋ฐ์์ ํ๋จ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
throws : ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์์๋ฉ์๋๋ก ์์ธ๋ฅผ ๋์ง๋ค.
https://day0404.tistory.com/47
Dev Day
์คํํธ์ ์ ๋์ ํ๋ ์ฃผ๋์ด ๊ฐ๋ฐ์์ ๊ฐ๋ฐ ์ด์ผ๊ธฐ
day0404.tistory.com
https://tlatmsrud.tistory.com/49
[Java] ์์ธ์ฒ๋ฆฌ, Throw, Throws๋ / ์์ธ์ ์๋ฌ์ ์ฐจ์ด / ์์
1. ๊ฐ์ ์คํฐ๋๋ก File ์ ๋ก๋, ๋ค์ด๋ก๋ ๋ก์ง์ ์์ฑํ๋ ๋์ค, ํน์ ๋ถ๋ถ์ ๋นจ๊ฐ์ค์ด ๋ฑ์ฅํ๋ค. ์์ฐ์ค๋ฝ๊ฒ ๋ง์ฐ์ค ๊ฐ์ ธ๊ฐ๋ณด๋ Exception!. ๋ณ์๊ฐ ์์ด add thrwos declaration ํด๋ฆญ. ์ํฉ์ข ๋ฃ. ์ด์ฒ๋ผ ์
tlatmsrud.tistory.com
์ ์ถ๋ ฅ ์คํธ๋ฆผ
ํ๋ก๊ทธ๋จ์ ์ธ๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ๋ถ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ์์ ์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ค.
์ด๋ ๋ฐ์ดํฐ๋ ์ด๋ ํ ํต๋ก๋ฅผ ํตํด์ ๋ฐ์ดํฐ๊ฐ ์ด๋๋๋๋ฐ, ์ด ํต๋ก๋ฅผ Stream์ด๋ผ๊ณ ํ๋ค.
stream : ์ค๊ธฐ, ํ๋ฅด๋ค
ํ์ค ์ ์ถ๋ ฅ
System.in → ํ์ค์ ๋ ฅ System.in.read() : ํค๋ณด๋ ์ ๋ ฅ
System.out → ํ์ค์ถ๋ ฅ System.out.println() : ์ฝ์ ์ถ๋ ฅ
System.err → ํ์ค์๋ฌ (out๊ณผ ์ฌ์ฉ๋ฒ์ ๊ฐ์ง๋ง ์ฝ์์์ ์ฐํ๋ ํฐํธ ์ปฌ๋ฌ๊ฐ ๋นจ๊ฐ์์ผ๋ก ์ถ๋ ฅ๋๋ค.)
1์ฐจ ์คํธ๋ฆผ & 2์ฐจ ์คํธ๋ฆผ
1์ฐจ ์คํธ๋ฆผ (๊ธฐ๋ณธ ์คํธ๋ฆผ) : ๋จ๋ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
2์ฐจ ์คํธ๋ฆผ (๋ณด์กฐ ์คํธ๋ฆผ) : ๊ผญ ๊ธฐ๋ณธ ์คํธ๋ฆผ์ ์ฐ๊ฒฐํด์ ์ฌ์ฉํด์ผ ํ๊ณ , ๋จ๋ ์ผ๋ก ์ฌ์ฉ ๋ถ๊ฐ๋ฅ.
๊ธฐ๋ณธ ์คํธ๋ฆผ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด์ ์ฌ์ฉ
๊ธฐ๋ณธ ์คํธ๋ฆผ๊ณผ ๋ณด์กฐ ์คํธ๋ฆผ์ ์๋ก ํ์ ์ด ๋ง์์ผ ํ๋ค.
์ฝ๊ธฐ๋ ์ฝ๊ธฐ๋ผ๋ฆฌ, ์ฐ๊ธฐ๋ ์ฐ๊ธฐ๋ผ๋ฆฌ ์ฐ๊ฒฐํด์ผ ํ๊ณ ,
๋ฐ์ดํธ ๋จ์๋ผ๋ฆฌ, ๋ฌธ์๋จ์๋ผ๋ฆฌ ์ฐ๊ฒฐํด์ผ ํ๋ค.
FileInputStream + BufferedInputStream
FileOutputStream + BufferedOutputStream
FileReader + BufferedReader
FileWriter + BufferedWriter
JDBC
Java DataBases Connectivity (interface)
์๋ฐ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค์ด๋ค.
Cookie vs Session
์ธ์ ํธ๋ํน(Session Tracking) : ์น ํ์ด์ง๋ ์๋ธ๋ฆฟ๋ผ๋ฆฌ ์ํ๋ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด ํ์ํ ์นํ์ด์ง ์ฐ๊ฒฐ ๊ธฐ๋ฅ
[http ํ๋กํ ์ฝ ํน์ง]
์๋ฅผ ๋ค์ด ๋ก๊ทธ์ธ์ ํ๋ฉด ๋ก๊ทธ์ธ ์ ์ง๊ฐ ์ง์ํด์ ๋์ด์ผํ๋๋ฐ, http ํ๋กํ ์ฝ ํน์ง์ ์ฐ๊ฒฐ ์ ์ง๋ฅผ ํ์ง ์๋๋ค.
→ (์ํ๋ฅผ ์ ์งํ์ง ์๋) stateless ํ๋กํ ์ฝ์ด๋ค.
→ ๋น์ฐ๊ฒฐ์งํฅ, ๋ฌด์ํ ํ๋กํ ์ฝ์ด๋ค.
→ ๊ณผ๊ฑฐ์ ๊ตํํ์๋ request์ response์ ์ํ๋ฅผ ๊ด๋ฆฌํ์ง ์๋ ๊ฒ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ์ ๋, ์๋ต์ ๋ณด๋ธ ํ ์ฐ๊ฒฐ์ ๋๋ ์ฒ๋ฆฌ๋ฐฉ์์ ๊ฐ์ง๊ณ ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ์งํ์ง ์๋๋ค.
Cookie์ Session์ ํฐ ์ฐจ์ด์
์ฟ ํค๋ ํด๋ผ์ด์ธํธ(๋ก์ปฌ)์ ์ ์ฅ๋๋ค. ์๋ ๋น ๋ฆ. ๋ณด์ ์ทจ์ฝ.
์ธ์ ์ ์๋ฒ์ ์ ์ฅ๋๋ค. ์๋ ๋๋ฆผ. ๋ณด์ ์ข์.
Cookie
request์ response์ ์ฟ ํค ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ํ์ ํ๊ธฐ ์ํ ์์คํ ์ด๋ค.
ํด๋ผ์ด์ธํธ PC์ ์ฟ ํค ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ์น ํ์ด์ง๋ค๋ผ๋ฆฌ ๊ณต์ ํ๋ค.
ํด๋ผ์ด์ธํธ์ PC์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฏ๋ก ๋ณด์์ ์ทจ์ฝํ๋ค.
๊ทธ๋์ ๋ณด์๊ณผ ๋ฌด๊ดํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
๋, ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์๋ ๊ณ์ ์ฟ ํค ์ ๋ณด๊ฐ ์ฌ์ฉ์์ ์ปดํจํฐ์ ๋จ์์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฟ ํค ํ๋๋น ์ต๋ ํฌ๊ธฐ๋ ์ผ๋ฐ์ ์ผ๋ก 4KB์ด๋ค.
1๏ธโฃ Persistence ์ฟ ํค
ํด๋ผ์ด์ธํธ์ ํ์ผ๋ก ์ ๋ณด ์ ์ฅ, ์ฌ์ฉ์๊ฐ ๋ง๋ฃ ์๊ฐ ์ง์ ๊ฐ๋ฅ
2๏ธโฃ session ์ฟ ๊ธฐ
๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ, ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์ ์๋ ์๋ฉธ
Session
์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ์น ํ์ด์ง๋ค์ด ๊ณต์ ํ ์ ์๋๋ก ํ๋ค.
ํด๋ผ์ด์ธํธ PC๊ฐ ์๋, ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
๋ก๊ทธ์ธ ์ ๋ณด์ ๊ฐ์ ๋ณด์์ด ํ์ํ ๋ฐ์ดํฐ๋ session์ ์ด์ฉํ๋ค.
๊ฐ ํด๋ผ์ด์ธํธ์ ๊ณ ์ ์ธ์ ID๋ฅผ ๋ถ์ฌํ๊ณ , ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ฐ ํด๋ผ์ด์ธํธ ์๊ตฌ์ ๋ง๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
์คํ๋ง ์ฌ์ฉ์์ Session์ ๋ํ์ฌ
์ธ์ ์ ์ ์ดํ๊ธฐ ์ํด์ Java์ interface์ธ HttpSession ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
https://kimfk567.tistory.com/51
[์คํ๋ง] Session๊ณผ Cookie , HttpSession
session์ด๋? ์ธ์ ๊ณผ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ HTTPํ๋กํ ์ฝ์ ํน์ง์ด์ ์ฝ์ ์ ๋ณด์ํ๊ธฐ ์ํด์๋ค. HTTPํ๋กํ ์ฝ์ ๋น์ฐ๊ฒฐ์งํฅ, ๋ฌด์ํ ํ๋กํ ์ฝ์ด๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ์๋ ์๋ต์ ๋ณด๋ธ
kimfk567.tistory.com
์ง๋ ฌํ(Serialize)
๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํ๋ค.
์๋ฐ ๋ด๋ถ์์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์ ์๋ฐ ์์คํ ์์๋ ์ฌ์ฉํ ์ ์๋๋ก ๋ฐ์ดํธํํ๋ก ๋ฐ์ดํฐ ๋ณํํ๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
์๋ฆฌ์ผํ (serialization) : ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋ ๊ณผ์
- ์๋ฐ ์์คํ ๋ด๋ถ์์ ์ฌ์ฉ๋๋ Object ๋๋ Data๋ฅผ ์ธ๋ถ์ ์๋ฐ ์์คํ ์์๋ ์ฌ์ฉํ ์ ์๋๋ก byte ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๊ธฐ์
- JVM์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ๋์ด์๋ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ byteํํ๋ก ๋ณํํ๋ ๊ธฐ์
โ ๊ทผ๋ฐ ์ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋๊ฑฐ์ง โ
- ๋ฐ์ดํฐ ์ ์ก
๊ฐ์ฒด๋ฅผ (๋คํธ์ํฌ๋ฅผ ํตํด) ์ ์กํ๊ฑฐ๋ ํ์ผ์ ์ ์ฅํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํด์ผํ๋ค.
์๋ํ๋ฉด, ๋คํธ์ํฌ๋ ํ์ผ ์์คํ ์ ์ฃผ๋ก ๋ฐ์ดํธ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์์ฑ
๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฑฐ๋ ํ์ผ์ ์์์ ์ผ๋ก ์ ์ฅํ ๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ค์ ๋ณต์ํ ์ ์๋ค.