일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQL쿡북
- AWS RDS
- 이펙티브자바
- aop
- 혼공SQL
- 네트워크
- CleanCode
- MariaDB
- 알고리즘분석
- 도메인 주도 개발 시작하기
- 기술면접
- jpa
- DDD
- vue.js
- 이펙티브 자바
- 인프런백기선
- 알고리즘
- 인프런김영한
- 이팩티브 자바
- 자료구조
- AWS
- 인덱스
- 자바스터디
- react
- mysql
- java
- 클린코드
- 자바예외
- 스프링부트와AWS로혼자구현하는웹서비스
- 자바
- Today
- Total
목록자바 (9)
기록이 힘이다.

리플렉션은 클래스나 메서드의 메타정보를 사용해서 동적으로 호출하는 메서드를 변경할 수 있다. 리플렉션을 사용하면 클래스와 메서드의 메타정보를 사용해서 애플리케이션을 동적으로 유연하게 만들 수 있다. 하지만 리플렉션 기술은 런타임에 동작하기 때문에 컴파일 시점에 오류를 잡을 수 없다. 리플렉션은 프레임워크 개발이나 또는 매우 일반적인 공통 처리가 필요할 때 부분적으로 주의해서 사용해야 한다. 이펙티브 자바 참고하기 리플렉션보다 인터페이스를 사용하라. 리플렉션은 코어단에서 많이 사용을 한다. 객체를 사용할 때 사용해야 한다. 주의해서 사용하라는 것 같다. 리플랙션을 사용하면 임의의 클래스에 접근가능. 클래스의 Constructor, Method, Field 인스 dev22.tistory.com
휴리스틱이란 '시간이나 정보가 불충분하여 합리적인 판단을 할 수 없거나, 굳이 체계적이고 합리적인 판단을 할 필요가 없는 상황에서 신속하게 사용하는 어림짐작의 기술’ 주석 C1: 부적절한 정보 다른 시스템에 (예를 들어, 소스 코드 관리 시스템, 버그 추적 시스템, 이슈 추적 시스템, 기타 기록 관리 시스템에) 저장할 정보는 주석으로 적절하지 못하다. 일반적으로 작성자, 최종 수정일, SPR(Software Problem Report) 번호 등과 같은 메타 정보만 주석으로 넣는다. 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. C2: 쓸모 없는 주석 오래된 주석, 엉뚱한 주석, 잘못된 주석은 더 이상 쓸모가 없다. 주석은 빨리 낡는다. C3: 중복된 주석 주석은 코드만으로 다하지 못하는 설명을..
인터프리터 방식과 컴파일 방식의 차이점을 서술해 주세요. 인터프리터 방식(Interpreter)과 컴파일 방식(Compiler)은 프로그래밍 언어 코드를 실행 가능한 형태로 변환하는 데 사용되는 두 가지 주요한 접근 방식입니다. 인터프리터 방식: 인터프리터는 프로그래밍 언어 코드를 한 줄씩 읽고 해석하여 실행합니다. 코드를 실행하기 전에 매번 번역 과정이 필요하므로 실시간으로 코드를 해석하고 실행할 수 있습니다. 인터프리터는 프로그래밍 언어의 문장을 해석하고 즉시 실행하기 때문에 개발과 디버깅이 빠르고 간편하며, 플랫폼에 종속되지 않고 어디에서나 실행할 수 있습니다. 그러나 실행 시간에 코드를 해석하므로 실행 속도가 컴파일 방식보다 상대적으로 느릴 수 있습니다. 대표적인 인터프리터 언어로는 Python,..
리플렉션은 코어단에서 많이 사용을 한다. 객체를 사용할 때 사용해야 한다. 주의해서 사용하라는 것 같다. 리플랙션을 사용하면 임의의 클래스에 접근가능. 클래스의 Constructor, Method, Field 인스턴스를 가져올수 있음. 각각에 연결된 각 생성자 메서드 필드를 조작할 수 있다. Method.invoke는 어떤 클래스의 어떤 객체가 가진 어떤 메서드라도 호출할 수 있다. 단점! 컴파일타임 타입 검사가 주는 이점을 하나도 누릴 수 없다. 리플랙션으로 없는 메서드를 호출하면 런타임 오류가 발생함. 리플렉션을 이용하면 코드가 지저분하고 장황해진다. 성능이 떨어진다. 프레임워크 단에서 리플랙션을 사용하여 구현하는 로직들이 있음. 이들도 리플랙셔 사용을 지양하는 방향으로 진행되고있음. (단점이 명확하..
표준 라이브러리를 사용하면 그 코드를 작성한 전문가의 지식과 여러분보다 앞서 사용한 다른 프로그래머들의 경험을 활용할 수 있다. 핵심적인 일과 크게 관련 없는 문제를 해결하느라 시간을 허비하지 않아도 된다는 것이다. 따로 노력하지 않아도 성능이 지속해서 개선된다는 점이다. 기능이 점점 많아진다는 것이다. 여러분이 작성한 코드가 많은 사람에게 낯익은 코드가 된다. 더 읽기 좋고, 유지보수하기 좋고, 재활용하기 쉬운 코드가 된다. 메이저 릴리스마다 주목할 만한 수많은 기능이 라이브러리에 추가된다. 자바 프로그래머라면 적어도 java.lang, java.util, java.io와 그 하위 패키지들에는 익숙해져야 한다. 컬렉션 프레임워크와 스트림 라이브러리, java.util.concurrent의 동시성 기능도..
지역변수의 유효 범위를 최소로 줄이면 코드 가족성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 ‘가장 처음 쓰일 때 선언하기’다. 컬렉션이나 배열을 순회하는 권장 관용구 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()){ ..
스트림 API는 다량의 데이터 처리 작업(순차적이든 병렬적이든)을 돕고자 자바8에 추가되었다. 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 뜻한다. 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현하는 개념이다. 스트림 파이프라인은 지연 평가된다. 기본적으로 스트림 파이프라인은 순차적으로 수행된다. 어떠한 계산이라도 해낼 수 있다. 하지만 잘못 사용하면 읽기 어렵고 유지보수도 힘들어 진다. ex) 아나그램이란 철자를 구성하는 알파벳이 같고 순서만 다른 단어를 말한다. package effectivejava.chapter7.item45.anagrams; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Pa..
public class TopLine{ //코드 9-1 try-finally - 더 이상 자원을 회수하는 최선의 방책이 아니다! 47쪽 static String firstLineOfFile(String path) throws IOException{ BufferedReader br = new BadBufferedReader(new FileReader(path)); try{ return br.readLine(); }finally{ br.close(); } } public static void main(String[] args) throws IOException{ System.out.println(firstLineOfFile("pom.xml")); } } public class BadBufferedReader..