개요 코틀린을 공부하다 보면 이펙티브 자바라는 책에서 제안했던 베스트 프랙티스 오버랩되어 보이는 경우가 종종 있는데 코틀린이 자바에 불편한 내용을 해결하기 위해 탄생했기 때문인가 싶다. 코틀린과 자바를 비교해서 보다 보면 오히려 자바에 대해 더 잘 알게 되는 게 아닌가 싶은데 서로가 다른 그 지점이 자바에 있었던 문제에 해결책 이여서다. 그래서 이펙티브 자바와 이펙티브 코틀린의 서로 연관된 챕터를 비교 정리해 보면 좋지 않을까 싶어 시리즈로 글을 작성해나갈 예정이다. 생성자 대신 정적 팩토리 메서드(함수)를 고려하라 자바에서는 메서드 코틀린에서는 함수라고 얘기하지만, 매번 소괄호치고 둘 다 쓰기는 난잡해지는 것 같아 정적 팩터리 함수로 통일해 쓸 생각이에요, 이 주네는 이펙티브 자바에서는 Item. 01..
2. 헥사고날(Hexagonal) 아키텍처로 전환하기 어쩌면 작은 스타트업에서는 적합하지 않을 수 있겠지만, 일반적인 계층형 아키텍처를 헥사고날 아키텍처로 전환하는 작업을 하면서 깨지는 테스트를 어떻게 보수하고 헥사고날 아키텍처에 익숙해지는 경험을 하고. 어떤 장점이 있는지 느껴보고자 하였다. 📅 일정 22.11.22 ~ 22.11.25 🎯 목적 미니 커머스를 헥사고날 아키텍처로 전환하여 헥사고날 아키텍처를 경험하는 것을 목적으로 한다.. 📢 요구사항 추가적인 피쳐는 없다. 현재 계층형 아키텍처에서 헥사고날 아키텍처로 전환하는 작업을 진행한다. 헥사고날(Hexagonal) 아키텍처 헥사고날 아키텍처는 포트와 어댑터(ports-and-adapters) 아키텍처로도 알려져 있는데, 데이터베이스나 UI가 없이..
1. ATDD 기반으로 커머스 개발 최근 학습 과정에 성장에 정체가 느껴져 고민을 해 보았는데 요즘 회사를 제외하고는 직접 고민을 통해 문제를 해결하는 것보다는 강의나 책을 보며 따라서 작성하거나 책을 읽으며 개념적인 부분을 채우기만 했다는 생각이 들었다. 개인 적으로는 어느 한 쪽이 중요하다기보다는 간접 경험과 직접 경험의 적절한 밸런스를 통해 간접적인 내용을 체화시키는 과정이 필요하다고 생각하는데 계속해서 머릿속에 쑤셔 넣기만 하고 그것을 채화하는 것이 부족했다는 생각이 들었다. 때문에 학습 방법을 조금 바꾸어 책이나 다른 매체를 통해 학습한 내용을 사이드 프로젝트에 직접 적용해보는 과정을 가지기로했다. 사이드 프로젝트는 가상의 회사의 제품을 만든다는 생각을 가지고 진행하기로 했다. 경험할 수 있는 ..
자바 NIO 등장이유 자바가 느리다는 얘기를 듣던 이유는 IO 때문이다. 이러한 문제사항을 해결하기 위해 NIO(New Input Output) 이 등장하였다. 자바 IO가 느린 이유 애플리케이션의 IO 과정에는 유저 영역과 커널 영역이 있다. 유저 영역은 H/W 에 직접 접근하는 것이 불가는 하고 커널 영역에 시스템 콜을 보내 드라이버 등을 통해 접근 가능하다. 커널 영역을 거치게 되면서 불필요한 버퍼와 복사 과정이 추가된다. 자바 I/O의 비효율 커널 영역을 거쳐 I/O를 진행하기 때문에 쓸 때없는 과정(버퍼 복사)이 추가된다. 예시로 비디오 카드(모니터) -> 커널 영역의 버퍼 로 데이터를 이동하는 것은 DMA(Direct Memory Access) 기술을 통해 CPU 자원이 필요없다. 하지만 커..
- Total
- Today
- Yesterday
- SpringBoot 2.2
- 세션 불일치
- 동적 디스패치
- RestAssured
- 수직 분할
- multimap
- 뾰족함
- ATDD
- 클린 아키텍처
- pass by reference
- 정적 타입 언어
- pool
- 컴포짓 패턴
- 장애 해결기
- java
- 외부 단편화
- 육각형 아키텍처
- pass by value
- Clean Architecture
- Sticky Session
- 메모리 파편화
- 메모리 단편화
- 수평 분할
- Object Pool
- 객체 풀
- Session
- 동적 타입 언어
- OOP
- 내부 단편화
- Memory Fragmentation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |