목록분류 전체보기 (138)
공부하는 스누피
싱글턴이란? 싱글턴(Singleton)은 디자인 패턴 중 생성 패턴으로, 해당 클래스에서 생성되는 인스턴스가 단 하나임을 보장한다. 클래스에서 인스턴스가 하나임이 보장되면 인스턴스를 쉽게 통제할 수 있으며, 재사용이 쉽다. 하지만 mock이 불가능해 클라이언트를 테스트하기 어려워진다는 단점이 있다. mock은 인스턴스를 여러 개 만들 수 있어야 가능하기 때문이다. 예를 들어, 무상태 객체(stateless object)나 시스템 컴포넌트에서 싱글턴 패턴을 사용한다. 싱글턴 만드는 방식 싱글턴 만드는 방식은 크게 두 가지가 있으나 둘 다 생성자를 private으로 숨긴다. private Contructor(){ ... 생성자를 숨긴다 ... } 1) public static final 멤버 변수에 인스턴스..
정적 팩터리 메서드란? 팩터리 메서드는 디자인 패턴 중 생성 패턴의 한 종류로, 생성자로 직접 객체 인스턴스를 생성하는 대신 메서드가 객체를 생성해 반환값으로 넘긴다. 클라이언트는 팩터리가 건네주는 객체가 원하는 클래스의 하위 클래스이기만 한다면 어느 클래스의 인스턴스인지 알 필요가 없게 한다. 장점 1. 생성자보다 더 구체적인 이름을 가질 수 있다. => 메서드 호출 시 직관적으로 기능을 짐작할 수 있다. 2. 메서드가 호출될 때마다 인스턴스를 생성하지 않아도 된다. => 생성자는 호출될 때마다 인스턴스를 생성해서 인스턴스를 재활용하기 어려울 뿐더러 불변 클래스에 적용할 수 없다. => 이 특징은 싱글톤을 구현할 때 적용된다. 한 싱글톤 클래스당 하나의 인스턴스만을 보장하기 때문이다. => 인스턴스를 ..
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141176AIwCFAYD&categoryId=AV141176AIwCFAYD&categoryType=CODE&problemTitle=%EC%82%AC%EC%B9%99%EC%97%B0%EC%82%B0&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 생각과정 - 연산이 가능한 조건 1: 리프 노드는 무조건 숫자여야 한다. - 연산이 가능한 조건 2:..
Encapsulation Class 안에 데이터와 기능을 담아 정의하고, 필요한 기능만 공개한다. 이때 중요한 데이터는 Access Modifier로 숨길 수 있다. public한 데이터를 최소화시키면 캡슐화가 잘 되어 있다고 할 수 있다. Inheritance 기존에 존재하는 객체의 속성과 기능을 상속받아 새로운 객체를 정의하는 것. 이를 통해 클래스를 재사용할 수 있다. Polymorphism 같은 타입 또는 같은 기능을 호출해서 다양한 효과를 가져오는 것을 의미한다. 대표적으로 overriding과 overloading을 예로 들 수 있는데, overriding은 같은 기능을 재정의 해서 클래스에 따라 다양한 효과를 가져올 수 있게 하였고, overloading은 같은 이름의 메서드에 파라미터에 따..
자바에서 문자열은 String 객체를 클래스로 명시해야 한다. 정수나 실수, 그리고 문자(char)도 primitive type에 포함되는데 왜 문자열은 primitive type에 포함되지 않는지부터 알아보자. 자바에서 primitive type은 공간을 효율적으로 쓰게 해 준다. 데이터 타입별로 값의 크기가 일정하기 때문이다. int형은 -2^32 ~ 2^32-1의 범위 안에서만 표현 가능하고, char형은 16비트에서만 표현할 수 있게 정해 둔다. 이렇게 값의 크기에 제한을 두면 메모리 상에 저장할 공간을 지정할 때 훨씬 쉬워진다. 더 이상 값의 크기가 변경되지 않으니 Stack 영역에 벽돌처럼 차곡차곡 쌓을 수 있을 것이다 (데이터를 효율적으로 보관할 수 있다). 하지만 크기가 변화무쌍한 데이터 ..
스프링 스터디에서 스프링 기초에 대해 배우고 난 뒤 든 생각은 '혼자서 스프링으로 웹을 구현할 수 있을까?'였다. 그래서 이론보다는 좀 더 실무에 가까운 책을 선택해 공부하기로 했다. [스프링 부트와 AWS로 혼자 구현하는 웹 서비스]는 책 제목부터 실무 느낌이 강해 스프링 공부를 시작할 때 반려했던 책인데, 스프링 부트를 공부하고 싶기도 했고 이제 구현 단계로 들어가도 될 것 같아서 이 책을 선택했다. 2개월 동안 책을 읽으면서 느낀 장점은 크게 3가지이다. 장점 1: 종이 질이 좋다! 책의 장점을 이야기할 때 종이 질은 참고서 외에는 거의 언급되지 않지만, 종이 질이 매우 좋다고 느꼈다. 전공 책의 미끌미끌?한 종이 질감에 질려서 그런 걸지도 모르겠지만, 책장을 넘길 때마다 사각사각 소리가 나는데 A..
JAVA에는 일반적인 값을 저장하는 primitive data type이 8가지 있는데, 각 type은 고유한 크기를 가지고 있다. bool - 1bit (true, fault만 저장하기 때문) char - 2byte(16bit) -> 문자형 byte - 8bit short - 2byte(16bit) int - 4byte(32bit) long - 8byte(64bit) float - 4byte double - 8byte Implicit type casting 작은 타입은 큰 크기의 자료형으로 자동 형변환된다. 따로 명시하지 않아도 자동으로 수행된다. ex) int는 실수형으로 자동형변환될 수 있다. long var = 100; (4byte -> 8byte) float fvar = var; (8byte -..
스프링 클라우드는 분산 시스템을 자주 쓰이는 패턴으로 빠르게 구축할 수 있게 해준다. 2015년에 1.0 버전으로 출시되었으며, 넷플릭스 OSS 도구를 기반으로 했다. 2019년에는 2.1 버전을 출시하면서 넷플릭스 도구를 대체하는 컴포넌트를 제시했다. Resilience4j, 스프링 클라우드 로드 밸런서 등이 대체 컴포넌트에 해당된다. 또한, Azure, AWS, GCP같은 클라우드 플랫폼 서비스를 지원하는 기능이 추가되었다. 자주 쓰이는 패턴과 컴포넌트 - 서비스 검색 : 스프링 클라우드 로드 밸런서를 사용한다. - 에지 서버 : 스프링 클라우드 Gateway, 스프링 시큐리티 OAuth - 서킷 브레이커 : Resilience4j 컴포넌트를 사용한다. - 구성 중앙화 : 스프링 클라우드 Config..