본문 바로가기

전체 글57

Java Spring 의 Servet 이해하고 만들어보기 자바를 전문적으로 하는 수많은 사람들이 Servlet에 대해 이야기를 하지만 SpringBoot에 익숙해져서 @Controller와 @RestController 만 만져보느라 서서히 기억에서 잊혀가게 되어 Servlet에 대해 다시 적어가면서 복습을 하려고 한다. 참고로 오라클에서 HttpServlet에 대해 볼 수 있지만: https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html위의url에 볼 수 있다 싶이 Servlet은 JavaEE에서 제공해주는 서비스 이며 JavaSE에서는 제공을 하지 않는다. 가장 최신 Servlet문서는 Jakarta EE에서 다룬다: https://jakarta.ee/specifications/serv.. 2025. 3. 24.
SOLID principle 이란? SOLID principle은 각 특성들의 영어 문장의 초성들을 나열하여 만든 이름이며 모든 Object Oriented Programming에서 통용되는 법칙이다. SOLID 원칙은 다방면으로 유용하면서도 사용을 필수적으로 요구하는 원칙인데. 대부분 클린코드와 연관도가 높다.많이들 아시다 싶이 클린코드를 고수하게 된다면 필연적으로 기능의 추가, 가독성 증가와 유지보수에 이점이 매우 크다. 본격적으로 SOLID의 세부적인 내용과 예시로 이해를 도와보겠다.S (Single responsibility principle)클린코드에서 항상 강조하는 부분, 단일 책임 원칙이다. 말 그대로 하나의 클래스 객체, 메서드나 모듈은 한 가지의 특정 기능만 해야 한다.더 나아가 단일 책임 원칙은 메서드, 클라스, 패키지 .. 2024. 4. 18.
알맞는 데이터 베이스 고르기와 CAP theorem 종종 면접 질문할 때 왜 MongoDB로 선택했는지, MongoDB는 CAP에 어디에 해당되냐 라는 질문을 던질 수도 있는데 조금 더 확실히 기억하기 위해 DB선택사항과 CAP에 대해 작성해 본다. 오늘날 무수히 많은 데이터 베이스 종류들 중 많이들 알고 있는 대 부류 두 개가 있다. Relational Database Non-Releational Database(Key-Value Map Database) 그러나 이 두 개만으로 수 많은 데이터베이스들의 특징과 장단점을 나열하기에는 부족하다. 위 두개 항목과 별개로 더 많은 분산환경에 따른 카테고리로 각 데이터 베이스들을 분리한 것이 CAP이다. 물론 CAP 이상으로 더 세부적인 차이가 있다. 그렇지만 본인이 생각하기에는 올바른 데이터베이스를 선택할 때 .. 2024. 3. 31.
다이아몬드 상속문제(Diamond problem) 그리고 Interface의 default 메서드 프로그래밍 언어에 상속의 기능을 사용할 때 주의해야 할 점이 있는데 다중 상속의 문제점을 피해야 하는 것이다. exdends 키워드를 이용한 상속이라면 자녀 클래스가 하나의 부모 클래스한테 기능을 상속받아 부모 클래스의 기능을 사용하게 해서 불필요한 코드를 줄이는 중요한 역할도 하며, Abstraction이 가능해져서 더 체계적인 객체지향 코드를 작성할 수 있다. 그러나 exdends의 다중상속이 가능해 지게 된다면 컴파일러도, 프로그래머도 어떤 부모가 우선순위권인지, 어떠한 조합으로 상속을 받아야 할지 정말 복잡해지기 때문에 이를 사전에 막아 버린 것이다. 이 때문에 많은 프로그래밍 언어들은 하나의 클라스에서 두 개 이상의 클래스를 직접상속을 하지 못하게 막아 놓았다. 만약 우리가 날아다니는 자동차가 .. 2024. 3. 22.
소프트웨어 디자인 패턴 - 데코레이터(DecoratorPattern - Structual Patterns - 1) 오늘은 데코레이터를 설명하기 전에 더 큰 부류인 Structural Pattern(구조적 패턴)은 이 전에 설명한 적이 없기 때문에 Structural 패턴이 무엇인지 설명해보고 데코레이터 패턴으로 넘어가보도록 하겠다. 구조적 패턴(Structural Pattern)은 왜 무엇이고 왜 중요한가? 이 전에 게시한 글처럼, 제작 패턴(Creation Pattern)은 인스턴스과 오브젝터 제작에 있어서 매우 유용한 프로그래밍 기법이며 실제로 많이 통용되어 제작 패턴으로 분류된 것만큼, 제작에 초점을 둔 프로그래밍 기법들이기에 항목 이름이 제작패턴이라고 붙여진 것이다. 그러면 당연히 구조적 패턴은 코드 작성 구조와 상속 방식을 효과적으로 작성하게 만드는 기법이기 때문에 이러한 이름이 붙여졌다. 만약 우리가 구조.. 2024. 2. 26.
똑똑하게 코드 작성 하기 가끔 본인이 노력을 많이 하고 프로그래밍에 기여를 많이 했다고 과시하면서 코드를 보면 코드가 비 효율적으로 많이 작성되었던지, 보기 힘들게 작성되었던지, 올바르지 않은 방법을 선택한 코드들을 많이 봤었다. 참으로 안타까운 일이다. 본인은 코드를 많이 쓰는 것이 절대로 실력이 좋고 노력을 많이 한 것이 아닌 비효율적으로 무지성으로 코드를 작성했다고 본다. 일할 때 하루종일 코드를 많이 쳐대는 사람이 있는 반면, 짧은 시간에 코드를 작성하고 나머지 시간은 분석하고 테스팅하고 효율성 개선을 파악하는 개발자가 있다. 같이 일을 할 때 무조건 후자 조건에 있는 사람과 일 하고 싶은 것이 당연하다. 왜냐하면 결과물은 결국에는 같은데 코드 가독성은 코드가 짧을수록 더 좋기 때문이며 코드가 효율적이기 때문에 유지보수가.. 2024. 2. 20.