728x90
반응형

전체 글 882

내 인생의 기억들...

나이가 어느정도 먹으면서... 어렸을 적 기억들을 하나 둘 씩 잊어버릴까 하는 두려움이 생기기 시작했다. 그리고 내가 죽으면 나를 기억하는 사람들은 극히 일부고, 그 마저도 시간이 지나가면서 많이 잊혀질 것이라 생각이 들어... 내 머리 속에 있는 기억들을 하나 둘 글로써 남겨 둬야 겠다는 생각이 들었다. 해야지 해야지 하면서 실행에 옮기지 못한 내 머리속 기억들을 글로 하나씩 남긴다. 희미한 기억이라 명확하게 기억에 남지 않는 것들도 많고, 그래서 많은 사람들에게 그렇게 크게 중요한 내용도 아니겠지만... 그냥 이렇게라도 남기고 싶다. 나는 일단 1974년 생이다. 음력 5월 19일에 태어 났는데 돌아가신 엄마가 항상 엄청 더울 때 태어났다고 하니... 1974년 음력 5월 19일이 양력으로는 언제인지..

Galaxy Buds2 Pro(갤럭시 버즈2 프로) 구매

2022.11.03 - [인생이야기] - Z Flip4 구매하다.에서 Z Flip4를 구매 한 내용을 적었습니다. 그런데 삼성에서 10월 11월 휴대폰 구매자들에게 10만원 쿠폰을 주더라구요. 그래서 149,000원 짜리 버즈2 프로를 49,000원에 구매하게 되었습니다. 사실 이어폰을 맨날 유선 이어폰만 사용하고 있었는데... 이 참에 무선으로 사용을 해 보게 되었네요. Z Flip4를 퍼플로 구매해서 버즈2 프로도 퍼플로 구매 했습니다. 살짝 들어보니 음질이 꽤 좋네요. 얼마나 자주 사용하게 될지는 모르지만, 싼 가격에 구매할 수 있게 되어 좋네요 ^^

인생이야기 2022.11.09

Z Flip4 구매하다.

그 동안 갤럭시 S9+를 대충 5년 이상 사용하다가 여러가지 이상 증상들이 하나씩 생겨서 폰을 바꿔야 하나 생각중이였습니다. 이상 증상 중에는 다음과 같은 것들이... 배터리가 부풀어서 폰 옆구리가 갈라져서 배터리 교환 함 통화 소리도 너무 작아서 공공장소에서 전화 받기가 힘들고 스피커 폰으로 받아야 함 ㅠㅠ 네이버 지도의 네비를 사용하는데... 가끔 GPS를 못 잡는 것인지... 오류로 화면은 움직이는데 속도가 0으로 나옴. 이상 증상은 아니지만 내부 용량이 작아 앱 설치에 어려움이 있던 문제도 ㅠㅠ 어째든 이런 이유로 다음 폰을 알아보고 있었고, 자급제 폰을 사용하면 좋다는 말에 자급제 폰도 찾았지만, 어짜피 어느정도 되는 요금제를 사용해야 하는 입장에서 그냥 구매... 검색해 보니 위메프에서 Z F..

인생이야기 2022.11.03

아들에게 프로그래밍 간단하게 설명한 이야기...

어제 밤에 왠일로 아들놈이 먼저 '아빠... 프로그램 좀 알려 주세요.' 라고 이야기를 한다. 그 동안 학교에서 Java, Python, Kotlin 등을 배운다고 하던데... 왜 아빠에게 다시 물어볼까 궁금했지만, 궁금함을 뒤로 하고 일단 기초부터 알려 주려고 맘을 먹고 PC를 켰다. 개발자의 습관 답게 자동으로 새로 산 PC에 intellij를 깔고, 30일 무료니까 일단 실행해 보자 하고 실행을 했다. 막상 HelloWorld 부터 하려 하니, 이러면 안 되겠다는 생각이 들어, 아들보고 종이와 볼펜을 가져오라고 했다. 종이와 볼펜에 기본적인 http의 호출과 응답에 대한 설명을 이어 나간다. Client는 가계에 들어온 고객이고, Web 서버는 매장 서빙을 하는 직원, WAS 서버는 요리사 라고 어..

도커 엔진(Docker Engine) - 2

2022.01.17 - [Develop!/Docker,Kubernetes] - 도커 엔진 - 1 에 이어 계속 정리 한다. 아래의 책을 읽으면서 알게 된 내용을 정리한다. http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158392291&orderClick=LAG&Kc= 시작하세요! 도커/쿠버네티스 - 교보문고 친절한 설명으로 쉽게 이해하는 컨테이너 관리 | ★ 이 책의 구성 ★◎ 도커의 기본 사용 방법을 익힘으로써 컨테이너의 기본 개념을 학습합니다. (1부 1장, 1부 2장)◎ 도커 스웜 모드를 통해 서 www.kyobobook.co.kr 도커 볼륨 도커 이미지를 컨테이너로 생성하면 이미지는 읽기 ..

도커 엔진(Docker Engine) - 1

아래의 책을 읽으면서 알게 된 내용을 정리한다. http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158392291&orderClick=LAG&Kc= 시작하세요! 도커/쿠버네티스 - 교보문고 친절한 설명으로 쉽게 이해하는 컨테이너 관리 | ★ 이 책의 구성 ★◎ 도커의 기본 사용 방법을 익힘으로써 컨테이너의 기본 개념을 학습합니다. (1부 1장, 1부 2장)◎ 도커 스웜 모드를 통해 서 www.kyobobook.co.kr 도커 이미지 가상 머신을 생성할 때 사용하는 ISO 파일과 비슷한 개념. 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용 됨. 도커에서 사용하는 이미지의 기본 이름은 "저장소 이름/..

팀을 망치는 일곱가지 방법

팀을 망치는 일곱가지 방법에 대해 Peopleware 책에서는 이렇게 말한다. 각 항목의 내용에 대해서는 책에 나오는 내용 뿐 아니라 개인적인 인 생각도 추가하여 정리한다. 1. 방어적인 관리 관리자로서 팀 구성원을 믿지 못하는 행동은 팀을 망치기에 딱 좋다. 서로 신뢰 하는 관계를 만드는 것이 최고이다. 믿어 주고 격려해 주면 생각보다 더 좋은 결과물을 내는 경우가 많다. 2. 관료주의 생각없는 문서 작업과 같이 의미없는 일에 Resource 를 쓰게 하는 것은 팀을 망치기에 딱 좋다. 목표를 위해 같이 힘을 합치는 것이 팀을 단결하게 만드는 것인데 의미없는 작업에 투입되다 보면 공동의 목표가 사라지게 되기 때문이다. IT 개발자들은 생각하는게 일이다. 3. 물리적인 격리 서로 격리되어 있으면 일상적인..

Develop? 2021.10.18

일곱 인어

무엇인가 문제를 해결하기 위해 주어지는 쉬운 오답의 가짜 희망은 오디세우스를 유혹한 인어(사이렌)과 같다. 그러한 요소들이 7개가 있고 그러한 의미로 일곱 인어라고 한다. 소프트웨어 관리에서 잘못된 희망 일곱가지는 다음과 같다. 내가 미처 발견하지 못했으나 생산성을 급격히 향상시킬 방법이 있다. 다른 관리자들은 2배에서 3배까지도 생산성을 높인다. 기술이 너무 빨리 발전해 따라잡기 어렵다. 프로그래밍 언어를 바꾸면 생산성이 크게 높아진다. 백로그 때문에 생산성을 당장 2배로 올려야 한다. 모든 것이 자동화 되었다. 이제 소프트웨어 개발 업무도 자동화 할 때가 아닌가? 팀원들을 압박하면 일을 더 잘 한다. 따라서 관리자라면 위와 같은 일들을 행해서는 안된다. 보다 자세한 내용은 이 내용의 출처인 Peopl..

Develop? 2021.10.06

Spark란?

BigData 관련해서 아무것도 모르는 상태인데 회사에서 기본적인 Spark 사용이 필요하여 조금씩 알아가며 정리를 해 볼까 한다. 아무것도 모르는 개발자로서 하나 하나 적어 나가는 것이므로, 아주 아주 기초적인 수준이 될 것으로 보이며, 잘못된 정보가 기록될 가능성도 크다. Spark가 나오기 전에는 하둡과 맵리듀스를 사용하여 대용량 데이터를 처리하였다. 하둡과 맵리듀스도 사용해 보지 않아 정확하게는 모르지만, 맵리듀스를 이용해 정제된 데이터를 분산 디스크(HDFS)에 쓰고, 그 내용을 하둡이 다시 가지고 처리하여 저장하는 일련의 과정을 반복하여 값을 가져오는 방식이였다. 하지만 Spark는 대량의 데이터를 메모리에 유지하는 설계로 성능을 끌어 올렸으며, 이로 인해 맵리듀스보다 10 ~ 100배 빠른 ..

Develop!/BigData 2021.09.17

Get에 Body 사용하기?

Get에 Body를 사용한 API가 있어서 이게 가능한 것인가? 라는 생각이 들어 검색해 보니 아래와 같은 내용이 나왔다. https://brunch.co.kr/@kd4/158 HTTP GET 메소드와 body GET메소드에 body 를... | RESTful API를 설계함에 있어 HTTP GET 메소드는 URI에 해당하는 리소스를 조회하는 용도로 사용된다. 때문에 여기에 추가되는 API 파라미터들은 조회 조건을 설정하기 위해 사용 brunch.co.kr 몇 가지 내용만 추려 보자면... 다음과 같다. 이정도로 정리가 될 것 같다. 중요한건 같이 개발하는 구성원들의 동의와 이해인 듯 싶다.

Develop! 2021.08.26

비전공자가 IT 바닥에서 살아남기 위해...

우연찮게 아래의 유튜브 영상을 보게 되었다. 일단 시청하고 오자. 주된 내용은 비전공자가 IT 관련 학원에서 공부하고 빡세게 열심히 하면 취업은 할 수 있지만 소위 말하는 네카라쿠배 취업하기는 힘들며, 시간이 지나면서 계속 빡세게 공부하지 않는 이상 새로운 사람들에게 뒤쳐질 수 밖에 없다는 말이다. 전적으로 맞는 말이라고 생각한다. 이와 관련하여 중간 중간 티타임에 쥬니어들에게 해주는 라떼식 이야기를 생각난 김에 적어 볼까 한다. 나 역시 20여년 전 김대중 대통령 시절에 시작된 IT 버블... 비전공자(건축공학과) 출신으로 2개월간 학원을 다녀 이 바닥에 들어오게 되었다. 건축 설계 사무소에 취업해서 다녀 봤지만 엄청난 박봉에 이렇게 다녀야 하나 라는 생각이 들던 때였고, 같이 졸업한 2살 많은 형이 ..

미토 자전거 캐리어 장착, 사용기

나이가 먹어 가면서 건강을 챙겨야 할 시기가 된 것 같아 라이딩 취미를 조금씩 가지게 되었다. 처음에는 아들이 타다가 업그레이드 하면서 안쓰게 된 자전거를 타게 되었다. 겉으로 보기에는 좋아 보였는데 기어가 변속하는데 있어 문제가 있었고, 이러한 자전거로 다른 사람을 쫓아 가는데 힘든 상황이 발생하여 당근에서 싸구려 하이브리드를 구매하게 되었다. 7단 미션에 앞 드레일러도 없었지만 기존 자전거보다는 나아서 그나마 다른 일행들을 따라 가기에 무리는 없었다. 어느정도 라이딩에 적용이 되어 이제는 조금 더 돈을 투자 하고자 ELFAMA 벤토르 V4000을 구매... 기존 자전거와 달리 너무나도 부드럽고 가벼운 주행 감에 장비 업그레이드를 이래서 하는 구나를 느끼게 해준... 앞 드레일러 3단, 뒷 드레일러 9..

Collection Test, Fail Fast, Fail Safe...

오늘은 기본적인 Collection 들에 대해 간단한 테스트를 해 볼 예정이다. 그동안 아무런 생각없이 사용해 왔는데 어떻게 다른지에 대해 테스트 코드를 통해 알아보자. 우선 간단한 ArrayList를 while 문으로 돌려보자. @Test public void loopTest() { Collection collection = new ArrayList(); collection.add("1"); collection.add("2"); collection.add("3"); collection.add("4"); collection.add("5"); Iterator iterator = collection.iterator(); int i = 0; while (iterator.hasNext()) { log.debug..

Java 2021.07.02

Public Interface의 품질에 영향을 미치는 요소...

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158391409&orderClick=LET&Kc= 오브젝트 - 교보문고 코드로 이해하는 객체지향 설계 | 객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 독립적인 존재가 아니라 www.kyobobook.co.kr 위 책 6장에 나오는 내용을 정리해 둔다. 182면에 Public Interface의 품질에 영향을 미치는 기법에 대해 나온다. 1. 디미터 법칙 디미터 법칙(Law of Demeter)은 객체의 내부 구조에 강하게 결합되지 않도록 협력 경로를 제한하라는 것. "낯선 ..

Java 2021.07.01

Reflection 사용2

Reflection이란 무엇인지, 그리고 기본적으로 어떻게 접근 가능한지 아래의 포스팅에서 다루었다. 2021.06.25 - [Java] - Reflection Reflection 리플렉션에 대해 정확하게 무엇이다라고 정의 내리기가 쉽지 않다. 명확하게 캡슐화를 하여 접근하지 못하도록 정의 된 생성자를 포함하여 멤버변수라던가 메소드에 접근 가능하도록 해 주는 www.4te.co.kr 2021.06.25 - [Java] - Reflection 사용1 Reflection 사용1 2021.06.25 - [Java] - Reflection 에서 Reflection 이란 무엇인지, 그리고 왜 사용하는지, 어디에서 사용 되는지 등을 확인해 봤다. 이번 포스트에서는 실제로 Reflection을 직접 사용해 보고 어떻..

Java 2021.06.29

Reflection 사용1

2021.06.25 - [Java] - Reflection 에서 Reflection 이란 무엇인지, 그리고 왜 사용하는지, 어디에서 사용 되는지 등을 확인해 봤다. 이번 포스트에서는 실제로 Reflection을 직접 사용해 보고 어떻게 동작하는지 확인해 보자. 먼저 테스트를 위한 Class를 작성하자. package com.example.demo.reflection; public class A { private String ps1 = "aaa"; private String ps2; public String ps3; private A() { System.out.println("this is empty arg constructor"); } private A(String ps2) { this.ps2 = ps2..

Java 2021.06.25

Reflection

리플렉션에 대해 정확하게 무엇이다라고 정의 내리기가 쉽지 않다. 명확하게 캡슐화를 하여 접근하지 못하도록 정의 된 생성자를 포함하여 멤버변수라던가 메소드에 접근 가능하도록 해 주는 기능이라고 정의하면 될려나 모르겠다. 원래는 접근하지 못하는 코드에 어떻게 접근하는 것일까? Reflection 이란 말 처럼 Heap 메모리에 올라간 Instance를 투영하여 실제 Class가 어떻게 생겼는지 확인하는 방법으로 접근한다고 한다. 내부적으로 정확하게 어떻게 구현 되어 있는지 알 수 없지만 ^^ 그런데 이러한 기능은 코드를 통해 접근하지 못하도록 의도를 가지고 만든 코드를 오히려 망치는 기능일수도 있는데 왜 존재하는 것일까? Reflection이 사용된 대표적인 코드는 바로 Spring Framework의 DI..

Java 2021.06.25

Rest API Versioning

https://www.springboottutorial.com/spring-boot-versioning-for-rest-services 참조 URL Path 방식, Param 방식, Header 방식, Media type versioning 등이 있음. 개인적으로 Header 방식 선호. 다음과 같은 방식으로 처리 @GetMapping(value = "/student/header", headers = "X-API-VERSION=1") public StudentV1 headerV1() { return new StudentV1("Bob Charlie"); } @GetMapping(value = "/student/header", headers = "X-API-VERSION=2") public StudentV2..

Java/Spring 2021.06.16

기수 변환 (진수)

비전공자에게 있어서 10진수 2진수 8진수 16진수와 같은 이야기가 나오면 항상 헷깔렸었는데 이 참에 정리를 해 본다. 10진수를 n진수로 바꾸기 위해서는 n으로 나눈 나머지를 구하면서 계속 몫에 대해 계속 나눠 가면 된다. 일례로 10진수를 2진수로 변환하기 위해서는 다음과 같이 하면 된다. 10진수 59를 2진수료 표현 계산식 몫 나머지 59/2 29 1 29/2 14 1 14/2 7 0 7/2 3 1 3/2 1 1 1/2 0 1 위와 같이 해서 나오게 되는 나머지를 거꾸로 이어 붙이면 2진수가 된다. 즉 (111011)2 가 되게 되는 것이다. 이어서 59를 8진수로 만들면 다음과 같다. 계산식 몫 나머지 59/8 7 3 7/8 0 7 8진수의 경우에는 (73)8 이 되게 된다. 59를 16 진수로..

Develop! 2021.05.14

Java Random 함수의 동작 원리

회사 내 스터디에서 다음의 책을 가지고 하고 있는데 쉬운 내용이지만 중간 중간 알게 되는 흥미로운 내용이 있어서 기록한다. http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&barcode=9791163030072 Do it! 자료구조와 함께 배우는 알고리즘 입문: 자바 편 - 교보문고 엄선된 88개의 실습 예제와 93개의 연습 문제! | IT 기업 시험, 면접 필수 역량인자료구조와 알고리즘의 기초를 100% 담아낸 책!IT 기업 코딩 면접, 필기 시험에서 당황하지 않으려면?눈으로 읽고 손 www.kyobobook.co.kr 일단 알게 된 내용은 2장에 나오는 Random 함수이며 Random 함수는 진짜 랜덤이 아니라는 것이다. 코드 내에서 ..

Java 2021.05.14

간단한 Flux method 테스트 (Reactive WebFlux) 3

2021.04.02 - [Java/Reactive] - 간단한 Flux method 테스트 (Reactive WebFlux) 2 간단한 Flux method 테스트 (Reactive WebFlux) 2 2021.03.26 - [Java/Reactive] - 간단한 Flux method 테스트 (Reactive WebFlux) 위 글이 길어져서 새롭게 포스팅을 더 작성한다. usingTest 일회성 리소스에 의존하는 스트림을 만들 때 using 메소드를 사용한다... www.4te.co.kr 위의 글이 길어져 추가로 작성한다. 마지막에 context가 불변객체로 작성 되며, Context0 ~ Context5, ContextN과 같이 만들어져 있다고 하였는데 이와 관련하여 책에서 아래와 같이 테스트 한 코..

Java/Reactive 2021.04.12

Flux Test 중 희한한 현상

github.com/wikibook/spring5-reactive/blob/master/chapter-04/src/test/java/org/rpis5/chapters/chapter_04/ReactorEssentialsTest.java wikibook/spring5-reactive 『실전! 스프링 5를 활용한 리액티브 프로그래밍』 예제 코드. Contribute to wikibook/spring5-reactive development by creating an account on GitHub. github.com 위에 나와 있는 usingWhenExample 내용을 테스트 도중 희한한 현상을 겪게 되어 기록. 테스트 하고자 하는 소스는 368번째 라인에 있는 Transaction 클래스이며, 해당 클래스의..

Java/Reactive 2021.04.05

간단한 Flux method 테스트 (Reactive WebFlux) 2

2021.03.26 - [Java/Reactive] - 간단한 Flux method 테스트 (Reactive WebFlux) 위 글이 길어져서 새롭게 포스팅을 더 작성한다. usingTest 일회성 리소스에 의존하는 스트림을 만들 때 using 메소드를 사용한다. 일반적인 try-with-resources 와 비슷한 방식이다. package com.example.demo.flux; import lombok.extern.slf4j.Slf4j; import java.util.Arrays; import java.util.Random; @Slf4j public class UsingConnection implements AutoCloseable { private final Random rnd = new Rando..

Java/Reactive 2021.04.02

JUnit Test Code에서 Slf4j logger 이용하기

그 동안 JUnitTest Code에서 @Slf4j 어노테이션을 이용해 로거를 사용하려 하면 다음과 같은 오류가 발생 했었다. 그냥 무슨 이유가 있는가 보다 하고 그냥 System.out.println을 사용 하였는데, 갑자기 궁금함에 검색해 보니 stackoverflow 에 이미 답이 있더라. stackoverflow.com/questions/29076981/how-to-intercept-slf4j-with-logback-logging-via-a-junit-test How to intercept SLF4J (with logback) logging via a JUnit test? Is it possible to somehow intercept the logging (SLF4J + logback) and ..

Java/Spring 2021.04.01

간단한 Flux method 테스트 (Reactive WebFlux)

Reative의 개념은 간단하지만 실제 사용해보지 않으면 익숙해지기 쉽지 않은 것 같다. 우선은 작은 것 부터 사용해 보고, 하나씩 익숙해지는 시간이 필요한 듯 하여 간단하게 어떻게 동작하는지 확인해 본다. 아래 내용은 "실전! 스프링 5를 활용한 리액티브 프로그래밍"을 따라 하면서 작성한 것이다. - www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158391591&orderClick=LET&Kc= 실전! 스프링 5를 활용한 리액티브 프로그래밍 - 교보문고 오늘날 기업은 어떤 상황에도 높은 응답성을 유지할 수 있는 새로운 유형의 시스템이 필요합니다. 리액티브 프로그래밍을 이용하면 이를 달성할 수 있습니다. 이러..

Java/Reactive 2021.03.26

모든 소프트웨어 개발자가 알아야 할 디자인 패턴2

참고용 사이트 jistol.github.io/software%20engineering/2018/04/11/observer-pubsub-pattern/ Observer 패턴과 Publisher/Subscriber(Pub-Sub) 패턴의 차이점 jistol.github.io victorydntmd.tistory.com/292 [디자인패턴] 전략 패턴 ( Strategy Pattern ) 전략 패턴 ( Strategy Pattern ) 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 victorydntmd.tistory.com jusungpark.tistory.com/23 디자인패턴 - 퍼사드 패턴 (..

Java 2021.03.15

모든 소프트웨어 개발자가 알아야 할 디자인 패턴

이 글은 viveknaskar.medium.com/design-patterns-that-every-software-developer-must-know-ac71f575e68 에 나와 있는 내용을 정리한 글입니다. 참고로 번역은 아니며 개발자의 의사소통 수단인 코드만 보고서 제가 임의로 적은 글입니다. Singleton Pattern 싱글톤 패턴은 인스턴스가 1개만 생성되도록 하는 것입니다. Spring 자체가 Bean으로 등록될 시 자체적으로 인스턴스를 1개만 생성 하기 때문에 싱글톤 패턴을 쓰고 있는 것이지만, 코드 상으로는 어떻게 구현 하는 것인지 아래의 예제에서 볼 수 있습니다. /** * Singleton is a design pattern by which you create a singleton ..

Java 2021.03.12

Hash에 Salt 치기

Hash란 무엇인가? 영어 단어를 찾아 보면 "고기와 감자를 잘게 다져 섞어 요리하여 따뜻하게 차려 낸 것" 이라고 나온다. 무엇인가를 잘게 잘라내는 것을 말하는 것으로 보인다. 우리가 프로그램을 개발하면서 이 단어를 볼 수 있는 곳은 HashMap 에서 주로 볼 것이다. 또한 암호화와 관련되어서 Hash를 하는 경우도 있다. 무엇이 되었던 어떠한 값을 잘게 쪼개어 겹치지 않도록 나눈다는 뉘앙스를 준다. 오늘 다루고자 하는 것은 특정한 값을 Hash하여 고유한 값을 가지는 특정 문자열로 바꿔주는 것을 다루고자 한다. 우리가 자주 사용하는 Hash에는 MD5, SHA1, SHA256, 512 등이 있다. MD5를 예를 들어 사용해 보면 아래와 같이 나오게 된다. ( www.baeldung.com/java-..

Java 2021.03.11

Exception을 활용하여 클린코드 작성하기

클린코드 책을 읽다 보면 '오류코드 보다는 예외를 사용하라'라는 말이 나온다. 코드로 분기를 치면서 특정 상황에 특정 처리를 해야 하는 코드보다 예외를 던져서 처리하는 것이 한 눈에 볼 수있도록 코드 가독성을 올려준다는 말이다. 따라서 현재 실무에서 처리하고 있는 코드를 예를 들어 보여 줌으로 어떻게 깔끔한 코드를 사용할 수 있는지 살펴보자. 현재 사용하고 있는 코드에서는 다음과 같은 interface를 우선 선언하였다. package com.kst.macaront.common.lib.exception; import org.springframework.http.HttpStatus; public interface ApiException { HttpStatus getHttpStatus(); String ge..

Java/Spring 2021.03.11

추상클래스와 인터페이스의 차이

추상 클래스와 인터페이스의 차이점에 대해 표로 정리해 본다. 추상클래스 인터페이스 비고 정의 클래스 내 '추상메소드'가 하나 이상 포함되어 있거나 abstract로 정의된 경우 모든 메소드가 추상 메소드인 경우 목적 상속을 받아 기능을 이용하고 확장 하는 것 함수의 구현을 강제하기 위함. 이로 인해 구현 객체의 같은 동작을 보장 함. 상속, 구현 다중 상속 지원하지 않아 1개만 상속 구현이라서 여러개의 인터페이스를 구현할 수 있음 구상 메소드 구상 메소드가 존재할 수 있다. 구상 메소드 자체가 있을 수 없다. 생성자 생성자를 가질 수 있다. 생성자를 가질 수 없다. 변수 일반 변수를 가질 수 있다. 상수만 가질 수 있다. 예제 도형 package com.example.demo.abst; public ab..

Java 2021.02.08
728x90
반응형