만쥬의 개발일기
[Java 기술 면접 대비] - 5. extends VS implements

상속(Inheritance)이란? 객체지향 프로그래밍, OOP에는 다음과 같은 특징들이 있다. 1. 상속과 인터페이스 (계층성) 2. 다형성, 사용편의성 (모듈화) 3. 캡슐화, 정보은닉 4. 자료 추상화 (모델링) 5. 동적 바인딩 자바에서 상속은 세가지로 구현할 수 있다. extends 부모에서 선언 / 정의를 모두하며 자식은 메소드 / 변수를 그대로 사용할 수 있음 implements (interface 구현) 부모 객체는 선언만 하며 정의(내용)은 자식에서 반드시 오버라이딩 (재정의) 해서 사용해야함 abstract extends와 interface 혼합. extends하되 몇 개는 추상 메소드로 구현되어 있음 extends 상속의 가장 대표적인 형태이다. 부모의 메소드를 그대로 사용할 수 있으며..

[Java] - Lombok이란?

Lombok이란? Lombok이란 어노테이션 기반으로 코드를 자동완성 해주는 Java 라이브러리이다. Lombok은 기계적인 코드 작성 ex)생성자, getter, setter등에 대한 코드 작성을 자동화하여 코드 다이어트를 도와준다. Lombok을 이용하면 Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성 시킬 수 있다. Lombok 사용예시 getter, setter 만약 어느 프로젝트를 진행하면서, 변수를 많이 가지고 있는 DTO 혹은 VO 클래스를 만든다고 생각해보자. public class customer extends user { private String name; private String age; private String telephone; ..

[Spring 기술 면접 대비] - 1. IoC(Inversion of Control), 제어 역전이란? (Autowired를 쓰는 이유)

스프링 프레임워크(Spring Framework) 하면 반드시 알아야 하는 개념이 바로 DI, IoC이다. DI는 의존성 역전으로, 클린 아키텍쳐를 읽으면서도 많이 배우고 개념을 다져왔는데, IoC에 대해서는 아직 잘 모르는 것 같아서 따로 정리해본다. IoC는 스프링 뿐만 아니라 다른 프레임워크에서도 사용되는 범용적인 개념이다. 왜 IoC라는게 생겼을까? 무엇을 제어하고 왜 역전이 필요한 것인지, 천천히 알아보자. IoC의 Control, 제어란? 여기서 제어라는건 "객체에 대한 주도권을 가지고 있다"라고 생각하면 좋다. 자바는 객체지향 프로그래밍 언어이고, 모든 객체는 생명주기(Life Cycle - 객제가 생성된 후 부터 폐기될 때까지의 기간) 를 가지고 있다. 일반적으로 프레임워크를 사용하지 않는..

article thumbnail
[Java 기술 면접 대비] - 4. @Bean VS @Component

Spring으로 개발을 하다보면 @Bean과 @Component를 언제 써야할지 헷갈릴때가 있다. 둘다 목적이 명확하지 않은 Bean을 생성할때 사용하는 어노테이션인데, 정확히 차이를 짚고 넘어가보자. @Bean VS @Component (@Bean) (@Component) 위 예시처럼, @Bean의 경우 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용된다. (예를 들면 ObjectMapper의 경우 ObjectMapper Class에 @Component를 선언할수는 없으니 ObjectMapper의 인스턴스를 생성하는 메소드를 만들고 해당 메소드에 @Bean을 선언하여 Bean으로 등록한다.) 개발자가 생성한 Class에 @Bean을 선언하는 것 또한 불가능하다. 개..

[Java 기술 면접 대비] - 3. Java Bean VS Spring Bean

Java와 Spring으로 개발을 하다 보면 Bean이라는 개념이 자주 등장한다. 자주 사용하는 용어이지만 제대로 정리하고 넘어간 적이 없는 것 같아서, 한번 깔끔하게 정리하고 넘어가야 할 것 같았다. Java Bean 먼저 Java Bean에 대해 알아보자. 결론부터 말하자면 Java Bean은 특정 형태의 클래스를 가르키는 뜻으로 사용된다. DTO 혹은 VO의 형태가 Java Bean이라고 생각하면 쉽다. [백엔드 기술 면접 대비] - 1. DAO, DTO, VO란? 오늘은 데이터 컨트롤의 기초라고 볼 수있는, 데이터 객체들에 대해 한 번 짚고 넘어간다. DAO(Data Access Object)란? 말 그대로, 데이터베이스의 데이터에 접근하기 위한 객체이다. 비즈니스 로직에 kangmanjoo.ti..

article thumbnail
[Java 기술 면접 대비] - 2. 제네릭 메서드(Generic Method)란?

제네릭 메서드(Generic Method)란? 자바(Java)에서 제네릭(Generic)은 클래스 내부에서 사용하는 데이터의 타입(Type)을 클래스의 인스턴스를 생성할 때 결정하는 것을 의미한다. 객체의 타입을 컴파일 시점에 체크하기 때문에 타입 안정성을 높이고 형 변환의 번거로움을 줄일 수 있다. 즉, 제네릭 메서드는 메서드의 선언 부에 적은 제네릭 타입으로 리턴 타입과 파라미터 타입이 모두 정해지는 메서드이다. 우선 제네릭에 대한 여러 예시를 보며 이해해보자. public class Student { static T name; } 위와 같이 작성할 경우, 제네릭을 사용할 수 없다. 왜냐면, static 변수는 Student 클래스가 인스턴스가 되기 이전에 메모리에 올라가는데, 이 때 name의 타입..

article thumbnail
[Java 기술 면접 대비] - 1. JDK vs JRE

자바의 실행 과정 자바를 실행하기 위한 머신 JVM 우선 JDK에 대해 알기 전에, 자바 코드가 컴파일되고 실행되는 과정을 먼저 알아보자. JAVA는 실행시키는 운영체제에 독립적이라는 장점을 가지고 있다. 그리고 JVM은, 이를 위해 필요한 머신이다. java의 경우 JVM,즉 컴퓨터가 이해할 수 있는 형태는 바이트 코드로 이루어진 .class 파일이다. 우리가 java로 작성한 코드는 .java 파일인데, 이를 java 컴파일러가 .java 파일을 .class 라는 자바 바이트 코드로 변환해 주는 것이다. 컴파일을 해주는 Java Compiler java compiler는 자바를 실행하기 위해 필수인 JDK를 설치할 때에, bin 하위의 javac.exe를 말한다. 즉, javac 명령을 통해 .jav..

article thumbnail
[Python / Trouble Shooting] - pymysql 등 파이썬 모듈이 import 안되는 문제

프로젝트를 진행하던 중 pymysql 모듈이 분명히 설치되어 있음에도 불구하고, import하지 못하는 이슈가 있었다. pip list 명령어를 통해 설치 되어있음을 확인할 수 있었다. 해결법 1 검색 결과, pip가 아닌 apt-get을 통해 설치하여 해결할 수 있었다. pip는 파이썬 패키지 관리 도구이고, apt-get은 Debian 계열의 Linux(Ubuntu등) 에서 사용하는 시스템 패키지 관리 도구이다. pip로 설치했을때 pymysql이 작동 안하는 이유는 잘 모르겠지만, 더 상위 계층 패키지 관리 도구를 사용해야 정상 작동하는 것이 아닌가 싶다. 모듈은 다음 명령어를 통해 설치 가능하다. sudo apt-get install python3-pymysql 해결법 2 또 다시 이 에러가 발생..