개발은 재밌어야 한다
article thumbnail
[자바 JAVA] 예외의 종류
JAVA 2022. 2. 17. 01:03

자바에서 자주 발생하는 예외들과 예외에 대한 처리들에 대해서 정리 해 보도록 하겠습니다. 에러와 예외 컴퓨터 하드웨어의 동작의 오작동 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 자바에서는 에러(error)라고 합니다. 에러는 JVM 실행에 문제가 있다는 것이므로 JVM 위에서 실행되는 프로그램을 아무리 견고하게 만들어도 결국 실행 불능 상태가 되어버립니다. 자바에서는 에러 이외에 예외(exception)이라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하다. 그러나 예외는 예외처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정..

article thumbnail
SOLID 원칙 5 - DIP: 의존성 역전 원칙 (Dependency Inversion)

DIP 객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 마지막 다섯번째 원칙인 DIP(Dependency Inversion Principle)에 대해 알아보겠습니다. 의존관계 역전 원칙 (Dependency inversion principle) 객체 지향 프로그래밍에서 의존관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. 이 원칙은 다음과 같은 내용을 담고 있다. 첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야..

article thumbnail
SOLID 원칙 4 - ISP: 인터페이스 분리 원칙 (Interface Segregation Principle)

객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 네번째 원칙인 ISP(Interface Segregation Principle)에 대해 알아보겠습니다. ISP(인터페이스 분리 원칙)은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다. - 위키백과- 우선 여기서 말하는 인터페이스의 개념에 대해 잠깐 알아보자 인터페이스란? 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것이 인터페이스의 역할이자 개념이다. 어떤 클래스가 있고 그 클래스가 특정한 인터페이스를 사용하여 구현된다면 그 클래스는 반드시 그 인터페이스에 포함되어 있는 메소드를 구현하도록 강제하는 것이다. 즉, 자바의 다형성을 극대화하여 개발 코드 수정을 줄이고 프로그램 ..

article thumbnail
SOLID 원칙 3 - LSP: 리스코프 치환 원칙 (Liskov Substitution Principle)

객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 세번째 원칙인 LSP(Liskov Substitution Principle)에 대해 알아보겠습니다. 치환성(영어: substitutability)은 객체 지향 프로그래밍 원칙이다. 컴퓨터 프로그램에서 자료형 {\displaystyle S}S가 자료형 {\displaystyle T}T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 {\displaystyle T}T의 객체를 자료형 {\displaystyle S}S의 객체로 교체(치환)할 수 있어야 한다는 원칙이다. 리스코프 치환 원칙(영어: Liskov substitution principle, LSP)은 바바라 리스코프가..

article thumbnail
SOLID 원칙 2 - OCP: 개방-폐쇄 원칙 (Open-Closed Principle)

SOLID 객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 두번째 원칙인 ORP(Open-Closed Principle)에 대해 알아보겠습니다. Open-Closed Principle라는 뜻을 한국말 그대로 받아들이면 열려있으면서 닫힌 원칙이라는 말이 됩니다. 열려있으면서도 닫혀있다는게 무슨 소리인거지.. 어렵게 생각할 수도 있지만 간단하게 생각하면 OCP는 매우 명확한 의미를 가집니다. OCP에서의 Open은 확장에 대해서, Closed는 변경에 대해서 의미합니다. 즉, "확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다."라는 뜻입니다. 개발적인 의미로는 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는 뜻을 가지는 원..

article thumbnail
MSA(마이크로 서비스 아키텍처)란?
아키텍쳐 2022. 1. 22. 02:10

오늘은 https://github.com/skarbgud/SpringInAction5/issues/4에서 스터디 주제로 나온 MSA에 대해 알아보고자 합니다. 2022/1/15 스터디 주제 · Issue #4 · skarbgud/SpringInAction5 MSA(마이크로 서비스 아키텍처)란? MSA에서 통신 방법? github.com MSA 정말 많이 들어봤었습니다. 채용공고에도 정말 정말 많이 나오는 그이름 MSA... MSA가 Micro Service Architecture의 약자라는 것은 쉽게 알 수 있습니다. 말로써는 마이크로 서비스 아키텍쳐로 작은 서비스의 단위로 나누어 구성하는 아키텍쳐의 방식입니다. 우선 MSA를 논하기 전에 모놀리식 아키텍처에 대한 이해를 할 필요가 있습니다. 보통 MSA..

article thumbnail
슬로우 쿼리(Slow Query) 조회 쿼리(Oracle, MS-SQL, Mysql, postgreSQL)
RDBMS 2022. 1. 18. 12:10

슬로우쿼리 Slow Query(슬로우쿼리) Slow Query(슬로우쿼리)는 지정한 시간보도 실행하는데 오래걸리는 쿼리에 대한 log를 것입니다 특정 작업이 오래 걸린다면 로그를 통해 원인을 파악할 수 있겠습니다. 또한 대량이 데이터를 조회하거나 잘못된 인덱스 사용으로 인한 장시간 MySQL 프로세스가 물리는 현상이 발생 할 경우 어떤 쿼리문에 이런 현상을 발생 하였느냐에 대해서 분석시 Slow Query를 사용하면 부하가 증가되는 쿼리를 찾을 수 있을꺼라고 생각됩니다. 출처 : https://itstudyblog.tistory.com/384 slow query 란 ? DBMS 가 client로부터 요청받은 query를 수행할때 일정시간 이상 수행되지 못한 query 즉 길어야 1~2초 걸리는 db 쿼리..

article thumbnail
버추얼박스(VirtualBox) 설치 및 구동 (CentOS 8 버전)
Network 2022. 1. 16. 16:29

1. 가상 머신(VM) 환경 구축하기 VM에는 버추얼박스(VirtualBox)와 VMware Workstation의 방식이 있는데 제가 사용하는 방법은 오라클(Oracle)의 버추얼박스를 통해서 리눅스 환경을 구축 하겠습니다. https://www.virtualbox.org/ Oracle VM VirtualBox Welcome to VirtualBox.org! VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise..

article thumbnail
[JAVA 자바] 메소드 체이닝이란?
JAVA 2022. 1. 11. 18:04

지난번 포스팅으로 빌더 패턴에 대해서 알아보았습니다. https://dreamcoding.tistory.com/56 [디자인 패턴] 빌더 패턴(Builder Pattern) 스프링 인 액션 5판 스터디를 진행하던 중에 스프링 시큐리티에서 빌더 패턴이 사용되는 부분을 보고 빌더 패턴에 대한 포스팅을 해보겠습니다. 빌더 패턴은 소프트 웨어 디자인 패턴 중에 하나 dreamcoding.tistory.com 빌더 패턴도 어찌보면 메소드 체이닝 방식을 사용한 하나의 디자인 패턴인데요. 그 원리 속에 작용하느 메소드 체이닝에 대해서 한번 다시 생각해보면서 한번 어떻게 빌더 패턴이 작용할 수 있는가를 생각해보겠습니다. 메소드 체이닝이란? 말그대로 메소드를 고리마냥 줄줄이 엵어서 메소드를 계속해서 사용할 수 있게끔 하..

article thumbnail
[오라클 ORACLE] ASH란?
RDBMS 2022. 1. 11. 16:18

ASH(Active Session History) Ratio(비율) 기반 분석방법론과 대기이벤트 기반 분석방법론의 한계점은 문제가 있다고 진단했을때 그 원인을 찾아 실제 문제를 해결하는 데까지 많은 시간이 걸리는 데 있다고 합니다. V$SESSION을 이용하여 실시간 세션에 대한 모니터링을 하고 있는데 이는 해당 시점에서의 걸리는 쿼리만을 볼 수 있다는 점입니다. 이를 끊임없이 EXCUTE(실행) 시키며 모니터링에는 한계가 있음 그래서 오라클 10g에서 부터 생겨난 기능이 ASH(Active Session History)기능입니다. ASH에서는 뷰의 명세를 보고 많은 정보를 찾을 수 있는 session의 활동 정보, SQL 수행빈도등을 통하여 문제점을 접근 할 수 있습니다. ================..

article thumbnail
spring-boot-starter-data-rest가 어떻게 Rest API 주소를 자동 생성해주는가?
Spring/Spring 2022. 1. 9. 00:54

스프링 부트에서 REST URL을 자동으로 생성해주는 spring-boot-starter-data-rest가 어떻게 주소를 자동으로 생성해서 Rest URL을 생성해주는가에 대해서 알아보겠습니다. 우선 공식 문서 스프링 데이터의 공식문서를 참조해서 보겠습니다. https://docs.spring.io/spring-data/rest/docs/current/reference/html/ Spring Data REST Reference Guide Spring Data REST presents a default view of the domain model you export. However, sometimes, you may need to alter the view of that model for various ..

article thumbnail
[디자인 패턴] 빌더 패턴(Builder Pattern)

스프링 인 액션 5판 스터디를 진행하던 중에 스프링 시큐리티에서 빌더 패턴이 사용되는 부분을 보고 빌더 패턴에 대한 포스팅을 해보겠습니다. 빌더 패턴은 소프트 웨어 디자인 패턴 중에 하나로 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. 2 단어 요약 생성자 오버로딩 (위키백과- 빌더 패턴) 일단 무슨 소린지 잘 와닿지 않는다. 객체를 생성하는 방법이 여러 가지 있는데, 일반적으로 사용되는 방법은 1.생성자에 인자를 넣어 인스턴스를 생성하는 방법이나 2.setter를 이용하는 자바빈 패턴을 많이 사용합니다. 3. 빌더 패턴은 이런 패턴들에서의 단점을 좀 더 개선한 방법으로 사용되는 방법입니다. 예시로 피자라는 객체가 있다고 가정해보..