Spread your wings
close
프로필 배경
프로필 로고

Spread your wings

  • 분류 전체보기 (119)
    • 개발 (23)
      • 자바 (14)
      • Database (3)
      • Spring (6)
      • 테스트 (1)
      • 병렬 프로그래밍 (14)
      • 리눅스 (3)
      • python (2)
      • Front End (4)
      • 리팩토링 (5)
      • Data Engineering (11)
      • 생각 (9)
    • 기타 (9)
    • IT (2)
      • 읽은 자료들 (0)
    • 경제 (1)
    • 생각 (4)
    • 독서노트 (7)
  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

Effective Java 3/E - 8장 메서드 요약정리

8장 메서드 아이템 49 - 매개변수가 유효한지 검사하라 메서드 몸체가 실행되기 전에 매개변수를 확인하면 잘못된 값이 넘어왔을 때 즉각적이고 깔끔한 방식으로 예외를 던질 수 있다. 자바 7에 추가된 java.util.requireNonNull 메서드는 유연하고 사용하기도 편하니, 더 이상 null 검사를 수동으로 하지 않아도 된다. 메서드나 생성자를 작성할 때 그 매개변수들에 어떤 제약이 있을지 생각해야 하고 그 제약들은 문서화하고 코드 시작 부분에서 명시적으로 검사해야 한다. 아이템 50 - 적시에 방어적 복사본을 만들라 클라이언트가 여러분의 불변식을 깨뜨리려 혈안이 되어 있다고 가정하고 방어적으로 프로그래밍해야 한다. 가변 필드를 생성자 매개변수로 받아 클래스 필드에 저장하는 경우 각각을 방어적으로 ..

  • format_list_bulleted 개발/자바
  • · 2019. 5. 26.
  • textsms

Effective Java 3/E - 7장 람다와 스트림 요약정리

아이템 42 - 익명 클래스보다는 람다를 사용하라 함수 객체와 람다식 함수 객체 : 추상 메서드를 하나만 담은 인터페이스로 람다식이 등장하기 전에는 익명 클래스를 사용해서 주로 만들었음 Collections.sort(words, new Comparator() { public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }) 자바8에와서 추상 메서드 하나짜리 인터페이스는 특별한 의미를 인정받아 특별한 대우를 받게됨 람다식을 이용해서 훨씬 간결한 코드를 만들 수 있게됨 Collections.sort(words, (s1, s2) -> Integer.compare(s1.length(), s2.leng..

  • format_list_bulleted 개발/자바
  • · 2019. 5. 19.
  • textsms

JSON 스키마

XML의 DTD나 스키마와 유사하게 json에도 스키마에 대한 표준적인 부분이 존재하고 있는데요(http://json-schema.org/), 스키마 포맷도 json 포맷입니다. { "contentsId": "123456", "title": "꽹과리", "metadata": [ { "propertyName": "category", "propertyContent": "타악기" }, { "propertyName": "category", "propertyContent": "동양악기" } ] } 위의 예제 데이터에 대한 스키마를 작성하면 다음과 같이 작성할 수 있습니다. 스키마 포맷{ "type": "object", // 루트 타입은 객체 "properties": { // 속성 정의 "contentsId": {..

  • format_list_bulleted 개발/자바
  • · 2017. 6. 30.
  • textsms

JSON STREAMING API

크지 않은 json 데이터를 파싱할 때는 한번에 파싱해도 메모리 사용량이 많지 않지만,파싱해야할 json 데이터가 굉장히 크다면 메모리 사용량이 많기 때문에 주의가 필요한 부분입니다. 참고삼아 제 로컬 PC에서 jackson 라이브러리로 json 파일을 객체로 파싱하는 로직을 실행해서 visualvm으로 확인해본 결과는 다음과 같았습니다.약 300 KB 파일을 한번에 객체로 파싱 : 약 60 MB 힙메모리 사용약 50 MB 파일을 한번에 객체로 파싱 : 약 150 MB 힙메모리 사용약 150 MB 파일을 한번에 객체로 파싱 : 약 750 MB 힙메모리 사용 jackson 사용 예제streaming api는 json 데이터를 다음과 같은 토큰 단위로 읽어서 처리합니다.객체의 시작 ( { ), 끝 ( } )..

  • format_list_bulleted 개발/자바
  • · 2017. 6. 30.
  • textsms

FileLock

Java에서 File에 락을 걸기위한 방법으로 FileLock이라는 것을 사용할 수 있다.File file = new File("D:\\data\\people.txt"); FileChannel channel = null; try { channel = new FileOutputStream(file).getChannel(); FileLock fileLock = channel.tryLock(); fileLock.release(); } catch (IOException e) { e.printStackTrace(); }다음과 같이 한다. 락을 걸고 사용 후에는 해제를 해줘야 한다. 락을 확보했다가 해제하는 것을 100만번 반복하는데 1000 밀리초 정도 걸렸다. (Intel i7-4790 3.60GHz) 락을 확..

  • format_list_bulleted 개발/자바
  • · 2017. 1. 11.
  • textsms

checked exception과 unchecked exception

자바 exception에는 checked exception과 unchecked exception 두 가지가 있다. checked exception - 메소드 시그니쳐에서 명시되어 있어야 하고 그 예외를 발생시킬 수 있는 메소드를 호출하는 쪽에서 예외에 대한 처리를 필수적으로 해줘야 한다.(try/catch or throw) - Exception 클래스를 상속받아 만들면 checked exception이 된다. unchecked exception - 메소드 시그니쳐에 명시되어 있을 필요는 없고 그 예외를 발생시킬 수 있는 메소드를 호출하는 쪽에서 예외에 대한 처리를 필수적으로 해줄 필요는 없다. - RuntimeException 클래스를 상속받아 만들면 unchecked exception이 된다. - un..

  • format_list_bulleted 개발/자바
  • · 2016. 7. 18.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (119)
    • 개발 (23)
      • 자바 (14)
      • Database (3)
      • Spring (6)
      • 테스트 (1)
      • 병렬 프로그래밍 (14)
      • 리눅스 (3)
      • python (2)
      • Front End (4)
      • 리팩토링 (5)
      • Data Engineering (11)
      • 생각 (9)
    • 기타 (9)
    • IT (2)
      • 읽은 자료들 (0)
    • 경제 (1)
    • 생각 (4)
    • 독서노트 (7)
최근 글
인기 글
최근 댓글
태그
  • #ChatGPT
  • #Docker
  • #HDFS
  • #airflow
  • #카프카
  • #Java
  • #디-버그
  • #Hadoop
  • #mysql
  • #hdfs update
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바