๊ธฐ๋ก๋ฐฉ

์ž๋ฐ” ๊ฐ์ฒด ์ง๋ ฌํ™” (serialization) ์ •๋ฆฌ ๋ณธ๋ฌธ

CS/Java

์ž๋ฐ” ๊ฐ์ฒด ์ง๋ ฌํ™” (serialization) ์ •๋ฆฌ

Soom_1n 2023. 2. 3. 01:19

๐Ÿ”ท ์ง๋ ฌํ™”(serialization) ๋ž€?

๐Ÿ’ก serialization : JVM ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ 
๐Ÿ’ก deserialization : ์ง๋ ฌํ™”๋œ ๋ฐ”์ดํŠธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์„œ JVM์œผ๋กœ ์ƒ์ฃผ์‹œํ‚ค๋Š” ๊ธฐ์ˆ 

  • ์ž๋ฐ” ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€์˜ ์ž๋ฐ” ์‹œ์Šคํ…œ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์ดํŠธํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ๊ณผ ๋ฐ”์ดํŠธ๋กœ ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ์„ ์•„์šธ๋Ÿฌ์„œ ์ง๋ ฌํ™”๋กœ ํ‘œํ˜„
  • ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†ํ™”(Persistence) : ์‹œ์Šคํ…œ์ด ์ข…๋ฃŒ๋˜๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๋Š” DB ๋“ฑ์— ์ €์žฅ
  • ๊ฐ์ฒด ๋ฐ์ดํ„ฐ ์ „์†ก : ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†กํ•ด์„œ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์—์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์ž๋ฐ” ์ง๋ ฌํ™”

 

๐Ÿ”ท ์ž๋ฐ” ์ง๋ ฌํ™” ์‚ฌ์šฉ ์ด์œ 

๐Ÿ”ธ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ์ข…๋ฅ˜

  • ๋ฌธ์ž์—ด ํ˜•ํƒœ์˜ ์ง๋ ฌํ™” ๋ฐฉ๋ฒ• (API๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถ”์ถœ)
    • CSV : ํ‘œํ˜•ํƒœ์˜ ๋‹ค๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ์‹œ ์‚ฌ์šฉ
    • XML, JSON : ๊ตฌ์กฐ์ ์ธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ
  • ์ด์ง„ ์ง๋ ฌํ™” ๋ฐฉ๋ฒ•
    • ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋ฐ ์ „์† ์†๋„์— ์ตœ์ ํ™”ํ•˜์—ฌ ๋ณ„๋„์˜ ์ง๋ ฌํ™” ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋Š” ๊ตฌ์กฐ
    • ์ง๋ ฌํ™” ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์†ก ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋„ ์ด์•ผ๊ธฐ ํ•จ
      • Protocol Buffer
        • ๊ตฌ๊ธ€์—์„œ ์ œ์•ˆํ•œ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํ”Œ๋žซํผ (ํŒŒ์ผ๋ช….proto)
        • ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ ์ปดํŒŒ์ผ๋Ÿฌ ํ•„์š”
      • Apache Avro

๐Ÿ”ธ ๊ทธ๋ ‡๋‹ค๋ฉด ์ž๋ฐ” ์ง๋ ฌํ™”๋Š” ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€

" ์ž๋ฐ” ์ง๋ ฌํ™” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์€ ์ž๋ฐ” ์‹œ์Šคํ…œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด์„œ ์กด์žฌํ•œ๋‹ค. "

  • ์ž๋ฐ” ์ง๋ ฌํ™”๋Š” ์ž๋ฐ” ์‹œ์Šคํ…œ์—์„œ ๊ฐœ๋ฐœ์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ์–ด์„œ
    ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ํด๋ž˜์Šค ๊ฐ์ฒด๋„ ์ง๋ ฌํ™” ์กฐ๊ฑด๋งŒ ์ง€ํ‚ค๋ฉด ํฐ ์ž‘์—… ์—†์ด ๋ฐ”๋กœ ์ง๋ ฌํ™” ๊ฐ€๋Šฅ
  • cvs, json์„ ์ด์šฉํ•ด๋„ ๋˜๊ธด ํ•จ (๋ชฉ์ ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์‚ฌ์šฉ)

 

๐Ÿ”ท ์ž๋ฐ” ์ง๋ ฌํ™” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๐Ÿ”ธ ์ง๋ ฌํ™” ์กฐ๊ฑด

  • class์— Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•ด์•ผ ํ•จ
  • class์˜ ๋ชจ๋“  ๋ฉค๋ฒ„๊ฐ€ ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • transient ํ‚ค์›Œ๋“œ ๋ถ™์ด๋ฉด ์ง๋ ฌํ™” ์ œ์™ธ (๊ฐœ์ธ ์ •๋ณด ๋“ฑ์˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ)

๐Ÿ”ธ ์—ญ์ง๋ ฌํ™” ์กฐ๊ฑด

  • ์ง๋ ฌํ™” ๋Œ€์ƒ์ด ๋œ ๊ฐ์ฒด์˜ ํด๋ž˜์Šค๊ฐ€ ํด๋ž˜์Šค ํŒจ์Šค์— ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ import ๋˜์–ด ์žˆ์–ด์•ผ ํ•จ
  • ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์ด ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ ค
  • ์ž๋ฐ” ์ง๋ ฌํ™” ๊ฐ์ฒด๋Š” ๋™์ผํ•œ serialVersionUID๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ
๐Ÿ’ก serialVersionUID : ๊ฐ์ฒด ์ƒํƒœ์˜ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ
    - ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์ง€๋งŒ, ์ง์ ‘ ์„ค์ • ๊ถŒ์žฅ
    - ๋ฉค๋ฒ„ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์ปดํŒŒ์ผ ์‹œ๋งˆ๋‹ค UID ๋ณ€๊ฒฝ
    - ์ง์ ‘ ์ž…๋ ฅํ•ด ๋†“์œผ๋ฉด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ
    - ๋ฉค๋ฒ„ ๋ณ€๊ฒฝ ํ›„ UID๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์„œ ์—ญ์ง๋ ฌํ™” ์‹œ ๋ฉค๋ฒ„๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๋ฉด InvaildClassException

๐Ÿ”ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

class Person implements Serializable{
	private static final long serialVersionUID = -134234123298291L;
    String name;
    String job;
    
    public Person(String name, String job) {
    	this.name = name;
        this.job = job;
    }
}
  • class์— Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†
public class Test {
	public static void main(String[]args) throws ClassNotFoundException {
    	Person p1 = new Person("๊ฐ•์ˆ˜๋ฏผ", "์‹ ์ž…์‚ฌ์›");
        Person p2 = new Person("๊ฐ•์ˆ˜์ด", "๋Œ€ํ‘œ์ด์‚ฌ");
        
        // ์ง๋ ฌํ™”
        try(FileOutputStream fos = new FileOutputStream("serial.out");
        	ObjectOutputStream oos = new ObjectOutputStream(fos)) {
            	oos.writeObject(p1);
                oos.writeObject(p2);
        } catch(IOException e) {
        	e.printStackTrace();
        }
        
        // ์—ญ์ง๋ ฌํ™”
        try(FileInputStream fis = new FileInputStream("serial.out");
        	ObjectInputStream ois = new ObjectInputStream(fis)) {
            	Person p3 = (Person)ois.readObject();
                Person p4 = (Person)ois.readObject();
        } catch(IOException e) {
        	e.printStackTrace();
        }
    }
}
  • ObjectOutputStream.writeObject(๊ฐ์ฒด ๋ช…) : ๊ฐ์ฒด ๊ฐ’์„ ํŒŒ์ผ์— ์”€ - ์ง๋ ฌํ™”
  • ObjectInputStream.readObject(๊ฐ์ฒด ๋ช…) : ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ฝ์–ด๋“ค์ž„ - ์—ญ์ง๋ ฌํ™”
  • IOException๊ณผ ClassNotFoundException ์ฒ˜๋ฆฌ ํ•„์š”
๐Ÿ’ก ์ŠคํŠธ๋ฆผ ์ฒด์ด๋‹ : ๋…ธ๋“œ ์ŠคํŠธ๋ฆผ, ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์„ ์—ฐ๊ณ„ํ•ด์„œ ์‚ฌ์šฉ (ex. File I/O์™€ ObjectOutputStream)

 

๐Ÿ”ท ๊ทธ ์™ธ

๐Ÿ”ธ ์ž๋ฐ”์˜ ๋˜ ๋‹ค๋ฅธ ์ง๋ ฌํ™” ๋ฐฉ๋ฒ•

  • Externalizable ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†
    • writeExternal(), readExternal() ๋ฉ”์„œ๋“œ ์ง์ ‘ ๊ตฌํ˜„ ํ•„์š”
    • ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐ์ฒด์˜ ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™”๋ฅผ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ

๐Ÿ”ธ ์ง๋ ฌํ™”๋Š” ์–ด๋””์— ์‚ฌ์šฉ๋˜๋Š”๊ฐ€

  • ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†ํ™” ํ•˜๊ณ , ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ณณ์— ์ด์šฉ
    • ์„œ๋ธ”๋ฆฟ ์„ธ์…˜ (Servlet Session)
      • ์„ธ์…˜์„ ์„œ๋ธ”๋ฆฟ ๋ฉ”๋ชจ๋ฆฌ ์œ„์—์„œ ์šด์šฉํ•œ๋‹ค๋ฉด ์ง๋ ฌํ™”๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์ง€๋งŒ, ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง, DB๋ฅผ ์ €์žฅํ•˜๋Š” ์˜ต์…˜ ๋“ฑ์„ ์„ ํƒํ•˜๊ฒŒ ๋˜๋ฉด ์„ธ์…˜ ์ž์ฒด๊ฐ€ ์ง๋ ฌํ™”๊ฐ€ ๋˜์–ด ์ €์žฅ๋˜์–ด ์ „๋‹ฌ
      • ๊ทธ๋ž˜์„œ ์„ธ์…˜์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋Š” ์ง๋ ฌํ™” ์กฐ๊ฑด์„ ๋งž์ถ”๋Š” ๊ฒƒ์„ ์ถ”์ฒœ
      • ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ WAS(ํ†ฐ์บฃ, ์›น๋กœ์ง ๋“ฑ)๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์„ธ์…˜์˜ ์ž๋ฐ” ์ง๋ ฌํ™” ์ง€์›
    • ์บ์‹œ (Cache)
      • ์ž๋ฐ”์—์„œ ํผํฌ๋จผ์Šค๋ฅผ ์œ„ํ•ด Ehcache, Redis, Memcached ๋“ฑ ์บ์‹œ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‹œ์Šคํ…œ์„ ๋งŽ์ด ์‚ฌ์šฉ
        • ๋™์ผํ•œ DB ์š”์ฒญ ์‹œ ์บ์‹œ์— ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€ ์‘๋‹ต
      • ์บ์‹œ ํ•  ๋ถ€๋ถ„์„ ์ž๋ฐ” ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉ
    • ์ž๋ฐ” RMI(Remote Method Invocation)
      • ์›๊ฒฉ ์‹œ์Šคํ…œ ๊ฐ„์˜ ๋ฉ”์‹œ์ง€ ๊ตํ™˜์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฐ”์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ์ˆ 
      • ๋ณดํ†ต์€ ์›๊ฒฉ์˜ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ IP์™€ ํฌํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์†Œ์ผ“ํ†ต์‹ ์„ ํ•ด์•ผ ํ•˜์ง€๋งŒ RMI๋Š” ๊ทธ ๋ถ€๋ถ„์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ์›๊ฒฉ์— ์žˆ๋Š” ์‹œ์Šคํ…œ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋กœ์ปฌ ์‹œ์Šคํ…œ์˜ ๋ฉ”์„œ๋“œ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ํ˜ธ์ถœ
      • ์›๊ฒฉ์˜ ์‹œ์Šคํ…œ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ์‹œ์— ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์‹œ์ง€(๋ณดํ†ต ๊ฐ์ฒด)๋ฅผ ์ž๋™์œผ๋กœ ์ง๋ ฌํ™” ์‹œ์ผœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
        ๊ทธ๋ฆฌ๊ณ  ์ „๋‹ฌ๋ฐ›์€ ์›๊ฒฉ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์—ญ์ง๋ ฌํ™”๋ฅผ ํ†ตํ•ด ๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ
      • ์ตœ๊ทผ์—๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ์ž๋ฐ” ์ง๋ ฌํ™”๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ๋น ์ง€์ง€ ์•Š๊ณ  ์ด์•ผ๊ธฐ ๋˜๋Š” ๊ธฐ์ˆ 

๐Ÿ”ธ ์‹ค๋ฌด์—์„œ์˜ ์ž๋ฐ” ์ง๋ ฌํ™” ์‚ฌ์šฉ์‹œ ์‹ ๊ฒฝ ์จ์•ผ ํ•  ๋ถ€๋ถ„

  • ์—ญ์ง๋ ฌํ™”์‹œ ํด๋ž˜์Šค ๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋ฌธ์ œ
    • ํด๋ž˜์Šค ๋ฉค๋ฒ„๊ฐ€ ๋ณ€๊ฒฝ๋˜์„œ SUID(serialVersionUID)๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด java.io.InvaildClassException ๋ฐœ์ƒ
      • SUID๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ํ•ด์‰ฌ๊ฐ’ ์‚ฌ์šฉ
    • SUID๊ฐ€ ๊ฐ™์•„๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ
  • ์šฉ๋Ÿ‰ ๋ฌธ์ œ
    • ํด๋ž˜์Šค ์•ˆ์— ํด๋ž˜์Šค ๋˜ ๋ฆฌ์ŠคํŠธ ๋“ฑ ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ™” ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๋ถ€์— ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ๋น„๋Œ€ํ•ด์ง
    • JSON ๊ฐ™์€ ์ตœ์†Œ์˜ ๋ฉ”ํƒ€์ •๋ณด๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ํ…Œ์ŠคํŠธ๋กœ ๋œ ํฌ๋งท๋ณด๋‹ค ๊ฐ™์€ ๋ฐ์ดํ„ฐ์—์„œ ์ตœ์†Œ 2๋ฐฐ ์ตœ๋Œ€ 10๋ฐฐ ์ด์ƒ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
    • ์˜ค์ง ์ž๋ฐ”๋กœ๋งŒ ์ฒ˜๋ฆฌ๊ฐ€๋Šฅํ•ด์„œ ๋ถˆํŽธ
1. ์™ธ๋ถ€ ์ €์žฅ์†Œ๋กœ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์งง์€ ๋งŒ๋ฃŒ์‹œ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ž๋ฐ” ์ง๋ ฌํ™”๋ฅผ ์‚ฌ์šฉ์„ ์ง€์–‘
2. ์—ญ์ง๋ ฌํ™”์‹œ ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ๊ฐ€ ์ƒ๊ธด๋‹ค๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๊ณ  ๊ฐœ๋ฐœ
3. ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ” ์ง๋ ฌํ™”์„ ์‚ฌ์šฉ X
4. ๊ธด ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๋Š” JSON ๋“ฑ ๋‹ค๋ฅธ ํฌ๋งท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ

 

๐Ÿ”ท Reference

- ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ "์ž๋ฐ” ์ง๋ ฌํ™”, ๊ทธ๊ฒƒ์ด ์•Œ๊ณ ์‹ถ๋‹ค. ํ›‘์–ด๋ณด๊ธฐํŽธ"
- ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ "์ž๋ฐ” ์ง๋ ฌํ™”, ๊ทธ๊ฒƒ์ด ์•Œ๊ณ ์‹ถ๋‹ค. ์‹ค๋ฌดํŽธ"
- ์ž๋ฐ” ์ง๋ ฌํ™”(Serialization)์— ๋Œ€ํ•œ ์†์‰ฌ์šด ์„ค๋ช…
- Java์˜ ์ง๋ ฌํ™”(Serialize)๋ž€?
- Doit! ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ
728x90

'CS > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Java Map์˜ computeIfAbsent(), computeIfPresent() ๋ฉ”์„œ๋“œ  (0) 2024.05.19