일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 이펙티브자바
- 네트워크
- 알고리즘
- 자료구조
- MariaDB
- DDD
- vue.js
- 자바스터디
- 자바
- AWS RDS
- java
- 알고리즘분석
- 인덱스
- react
- jpa
- 자바예외
- 이펙티브 자바
- 이팩티브 자바
- SQL쿡북
- 클린코드
- 도메인 주도 개발 시작하기
- CleanCode
- 기술면접
- 스프링부트와AWS로혼자구현하는웹서비스
- aop
- mysql
- 인프런김영한
- 인프런백기선
- AWS
- 혼공SQL
- Today
- Total
목록전체 글 (272)
기록이 힘이다.
문서화 주석을 작성하는 규칙은 공식 언어 명세에 속하진 않지만 자바 프로그래머라면 응당 알아야 하는 업계 표준 API라 할 수 있다. 여러분의 API를 올바로 문서화하려면 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에 문서화 주석을 달아야 한다. 메서드용 문서화 주석에는 해당 메서드와 클라이언트 사이의 규약을 명료하게 기술해야 한다. @throw태그로 비검사 예외를 선언, @param태그를 이용해 그 조건에 영향받는 매개변수에 기술 전제조건과 사후조건뿐만 아니라 부작용도 문서화해야 한다. ex) 백그라운드 스레드를 시작시키는 메서드 메서드의 계약을 완벽히 기술하려면 모든 매개변수에 @param 태그를, 반환 타입이 void가 아니라면 @return 태그를, 발생할 가능성이 있는 (검사든 비검사든..
-컴파일 에러를 신경쓰지 않아도 되며, -try-catch로 감싸거나 -메서드 선언부에 선언하지 않아도 된다. -그렇다면 우리는 비검사 예외만 쓰면 되는걸까? 검사 예외는 왜 있는 것일까? UncheckedException 예제 public class MyApp{ public void hello(){ System.out.println("hello"); throw new MyException(); } public static void main(String[] args){ MyApp myApp = new MyApp(); myApp.hello(); } } 편리하다는 것을 이유로 사용하면 안된다. 왜 잡지 않은 예외를 메서드에 선언해야 하는가? -메서드에 선언한 예외는 프로그래밍 인터페이스의 일부다. 즉, 해당..
11.1 결과셋을 페이지로 매기기 11.2 테이블에서 n개 행 건너뛰기 11.3 외부 조인을 사용할 때 OR 로직 통합하기 11.4 역수 행 확인하기 select * from V -------------------------------------------------------------------- select distinct v1.* from V v1, V v2 where v1.test1 = v2.test2 and v1.test2 = v2.test1 and v1.test1
지역변수의 유효 범위를 최소로 줄이면 코드 가족성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 ‘가장 처음 쓰일 때 선언하기’다. 컬렉션이나 배열을 순회하는 권장 관용구 for(Element e: c){ ... } 반복자를 사용해야 하는 상황이면 for-each 문 대신 전통적인 for문을 쓰는 것이 낫다. for(Iterator i = c.iterator(); i.hasNext();){ Element e = i.next(); ... } for문은 변수 유효 범위가 for문의 범위와 일치하여 똑같은 이름의 변수를 여러 반복문에서 써도 서로 아무런 영향을 주지 않는다. Iterator i = c.iterator(); while(i.hasNext()){ ..
자바 8 전에는 메서드가 특정 조건에서 값을 반환할 수 없을 때 취할 수 있는 선택지가 두 가지 있었다. 예외를 던지거나, (반환 타입이 객체 참조라면) null을 반환하는 것이다. 자바 버전이 8로 올라가면서 또 하나의 선택지가 생겼다. 그 주인공인 Optional는 null이 아닌 T타입 참조를 하나 담거나, 혹은 아무것도 담지 않을 수 있다. 옵셔널은 원소를 최대 1개 가질 수 있는 ‘불변’ 컬렉션이다. 보통은 T를 반환해야 하지만 특정 조건에서는 아무것도 반환하지 않아야 할 때 T 대신 Optional를 반환하도록 선언하면 된다. 옵셔널을 반환하는 메서드는 예외를 던지는 메서드보다 유연하고 사용하기 쉬우며, null을 반환하는 메서드보다 오류 가능성이 작다. public static Optiona..
현업에서 자바를 쓰는 분들과 함께 자바스터디를 시작한지 3주가 되었다. '이펙티브 자바'를 챕터별로 나눠서 읽고 있다. 몰랐던 자바에 대한 정보를 많이 알게 되는데 같이 하는 분들은 이미 알고 있는 눈치였다. 내가 많이 작아지는 것을 느끼면서 스터디 발표를 준비할 때 좀 더 세심하게 신경써야 겠다는 생각이 들었다. 그저 책에 한정해 이해하려고 노력하는 '나'였는데 같이 하는 분들은 책을 넘어서 현업에서의 적용, 자기만의 생각을 곁들여 발표를 하여 많이 배울 수 있는 시간을 가질 수 있었다. 주체적으로 모임을 만들고 하고자 하는 마음만 앞선 게 아닌가 하는 반성의 시간을 가졌고 앞으로 단순히 열심히하는 것에 그치지 않고 올바른 방향으로 가고 있는지 생각하면서 '잘' 해내기 위해 노력해야 겠다고 다짐했다. ..
10.1 연속 값의 범위 찾기 select * from V -------------------------------------------------------------------- select proj_id, proj_start, proj_end from ( select proj_id, proj_start, proj_end, lead(proj_start)over(order by proj_id) next_proj_start from V ) alias where next_proj_start = proj_end -------------------------------------------------------------------- select * from ( select proj_id, proj_start..
스트림 API는 다량의 데이터 처리 작업(순차적이든 병렬적이든)을 돕고자 자바8에 추가되었다. 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 뜻한다. 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현하는 개념이다. 스트림 파이프라인은 지연 평가된다. 기본적으로 스트림 파이프라인은 순차적으로 수행된다. 어떠한 계산이라도 해낼 수 있다. 하지만 잘못 사용하면 읽기 어렵고 유지보수도 힘들어 진다. ex) 아나그램이란 철자를 구성하는 알파벳이 같고 순서만 다른 단어를 말한다. package effectivejava.chapter7.item45.anagrams; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Pa..