본문 바로가기

전체 글

(23)
왜 주식인가? - 존 리(John Lee) 요즘 핫한 주식을 공부 해보기 위해서 입문서를 찾아보았다. 검색 결과 여러 입문서가 나왔지만 그 중 가장 맘에 들었던 책인 '왜 주식인가?'를 읽어보았다. 먼저 책의 저자인 존 리라는 사람은 외국인 같지만 한국에서 초등학교 과정 부터 대학 중반까지 교육 과정을 밟던 중 미국으로 가족과 함께 이민을 가게 되었다. 미국 대학 교수님께서 회계사가 되면 앞으로 편하게 살 수 있다는 말씀을 듣고 회계사 자격증을 따게 되었다. 그 뒤 미국에서 손꼽히는 회계 법인에서 일을 하게 되었고 그 뒤로 쭉 금융쪽에서 일을 하고 있다. 존 리의 주요 업적으로는 '코리아 펀드'를 뽑을 수 있는데 미국의 투자 회사인 스커더에서 한국의 저평가된 기업의 주식을 사들이고 장기 투자를 통해서 수익을 올리는 구조이다. 당시 코리아 펀드는 ..
Kafka-개념 알아보기 카프카의 개념을 보기 전에 메시지 큐의 개념을 짚고가야 합니다. Message Queue (MQ) - API간에 데이터 송수신이 필요할 때 사용 - 다양한 어플리케이션에서 비동기 통신 - 이메일 발송 및 문서 업로드 가능 - 많은 양의 프로세스들을 처리 즉, 모듈 간에 데이터 통신을 하기 위해서 사용합니다. A 모듈에서 "car" 라는 데이터를 B 로 전달 할 때, A 모듈은 "car" 라는 데이터를 큐에 넣고 B 모듈은 큐에서 "car" 라는 데이터를 가져간다. 메시지 큐의 장점 비동기(Asynchronous) : Queue에 넣기 때문에 나중에 처리 할 수 있습니다. 비동조(Decoupling) : 애플리케이션과 분리 할 수 있습니다. 탄력성(Resilience) : 일부가 실패 시 전체에 영향을 받..
Toby's Spring - Chap 6 - AOP 6. 트랜잭션 속성 6-1 트랜잭션 정의 트랜잭션이라고 모두 같은 방식으로 동작하지 않습니다. 하지만 트랜잭션의 기본 개념인 더 이상 쪼갤 수 없는 최소 단위의 작업이라는 개념은 유효합니다. DefaultTransactionDefinition이 구현하고 있는 TransactionDefinition 인터페이스는 트랜잭션의 동작방식에 영향을 줄 수 있는 네 가지 속성을 정의하고 있습니다. 트랜잭션 전파 트랜잭션 전파(transaction propagation)란 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식입니다. A 트랜잭션 중에 B 트랜잭션을 진행하다 B 에서 에러가 나면 B 만 롤백 할 것인지 A 를 다 롤백할 것인지, (2) 에서 에러가 나..
Toby's Spring - Chap 4 - Exception 자바에서 예외를 처리할 때 try/catch구문을 사용합니다. 그 후 catch에서 예외를 제대로 처리해야 하는데 대부분의 개발자들은 catch로 잡아 놓기만하고 제대로 처리를 하지 않습니다. 그럼 프로그램내에서 닫히지 않은 리소스, 복구 안된 데이터가 DB로 들어가는 등 심각한 문제를 초래할 수 있습니다. Spring에서는 어떤 예외의 종류가 있고 어떻게 처리하는지에 대해서 알아봅시다. 에러의 종류와 특징 Error 에러는 시스템에서 뭔가 비정상적인 상황이 발생했을 경우에 사용됩니다. 주로 자바 VM에서 발생시키는 것이고 애플리케이션 코드에서 잡으려고 하면 안 됩니다. 예로는 OutOfMemory, ThreadDeath 같은 에러가 있습니다. Exception과 체크 예외 에러와 달리 개발자들이 만든 ..
Spring - Assert 값에 대한 검증을 위해서 스프링에서 Assert라는 추상 클래스를 지원해줍니다. Assert는 단순히 if문을 줄여줄 뿐만 아니라 프로젝트 규칙을 적용하고 공통된 코드를 공유할 수 있는 장점이 있습니다. if(user == null) { throw new IllegalArgumentException(); } 다음과 같이 user가 null값이면 예외를 뱉는 코드가 있습니다. 이때 Assert를 사용하면 다음과 같은 코드로 표현할 수 있습니다. Assert.isNull(user, "user is null"); 코드가 더 간결해지고 읽기도 좋아졌습니다. Assert에는 여러 종류의 메소드가 정의되어 있고 원하는 예외를 뱉을 수 있도록 상속받아 커스텀할 수 도 있으니 클래스를 확인하고 확장해보는 것도 좋은 방..
JPA, Hibernate, Spring Data JPA 차이점 JPA, Hibernate, Spring Data JPA의 차이점에 대해서 알아보겠습니다. 우리가 JPA를 사용한다고 하지만 개발을 하다 보면 Hibernate, Spring Data JPA라는 용어가 등장합니다. 처음엔 JPA가 Hibernate고 그걸 스프링에서 쓰니깐 Spring Data JPA라고 하겠지 하면서 넘어갔습니다. 하지만 이 용어들에는 차이점이 있었고 이러한 차이점을 알고 개발을 하는 것과 모르고 개발하는 것에는 차이가 있을 거라 생각해서 정리해 보았습니다. JPA JPA는 Java Persistence API의 약자입니다. 관계형 DB의 테이블을 자바의 객체의 개념으로 사용하는 기술의 명칭입니다. 우리가 JPA를 사용한다고 하는 것은 'JPA라는 라이브러리를 사용한다'가 아니라 'RD..
Toby's Spring - Chap 3 - Template/Callback practice 템플릿/콜백으로 변환하는 사고 흐름 1. 고정 된 작업 흐름을 갖고 여기저기서 자주 반복되는 코드 발견! 2. 중복되는 코드를 분리할 방법 생각해본다. 3. 그 중 일부 작업을 필요에 따라 바꿔야 한다면 인터페이스를 두고 전략 패턴을 적용한다. 4. 만약 바뀌는 부분이 한 어플리케이션 안에서 동시에 여러 종류가 만들어질 수 있으면 템플릿/콜백 패턴을 적용해본다. 예제 파일의 숫자 합을 계산하는 코드의 테스트가 있습니다. @SpringBootTest public class CalcSumTest { @Test public void sumOfNumbers() throws IOException { Calculator calculator = new Calculator(); int sum = calculator.c..
Toby's Spring - Chap 3 - Template 객체지향 설계의 핵심 원칙인 OCP (개방 폐쇄 원칙)은 코드에서 어떤 부분은 변경을 통해 그 기능이 다양해지고 확장하려는 성질이 있고, 어떤 부분은 고정되어 있고 변하지 않으려는 성질이 있음을 말합니다. 템플릿이란 코드에서 변하는 부분과 변하지 않는 부분을 구분하고 변하지 않는 부분을 독립시키는 방법입니다. 이 템플릿에 변하는 부분만 바꿔 끼우면 여러 곳에서 재사용이 가능하기에 객체지향적 이점을 잘 활용할 수 있습니다. 1. 다시 보는 초난감 DAO UserDao의 deleteAll() 메소드 입니다. public void deleteAll() throws SQLException { Connection c = dataSource.getConnection(); PreparedStatement ps = c..