프로그래밍 175

[Java] 추상클래스(Abstract Class)와 인터페이스(Interface)에 대한 고찰

추상 클래스(Abstract Class)란 미완성 설계도라고 할 수 있다. 자동차에 비유하면 완성되지 않은 자동차라고 할 수 있다. 차체만 있고 아직 바퀴를 달지 않은 그 상태를 미완성이라고 할 수 있다. 바퀴가 없으면 달릴수가 없으니 이것은 자동차라고 아직은 말 할 수가 없다. 마찬가지로 추상 클래스는 객체를 생성할 수 없다. (즉, 바퀴를 달게 하지 않은 설계도로는 자동차를 만들 수 없다.) 추상클래스의 선언은 class 앞에 abstract를 붙이면 된다. 그리고 추상 클래스는 추상메서드를 포함하고 있고 여느 클래스와 마찬가지로 생성자와 멤버변수도 가질 수 있다. 여기서 인터페이스(interface)와 비교를 해보자. 인터페이스는 추상 클래스에서 더 추상화 된 것이다. 그래서 모든 메서드는 publ..

[Java] 람다(Lamda)식과 함수형 인터페이스 (Functional Interface)

람다식 (Lamda Expression)JDK 1.8 부터 추가된 람다 식은 많은 변화를 가져다 주었다. 람다식이란 메서드를 하나의 식으로 표현해주는 간편한 기능이다. 예를들어, 123456789int max(int a, int b) { return a > b ? a : b;} (int a, int b) -> { return a > b ? a : b ;} (int a, int b) -> a > b ? a : b (a, b) -> a > b ? a : bcs 위의 max함수를 람다식으로 표현하면 밑에 3가지가 될 수 있다. 람다식에 선언된 매개변수는 추론이 가능한 경우 생략할 수 있다고 한다. 람다식은 런타임 때 익명 객체를 생성하기 때문에 대입 되는 값에 따라 자동인식이 되기 때문이다. 그리고 함수 몸체..

[백준 알고리즘] 2156 - 포도주 시식

백준 알고리즘 2156번 Dynamic Programming 문제를 풀어보았다. 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 ..

[Spring] 스프링 JPA 흐름, JPA 관련 질문 내용 정리

JPA의 매핑 관계를 설정할 때 조금 복잡한 상황을 보자. 12345@ManyToMany @JoinTable(name = "recipe_category", joinColumns = @JoinColumn(name = "recipe_id"), inverseJoinColumns = @JoinColumn(name = "category_id")) private Set categories = new HashSet();cs 다 대 다 관계에서 @ManyToMany를 썼다. John Tompson께서 이런 상황은 많이 발생하지 않는다고는 한다. 지금 보면 Recipe와 Category 두 테이블이 다 대 다 관계로 묶여있다. 그래서 처음에 @JoinTable에서 이름을 "recipe_category"로 정해주었다. 이..

[Spring] 스프링 Properties 관리하기

* 스프링 Properties 정의하기 스프링 resource폴더 안에 datasource.properties를 정의해주고 그 안에 값들을 정의해 준다. 이 값들은 java config인 annotation으로 가져올 수 있다. 1234567891011121314151617181920212223242526272829@Configuration@PropertySource("classpath:datasource.properties")public class PropertyConfig { @Value("${jay.username}") String user; @Value("${jay.password}") String password; @Value("${jay.dburl}") String url; @Bean publ..

[Spring] SpringFramework Configuration, 각종 스프링 관련 면접 질문

Spring Bean Scope 스프링 빈에는 Scope를 정의할 수 있다. singleton : 싱글톤 스코프, 별도지정이 없으면 default로 들어가게 된다. 멀티 스레드환경에서 동시 접근이 발생하므로 상태 관리가 중요하다. prototype : 요청마다 새 bean instance를 생성한다. 멀티 스레드 환경에서 singleton보다 관리가 수월하다. request : single instance per http request. session : single instance per http session. [질문 목록] * 스프링의 configuration option 은?XML, Annotations, Java, Groovy, DSL * SOLID 의 S 의 기능?Single Responsib..

[SpringOneTour] 스프링을 만든 Pivotal사가 한국을 방문했다!

나는 시간날 때마다 항상 세미나 목록을 찾아본다. 가서 여러 뛰어난 개발자들의 강연을 듣고 오면 동기부여도 되고 재밌기 때문이다. 얼마전에 학교 기숙사에서 잠들기전에 sns에서 강연을 찾다가 Spring One Tour를 보게 되었다. 세상에 내가 지금 공부하는 프레임워크를 만든 분들이 직접 오신다는데 엄청난 기회였다. 근데 봤을 때 당장 내일 모레였다. 게다가 마감...ㅠㅠ 아 이걸 왜 지금 봤을까..... 진짜 여태 갔던 모든 세미나들 중에서 제일 가고 싶은 마음이 컸었다. 그래서 혹시나 하고 이메일을 보내 "학생인데 자리 없으면 바닥에서라도 듣고 싶다"고 염치 없지만 한 번 여쭤본다고 메일을 보냈다. 정말 감사하게도 자리는 줄 수 있다고 허락해주셨다. 진짜 너무 기뻤다. 목요일은 학교 풀 수업 날이..

반응형