profile
예외처리 잘하고 싶어
post-thumbnail

[Apache Kafka] 메세징 시스템과 Kafka의 작동 방식

아파치 카프카는 빠르고 확장 가능한 작업을 위해 데이터 피드의 분산 스트리밍, 파이프 라이닝 및 재생을 위한 실시간 스트리밍 데이터를 처리하기 위한 목적으로 설계된 오픈 소스 분산형 게시-구독 메시징 플랫폼이다.메시징 시스템은 Kafka, RabbitMQ, Active

2일 전
·
0개의 댓글
post-thumbnail

[MSA 개발기] Config Server

 보통 우리가 애플리케이션를 개발 시 코드에 상수나 특정 절대 경로를 하드코딩 하는 일은 거의 없다. 일반적으로 properties같은 환경 변수에 그것들을 관리하는데, 만약 프로퍼티가 변경될 경우에는 애플리케이션을 다시 배포하고는 한다. 특히, 클라우드 환경에서 같이

2022년 6월 12일
·
0개의 댓글

[Algorithm] Greedy(탐욕) 알고리즘

탐욕 알고리즘이란 Greedy(탐욕스러운, 욕심 많은) 이라는 뜻을 가진, 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법을 뜻한다.순간마다 하는 선택은 그 순간에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하

2022년 5월 25일
·
0개의 댓글
post-thumbnail

[MSA] 1. 모놀리틱 아키텍처와 마이크로서비스 아키텍처

만약 개발자들이 만든 웹앱을 각 Local에서 개발 후 서버에 배포한다고 해보자.\-> 최초 상용 배포 시 (Tomcat 1대, DB 1대) \-> SCP를 통해 Clean 배포 (stop -> delivery -> start) \-> DNS(12st.com) -> T

2022년 5월 14일
·
0개의 댓글

[Algorithm] 프로그래머스 - 순위검색 풀이

카카오는 하반기 경력 개발자 공개채용을 진행 중에 있으며 현재 지원서 접수와 코딩테스트가 종료되었습니다. 이번 채용에서 지원자는 지원서 작성 시 아래와 같이 4가지 항목을 반드시 선택하도록 하였습니다.코딩테스트 참여 개발언어 항목에 cpp, java, python 중

2022년 4월 19일
·
0개의 댓글

Effective Java - 모든 객체의 공통 메서드(3) : toString을 항상 재정의히라

Object의 기본 toString 메서드는 잘 알다시피 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 클래스\_이름@16진수로\_표시한\_해시코드로나 반환될 것이다.toString 일반 규약에 따르면 간결하면서 사람이 읽기 쉬운 형태의 유익한 정

2022년 4월 17일
·
0개의 댓글
post-thumbnail

Effective Java - 모든 객체의 공통 메서드(2) : equals를 재정의하려거든 hashCode도 재정의하라

equals를 재정의한 클래스는 모두 hashCode도 재정의해야 한다. 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 HashMap이나 HashSet 같은 컬렉션 원소로 사용할 때 문제가 될 수 있다.equals 비교에서 사용되는 정

2022년 4월 17일
·
0개의 댓글

Effective Java - 모든 객체의 공통 메서드(1) : equals는 일반 규약을 지켜 재정의하라

equals 메서드는 몇 가지 규약을 제대로 지키지 않을 경우 의도와 다르게 동작하여 프로그램에 오류를 발생시킬 수 있다. 재정의하지 않고 그냥 두면 그 클래스의 인스턴스는 오직 자기 자신과만 같게 된다. 각 인스턴스가 본질적으로 고유한 경우예컨대 Thread는 값이

2022년 4월 13일
·
0개의 댓글

Spring Boot + Redis 좋아요 캐시 시스템 만들기

개발환경 Spring Framework 5.3.15 Redis 6.2.6v MariaDB 10.6.5v 개발 소스 dependency 설정 소스 구조 Redis 설정 Lettuce(레터스)는 Java용 Redis Client이다. 레터스는 레디스 서버와 단일 커

2022년 3월 9일
·
0개의 댓글
post-thumbnail

로드밸런싱과 클러스터링의 차이

로드밸런싱이란 처리해야 할 업무 혹은 요청을 나누어 처리하는 것을 말한다. 컴퓨터공학에서는 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.서버 부하 분산은 외부의 사용자로부터 들어오는 다수의 요청(naver 같은)을

2022년 3월 9일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(9) : try-finally 보다는 try-with-resources를 사용하라

자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야하는 자원이 많다. InputStream, OutputStream, java.sql.Connection 등이 그렇다. 상당 수가 finalizaer를 통해 이를 예방하려고 하지만 그리 믿을만하진 못하다. 전통적

2022년 2월 4일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(8) : finalizer와 cleaner 사용을 피하라

 자바에는 두 가지 객체 소멸자인 finalizer, cleaner가 존재한다. finalizer는 나름의 쓰임새가 있긴하지만, 쓰지 않는 것이 좋다. 그래서 자바9에서는 finalizer를 deprecated API로 지정하고 cleaner를 그 대안으로 지정했지만,

2022년 2월 4일
·
0개의 댓글

Effective Java - 클래스와 인터페이스(1) : 클래스와 멤버의 접근 권한을 최소화하라

 잘 구현된 컴포넌트의 조건은 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리하는 것이다. 오직 API로만 통신을 해 내부 동작 방식에는 개의치 않게 하는 것이다. 이것이 바로 캡슐화의 개념이다.캡슐화의 장점은 다음과 같다.여러 컴포넌트를 병렬로 개발해 시

2022년 1월 30일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(7) : 다 쓴 객체 참조를 해제하라

 자바는 C,C++과 달리 가비지 컬렉터가 다 쓴 객체를 알아서 회수해 메모리를 자동으로 관리해준다. 마치 프로그래머는 이를 신경쓸 필요가 없어보이지만 전혀 그렇지 않다.위 코드는 간단한 스택을 구현한 것인데 스택이 커졌다가 줄어들 때 스택에서 꺼낸 객체들을 가비지 컬

2022년 1월 27일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(6) : 불필요한 객체 생성을 피하라

똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다.두 번째 코드는 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용한다. 이 방식을 사용하면 같은 가상 머신 안에서 이와 똑같은 문자열 리터럴을 사용하는 모든 코드

2022년 1월 26일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(5) : 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

 많은 클래스들이 하나 이상의 자원에 의존하곤한다. 가령 맞춤법 검사기는 사전에 의존하는데, 이런 클래스를 정적 유틸리티 클래스로 구현한 모습을 드물지 않게 볼 수 있다.<정적 유틸리티를 잘못 사용한 예><싱글턴을 잘못 사용한 예>두 방식 모두 사전을 단 하

2022년 1월 25일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(4) : 인스턴스화를 막으려거든 private 생성자를 사용하라

정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때 (java.lang.Math or java.util.Arrays or java.util.Collections 같은 기본 타입 값이나 배열 관련 메서들을 모아놓거나 특정 인터페이스를 구현하는 객체를 생성해주는 정

2022년 1월 24일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(3) : private 생성자나 열거 타입으로 싱글턴임을 보장하라

싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 대표적으로 함수와 같은 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 하지만, 클래스를 싱글턴으로 만들 시 이를 사용하는 클라이언트를 테스트하기 어려워질 수 있다. 타입을 인터페이

2022년 1월 24일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(2) : 생성자에 매개변수가 많다면 빌더를 고려해라

 기존의 생성자나 팩토리 메소드는 매개변수의 양이 많아지면 이를 컨트롤하기 어려웠다. 멤버변수의 양이 늘어나면 이를 수습하기가 어려워지기 때문이다. 이런 경우 우리는 빌더 패턴을 사용할 수 있다. 이 클래스는 기본적으로 불변이며, 모든 매개변수의 기본값들을 한곳에 모아

2022년 1월 24일
·
0개의 댓글

Effective Java - 객체 생성과 파괴(1) : 생성자대신 정적 팩토리 메서드를 고려하라

클라이언트가 클래스의 인스턴스를 얻는 수단은 public 생성자다. 하지만, 그 클래스의 인스턴스를 반환하는 단순한 정적 메서드를 통해서 이를 가능하게 할 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 하지만,

2022년 1월 20일
·
0개의 댓글